diff --git a/.agents/skills/doc-pr-reviewer/SKILL.md b/.agents/skills/doc-pr-reviewer/SKILL.md index 4e2d38763..ea66befaa 100644 --- a/.agents/skills/doc-pr-reviewer/SKILL.md +++ b/.agents/skills/doc-pr-reviewer/SKILL.md @@ -80,6 +80,40 @@ For each non-`narrative` claim: - `contradicted` — the source code says something different than the PR claims; include both texts 4. Do not infer from documentation, blog posts, or other branches. The branch you actually checked out and recorded for that repo (per the **Source of truth** section — the PR's matching branch, or the documented fallback when none matches) is the only source of truth. +## Current-version placeholder review + +When a docs PR adds or edits Aspire version strings, check whether the version +is intended to represent the current release or an intentionally fixed version. +The docs site provides placeholders for current-version values: + +| Placeholder | Use for | +|-------------|---------| +| `%ASPIRE_VERSION%` | Full current Aspire version, including patch (for example, `13.5.0`) | +| `%ASPIRE_VERSION_MAJOR_MINOR%` | Current Aspire major/minor display version (for example, `13.5`) | + +Flag hard-coded Aspire versions as a review finding when they appear in current +copy/paste guidance that should track the active release, including: + +- `Aspire.AppHost.Sdk` declarations in project files or file-based apps. +- `#:package Aspire.*@...` file-based app package directives. +- Aspire CLI or AppHost sample output that reports the current CLI/AppHost + version. +- Getting started, installation, or "use this today" examples that should move + with the release branch. + +Do **not** require placeholders for intentionally fixed versions, including: + +- What's-new or release-note pages that describe a specific historical release. +- Upgrade examples that deliberately compare old and new versions. +- CLI examples where the point is pinning a specific version with `--version`, + `-Version`, or `Aspire.ProjectTemplates::...`. +- Versioned schema URLs, package compatibility notes, minimum-version + requirements, third-party dependency versions, container image tags, or issue + reproduction snippets. + +If the intent is ambiguous, leave a `COMMENT` asking whether the version should +track the current release instead of requesting changes outright. + ## Phase A artifact When Phase A finishes, write down (in memory) a frozen Phase A result containing: diff --git a/.github/agents/release-verifier.agent.md b/.github/agents/release-verifier.agent.md index 6fbab2d2b..8efc9bc63 100644 --- a/.github/agents/release-verifier.agent.md +++ b/.github/agents/release-verifier.agent.md @@ -121,7 +121,22 @@ Scan the documentation for version strings that should have been updated for thi Determine the immediately prior version. For `13.2` the prior is `13.1`; for `13.0` the prior is `9.5` (or whatever the last release of the previous major is). Use the existing what's-new files to determine this. -#### 4b. Scan for stale version references +#### 4b. Verify shared version placeholders + +Read `src/frontend/config/aspire-versions.mjs` and verify the exported current +version constants match the release being verified: + +| Export | Expected value | +|--------|----------------| +| `currentAspireMajorMinorVersion` | `{VERSION}` (for example, `13.2`) | +| `currentAspireVersion` | `{NUGET_VERSION}` (for example, `13.2.0`) | + +These constants drive the `%ASPIRE_VERSION_MAJOR_MINOR%` and +`%ASPIRE_VERSION%` documentation placeholders. If either value is stale, flag it +as a **critical** failure because generated docs can show the wrong current +release version. + +#### 4c. Scan for stale version references Search the docs content tree for references to the prior NuGet version that appear **outside** of intentional historical context (e.g., upgrade-from examples that deliberately show the old version). @@ -139,7 +154,7 @@ grep -rn 'Aspire.AppHost.Sdk.*Version="{PRIOR_NUGET_VERSION}"' src/frontend/src/ --include="*.mdx" ``` -#### 4c. Evaluate each match +#### 4d. Evaluate each match For every match found: @@ -149,7 +164,7 @@ For every match found: - **Stale (should be updated)**: The reference is in current guidance, installation instructions, or sample code that a user would copy today. Flag these for update. 3. Log each stale reference with file path, line number, and surrounding context. -#### 4d. Verify new version references +#### 4e. Verify new version references Spot-check that key documentation pages reference the release version: diff --git a/src/frontend/astro.config.mjs b/src/frontend/astro.config.mjs index 2921efad6..9b366a4c4 100644 --- a/src/frontend/astro.config.mjs +++ b/src/frontend/astro.config.mjs @@ -7,6 +7,8 @@ import { iconPacks } from './config/icon-packs.mjs'; import { locales } from './config/locales.ts'; import { headAttrs } from './config/head.attrs.ts'; import { socialConfig } from './config/socials.config.ts'; +import { aspireVersionPlaceholdersIntegration } from './config/aspire-version-placeholders-integration.mjs'; +import { remarkAspireVersionPlaceholders } from './config/remark-aspire-version-placeholders.mjs'; import catppuccin from '@catppuccin/starlight'; import lunaria from './config/lunaria-starlight.mjs'; import mermaid from 'astro-mermaid'; @@ -46,7 +48,9 @@ export default defineConfig({ site: 'https://aspire.dev', trailingSlash: 'always', markdown: { - processor: unified(), + processor: unified({ + remarkPlugins: [remarkAspireVersionPlaceholders], + }), }, redirects: redirects, integrations: [ @@ -223,6 +227,7 @@ export default defineConfig({ gfm: true, }), ...(isBuildTimingEnabled ? [buildTiming()] : []), + aspireVersionPlaceholdersIntegration(), ], build: { concurrency: buildConcurrency, diff --git a/src/frontend/config/aspire-version-placeholders-integration.mjs b/src/frontend/config/aspire-version-placeholders-integration.mjs new file mode 100644 index 000000000..ae1a1dc38 --- /dev/null +++ b/src/frontend/config/aspire-version-placeholders-integration.mjs @@ -0,0 +1,91 @@ +import { readdir, readFile, writeFile } from 'node:fs/promises'; +import path from 'node:path'; +import { fileURLToPath } from 'node:url'; +import { replaceAspireVersionPlaceholders } from './remark-aspire-version-placeholders.mjs'; + +// Per-page Markdown copies emitted by `starlight-page-actions` are the only +// generated artifacts that still contain raw `%ASPIRE_VERSION%` placeholders: +// that plugin `viteStaticCopy`s `src/content/docs/**/*.{md,mdx}` straight to +// `dist/**/*.md` through a regex-only transform, so it never runs through the +// `remarkAspireVersionPlaceholders` remark plugin. +// +// Everything else is already handled before it reaches `dist`: +// - `.html` pages -> rendered via the remark pipeline (placeholders replaced +// in the mdast before expressive-code renders code blocks) +// - `llms*.txt` -> `starlight-llms-txt` sources rendered HTML (`render(entry)`) +// - `reference/**.md` -> generated from API/sample data, not docs content +// +// So this post-build pass only needs to touch `.md` files. Scoping it this way +// (instead of walking every `.html`/`.txt` in `dist`) avoids re-reading the bulk +// of the output — including the large `llms-full.txt` assets — which is what +// previously exhausted the Node heap. +const placeholderCopyExtensions = new Set(['.md']); + +// Process the Markdown copies through a small worker pool rather than a single +// recursive `Promise.all` over the whole tree, so peak memory stays proportional +// to the concurrency limit instead of the number of files held open at once. +const DEFAULT_CONCURRENCY = 16; + +export function aspireVersionPlaceholdersIntegration() { + return { + name: 'aspire-version-placeholders', + hooks: { + 'astro:build:done': async ({ dir }) => { + await replaceAspireVersionPlaceholdersInDirectory(fileURLToPath(dir)); + }, + }, + }; +} + +export async function replaceAspireVersionPlaceholdersInDirectory( + directory, + concurrency = DEFAULT_CONCURRENCY +) { + const files = []; + await collectMarkdownCopies(directory, files); + + if (files.length === 0) { + return; + } + + // Normalize to a finite positive integer so a stray NaN/0/negative value can't + // collapse the worker pool to an empty array and silently skip every file. + const limit = Number.isFinite(concurrency) ? Math.floor(concurrency) : DEFAULT_CONCURRENCY; + const workerCount = Math.min(Math.max(1, limit), files.length); + let cursor = 0; + + const runWorker = async () => { + while (cursor < files.length) { + const filePath = files[cursor++]; + await replaceAspireVersionPlaceholdersInFile(filePath); + } + }; + + await Promise.all(Array.from({ length: workerCount }, runWorker)); +} + +async function collectMarkdownCopies(directory, files) { + const entries = await readdir(directory, { withFileTypes: true }); + + for (const entry of entries) { + const resolvedPath = path.join(directory, entry.name); + + if (entry.isDirectory()) { + await collectMarkdownCopies(resolvedPath, files); + continue; + } + + if (entry.isFile() && placeholderCopyExtensions.has(path.extname(entry.name))) { + files.push(resolvedPath); + } + } +} + +async function replaceAspireVersionPlaceholdersInFile(filePath) { + const content = await readFile(filePath, 'utf8'); + const updated = replaceAspireVersionPlaceholders(content); + + if (updated !== content) { + await writeFile(filePath, updated); + } +} diff --git a/src/frontend/config/aspire-versions.mjs b/src/frontend/config/aspire-versions.mjs new file mode 100644 index 000000000..8c27e3ae9 --- /dev/null +++ b/src/frontend/config/aspire-versions.mjs @@ -0,0 +1,7 @@ +export const currentAspireMajorMinorVersion = '13.5'; +export const currentAspireVersion = '13.5.0'; + +export const aspireVersionPlaceholders = Object.freeze({ + '%ASPIRE_VERSION_MAJOR_MINOR%': currentAspireMajorMinorVersion, + '%ASPIRE_VERSION%': currentAspireVersion, +}); diff --git a/src/frontend/config/remark-aspire-version-placeholders.mjs b/src/frontend/config/remark-aspire-version-placeholders.mjs new file mode 100644 index 000000000..0be1f1bd6 --- /dev/null +++ b/src/frontend/config/remark-aspire-version-placeholders.mjs @@ -0,0 +1,40 @@ +import { aspireVersionPlaceholders } from './aspire-versions.mjs'; + +const placeholderEntries = Object.entries(aspireVersionPlaceholders); + +export function replaceAspireVersionPlaceholders(value) { + return placeholderEntries.reduce( + (current, [placeholder, version]) => current.replaceAll(placeholder, version), + value + ); +} + +export function remarkAspireVersionPlaceholders() { + return (tree) => { + replaceNodeValues(tree); + }; +} + +function replaceNodeValues(node) { + if (!node || typeof node !== 'object') { + return; + } + + if (typeof node.value === 'string') { + node.value = replaceAspireVersionPlaceholders(node.value); + } + + if (Array.isArray(node.attributes)) { + for (const attribute of node.attributes) { + if (attribute && typeof attribute.value === 'string') { + attribute.value = replaceAspireVersionPlaceholders(attribute.value); + } + } + } + + if (Array.isArray(node.children)) { + for (const child of node.children) { + replaceNodeValues(child); + } + } +} diff --git a/src/frontend/config/sidebar/dashboard.topics.ts b/src/frontend/config/sidebar/dashboard.topics.ts index cbfe54379..157791190 100644 --- a/src/frontend/config/sidebar/dashboard.topics.ts +++ b/src/frontend/config/sidebar/dashboard.topics.ts @@ -243,6 +243,27 @@ export const dashboardTopics: StarlightSidebarTopicsUserConfig = { }, slug: 'dashboard/security-considerations', }, + { + label: 'Troubleshooting', + translations: { + da: 'Fejlfinding', + de: 'Fehlerbehebung', + en: 'Troubleshooting', + es: 'Solución de problemas', + fr: 'Dépannage', + hi: 'समस्या निवारण', + id: 'Pemecahan masalah', + it: 'Risoluzione dei problemi', + ja: 'トラブルシューティング', + ko: '문제 해결', + 'pt-BR': 'Solução de problemas', + ru: 'Устранение неполадок', + tr: 'Sorun giderme', + uk: 'Усунення неполадок', + 'zh-CN': '故障排除', + }, + slug: 'dashboard/troubleshooting', + }, { label: 'Telemetry', translations: { diff --git a/src/frontend/config/sidebar/deployment.topics.ts b/src/frontend/config/sidebar/deployment.topics.ts index c682e7cab..4b2fdef53 100644 --- a/src/frontend/config/sidebar/deployment.topics.ts +++ b/src/frontend/config/sidebar/deployment.topics.ts @@ -150,6 +150,10 @@ export const deploymentTopics: StarlightSidebarTopicsUserConfig = { label: 'External Helm charts', slug: 'deployment/kubernetes/helm-charts', }, + { + label: 'Persistent volumes', + slug: 'deployment/kubernetes/persistent-volumes', + }, { label: 'Ingress & Gateway API', slug: 'deployment/kubernetes-ingress', diff --git a/src/frontend/config/sidebar/docs.topics.ts b/src/frontend/config/sidebar/docs.topics.ts index 048fc3dde..be4f35931 100644 --- a/src/frontend/config/sidebar/docs.topics.ts +++ b/src/frontend/config/sidebar/docs.topics.ts @@ -90,6 +90,10 @@ export const docsTopics: StarlightSidebarTopicsUserConfig = { label: "What's new", collapsed: true, items: [ + { + label: 'Aspire 13.5', + slug: 'whats-new/aspire-13-5', + }, { label: 'Aspire 13.4', slug: 'whats-new/aspire-13-4', @@ -957,6 +961,10 @@ export const docsTopics: StarlightSidebarTopicsUserConfig = { ja: '実行可能リソース', }, }, + { + label: 'Interactive terminals', + slug: 'app-host/with-terminal', + }, ], }, { diff --git a/src/frontend/config/sidebar/integrations.topics.ts b/src/frontend/config/sidebar/integrations.topics.ts index 73b3ae413..8d7edeba0 100644 --- a/src/frontend/config/sidebar/integrations.topics.ts +++ b/src/frontend/config/sidebar/integrations.topics.ts @@ -1365,6 +1365,20 @@ export const integrationTopics: StarlightSidebarTopicsUserConfig = { }, ], }, + { + label: '.NET / C#', + collapsed: true, + items: [ + { + label: 'Get started', + slug: 'integrations/frameworks/dotnet/dotnet-get-started', + }, + { + label: 'Set up .NET / C# apps in the AppHost', + slug: 'integrations/frameworks/dotnet/dotnet-host', + }, + ], + }, { label: 'Go', collapsed: true, diff --git a/src/frontend/config/sidebar/reference.topics.ts b/src/frontend/config/sidebar/reference.topics.ts index 501411893..393dabc91 100644 --- a/src/frontend/config/sidebar/reference.topics.ts +++ b/src/frontend/config/sidebar/reference.topics.ts @@ -538,6 +538,24 @@ export const referenceTopics: StarlightSidebarTopicsUserConfig[number] = { slug: 'reference/cli/commands/aspire-start', }, { label: 'aspire stop', slug: 'reference/cli/commands/aspire-stop' }, + { + label: 'aspire terminal', + collapsed: true, + items: [ + { + label: 'aspire terminal', + slug: 'reference/cli/commands/aspire-terminal', + }, + { + label: 'aspire terminal attach', + slug: 'reference/cli/commands/aspire-terminal-attach', + }, + { + label: 'aspire terminal ps', + slug: 'reference/cli/commands/aspire-terminal-ps', + }, + ], + }, { label: 'aspire update', slug: 'reference/cli/commands/aspire-update', @@ -580,6 +598,7 @@ export const referenceTopics: StarlightSidebarTopicsUserConfig[number] = { { label: 'ASPIRE002', link: '/diagnostics/aspire002' }, { label: 'ASPIRE003', link: '/diagnostics/aspire003' }, { label: 'ASPIRE004', link: '/diagnostics/aspire004' }, + { label: 'ASPIRE010', link: '/diagnostics/aspire010' }, { label: 'ASPIREEXPORT005', link: '/diagnostics/aspireexport005', @@ -680,10 +699,18 @@ export const referenceTopics: StarlightSidebarTopicsUserConfig[number] = { label: 'ASPIREPROCESSCOMMAND001', link: '/diagnostics/aspireprocesscommand001', }, + { + label: 'ASPIREPROJECTS001', + link: '/diagnostics/aspireprojects001', + }, { label: 'ASPIREUSERSECRETS001', link: '/diagnostics/aspireusersecrets001', }, + { + label: 'ASPIREWATCH001', + link: '/diagnostics/aspirewatch001', + }, ], }, { @@ -693,11 +720,17 @@ export const referenceTopics: StarlightSidebarTopicsUserConfig[number] = { { label: 'ASPIRE006', link: '/diagnostics/aspire006' }, { label: 'ASPIRE007', link: '/diagnostics/aspire007' }, { label: 'ASPIRE008', link: '/diagnostics/aspire008' }, + { label: 'ASPIRE009', link: '/diagnostics/aspire009' }, + { label: 'ASPIRE011', link: '/diagnostics/aspire011' }, { label: 'ASPIREACADOMAIN001', link: '/diagnostics/aspireacadomains001', }, { label: 'ASPIRECOMPUTE001', link: '/diagnostics/aspirecompute001' }, + { + label: 'ASPIREACANAMING002', + link: '/diagnostics/aspireacanaming002', + }, { label: 'ASPIRECSHARPAPPS001', link: '/diagnostics/aspirecsharpapps001', @@ -730,6 +763,10 @@ export const referenceTopics: StarlightSidebarTopicsUserConfig[number] = { label: 'ASPIREHOSTINGPYTHON001', link: '/diagnostics/aspirehostingpython001', }, + { + label: 'ASPIREPERSISTENCE001', + link: '/diagnostics/aspirepersistence001', + }, { label: 'ASPIREPIPELINES001', link: '/diagnostics/aspirepipelines001', diff --git a/src/frontend/scripts/update-integrations.ts b/src/frontend/scripts/update-integrations.ts index 56fc3b533..056e1b1a0 100644 --- a/src/frontend/scripts/update-integrations.ts +++ b/src/frontend/scripts/update-integrations.ts @@ -99,6 +99,7 @@ interface PackageSource { trusted: boolean; serviceIndex: string; queries: string[]; + optional?: boolean; } export interface IntegrationOutput { @@ -503,7 +504,15 @@ async function fetchNuGetOrgMetadata(packageIds: string[]): Promise +): IntegrationOutput[] { + const previous = readPreviousCatalog(); + if (previous.length === 0) { + return fresh; + } + + const previousByTitle = new Map( + previous.map((entry) => [entry.title.toLowerCase(), entry] as const) + ); + const freshTitles = new Set(fresh.map((entry) => entry.title.toLowerCase())); + + const reconciled = fresh.map((entry) => { + const prior = previousByTitle.get(entry.title.toLowerCase()); + if (!prior) { + return entry; + } + const icon = + prior.icon && prior.icon !== DEFAULT_NUGET_ICON_URL ? prior.icon : entry.icon; + const downloads = entry.downloads && entry.downloads > 0 ? entry.downloads : prior.downloads; + return { ...entry, icon, downloads }; + }); + + // Only carry forward integrations that never appeared in any fetched source. + // A package that was fetched but intentionally dropped by a later filter (e.g. + // deprecated or unverified) is absent from `fresh` yet present in `fetchedIds`; + // carrying it forward would silently reintroduce a package we chose to exclude. + const carriedForward = previous.filter( + (entry) => + !freshTitles.has(entry.title.toLowerCase()) && + !fetchedIds.has(entry.title.toLowerCase()) + ); + if (carriedForward.length > 0) { + console.log( + `ℹ️ Release-branch reconciliation carried forward ${carriedForward.length} integration(s) absent from the release feed.` + ); + } + + return [...reconciled, ...carriedForward].sort((a, b) => a.title.localeCompare(b.title)); +} + export async function updateIntegrations(): Promise { const officialSource = resolveOfficialAspirePackageSource(); if (officialSource.isReleaseBranch) { @@ -604,10 +679,25 @@ export async function updateIntegrations(): Promise { trusted: false, serviceIndex: NUGET_ORG_SERVICE_INDEX, queries: COMMUNITY_TOOLKIT_QUERIES, + optional: true, }, ]; - const results = await Promise.all(sources.map((source) => fetchPackagesFromSource(source))); + const results = await Promise.all( + sources.map(async (source) => { + try { + return await fetchPackagesFromSource(source); + } catch (error: unknown) { + if (source.optional) { + console.warn( + `⚠️ Skipping optional package source "${source.label}" (unavailable): ${getErrorMessage(error)}` + ); + return [] as PackageRecord[]; + } + throw error; + } + }) + ); const merged = results.flat(); const uniqueById = merged.reduce>((acc, pkg) => { const existing = acc[pkg.id]; @@ -626,8 +716,16 @@ export async function updateIntegrations(): Promise { unique = mergeFallbackPackageMetadata(unique, nugetOrgMetadata); } + // Capture every package id seen across sources before deprecation filtering and + // transformation, so release-branch reconciliation can tell "shipped on another + // cadence / never fetched" (carry forward) apart from "fetched then filtered out" + // (drop, do not reintroduce). + const fetchedPackageIds = new Set(unique.map((pkg) => pkg.id.toLowerCase())); const nonDeprecated = await filterOutDeprecatedWithRegistration(unique); - const output = filterAndTransform(nonDeprecated); + let output = filterAndTransform(nonDeprecated); + if (officialSource.isReleaseBranch) { + output = reconcileReleaseBranchCatalog(output, fetchedPackageIds); + } const defaultIconPackages = getOfficialAspireDefaultIconPackages(output); if (defaultIconPackages.length > 0) { console.warn( diff --git a/src/frontend/src/assets/dashboard/ai-coding-agents/ai-agents-dialog-dark.png b/src/frontend/src/assets/dashboard/ai-coding-agents/ai-agents-dialog-dark.png index f6ab03d15..42aa9e192 100644 Binary files a/src/frontend/src/assets/dashboard/ai-coding-agents/ai-agents-dialog-dark.png and b/src/frontend/src/assets/dashboard/ai-coding-agents/ai-agents-dialog-dark.png differ diff --git a/src/frontend/src/assets/dashboard/ai-coding-agents/ai-agents-dialog-light.png b/src/frontend/src/assets/dashboard/ai-coding-agents/ai-agents-dialog-light.png index c8da28dd8..7325bf1bb 100644 Binary files a/src/frontend/src/assets/dashboard/ai-coding-agents/ai-agents-dialog-light.png and b/src/frontend/src/assets/dashboard/ai-coding-agents/ai-agents-dialog-light.png differ diff --git a/src/frontend/src/assets/dashboard/explore/aspire-login-filled.png b/src/frontend/src/assets/dashboard/explore/aspire-login-filled.png index b13804359..2009a495d 100644 Binary files a/src/frontend/src/assets/dashboard/explore/aspire-login-filled.png and b/src/frontend/src/assets/dashboard/explore/aspire-login-filled.png differ diff --git a/src/frontend/src/assets/dashboard/explore/aspire-login-help.png b/src/frontend/src/assets/dashboard/explore/aspire-login-help.png index f99b48cf1..98d23d99f 100644 Binary files a/src/frontend/src/assets/dashboard/explore/aspire-login-help.png and b/src/frontend/src/assets/dashboard/explore/aspire-login-help.png differ diff --git a/src/frontend/src/assets/dashboard/explore/aspire-login.png b/src/frontend/src/assets/dashboard/explore/aspire-login.png index 1755d33f6..6dfd16bf5 100644 Binary files a/src/frontend/src/assets/dashboard/explore/aspire-login.png and b/src/frontend/src/assets/dashboard/explore/aspire-login.png differ diff --git a/src/frontend/src/assets/dashboard/explore/container-logs.png b/src/frontend/src/assets/dashboard/explore/container-logs.png index 0de51e4b9..428930aee 100644 Binary files a/src/frontend/src/assets/dashboard/explore/container-logs.png and b/src/frontend/src/assets/dashboard/explore/container-logs.png differ diff --git a/src/frontend/src/assets/dashboard/explore/dashboard-help.png b/src/frontend/src/assets/dashboard/explore/dashboard-help.png index 729d6a4e6..4e209fd45 100644 Binary files a/src/frontend/src/assets/dashboard/explore/dashboard-help.png and b/src/frontend/src/assets/dashboard/explore/dashboard-help.png differ diff --git a/src/frontend/src/assets/dashboard/explore/download-console-logs.png b/src/frontend/src/assets/dashboard/explore/download-console-logs.png index 309b337f7..1a0aeef9b 100644 Binary files a/src/frontend/src/assets/dashboard/explore/download-console-logs.png and b/src/frontend/src/assets/dashboard/explore/download-console-logs.png differ diff --git a/src/frontend/src/assets/dashboard/explore/filter-spans-trace-details.png b/src/frontend/src/assets/dashboard/explore/filter-spans-trace-details.png index 6600b869e..e075a1228 100644 Binary files a/src/frontend/src/assets/dashboard/explore/filter-spans-trace-details.png and b/src/frontend/src/assets/dashboard/explore/filter-spans-trace-details.png differ diff --git a/src/frontend/src/assets/dashboard/explore/manage-data-dialog.png b/src/frontend/src/assets/dashboard/explore/manage-data-dialog.png index 97018a76c..d7c4a4d82 100644 Binary files a/src/frontend/src/assets/dashboard/explore/manage-data-dialog.png and b/src/frontend/src/assets/dashboard/explore/manage-data-dialog.png differ diff --git a/src/frontend/src/assets/dashboard/explore/manage-data-expanded.png b/src/frontend/src/assets/dashboard/explore/manage-data-expanded.png index 5a560d688..f73e71c12 100644 Binary files a/src/frontend/src/assets/dashboard/explore/manage-data-expanded.png and b/src/frontend/src/assets/dashboard/explore/manage-data-expanded.png differ diff --git a/src/frontend/src/assets/dashboard/explore/metrics-page-exemplars.png b/src/frontend/src/assets/dashboard/explore/metrics-page-exemplars.png index 864c36b95..a5ae5a342 100644 Binary files a/src/frontend/src/assets/dashboard/explore/metrics-page-exemplars.png and b/src/frontend/src/assets/dashboard/explore/metrics-page-exemplars.png differ diff --git a/src/frontend/src/assets/dashboard/explore/metrics-table-view.png b/src/frontend/src/assets/dashboard/explore/metrics-table-view.png index 99df8f69c..626eeb072 100644 Binary files a/src/frontend/src/assets/dashboard/explore/metrics-table-view.png and b/src/frontend/src/assets/dashboard/explore/metrics-table-view.png differ diff --git a/src/frontend/src/assets/dashboard/explore/metrics-view-count.png b/src/frontend/src/assets/dashboard/explore/metrics-view-count.png index dee269907..92b9d311b 100644 Binary files a/src/frontend/src/assets/dashboard/explore/metrics-view-count.png and b/src/frontend/src/assets/dashboard/explore/metrics-view-count.png differ diff --git a/src/frontend/src/assets/dashboard/explore/metrics-view-filtered.png b/src/frontend/src/assets/dashboard/explore/metrics-view-filtered.png index 9a4d0861d..1c3760497 100644 Binary files a/src/frontend/src/assets/dashboard/explore/metrics-view-filtered.png and b/src/frontend/src/assets/dashboard/explore/metrics-view-filtered.png differ diff --git a/src/frontend/src/assets/dashboard/explore/metrics-view.png b/src/frontend/src/assets/dashboard/explore/metrics-view.png index eae0cdd2f..dda83aadd 100644 Binary files a/src/frontend/src/assets/dashboard/explore/metrics-view.png and b/src/frontend/src/assets/dashboard/explore/metrics-view.png differ diff --git a/src/frontend/src/assets/dashboard/explore/notification-center-bell.png b/src/frontend/src/assets/dashboard/explore/notification-center-bell.png index 589fb6d19..b418f1381 100644 Binary files a/src/frontend/src/assets/dashboard/explore/notification-center-bell.png and b/src/frontend/src/assets/dashboard/explore/notification-center-bell.png differ diff --git a/src/frontend/src/assets/dashboard/explore/notification-center-open.png b/src/frontend/src/assets/dashboard/explore/notification-center-open.png index d1e384e29..3f36a7628 100644 Binary files a/src/frontend/src/assets/dashboard/explore/notification-center-open.png and b/src/frontend/src/assets/dashboard/explore/notification-center-open.png differ diff --git a/src/frontend/src/assets/dashboard/explore/notification-center-response.png b/src/frontend/src/assets/dashboard/explore/notification-center-response.png index 5c90eea97..8f5a9a332 100644 Binary files a/src/frontend/src/assets/dashboard/explore/notification-center-response.png and b/src/frontend/src/assets/dashboard/explore/notification-center-response.png differ diff --git a/src/frontend/src/assets/dashboard/explore/pause-telemetry.png b/src/frontend/src/assets/dashboard/explore/pause-telemetry.png index d9669998e..8a4ea3e14 100644 Binary files a/src/frontend/src/assets/dashboard/explore/pause-telemetry.png and b/src/frontend/src/assets/dashboard/explore/pause-telemetry.png differ diff --git a/src/frontend/src/assets/dashboard/explore/project-graphs.png b/src/frontend/src/assets/dashboard/explore/project-graphs.png index 72a2503de..657c6ea79 100644 Binary files a/src/frontend/src/assets/dashboard/explore/project-graphs.png and b/src/frontend/src/assets/dashboard/explore/project-graphs.png differ diff --git a/src/frontend/src/assets/dashboard/explore/project-logs-error.png b/src/frontend/src/assets/dashboard/explore/project-logs-error.png index e9c1b4e5b..f279f4537 100644 Binary files a/src/frontend/src/assets/dashboard/explore/project-logs-error.png and b/src/frontend/src/assets/dashboard/explore/project-logs-error.png differ diff --git a/src/frontend/src/assets/dashboard/explore/project-logs.png b/src/frontend/src/assets/dashboard/explore/project-logs.png index ed5d14132..19f3a0804 100644 Binary files a/src/frontend/src/assets/dashboard/explore/project-logs.png and b/src/frontend/src/assets/dashboard/explore/project-logs.png differ diff --git a/src/frontend/src/assets/dashboard/explore/projects-errors.png b/src/frontend/src/assets/dashboard/explore/projects-errors.png index 50ba43e3a..f9981003a 100644 Binary files a/src/frontend/src/assets/dashboard/explore/projects-errors.png and b/src/frontend/src/assets/dashboard/explore/projects-errors.png differ diff --git a/src/frontend/src/assets/dashboard/explore/projects.png b/src/frontend/src/assets/dashboard/explore/projects.png index 7aa024765..65fc0ef92 100644 Binary files a/src/frontend/src/assets/dashboard/explore/projects.png and b/src/frontend/src/assets/dashboard/explore/projects.png differ diff --git a/src/frontend/src/assets/dashboard/explore/remove-telemetry-data.png b/src/frontend/src/assets/dashboard/explore/remove-telemetry-data.png index 4b35a3fe7..4caaf70c5 100644 Binary files a/src/frontend/src/assets/dashboard/explore/remove-telemetry-data.png and b/src/frontend/src/assets/dashboard/explore/remove-telemetry-data.png differ diff --git a/src/frontend/src/assets/dashboard/explore/resource-actions.png b/src/frontend/src/assets/dashboard/explore/resource-actions.png index b6f8b65c0..53545eb05 100644 Binary files a/src/frontend/src/assets/dashboard/explore/resource-actions.png and b/src/frontend/src/assets/dashboard/explore/resource-actions.png differ diff --git a/src/frontend/src/assets/dashboard/explore/resource-details.png b/src/frontend/src/assets/dashboard/explore/resource-details.png index b5ecfb7b2..8a5acd6e7 100644 Binary files a/src/frontend/src/assets/dashboard/explore/resource-details.png and b/src/frontend/src/assets/dashboard/explore/resource-details.png differ diff --git a/src/frontend/src/assets/dashboard/explore/resource-started-action.png b/src/frontend/src/assets/dashboard/explore/resource-started-action.png index b547b3e6c..bc0cc4626 100644 Binary files a/src/frontend/src/assets/dashboard/explore/resource-started-action.png and b/src/frontend/src/assets/dashboard/explore/resource-started-action.png differ diff --git a/src/frontend/src/assets/dashboard/explore/resource-stop-action.png b/src/frontend/src/assets/dashboard/explore/resource-stop-action.png index 5e3e90c40..119301649 100644 Binary files a/src/frontend/src/assets/dashboard/explore/resource-stop-action.png and b/src/frontend/src/assets/dashboard/explore/resource-stop-action.png differ diff --git a/src/frontend/src/assets/dashboard/explore/resource-stopped-action.png b/src/frontend/src/assets/dashboard/explore/resource-stopped-action.png index f5286cdf5..d2daed183 100644 Binary files a/src/frontend/src/assets/dashboard/explore/resource-stopped-action.png and b/src/frontend/src/assets/dashboard/explore/resource-stopped-action.png differ diff --git a/src/frontend/src/assets/dashboard/explore/resource-submenu-actions.png b/src/frontend/src/assets/dashboard/explore/resource-submenu-actions.png index 675366acf..14de776eb 100644 Binary files a/src/frontend/src/assets/dashboard/explore/resource-submenu-actions.png and b/src/frontend/src/assets/dashboard/explore/resource-submenu-actions.png differ diff --git a/src/frontend/src/assets/dashboard/explore/resources-filtered-containers.png b/src/frontend/src/assets/dashboard/explore/resources-filtered-containers.png index 0583e7d93..300bad6cb 100644 Binary files a/src/frontend/src/assets/dashboard/explore/resources-filtered-containers.png and b/src/frontend/src/assets/dashboard/explore/resources-filtered-containers.png differ diff --git a/src/frontend/src/assets/dashboard/explore/select-resource-type.png b/src/frontend/src/assets/dashboard/explore/select-resource-type.png index 8c006daa9..14368d737 100644 Binary files a/src/frontend/src/assets/dashboard/explore/select-resource-type.png and b/src/frontend/src/assets/dashboard/explore/select-resource-type.png differ diff --git a/src/frontend/src/assets/dashboard/explore/settings-manage-telemetry.png b/src/frontend/src/assets/dashboard/explore/settings-manage-telemetry.png index bd778dba3..c094de41e 100644 Binary files a/src/frontend/src/assets/dashboard/explore/settings-manage-telemetry.png and b/src/frontend/src/assets/dashboard/explore/settings-manage-telemetry.png differ diff --git a/src/frontend/src/assets/dashboard/explore/structured-logs-errors-view.png b/src/frontend/src/assets/dashboard/explore/structured-logs-errors-view.png index 588edf119..13040d03d 100644 Binary files a/src/frontend/src/assets/dashboard/explore/structured-logs-errors-view.png and b/src/frontend/src/assets/dashboard/explore/structured-logs-errors-view.png differ diff --git a/src/frontend/src/assets/dashboard/explore/structured-logs-errors.png b/src/frontend/src/assets/dashboard/explore/structured-logs-errors.png index 5b8fb3632..e17aba384 100644 Binary files a/src/frontend/src/assets/dashboard/explore/structured-logs-errors.png and b/src/frontend/src/assets/dashboard/explore/structured-logs-errors.png differ diff --git a/src/frontend/src/assets/dashboard/explore/structured-logs-filtered.png b/src/frontend/src/assets/dashboard/explore/structured-logs-filtered.png index 459c89968..601cbca69 100644 Binary files a/src/frontend/src/assets/dashboard/explore/structured-logs-filtered.png and b/src/frontend/src/assets/dashboard/explore/structured-logs-filtered.png differ diff --git a/src/frontend/src/assets/dashboard/explore/structured-logs-trace-errors.png b/src/frontend/src/assets/dashboard/explore/structured-logs-trace-errors.png index a044bacc4..b61171994 100644 Binary files a/src/frontend/src/assets/dashboard/explore/structured-logs-trace-errors.png and b/src/frontend/src/assets/dashboard/explore/structured-logs-trace-errors.png differ diff --git a/src/frontend/src/assets/dashboard/explore/structured-logs.png b/src/frontend/src/assets/dashboard/explore/structured-logs.png index 5f3c814f2..08792e46b 100644 Binary files a/src/frontend/src/assets/dashboard/explore/structured-logs.png and b/src/frontend/src/assets/dashboard/explore/structured-logs.png differ diff --git a/src/frontend/src/assets/dashboard/explore/text-visualizer-resources.png b/src/frontend/src/assets/dashboard/explore/text-visualizer-resources.png index de723dd07..a8b5beece 100644 Binary files a/src/frontend/src/assets/dashboard/explore/text-visualizer-resources.png and b/src/frontend/src/assets/dashboard/explore/text-visualizer-resources.png differ diff --git a/src/frontend/src/assets/dashboard/explore/text-visualizer-selection-menu.png b/src/frontend/src/assets/dashboard/explore/text-visualizer-selection-menu.png index 9a1731b56..a57bd3e69 100644 Binary files a/src/frontend/src/assets/dashboard/explore/text-visualizer-selection-menu.png and b/src/frontend/src/assets/dashboard/explore/text-visualizer-selection-menu.png differ diff --git a/src/frontend/src/assets/dashboard/explore/theme-selection-light.png b/src/frontend/src/assets/dashboard/explore/theme-selection-light.png index 99fa3e2d8..1aaccefec 100644 Binary files a/src/frontend/src/assets/dashboard/explore/theme-selection-light.png and b/src/frontend/src/assets/dashboard/explore/theme-selection-light.png differ diff --git a/src/frontend/src/assets/dashboard/explore/theme-selection.png b/src/frontend/src/assets/dashboard/explore/theme-selection.png index 59e3a53ba..ca844cae5 100644 Binary files a/src/frontend/src/assets/dashboard/explore/theme-selection.png and b/src/frontend/src/assets/dashboard/explore/theme-selection.png differ diff --git a/src/frontend/src/assets/dashboard/explore/trace-page-from-exemplars.png b/src/frontend/src/assets/dashboard/explore/trace-page-from-exemplars.png index 9a749c372..74575dca2 100644 Binary files a/src/frontend/src/assets/dashboard/explore/trace-page-from-exemplars.png and b/src/frontend/src/assets/dashboard/explore/trace-page-from-exemplars.png differ diff --git a/src/frontend/src/assets/dashboard/explore/trace-span-details.png b/src/frontend/src/assets/dashboard/explore/trace-span-details.png index ce120a29c..b0b711664 100644 Binary files a/src/frontend/src/assets/dashboard/explore/trace-span-details.png and b/src/frontend/src/assets/dashboard/explore/trace-span-details.png differ diff --git a/src/frontend/src/assets/dashboard/explore/trace-span-event-details.png b/src/frontend/src/assets/dashboard/explore/trace-span-event-details.png index 527717f0e..82c9b37df 100644 Binary files a/src/frontend/src/assets/dashboard/explore/trace-span-event-details.png and b/src/frontend/src/assets/dashboard/explore/trace-span-event-details.png differ diff --git a/src/frontend/src/assets/dashboard/explore/trace-view-errors.png b/src/frontend/src/assets/dashboard/explore/trace-view-errors.png index e3999fd9e..7cbf927b1 100644 Binary files a/src/frontend/src/assets/dashboard/explore/trace-view-errors.png and b/src/frontend/src/assets/dashboard/explore/trace-view-errors.png differ diff --git a/src/frontend/src/assets/dashboard/explore/trace-view-filter.png b/src/frontend/src/assets/dashboard/explore/trace-view-filter.png index 9cf6fdea4..6701735fe 100644 Binary files a/src/frontend/src/assets/dashboard/explore/trace-view-filter.png and b/src/frontend/src/assets/dashboard/explore/trace-view-filter.png differ diff --git a/src/frontend/src/assets/dashboard/explore/trace.png b/src/frontend/src/assets/dashboard/explore/trace.png index 9632d1948..86c2d0229 100644 Binary files a/src/frontend/src/assets/dashboard/explore/trace.png and b/src/frontend/src/assets/dashboard/explore/trace.png differ diff --git a/src/frontend/src/assets/dashboard/explore/traces-errors.png b/src/frontend/src/assets/dashboard/explore/traces-errors.png index 9186cea99..afbb1a8f4 100644 Binary files a/src/frontend/src/assets/dashboard/explore/traces-errors.png and b/src/frontend/src/assets/dashboard/explore/traces-errors.png differ diff --git a/src/frontend/src/assets/dashboard/explore/traces-filtering.png b/src/frontend/src/assets/dashboard/explore/traces-filtering.png index 6af1751a7..015cfc8b4 100644 Binary files a/src/frontend/src/assets/dashboard/explore/traces-filtering.png and b/src/frontend/src/assets/dashboard/explore/traces-filtering.png differ diff --git a/src/frontend/src/assets/dashboard/explore/traces.png b/src/frontend/src/assets/dashboard/explore/traces.png index a7e8faad2..0c5daeb58 100644 Binary files a/src/frontend/src/assets/dashboard/explore/traces.png and b/src/frontend/src/assets/dashboard/explore/traces.png differ diff --git a/src/frontend/src/assets/dashboard/landing/console-dark.png b/src/frontend/src/assets/dashboard/landing/console-dark.png index 74f5a88f0..ad275706d 100644 Binary files a/src/frontend/src/assets/dashboard/landing/console-dark.png and b/src/frontend/src/assets/dashboard/landing/console-dark.png differ diff --git a/src/frontend/src/assets/dashboard/landing/console-light.png b/src/frontend/src/assets/dashboard/landing/console-light.png index 60524be95..518b32163 100644 Binary files a/src/frontend/src/assets/dashboard/landing/console-light.png and b/src/frontend/src/assets/dashboard/landing/console-light.png differ diff --git a/src/frontend/src/assets/dashboard/landing/metrics-dark.png b/src/frontend/src/assets/dashboard/landing/metrics-dark.png index b6f95f0a8..baa67591e 100644 Binary files a/src/frontend/src/assets/dashboard/landing/metrics-dark.png and b/src/frontend/src/assets/dashboard/landing/metrics-dark.png differ diff --git a/src/frontend/src/assets/dashboard/landing/metrics-light.png b/src/frontend/src/assets/dashboard/landing/metrics-light.png index 85dfa8462..fdc17913f 100644 Binary files a/src/frontend/src/assets/dashboard/landing/metrics-light.png and b/src/frontend/src/assets/dashboard/landing/metrics-light.png differ diff --git a/src/frontend/src/assets/dashboard/landing/resources-graph-dark.png b/src/frontend/src/assets/dashboard/landing/resources-graph-dark.png index a6ce8052b..3cf0bf3ea 100644 Binary files a/src/frontend/src/assets/dashboard/landing/resources-graph-dark.png and b/src/frontend/src/assets/dashboard/landing/resources-graph-dark.png differ diff --git a/src/frontend/src/assets/dashboard/landing/resources-graph-light.png b/src/frontend/src/assets/dashboard/landing/resources-graph-light.png index 1fbe5a851..124335e10 100644 Binary files a/src/frontend/src/assets/dashboard/landing/resources-graph-light.png and b/src/frontend/src/assets/dashboard/landing/resources-graph-light.png differ diff --git a/src/frontend/src/assets/dashboard/landing/resources-table-dark.png b/src/frontend/src/assets/dashboard/landing/resources-table-dark.png index 49ee5809a..ffa461a9a 100644 Binary files a/src/frontend/src/assets/dashboard/landing/resources-table-dark.png and b/src/frontend/src/assets/dashboard/landing/resources-table-dark.png differ diff --git a/src/frontend/src/assets/dashboard/landing/resources-table-light.png b/src/frontend/src/assets/dashboard/landing/resources-table-light.png index 356c9d595..3fe481dfd 100644 Binary files a/src/frontend/src/assets/dashboard/landing/resources-table-light.png and b/src/frontend/src/assets/dashboard/landing/resources-table-light.png differ diff --git a/src/frontend/src/assets/dashboard/landing/structured-logs-dark.png b/src/frontend/src/assets/dashboard/landing/structured-logs-dark.png index 7a984b8f2..fd2cd23a5 100644 Binary files a/src/frontend/src/assets/dashboard/landing/structured-logs-dark.png and b/src/frontend/src/assets/dashboard/landing/structured-logs-dark.png differ diff --git a/src/frontend/src/assets/dashboard/landing/structured-logs-light.png b/src/frontend/src/assets/dashboard/landing/structured-logs-light.png index 582d488a7..b4665058a 100644 Binary files a/src/frontend/src/assets/dashboard/landing/structured-logs-light.png and b/src/frontend/src/assets/dashboard/landing/structured-logs-light.png differ diff --git a/src/frontend/src/assets/dashboard/landing/trace-detail-dark.png b/src/frontend/src/assets/dashboard/landing/trace-detail-dark.png index 445ffc6ab..6693293bc 100644 Binary files a/src/frontend/src/assets/dashboard/landing/trace-detail-dark.png and b/src/frontend/src/assets/dashboard/landing/trace-detail-dark.png differ diff --git a/src/frontend/src/assets/dashboard/landing/trace-detail-light.png b/src/frontend/src/assets/dashboard/landing/trace-detail-light.png index e39b7f885..732a7cb96 100644 Binary files a/src/frontend/src/assets/dashboard/landing/trace-detail-light.png and b/src/frontend/src/assets/dashboard/landing/trace-detail-light.png differ diff --git a/src/frontend/src/assets/dashboard/landing/traces-dark.png b/src/frontend/src/assets/dashboard/landing/traces-dark.png index 08fd86e77..0d67b8f28 100644 Binary files a/src/frontend/src/assets/dashboard/landing/traces-dark.png and b/src/frontend/src/assets/dashboard/landing/traces-dark.png differ diff --git a/src/frontend/src/assets/dashboard/landing/traces-light.png b/src/frontend/src/assets/dashboard/landing/traces-light.png index 4eb318733..ec57b3010 100644 Binary files a/src/frontend/src/assets/dashboard/landing/traces-light.png and b/src/frontend/src/assets/dashboard/landing/traces-light.png differ diff --git a/src/frontend/src/assets/dashboard/standalone/aspire-dashboard-python-logs-light.png b/src/frontend/src/assets/dashboard/standalone/aspire-dashboard-python-logs-light.png index 066bb06e2..eddb734c4 100644 Binary files a/src/frontend/src/assets/dashboard/standalone/aspire-dashboard-python-logs-light.png and b/src/frontend/src/assets/dashboard/standalone/aspire-dashboard-python-logs-light.png differ diff --git a/src/frontend/src/assets/dashboard/standalone/aspire-dashboard-python-logs.png b/src/frontend/src/assets/dashboard/standalone/aspire-dashboard-python-logs.png index 76dbba8d8..36354d038 100644 Binary files a/src/frontend/src/assets/dashboard/standalone/aspire-dashboard-python-logs.png and b/src/frontend/src/assets/dashboard/standalone/aspire-dashboard-python-logs.png differ diff --git a/src/frontend/src/assets/dashboard/standalone/standalone-mode-light.png b/src/frontend/src/assets/dashboard/standalone/standalone-mode-light.png index 11e589365..1eea64dba 100644 Binary files a/src/frontend/src/assets/dashboard/standalone/standalone-mode-light.png and b/src/frontend/src/assets/dashboard/standalone/standalone-mode-light.png differ diff --git a/src/frontend/src/assets/dashboard/standalone/standalone-mode.png b/src/frontend/src/assets/dashboard/standalone/standalone-mode.png index ffe4143d3..c779f3381 100644 Binary files a/src/frontend/src/assets/dashboard/standalone/standalone-mode.png and b/src/frontend/src/assets/dashboard/standalone/standalone-mode.png differ diff --git a/src/frontend/src/assets/fundamentals/custom-clear-cache-command-succeeded.png b/src/frontend/src/assets/fundamentals/custom-clear-cache-command-succeeded.png index 63934d709..1af3e7877 100644 Binary files a/src/frontend/src/assets/fundamentals/custom-clear-cache-command-succeeded.png and b/src/frontend/src/assets/fundamentals/custom-clear-cache-command-succeeded.png differ diff --git a/src/frontend/src/assets/fundamentals/custom-clear-cache-command.png b/src/frontend/src/assets/fundamentals/custom-clear-cache-command.png index 0a71f6a9e..fe097cef2 100644 Binary files a/src/frontend/src/assets/fundamentals/custom-clear-cache-command.png and b/src/frontend/src/assets/fundamentals/custom-clear-cache-command.png differ diff --git a/src/frontend/src/assets/fundamentals/custom-http-command-highlighted.png b/src/frontend/src/assets/fundamentals/custom-http-command-highlighted.png index e6bd6d4da..59e24815a 100644 Binary files a/src/frontend/src/assets/fundamentals/custom-http-command-highlighted.png and b/src/frontend/src/assets/fundamentals/custom-http-command-highlighted.png differ diff --git a/src/frontend/src/assets/fundamentals/custom-http-command-starting.png b/src/frontend/src/assets/fundamentals/custom-http-command-starting.png index 965f0b3f8..ed2b77b66 100644 Binary files a/src/frontend/src/assets/fundamentals/custom-http-command-starting.png and b/src/frontend/src/assets/fundamentals/custom-http-command-starting.png differ diff --git a/src/frontend/src/assets/fundamentals/custom-http-command-succeeded.png b/src/frontend/src/assets/fundamentals/custom-http-command-succeeded.png index 4c72a7acd..382a40a8d 100644 Binary files a/src/frontend/src/assets/fundamentals/custom-http-command-succeeded.png and b/src/frontend/src/assets/fundamentals/custom-http-command-succeeded.png differ diff --git a/src/frontend/src/assets/fundamentals/custom-http-command.png b/src/frontend/src/assets/fundamentals/custom-http-command.png index 318c54a57..8765e523b 100644 Binary files a/src/frontend/src/assets/fundamentals/custom-http-command.png and b/src/frontend/src/assets/fundamentals/custom-http-command.png differ diff --git a/src/frontend/src/assets/fundamentals/customized-parameter-ui.png b/src/frontend/src/assets/fundamentals/customized-parameter-ui.png index 9e72c27d7..752546bfd 100644 Binary files a/src/frontend/src/assets/fundamentals/customized-parameter-ui.png and b/src/frontend/src/assets/fundamentals/customized-parameter-ui.png differ diff --git a/src/frontend/src/assets/fundamentals/dashboard-unresolved-parameters-message.png b/src/frontend/src/assets/fundamentals/dashboard-unresolved-parameters-message.png index cd05680f8..e35f9fd66 100644 Binary files a/src/frontend/src/assets/fundamentals/dashboard-unresolved-parameters-message.png and b/src/frontend/src/assets/fundamentals/dashboard-unresolved-parameters-message.png differ diff --git a/src/frontend/src/assets/fundamentals/health-checks-dashboard-status.png b/src/frontend/src/assets/fundamentals/health-checks-dashboard-status.png index f18018e09..5a0d70c3d 100644 Binary files a/src/frontend/src/assets/fundamentals/health-checks-dashboard-status.png and b/src/frontend/src/assets/fundamentals/health-checks-dashboard-status.png differ diff --git a/src/frontend/src/assets/get-started/csharp-aspire-dashboard-dark.png b/src/frontend/src/assets/get-started/csharp-aspire-dashboard-dark.png index b582a735e..93620148d 100644 Binary files a/src/frontend/src/assets/get-started/csharp-aspire-dashboard-dark.png and b/src/frontend/src/assets/get-started/csharp-aspire-dashboard-dark.png differ diff --git a/src/frontend/src/assets/get-started/csharp-aspire-dashboard-light.png b/src/frontend/src/assets/get-started/csharp-aspire-dashboard-light.png index c645ae7ee..41e0dc981 100644 Binary files a/src/frontend/src/assets/get-started/csharp-aspire-dashboard-light.png and b/src/frontend/src/assets/get-started/csharp-aspire-dashboard-light.png differ diff --git a/src/frontend/src/assets/get-started/javascript-aspire-dashboard-dark.png b/src/frontend/src/assets/get-started/javascript-aspire-dashboard-dark.png index 148dd5a4c..ba7390317 100644 Binary files a/src/frontend/src/assets/get-started/javascript-aspire-dashboard-dark.png and b/src/frontend/src/assets/get-started/javascript-aspire-dashboard-dark.png differ diff --git a/src/frontend/src/assets/get-started/javascript-aspire-dashboard-light.png b/src/frontend/src/assets/get-started/javascript-aspire-dashboard-light.png index 6b1cd0cdb..4d1b9fb80 100644 Binary files a/src/frontend/src/assets/get-started/javascript-aspire-dashboard-light.png and b/src/frontend/src/assets/get-started/javascript-aspire-dashboard-light.png differ diff --git a/src/frontend/src/assets/get-started/python-aspire-dashboard-dark.png b/src/frontend/src/assets/get-started/python-aspire-dashboard-dark.png index 02e06b58d..99eebfa71 100644 Binary files a/src/frontend/src/assets/get-started/python-aspire-dashboard-dark.png and b/src/frontend/src/assets/get-started/python-aspire-dashboard-dark.png differ diff --git a/src/frontend/src/assets/get-started/python-aspire-dashboard-light.png b/src/frontend/src/assets/get-started/python-aspire-dashboard-light.png index 3615b5c16..3e69b845e 100644 Binary files a/src/frontend/src/assets/get-started/python-aspire-dashboard-light.png and b/src/frontend/src/assets/get-started/python-aspire-dashboard-light.png differ diff --git a/src/frontend/src/assets/integrations/custom-integrations/maildev-details-light.png b/src/frontend/src/assets/integrations/custom-integrations/maildev-details-light.png index 254a8e746..b75446d7c 100644 Binary files a/src/frontend/src/assets/integrations/custom-integrations/maildev-details-light.png and b/src/frontend/src/assets/integrations/custom-integrations/maildev-details-light.png differ diff --git a/src/frontend/src/assets/integrations/custom-integrations/maildev-details.png b/src/frontend/src/assets/integrations/custom-integrations/maildev-details.png index 690bed7a7..d8a45571b 100644 Binary files a/src/frontend/src/assets/integrations/custom-integrations/maildev-details.png and b/src/frontend/src/assets/integrations/custom-integrations/maildev-details.png differ diff --git a/src/frontend/src/assets/integrations/custom-integrations/maildev-envvar-light.png b/src/frontend/src/assets/integrations/custom-integrations/maildev-envvar-light.png index 476ae487e..e6c44b830 100644 Binary files a/src/frontend/src/assets/integrations/custom-integrations/maildev-envvar-light.png and b/src/frontend/src/assets/integrations/custom-integrations/maildev-envvar-light.png differ diff --git a/src/frontend/src/assets/integrations/custom-integrations/maildev-envvar.png b/src/frontend/src/assets/integrations/custom-integrations/maildev-envvar.png index 48e686d3d..a7d352929 100644 Binary files a/src/frontend/src/assets/integrations/custom-integrations/maildev-envvar.png and b/src/frontend/src/assets/integrations/custom-integrations/maildev-envvar.png differ diff --git a/src/frontend/src/assets/integrations/custom-integrations/maildev-in-aspire-dashboard-light.png b/src/frontend/src/assets/integrations/custom-integrations/maildev-in-aspire-dashboard-light.png index f270b5516..5eb001c9b 100644 Binary files a/src/frontend/src/assets/integrations/custom-integrations/maildev-in-aspire-dashboard-light.png and b/src/frontend/src/assets/integrations/custom-integrations/maildev-in-aspire-dashboard-light.png differ diff --git a/src/frontend/src/assets/integrations/custom-integrations/maildev-in-aspire-dashboard.png b/src/frontend/src/assets/integrations/custom-integrations/maildev-in-aspire-dashboard.png index a0cd11d5e..beb99cdd9 100644 Binary files a/src/frontend/src/assets/integrations/custom-integrations/maildev-in-aspire-dashboard.png and b/src/frontend/src/assets/integrations/custom-integrations/maildev-in-aspire-dashboard.png differ diff --git a/src/frontend/src/assets/integrations/custom-integrations/maildev-with-newsletterservice-dashboard-light.png b/src/frontend/src/assets/integrations/custom-integrations/maildev-with-newsletterservice-dashboard-light.png index da457b70e..ae5ada5e1 100644 Binary files a/src/frontend/src/assets/integrations/custom-integrations/maildev-with-newsletterservice-dashboard-light.png and b/src/frontend/src/assets/integrations/custom-integrations/maildev-with-newsletterservice-dashboard-light.png differ diff --git a/src/frontend/src/assets/integrations/custom-integrations/maildev-with-newsletterservice-dashboard.png b/src/frontend/src/assets/integrations/custom-integrations/maildev-with-newsletterservice-dashboard.png index fedbf6942..9b5ceb534 100644 Binary files a/src/frontend/src/assets/integrations/custom-integrations/maildev-with-newsletterservice-dashboard.png and b/src/frontend/src/assets/integrations/custom-integrations/maildev-with-newsletterservice-dashboard.png differ diff --git a/src/frontend/src/assets/integrations/custom-integrations/maildevresource-empty-dashboard-light.png b/src/frontend/src/assets/integrations/custom-integrations/maildevresource-empty-dashboard-light.png index cd6379913..dbea50169 100644 Binary files a/src/frontend/src/assets/integrations/custom-integrations/maildevresource-empty-dashboard-light.png and b/src/frontend/src/assets/integrations/custom-integrations/maildevresource-empty-dashboard-light.png differ diff --git a/src/frontend/src/assets/integrations/custom-integrations/maildevresource-empty-dashboard.png b/src/frontend/src/assets/integrations/custom-integrations/maildevresource-empty-dashboard.png index 45393fa5f..3ecf739f1 100644 Binary files a/src/frontend/src/assets/integrations/custom-integrations/maildevresource-empty-dashboard.png and b/src/frontend/src/assets/integrations/custom-integrations/maildevresource-empty-dashboard.png differ diff --git a/src/frontend/src/assets/integrations/custom-integrations/mailkit-metrics-dashboard-light.png b/src/frontend/src/assets/integrations/custom-integrations/mailkit-metrics-dashboard-light.png index a67b2271b..3e0d38ff9 100644 Binary files a/src/frontend/src/assets/integrations/custom-integrations/mailkit-metrics-dashboard-light.png and b/src/frontend/src/assets/integrations/custom-integrations/mailkit-metrics-dashboard-light.png differ diff --git a/src/frontend/src/assets/integrations/custom-integrations/mailkit-metrics-dashboard.png b/src/frontend/src/assets/integrations/custom-integrations/mailkit-metrics-dashboard.png index eb2953d58..3fa56697a 100644 Binary files a/src/frontend/src/assets/integrations/custom-integrations/mailkit-metrics-dashboard.png and b/src/frontend/src/assets/integrations/custom-integrations/mailkit-metrics-dashboard.png differ diff --git a/src/frontend/src/assets/integrations/custom-integrations/mailkit-metrics-graph-dashboard-light.png b/src/frontend/src/assets/integrations/custom-integrations/mailkit-metrics-graph-dashboard-light.png index ee1031c92..2ae2df7a4 100644 Binary files a/src/frontend/src/assets/integrations/custom-integrations/mailkit-metrics-graph-dashboard-light.png and b/src/frontend/src/assets/integrations/custom-integrations/mailkit-metrics-graph-dashboard-light.png differ diff --git a/src/frontend/src/assets/integrations/custom-integrations/mailkit-metrics-graph-dashboard.png b/src/frontend/src/assets/integrations/custom-integrations/mailkit-metrics-graph-dashboard.png index 27c8bf529..16825d024 100644 Binary files a/src/frontend/src/assets/integrations/custom-integrations/mailkit-metrics-graph-dashboard.png and b/src/frontend/src/assets/integrations/custom-integrations/mailkit-metrics-graph-dashboard.png differ diff --git a/src/frontend/src/assets/integrations/custom-integrations/newsletter-details-light.png b/src/frontend/src/assets/integrations/custom-integrations/newsletter-details-light.png index 9e319de68..4db7b71eb 100644 Binary files a/src/frontend/src/assets/integrations/custom-integrations/newsletter-details-light.png and b/src/frontend/src/assets/integrations/custom-integrations/newsletter-details-light.png differ diff --git a/src/frontend/src/assets/integrations/custom-integrations/newsletter-details.png b/src/frontend/src/assets/integrations/custom-integrations/newsletter-details.png index ae19d5cbf..b49228376 100644 Binary files a/src/frontend/src/assets/integrations/custom-integrations/newsletter-details.png and b/src/frontend/src/assets/integrations/custom-integrations/newsletter-details.png differ diff --git a/src/frontend/src/content/docs/app-host/certificate-configuration.mdx b/src/frontend/src/content/docs/app-host/certificate-configuration.mdx index bf9d44d0f..165d1326a 100644 --- a/src/frontend/src/content/docs/app-host/certificate-configuration.mdx +++ b/src/frontend/src/content/docs/app-host/certificate-configuration.mdx @@ -5,6 +5,7 @@ description: Configure HTTPS endpoints and certificate trust for Aspire resource --- import { Aside, Tabs, TabItem } from '@astrojs/starlight/components'; +import OsAwareTabs from '@components/OsAwareTabs.astro'; Aspire provides two complementary sets of certificate APIs: @@ -36,7 +37,31 @@ Many of the certificate features in Aspire rely on a development certificate. Be ### Using the Aspire CLI (recommended) -The preferred way to manage the development certificate is to use the [Aspire CLI](/get-started/install-cli/). When you run `aspire run`, the CLI automatically ensures the development certificate is created and trusted. No additional manual steps are required. +The preferred way to manage the development certificate is to use the [Aspire CLI](/get-started/install-cli/). When you run `aspire run` in an interactive session, the CLI automatically ensures the development certificate is created and trusted. No additional manual steps are required. + +For non-C# AppHosts (such as [TypeScript](/app-host/typescript-apphost/) or Python AppHosts), the `dotnet` first-run experience that normally creates the HTTPS development certificate never runs, because these AppHosts launch a prebuilt native binary instead of invoking `dotnet`. The Aspire CLI fills this gap when `aspire run` starts and no development certificate exists: + +- In an interactive session—and on Linux, where establishing trust doesn't require a prompt—the CLI creates *and* trusts the certificate, just as it does for C# AppHosts. +- In a non-interactive session on macOS or Windows (for example, in CI), the CLI can't show the macOS Keychain password prompt or the Windows trust dialog, so it *generates* the certificate without trusting it. This lets servers such as Kestrel load the certificate from the personal store, even though it isn't trusted. If the certificate can't be generated, a warning is displayed and the run continues. + +To opt out of automatic certificate generation, set the `ASPIRE_CLI_GENERATE_HTTPS_CERTIFICATE` environment variable to `false`. This mirrors the .NET SDK's `DOTNET_GENERATE_ASPNET_CERTIFICATE` opt-out: + + +
+ +```bash title="Disable automatic HTTPS certificate generation" +ASPIRE_CLI_GENERATE_HTTPS_CERTIFICATE=false aspire run +``` + +
+
+ +```powershell title="Disable automatic HTTPS certificate generation" +$env:ASPIRE_CLI_GENERATE_HTTPS_CERTIFICATE="false"; aspire run +``` + +
+
You can also manage certificates explicitly with the Aspire CLI: @@ -468,6 +493,22 @@ await builder.build().run(); doesn't natively support appending certificates to the default trust store. + + #### Override mode Attempts to override a resource to only trust the configured certificates, replacing the default trusted certificates entirely. This mode is useful when you need strict control over which certificates are trusted. diff --git a/src/frontend/src/content/docs/app-host/configuration.mdx b/src/frontend/src/content/docs/app-host/configuration.mdx index 29c294ab1..f46f876c7 100644 --- a/src/frontend/src/content/docs/app-host/configuration.mdx +++ b/src/frontend/src/content/docs/app-host/configuration.mdx @@ -24,9 +24,12 @@ AppHost configuration is provided through launch profiles: ]} /> -In C# AppHosts, profiles live in `launchSettings.json`: +C# AppHosts come in two forms, and each stores launch profiles differently: -```json title="launchSettings.json" +- **Project-based AppHost** (the default `dotnet new aspire-apphost` template): profiles live in `Properties/launchSettings.json`. +- **File-based AppHost** (created with `aspire new` using the empty C# template): profiles live in `apphost.run.json`. In this template, `aspire.config.json` only points at the entry file — it does **not** contain a `profiles` block. + +```json title="Project-based AppHost — Properties/launchSettings.json" { "$schema": "https://json.schemastore.org/launchsettings.json", "profiles": { @@ -45,6 +48,36 @@ In C# AppHosts, profiles live in `launchSettings.json`: } } ``` + +```json title="File-based AppHost — apphost.run.json" +{ + "profiles": { + "https": { + "applicationUrl": "https://localhost:17134;http://localhost:15170", + "environmentVariables": { + "ASPNETCORE_ENVIRONMENT": "Development", + "DOTNET_ENVIRONMENT": "Development", + "ASPIRE_DASHBOARD_OTLP_ENDPOINT_URL": "https://localhost:21030", + "ASPIRE_RESOURCE_SERVICE_ENDPOINT_URL": "https://localhost:22057" + } + } + } +} +``` + +```json title="File-based AppHost — aspire.config.json" +{ + "appHost": { + "path": "apphost.cs" + } +} +``` + + In TypeScript AppHosts, profiles live in `aspire.config.json`: @@ -129,7 +162,6 @@ By default, the dashboard is automatically started by the AppHost. The dashboard | `ASPIRE_DASHBOARD_UNSECURED_ALLOW_ANONYMOUS`| `false` | Configures the dashboard to not use authentication and accept anonymous access. Sets frontend, OTLP, MCP, and API auth modes to `Unsecured`. See [Dashboard security considerations](/dashboard/security-considerations/#anonymous-access) for the security implications. | | `ASPIRE_DASHBOARD_FRONTEND_BROWSERTOKEN` | Automatically generated 128-bit entropy token. | Configures the frontend browser token. This is the value that must be entered to access the dashboard when the auth mode is BrowserToken. If no browser token is specified then a new token is generated each time the AppHost is launched. | | `ASPIRE_DASHBOARD_TELEMETRY_OPTOUT` | `false` | Configures the dashboard to never send [usage telemetry](/dashboard/microsoft-collected-dashboard-telemetry/). | -| `ASPIRE_DASHBOARD_AI_DISABLED` | `true` | Reserved for future use. The in-dashboard GitHub Copilot UI was removed in Aspire 13.3. AI coding agents can still access telemetry data via the [Aspire CLI and MCP server](/dashboard/ai-coding-agents/). | | `ASPIRE_DASHBOARD_API_ENABLED` | `true` | Enables the dashboard [telemetry API](/dashboard/configuration/#api) (`/api/telemetry/*`) endpoints. The AppHost always sets this to `true`. | | `ASPIRE_DASHBOARD_FORWARDEDHEADERS_ENABLED` | `false` | Enables the Forwarded headers middleware that replaces the scheme and host values on the Request context with the values coming from the `X-Forwarded-Proto` and `X-Forwarded-Host` headers. | diff --git a/src/frontend/src/content/docs/app-host/eventing.mdx b/src/frontend/src/content/docs/app-host/eventing.mdx index bafa25341..a61e6b1ab 100644 --- a/src/frontend/src/content/docs/app-host/eventing.mdx +++ b/src/frontend/src/content/docs/app-host/eventing.mdx @@ -113,6 +113,15 @@ builder.Eventing.Subscribe( callbacks like `onResourceReady`. + + When the AppHost is run, by the time the Aspire dashboard is displayed, you should see the following log output in the console: ```plaintext {2,12} data-disable-copy diff --git a/src/frontend/src/content/docs/app-host/resource-lifetimes.mdx b/src/frontend/src/content/docs/app-host/resource-lifetimes.mdx index 3335e6aa7..d53df1a26 100644 --- a/src/frontend/src/content/docs/app-host/resource-lifetimes.mdx +++ b/src/frontend/src/content/docs/app-host/resource-lifetimes.mdx @@ -1,10 +1,11 @@ --- title: Configure resource lifetimes in Aspire -description: Learn how session, persistent, resource-scoped, and parent-process lifetimes control Aspire containers, executables, and projects. +description: Learn how session, persistent, resource-scoped, and parent-process lifetimes, plus explicit start, control Aspire containers, executables, and projects. --- import { Tabs, TabItem } from '@astrojs/starlight/components'; import { Image } from 'astro:assets'; +import LearnMore from '@components/LearnMore.astro'; import persistentContainer from '@assets/whats-new/aspire-9/persistent-container.png'; import persistentContainerDocker from '@assets/whats-new/aspire-9/persistent-container-docker-desktop.png'; @@ -13,7 +14,7 @@ Aspire resources support a number of different lifetime modes. For example, the Resource lifetimes apply to containers, executables, and projects. Persistent executable and project lifetimes are experimental in Aspire 13.4. You can use different lifetimes for resources that take time to initialize, need stable local endpoints, should remain available while you restart or rebuild the AppHost, or need to match another resource's lifetime. :::caution[Experimental shared lifetime APIs] -The shared lifetime APIs are experimental and emit diagnostic `ASPIREPERSISTENCE001`. The existing container-specific `WithLifetime(ContainerLifetime.Persistent)` and `WithLifetime(ContainerLifetime.Session)` APIs remain supported for container resources. +The shared lifetime APIs are experimental and emit the [`ASPIREPERSISTENCE001`](/diagnostics/aspirepersistence001/) diagnostic. The existing container-specific `WithLifetime(ContainerLifetime.Persistent)` and `WithLifetime(ContainerLifetime.Session)` APIs remain supported for container resources. ::: ## Lifetime modes @@ -38,7 +39,14 @@ Use persistent lifetime for resources that are expensive to initialize, need sta Persistent resources are automatically recreated when the AppHost detects meaningful configuration changes. If the configuration differs, the resource is recreated with the new settings. ::: -Persistent resources default to proxyless endpoints so a stable local endpoint can remain reachable after the AppHost stops. You can still configure endpoint proxy behavior explicitly. For example, set `isProxied: true` or `IsProxied = true` when you need Aspire's proxy for a specific endpoint, or disable endpoint proxy support when you intentionally want every endpoint on a resource to be proxyless. Persistent executable endpoints must have a concrete `port` or `targetPort`; automatically persisted random executable ports aren't supported. +Persistent containers use proxied endpoints by default, just like session containers. The proxy runs only while the AppHost is running, so the proxy address isn't reachable after the AppHost stops. Persistent executables and projects default to proxyless endpoints so their direct addresses stay stable and reachable even after the AppHost stops. + +You can still configure endpoint proxy behavior explicitly on any persistent resource. Set `isProxied: false` on an individual endpoint, or call `WithEndpointProxySupport(false)` to make every endpoint on a resource proxyless. When a proxyless endpoint doesn't specify a public `port`, Aspire allocates one before the resource is created. For persistent resources, Aspire stores the allocated port in user secrets when user secrets are available and reuses it on later AppHost runs. + + + For more information, see [Allocate ports for dynamic proxyless + endpoints](/fundamentals/networking-overview/#allocate-ports-for-dynamic-proxyless-endpoints). + :::danger[Persistent container ≠ persistent data] Persistent container lifetime doesn't guarantee data durability. For details, see [Container lifetime vs. data durability](#container-lifetime-vs-data-durability). @@ -68,6 +76,59 @@ Use resource-scoped lifetime when a companion resource should follow the lifetim Aspire evaluates the source resource's lifetime when it prepares the application model, so later lifetime changes to the source resource are reflected by the dependent resource. The source and dependent resources must both support lifetime configuration. +## Defer resource start with explicit start + +Use `WithExplicitStart()` to prevent a resource from starting automatically with the rest of the AppHost. The resource appears in the dashboard but remains stopped until you start it manually. + +Starting in Aspire 13.5, `WithExplicitStart()` also affects when execution configuration callbacks (for example, `WithEnvironment` and `WithArgs`) are evaluated, depending on whether the resource is session-scoped or persistent. + +### Session-scoped explicit-start resources + +For session-scoped resources (the default lifetime), Aspire defers Developer Control Plane (DCP) registration until you manually start the resource from the dashboard. This means execution configuration callbacks — such as `WithEnvironment(context => ...)` — are **not** evaluated during AppHost startup. They run only when the resource is manually started. + +```csharp title="AppHost.cs" +var builder = DistributedApplication.CreateBuilder(args); + +// The callback below is NOT evaluated during AppHost startup. +// It runs only when the resource is manually started from the dashboard. +var job = builder.AddExecutable("batch-job", "dotnet", ".", "run", "--project", "BatchJob") + .WithExplicitStart() + .WithEnvironment(async context => + { + // Prompt or compute dynamic configuration at start time + context.EnvironmentVariables["API_KEY"] = await GetApiKeyAsync(); + }); + +builder.Build().Run(); +``` + +:::note[Placeholder API used for demonstration] +`GetApiKeyAsync` is a placeholder used to demonstrate deferred, callback-based configuration. Its implementation isn't shown because the relevant behavior is retrieving a value when the callback runs and assigning that value to an environment variable on the target resource. +::: + +### Persistent explicit-start resources + +For persistent resources, Aspire must register the resource with the Developer Control Plane (DCP) immediately at startup so it can discover any existing running instance. However, when you manually start a persistent explicit-start resource, Aspire patches the existing DCP resource to start it rather than deleting and recreating it. This means the execution configuration callbacks run once during startup registration and are **not** re-evaluated when you manually start the resource. + +```csharp title="AppHost.cs" +var builder = DistributedApplication.CreateBuilder(args); + +// Persistent explicit-start resources are registered at startup to detect existing instances. +// The callback runs during startup registration — not again when manually started. +#pragma warning disable ASPIREPERSISTENCE001 +var cache = builder.AddContainer("long-lived-cache", "my-cache-image") + .WithPersistentLifetime() + .WithExplicitStart() + .WithEnvironment(context => + { + context.EnvironmentVariables["CACHE_SIZE"] = "512mb"; + }); + +#pragma warning restore ASPIREPERSISTENCE001 + +builder.Build().Run(); +``` + ## Configure a persistent container For new code, configure a persistent container with `WithPersistentLifetime()`: @@ -155,7 +216,7 @@ await builder.build().run(); -Configure a concrete `port` or `targetPort` for persistent executable endpoints; automatically persisted random executable ports aren't supported. +The preceding example configures a concrete `port` so the endpoint address is explicit. If you omit the public `port`, Aspire allocates one before the executable starts and reuses it from user secrets on later AppHost runs when user secrets are available. ## Configure a persistent project diff --git a/src/frontend/src/content/docs/app-host/typescript-apphost.mdx b/src/frontend/src/content/docs/app-host/typescript-apphost.mdx index 09e6b40f8..f1c358b58 100644 --- a/src/frontend/src/content/docs/app-host/typescript-apphost.mdx +++ b/src/frontend/src/content/docs/app-host/typescript-apphost.mdx @@ -416,6 +416,12 @@ aspire certs trust ``` +### Trusting the certificate for outbound TLS connections + +When your AppHost code opens TLS connections to Aspire-managed resources at runtime (for example, connecting directly to the dashboard's OTLP endpoint from custom AppHost logic), the Aspire CLI ensures Node.js trusts the same development certificate that the Developer Control Plane (DCP) uses. The CLI exports the trusted development certificate into a content-addressed PEM cache under the Aspire home directory (`ASPIRE_HOME`), and Node.js is configured to trust that bundle through the `NODE_EXTRA_CA_CERTS` environment variable. + +If you've already set `NODE_EXTRA_CA_CERTS` for your own certificates, the CLI preserves your value by generating a combined bundle that includes both your certificates and the Aspire development certificate, rather than overwriting your setting. + See [Certificate configuration](/app-host/certificate-configuration/) for details on HTTPS certificate management in Aspire, including Linux-specific setup. diff --git a/src/frontend/src/content/docs/app-host/with-terminal.mdx b/src/frontend/src/content/docs/app-host/with-terminal.mdx new file mode 100644 index 000000000..42b2860b7 --- /dev/null +++ b/src/frontend/src/content/docs/app-host/with-terminal.mdx @@ -0,0 +1,202 @@ +--- +title: Test TUI and shell apps using WithTerminal +seoTitle: Test terminal apps in your Aspire AppHost using WithTerminal +description: Use WithTerminal to expose an interactive terminal for a resource in your Aspire app model, then attach to it from the dashboard or the aspire terminal CLI to drive TUI and shell-based experiences. +--- + +import { Aside, Tabs, TabItem } from '@astrojs/starlight/components'; + +If you have a terminal user interface (TUI) application or a shell-based experience that you want to exercise while it runs under Aspire, add `WithTerminal(...)` to the resource. Aspire then exposes an interactive terminal session that you can attach to from the [Aspire dashboard](/dashboard/overview/) or from the [`aspire terminal`](/reference/cli/commands/aspire-terminal/) CLI command. + + + + +```csharp title="AppHost.cs" +#pragma warning disable ASPIRETERMINAL001 +var builder = DistributedApplication.CreateBuilder(args); + +var agent = builder.AddExecutable("agent", "my-agent", ".") + .WithTerminal(); + +builder.Build().Run(); +``` + + + + +```typescript title="apphost.ts" +import { createBuilder } from './.aspire/modules/aspire.mjs'; + +const builder = await createBuilder(); + +const agent = await builder.addExecutable("agent", "my-agent", ".") + .withTerminal(); + +await builder.build().run(); +``` + + + + +Once the app is running, open the resource's terminal page in the dashboard—or run `aspire terminal attach agent`—to interact with the process just as you would in a local shell. + + + +## When to use WithTerminal + +Reach for `WithTerminal` when a resource is interactive rather than a plain background service: + +- A **TUI application**—for example, an agent, a diagnostics console, or a curses-style tool—that draws a full-screen interface you want to see and drive. +- A **shell-based experience** where you want an interactive prompt inside a container or executable while it runs as part of your app model. +- Any resource you want to **poke at live** during development without leaving the Aspire dashboard or CLI. + +## The debugger is not attached automatically + +When you apply `WithTerminal`, Aspire runs the resource as a plain process and **does not automatically attach the debugger**. If you need to debug the resource, attach the debugger manually to the running process from your IDE. + + + +## Attach from multiple places at once + +Terminal sessions support multiple simultaneous viewers. You can open **two browser tabs pointing at the same terminal**—or a browser tab and the CLI together—and both stay responsive: input and output are mirrored to every attached peer. + +One peer holds the **primary** role and drives the terminal's dimensions, while the others attach as **viewers**. From the CLI you can join as a passive viewer with `aspire terminal attach --viewer`, and take control later with the `Ctrl+B T` hotkey. + +## Configure the terminal + +The terminal session is described by a set of options with sensible defaults: + +| Option | Default | Description | +| ------------------- | ------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `Columns` | `120` | The initial number of columns for the terminal grid. | +| `Rows` | `30` | The initial number of rows for the terminal grid. | +| `ShowTerminalHost` | `false` | Whether the hidden per-replica terminal host resources appear in the dashboard and CLI resource lists. Set to `true` to diagnose terminal-host startup or connectivity issues. | + + + + + + + + +In C#, pass a callback to override any of these options: + +```csharp title="AppHost.cs" +#pragma warning disable ASPIRETERMINAL001 +var builder = DistributedApplication.CreateBuilder(args); + +var agent = builder.AddExecutable("agent", "my-agent", ".") + .WithTerminal(options => + { + options.Columns = 200; + options.Rows = 50; + }); + +builder.Build().Run(); +``` + + + + +```typescript title="apphost.ts" +import { createBuilder } from './.aspire/modules/aspire.mjs'; + +const builder = await createBuilder(); + +const agent = await builder.addExecutable("agent", "my-agent", ".") + .withTerminal(); + +await builder.build().run(); +``` + + + + + + +## Terminals and replicas + +Each replica of a resource gets its own independent terminal session. Aspire creates one terminal host per parent replica, so requesting three replicas yields three separate terminals. The order of `WithReplicas` and `WithTerminal` does not matter—the final replica count is always honored: + + + + +```csharp title="AppHost.cs" +#pragma warning disable ASPIRETERMINAL001 +var builder = DistributedApplication.CreateBuilder(args); + +// Three replicas, each with its own interactive terminal. +var agent = builder.AddExecutable("agent", "my-agent", ".") + .WithReplicas(3) + .WithTerminal(); + +builder.Build().Run(); +``` + + + + +```typescript title="apphost.ts" +import { createBuilder } from './.aspire/modules/aspire.mjs'; + +const builder = await createBuilder(); + +const agent = await builder.addExecutable("agent", "my-agent", ".") + .withReplicas(3) + .withTerminal(); + +await builder.build().run(); +``` + + + + +When a resource has more than one replica, choose which one to attach to with `aspire terminal attach --replica ` (indices are 0-based), or pick interactively when prompted. + + + +## View terminals in the dashboard + +When a resource has `WithTerminal` applied, its **Console Logs** page in the [Aspire dashboard](/dashboard/overview/) gains a live terminal session alongside the usual console log stream. You can drive the running process directly in the browser without leaving the dashboard. For example, you can type commands, scroll the scrollback buffer, and switch between replicas. Each replica appears as its own entry (for example, `agent-r0`, `agent-r1`, `agent-r2`) with an independent session. + +The page picks a default view based on the resource's state at the moment you navigate to it: + +- **Running** (the PTY is live) → the page defaults to the **Terminal** view, so the interactive session is the first thing you see. +- **Waiting**/**Starting** or already **Exited**/**Finished**/**FailedToStart** → the page defaults to the **Console logs** view, so hosting messages—such as "Waiting for resource X to become healthy..." or a startup failure—and post-exit output remain visible immediately. + +Open the toolbar's options (⋯) menu and choose **Terminal** or **Console logs** to switch views manually at any time. Both views stay live while you're on the page: switching between them never tears down the terminal session or loses console log scrollback, and a later state transition (for example, `Waiting` → `Running`) doesn't auto-switch the view once you've navigated to the page. Selecting a different resource re-evaluates the default for that resource. + + + +## Work with terminals from the CLI + +The `aspire terminal` command group lets you list and attach to terminal sessions from your shell. Because `WithTerminal` is experimental, these commands are hidden behind a feature flag. Enable them with: + +```bash title="Enable the aspire terminal commands" +aspire config set features.terminalCommandsEnabled true +``` + +Then: + +- [`aspire terminal ps`](/reference/cli/commands/aspire-terminal-ps/) lists every terminal-enabled resource in the running AppHost, with grid size, attached-peer count, and per-replica health. +- [`aspire terminal attach`](/reference/cli/commands/aspire-terminal-attach/) attaches your local terminal to a resource's interactive PTY session. + +## See also + +- [aspire terminal command](/reference/cli/commands/aspire-terminal/) +- [Executable resources](/app-host/executable-resources/) +- [Aspire dashboard overview](/dashboard/overview/) diff --git a/src/frontend/src/content/docs/community/index.mdx b/src/frontend/src/content/docs/community/index.mdx index c36e59221..383bf353c 100644 --- a/src/frontend/src/content/docs/community/index.mdx +++ b/src/frontend/src/content/docs/community/index.mdx @@ -7,7 +7,7 @@ next: false description: Connect with the Aspire team and community across Discord, GitHub Discussions, livestreams, social channels, and contribution platforms for distributed apps. banner: content: | - Aspire 13.4 is here!See what's new + ✨ Aspire 13.5 is available!Explore the latest features and improvements bannerAutoDismissAfterDays: 14 editUrl: false giscus: false diff --git a/src/frontend/src/content/docs/da/index.mdx b/src/frontend/src/content/docs/da/index.mdx index 02eb5365c..d182d166e 100644 --- a/src/frontend/src/content/docs/da/index.mdx +++ b/src/frontend/src/content/docs/da/index.mdx @@ -11,7 +11,7 @@ prev: false next: false banner: content: | - 🚀 Aspire 13.4 er udgivet!Se hvad der er nyt i Aspire 13.4. + ✨ Aspire 13.5 er udgivet!Se hvad der er nyt i Aspire 13.5. bannerAutoDismissAfterDays: 14 hero: tagline: Din stack, forenklet.

Orkestrér frontends, APIs, containere og databaser ubesværet—ingen omskrivninger, ingen grænser. Udvid Aspire til at drive ethvert projekt.

diff --git a/src/frontend/src/content/docs/dashboard/configuration.mdx b/src/frontend/src/content/docs/dashboard/configuration.mdx index 0fd47a1b6..927262e09 100644 --- a/src/frontend/src/content/docs/dashboard/configuration.mdx +++ b/src/frontend/src/content/docs/dashboard/configuration.mdx @@ -304,7 +304,6 @@ Telemetry limits have different scopes depending upon the telemetry type: | Option | Description | |--------|-------------| | `Dashboard:ApplicationName`
Default: `Aspire` | The application name to be displayed in the UI. This applies only when no resource service URL is specified. When a resource service exists, the service specifies the application name. | -| `Dashboard:AI:Disabled`
Default: `true` | Reserved for future use. The in-dashboard GitHub Copilot UI was removed in Aspire 13.3. AI coding agents can still access telemetry data via the [Aspire CLI and MCP server](/dashboard/ai-coding-agents/). | | `Dashboard:UI:DisableResourceGraph`
Default: `false` | Disables displaying the resource graph UI in the dashboard. | | `Dashboard:UI:DisableImport`
Default: `false` | Disables the telemetry import UI in the dashboard. | | `Dashboard:UI:DisableAgentHelp`
Default: `false` | Disables the **AI Agents** button in the dashboard header. When `false`, a button is shown in the header that opens a dialog with instructions for using AI coding agents with the dashboard. | diff --git a/src/frontend/src/content/docs/dashboard/explore.mdx b/src/frontend/src/content/docs/dashboard/explore.mdx index 53c5cb0f9..2b39aa6f3 100644 --- a/src/frontend/src/content/docs/dashboard/explore.mdx +++ b/src/frontend/src/content/docs/dashboard/explore.mdx @@ -560,6 +560,8 @@ To remove data for specific resources or data types, select the items you want t A screenshot of the Aspire dashboard Manage logs and telemetry dialog, showing resources with available data types and export, remove, and import buttons. +A resource that no longer has any remaining data types can still be selected using its checkbox or by selecting its row, and removed with **Remove selected**. This lets you clear resources that remain known to the dashboard after all of their telemetry has already been removed. + ## Notification center The dashboard includes a notification center accessible via the bell icon in the top-right corner of the header. When there are unread notifications, a badge with the unread count appears on the icon. @@ -579,22 +581,28 @@ Selecting **View response** opens the text visualizer with the command's result Aspire dashboard text visualizer showing a command response opened from the notification center. + + The unread count resets when you open the notification center. To clear all notifications, select the **Dismiss all** button in the dialog. -For information on returning messages from custom commands, see [Custom resource commands](/fundamentals/custom-resource-commands/). +For information on returning command result payloads from custom commands, see [Custom resource commands](/fundamentals/custom-resource-commands/). ## Settings dialog -The Aspire dashboard provides a settings dialog that allows you to configure the theme, the language, manage logs and telemetry data, and view the .NET version used by the dashboard. +The Aspire dashboard provides a settings dialog that allows you to configure the theme, language, and time format, manage logs and telemetry data, and view the .NET version used by the dashboard. By default, the theme is set to follow the System theme, which means the dashboard uses the same theme as your operating system. You can also select the **Light** or **Dark** theme to override the system theme. Theme selections are persisted. +The **Time format** preference provides **System**, **12-hour**, and **24-hour** options. **System** follows the browser's time format, while **12-hour** and **24-hour** override it. The resulting format applies to metrics chart axis labels. + The following screenshot shows the theme selection dialog, with the default System theme selected: The Aspire dashboard Settings dialog, showing the System theme default selection. diff --git a/src/frontend/src/content/docs/dashboard/troubleshooting.mdx b/src/frontend/src/content/docs/dashboard/troubleshooting.mdx new file mode 100644 index 000000000..aa3747e30 --- /dev/null +++ b/src/frontend/src/content/docs/dashboard/troubleshooting.mdx @@ -0,0 +1,64 @@ +--- +title: Troubleshoot the Aspire dashboard +description: Diagnose and resolve common Aspire dashboard issues including connection errors between the dashboard and the AppHost resource service. +--- + +import LearnMore from '@components/LearnMore.astro'; + +This article helps you diagnose and resolve common issues with the Aspire dashboard. + +## Connection errors between the dashboard and AppHost + +The dashboard displays resource information by connecting to a gRPC resource service hosted by the AppHost. When this connection fails, the dashboard may show an error message or display telemetry data without any resource list or console logs. + +### Symptoms + +- The dashboard loads but shows no resources in the resource list. +- Console logs are unavailable for resources. +- An error banner appears indicating the dashboard can't connect to the resource service. +- The dashboard log contains errors related to gRPC connection failures. + +### Viewing dashboard logs + +Enable verbose logging to get more detail about connection failures. Run the AppHost with debug-level output: + +```bash title="Run with debug output" +aspire run --log-level Debug +``` + +Review the console output for messages related to the resource service connection, such as gRPC status codes or TLS handshake failures. + +### Certificate and TLS errors + +When running with HTTPS, the dashboard and AppHost use certificates to secure the gRPC connection. Certificate issues are a common source of connection failures. + +**Common causes:** + +- The development certificate isn't trusted. Run `aspire certs trust` to trust the development certificate. +- The certificate has expired or is corrupted. Regenerate it with `aspire certs clean` followed by `aspire certs trust`. +- A custom certificate is specified but the file path or password is incorrect. Verify the `Dashboard:ResourceServiceClient:ClientCertificate` settings. + +### Firewall and network issues + +- Confirm that a firewall or some other security software isn't blocking the connection between the dashboard and the resource service endpoint. +- The resource service uses gRPC, which requires HTTP/2. Some firewalls, proxies, or network appliances don't support HTTP/2 traffic and may silently drop or downgrade the connection. Ensure that any intermediary between the dashboard and the AppHost allows HTTP/2. + +### Ping timeout errors when debugging the AppHost + +You may see the following error in the dashboard: + +``` +Status(StatusCode="Internal", Detail="Error starting gRPC call. +HttpRequestException: The HTTP/2 server didn't respond to a ping request +within the configured KeepAlivePingDelay. (HttpProtocolError)") +``` + +This means the dashboard's gRPC client sent an HTTP/2 PING frame to the AppHost's resource service, but didn't receive a response in time. + +The most likely cause is that a debugger is paused on the AppHost — when you hit a breakpoint, the process can't respond to HTTP/2 PING frames, triggering the timeout. This error resolves once execution resumes. + +If you see this error and you're running without a debugger attached, verify the AppHost process is still alive and responsive. + + +For the full list of configuration options, see [Aspire dashboard configuration](/dashboard/configuration/). + diff --git a/src/frontend/src/content/docs/de/index.mdx b/src/frontend/src/content/docs/de/index.mdx index 0482c4c62..edfb37766 100644 --- a/src/frontend/src/content/docs/de/index.mdx +++ b/src/frontend/src/content/docs/de/index.mdx @@ -11,7 +11,7 @@ prev: false next: false banner: content: | - 🚀 Aspire 13.4 wurde veröffentlicht!Was ist neu in Aspire 13.4. + ✨ Aspire 13.5 wurde veröffentlicht!Was ist neu in Aspire 13.5. bannerAutoDismissAfterDays: 14 hero: tagline: Dein Stack, vereinfacht.

Orchestriere Frontends, APIs, Container und Datenbanken mühelos—ohne Umschreiben, ohne Grenzen. Erweitere Aspire, um jedes Projekt anzutreiben.

diff --git a/src/frontend/src/content/docs/deployment/azure/container-apps.mdx b/src/frontend/src/content/docs/deployment/azure/container-apps.mdx index 377d8234d..717f6a4e2 100644 --- a/src/frontend/src/content/docs/deployment/azure/container-apps.mdx +++ b/src/frontend/src/content/docs/deployment/azure/container-apps.mdx @@ -244,20 +244,15 @@ var certificateName = builder.AddParameter("certificateName"); builder.AddAzureContainerAppEnvironment("env"); -#pragma warning disable ASPIREACADOMAINS001 builder.AddProject("api") .PublishAsAzureContainerApp((infrastructure, app) => { app.ConfigureCustomDomain(customDomain, certificateName); }); -#pragma warning restore ASPIREACADOMAINS001 builder.Build().Run(); ``` -:::caution -The `ConfigureCustomDomain` API is experimental and may change or be removed in future updates. For more information, see [ASPIREACADOMAINS001](/diagnostics/aspireacadomains001/). -::: ```typescript title="apphost.mts" twoslash @@ -278,9 +273,6 @@ await api.publishAsAzureContainerApp(async (_infrastructure, app) => { await builder.build().run(); ``` -:::caution -The `configureCustomDomain` API is experimental and may change or be removed in future updates. For more information, see [ASPIREACADOMAINS001](/diagnostics/aspireacadomains001/). -::: diff --git a/src/frontend/src/content/docs/deployment/kubernetes-gateway-aks.mdx b/src/frontend/src/content/docs/deployment/kubernetes-gateway-aks.mdx index 1ddefaf4e..42630e28b 100644 --- a/src/frontend/src/content/docs/deployment/kubernetes-gateway-aks.mdx +++ b/src/frontend/src/content/docs/deployment/kubernetes-gateway-aks.mdx @@ -806,6 +806,37 @@ If the certificate stays in a `Pending` state: ``` Look for `--enable-gateway-api-routes=true` in the args. If missing, upgrade the Helm release with `--set config.enableGatewayAPI=true`. +### Gateway has no routes configured + +If you deploy a Gateway that has no calls to `WithRoute(...)`, Aspire skips it +entirely — the Gateway, its routes, TLS certificate, and load-balancer +frontend are never created. `aspire deploy` logs a warning instead of +registering deployment steps for the skipped Gateway: + +```text +warn: Gateway 'public' has no routes configured. The Gateway, routes, TLS certificate, and load-balancer frontend will not be created. +``` + +Add at least one `WithRoute(...)` call to the Gateway so Aspire materializes +it. A route-less Gateway is intentionally excluded from deployment — earlier +versions of Aspire re-selected these Gateways at several points in the +deployment pipeline, which caused `aspire deploy` to poll `kubectl get gateway` +for up to 15 minutes waiting for an address that would never appear. + +If the Gateway is also annotated with a `clusterIssuer` via `WithTls(issuer)`, +you may additionally see: + +```text +warn: ClusterIssuer 'letsencrypt' has an HTTP-01 solver but no Gateway in environment 'env' is both annotated with + cert-manager.io/cluster-issuer=letsencrypt and configured with at least one route. cert-manager will not be able + to satisfy ACME challenges until at least one routed Gateway adopts this issuer (e.g. via WithRoute(...) and + WithTls(issuer)). +``` + +This means the `ClusterIssuer`'s HTTP-01 solver has no eligible Gateway to +attach to. Add `WithRoute(...)` to a Gateway that also calls `WithTls(issuer)` +with the same cluster issuer to resolve this. + ### Certificate order stuck in "errored" state If a cert-manager `Order` resource shows `state: errored`, delete the `Certificate` to trigger a fresh ACME flow: diff --git a/src/frontend/src/content/docs/deployment/kubernetes-ingress-aks.mdx b/src/frontend/src/content/docs/deployment/kubernetes-ingress-aks.mdx index 4bb91bb61..aaa507eac 100644 --- a/src/frontend/src/content/docs/deployment/kubernetes-ingress-aks.mdx +++ b/src/frontend/src/content/docs/deployment/kubernetes-ingress-aks.mdx @@ -896,6 +896,13 @@ If the certificate `READY` status remains `False`, check the following: +### Ingress has no paths configured + +If you deploy an Ingress that has no paths and no default backend configured, +Aspire skips it entirely — the Ingress and its TLS certificate are never +created, and no deployment steps run for it. Ensure the Ingress has at least +one path or a default backend so Aspire materializes it during deployment. + ### Browser showing HSTS redirect to HTTPS If your browser automatically redirects HTTP URLs to HTTPS even when you haven't diff --git a/src/frontend/src/content/docs/deployment/kubernetes.mdx b/src/frontend/src/content/docs/deployment/kubernetes.mdx index 1985873d1..003f03f72 100644 --- a/src/frontend/src/content/docs/deployment/kubernetes.mdx +++ b/src/frontend/src/content/docs/deployment/kubernetes.mdx @@ -50,6 +50,8 @@ When you publish or deploy, Aspire translates your application model into Kubern | Endpoints | Services | | Volumes | PersistentVolumes and PersistentVolumeClaims | +For durable storage that you model as first-class resources and bind to workloads, see [Persistent volumes on Kubernetes](/deployment/kubernetes/persistent-volumes/). + ## Publish vs deploy Both Kubernetes targets support `aspire publish`. The key difference is whether the target also supports `aspire deploy`: @@ -91,4 +93,9 @@ For more on the pipeline model and how publish and deploy relate, see [Pipelines description="Install pre-existing Helm charts alongside your application using AddHelmChart." href="/deployment/kubernetes/helm-charts/" /> + \ No newline at end of file diff --git a/src/frontend/src/content/docs/deployment/kubernetes/aks.mdx b/src/frontend/src/content/docs/deployment/kubernetes/aks.mdx index 3867dc3d6..ad5f28e41 100644 --- a/src/frontend/src/content/docs/deployment/kubernetes/aks.mdx +++ b/src/frontend/src/content/docs/deployment/kubernetes/aks.mdx @@ -568,12 +568,16 @@ See [Install external Helm charts](/deployment/kubernetes/helm-charts/) for a fu ### AKS cluster not reachable after deploy -After `aspire deploy` provisions the AKS cluster, your local `kubectl` context is configured automatically. If you can't reach the cluster, ensure your Azure CLI session is active and fetch credentials: +After `aspire deploy` provisions the AKS cluster, your local `kubectl` context is configured automatically. If you can't reach the cluster, ensure your Azure CLI session is active and then manually fetch the right credentials, pinning the request to the subscription you deployed to: ```bash title="Get AKS credentials" -az aks get-credentials --resource-group --name +az aks get-credentials --resource-group --name --subscription ``` + + ### Image pull failures If pods fail with `ImagePullBackOff`, verify that the AKS cluster has the correct role assignment to pull from the provisioned ACR: diff --git a/src/frontend/src/content/docs/deployment/kubernetes/clusters.mdx b/src/frontend/src/content/docs/deployment/kubernetes/clusters.mdx index 551ec65a3..511f48eed 100644 --- a/src/frontend/src/content/docs/deployment/kubernetes/clusters.mdx +++ b/src/frontend/src/content/docs/deployment/kubernetes/clusters.mdx @@ -350,6 +350,7 @@ See [Install external Helm charts](/deployment/kubernetes/helm-charts/) for a fu - [Kubernetes integration](/integrations/compute/kubernetes/) - [Deploy to AKS](/deployment/kubernetes/aks/) - [Install external Helm charts](/deployment/kubernetes/helm-charts/) +- [Persistent volumes on Kubernetes](/deployment/kubernetes/persistent-volumes/) - [Pipelines and app topology](/deployment/pipelines/) - [Publishing and deployment overview](/deployment/deploy-with-aspire/) - [Kubernetes documentation](https://kubernetes.io/docs/) diff --git a/src/frontend/src/content/docs/deployment/kubernetes/persistent-volumes.mdx b/src/frontend/src/content/docs/deployment/kubernetes/persistent-volumes.mdx new file mode 100644 index 000000000..29c922edb --- /dev/null +++ b/src/frontend/src/content/docs/deployment/kubernetes/persistent-volumes.mdx @@ -0,0 +1,332 @@ +--- +title: Persistent volumes on Kubernetes +seoTitle: 'Persistent volumes for Aspire on Kubernetes clusters' +description: Model durable storage as first-class persistent volume resources in your Aspire AppHost, then bind them to Kubernetes workloads with a storage class, capacity, and access modes. +--- + +import { Tabs, TabItem, Aside } from '@astrojs/starlight/components'; +import LearnMore from '@components/LearnMore.astro'; + +Stateful workloads — databases, message brokers, or any service that writes durable data — need storage that survives pod restarts and rescheduling. Call `AddPersistentVolume` on a Kubernetes environment to describe a durable disk once in your AppHost, configure its storage class, capacity, access modes, and annotations with fluent methods, then bind it to one or more workloads: + + + + +```csharp title="AppHost.cs" +var k8s = builder.AddKubernetesEnvironment("k8s"); + +var pgData = k8s.AddPersistentVolume("pg-data") + .WithStorageClass("managed-csi") + .WithCapacity("20Gi"); +``` + + + + + + +```typescript title="apphost.mts" +const k8s = await builder.addKubernetesEnvironment('k8s'); + +const pgData = await k8s.addPersistentVolume('pg-data'); +await pgData.withStorageClass('managed-csi'); +await pgData.withCapacity('20Gi'); +``` + + + + +At publish time, the volume renders as a `v1.PersistentVolumeClaim` in the generated Helm chart. Like [ingress and gateway resources](/deployment/kubernetes-ingress/), you configure the volume once and reference it from workloads, rather than relying on a single environment-wide storage shape for every mount. + +## Prerequisites + +The following prerequisites must be in place before you can use persistent volumes in a Kubernetes cluster: + +- The [Aspire.Hosting.Kubernetes](/integrations/compute/kubernetes/) hosting integration installed in your AppHost. +- A [Kubernetes environment](/integrations/compute/kubernetes/#add-kubernetes-environment) added to your AppHost. +- A cluster with a storage class that can provision the volumes you request. Most managed clusters ship a default storage class. + +## Add a persistent volume + +The full set of configuration methods lets you pin the storage class, capacity, access modes, and provisioner annotations. A complete AppHost that defines a volume looks like this: + + + + +```csharp title="AppHost.cs" +using Aspire.Hosting.Kubernetes; + +var builder = DistributedApplication.CreateBuilder(args); + +var k8s = builder.AddKubernetesEnvironment("k8s"); + +var pgData = k8s.AddPersistentVolume("pg-data") + .WithStorageClass("managed-csi") + .WithCapacity("20Gi") + .WithAccessMode(PersistentVolumeAccessMode.ReadWriteOnce) + .WithVolumeAnnotation("disk.csi.azure.com/skuName", "Premium_LRS"); + +builder.Build().Run(); +``` + + + + +```typescript title="apphost.mts" +import { createBuilder } from './.aspire/modules/aspire.mjs'; + +const builder = await createBuilder(); + +const k8s = await builder.addKubernetesEnvironment('k8s'); + +const pgData = await k8s.addPersistentVolume('pg-data'); +await pgData.withStorageClass('managed-csi'); +await pgData.withCapacity('20Gi'); +await pgData.withVolumeAnnotation('disk.csi.azure.com/skuName', 'Premium_LRS'); + +await builder.build().run(); +``` + + + + +Every configuration method is optional. When you don't set a storage class, the cluster's default storage class provisions the backing disk. When you don't set a capacity or access mode, the environment's default storage size and read-write policy apply. + +The available configuration methods are: + +| C# | TypeScript | Description | +|---|---|---| +| `WithStorageClass(string)` | `withStorageClass` / `withStorageClassParam` | Sets `spec.storageClassName` on the PVC. In C#, the single method accepts a literal string or an Aspire parameter; in TypeScript, use `withStorageClass` for a literal and `withStorageClassParam` for a parameter. | +| `WithCapacity(string)` | `withCapacity` / `withCapacityParam` | Sets the requested storage on `spec.resources.requests.storage` (for example, `"20Gi"`). In TypeScript, use `withCapacity` for a literal and `withCapacityParam` for a parameter. | +| `WithAccessMode(PersistentVolumeAccessMode)` | `withAccessMode` | Adds an entry to `spec.accessModes`. Call multiple times to declare more than one mode. | +| `WithVolumeAnnotation(string, string)` | `withVolumeAnnotation` / `withVolumeAnnotationParam` | Adds a key-value pair to the PVC's `metadata.annotations`. Useful for CSI driver hints, dynamic provisioner parameters, or backup tooling tags. In TypeScript, use `withVolumeAnnotation` for a literal value and `withVolumeAnnotationParam` for a parameter. | + +The `PersistentVolumeAccessMode` values map directly to the Kubernetes access modes: + +| Access mode | Description | +|---|---| +| `ReadWriteOnce` | Mounted as read-write by a single node. Most common for block-storage-backed databases. | +| `ReadOnlyMany` | Mounted as read-only by many nodes simultaneously. | +| `ReadWriteMany` | Mounted as read-write by many nodes simultaneously. Typically used for shared file stores such as Azure Files or NFS. | +| `ReadWriteOncePod` | Mounted as read-write by a single pod. Requires Kubernetes 1.27 or later. | + +## Bind a volume to a workload + +After defining a volume, bind it to the workloads that mount it. There are two overloads, depending on whether the workload already declares a named volume. + +### Bind by name + +Use the name-match overload when the workload already declares a volume — for example, through `WithVolume("name", "/path")` or an integration helper such as Postgres' `WithDataVolume()`. The persistent volume's name must match the workload volume's name so the publisher can route the pod's `volumes[]` entry through the generated PVC: + + + + +```csharp title="AppHost.cs" +var pgData = k8s.AddPersistentVolume("pg-data") + .WithStorageClass("managed-csi") + .WithCapacity("20Gi"); + +builder.AddPostgres("pg") + .WithDataVolume("pg-data") + .WithPersistentVolume(pgData); +``` + + + + +```typescript title="apphost.mts" +const pgData = await k8s.addPersistentVolume('pg-data'); +await pgData.withStorageClass('managed-csi'); +await pgData.withCapacity('20Gi'); + +const pg = await builder.addPostgres('pg'); +await pg.withDataVolume({ name: 'pg-data' }); +await pg.withKubernetesPersistentVolume(pgData); +``` + + + + +### Bind with a mount path + +Use the mount-path overload when the workload doesn't already declare a named volume. It creates the mount itself, so it works for projects and any compute resource. Pass the mount path inside the container, and optionally mount read-only: + + + + +```csharp title="AppHost.cs" +var media = k8s.AddPersistentVolume("media") + .WithStorageClass("azurefile-csi") + .WithCapacity("100Gi") + .WithAccessMode(PersistentVolumeAccessMode.ReadWriteMany); + +builder.AddProject("api") + .WithPersistentVolume(media, "/srv/media"); +``` + + + + +```typescript title="apphost.mts" +const media = await k8s.addPersistentVolume('media'); +await media.withStorageClass('azurefile-csi'); +await media.withCapacity('100Gi'); + +const api = await builder.addProject('api'); +await api.withKubernetesPersistentVolumeMount(media, '/srv/media'); +``` + + + + + + +## Default pod security context + +A Kubernetes access mode such as `ReadWriteOnce` controls how a volume can be attached and mounted; it doesn't grant the container's Linux process permission to write to the mounted filesystem. Without further configuration, a freshly provisioned volume is typically owned by `root:root`, so a workload that runs as a non-root user fails on its first write even though the PVC is `Bound` and the pod is `Running`. + + + +To avoid that out-of-the-box failure, both `WithPersistentVolume(...)` overloads — and their TypeScript equivalents, `withKubernetesPersistentVolume` and `withKubernetesPersistentVolumeMount` — add the following pod security context to the workload automatically: + +```yaml +securityContext: + fsGroup: 2000 + fsGroupChangePolicy: OnRootMismatch +``` + +`fsGroup` adds a supplemental group to the pod's processes and, for supported volume types, instructs Kubernetes or the CSI driver to make the mounted volume accessible to that group. It doesn't change the image-defined UID or primary GID, so Aspire doesn't need to know which identity the image uses. Aspire always uses the same group ID, `2000`, rather than choosing a new value on each deployment, because group ownership is persisted on the volume. `OnRootMismatch` avoids an unnecessary recursive ownership change when the volume already has the expected group. + +This default only applies to workloads bound through `WithPersistentVolume(...)`. Ordinary workloads and legacy PVC generation through the Kubernetes environment's default storage type are unaffected, and read-only mounts remain read-only. + +### Overriding or removing the default + +The default security context is applied before any `PublishAsKubernetesService` callback runs, so a workload or cluster that needs a different group can replace it: + + + + +```csharp title="AppHost.cs" +using Aspire.Hosting.Kubernetes.Resources; + +builder.AddProject("api") + .WithPersistentVolume(media, "/srv/media") + .PublishAsKubernetesService(resource => + { + var statefulSet = (StatefulSet)resource.Workload!; + var podSpec = statefulSet.Spec.Template.Spec; + + podSpec.SecurityContext ??= new(); + podSpec.SecurityContext.FsGroup = 3000; + }); +``` + + + + +The TypeScript AppHost API supports `publishAsKubernetesService`, but its `KubernetesResource` callback doesn't currently expose the generated workload or pod spec. It can't override the generated `fsGroup` from the AppHost. + + + + +The generated `OnRootMismatch` change policy is retained unless the callback also replaces it. + +To remove the generated pod security context entirely — for example, when ownership is managed by the image, an admission controller, or storage-specific configuration — set it to `null` in the same callback: + + + + +```csharp title="AppHost.cs" +using Aspire.Hosting.Kubernetes.Resources; + +builder.AddProject("api") + .WithPersistentVolume(media, "/srv/media") + .PublishAsKubernetesService(resource => + { + var statefulSet = (StatefulSet)resource.Workload!; + statefulSet.Spec.Template.Spec.SecurityContext = null; + }); +``` + + + + +The TypeScript AppHost API supports `publishAsKubernetesService`, but its `KubernetesResource` callback doesn't currently expose the generated workload or pod spec. It can't remove the generated pod security context from the AppHost. + + + + + + +## Unbound volumes and default storage + +Volumes on a workload that aren't bound to a `KubernetesPersistentVolumeResource` continue to use the environment's default storage type. You can mix a first-class persistent volume and an unbound ephemeral volume on the same workload — each is resolved independently at publish time. + +## Generated output + +Binding a container to a persistent volume by name produces a `StatefulSet` whose pod spec references the generated claim, alongside the `PersistentVolumeClaim` itself: + +```yaml title="StatefulSet (excerpt)" +apiVersion: "apps/v1" +kind: "StatefulSet" +metadata: + name: "service-statefulset" +spec: + template: + spec: + containers: + - image: "nginx:latest" + name: "service" + volumeMounts: + - name: "data" + mountPath: "/var/lib/data" + volumes: + - name: "data" + persistentVolumeClaim: + claimName: "data" + securityContext: + fsGroup: 2000 + fsGroupChangePolicy: "OnRootMismatch" + replicas: 1 +``` + +```yaml title="PersistentVolumeClaim" +apiVersion: "v1" +kind: "PersistentVolumeClaim" +metadata: + name: "data" + annotations: + volume.beta.kubernetes.io/storage-provisioner: "disk.csi.azure.com" +spec: + storageClassName: "managed-csi" + accessModes: + - "ReadWriteOnce" + resources: + requests: + storage: "20Gi" +``` + + + To generate and inspect the Helm chart for yourself, see [Deploy to Kubernetes clusters](/deployment/kubernetes/clusters/). + + +## Persistent volumes on AKS + +`AddPersistentVolume` is also available directly on an [Azure Kubernetes Service (AKS) environment](/integrations/cloud/azure/aks/#add-a-persistent-volume), so you don't need to reach through to the underlying Kubernetes environment when targeting AKS. The AKS overload forwards to the same publisher described on this page, and uses the same configuration and binding APIs. + +## See also + +- [Kubernetes integration](/integrations/compute/kubernetes/) +- [Deploy to Kubernetes clusters](/deployment/kubernetes/clusters/) +- [Deploy to AKS](/deployment/kubernetes/aks/) +- [Azure Kubernetes Service (AKS) integration](/integrations/cloud/azure/aks/) +- [Persist data with volumes](/fundamentals/persist-data-volumes/) +- [Kubernetes persistent volumes documentation](https://kubernetes.io/docs/concepts/storage/persistent-volumes/) diff --git a/src/frontend/src/content/docs/diagnostics/aspire009.mdx b/src/frontend/src/content/docs/diagnostics/aspire009.mdx new file mode 100644 index 000000000..d8c46fa66 --- /dev/null +++ b/src/frontend/src/content/docs/diagnostics/aspire009.mdx @@ -0,0 +1,53 @@ +--- +title: Compiler Error ASPIRE009 +seoTitle: 'ASPIRE009: The Aspire CLI bundle could not be resolved · Aspire' +description: Learn what causes Aspire compiler error ASPIRE009 — the AppHost is configured to use the Aspire CLI bundle, but the bundle could not be resolved — and how to fix it. +--- + +import { Badge } from '@astrojs/starlight/components'; + + + +> '[ProjectName]' is configured to use the Aspire CLI bundle, but the bundle could not be resolved. + +This diagnostic error is reported when an AppHost project opts in to the Aspire CLI bundle (`AspireUseCliBundle=true`) but the SDK can't resolve a usable bundle layout for the developer control plane (DCP) and the Aspire Dashboard. + +When neither `AspireCliPath` nor `AspireCliBundlePath` is set, a usable `dnx` host can resolve or prepare the required bundle layout through the selected Aspire CLI package. Therefore, a missing `aspire` command alone doesn't cause `ASPIRE009`. Explicit paths are authoritative: an invalid `AspireCliPath` or `AspireCliBundlePath` causes `ASPIRE009` even when `dnx` is available. + +## Example + +The following configuration produces `ASPIRE009` when the specified directory isn't a valid Aspire CLI bundle layout: + +```xml title="MyApp.AppHost.csproj" + + true + /path/to/missing-or-invalid/bundle + +``` + +## To correct this error + +If you set `AspireCliPath` or `AspireCliBundlePath`, correct or remove the invalid property: + +```xml title="MyApp.AppHost.csproj" {3-4} + + true + + /usr/local/bin/aspire + + + +``` + +When no explicit path is set, either [install the Aspire CLI](https://get.aspire.dev) so `aspire` and its bundle are available, or install and use .NET SDK 10.0 or later so a usable `dnx` host can run the Aspire CLI package selected by the invocation mode. + +If `Dnx` or `DnxPinned` mode can't find `dnx`, the run preflight reports [`ASPIRE011`](/diagnostics/aspire011/). A missing `dnx` command isn't itself an `ASPIRE009` condition, although a separate bundle-resolution failure can still produce `ASPIRE009`. + +Alternatively, set `AspireUseCliBundle` to `false` to restore orchestration dependencies from NuGet packages. Doing so reports [`ASPIRE010`](/diagnostics/aspire010/) because some Aspire features require the CLI bundle. + +For more information, see [Use the Aspire CLI bundle for orchestration dependencies](/get-started/aspire-sdk/#use-the-aspire-cli-bundle-for-orchestration-dependencies). diff --git a/src/frontend/src/content/docs/diagnostics/aspire010.mdx b/src/frontend/src/content/docs/diagnostics/aspire010.mdx new file mode 100644 index 000000000..f99552d71 --- /dev/null +++ b/src/frontend/src/content/docs/diagnostics/aspire010.mdx @@ -0,0 +1,55 @@ +--- +title: Compiler Warning ASPIRE010 +seoTitle: 'ASPIRE010: Aspire CLI bundle opt-out warning · Aspire' +description: Learn what causes Aspire compiler warning ASPIRE010 — the AppHost has opted out of the Aspire CLI bundle — and how to enable or suppress it. +--- + +import { Badge } from '@astrojs/starlight/components'; + + + +> '[ProjectName]' is configured with AspireUseCliBundle=false. Some Aspire features require the Aspire CLI bundle. Set AspireUseCliBundle=true to enable those features, or suppress ASPIRE010 to continue without the bundle. See https://aka.ms/aspire/diagnostics/aspire010 for more information. + +This diagnostic warning is reported when an AppHost project has `AspireUseCliBundle` set to `false` (the default). Launching the AppHost directly with `dotnet run` or an IDE continues to work without the Aspire CLI, but features that depend on the CLI bundle — such as resolving DCP and the Aspire Dashboard from the installed Aspire CLI instead of NuGet packages — remain unavailable. + +## Example + +The following configuration produces `ASPIRE010`: + +```xml title="MyApp.AppHost.csproj" + + false + +``` + +`ASPIRE010` is also reported when `AspireUseCliBundle` isn't set at all, because `false` is the default. + +## To correct this warning + +Set `AspireUseCliBundle` to `true` to opt in to CLI bundle delegation: + +```xml title="MyApp.AppHost.csproj" + + true + +``` + +When you opt in, an explicit `AspireCliPath` is authoritative. Otherwise, the default `Path` invocation mode selects a compatible `aspire` on `PATH`, with the SDK-paired Aspire CLI package through DNX as a fallback. Setting `AspireCliInvocationMode=Dnx` selects the unversioned package through DNX so a tool manifest can apply, while `DnxPinned` selects the version paired with the AppHost SDK. `AspireCliBundlePath` is a bundle-layout input, not an executable invocation candidate. + +An unresolved bundle layout reports [`ASPIRE009`](/diagnostics/aspire009/). [`ASPIRE011`](/diagnostics/aspire011/) is limited to the run preflight when `Dnx` or `DnxPinned` mode can't find `dnx`; it doesn't represent every CLI resolution failure. + +If you intend to keep using NuGet-restored orchestration dependencies, suppress `ASPIRE010`: + +```xml title="MyApp.AppHost.csproj" + + false + $(NoWarn);ASPIRE010 + +``` + +For more information, see [Use the Aspire CLI bundle for orchestration dependencies](/get-started/aspire-sdk/#use-the-aspire-cli-bundle-for-orchestration-dependencies). diff --git a/src/frontend/src/content/docs/diagnostics/aspire011.mdx b/src/frontend/src/content/docs/diagnostics/aspire011.mdx new file mode 100644 index 000000000..960833676 --- /dev/null +++ b/src/frontend/src/content/docs/diagnostics/aspire011.mdx @@ -0,0 +1,58 @@ +--- +title: Compiler Error ASPIRE011 +seoTitle: 'ASPIRE011: DNX command not found on PATH · Aspire' +description: Learn what causes Aspire compiler error ASPIRE011 when Dnx or DnxPinned mode can't find the dnx command, and how to correct it. +--- + +import { Badge } from '@astrojs/starlight/components'; + + + +> '[ProjectName]' is configured to invoke the Aspire CLI through DNX, but the dnx command could not be found on PATH. + +This diagnostic error is reported during run preflight when an AppHost project sets `AspireCliInvocationMode` to `Dnx` or `DnxPinned` but a usable `dnx` command can't be resolved on `PATH`. The emitted error identifies the configured mode. A regular build doesn't emit `ASPIRE011` because the SDK checks forced DNX availability when it prepares the run command. + +## Example + +The following configuration produces `ASPIRE011` when `dnx` isn't installed or isn't on `PATH`. Using `DnxPinned` instead produces the same diagnostic: + +```xml title="MyApp.AppHost.csproj" + + true + Dnx + +``` + +## To correct this error + +Use one of the following remedies: + +1. Install or use .NET SDK 10.0 or later, which provides `dnx`. +2. Set `AspireCliInvocationMode` to `Path` to use a global `aspire` command: + + ```xml title="MyApp.AppHost.csproj" + + true + Path + + ``` + +3. Set `AspireCliPath` to an explicit Aspire CLI executable: + + ```xml title="MyApp.AppHost.csproj" + + true + /usr/local/bin/aspire + + ``` + +Removing `AspireCliInvocationMode` is equivalent to the default `Path` behavior. An explicit `AspireCliPath` remains authoritative even when `AspireCliInvocationMode` is set to `Dnx` or `DnxPinned`. + +Both modes invoke DNX noninteractively. `Dnx` uses `dnx --yes aspire.cli -- ...`, allowing an in-scope tool manifest to select the package or DNX to use the latest package when no manifest applies. `DnxPinned` uses `dnx --yes aspire.cli@$(AspireHostingSDKVersion) -- ...` to select the version paired with the AppHost SDK. If DNX is found but can't restore, probe, or run the selected package, the launch fails with a separate error; `ASPIRE011` only indicates that a forced DNX mode couldn't find a usable `dnx` command. + +For more information, see [Use the Aspire CLI bundle for orchestration dependencies](/get-started/aspire-sdk/#use-the-aspire-cli-bundle-for-orchestration-dependencies). diff --git a/src/frontend/src/content/docs/diagnostics/aspireacadomains001.mdx b/src/frontend/src/content/docs/diagnostics/aspireacadomains001.mdx index 7f35251dc..44d4ed331 100644 --- a/src/frontend/src/content/docs/diagnostics/aspireacadomains001.mdx +++ b/src/frontend/src/content/docs/diagnostics/aspireacadomains001.mdx @@ -1,6 +1,6 @@ --- title: Compiler Error ASPIREACADOMAINS001 -seoTitle: "ASPIREACADOMAINS001: ConfigureCustomDomain is for evaluation" +seoTitle: 'ASPIREACADOMAINS001 before Aspire 13.5' description: Learn what causes the Aspire compiler error ASPIREACADOMAINS001 and how to fix it so your AppHost builds cleanly. --- @@ -13,7 +13,7 @@ import { Badge } from '@astrojs/starlight/components'; class:list={'mb-1'} /> -> ConfigureCustomDomain is for evaluation purposes only and is subject to change or removal in future updates. Suppress this diagnostic to proceed. +> Before Aspire 13.5, ConfigureCustomDomain was experimental and subject to change or removal in future updates, and using it required suppressing this diagnostic. Aspire 9.0 introduces the ability to customize container app resources using any of the following extension methods: @@ -23,11 +23,13 @@ Aspire 9.0 introduces the ability to customize container app resources using any When you use one of these methods, the Azure Developer CLI (`azd`) can no longer preserve custom domains. Instead use the `Aspire.Hosting.ContainerAppExtensions.ConfigureCustomDomain` method to configure a custom domain within the Aspire AppHost. -However, `app.ConfigureCustomDomain` is an experimental API and you must suppress it to use it. +:::note +`ConfigureCustomDomain` has graduated from experimental and no longer requires suppressing this diagnostic. +::: ## Example -The following code generates `ASPIREACADOMAINS001`: +Before Aspire 13.5, the following code generated `ASPIREACADOMAINS001`: ```csharp title="AppHost.cs" var customDomain = builder.AddParameter("customDomain"); @@ -43,7 +45,9 @@ builder.AddProject("api") ## To correct this error -Suppress the error with either of the following methods: +If you use Aspire 13.5 or later, you don't need to suppress this diagnostic and can remove any existing `ASPIREACADOMAINS001` suppressions. + +If you use an Aspire version earlier than 13.5, suppress the diagnostic with one of the following methods: - Set the severity of the rule in the _.editorconfig_ file. diff --git a/src/frontend/src/content/docs/diagnostics/aspireacanaming002.mdx b/src/frontend/src/content/docs/diagnostics/aspireacanaming002.mdx new file mode 100644 index 000000000..a0e47f299 --- /dev/null +++ b/src/frontend/src/content/docs/diagnostics/aspireacanaming002.mdx @@ -0,0 +1,50 @@ +--- +title: Compiler Error ASPIREACANAMING002 +seoTitle: "ASPIREACANAMING002: WithUniqueResourceNaming is for evaluation" +description: Learn what causes the Aspire compiler error ASPIREACANAMING002 and how to fix it so your AppHost builds cleanly. +--- + +import { Badge } from '@astrojs/starlight/components'; + + + +> WithUniqueResourceNaming is for evaluation purposes only and is subject to change or removal in future updates. Suppress this diagnostic to proceed. + +## Example + +The following code generates `ASPIREACANAMING002`: + +```csharp title="AppHost.cs" +var builder = DistributedApplication.CreateBuilder(args); + +var env1 = builder.AddAzureContainerAppEnvironment("cae1") + .WithUniqueResourceNaming(); +``` + +## To correct this error + +Suppress the error with either of the following methods: + +- Set the severity of the rule in the _.editorconfig_ file. + + ```ini title=".editorconfig" + [*.{cs,vb}] + dotnet_diagnostic.ASPIREACANAMING002.severity = none + ``` + + For more information about editor config files, see [Configuration files for code analysis rules](/diagnostics/overview/#suppress-in-the-editorconfig-file). + +- Add the following `PropertyGroup` to your project file: + + ```xml title="C# project file" + + $(NoWarn);ASPIREACANAMING002 + + ``` + +- Suppress in code with the `#pragma warning disable ASPIREACANAMING002` directive. diff --git a/src/frontend/src/content/docs/diagnostics/aspireextension001.mdx b/src/frontend/src/content/docs/diagnostics/aspireextension001.mdx index 7a617ee92..b34745ecf 100644 --- a/src/frontend/src/content/docs/diagnostics/aspireextension001.mdx +++ b/src/frontend/src/content/docs/diagnostics/aspireextension001.mdx @@ -19,8 +19,13 @@ This diagnostic warning is reported when using experimental extension debugging - `WithDebugSupport` extension method - `SupportsDebuggingAnnotation` +- `DebugSupportExtensions.SupportsDebugging` and `DebugSupportExtensions.CreateLaunchConfigurationAsync` +- `ExecutableLaunchConfiguration`, `ProjectLaunchConfiguration`, `ExecutableLaunchMode`, and `KnownLaunchConfigurationTypes` +- `WithLaunchToolArgs` extension method -These APIs are primarily used by integration authors to enable F5 debugging for custom resource types in Visual Studio and other IDEs. +These APIs are primarily used by integration authors to enable F5 debugging for custom resource types in Visual Studio and other IDEs. + +`WithLaunchToolArgs` declares the tool-invocation prefix for the tool that hosts a program (for example `run ./cmd/api` for `go` launcher/CLI, or `-m flask` for `python` CLI), separating it from program-specific arguments a caller adds with `WithArgs`. This allows extensions and IDEs to vary host tool arguments as necessary to reach the desired execution mode of the program (e.g. running under debugger vs not, enabling or disabling profiling etc.) without affecting startup arguments the program sees itself. ## Example diff --git a/src/frontend/src/content/docs/diagnostics/aspirepersistence001.mdx b/src/frontend/src/content/docs/diagnostics/aspirepersistence001.mdx new file mode 100644 index 000000000..5b5044e51 --- /dev/null +++ b/src/frontend/src/content/docs/diagnostics/aspirepersistence001.mdx @@ -0,0 +1,80 @@ +--- +title: Compiler Error ASPIREPERSISTENCE001 +seoTitle: 'ASPIREPERSISTENCE001: Experimental resource lifetime APIs' +description: Learn what causes the Aspire compiler error ASPIREPERSISTENCE001 and how to suppress it when using experimental resource lifetime APIs. +--- + +import { Badge } from '@astrojs/starlight/components'; + + + +> Resource lifetime types and members are for evaluation purposes only and are subject to change or removal in future updates. Suppress this diagnostic to proceed. + +This diagnostic error is reported when a C# AppHost uses the experimental shared resource lifetime APIs. These APIs configure session, persistent, parent-process, and resource-scoped lifetimes across supported resources. + +The following APIs and types are protected by this diagnostic: + +- `WithSessionLifetime` +- `WithPersistentLifetime` +- `WithParentProcessLifetime` +- `WithLifetimeOf` +- `PersistenceAnnotation` +- `PersistenceMode` + +## Example + +The following code generates `ASPIREPERSISTENCE001`: + +```csharp title="AppHost.cs" +var builder = DistributedApplication.CreateBuilder(args); + +var worker = builder.AddExecutable("worker", "node", "../worker", "server.js") + .WithPersistentLifetime(); + +builder.Build().Run(); +``` + +## To correct this error + +Suppress the diagnostic when you intentionally opt in to the experimental shared lifetime APIs. For container resources, you can instead use the supported container-specific `WithLifetime(ContainerLifetime.Persistent)` and `WithLifetime(ContainerLifetime.Session)` APIs. + +Suppress the error with one of the following methods: + +- Set the severity of the rule in the _.editorconfig_ file. + + ```ini title=".editorconfig" + [*.{cs,vb}] + dotnet_diagnostic.ASPIREPERSISTENCE001.severity = none + ``` + + For more information about editor config files, see [Configuration files for code analysis rules](/diagnostics/overview/#suppress-in-the-editorconfig-file). + +- Add the following `PropertyGroup` to your project file: + + ```xml title="C# project file" + + $(NoWarn);ASPIREPERSISTENCE001 + + ``` + +- Suppress the diagnostic in code with the `#pragma warning disable ASPIREPERSISTENCE001` directive: + + ```csharp title="AppHost.cs" + var builder = DistributedApplication.CreateBuilder(args); + + #pragma warning disable ASPIREPERSISTENCE001 + var worker = builder.AddExecutable("worker", "node", "../worker", "server.js") + .WithPersistentLifetime(); + #pragma warning restore ASPIREPERSISTENCE001 + + builder.Build().Run(); + ``` + +## See also + +- [Configure resource lifetimes](/app-host/resource-lifetimes/) diff --git a/src/frontend/src/content/docs/diagnostics/aspirepipelines001.mdx b/src/frontend/src/content/docs/diagnostics/aspirepipelines001.mdx index 43453e487..eccee9703 100644 --- a/src/frontend/src/content/docs/diagnostics/aspirepipelines001.mdx +++ b/src/frontend/src/content/docs/diagnostics/aspirepipelines001.mdx @@ -1,6 +1,6 @@ --- title: Compiler Error ASPIREPIPELINES001 -seoTitle: "ASPIREPIPELINES001: Pipeline infrastructure APIs are for" +seoTitle: 'ASPIREPIPELINES001: Pipeline infrastructure APIs are for' description: Learn what causes the Aspire compiler error ASPIREPIPELINES001 and how to fix it so your AppHost builds cleanly. --- @@ -26,11 +26,14 @@ This diagnostic applies to the following pipeline infrastructure APIs: - `IPipelineActivityReporter` - Interface for reporting pipeline activities - `IReportingStep` - Interface for managing pipeline steps - `IReportingTask` - Interface for managing tasks within a step -- `CompletionState` - Enumeration for tracking completion status - `PublishingContext` - Context for publishing operations - `PublishingCallbackAnnotation` - Annotation for publishing callbacks - Related extension methods and implementations +:::note +In Aspire 13.5, only the `CompletionState` enumeration graduated from experimental and no longer triggers this diagnostic. The other APIs listed above remain experimental and continue to require suppressing `ASPIREPIPELINES001`. +::: + ## To correct this error Suppress the error with one of the following methods: diff --git a/src/frontend/src/content/docs/diagnostics/aspireprojects001.mdx b/src/frontend/src/content/docs/diagnostics/aspireprojects001.mdx new file mode 100644 index 000000000..c0552d53c --- /dev/null +++ b/src/frontend/src/content/docs/diagnostics/aspireprojects001.mdx @@ -0,0 +1,62 @@ +--- +title: Compiler Warning ASPIREPROJECTS001 +seoTitle: "ASPIREPROJECTS001: Project launch defaults APIs are for" +description: Learn what causes the Aspire compiler warning ASPIREPROJECTS001 and how to fix it so your AppHost builds cleanly. +--- + +import { Badge } from '@astrojs/starlight/components'; + + + +> Project launch defaults types and members are for evaluation purposes only and are subject to change or removal in future updates. Suppress this diagnostic to proceed. + +This diagnostic warning is reported when using experimental project launch defaults APIs in Aspire, including: + +- `WithProjectDefaults` extension method +- `ProjectLaunchDefaultsAnnotation` +- `ProjectLaunchArgsOverrideAnnotation` + +These APIs let a resource opt into the same launch-profile, Kestrel endpoint, and `ASPNETCORE_URLS` wiring that Aspire applies to `AddProject` resources. The resource must carry `IProjectMetadata`. They exist primarily so language integration packages (such as `Aspire.Hosting.Dotnet`) can reuse this behavior for resources that are launched through the .NET SDK. + +## Example + +The following code generates `ASPIREPROJECTS001`: + +```csharp title="AppHost.cs" +var builder = DistributedApplication.CreateBuilder(args); +var options = new ProjectResourceOptions(); + +builder.AddResource(new MyDotnetResource("resource")) + .WithProjectDefaults(options); +``` + +## To correct this warning + +Suppress the warning with either of the following methods: + +- Set the severity of the rule in the _.editorconfig_ file. + + ```ini title=".editorconfig" + [*.{cs,vb}] + dotnet_diagnostic.ASPIREPROJECTS001.severity = none + ``` + + For more information about editor config files, see [Configuration files for code analysis rules](/diagnostics/overview/#suppress-in-the-editorconfig-file). + +- Add the following `PropertyGroup` to your project file: + + ```xml title="C# project file" + + $(NoWarn);ASPIREPROJECTS001 + + ``` + +## See also + +- [ASPIREEXTENSION001](/diagnostics/aspireextension001/) - Related experimental debug support APIs +- [Custom hosting integrations](/integrations/custom-integrations/hosting-integrations/) - Learn about creating custom integrations diff --git a/src/frontend/src/content/docs/diagnostics/aspirewatch001.mdx b/src/frontend/src/content/docs/diagnostics/aspirewatch001.mdx new file mode 100644 index 000000000..b7c2c7bc1 --- /dev/null +++ b/src/frontend/src/content/docs/diagnostics/aspirewatch001.mdx @@ -0,0 +1,85 @@ +--- +title: Compiler Warning ASPIREWATCH001 +seoTitle: "ASPIREWATCH001: Experimental run mode configuration APIs" +description: Learn what causes the Aspire compiler warning ASPIREWATCH001 and how to fix it so your AppHost builds cleanly. +--- + +import { Badge } from '@astrojs/starlight/components'; + + + +> Run mode configuration types and members are for evaluation purposes only and are subject to change or removal in future updates. Suppress this diagnostic to proceed. + +This diagnostic warning is reported when using experimental run mode configuration APIs in Aspire, including: + +- `RunConfiguration` class +- `DistributedApplicationExecutionContext.RunConfiguration` property +- `DistributedApplicationExecutionContextOptions.RunConfiguration` property + +These APIs let integrations vary how their resources are launched based on the kind of run being performed, without changing the core hosting behavior. In publish mode, every property on `RunConfiguration` holds its default value. + +## Example + +The following code generates `ASPIREWATCH001`: + +```csharp title="Reading run mode configuration" +var builder = DistributedApplication.CreateBuilder(args); + +if (builder.ExecutionContext.IsRunMode) +{ + var runConfiguration = builder.ExecutionContext.RunConfiguration; + + if (runConfiguration.WatchEnabled) + { + // Launch resources so source changes are hot-reloaded. + } +} + +builder.Build().Run(); +``` + +## Understanding run mode configuration + +`RunConfiguration` holds settings that only apply when the AppHost is running in [run mode](/app-host/resource-lifetimes/) (as opposed to publish mode). Integrations use it to vary how their resources are launched without changing the core hosting behavior. + +### `WatchEnabled` + +Indicates that resources should start in watch mode if able. Integrations that support watch can launch their resources so that source changes are hot-reloaded. This is a hint: integrations that cannot watch their resources should start them in the normal fashion. + +## To suppress this warning + +Suppress the warning with either of the following methods: + +- Set the severity of the rule in the _.editorconfig_ file. + + ```ini title=".editorconfig" + [*.{cs,vb}] + dotnet_diagnostic.ASPIREWATCH001.severity = none + ``` + + For more information about editor config files, see [Configuration files for code analysis rules](/diagnostics/overview/#suppress-in-the-editorconfig-file). + +- Add the following `PropertyGroup` to your project file: + + ```xml title="C# project file" + + $(NoWarn);ASPIREWATCH001 + + ``` + +- Suppress in code with the `#pragma warning disable ASPIREWATCH001` directive: + + ```csharp title="Suppressing the warning" + var builder = DistributedApplication.CreateBuilder(args); + + #pragma warning disable ASPIREWATCH001 + var runConfiguration = builder.ExecutionContext.RunConfiguration; + #pragma warning restore ASPIREWATCH001 + + builder.Build().Run(); + ``` diff --git a/src/frontend/src/content/docs/diagnostics/overview.mdx b/src/frontend/src/content/docs/diagnostics/overview.mdx index 28bebfe39..0c10e85f8 100644 --- a/src/frontend/src/content/docs/diagnostics/overview.mdx +++ b/src/frontend/src/content/docs/diagnostics/overview.mdx @@ -15,6 +15,9 @@ The following table lists the possible MSBuild and analyzer warnings and errors | [ASPIRE006](/diagnostics/aspire006/) | (Experimental) Error | Application model items must have valid names. | | [ASPIRE007](/diagnostics/aspire007/) | Error | 'Project' requires a reference to "Aspire.AppHost.Sdk" with version "9.0.0" or greater to work correctly. | | [ASPIRE008](/diagnostics/aspire008/) | Error | 'Project' requires GenerateAssemblyInfo to be enabled for the AppHost to function correctly. | +| [ASPIRE009](/diagnostics/aspire009/) | Error | 'Project' is configured to use the Aspire CLI bundle, but the bundle could not be resolved. | +| [ASPIRE010](/diagnostics/aspire010/) | Warning | 'Project' is configured with AspireUseCliBundle=false. Some Aspire features require the Aspire CLI bundle. | +| [ASPIRE011](/diagnostics/aspire011/) | Error | 'Project' is configured to invoke the Aspire CLI through DNX, but the dnx command could not be found on PATH. | | [ASPIREACADOMAINS001](/diagnostics/aspireacadomains001/) | (Experimental) Error | `ConfigureCustomDomain` is for evaluation purposes only and is subject to change or removal in future updates. | | [ASPIREEXPORT001](/diagnostics/aspireexport001/) | Error | `[AspireExport]` method must be static. | | [ASPIREEXPORT002](/diagnostics/aspireexport002/) | Error | Invalid export ID format (must match `[a-zA-Z][a-zA-Z0-9.]*`). | @@ -48,6 +51,7 @@ The following table lists the possible MSBuild and analyzer warnings and errors | [ASPIREJAVASCRIPT001](/diagnostics/aspirejavascript001/) | (Experimental) Warning | JavaScript hosting and publishing APIs are for evaluation purposes only and are subject to change or removal in future updates. | | [ASPIREHOSTINGPYTHON001](/diagnostics/aspirehostingpython001/) | (Experimental) Error | `AddPythonApp` is for evaluation purposes only and is subject to change or removal in future updates. | | [ASPIREMCP001](/diagnostics/aspiremcp001/) | (Experimental) Warning | MCP server types and members are for evaluation purposes only and are subject to change or removal in future updates. | +| [ASPIREPERSISTENCE001](/diagnostics/aspirepersistence001/) | (Experimental) Error | Resource lifetime types and members are for evaluation purposes only and are subject to change or removal in future updates. | | [ASPIREPIPELINES001](/diagnostics/aspirepipelines001/) | (Experimental) Error | Pipeline infrastructure APIs are for evaluation purposes only and are subject to change or removal in future updates. | | [ASPIREPIPELINES002](/diagnostics/aspirepipelines002/) | (Experimental) Error | Deployment state manager APIs are for evaluation purposes only and are subject to change or removal in future updates. | | [ASPIREPIPELINES003](/diagnostics/aspirepipelines003/) | (Experimental) Error | Container image build APIs are for evaluation purposes only and are subject to change or removal in future updates. | @@ -55,9 +59,11 @@ The following table lists the possible MSBuild and analyzer warnings and errors | [ASPIREPOSTGRES001](/diagnostics/aspirepostgres001/) | (Experimental) Warning | PostgreSQL MCP integration is for evaluation purposes only and is subject to change or removal in future updates. | | [ASPIREPROBES001](/diagnostics/aspireprobes001/) | (Experimental) Warning | Probe-related types and members are for evaluation purposes only and are subject to change or removal in future updates. | | [ASPIREPROCESSCOMMAND001](/diagnostics/aspireprocesscommand001/) | (Experimental) Warning | Process command types and members are for evaluation purposes only and are subject to change or removal in future updates. | +| [ASPIREPROJECTS001](/diagnostics/aspireprojects001/) | (Experimental) Warning | Project launch defaults types and members are for evaluation purposes only and are subject to change or removal in future updates. | | [ASPIREPROXYENDPOINTS001](/diagnostics/aspireproxyendpoints001/) | (Experimental) Error | ProxyEndpoint members are for evaluation purposes only and are subject to change or removal in future updates. | | [ASPIREPUBLISHERS001](/diagnostics/aspirepublishers001/) | Error | Publishers are for evaluation purposes only and are subject to change or removal in future updates. | | [ASPIREUSERSECRETS001](/diagnostics/aspireusersecrets001/) | (Experimental) Warning | Type is for evaluation purposes only and is subject to change or removal in future updates. | +| [ASPIREWATCH001](/diagnostics/aspirewatch001/) | (Experimental) Warning | Run mode configuration types and members are for evaluation purposes only and are subject to change or removal in future updates. | ## Suppress diagnostic diff --git a/src/frontend/src/content/docs/docs.mdx b/src/frontend/src/content/docs/docs.mdx index 5699aa0c2..77e85dbae 100644 --- a/src/frontend/src/content/docs/docs.mdx +++ b/src/frontend/src/content/docs/docs.mdx @@ -4,10 +4,10 @@ prev: false next: link: /integrations/ label: Integrations -description: "Browse the official Aspire documentation: get started with C# and TypeScript AppHosts, model distributed apps, deploy to Azure and Kubernetes, and observe in the dashboard." +description: 'Browse the official Aspire documentation: get started with C# and TypeScript AppHosts, model distributed apps, deploy to Azure and Kubernetes, and observe in the dashboard.' banner: content: | - 🆕 Aspire 13.4 is here!See what's new + ✨ Aspire 13.5 is available!Explore the latest features and improvements bannerAutoDismissAfterDays: 14 editUrl: false tableOfContents: false @@ -25,7 +25,10 @@ import aspireLogo from '@assets/aspire-logo-256.svg'; highlight="for your stack." subtitle="Aspire is a code-first orchestration and observability layer for distributed applications. Start with the path that matches your repo, runtime, or workflow." logo={aspireLogo} - primaryCta={{ label: 'Build your first app', href: '/get-started/first-app/' }} + primaryCta={{ + label: 'Build your first app', + href: '/get-started/first-app/', + }} secondaryCta={{ label: 'What is Aspire?', href: '/get-started/what-is-aspire/', diff --git a/src/frontend/src/content/docs/es/index.mdx b/src/frontend/src/content/docs/es/index.mdx index 8737f5b99..876e7aee7 100644 --- a/src/frontend/src/content/docs/es/index.mdx +++ b/src/frontend/src/content/docs/es/index.mdx @@ -11,7 +11,7 @@ prev: false next: false banner: content: | - 🚀 ¡Aspire 13.4 ha sido lanzado!Ver qué hay de nuevo en Aspire 13.4. + ✨ ¡Aspire 13.5 está disponible!Explora las últimas características y mejoras. bannerAutoDismissAfterDays: 14 hero: tagline: Tu stack, simplificado.

Orquesta frontends, APIs, contenedores y bases de datos sin esfuerzo—sin reescrituras, sin límites. Extiende Aspire para impulsar cualquier proyecto.

diff --git a/src/frontend/src/content/docs/extensibility/interaction-service.mdx b/src/frontend/src/content/docs/extensibility/interaction-service.mdx index 39210558f..23bb84f96 100644 --- a/src/frontend/src/content/docs/extensibility/interaction-service.mdx +++ b/src/frontend/src/content/docs/extensibility/interaction-service.mdx @@ -1,10 +1,10 @@ --- -title: Interaction service (Preview) -seoTitle: Aspire interaction service (Preview) for AppHost authors +title: Interaction service +seoTitle: Aspire interaction service for AppHost authors description: Use the Aspire interaction service to prompt users for input, request confirmation, and display messages from AppHost extensions, integrations, and custom resources. --- -import { Aside, Steps } from '@astrojs/starlight/components'; +import { Aside, Steps, Tabs, TabItem } from '@astrojs/starlight/components'; import { Image } from 'astro:assets'; import messageDialog from '@assets/extensibility/interaction-service-message-dialog.png'; import messageBar from '@assets/extensibility/interaction-service-message-bar.png'; @@ -13,7 +13,7 @@ import multipleInput from '@assets/extensibility/interaction-service-multiple-in import multipleInputFilled from '@assets/extensibility/interaction-service-multiple-input-filled.png'; import multipleInputLogs from '@assets/extensibility/interaction-service-multiple-input-logs.png'; -The interaction service (`Aspire.Hosting.IInteractionService`) allows you to prompt users for input, request confirmation, and display messages. The interaction service works in two different contexts: +The interaction service (`Aspire.Hosting.IInteractionService`) allows you to prompt users for input, request confirmation, and display messages. It works in two different contexts: - **Aspire dashboard**: When running `aspire run` or launching the AppHost directly, interactions appear as dialogs and notifications in the dashboard UI. - **Aspire CLI**: When running `aspire publish` or `aspire deploy`, interactions are prompted through the command-line interface. @@ -22,19 +22,19 @@ This is useful for scenarios where you need to gather information from the user - ## The interaction service API -The `IInteractionService` interface is retrieved from the `DistributedApplication` dependency injection container. `IInteractionService` can be injected into types created from DI or resolved from `IServiceProvider`, which is usually available on a context argument passed to events. +The `IInteractionService` interface provides methods for prompting users. In C#, it's retrieved from the dependency injection container. In TypeScript, it's resolved from the command context's service provider. Always check if the service is available before use — if you attempt to call a method when it's not available, an exception is thrown. For example, the interaction service isn't available when a command is triggered from the CLI. -When you request the interaction service, be sure to check if it's available for usage. If you attempt to use the interaction service when it's not available (`IInteractionService.IsAvailable` returns `false`), an exception is thrown. For example, the interaction service isn't available when a command is triggered from the CLI. + + -```csharp +```csharp title="AppHost.cs" var interactionService = serviceProvider.GetRequiredService(); if (interactionService.IsAvailable) { @@ -49,6 +49,27 @@ if (interactionService.IsAvailable) } ``` + + + +```typescript title="apphost.mts" +const interactionService = await context.services().getInteractionService(); + +if (await interactionService.isAvailable()) { + const result = await interactionService.promptConfirmation( + 'Delete confirmation', + 'Are you sure you want to delete the data?' + ); + + if (!result.canceled) { + // Run your resource/command logic. + } +} +``` + + + + The interaction service has several methods that you use to interact with users or display messages. The behavior of these methods depends on the execution context: - **Dashboard context** (`aspire run` or direct AppHost launch): Interactions appear as modal dialogs, notifications, and form inputs in the [Aspire dashboard web interface](/dashboard/overview/). @@ -56,16 +77,21 @@ The interaction service has several methods that you use to interact with users The following sections describe how to use these APIs effectively in both contexts: -| Method | Description | Contexts supported | -|--------|-------------|-------------------| -| `PromptMessageBoxAsync` | Displays a modal dialog box with a message and buttons for user interaction. | Dashboard only | -| `PromptNotificationAsync` | Displays a non-modal notification in the dashboard as a message bar. | Dashboard only | -| `PromptConfirmationAsync` | Displays a confirmation dialog with options for the user to confirm or cancel an action. | Dashboard only | -| `PromptInputAsync` | Prompts the user for a single input value, such as text or secret. | Dashboard, CLI | -| `PromptInputsAsync` | Prompts the user for multiple input values in a single dialog (dashboard) or sequentially (CLI). | Dashboard, CLI | +| Method | Description | Contexts supported | +| ------------------------- | --------------------------------------------------------------------------------------------------- | ------------------ | +| `PromptMessageBoxAsync` | Displays a modal dialog box with a message and buttons for user interaction. | Dashboard only | +| `PromptNotificationAsync` | Displays a non-modal notification in the dashboard as a message bar. | Dashboard only | +| `PromptConfirmationAsync` | Displays a confirmation dialog with options for the user to confirm or cancel an action. | Dashboard only | +| `PromptInputAsync` | Prompts the user for a single input value, such as text or secret. | Dashboard, CLI | +| `PromptInputsAsync` | Prompts the user for multiple input values in a single dialog (dashboard) or sequentially (CLI). | Dashboard, CLI | +| `PromptProgressAsync` | Displays a progress dialog with an indeterminate progress indicator during long-running operations. | Dashboard only | ## Where to use the interaction service @@ -117,6 +143,7 @@ builder ``` For CLI specific contexts, the interaction service is retrieved from either the `PublishingContext` or `PipelineStepContext` depending on the operation being performed. + ## Display messages @@ -127,14 +154,20 @@ There are several ways to display messages to the user: - **Notification messages**: Display less critical information in a notification. ### Display a dialog message box Dialog messages provide important information that requires user attention. -The `IInteractionService.PromptMessageBoxAsync` method displays a message with customizable response options. +The `PromptMessageBoxAsync` method displays a message with customizable response options. + + + ```csharp title="AppHost.cs" var interactionService = services.GetRequiredService(); @@ -168,9 +201,38 @@ else } ``` + + + +```typescript title="apphost.mts" +const interactionService = await context.services().getInteractionService(); + +const result = await interactionService.promptMessageBox( + 'Apply migrations', + 'The database schema is out of date.\nWould you like to apply pending migrations now?', + { + enableMessageMarkdown: true, + primaryButtonText: 'Apply', + secondaryButtonText: 'Skip', + showSecondaryButton: true, + } +); + +if (!result.canceled) { + // User clicked "Apply" + // Run migrations. +} +``` + + + + **Dashboard view:** -Aspire dashboard interface showing a message dialog with a title, message, and buttons. +Aspire dashboard interface showing a message dialog with a title, message, and buttons. **CLI view:** @@ -181,69 +243,80 @@ The `PromptMessageBoxAsync` method only works in the dashboard context. If you c Notification messages provide non-modal notifications. The `PromptNotificationAsync` method displays informational messages with optional action links in the dashboard context. You don't have to await the result of a notification message if you don't need to. This is especially useful for notifications, since you might want to display a notification and continue without waiting for user to dismiss it. + + + ```csharp title="AppHost.cs" var interactionService = services.GetRequiredService(); -// Demonstrating various notification types with different intents -var tasks = new List -{ - interactionService.PromptNotificationAsync( - title: "Confirmation", - message: "Are you sure you want to proceed?", - options: new NotificationInteractionOptions - { - Intent = MessageIntent.Confirmation - }), - interactionService.PromptNotificationAsync( - title: "Success", - message: "Your operation completed successfully.", - options: new NotificationInteractionOptions - { - Intent = MessageIntent.Success, - LinkText = "View Details", - LinkUrl = "/" - }), - interactionService.PromptNotificationAsync( - title: "Warning", - message: "Your SSL certificate will expire soon.", - options: new NotificationInteractionOptions - { - Intent = MessageIntent.Warning, - LinkText = "Renew Certificate", - LinkUrl = "https://portal.azure.com/certificates" - }), - interactionService.PromptNotificationAsync( - title: "Information", - message: "There is an update available for your application.", - options: new NotificationInteractionOptions - { - Intent = MessageIntent.Information, - LinkText = "Update Now", - LinkUrl = "/" - }), - interactionService.PromptNotificationAsync( - title: "Error", - message: "An error occurred while processing your request.", - options: new NotificationInteractionOptions - { - Intent = MessageIntent.Error, - LinkText = "Troubleshoot", - LinkUrl = "/get-started/troubleshooting/" - }) -}; -await Task.WhenAll(tasks); +await interactionService.PromptNotificationAsync( + title: "Success", + message: "Your operation completed successfully.", + options: new NotificationInteractionOptions + { + Intent = MessageIntent.Success, + LinkText = "View Details", + LinkUrl = "/" + }); + +await interactionService.PromptNotificationAsync( + title: "Warning", + message: "Your SSL certificate will expire soon.", + options: new NotificationInteractionOptions + { + Intent = MessageIntent.Warning, + LinkText = "Renew Certificate", + LinkUrl = "https://portal.azure.com/certificates" + }); +``` + + + + +```typescript title="apphost.mts" +const interactionService = await context.services().getInteractionService(); + +await interactionService.promptNotification( + 'Success', + 'Your operation completed successfully.', + { + intent: MessageIntent.Success, + linkText: 'View Details', + linkUrl: '/', + } +); + +await interactionService.promptNotification( + 'Warning', + 'Your SSL certificate will expire soon.', + { + intent: MessageIntent.Warning, + linkText: 'Renew Certificate', + linkUrl: 'https://portal.azure.com/certificates', + } +); ``` -The previous example demonstrates several ways to use the notification API. Each approach displays different types of notifications, all of which are invoked in parallel and displayed in the dashboard around the same time. + + + +The previous example demonstrates how to use the notification API with different intents and optional action links. **Dashboard view:** -Aspire dashboard interface showing multiple notification messages stacked near the top of the page. There are five notifications displayed, each with a different type of notification. +Aspire dashboard interface showing multiple notification messages stacked near the top of the page. There are five notifications displayed, each with a different type of notification. **CLI view:** @@ -257,6 +330,9 @@ Use the interaction service when you need the user to confirm an action before p For operations that can't be undone, such as deleting resources, always prompt for confirmation: + + + ```csharp title="AppHost.cs" var interactionService = services.GetRequiredService(); // Prompt for confirmation before resetting database @@ -278,9 +354,38 @@ if (resetConfirmation.Data) } ``` + + + +```typescript title="apphost.mts" +const interactionService = await context.services().getInteractionService(); + +const resetConfirmation = await interactionService.promptConfirmation( + 'Confirm Reset', + 'Are you sure you want to reset the database? This action cannot be undone.', + { + intent: MessageIntent.Confirmation, + primaryButtonText: 'Reset', + secondaryButtonText: 'Cancel', + showSecondaryButton: true, + enableMessageMarkdown: true, + } +); + +if (!resetConfirmation.canceled) { + // Perform the reset operation... +} +``` + + + + **Dashboard view:** -Aspire dashboard interface showing a confirmation dialog with a title, message, and buttons for confirming or canceling the operation. +Aspire dashboard interface showing a confirmation dialog with a title, message, and buttons for confirming or canceling the operation. **CLI view:** @@ -288,15 +393,16 @@ The `PromptConfirmationAsync` method isn't available in CLI contexts. If you cal ## Prompt for user input -The interaction service API allows you to prompt users for input in various ways. You can collect single values or multiple values, with support for different input types including text, secrets, choices, booleans, and numbers. The presentation adapts automatically to the execution context. +The interaction service API allows you to prompt users for input in various ways. You can collect single values or multiple values, with support for different input types including text, secrets, choices, booleans, numbers, and files. The presentation adapts automatically to the execution context. | Type | Dashboard | CLI prompt | -|--------------|---------------------------|-----------------------| +| ------------ | ------------------------- | --------------------- | | `Text` | Textbox | Text prompt | | `SecretText` | Textbox with masked input | Masked text prompt | | `Choice` | Dropdown box of options | Choice prompt | | `Boolean` | Checkbox | Boolean choice prompt | | `Number` | Number textbox | Text prompt | +| `File` | File picker dialog | File path prompt | Each `InteractionInput` has a `Name` and a `Label` property: @@ -308,11 +414,17 @@ Each `InteractionInput` has a `Name` and a `Label` property: You can prompt for a single value using the `PromptInputAsync` method, or collect multiple pieces of information with `PromptInputsAsync`. In the dashboard, multiple inputs appear together in a single dialog. In the CLI, each input is requested one after another. Consider the following example, which prompts the user for multiple input values: + + + ```csharp title="AppHost.cs" var interactionService = services.GetRequiredService(); var loggerService = services.GetRequiredService(); @@ -383,19 +495,82 @@ if (!appConfigurationInput.Canceled) } ``` + + + +```typescript title="apphost.mts" +const interactionService = await context.services().getInteractionService(); + +const appName = await interactionService.createTextInput('AppName', { + label: 'Application Name', + required: true, + placeholder: 'my-app', +}); + +const environment = await interactionService.createChoiceInput('Environment', { + choices: [ + { value: 'dev', label: 'Development' }, + { value: 'staging', label: 'Staging' }, + { value: 'test', label: 'Testing' }, + ], + options: { required: true }, +}); + +const instanceCount = await interactionService.createNumberInput( + 'InstanceCount', + { + label: 'Instance Count', + required: true, + placeholder: '1', + } +); + +const enableMonitoring = await interactionService.createBooleanInput( + 'EnableMonitoring', + { label: 'Enable Monitoring' } +); + +const result = await interactionService.promptInputs( + 'Application Configuration', + 'Configure your application deployment settings:', + [appName, environment, instanceCount, enableMonitoring] +); + +if (!(await result.canceled())) { + const name = await result.inputs().value('AppName'); + const env = await result.inputs().value('Environment'); + const count = await result.inputs().value('InstanceCount'); + const monitoring = await result.inputs().value('EnableMonitoring'); + + // Use the collected values as needed +} +``` + + + + **Dashboard view:** This renders on the dashboard as shown in the following image: -Aspire dashboard interface showing a multiple input dialog with labels, input fields, and buttons for confirming or canceling the input. +Aspire dashboard interface showing a multiple input dialog with labels, input fields, and buttons for confirming or canceling the input. Imagine you fill out the dialog with the following values: -Aspire dashboard interface showing a multiple input dialog with filled input fields and buttons for confirming or canceling the input. +Aspire dashboard interface showing a multiple input dialog with filled input fields and buttons for confirming or canceling the input. After you select the **Ok** button, the resource logs display the following output: -Aspire dashboard interface showing logs with the input values entered in the multiple input dialog. +Aspire dashboard interface showing logs with the input values entered in the multiple input dialog. **CLI view:** @@ -438,13 +613,16 @@ Environment: The interaction service supports dynamic inputs so you can populate options based on earlier responses. This enables cascading dropdowns and other dependent prompts in both the dashboard and CLI experiences. + + + To configure a dynamic input, set the `InteractionInput.DynamicLoading` property to an instance of `InputLoadOptions`. `InputLoadOptions` has a range of properties: - **LoadCallback**: A callback function that populates or refreshes the input options. This function is invoked when the input needs to be loaded or refreshed. You can access the current values of other inputs through the `context.AllInputs` dictionary. - **DependsOnInputs**: A list of input names that the dynamic input depends on. When any of these inputs change, the `LoadCallback` is triggered to refresh the options for the dynamic input. If no dependencies are specified then the callback is triggered when the interaction starts. - **AlwaysLoadOnStart**: If set to `true`, the `LoadCallback` is always called when the interaction starts, even if the dynamic input has dependencies. -```csharp +```csharp title="AppHost.cs" var inputs = new List { new() @@ -491,15 +669,65 @@ if (!result.Canceled) } ``` -In the preceding example, the `DatabaseVersion` input is dynamically populated based on the selected `DatabaseType`. + + + +Use `withDynamicLoading` to populate options based on other inputs. The callback runs server-side, receives a `loadContext`, and updates the loading input through `loadContext.input()`: + +```typescript title="apphost.mts" +const interactionService = await context.services().getInteractionService(); + +const dbType = await interactionService.createChoiceInput('DatabaseType', { + label: 'Database Type', + choices: [ + { value: 'postgres', label: 'PostgreSQL' }, + { value: 'mysql', label: 'MySQL' }, + { value: 'sqlserver', label: 'SQL Server' }, + ], + options: { required: true }, +}); + +const dbVersion = await ( + await interactionService.createChoiceInput('DatabaseVersion', { + label: 'Database Version', + options: { required: true }, + }) +).withDynamicLoading( + async (loadContext) => { + const selectedType = await loadContext.inputs().value('DatabaseType'); + const versions = await getAvailableVersions(selectedType); + await loadContext.input().setChoiceOptions(versions); + }, + { dependsOnInputs: ['DatabaseType'] } +); + +const result = await interactionService.promptInputs( + 'Database configuration', + 'Select a database type and version', + [dbType, dbVersion] +); + +if (!(await result.canceled())) { + const version = await result.inputs().value('DatabaseVersion'); + // Use version-specific configuration... +} +``` + + + + +In the preceding example, the database version input is dynamically populated based on the selected database type. #### Input validation -Basic input validation is available by configuring `InteractionInput`. It provides options for requiring a value, or the maximum text length of `Text` or `SecretText` fields. +Basic input validation is available by configuring inputs with `Required` and `MaxLength` properties. For complex scenarios, you can provide a custom validation callback that runs server-side when the user submits the dialog. -For complex scenarios, you can provide custom validation logic using the `InputsDialogInteractionOptions.ValidationCallback` property: + + -```csharp +Use the `InputsDialogInteractionOptions.ValidationCallback` property: + +```csharp title="AppHost.cs" // Multiple inputs with custom validation var databaseInputs = new List { @@ -572,8 +800,152 @@ if (!dbResult.Canceled && dbResult.Data != null) } ``` + + + +Supply a `validationCallback` on the options object. The callback reads submitted values through `validationContext.inputs().value(name)` and registers per-field errors through `validationContext.addValidationError(field, message)`: + +```typescript title="apphost.mts" +const interactionService = await context.services().getInteractionService(); + +const password = await interactionService.createSecretInput('password', { + label: 'Password', + required: true, + placeholder: 'Enter a strong password', +}); + +const confirmPassword = await interactionService.createSecretInput( + 'confirmPassword', + { + label: 'Confirm password', + required: true, + placeholder: 'Confirm your password', + } +); + +const result = await interactionService.promptInputs( + 'Database configuration', + 'Configure your PostgreSQL database connection:', + [password, confirmPassword], + { + validationCallback: async (validationContext) => { + const pw = await validationContext.inputs().value('password'); + const cpw = await validationContext.inputs().value('confirmPassword'); + + if (pw && pw.length < 8) { + await validationContext.addValidationError( + 'password', + 'Password must be at least 8 characters long' + ); + } + if (pw !== cpw) { + await validationContext.addValidationError( + 'confirmPassword', + 'Passwords do not match' + ); + } + }, + } +); + +if (!(await result.canceled())) { + // Use the validated configuration +} +``` + + + + Prompting the user for a password and confirming they match is referred to as "dual independent verification" input. This approach is common in scenarios where you want to ensure the user enters the same password twice to avoid typos or mismatches. +### Prompt for file upload + +The `File` input type enables users to select and upload files through the native OS/browser file picker in the dashboard, or by providing a file path in the CLI. Files are uploaded to the AppHost and stored on disk, with metadata available through the `InteractionFile` class. + + + + +```csharp title="AppHost.cs" +var interactionService = services.GetRequiredService(); + +var fileInput = new InteractionInput +{ + Name = "ConfigFile", + InputType = InputType.File, + Label = "Configuration file", + Placeholder = "Select a file to import", + Required = true, + FileFilter = ".json,.yaml,.yml", + MaxFileSize = 10 * 1024 * 1024 // 10 MB +}; + +var result = await interactionService.PromptInputAsync( + "Import configuration", + "Select a configuration file to import.", + fileInput, + cancellationToken: cancellationToken); + +if (result.Canceled) +{ + return CommandResults.Failure("Canceled"); +} + +var file = result.Data.Files?[0]; +if (file is null) +{ + return CommandResults.Failure("No file uploaded"); +} + +// Read all file content as bytes +var content = await file.ReadAllBytesAsync(cancellationToken); + +// Or open as a stream for large files +await using var stream = file.OpenRead(); +``` + + + + +```typescript title="apphost.mts" +const interactionService = await context.services().getInteractionService(); + +const fileInput = await interactionService.createFileInput('ConfigFile', { + label: 'Configuration file', + description: 'Select a file to import', + required: true, + maxFileSize: 10 * 1024 * 1024, // 10 MB +}); + +const result = await interactionService.promptInput( + 'Import configuration', + 'Select a configuration file to import.', + fileInput, + { primaryButtonText: 'Upload' } +); + +if (result.canceled) { + return { success: false, message: 'Canceled' }; +} + +const files = result.input?.files ?? []; +if (files.length === 0) { + return { success: false, message: 'No file uploaded' }; +} + +const file = files[0]; +// file.name - original filename +// file.filePath - path to uploaded file on disk +``` + + + + +The `InteractionInput` for file uploads supports these additional properties: + +- **`FileFilter`**: Restricts selectable files using the same format as the HTML `accept` attribute (for example, `".pem,.pfx,.crt"` or `"image/*"`). +- **`MaxFileSize`**: Maximum file size in bytes. Files exceeding this limit are rejected with a validation error. +- **`AllowMultipleFiles`**: When `true`, the user can select more than one file. + ### Best practices for user input When prompting for user input, consider these best practices: @@ -589,6 +961,105 @@ When prompting for user input, consider these best practices: +## Display progress + +The interaction service can display a progress dialog during long-running operations. The progress dialog shows an indeterminate progress indicator with an optional title, message, and cancel button. This is useful for scenarios such as resource deployment, data processing, or Azure provisioning where the user should wait for an operation to complete. + +:::caution[Experimental API] +`PromptProgressAsync` and its associated types (`ProgressInteractionOptions`, `ProgressContext`) are experimental and require suppressing the [`ASPIREINTERACTION001`](/diagnostics/aspireinteraction001/) diagnostic. The API shape may change before it stabilizes. +::: + +:::note +The `PromptProgressAsync` method is only available in dashboard contexts. It throws an exception if called during `aspire publish` or `aspire deploy` operations. +::: + +### Display progress with a work callback + +The simplest approach is to provide a `Work` callback via `ProgressInteractionOptions`. The progress dialog opens when `PromptProgressAsync` is called and closes automatically when the callback completes: + + + + +```csharp title="AppHost.cs" +#pragma warning disable ASPIREINTERACTION001 + +var interactionService = services.GetRequiredService(); +var result = await interactionService.PromptProgressAsync( + "Please wait while resources are being downloaded...", + "Downloading resources", + new ProgressInteractionOptions + { + PrimaryButtonText = "Cancel", + Work = async progress => + { + await DownloadResourcesAsync(progress.CancellationToken); + } + }, + cancellationToken); + +if (result.Canceled) +{ + // User clicked the cancel button. +} +``` + + + + +```typescript title="apphost.mts" +const interactionService = await context.services().getInteractionService(); + +const result = await interactionService.promptProgress( + 'Please wait while resources are being downloaded...', + { + title: 'Downloading resources', + options: { + primaryButtonText: 'Cancel', + work: async () => { + await downloadResources(); + }, + }, + } +); + +if (result.canceled) { + // User clicked the cancel button. +} +``` + + + + +When a `Work` callback is provided: + +- The dialog stays open while the callback runs. +- If a cancel button is shown (via `PrimaryButtonText`), clicking it triggers `ProgressContext.CancellationToken`, which you can observe inside the callback. +- The method returns an `InteractionResult` with `Canceled = true` if the user clicked cancel. + +### Display progress without a work callback + +If you don't provide a `Work` callback, the progress dialog stays open until the `cancellationToken` passed to `PromptProgressAsync` is canceled, or the user clicks the cancel button (if `PrimaryButtonText` is set). This pattern is useful when you manage the work yourself and want to close the dialog at a specific point: + +```csharp title="AppHost.cs" +#pragma warning disable ASPIREINTERACTION001 + +var interactionService = services.GetRequiredService(); +using var cts = CancellationTokenSource.CreateLinkedTokenSource(cancellationToken); + +var progressTask = interactionService.PromptProgressAsync( + "Processing data...", + "Processing", + cancellationToken: cts.Token); + +// Do work, then close the dialog by canceling the token. +await DoWorkAsync(cancellationToken); +cts.Cancel(); + +await progressTask; +``` + +Because no `PrimaryButtonText` is set, the dialog has no cancel button and the user cannot dismiss it. + ## Interaction contexts The interaction service behaves differently depending on how your Aspire solution is launched: @@ -599,6 +1070,7 @@ When you run your application using `aspire run` or by directly launching the Ap - **Modal dialogs**: Message boxes and input prompts appear as overlay dialogs that require user interaction. - **Notification messages**: Informational messages appear as dismissible banners at the top of the dashboard. +- **Progress dialogs**: Long-running operations display a non-dismissable progress indicator with an optional cancel button. - **Rich UI**: Full support for interactive form elements, validation, and visual feedback. - **All methods available**: All interaction service methods are supported in dashboard contexts. @@ -608,10 +1080,15 @@ When you run `aspire publish` or `aspire deploy`, interactions are prompted thro - **Text prompts**: Only input prompts (`PromptInputAsync` and `PromptInputsAsync`) are available and appear as text-based prompts in the terminal. - **Sequential input**: Multiple inputs are requested one at a time rather than in a single dialog. -- **Limited functionality**: Message boxes, notifications, and confirmation dialogs aren't available and throw exceptions if called. +- **Limited functionality**: Message boxes, notifications, confirmation dialogs, and progress dialogs aren't available and throw exceptions if called. ## See also diff --git a/src/frontend/src/content/docs/extensibility/multi-language-integration-authoring.mdx b/src/frontend/src/content/docs/extensibility/multi-language-integration-authoring.mdx index e1ddf9ea4..8d5b8cdda 100644 --- a/src/frontend/src/content/docs/extensibility/multi-language-integration-authoring.mdx +++ b/src/frontend/src/content/docs/extensibility/multi-language-integration-authoring.mdx @@ -440,6 +440,8 @@ DTOs are input objects, not live resource handles. Keep `[AspireDto]` types JSON For an API with one optional options DTO, prefer a flat generated call shape such as `addMyResource('name', { port: 5432 })` instead of requiring `{ options: { port: 5432 } }`. If an existing C# API uses a rich model type that doesn't serialize cleanly, add a small DTO or options type for the exported API. +Both generators flatten the call shape when a method's optional parameters reduce to a single DTO named options. The Go generator applies this as of Aspire 13.5 and only when there's no coexisting cancellation token or callback. TypeScript has flattened single options DTOs since Aspire 13.3; it additionally still flattens when a trailing cancellation token is present, rendering the token as its own parameter. + ```csharp title="Flat options DTO" [AspireDto] public sealed class AddMyWorkerOptions @@ -463,13 +465,20 @@ public static IResourceBuilder AddMyWorker( } ``` -```typescript title="Flat generated call shape" +```typescript title="Flat generated call shape (TypeScript)" const worker = await builder.addMyWorker('worker', { imageTag: '1.2.3', args: ['--verbose'], }); ``` +```go title="Flat generated call shape (Go)" +worker, err := builder.AddMyWorker("worker", &aspire.AddMyWorkerOptions{ + ImageTag: aspire.StringPtr("1.2.3"), + Args: []string{"--verbose"}, +}) +``` + Collection-valued DTO inputs should also feel like plain JSON in the generated SDK: ```csharp title="Collection-valued DTO input" diff --git a/src/frontend/src/content/docs/fr/index.mdx b/src/frontend/src/content/docs/fr/index.mdx index 4549e56a8..f4960a9a5 100644 --- a/src/frontend/src/content/docs/fr/index.mdx +++ b/src/frontend/src/content/docs/fr/index.mdx @@ -11,7 +11,7 @@ prev: false next: false banner: content: | - 🚀 Aspire 13.4 est disponible !Découvrez les nouveautés d'Aspire 13.4. + ✨ Aspire 13.5 est disponible !Découvrez les nouveautés d'Aspire 13.5. bannerAutoDismissAfterDays: 14 hero: tagline: Votre stack, simplifiée.

Orchestrez vos frontends, APIs, conteneurs et bases de données sans effort — sans réécriture, sans limites. Étendez Aspire pour propulser n'importe quel projet.

diff --git a/src/frontend/src/content/docs/fundamentals/custom-resource-commands.mdx b/src/frontend/src/content/docs/fundamentals/custom-resource-commands.mdx index 288af9e1b..b35fea4ff 100644 --- a/src/frontend/src/content/docs/fundamentals/custom-resource-commands.mdx +++ b/src/frontend/src/content/docs/fundamentals/custom-resource-commands.mdx @@ -156,7 +156,7 @@ The `WithCommand` API adds the appropriate annotations to the resource, which ar - `displayName`: The name of the command to display in the dashboard. - `executeCommand`: The callback that runs when the command is invoked. In C# the type is `Func>`; in TypeScript it's `(context: ExecuteCommandContext) => Promise`. - `updateState`: A callback that decides the command's enabled state in the dashboard. In C# it's `Func` and supplied via `CommandOptions.UpdateState`; in TypeScript it's `(context: UpdateCommandStateContext) => Promise` and supplied through the `updateState` field on `CommandOptions`. -- `iconName`: The name of the icon to display in the dashboard. The icon is optional, but when you do provide it, it should be a valid [Fluent UI Blazor icon name](https://www.fluentui-blazor.net/Icon#explorer). +- `iconName`: The name of the icon to display in the dashboard. The icon is optional. Use a valid [Fluent UI Blazor icon name](https://www.fluentui-blazor.net/Icon#explorer). If the name isn't recognized, the dashboard renders a question-mark circle (❓) icon as a fallback. - `iconVariant`: The variant of the icon to display in the dashboard, valid options are `Regular` (default) or `Filled`. ## Execute command logic @@ -629,7 +629,7 @@ The `ExecuteCommandResult` type carries the outcome of a command. It exposes the - **`Success` / `success`** _(boolean)_ — Whether the command completed successfully. - **`Canceled` / `canceled`** _(boolean)_ — Whether the command was canceled by the user. - **`Message` / `message`** _(string?)_ — A human-readable message that surfaces in the dashboard [notification center](/dashboard/explore/#notification-center) and CLI output. Used for both success messages and error messages. -- **`Data` / `data`** _(`CommandResultData?`)_ — Optional structured output (plain text, JSON, or Markdown). See [Return structured output from a command](#return-structured-output-from-a-command). +- **`Data` / `data`** _(`CommandResultData?`)_ — Optional structured output (plain text, JSON, or Markdown). See [Return a result from a command](#return-a-result-from-a-command). +## Command progress + +Commands can display a progress dialog in the dashboard while they execute. The progress dialog shows an indeterminate progress indicator with an optional title, message, and cancel button. Set `CommandOptions.Progress` to a `CommandProgressOptions` value with a `Message` to enable this behavior — the dialog only appears when `Message` is set. + + + + +```csharp title="AppHost.cs" +builder.AddProject("api") + .WithCommand( + name: "seed-database", + displayName: "Seed Database", + executeCommand: async context => + { + await SeedDatabaseAsync(context.CancellationToken); + return CommandResults.Success("Database seeded."); + }, + commandOptions: new CommandOptions + { + IconName = "DatabaseArrowDown", + Progress = new CommandProgressOptions + { + Title = "Seeding", + Message = "Populating database with sample data..." + } + }); +``` + + + + +```typescript title="apphost.mts" +await api.withCommand( + "seed-database", + "Seed Database", + async () => { + await seedDatabase(); + return { success: true, message: "Database seeded." }; + }, + { + commandOptions: { + iconName: "DatabaseArrowDown", + progress: { + title: "Seeding", + message: "Populating database with sample data...", + }, + }, + }, +); +``` + + + + +When `CommandProgressOptions.Message` is set, the dashboard automatically shows the progress dialog when the command starts and closes it when the command completes. By default, a **Cancel** button is shown. Clicking it cancels the command via `ExecuteCommandContext.CancellationToken`. + +To hide the cancel button, set `HideCancelButton` to `true`: + + + + +```csharp title="AppHost.cs" +var commandOptions = new CommandOptions +{ + Progress = new CommandProgressOptions + { + Message = "Finalizing...", + HideCancelButton = true + } +}; +``` + + + + +```typescript title="apphost.mts" +{ + commandOptions: { + progress: { + message: "Finalizing...", + hideCancelButton: true, + }, + }, +} +``` + + + + +For more control over progress behavior, including custom work callbacks and programmatic dismissal, use `IInteractionService.PromptProgressAsync` directly. For more information, see [Display progress](/extensibility/interaction-service/#display-progress). + ## Process-backed resource commands :::caution[Experimental API] diff --git a/src/frontend/src/content/docs/fundamentals/external-parameters.mdx b/src/frontend/src/content/docs/fundamentals/external-parameters.mdx index 84e004a4c..624815fb1 100644 --- a/src/frontend/src/content/docs/fundamentals/external-parameters.mdx +++ b/src/frontend/src/content/docs/fundamentals/external-parameters.mdx @@ -619,9 +619,11 @@ To express a parameter, consider the following example code: ```csharp title="AppHost.cs" var builder = DistributedApplication.CreateBuilder(args); -var db = builder.AddSqlServer("sql") - .PublishAsConnectionString() - .AddDatabase("db"); +// In run mode, add the actual SQL Server resource. +// In publish mode, use a connection string representing an external SQL Server instance. +IResourceBuilder db = builder.ExecutionContext.IsRunMode + ? builder.AddSqlServer("sql").AddDatabase("db") + : builder.AddConnectionString("db"); var insertionRows = builder.AddParameter("insertionRows"); @@ -640,9 +642,13 @@ import { createBuilder } from './.aspire/modules/aspire.mjs'; const builder = await createBuilder(); -const sql = await builder.addSqlServer('sql'); -await sql.publishAsConnectionString(); -const db = await sql.addDatabase('db'); +// In run mode, add the actual SQL Server resource. +// In publish mode, use a connection string representing an external SQL Server instance. +const isRunMode = await builder.executionContext.isRunMode(); + +const db = isRunMode + ? (await builder.addSqlServer('sql')).addDatabase('db') + : await builder.addConnectionString('db'); const insertionRows = await builder.addParameter('insertionRows'); @@ -663,12 +669,11 @@ The following steps are performed: -1. Adds a SQL Server resource named `sql` and publishes it as a connection string. -2. Adds a database named `db`. -3. Adds a parameter named `insertionRows`. -4. Adds a project named `api` and associates it with the `Projects.Parameters_ApiService` project resource type-parameter. -5. Passes the `insertionRows` parameter to the `api` project. -6. References the `db` database. +1. In run mode, adds a SQL Server resource named `sql` and a database named `db`. In publish mode, uses an external connection string named `db`. +2. Adds a parameter named `insertionRows`. +3. Adds a project named `api` and associates it with the `Projects.Parameters_ApiService` project resource type-parameter. +4. Passes the `insertionRows` parameter to the `api` project. +5. References the `db` database. diff --git a/src/frontend/src/content/docs/fundamentals/http-commands.mdx b/src/frontend/src/content/docs/fundamentals/http-commands.mdx index e4ee9f656..c26eceb68 100644 --- a/src/frontend/src/content/docs/fundamentals/http-commands.mdx +++ b/src/frontend/src/content/docs/fundamentals/http-commands.mdx @@ -40,6 +40,34 @@ Since HTTP commands are exposed via HTTP endpoints, consider potential security Use the `HttpCommandOptions.PrepareRequest` callback to enhance security by adding authentication headers or other measures. A common approach is to use a shared secret, [external parameter](/fundamentals/external-parameters/), or token known only to the AppHost and resource. This shared value can be used to validate requests and prevent unauthorized access. +## HTTP command timeouts + +HTTP commands are user-cancelable from the dashboard, so by default the request the command sends has no timeout: the unnamed `HttpClient` used to send the request has its `HttpClient.Timeout` set to `Timeout.InfiniteTimeSpan`. This allows long-running commands, such as ones that trigger database migrations or other admin actions, to run for as long as needed without failing due to `HttpClient`'s default 100-second timeout. Canceling the command from the dashboard cancels this client-side HTTP request through the command's cancellation token; it doesn't guarantee that server-side work already started, such as a migration, also stops. + +If you want a command to time out after a specific duration, specify `HttpCommandOptions.HttpClientName` with the name of an `HttpClient` you configure with `IHttpClientFactory`, and set its `Timeout` accordingly: + +```csharp title="AppHost.cs" +var builder = DistributedApplication.CreateBuilder(args); + +builder.Services.AddHttpClient("commands-with-timeout", client => +{ + client.Timeout = TimeSpan.FromSeconds(30); +}); + +builder.AddProject("api") + .WithHttpCommand( + path: "/admin/sync", + displayName: "Sync now", + commandOptions: new HttpCommandOptions + { + HttpClientName = "commands-with-timeout" + }); + +builder.Build().Run(); +``` + +When `HttpCommandOptions.HttpClientName` is specified, the named `HttpClient` is used as configured, including its `Timeout`. + ## Add a custom HTTP command In your _AppHost.cs_ file, you add a custom HTTP command using the `WithHttpCommand` API on an `IResourceBuilder` where `T` is an `IResourceWithEndpoints`. Here's an example of how to do this: @@ -137,7 +165,7 @@ The preceding code: ## Return the HTTP response body -By default, an HTTP command uses the HTTP status code to determine whether the command succeeded, and it doesn't return the response body as command result data. Set `HttpCommandOptions.ResultMode` to opt in to returning a non-empty response body from the endpoint. The body is surfaced as the command's structured output, just like [structured output from custom resource commands](/fundamentals/custom-resource-commands/#return-structured-output-from-a-command). +By default, an HTTP command uses the HTTP status code to determine whether the command succeeded, and it doesn't return the response body as command result data. Set `HttpCommandOptions.ResultMode` to opt in to returning a non-empty response body from the endpoint. The body is surfaced as the command's structured output, just like [structured output from custom resource commands](/fundamentals/custom-resource-commands/#return-a-result-from-a-command). The following example configures an HTTP command that returns a JSON response body: diff --git a/src/frontend/src/content/docs/fundamentals/networking-overview.mdx b/src/frontend/src/content/docs/fundamentals/networking-overview.mdx index b2fcaaf7f..148806a87 100644 --- a/src/frontend/src/content/docs/fundamentals/networking-overview.mdx +++ b/src/frontend/src/content/docs/fundamentals/networking-overview.mdx @@ -55,7 +55,7 @@ The inner loop is the process of developing and testing your app locally before - **Endpoints/Endpoint configurations**: Endpoints are the connections between your app and the services it depends on, such as databases, message queues, or APIs. Endpoints provide information such as the service name, host port, scheme, and environment variable. Aspire can create endpoints automatically from resource configuration, and you can also add them explicitly by calling `WithEndpoint`. - **Proxies**: Aspire automatically launches a proxy for each proxied service binding you add to your app, and assigns a port for the proxy to listen on. The proxy then forwards the requests to the port that your app listens on, which might be different from the proxy port. This way, you can avoid port conflicts and access your app and services using consistent and predictable URLs. -- **Proxyless endpoints**: Endpoints with `IsProxied` set to `false` connect directly to the resource instead of routing through an Aspire-managed proxy. Starting in Aspire 13.4, endpoints on persistent resources are proxyless by default. Proxyless endpoints must specify a target port so Aspire knows which port the resource listens on. +- **Proxyless endpoints**: Endpoints with `IsProxied` set to `false` connect directly to the resource instead of routing through an Aspire-managed proxy. Starting in Aspire 13.4, endpoints on persistent executables and projects are proxyless by default. Persistent containers use proxied endpoints by default, the same as session containers. - **Container networks**: Aspire creates and manages dedicated networks for container resources so containers can discover and communicate with each other during local development. ## How endpoints work @@ -230,9 +230,9 @@ The underlying service still listens on its own port, and Aspire makes that allo Most endpoints are proxied by default. A proxyless endpoint skips the Aspire-managed proxy and exposes the resource's listener directly. Use a proxyless endpoint when a proxy would interfere with the resource's lifetime or networking behavior. -Starting in Aspire 13.4, endpoints on persistent resources are proxyless by default. This lets the persistent resource keep using its direct endpoint across AppHost runs instead of depending on a new proxy instance each time. This also ensures that the ports your service is reachable on stay stable whether the AppHost is running or not. +Starting in Aspire 13.4, endpoints on persistent executables and projects are proxyless by default. This lets the persistent resource keep using its direct endpoint across AppHost runs instead of depending on a new proxy instance each time. This also ensures that the ports your service is reachable on stay stable whether the AppHost is running or not. Persistent containers use proxied endpoints by default, the same as session containers, so integrations that depend on endpoint allocation before startup continue to work. -Because there's no proxy to listen on one port and forward to another, every proxyless endpoint must include a target port. The target port tells Aspire which port the resource listens on. You can also set `port` when you need a specific host port, but `targetPort` is still required for proxyless endpoints. +The following example configures a proxyless HTTP endpoint for an nginx container: @@ -260,6 +260,50 @@ await web.withHttpEndpoint({ targetPort: 80, isProxied: false }); +### Allocate ports for dynamic proxyless endpoints + +Proxyless endpoints can omit the public host `port`. Starting in Aspire 13.5, Aspire allocates a public host port for each dynamic proxyless endpoint before workload resources are created. The allocated port is then available to configuration that resolves endpoint properties, such as `GetEndpoint(...).Property(EndpointProperty.Port)`. + +If you set `port`, Aspire uses that value as the public host port. If you omit `port`, Aspire allocates one from the proxyless endpoint port range. The default range is `10000-32767`, and you can override it with the `ASPIRE_PROXYLESS_ENDPOINT_PORT_RANGE` environment variable in `start-end` format. Container endpoints still require `targetPort` so Aspire knows which port inside the container receives traffic. + +This lets you write patterns like the following, where a container exposes its allocated public port in an environment variable: + + + + +```csharp title="AppHost.cs" +var database = builder.AddContainer("database", "image") + .WithEndpoint(name: "tcp", targetPort: 5432, isProxied: false); + +database.WithEnvironment("PUBLIC_PORT", database.GetEndpoint("tcp").Property(EndpointProperty.Port)); +``` + + + + +```typescript title="apphost.mts" twoslash +import { EndpointProperty, createBuilder } from './.aspire/modules/aspire.mjs'; + +const builder = await createBuilder(); + +const database = await builder.addContainer('database', { + image: 'image', + tag: 'latest', +}); +await database.withEndpoint({ name: 'tcp', targetPort: 5432, isProxied: false }); + +await database.withEnvironment('PUBLIC_PORT', database.getEndpoint('tcp').property(EndpointProperty.Port)); +``` + + + + +In this example, `PUBLIC_PORT` is set to the endpoint's allocated public host port before the container is created. Because the endpoint is proxyless and doesn't specify `port`, Aspire allocates a port from the proxyless endpoint port range. + +:::note +For persistent resources, Aspire stores allocated proxyless endpoint ports in user secrets when user secrets are available and reuses them on later AppHost runs. If Aspire can't persist the allocated port, configure a fixed public `port` or use a proxied endpoint to avoid recreating the persistent resource on each run. +::: + ## Omit the host port For proxied endpoints, when you omit the host port, Aspire generates a random port for both host and service port. This is useful when you want to avoid port conflicts and don't care about the host or service port. Consider the following code: @@ -405,7 +449,7 @@ The `AllocatedEndpoint` property allows you to get or set the endpoint for a ser on. -The `Name` property identifies the service, whereas the `Port` and `TargetPort` properties specify the desired and listening ports, respectively. `TargetPort` is required for proxyless endpoints, including endpoints with `IsProxied` set to `false` and, starting in Aspire 13.4, endpoints on persistent resources by default. +The `Name` property identifies the service, whereas the `Port` and `TargetPort` properties specify the desired and listening ports, respectively. `TargetPort` is required for proxyless endpoints, including endpoints with `IsProxied` set to `false` and, starting in Aspire 13.4, endpoints on persistent executables and projects by default. For network communication, the `Protocol` property supports **TCP** and **UDP**, with potential for more in the future, and the `Transport` property indicates the transport protocol (**HTTP**, **HTTP2**, **HTTP3**). Lastly, if the service is URI-addressable, the `UriScheme` property provides the URI scheme for constructing the service URI. diff --git a/src/frontend/src/content/docs/fundamentals/persist-data-volumes.mdx b/src/frontend/src/content/docs/fundamentals/persist-data-volumes.mdx index b3608b682..8516303e3 100644 --- a/src/frontend/src/content/docs/fundamentals/persist-data-volumes.mdx +++ b/src/frontend/src/content/docs/fundamentals/persist-data-volumes.mdx @@ -272,3 +272,4 @@ You can apply the volume concepts in the preceding code to a variety of services - [Tutorial: Connect an ASP.NET Core app to SQL Server using Aspire and Entity Framework Core](/integrations/databases/efcore/sql-server/sql-server-get-started/) - [Aspire orchestration overview](/get-started/app-host/) +- [Persistent volumes on Kubernetes](/deployment/kubernetes/persistent-volumes/) diff --git a/src/frontend/src/content/docs/get-started/add-aspire-existing-app.mdx b/src/frontend/src/content/docs/get-started/add-aspire-existing-app.mdx index 98435156b..8886bbfc8 100644 --- a/src/frontend/src/content/docs/get-started/add-aspire-existing-app.mdx +++ b/src/frontend/src/content/docs/get-started/add-aspire-existing-app.mdx @@ -144,8 +144,8 @@ Use a file-based AppHost when you want a lightweight single-file orchestrator wi 3. Wire the resources in `apphost.cs`: ```csharp title="apphost.cs" - #:sdk Aspire.AppHost.Sdk@13.2.0 - #:package Aspire.Hosting.Redis@13.2.0 + #:sdk Aspire.AppHost.Sdk@%ASPIRE_VERSION% + #:package Aspire.Hosting.Redis@%ASPIRE_VERSION% #pragma warning disable ASPIRECSHARPAPPS001 @@ -398,10 +398,10 @@ Common examples include Node.js apps, Vite frontends, Python workers, and Uvicor ```csharp title="apphost.cs — Existing services with hosting integrations" -#:sdk Aspire.AppHost.Sdk@13.3.0 -#:package Aspire.Hosting.Redis@13.3.0 -#:package Aspire.Hosting.Python@13.3.0 -#:package Aspire.Hosting.JavaScript@13.3.0 +#:sdk Aspire.AppHost.Sdk@%ASPIRE_VERSION% +#:package Aspire.Hosting.Redis@%ASPIRE_VERSION% +#:package Aspire.Hosting.Python@%ASPIRE_VERSION% +#:package Aspire.Hosting.JavaScript@%ASPIRE_VERSION% var builder = DistributedApplication.CreateBuilder(args); @@ -478,9 +478,9 @@ aspire add redis ```csharp title="apphost.cs — Existing containers and shared infrastructure" -#:sdk Aspire.AppHost.Sdk@13.3.0 -#:package Aspire.Hosting.PostgreSQL@13.3.0 -#:package Aspire.Hosting.Redis@13.3.0 +#:sdk Aspire.AppHost.Sdk@%ASPIRE_VERSION% +#:package Aspire.Hosting.PostgreSQL@%ASPIRE_VERSION% +#:package Aspire.Hosting.Redis@%ASPIRE_VERSION% var builder = DistributedApplication.CreateBuilder(args); @@ -569,8 +569,8 @@ services: ```csharp title="apphost.cs" showLineNumbers -#:sdk Aspire.AppHost.Sdk@13.3.0 -#:package Aspire.Hosting.PostgreSQL@13.3.0 +#:sdk Aspire.AppHost.Sdk@%ASPIRE_VERSION% +#:package Aspire.Hosting.PostgreSQL@%ASPIRE_VERSION% var builder = DistributedApplication.CreateBuilder(args); diff --git a/src/frontend/src/content/docs/get-started/aspire-sdk.mdx b/src/frontend/src/content/docs/get-started/aspire-sdk.mdx index 0e602be5a..f497fe06b 100644 --- a/src/frontend/src/content/docs/get-started/aspire-sdk.mdx +++ b/src/frontend/src/content/docs/get-started/aspire-sdk.mdx @@ -17,7 +17,7 @@ The [📦 Aspire.AppHost.Sdk](https://www.nuget.org/packages/Aspire.AppHost.Sdk) The `Aspire.AppHost.Sdk` is defined in the top-level `Project` node's `Sdk` attribute: ```xml title='*.csproj file' {1} - + Exe @@ -35,7 +35,7 @@ The `Aspire.AppHost.Sdk` is defined in the top-level `Project` node's `Sdk` attr The `Aspire.AppHost.Sdk` is defined in a file-based app's source file using the `#:sdk` directive: ```csharp title='file-based app' {1} -#:sdk Aspire.AppHost.Sdk@13.3.0 +#:sdk Aspire.AppHost.Sdk@%ASPIRE_VERSION% var builder = DistributedApplication.CreateBuilder(args); @@ -108,16 +108,20 @@ Today, the Aspire SDK restores the binaries for these dependencies from platform Aspire is moving toward using the installed **Aspire CLI bundle** as the source for those orchestration dependencies. With this model, those binaries update when you update the Aspire CLI through [`aspire update --self`](/reference/cli/commands/aspire-update/) instead of being tied to RID-specific `Aspire.Hosting.Orchestration.*` and `Aspire.Dashboard.Sdk.*` package references in each AppHost project. -Set `AspireUseCliBundle` to `true` to opt in during the transition before this behavior becomes the default. +Set `AspireUseCliBundle` to `true` to opt in during the transition before this behavior becomes the default. `AspireUseCliBundle` defaults to `false`, so launching a C# AppHost with `dotnet run` or an IDE continues to work without requiring the Aspire CLI. Leaving it unset (or explicitly `false`) reports warning [`ASPIRE010`](/diagnostics/aspire010/) as a reminder that some Aspire features require the bundle; suppress it if you intend to keep using NuGet-restored orchestration dependencies. When `AspireUseCliBundle` is `true`: - `Aspire.AppHost.Sdk` still sets AppHost properties and adds the implicit `Aspire.Hosting.AppHost` package. - Your AppHost uses the DCP and Dashboard versions installed with the Aspire CLI. -- At build time, the SDK resolves the DCP and Dashboard executables in this priority order: - 1. Explicit `AspireCliBundlePath` / `AspireCliPath` properties in the project file. - 2. The `aspire` executable on `PATH`. -- If the bundle cannot be found, the build emits error `ASPIRE009` with a message directing you to [get.aspire.dev](https://get.aspire.dev) to install the Aspire CLI. +- The SDK selects the executable used to launch the AppHost as follows: + 1. An explicit `AspireCliPath` is always authoritative. + 2. When `AspireCliInvocationMode` is set to `Dnx` or `DnxPinned`, the SDK selects a usable `dnx` host. + 3. Otherwise, the default `Path` mode selects a compatible `aspire` on `PATH`, then falls back to the SDK-paired Aspire CLI package through DNX. +- `AspireCliBundlePath` isn't an executable candidate. It explicitly identifies a bundle layout for DCP and Dashboard resolution. +- If the resolved Aspire CLI has a bundle that hasn't been extracted yet, the build runs `aspire setup` through the selected `aspire` or paired DNX invocation to extract it, then resolves the bundle again. This lets an AppHost build and launch from an IDE even when the CLI installation didn't run the release install scripts. +- If a required bundle layout can't be resolved, the build emits error [`ASPIRE009`](/diagnostics/aspire009/). Invalid explicit `AspireCliPath` and `AspireCliBundlePath` values remain authoritative and can produce this error. +- If `Dnx` or `DnxPinned` mode can't find `dnx`, the run preflight emits error [`ASPIRE011`](/diagnostics/aspire011/) when it prepares the launch command. A regular build doesn't emit this diagnostic. #### Enable the opt-in @@ -130,14 +134,14 @@ Set `AspireUseCliBundle` in your AppHost `.csproj`: ``` :::note[Advanced scenario: Override the bundle path] -Most apps don't need to set the CLI bundle path. If the Aspire CLI isn't on `PATH`, provide an explicit path using `AspireCliBundlePath` (path to the CLI bundle directory) or `AspireCliPath` (path to the `aspire` executable): +Most apps don't need to set either path. `AspireCliPath` selects an explicit `aspire` executable for invocation and bundle discovery. `AspireCliBundlePath` supplies an explicit unpacked bundle layout for DCP and Dashboard resolution, but it doesn't select the executable used to launch the AppHost: ```xml title="MyApp.AppHost.csproj" true - + /usr/local/bin/aspire - + ``` @@ -146,3 +150,24 @@ Most apps don't need to set the CLI bundle path. If the Aspire CLI isn't on `PAT #### Running with aspire run or aspire start When you start an opted-in AppHost using `aspire run` or `aspire start`, the CLI automatically passes the resolved bundle paths through the `ASPIRE_DCP_PATH` and `ASPIRE_DASHBOARD_PATH` environment variables. + +#### Running with dotnet run + +When `AspireUseCliBundle` is `true` and you start the AppHost with `dotnet run` instead of `aspire run`, the SDK resolves and invokes the Aspire CLI itself. Set `AspireCliInvocationMode` to control how that invocation happens: + +- **`Path`** (default) — resolves a compatible `aspire` command from `AspireCliPath` (if set) or `PATH`. If no compatible command is found, it falls back to invoking the `Aspire.Cli` version paired with `Aspire.AppHost.Sdk` through [`dnx`](https://learn.microsoft.com/dotnet/core/tools/dotnet-tool-exec). +- **`Dnx`** — always invokes the Aspire CLI through `dnx`, using the unversioned `Aspire.Cli` package. This honors an in-scope [.NET local tool manifest](https://learn.microsoft.com/dotnet/core/tools/local-tools-how-to-use#create-a-manifest-file) (`.config/dotnet-tools.json`) if one pins `Aspire.Cli`, or resolves the latest published package when no manifest applies. +- **`DnxPinned`** — always invokes the Aspire CLI through `dnx`, using `Aspire.Cli@` pinned to the exact `Aspire.Cli` version paired with `Aspire.AppHost.Sdk`. Use this when the CLI must match the AppHost SDK version exactly, ignoring any local tool manifest. + +Set `AspireCliInvocationMode` in your AppHost `.csproj`: + +```xml title="MyApp.AppHost.csproj" + + true + Dnx + +``` + +:::note +`dotnet run` is noninteractive, so `dnx` restores and executes without prompting for confirmation and uses your configured NuGet sources. Restore or probe failures fail explicitly instead of falling back to an incomplete direct launch. If `dnx` can't be found on `PATH` when `Dnx` or `DnxPinned` mode is configured, the build emits error `ASPIRE011`. Install or use the .NET SDK 10.0 or later, set `AspireCliInvocationMode` to `Path` to use the global `aspire` command, or set `AspireCliPath` to an explicit Aspire CLI executable. +::: diff --git a/src/frontend/src/content/docs/get-started/aspire-skills.mdx b/src/frontend/src/content/docs/get-started/aspire-skills.mdx index 996494c4d..feceb5de1 100644 --- a/src/frontend/src/content/docs/get-started/aspire-skills.mdx +++ b/src/frontend/src/content/docs/get-started/aspire-skills.mdx @@ -302,7 +302,7 @@ When the Aspire CLI installs Aspire workflow skills, it validates the Aspire ski - `Embedded Aspire skills bundle metadata is invalid: ` - `Embedded Aspire skills metadata must specify a version.` -- `Embedded Aspire skills archive failed SHA-256 verification. Expected '', got ''.` +- `Embedded Aspire skills archive failed SHA-512 verification. Expected '', got ''.` These errors indicate a problem with the Aspire CLI installation itself, not your project configuration. To resolve the issue, update the CLI: diff --git a/src/frontend/src/content/docs/get-started/aspire-vscode-extension.mdx b/src/frontend/src/content/docs/get-started/aspire-vscode-extension.mdx index 7b6f33f87..35496a61b 100644 --- a/src/frontend/src/content/docs/get-started/aspire-vscode-extension.mdx +++ b/src/frontend/src/content/docs/get-started/aspire-vscode-extension.mdx @@ -18,7 +18,7 @@ The official Aspire extension for [Visual Studio Code](https://code.visualstudio Press to build your AppHost, start your resources, and debug supported resource types — C#, TypeScript, Python, browser apps, and Azure Functions — alongside the Aspire dashboard. :::note[Prerequisites] -A recent version of [Visual Studio Code](https://code.visualstudio.com/) and the **Aspire CLI** — install the CLI via the **Aspire: Install Aspire CLI (stable)** command from the Command Palette, or follow the [installation guide](/get-started/install-cli/). +A recent version of [Visual Studio Code](https://code.visualstudio.com/) and the **Aspire CLI** — install the CLI via the **Aspire: Install Aspire CLI** command from the Command Palette, or follow the [installation guide](/get-started/install-cli/). ::: ## Install the extension @@ -65,13 +65,13 @@ The Command Palette has commands for the most common tasks: - **Aspire: Initialize Aspire in an existing codebase** wires Aspire into a repo that has not yet been Aspirified. - **Aspire: Update integrations** updates hosting integrations and the Aspire SDK. - **Aspire: Open Aspire terminal** drops you into a terminal with the Aspire CLI already on `PATH` for anything the UI doesn't cover. -- **Aspire: Update Aspire CLI** and **Aspire: Install Aspire CLI** let you manage CLI installation. +- **Aspire: Update Aspire CLI** and **Aspire: Install Aspire CLI** let you manage CLI installation. **Install Aspire CLI** shows a package-manager picker (WinGet, Homebrew, npm, .NET tool, or mise, depending on your platform) plus a **Daily build (dev)** option and a link to the full [installation guide](/get-started/install-cli/) for every option, including the install script. ## Live editor integration When an AppHost is running, the extension paints live state directly into your editor. -**CodeLens** appears above each resource definition in C# and TypeScript AppHosts. It shows the current state and health and exposes one-click `Start`, `Stop`, `Restart`, and `View Logs` actions in addition to any custom commands the resource publishes. +**CodeLens** appears above each resource definition in C# and TypeScript AppHosts. It shows the current state and health and exposes one-click `Start`, `Stop`, `Restart`, and `View Logs` actions in addition to any custom commands the resource publishes. **Editor title bar buttons** add **Run Aspire AppHost** and **Debug Aspire AppHost** actions next to the standard Run/Debug buttons whenever you have an AppHost file open. @@ -89,13 +89,17 @@ Aspire registers an AppHost view to VS Code. **Workspace** mode shows the AppHos Each resource shows its type, state, health summary, and exit code, plus a health-aware icon and a markdown tooltip listing endpoint URLs. Resources with health checks expose an expandable **Health Checks** group; use **Expand all** on the AppHost item to open everything at once. You can right-click a resource to start, stop, or restart it, view its logs, run resource-specific commands, or open the dashboard. +:::note[Renamed polling setting] +`aspire.globalAppHostsPollingInterval` is deprecated. Use `aspire.appHostsPollingInterval` to configure how often the Aspire view polls for running AppHosts. +::: + ## Run, debug, and deploy :::note[Debugging] The Aspire Dashboard is no longer opened by default when the AppHost starts, as most operations can be performed using the Aspire view inside VS Code. To launch the dashboard, use the **Open Dashboard** CodeLens, the **Aspire: Open Dashboard** command, or open it from the Aspire view. ::: -**Aspire: Configure launch.json file** adds a minimal launch configuration `.vscode/launch.json` that supports AppHosts written in any language. AppHosts are discovered automatically in the workspace. +**Aspire: Configure launch.json file** adds a minimal launch configuration `.vscode/launch.json` that supports AppHosts written in any language. AppHosts are discovered automatically in the workspace. To launch a specific AppHost, configure an [aspire.config.json](/reference/cli/configuration/) with an `appHost.path` property. @@ -127,6 +131,25 @@ All of these commands are debuggable; you can step into custom publishers and de The `debuggers` property forwards configuration to specific debuggers. Recognized keys are: `apphost`, `project` (C#/.NET), `node`, `python`, `browser`, and `azure-functions`. +For `project`, the extension normally generates a `serverReadyAction` from the project's `launchSettings.json` to automatically open the browser when the server is ready. Set `debuggers.project.serverReadyAction` explicitly to override this generated default with your own action and pattern: + +:::note[AppHost behavior] +A .NET AppHost also uses the `project` debugger, so `debuggers.project.serverReadyAction` is included in its debug configuration. If you set both `debuggers.apphost.serverReadyAction` and `debuggers.project.serverReadyAction`, the `project` value takes precedence. +::: + +```json title=".vscode/launch.json — override debuggers.project.serverReadyAction" +{ + "debuggers": { + "project": { + "serverReadyAction": { + "action": "openIntegratedBrowser", + "pattern": "\\bNow listening on:\\s+(https?://\\S+)" + } + } + } +} +``` + Finally, you can specify `env` and `args` to set environment variables and command-line arguments for the AppHost process. ```json title=".vscode/launch.json — deploy with debugger settings, env, and args" diff --git a/src/frontend/src/content/docs/get-started/install-cli.mdx b/src/frontend/src/content/docs/get-started/install-cli.mdx index b1d7abb1f..762b881eb 100644 --- a/src/frontend/src/content/docs/get-started/install-cli.mdx +++ b/src/frontend/src/content/docs/get-started/install-cli.mdx @@ -16,7 +16,7 @@ import { Tabs, } from '@astrojs/starlight/components'; -Aspire provides a command-line interface (CLI) tool to help you create and manage Aspire-based apps. The CLI streamlines your development workflow with an interactive-first experience. This guide shows you how to install the Aspire CLI on your system. Choose the package manager that fits your environment — Homebrew, npm, NuGet, WinGet, or mise — or use the install script for direct setup. +Aspire provides a command-line interface (CLI) tool to help you create and manage Aspire-based apps. The CLI streamlines your development workflow with an interactive-first experience. This guide shows you how to install the Aspire CLI on your system. Choose the package manager that fits your environment — Homebrew, npm, NuGet, WinGet, mise, or Nix — or use the install script for direct setup. :::tip[Using VS Code?] The [Aspire VS Code extension](/get-started/aspire-vscode-extension/) can install the CLI for you. From the Command Palette, run: @@ -95,6 +95,68 @@ Install the Aspire CLI with [mise](https://mise.jdx.dev/) when you manage develo mise use -g aspire ``` + + + +Install or run the Aspire CLI from the official Nix flake on Linux and macOS. Nix 2.4 or later with flakes enabled is required. + +Run the Aspire CLI directly without installing it: + +```bash title="Run with Nix" +nix run github:microsoft/aspire#aspire-cli +``` + +Add the Aspire CLI to your Nix profile for persistent access: + +```bash title="Add to Nix profile" +nix profile add github:microsoft/aspire#aspire-cli +``` + +To use the Aspire CLI in a project's `flake.nix`, consume the package output directly: + +```nix title="flake.nix — package output" +{ + inputs = { + nixpkgs.url = "github:NixOS/nixpkgs/"; + aspire.url = "github:microsoft/aspire"; + aspire.inputs.nixpkgs.follows = "nixpkgs"; + }; + + outputs = + { nixpkgs, aspire, ... }: + let + systems = [ + "aarch64-darwin" + "aarch64-linux" + "x86_64-darwin" + "x86_64-linux" + ]; + forAllSystems = nixpkgs.lib.genAttrs systems; + in + { + devShells = forAllSystems ( + system: + let + pkgs = nixpkgs.legacyPackages.${system}; + in + { + default = pkgs.mkShell { + packages = [ + aspire.packages.${system}.aspire-cli + ]; + }; + } + ); + }; +} +``` + +The Aspire CLI version is pinned by the `aspire` flake input revision and the `eng/nix/versions.json` manifest at that commit. Pin a specific CLI version by locking the `aspire` input to a particular Git revision. + +:::note +When installed via Nix, `aspire update --self` prints the Nix update commands to run rather than downloading a new binary, because the Nix store is read-only. See [`aspire update`](/reference/cli/commands/aspire-update/) for details. +::: + @@ -136,7 +198,7 @@ aspire --version If that command works, you're presented with the version of the Aspire CLI tool: ```bash title="Aspire CLI — Output" data-disable-copy -13.4.0+{commitSHA} +%ASPIRE_VERSION%+{commitSHA} ``` The `+{commitSHA}` suffix indicates the specific commit from which the Aspire CLI was built. diff --git a/src/frontend/src/content/docs/get-started/troubleshooting.mdx b/src/frontend/src/content/docs/get-started/troubleshooting.mdx index 697d744b3..cdbe201dc 100644 --- a/src/frontend/src/content/docs/get-started/troubleshooting.mdx +++ b/src/frontend/src/content/docs/get-started/troubleshooting.mdx @@ -167,6 +167,18 @@ Also verify: [Service discovery](/fundamentals/service-discovery/).
+## `aspire add` finds no packages with an Azure Artifacts feed + +**Symptoms**: When an authenticated Azure DevOps or Azure Artifacts NuGet feed is configured, `aspire add` reports that no packages were found or the Aspire CLI logs a `JsonReaderException`. + +**Cause**: The NuGet Azure Artifacts Credential Provider can write `[CredentialProvider]` progress text to standard output before the `dotnet package search --format json` response. Older Aspire CLI versions tried to parse all of that output as JSON. + +**Solution**: Update to the latest Aspire CLI: + +```bash title="Update the Aspire CLI" +aspire update --self +``` + ## TypeScript AppHost issues ### "Command not found" errors diff --git a/src/frontend/src/content/docs/hi/index.mdx b/src/frontend/src/content/docs/hi/index.mdx index dc28f4697..67ec807b5 100644 --- a/src/frontend/src/content/docs/hi/index.mdx +++ b/src/frontend/src/content/docs/hi/index.mdx @@ -11,7 +11,7 @@ prev: false next: false banner: content: | - 🚀 Aspire 13.4 रिलीज़ हो गया है!Aspire 13.4 में नया क्या है देखें। + ✨ Aspire 13.5 रिलीज़ हो गया है!Aspire 13.5 में नया क्या है देखें। bannerAutoDismissAfterDays: 14 hero: tagline: आपका स्टैक, सरल।

फ्रंटएंड, API, कंटेनर और डेटाबेस को आसानी से ऑर्केस्ट्रेट करें—बिना रीराइट, बिना सीमा। किसी भी प्रोजेक्ट को शक्ति देने के लिए Aspire को विस्तारित करें।

diff --git a/src/frontend/src/content/docs/id/index.mdx b/src/frontend/src/content/docs/id/index.mdx index 3806a2f92..85a910831 100644 --- a/src/frontend/src/content/docs/id/index.mdx +++ b/src/frontend/src/content/docs/id/index.mdx @@ -11,7 +11,7 @@ prev: false next: false banner: content: | - 🚀 Aspire 13.4 telah dirilis!Lihat apa yang baru di Aspire 13.4. + ✨ Aspire 13.5 telah dirilis!Lihat apa yang baru di Aspire 13.5. bannerAutoDismissAfterDays: 14 hero: tagline: Stack Anda, disederhanakan.

Orkestrasi frontend, API, container, dan database dengan mudah—tanpa menulis ulang, tanpa batasan. Perluas Aspire untuk mendukung proyek apa pun.

diff --git a/src/frontend/src/content/docs/index.mdx b/src/frontend/src/content/docs/index.mdx index 776ee16d3..843579597 100644 --- a/src/frontend/src/content/docs/index.mdx +++ b/src/frontend/src/content/docs/index.mdx @@ -11,7 +11,7 @@ prev: false next: false banner: content: | - Aspire 13.4 is here! See what's new + ✨ Aspire 13.5 is available!Explore the latest features and improvements bannerAutoDismissAfterDays: 14 hero: title: Model distributed apps in code. diff --git a/src/frontend/src/content/docs/integrations/ai/github-models/github-models-connect.mdx b/src/frontend/src/content/docs/integrations/ai/github-models/github-models-connect.mdx index f62b055b7..7b68bd694 100644 --- a/src/frontend/src/content/docs/integrations/ai/github-models/github-models-connect.mdx +++ b/src/frontend/src/content/docs/integrations/ai/github-models/github-models-connect.mdx @@ -19,6 +19,10 @@ import githubIcon from '@assets/icons/github-icon.png'; data-zoom-off /> +:::caution[Integration deprecated] +The GitHub Models service is **no longer available to new customers**. The `Aspire.Hosting.GitHub.Models` integration is sunset as of Aspire 13.5. All public APIs are marked `[Obsolete]` and the package no longer appears in `aspire add` output. The package will ship one final obsolete release on NuGet and will be removed entirely in a future version. For new and existing apps, use the [Azure AI Foundry integration](/integrations/cloud/azure/azure-ai-foundry/azure-ai-foundry-get-started/) instead, which provides access to a broad catalog of models — including OpenAI's GPT models — and supports local development with `RunAsFoundryLocal()`. See [microsoft/aspire#18402](https://github.com/microsoft/aspire/issues/18402) for details. +::: + This page describes how consuming apps connect to a GitHub Model resource that's already modeled in your AppHost. For the AppHost API surface — adding a model resource, API key parameters, organization configuration, and health checks — see [GitHub Models hosting integration](../github-models-host/). When you reference a GitHub Model resource from your AppHost, Aspire injects the connection information into the consuming app as environment variables. Your app can either read those environment variables directly — the pattern works the same from any language — or, in C#, use the Aspire client integrations for automatic dependency injection, health checks, and telemetry. diff --git a/src/frontend/src/content/docs/integrations/ai/github-models/github-models-get-started.mdx b/src/frontend/src/content/docs/integrations/ai/github-models/github-models-get-started.mdx index be3d232f2..e78f6db59 100644 --- a/src/frontend/src/content/docs/integrations/ai/github-models/github-models-get-started.mdx +++ b/src/frontend/src/content/docs/integrations/ai/github-models/github-models-get-started.mdx @@ -17,6 +17,10 @@ import githubIcon from '@assets/icons/github-icon.png'; data-zoom-off /> +:::caution[Integration deprecated] +The GitHub Models service is **no longer available to new customers**. The `Aspire.Hosting.GitHub.Models` integration is sunset as of Aspire 13.5. All public APIs are marked `[Obsolete]` and the package no longer appears in `aspire add` output. The package will ship one final obsolete release on NuGet and will be removed entirely in a future version. For new and existing apps, use the [Azure AI Foundry integration](/integrations/cloud/azure/azure-ai-foundry/azure-ai-foundry-get-started/) instead, which provides access to a broad catalog of models — including OpenAI's GPT models — and supports local development with `RunAsFoundryLocal()`. See [microsoft/aspire#18402](https://github.com/microsoft/aspire/issues/18402) for details. +::: + [GitHub Models](https://github.com/marketplace/models) provides access to a broad catalog of AI models — including OpenAI's GPT models, DeepSeek, Microsoft's Phi models, and more — through GitHub's infrastructure and your existing GitHub token. The Aspire GitHub Models integration lets you model a GitHub Model resource as a first-class resource in your AppHost, then hand the connection information to any consuming app — regardless of language. ## Why use GitHub Models with Aspire diff --git a/src/frontend/src/content/docs/integrations/ai/github-models/github-models-host.mdx b/src/frontend/src/content/docs/integrations/ai/github-models/github-models-host.mdx index a9053fabd..ff423f159 100644 --- a/src/frontend/src/content/docs/integrations/ai/github-models/github-models-host.mdx +++ b/src/frontend/src/content/docs/integrations/ai/github-models/github-models-host.mdx @@ -17,6 +17,10 @@ import githubIcon from '@assets/icons/github-icon.png'; data-zoom-off /> +:::caution[Integration deprecated] +The GitHub Models service is **no longer available to new customers**. The `Aspire.Hosting.GitHub.Models` integration is sunset as of Aspire 13.5. All public APIs are marked `[Obsolete]` and the package no longer appears in `aspire add` output. The package will ship one final obsolete release on NuGet and will be removed entirely in a future version. For new and existing apps, use the [Azure AI Foundry integration](/integrations/cloud/azure/azure-ai-foundry/azure-ai-foundry-get-started/) instead, which provides access to a broad catalog of models — including OpenAI's GPT models — and supports local development with `RunAsFoundryLocal()`. See [microsoft/aspire#18402](https://github.com/microsoft/aspire/issues/18402) for details. +::: + This article is the reference for the Aspire GitHub Models hosting integration. It enumerates the AppHost APIs — with examples for both `AppHost.cs` and `apphost.mts` — that you use to model GitHub Model resources in your [`AppHost`](/get-started/app-host/) project. If you're new to the GitHub Models integration, start with the [Get started with GitHub Models integrations](/integrations/ai/github-models/github-models-get-started/) guide. For how consuming apps read the connection information this page exposes, see [Connect to GitHub Models](../github-models-connect/). diff --git a/src/frontend/src/content/docs/integrations/cloud/azure/aks/index.mdx b/src/frontend/src/content/docs/integrations/cloud/azure/aks/index.mdx index 84364cc9a..91d997c1e 100644 --- a/src/frontend/src/content/docs/integrations/cloud/azure/aks/index.mdx +++ b/src/frontend/src/content/docs/integrations/cloud/azure/aks/index.mdx @@ -108,6 +108,52 @@ await worker.withNodePool(gpuPool); +## Add a persistent volume + + + +Call `AddPersistentVolume` directly on the AKS environment to model durable storage without reaching through to the underlying Kubernetes integration. The call forwards to the AKS environment's Kubernetes publisher, so the same configuration methods and workload-binding APIs described in [Persistent volumes on Kubernetes](/deployment/kubernetes/persistent-volumes/) apply: + + + +```csharp title="AppHost.cs" +var aks = builder.AddAzureKubernetesEnvironment("aks"); + +var data = aks.AddPersistentVolume("data") + .WithCapacity("20Gi"); + +builder.AddProject("api") + .WithPersistentVolume(data, "/data"); +``` + + +```typescript title="apphost.mts" +const aks = await builder.addAzureKubernetesEnvironment("aks"); + +const data = await aks.addPersistentVolume("data"); +await data.withCapacity("20Gi"); + +const api = await builder + .addNodeApp('api', './api', 'src/index.ts') + .withHttpEndpoint({ env: 'PORT' }) + .withExternalHttpEndpoints() + .withKubernetesPersistentVolumeMount(data, "/data"); +``` + + + +When you don't set a storage class, the generated claim omits `spec.storageClassName` so the cluster's default storage class provisions the disk. A standard AKS cluster dynamically provisions an Azure managed disk for such claims. To request Premium SSD storage explicitly, call `WithStorageClass("managed-csi-premium")` in C# or `withStorageClass('managed-csi-premium')` in TypeScript. + + + + + For the full set of configuration methods (storage class, capacity, access modes, annotations) and how to bind volumes to workloads, see [Persistent volumes on Kubernetes](/deployment/kubernetes/persistent-volumes/). + + ## Publishing and deployment The AKS integration supports both [`aspire publish`](/reference/cli/commands/aspire-publish/) (generate Helm chart and Bicep artifacts) and [`aspire deploy`](/reference/cli/commands/aspire-deploy/) (provision Azure infrastructure and deploy in a single command). @@ -119,6 +165,7 @@ For a complete end-to-end walkthrough, see [Deploy to AKS](/deployment/kubernete - [Deploy to AKS](/deployment/kubernetes/aks/) - [Deploy to Kubernetes](/deployment/kubernetes/) - [Kubernetes integration](/integrations/compute/kubernetes/) +- [Persistent volumes on Kubernetes](/deployment/kubernetes/persistent-volumes/) - [Azure Container Apps integration](/integrations/cloud/azure/configure-container-apps/) - [Deploy to Azure](/deployment/azure/) - [Azure compute integrations overview](/integrations/cloud/azure/overview/) diff --git a/src/frontend/src/content/docs/integrations/cloud/azure/azure-ai-foundry/azure-ai-foundry-host.mdx b/src/frontend/src/content/docs/integrations/cloud/azure/azure-ai-foundry/azure-ai-foundry-host.mdx index 606e9fff3..db94a7994 100644 --- a/src/frontend/src/content/docs/integrations/cloud/azure/azure-ai-foundry/azure-ai-foundry-host.mdx +++ b/src/frontend/src/content/docs/integrations/cloud/azure/azure-ai-foundry/azure-ai-foundry-host.mdx @@ -188,7 +188,7 @@ The preceding code: - Adds an Azure AI Foundry resource named `foundry`. - Adds a Foundry deployment resource named `chat` using the generated `FoundryModel.OpenAI.Gpt5Mini` descriptor. -If you need a different generated model descriptor, use the corresponding nested type, such as `FoundryModel.Microsoft.Phi4Reasoning`: +If you need a different generated model descriptor, use the corresponding nested type. The `FoundryModel` class organizes models by provider family: `FoundryModel.Microsoft`, `FoundryModel.OpenAI`, `FoundryModel.Cohere`, `FoundryModel.MistralAI`, and others. For example, to use `FoundryModel.Microsoft.Phi4Reasoning`: @@ -464,6 +464,36 @@ In publish mode, Aspire creates an `AzureHostedAgentResource` and publishes the For C# AppHosts, the parameterless `AsHostedAgent()` overload reuses an existing Foundry project from the app model or creates one automatically. TypeScript AppHosts pass the project resource explicitly. +### Select a hosted agent protocol + +`AsHostedAgent` defaults to the Responses protocol version `2.0.0`. If your hosted agent implements a different protocol or protocol version, use the C# `AsHostedAgent(project, protocol, version)` overload or the polyglot/TypeScript `asHostedAgentWithProtocol` export. For example, some Microsoft Agent Framework (MAF) agents use the Invocations protocol: + + + + +```csharp +builder.AddPythonApp("agent-python", "../agent", "main:app") + .WithReference(project) + .WithReference(chat) + .AsHostedAgent(project, HostedAgentProtocol.Invocations, "1.0.0"); +``` + + + + +```typescript +await builder + .addPythonApp('agent-python', '../agent', 'main:app') + .withReference(project) + .withReference(chat) + .asHostedAgentWithProtocol(project, HostedAgentProtocol.Invocations, '1.0.0'); +``` + + + + +The defaulted `asHostedAgent` entry point and the explicit `asHostedAgentWithProtocol` entry point are both exported to polyglot AppHosts, so existing AppHosts that call `asHostedAgent(project, options?)` continue to work unchanged with the Responses `2.0.0` default. Reach for `asHostedAgentWithProtocol` only when you need a protocol or version other than the default. + ### Add and publish a prompt agent For prompt-only scenarios, use `AddPromptAgent` on a Foundry project: @@ -663,9 +693,11 @@ await builder.build().run(); -When the AppHost starts up, the local foundry service is also started. This requires the local machine to have [Foundry Local](https://learn.microsoft.com/azure/ai-foundry/foundry-local/get-started) installed and running. +When the AppHost starts, Aspire automatically starts the Foundry Local service using the `foundry` CLI (`foundry service start`). It then discovers the service endpoint, downloads and loads the specified models via CLI commands, and stops the service (`foundry service stop`) when the AppHost shuts down or is disposed. You do not need to pre-start Foundry Local manually. + +This requires the `foundry` CLI to be installed and available on `PATH`. For installation instructions, see [Foundry Local get started](https://learn.microsoft.com/azure/ai-foundry/foundry-local/get-started). -The `RunAsFoundryLocal` method configures the resource to run as an emulator. It downloads and loads the specified models locally. The method provides health checks for the local service and automatically manages the Foundry Local lifecycle. +The `RunAsFoundryLocal` method configures the resource to use the local service. It downloads and loads the specified models locally, provides health checks for the local service, and fully manages the Foundry Local lifecycle — including start and stop — through the `foundry` CLI. +### Delegate subnets to compute environments + +Compute environment integrations that support regional virtual network integration expose a `WithDelegatedSubnet` (or `withDelegatedSubnet` in TypeScript) extension method that assigns a subnet to the environment, enabling subnet delegation so the environment can inject its infrastructure. For example, [Azure Container Apps](/integrations/cloud/azure/configure-container-apps/) and [Azure App Service](/integrations/cloud/azure/azure-app-service/azure-app-service-host/#regional-virtual-network-integration) both support `WithDelegatedSubnet`: + + + +```csharp title="AppHost.cs" +var vnet = builder.AddAzureVirtualNetwork("vnet"); +var acaSubnet = vnet.AddSubnet("aca-subnet", "10.0.0.0/24"); +var appServiceSubnet = vnet.AddSubnet("app-service-subnet", "10.0.1.0/24"); + +// Azure Container Apps environment +builder.AddAzureContainerAppEnvironment("aca-env") + .WithDelegatedSubnet(acaSubnet); + +// Azure App Service environment (requires ASPIREAZURE003 suppression) +#pragma warning disable ASPIREAZURE003 +builder.AddAzureAppServiceEnvironment("app-service-env") + .WithDelegatedSubnet(appServiceSubnet); +#pragma warning restore ASPIREAZURE003 +```` + + +```typescript title="apphost.mts" +const vnet = await builder.addAzureVirtualNetwork("vnet"); +const acaSubnet = await vnet.addSubnet("aca-subnet", "10.0.0.0/24"); +const appServiceSubnet = await vnet.addSubnet("app-service-subnet", "10.0.1.0/24"); + +// Azure Container Apps environment +await builder.addAzureContainerAppEnvironment("aca-env") + .withDelegatedSubnet(acaSubnet); + +// Azure App Service environment +await builder.addAzureAppServiceEnvironment("app-service-env") + .withDelegatedSubnet(appServiceSubnet); +```` + + + + +Each compute environment delegates the subnet to its own Azure service (for example, App Service delegates to `Microsoft.Web/serverFarms`). Regional virtual network integration affects outbound traffic only—it doesn't make ingress private and doesn't enable Route All. + +### Delegate a subnet to an Azure service + +For scenarios that aren't covered by a compute environment's `WithDelegatedSubnet` helper, call `WithServiceDelegation` (or `withServiceDelegation` in TypeScript) directly on the subnet builder to delegate it to a supported Azure service. The delegation `name` defaults to `serviceName` so you don't have to repeat the value: + + + +```csharp title="AppHost.cs" +var vnet = builder.AddAzureVirtualNetwork("vnet"); +var subnet = vnet.AddSubnet("aci-subnet", "10.0.0.0/23") + .WithServiceDelegation(AzureSubnetServiceDelegations.ContainerInstances); + +// Or specify a custom delegation name. +subnet.WithServiceDelegation( + AzureSubnetServiceDelegations.ContainerInstances, + name: "aci-delegation"); +```` + + +```typescript title="apphost.mts" +import { AzureSubnetServiceDelegations } from './.aspire/modules/aspire.mjs'; + +const vnet = await builder.addAzureVirtualNetwork("vnet"); +const subnet = await vnet.addSubnet("aci-subnet", "10.0.0.0/23"); + +await subnet.withServiceDelegation(AzureSubnetServiceDelegations.ContainerInstances); + +// Or specify a custom delegation name. +await subnet.withServiceDelegation( + AzureSubnetServiceDelegations.ContainerInstances, + { name: "aci-delegation" }); +```` + + + + +`AzureSubnetServiceDelegations` provides discoverable, well-known service identifiers so you don't have to remember or duplicate the underlying Azure resource provider strings: + +| Constant | Value | +| --------------------------------- | ------------------------------------------------------- | +| `ContainerInstances` | `Microsoft.ContainerInstance/containerGroups` | +| `ContainerAppEnvironments` | `Microsoft.App/environments` | +| `AppServiceEnvironments` | `Microsoft.Web/serverFarms` | +| `ApplicationGatewayForContainers` | `Microsoft.ServiceNetworking/trafficControllers` | + +You can also pass another supported Azure resource provider path as `serviceName` if the service doesn't have a well-known constant. Aspire models and emits one service delegation for a subnet, so use one compute-environment delegation helper or service delegation per subnet. Repeated direct `WithServiceDelegation` calls replace the previous service-delegation annotation, so the latest direct call wins. `WithDelegatedSubnet` allows an existing delegation for the same required service, but throws an `InvalidOperationException` when the subnet's effective existing service delegation differs. + ### Add private endpoints [Private endpoints](https://learn.microsoft.com/azure/private-link/) enable secure connectivity to Azure services over a private network. Call `AddPrivateEndpoint` (or `addPrivateEndpoint`) on a subnet builder and pass the Azure resource to connect to: diff --git a/src/frontend/src/content/docs/integrations/cloud/azure/configure-container-apps.mdx b/src/frontend/src/content/docs/integrations/cloud/azure/configure-container-apps.mdx index e31d6946d..b6ae6a2ee 100644 --- a/src/frontend/src/content/docs/integrations/cloud/azure/configure-container-apps.mdx +++ b/src/frontend/src/content/docs/integrations/cloud/azure/configure-container-apps.mdx @@ -393,6 +393,38 @@ await acaEnv.withAzdResourceNaming(); Calling this API ensures your existing Azure resources remain consistent and prevents duplication. +## Avoid managed environment name collisions + +By default, the generated managed environment `name` keeps only lowercase letters from the resource name, so `AddAzureContainerAppEnvironment("cae1")` and `AddAzureContainerAppEnvironment("cae2")` both produce the same Bicep expression once digits are stripped. If you deploy both environments to the *same resource group*, they collapse onto a single physical Azure Container Apps environment and concurrent deployments can fail with `ManagedEnvironmentOperationInProgress`. + +Publish and deploy detect this collision up front and fail with guidance to call `WithUniqueResourceNaming` on the colliding environments: + + + +```csharp title="AppHost.cs" +var builder = DistributedApplication.CreateBuilder(args); + +var env1 = builder.AddAzureContainerAppEnvironment("cae1") + .WithUniqueResourceNaming(); + +var env2 = builder.AddAzureContainerAppEnvironment("cae2") + .WithUniqueResourceNaming(); + +// Omitted for brevity... + +builder.Build().Run(); +``` + + + +`WithUniqueResourceNaming` preserves digits in the resource name when computing the managed environment `name`, so `cae1` and `cae2` produce distinct names and can coexist in the same resource group. + + + +`WithUniqueResourceNaming` acts as a fallback after any name resolver you configure explicitly through `AzureProvisioningOptions.ProvisioningBuildOptions`, and it has no effect when `WithAzdResourceNaming` is used, since `azd` naming sets the environment name explicitly. + ## Customize provisioning infrastructure All Azure resources are subclasses of the `AzureProvisioningResource` type. This enables customization of the generated Bicep by providing a fluent API to configure the Azure resources — using the `ConfigureInfrastructure` API: diff --git a/src/frontend/src/content/docs/integrations/cloud/azure/customize-resources.mdx b/src/frontend/src/content/docs/integrations/cloud/azure/customize-resources.mdx index 7c765bf07..60804d345 100644 --- a/src/frontend/src/content/docs/integrations/cloud/azure/customize-resources.mdx +++ b/src/frontend/src/content/docs/integrations/cloud/azure/customize-resources.mdx @@ -642,6 +642,63 @@ await builder.build().run(); For more end-to-end examples — including chaining outputs between Bicep resources and using the `existing` Bicep keyword to reference resources that Aspire didn't provision — see the [Aspire `playground/bicep` sample](https://github.com/dotnet/aspire/tree/main/playground/bicep). +### Set the deployment scope + +By default, Aspire deploys Bicep resources at the resource group scope. Some Bicep templates require a different [deployment scope](https://learn.microsoft.com/azure/azure-resource-manager/bicep/deploy-to-subscription), such as the subscription or the tenant. + + + + +Set the `Scope` property on the Bicep resource using `AzureBicepResourceScope.CreateForSubscription` or `AzureBicepResourceScope.CreateForTenant`: + +```csharp title="AppHost.cs" +using Aspire.Hosting.Azure; + +var builder = DistributedApplication.CreateBuilder(args); + +var subscriptionId = builder.AddParameter("subscriptionId"); + +var subscriptionScoped = builder.AddBicepTemplateString( + "subscriptionScoped", + """ + targetScope = 'subscription' + + param location string + + output value string = 'subscription' + """); +subscriptionScoped.Resource.Scope = AzureBicepResourceScope.CreateForSubscription(subscriptionId.Resource); + +var tenantScoped = builder.AddBicepTemplateString( + "tenantScoped", + """ + targetScope = 'tenant' + + param location string + + output value string = 'tenant' + """); +tenantScoped.Resource.Scope = AzureBicepResourceScope.CreateForTenant(); + +builder.Build().Run(); +``` + + + + + + + + + + + ### Inspect generated Bicep To see the Bicep that Aspire emits after applying your `ConfigureInfrastructure` callbacks, publish the AppHost and read the files from the output folder: diff --git a/src/frontend/src/content/docs/integrations/cloud/azure/local-provisioning.mdx b/src/frontend/src/content/docs/integrations/cloud/azure/local-provisioning.mdx index b6ea85919..8bbb28007 100644 --- a/src/frontend/src/content/docs/integrations/cloud/azure/local-provisioning.mdx +++ b/src/frontend/src/content/docs/integrations/cloud/azure/local-provisioning.mdx @@ -270,6 +270,27 @@ AppHost/ Program.cs ``` +## Change a resource's Azure location + +Locally provisioned Azure resources expose a `change-location` dev-time resource command that lets you move an existing resource to a different Azure region without manually deleting it first. + +Some Azure resource types are location-immutable — moving them to a new region requires Aspire to delete the existing live resource and recreate it in the new location. Deleting the resource this way can permanently destroy any data it holds, so Aspire requires an explicit acknowledgement before it deletes a live Azure resource as part of a location change: + +- **Dashboard**: The change-location dialog shows an **Allow deletion and possible permanent data loss** checkbox. You must select it before Aspire deletes and recreates the resource. +- **Aspire CLI**: Pass `--confirm-delete` to the `change-location` resource command: + + ```bash title="Aspire CLI" + aspire resource my-storage change-location --location westus2 --confirm-delete true + ``` + +- **MCP**: Set `arguments.confirmDelete` to `true` when invoking the `change-location` command. + +If the acknowledgement is missing, Aspire fails the command before deleting the resource, persisting any location override, resetting provisioning state, or reprovisioning. + + + ## Limitations Local provisioning has some limitations: @@ -343,3 +364,4 @@ Enable detailed logging: - [Azure integrations overview](/integrations/cloud/azure/overview/) - [Customize Azure resources](/integrations/cloud/azure/customize-resources/) - [Deploy to Azure Container Apps](/get-started/deploy-first-app/) +- [`aspire resource` command reference](/reference/cli/commands/aspire-resource/) diff --git a/src/frontend/src/content/docs/integrations/cloud/azure/overview.mdx b/src/frontend/src/content/docs/integrations/cloud/azure/overview.mdx index 67fda713d..0238cb9bf 100644 --- a/src/frontend/src/content/docs/integrations/cloud/azure/overview.mdx +++ b/src/frontend/src/content/docs/integrations/cloud/azure/overview.mdx @@ -118,13 +118,24 @@ The following table summarizes the naming conventions used to express Azure reso | Operation | API | Description | |--|--|--| -| Publish | `PublishAsConnectionString` | Changes the resource to be published as a connection string reference in the manifest. | +| Publish | `PublishAsConnectionString` _(obsolete)_ | Changes the resource to be published as a connection string reference in the manifest. Use `AddConnectionString` with the [execution context](/get-started/app-host/) instead. | | Publish | `PublishAsExisting` | Uses an existing Azure resource when the application is deployed instead of creating a new one. | | Run | `RunAsContainer` | Configures an equivalent container to run locally. For more information, see [Local containers](#local-containers). | | Run | `RunAsEmulator` | Configures the Azure resource to be emulated. For more information, see [Local emulators](#local-emulators). | | Run | `RunAsExisting` | Uses an existing resource when the application is running instead of creating a new one. | | Publish and Run | `AsExisting` | Uses an existing resource regardless of the operation. | +:::caution[PublishAsConnectionString is obsolete] +`PublishAsConnectionString` is obsolete as of Aspire 9.5. It only changes the manifest representation and has no effect on other publishers. To add the Azure resource in run mode and represent it as a connection string in publish mode, use [`AddConnectionString`](/fundamentals/external-parameters/#connection-string-values) with the execution context: + +```csharp +IResourceBuilder resource = builder.ExecutionContext.IsPublishMode + ? builder.AddConnectionString("messaging") + : builder.AddAzureServiceBus("messaging"); +``` + +::: + diff --git a/src/frontend/src/content/docs/integrations/compute/kubernetes.mdx b/src/frontend/src/content/docs/integrations/compute/kubernetes.mdx index 5b1b82391..c417a1b7d 100644 --- a/src/frontend/src/content/docs/integrations/compute/kubernetes.mdx +++ b/src/frontend/src/content/docs/integrations/compute/kubernetes.mdx @@ -213,6 +213,49 @@ await k8s.withContainerRegistry(registry); The container registry APIs are currently in preview. In C#, suppress the `ASPIRECOMPUTE003` diagnostic to use them. +## Persistent volumes + +To create durable storage in a Kubernetes cluster, model it as a first-class `KubernetesPersistentVolumeResource` with `AddPersistentVolume`. Then configure its storage class, capacity, and access modes, and bind it to workloads. At publish time, the volume renders as a `v1.PersistentVolumeClaim`, and any workload bound to it is promoted to a `StatefulSet`. + + + + +```csharp title="AppHost.cs" +using Aspire.Hosting.Kubernetes; + +var k8s = builder.AddKubernetesEnvironment("k8s"); + +var pgData = k8s.AddPersistentVolume("pg-data") + .WithStorageClass("managed-csi") + .WithCapacity("20Gi"); + +builder.AddPostgres("pg") + .WithDataVolume("pg-data") + .WithPersistentVolume(pgData); +``` + + + + +```typescript title="apphost.mts" +const k8s = await builder.addKubernetesEnvironment('k8s'); + +const pgData = await k8s.addPersistentVolume('pg-data'); +await pgData.withStorageClass('managed-csi'); +await pgData.withCapacity('20Gi'); + +const pg = await builder.addPostgres('pg'); +await pg.withDataVolume({ name: 'pg-data' }); +await pg.withKubernetesPersistentVolume(pgData); +``` + + + + + + For the full configuration surface, binding overloads, access modes, and generated output, see [Persistent volumes on Kubernetes](/deployment/kubernetes/persistent-volumes/). + + ## Customize individual resources Use `PublishAsKubernetesService` to modify the generated Kubernetes resources for individual services: @@ -356,6 +399,7 @@ For complete walkthroughs, see [Deploy to Kubernetes clusters](/deployment/kuber ## See also - [Deploy to Kubernetes](/deployment/kubernetes/) +- [Persistent volumes on Kubernetes](/deployment/kubernetes/persistent-volumes/) - [Expose services with Ingress and Gateway API](/deployment/kubernetes-ingress/) - [Configure Ingress on AKS](/deployment/kubernetes-ingress-aks/) - [Configure Gateway API on AKS](/deployment/kubernetes-gateway-aks/) diff --git a/src/frontend/src/content/docs/integrations/custom-integrations/client-integrations.mdx b/src/frontend/src/content/docs/integrations/custom-integrations/client-integrations.mdx index 0e6ae212c..7212e4972 100644 --- a/src/frontend/src/content/docs/integrations/custom-integrations/client-integrations.mdx +++ b/src/frontend/src/content/docs/integrations/custom-integrations/client-integrations.mdx @@ -21,6 +21,8 @@ import mailkitMetricsGraphDashboardLight from '@assets/integrations/custom-integ This article is a continuation of the [Create custom hosting integrations](/integrations/custom-integrations/hosting-integrations/) article. It guides you through creating an Aspire client integration that uses [MailKit](https://github.com/jstedfast/MailKit) to send emails. This integration is then added into the Newsletter app you previously built. The previous example omitted the creation of a client integration and instead relied on the existing .NET `SmtpClient`. It's best to use MailKit's `SmtpClient` over the official .NET `SmtpClient` for sending emails, as it's more modern and supports more features/protocols. For more information, see [.NET SmtpClient: Remarks](https://learn.microsoft.com/dotnet/api/system.net.mail.smtpclient#remarks). +Aspire Type System (ATS) generates TypeScript APIs for the hosting integration. The MailKit client integration remains standard .NET code and doesn't need ATS annotations. To see both integrations used from a TypeScript AppHost, explore the [MailDev and MailKit custom integrations sample](https://github.com/microsoft/aspire-samples/tree/main/samples/maildev-mailkit). For details about exporting hosting integration APIs, see [Multi-language integrations](/extensibility/multi-language-integration-authoring/). + ## Prerequisites If you're following along, you should have a Newsletter app from the steps in the [Create custom hosting integrations](/integrations/custom-integrations/hosting-integrations/) article. @@ -59,12 +61,12 @@ The next step is to add the following NuGet packages that the integration relies + -+ ++ + + + + -+ ++ + diff --git a/src/frontend/src/content/docs/integrations/custom-integrations/hosting-integrations.mdx b/src/frontend/src/content/docs/integrations/custom-integrations/hosting-integrations.mdx index 30d9571ea..ce1adc985 100644 --- a/src/frontend/src/content/docs/integrations/custom-integrations/hosting-integrations.mdx +++ b/src/frontend/src/content/docs/integrations/custom-integrations/hosting-integrations.mdx @@ -57,12 +57,16 @@ Building a custom resource in Aspire requires the following: 2. An extension method for `IDistributedApplicationBuilder` named `Add{CustomResource}` where `{CustomResource}` is the name of the custom resource. +To use a C# hosting integration from a TypeScript AppHost, mark the resource types and extension methods that you want to expose with `[AspireExport]`. The Aspire CLI uses this metadata to generate a typed TypeScript API that calls the C# implementation. For export rules and analyzer guidance, see [Multi-language integrations](/extensibility/multi-language-integration-authoring/). + When custom resource requires optional configuration, developers may wish to implement `With*` suffixed extension methods to make these configuration options discoverable using the _builder pattern_. ## A practical example: MailDev To help understand how to develop custom resources, this article shows an example of how to build a custom resource for [MailDev](https://maildev.github.io/maildev/). MailDev is an open-source tool which provides a local mail server designed to allow developers to test e-mail sending behaviors within their app. For more information, see [the MailDev GitHub repository](https://github.com/maildev/maildev). +For a runnable version with TypeScript and C# AppHost examples, see the [MailDev and MailKit custom integrations sample](https://github.com/microsoft/aspire-samples/tree/main/samples/maildev-mailkit). + In this example you create a new Aspire project as a test environment for the MailDev resource that you create. While you can create custom resources in existing Aspire projects it's a good idea to consider whether the custom resource might be used across multiple Aspire-based solutions and should be developed as a reusable integration. ## Set up the starter project @@ -80,7 +84,7 @@ dotnet new aspire -o MailDevResource 1. When prompted to select a template, choose the **AppHost and service defaults** template — use the and keys to navigate the options. Press to select the template. 1. Enter a project name, in this example use `MailDevResource`, then press to continue. -1. Finally, use the and keys to navigate to the desired template version. This example uses 13.1.0. +1. Finally, use the and keys to navigate to the desired template version. This example uses 13.5.0. ```bash title="Change directory" @@ -140,7 +144,7 @@ Aspire resources are just classes and methods contained within a class library t 2. Add `Aspire.Hosting` to the class library as a package reference. ```bash title=".NET CLI" - dotnet add ./MailDev.Hosting/MailDev.Hosting.csproj package Aspire.Hosting --version 13.1.0 + dotnet add ./MailDev.Hosting/MailDev.Hosting.csproj package Aspire.Hosting --version 13.5.0 ``` :::note @@ -200,6 +204,7 @@ Replace the contents of the `Class1.cs` file in the `MailDev.Hosting` project, a // an alternative namespace. namespace Aspire.Hosting.ApplicationModel; +[AspireExport] public sealed class MailDevResource([ResourceName] string name) : ContainerResource(name), IResourceWithConnectionString { @@ -256,6 +261,7 @@ public static class MailDevResourceBuilderExtensions /// An instance that /// represents the added MailDev resource. /// + [AspireExport] public static IResourceBuilder AddMailDev( this IDistributedApplicationBuilder builder, [ResourceName] string name, @@ -301,7 +307,12 @@ This example uses MailDev version 2.2.1. Be sure to check the [MailDev Docker Hu ## Validate custom integration inside the AppHost -Now that the basic structure for the custom resource is complete it's time to test it in a real AppHost project. Open the `AppHost.cs` file in the `MailDevResource.AppHost` project and update it with the following code: +Now that the basic structure for the custom resource is complete, test it in an AppHost. The `[AspireExport]` attributes make the same C# implementation available to both AppHost languages. + + + + +Open the `AppHost.cs` file in the `MailDevResource.AppHost` project and update it with the following code: ```csharp title="AppHost.cs" var builder = DistributedApplication.CreateBuilder(args); @@ -311,6 +322,36 @@ var maildev = builder.AddMailDev("maildev"); builder.Build().Run(); ``` + + + +Reference the local integration project from `aspire.config.json`. The key is the integration assembly name, and the project path is relative to the configuration file: + +```json title="aspire.config.json" +{ + "packages": { + "MailDev.Hosting": "MailDev.Hosting/MailDev.Hosting.csproj" + } +} +``` + +Run `aspire restore` to generate the typed API, then use `addMailDev` in the AppHost: + +```typescript title="apphost.mts" +import { createBuilder } from './.aspire/modules/aspire.mjs'; + +const builder = await createBuilder(); + +const maildev = await builder.addMailDev('maildev'); + +await builder.build().run(); +``` + +Files under `.aspire/modules` are generated and shouldn't be edited. + + + + After updating the `AppHost.cs` file, launch the AppHost project and open the dashboard: ```bash title="Aspire CLI — run" diff --git a/src/frontend/src/content/docs/integrations/custom-integrations/secure-communication.mdx b/src/frontend/src/content/docs/integrations/custom-integrations/secure-communication.mdx index 45965184e..8eef2c61c 100644 --- a/src/frontend/src/content/docs/integrations/custom-integrations/secure-communication.mdx +++ b/src/frontend/src/content/docs/integrations/custom-integrations/secure-communication.mdx @@ -3,7 +3,7 @@ title: Secure communication between integrations description: Learn how to secure communication between Aspire hosting and client integrations with HTTPS, mutual TLS, secret-backed parameters, and managed identities in production. --- -import { Aside, Steps } from '@astrojs/starlight/components'; +import { Aside, Steps, Tabs, TabItem } from '@astrojs/starlight/components'; import { Kbd } from 'starlight-kbd/components'; import ThemeImage from '@components/ThemeImage.astro'; import maildevDetails from '@assets/integrations/custom-integrations/maildev-details.png'; @@ -13,6 +13,8 @@ import newsletterDetailsLight from '@assets/integrations/custom-integrations/new This article is a continuation of two previous articles demonstrating the creation of [custom hosting integrations](/integrations/custom-integrations/hosting-integrations/) and [custom client integrations](/integrations/custom-integrations/client-integrations/). +The [MailDev and MailKit custom integrations sample](https://github.com/microsoft/aspire-samples/tree/main/samples/maildev-mailkit) shows the complete secure flow with both TypeScript and C# AppHost examples. The Aspire CLI uses [Aspire Type System (ATS)](/extensibility/multi-language-integration-authoring/) metadata from the C# hosting integration to generate its TypeScript API. + One of the primary benefits to Aspire is how it simplifies the configurability of resources and consuming clients (or integrations). This article demonstrates how to share authentication credentials from a custom resource in a hosting integration, to the consuming client in a custom client integration. The custom resource is a MailDev container that allows for either incoming or outgoing credentials. The custom client integration is a MailKit client that sends emails. ## Prerequisites @@ -51,8 +53,9 @@ The MailDev container supports basic authentication for both incoming and outgoi // an alternative namespace. namespace Aspire.Hosting.ApplicationModel; +[AspireExport] public sealed class MailDevResource( - string name, + [ResourceName] string name, ParameterResource? username, ParameterResource password) : ContainerResource(name), IResourceWithConnectionString @@ -123,9 +126,10 @@ public static class MailDevResourceBuilderExtensions /// An instance that /// represents the added MailDev resource. /// + [AspireExport] public static IResourceBuilder AddMailDev( this IDistributedApplicationBuilder builder, - string name, + [ResourceName] string name, int? httpPort = null, int? smtpPort = null, IResourceBuilder? username = null, @@ -174,35 +178,63 @@ internal static class MailDevContainerImageTags } ``` -The preceding code updates the `AddMailDev` extension method to include the `userName` and `password` parameters. The `WithEnvironment` method is updated to include the `UserEnvVarName` and `PasswordEnvVarName` environment variables. These environment variables are used to set the MailDev username and password. +The preceding code updates the `AddMailDev` extension method to include the `username` and `password` parameters. The `WithEnvironment` method is updated to include the `UserEnvVarName` and `PasswordEnvVarName` environment variables. These environment variables are used to set the MailDev username and password. ## Update the AppHost -Now that the resource is updated to include the username and password parameters, you need to update the AppHost to include these parameters. Update the `AppHost.cs` file in the `MailDevResource.AppHost` project with the following C# code: +Now that the resource includes username and password parameters, update the AppHost to provide them. Mark the password parameter as secret so tooling and deployment environments can handle it appropriately. + + + -```csharp {3-4,6-9} title="AppHost.cs" +```csharp title="AppHost.cs" var builder = DistributedApplication.CreateBuilder(args); var mailDevUsername = builder.AddParameter("maildev-username"); -var mailDevPassword = builder.AddParameter("maildev-password"); +var mailDevPassword = builder.AddParameter("maildev-password", secret: true); var maildev = builder.AddMailDev( name: "maildev", - userName: mailDevUsername, + username: mailDevUsername, password: mailDevPassword); builder.AddProject("newsletterservice") - .WithUrlForEndpoint("https", e => - { - e.DisplayText = "Scalar"; - e.Url += "/scalar"; - }) .WithReference(maildev); builder.Build().Run(); ``` -The preceding code adds two parameters for the MailDev username and password. It assigns these parameters to the MailDev resource. The `AddMailDev` method has two chained calls to `WithEnvironment` which includes these environment variables. + + + +After referencing the hosting integration in `aspire.config.json`, run `aspire restore`. The Aspire CLI generates the `addMailDev` method and its typed options. + +```typescript title="apphost.mts" +import { createBuilder } from './.aspire/modules/aspire.mjs'; + +const builder = await createBuilder(); + +const mailDevUsername = await builder.addParameter('maildev-username'); +const mailDevPassword = await builder.addParameter( + 'maildev-password', + { secret: true } +); + +const maildev = await builder.addMailDev('maildev', { + username: mailDevUsername, + password: mailDevPassword +}); + +await builder.addCSharpApp('newsletterservice', './NewsletterService') + .withReference(maildev); + +await builder.build().run(); +``` + + + + +The preceding code adds parameters for the MailDev username and password, then passes them to the MailDev resource. The resource provides the credentials to the container through environment variables. Next, configure the secrets for these parameters. Right-click on the `MailDevResource.AppHost` project and select `Manage User Secrets` (from within Visual Studio Code or Visual Studio). Add the following JSON to the `secrets.json` file: diff --git a/src/frontend/src/content/docs/integrations/databases/efcore/seed-database.mdx b/src/frontend/src/content/docs/integrations/databases/efcore/seed-database.mdx index 985fe362e..f0515f5ec 100644 --- a/src/frontend/src/content/docs/integrations/databases/efcore/seed-database.mdx +++ b/src/frontend/src/content/docs/integrations/databases/efcore/seed-database.mdx @@ -108,7 +108,7 @@ GO You must ensure that this script is copied to the AppHost's output directory, so that Aspire can execute it. Add the following XML to your *.csproj* file: ```xml title="DatabaseContainers.AppHost.csproj" {11-15} - + Exe @@ -129,9 +129,9 @@ You must ensure that this script is copied to the AppHost's output directory, so - - - + + + diff --git a/src/frontend/src/content/docs/integrations/devtools/dev-tunnels.mdx b/src/frontend/src/content/docs/integrations/devtools/dev-tunnels.mdx index c8079444e..28ab0d978 100644 --- a/src/frontend/src/content/docs/integrations/devtools/dev-tunnels.mdx +++ b/src/frontend/src/content/docs/integrations/devtools/dev-tunnels.mdx @@ -149,13 +149,12 @@ var web = builder.AddProject("web"); var options = new DevTunnelOptions { - TunnelId = "my-tunnel-id", Description = "QA environment tunnel", - Labels = new[] { "qa", "testing" }, + Labels = ["qa", "testing"], AllowAnonymous = false }; -var tunnel = builder.AddDevTunnel("qa", options) +var tunnel = builder.AddDevTunnel("qa", tunnelId: "my-tunnel-id", options: options) .WithReference(web); ``` @@ -167,12 +166,8 @@ const builder = await createBuilder(); const web = await builder.addNodeApp("web", "../web", "index.js"); -const tunnel = await builder.addDevTunnel("qa", { - tunnelId: "my-tunnel-id", - description: "QA environment tunnel", - labels: ["qa", "testing"], - allowAnonymous: false, -}).withReference(web); +const tunnel = await builder.addDevTunnel("qa", "my-tunnel-id", false, "QA environment tunnel", ["qa", "testing"]) + .withReference(web); ``` @@ -246,6 +241,12 @@ The `DevTunnelOptions` class provides several configuration options: | `Description` | A description for the tunnel that appears in the dev tunnels service | | `Labels` | A list of labels to apply to the tunnel for organization and filtering | | `AllowAnonymous` | Whether to allow anonymous access to the entire tunnel | +| `Region` | The `DevTunnelRegion` to create the tunnel in; automatic when unset | + + ### Dev tunnel port options diff --git a/src/frontend/src/content/docs/integrations/dotnet/csharp-file-based-apps.mdx b/src/frontend/src/content/docs/integrations/dotnet/csharp-file-based-apps.mdx index cd897a885..3481117a6 100644 --- a/src/frontend/src/content/docs/integrations/dotnet/csharp-file-based-apps.mdx +++ b/src/frontend/src/content/docs/integrations/dotnet/csharp-file-based-apps.mdx @@ -212,8 +212,8 @@ The available options are the same as those used with `AddProject`: You can also write the AppHost itself as a file-based C# app using the `#:sdk` directive: ```csharp title="apphost.cs" -#:sdk Aspire.AppHost.Sdk@13.1.0 -#:package Aspire.Hosting.Redis@13.1.0 +#:sdk Aspire.AppHost.Sdk@%ASPIRE_VERSION% +#:package Aspire.Hosting.Redis@%ASPIRE_VERSION% #pragma warning disable ASPIRECSHARPAPPS001 diff --git a/src/frontend/src/content/docs/integrations/dotnet/project-resources.mdx b/src/frontend/src/content/docs/integrations/dotnet/project-resources.mdx index eaab0bc3f..26f6b3c3e 100644 --- a/src/frontend/src/content/docs/integrations/dotnet/project-resources.mdx +++ b/src/frontend/src/content/docs/integrations/dotnet/project-resources.mdx @@ -413,7 +413,18 @@ builder.AddProject("apiservice") ``` -The TypeScript AppHost doesn't currently expose `WithEndpointsInEnvironment`. To exclude an endpoint from environment variable injection, define only the endpoints you need and omit the `admin` endpoint from the project resource. +```typescript title="apphost.mts" +import { createBuilder } from './.aspire/modules/aspire.mjs'; + +const builder = await createBuilder(); + +await builder.addProject("apiservice", "../Networking.ApiService/Networking.ApiService.csproj") + .withHttpsEndpoint() + .withHttpsEndpoint({ port: 19227, name: "admin" }) + .withEndpointsInEnvironment(["https"]); // include only "https"; "admin" is excluded + +await builder.build().run(); +``` diff --git a/src/frontend/src/content/docs/integrations/frameworks/bun-apps.mdx b/src/frontend/src/content/docs/integrations/frameworks/bun-apps.mdx index 3f92c750d..e5cccbc74 100644 --- a/src/frontend/src/content/docs/integrations/frameworks/bun-apps.mdx +++ b/src/frontend/src/content/docs/integrations/frameworks/bun-apps.mdx @@ -120,6 +120,8 @@ await builder.build().run(); - **appDirectory**: The path to the directory containing your Bun application, relative to the AppHost project. - **scriptPath**: The script to run relative to `appDirectory`, such as `server.ts`. +The resource is typed as `BunAppResource`. + ### Specify a custom entrypoint Pass a different `scriptPath` to run a different script: @@ -210,6 +212,7 @@ console.log(`Server listening on port ${server.port}`); ## See also - [📦 Aspire.Hosting.JavaScript](https://www.nuget.org/packages/Aspire.Hosting.JavaScript) +- [JavaScript hosting integration](/integrations/frameworks/javascript/) - [Bun documentation](https://bun.sh/docs) - [Aspire integrations overview](/integrations/overview/) - [Aspire GitHub repo](https://github.com/microsoft/aspire) diff --git a/src/frontend/src/content/docs/integrations/frameworks/dotnet/dotnet-get-started.mdx b/src/frontend/src/content/docs/integrations/frameworks/dotnet/dotnet-get-started.mdx new file mode 100644 index 000000000..d7489189c --- /dev/null +++ b/src/frontend/src/content/docs/integrations/frameworks/dotnet/dotnet-get-started.mdx @@ -0,0 +1,59 @@ +--- +title: Get started with the .NET / C# app integration +description: Understand how the Aspire Dotnet hosting integration runs C# projects and file-based apps by path from your AppHost and how to choose the right setup path. +--- + +import { LinkButton, Steps } from '@astrojs/starlight/components'; +import ThemeImage from '@components/ThemeImage.astro'; +import csharpIcon from '@assets/icons/csharp.svg'; + + + +The Aspire `Aspire.Hosting.Dotnet` integration lets you add C# projects and file-based C# apps to your AppHost **by path**, without referencing a project from the AppHost's own solution. It's the C# peer of the `Aspire.Hosting.Go`, `Aspire.Hosting.Python`, and `Aspire.Hosting.JavaScript` hosting integrations. + +:::caution[Experimental] +`AddDotnetProject` / `addDotnetProject` is experimental and exposed under the `ASPIREDOTNETPROJECT001` diagnostic. Its API surface may change in future releases. +::: + +## Why use the Dotnet hosting integration + +Adding C# apps by path through `Aspire.Hosting.Dotnet` gives you: + +- **Path-based orchestration for C#.** Model a C# project or a file-based `.cs` app in the AppHost the same way you'd model a Go, Python, or JavaScript app added by path, without adding the project to the AppHost's solution. +- **File-based app support.** Add a single `.cs` file-based app (requires .NET 10 or later) directly, matching the file-based apps experience for `dotnet run --file`. +- **Familiar launch and configuration behavior.** Endpoints, environment variables, and service discovery are configured from the project's `launchSettings.json` and Kestrel configuration, matching `AddProject`. + +## How the pieces fit together + +The Dotnet integration is a **hosting integration**. You install it in the AppHost and use `AddDotnetProject` / `addDotnetProject` to add a C# project or file-based app resource by path. + + + +1. ### Set up C# apps in the AppHost + + Add the `Aspire.Hosting.Dotnet` hosting integration to your AppHost, then use `AddDotnetProject` / `addDotnetProject` to model a C# project or file-based app resource by path. The host reference covers package installation, path resolution, and launch behavior. + + + Set up .NET / C# apps in the AppHost + + + + +## See also + +- [.NET documentation](https://learn.microsoft.com/dotnet/) +- [.NET / C# AppHost setup reference](/integrations/frameworks/dotnet/dotnet-host/) +- [Aspire integrations overview](/integrations/overview/) diff --git a/src/frontend/src/content/docs/integrations/frameworks/dotnet/dotnet-host.mdx b/src/frontend/src/content/docs/integrations/frameworks/dotnet/dotnet-host.mdx new file mode 100644 index 000000000..9380d427d --- /dev/null +++ b/src/frontend/src/content/docs/integrations/frameworks/dotnet/dotnet-host.mdx @@ -0,0 +1,220 @@ +--- +title: Set up .NET / C# apps in the AppHost +seoTitle: 'Set up .NET / C# apps in the Aspire AppHost: hosting integration' +description: Learn how to use the Aspire Dotnet hosting integration to add C# projects and file-based C# apps by path in an Aspire solution. +--- + +import { Tabs, TabItem } from '@astrojs/starlight/components'; +import LearnMore from '@components/LearnMore.astro'; +import ThemeImage from '@components/ThemeImage.astro'; +import csharpIcon from '@assets/icons/csharp.svg'; + + + +This article is the reference for the Aspire Dotnet hosting integration. It enumerates the AppHost APIs — with examples for both `AppHost.cs` and `apphost.mts` — that you use to add C# projects and file-based C# apps **by path** in your [`AppHost`](/get-started/app-host/) project. + +If you're new to the Dotnet integration, start with the [Get started with the .NET / C# app integration](/integrations/frameworks/dotnet/dotnet-get-started/) guide. + +:::caution[Experimental] +`AddDotnetProject` / `addDotnetProject` is experimental and exposed under the `ASPIREDOTNETPROJECT001` diagnostic. Its API surface may change in future releases. +::: + +If your C# AppHost needs to reference the resource type directly — for example, to declare a strongly typed variable or a method parameter — import it from the `Aspire.Hosting.Dotnet` namespace, matching the pattern used by the Go, Python, and JavaScript hosting integrations: + +```csharp +using Aspire.Hosting.Dotnet; + +var builder = DistributedApplication.CreateBuilder(args); + +IResourceBuilder api = + builder.AddDotnetProject("api", "../api/api.csproj"); +``` + +:::note[Prerequisites] +The **.NET SDK** must be available on the `PATH` of the machine running the AppHost. File-based C# apps (`.cs`) require **.NET 10 or later**. +::: + +## Installation + +To start building an Aspire app that adds a C# project or file-based app by path, install the [📦 Aspire.Hosting.Dotnet](https://www.nuget.org/packages/Aspire.Hosting.Dotnet) NuGet package: + + + + +```bash title="Terminal" +aspire add Aspire.Hosting.Dotnet +``` + + + Learn more about [`aspire add`](/reference/cli/commands/aspire-add/) in the + command reference. + + +Or, choose a manual installation approach: + +```csharp title="AppHost.cs" +#:package Aspire.Hosting.Dotnet@* +``` + +```xml title="AppHost.csproj" + +``` + + + + +```bash title="Terminal" +aspire add Aspire.Hosting.Dotnet +``` + + + Learn more about [`aspire add`](/reference/cli/commands/aspire-add/) in the + command reference. + + +This updates your `aspire.config.json` with the Dotnet hosting integration package: + +```json title="aspire.config.json" ins={3} +{ + "packages": { + "Aspire.Hosting.Dotnet": "13.5.0" + } +} +``` + + + + +## Add a C# project or file-based app by path + +Use `AddDotnetProject` / `addDotnetProject` to add a C# project or file-based app resource by path. The `path` argument can point at a project file (`.csproj`), a directory containing a single `.csproj`, or a file-based app (`.cs`). If the path isn't absolute, it's computed relative to the AppHost directory. + + + + +```csharp title="AppHost.cs" +var builder = DistributedApplication.CreateBuilder(args); + +var api = builder.AddDotnetProject("api", "../api/api.csproj") + .WithHttpEndpoint(port: 8080) + .WithExternalHttpEndpoints(); + +builder.Build().Run(); +``` + + + + +```typescript title="apphost.mts" +import { createBuilder } from './.aspire/modules/aspire.mjs'; + +const builder = await createBuilder(); + +const api = await builder.addDotnetProject('api', '../api/api.csproj'); +await api.withHttpEndpoint({ port: 8080 }); +await api.withExternalHttpEndpoints(); + +await builder.build().run(); +``` + + + + +The resource launches with `dotnet run --project ` for a project file, or `dotnet run --file ` for a file-based app. Endpoints, environment variables, and service discovery are configured from the project's `launchSettings.json` and Kestrel configuration, matching `AddProject`. + +## Add a file-based C# app + +A file-based app is a single `.cs` file run directly with `dotnet run --file`, without a `.csproj`. File-based apps require **.NET 10 or later**. + + + + +```csharp title="AppHost.cs" +var builder = DistributedApplication.CreateBuilder(args); + +builder.AddDotnetProject("inventoryservice", @"..\InventoryService.cs"); + +builder.Build().Run(); +``` + + + + +```typescript title="apphost.mts" +import { createBuilder } from './.aspire/modules/aspire.mjs'; + +const builder = await createBuilder(); + +await builder.addDotnetProject('inventoryservice', '../InventoryService.cs'); + +await builder.build().run(); +``` + + + + +## Configure options + +Pass a configuration action to set additional options such as the launch profile: + + + + +```csharp title="AppHost.cs" +var builder = DistributedApplication.CreateBuilder(args); + +builder.AddDotnetProject("inventoryservice", @"..\InventoryService.cs", o => o.LaunchProfileName = "https"); + +builder.Build().Run(); +``` + + + + +```typescript title="apphost.mts" +import { createBuilder } from './.aspire/modules/aspire.mjs'; + +const builder = await createBuilder(); + +await builder.addDotnetProject('inventoryservice', '../InventoryService.cs', { + launchProfileName: 'https', +}); + +await builder.build().run(); +``` + + + + +The resource is added as an [`ExecutableResource`](/app-host/executable-resources/) rather than a `ProjectResource`, so it doesn't need to be referenced from the AppHost's own solution. Before the resource starts, Aspire validates that the path resolves to a `.csproj` or `.cs` file (or a directory containing a single `.csproj`) and, for file-based apps, that the active .NET SDK version is 10 or later. + +## Publishing + +Automatic project publishing for `DotnetProjectResource` isn't currently supported. A plain +`DotnetProjectResource` causes `aspire publish` and `aspire deploy` to fail with an actionable error +instead of emitting an `executable.v0` manifest containing machine-local paths. + +Use one of these alternatives: + +- Use `AddProject(...)` for a project referenced by a C# AppHost. +- Use `AddCSharpApp(...)` / `addCSharpApp(...)` for a path-based project or file-based app that + should use standard .NET project publishing. +- Call `PublishAsDockerFile(...)` / `publishAsDockerFile(...)` to configure container publishing + explicitly. +- Call `ExcludeFromManifest()` / `excludeFromManifest()` when the resource is intentionally + available only during local orchestration. + +## See also + +- [.NET documentation](https://learn.microsoft.com/dotnet/) +- [Get started with the .NET / C# app integration](/integrations/frameworks/dotnet/dotnet-get-started/) +- [Aspire integrations overview](/integrations/overview/) +- [Aspire GitHub repo](https://github.com/microsoft/aspire) diff --git a/src/frontend/src/content/docs/integrations/frameworks/go/go-host.mdx b/src/frontend/src/content/docs/integrations/frameworks/go/go-host.mdx index 036e0568a..2c5ffc326 100644 --- a/src/frontend/src/content/docs/integrations/frameworks/go/go-host.mdx +++ b/src/frontend/src/content/docs/integrations/frameworks/go/go-host.mdx @@ -375,7 +375,7 @@ For GoLand, VS Code attach mode, or another Delve-compatible client, use `WithDe var builder = DistributedApplication.CreateBuilder(args); var api = builder.AddGoApp("api", "./api") - .WithDelveServer(port: 2345) + .WithDelveServer() .WithHttpEndpoint(port: 8080, env: "PORT"); builder.Build().Run(); @@ -390,7 +390,7 @@ import { createBuilder } from './.aspire/modules/aspire.mjs'; const builder = await createBuilder(); const api = await builder.addGoApp('api', './api'); -await api.withDelveServer({ port: 2345 }); +await api.withDelveServer(); await api.withHttpEndpoint({ port: 8080, env: 'PORT' }); await builder.build().run(); @@ -399,6 +399,56 @@ await builder.build().run(); +By default the Delve server accepts a single debugger client on port `2345`. To accept multiple +clients, keep the server running after a client disconnects, or configure additional Delve flags, +pass a `DelveServerOptions` instance: + + + + +```csharp title="AppHost.cs" +var api = builder.AddGoApp("api", "./api") + .WithDelveServer(new DelveServerOptions + { + AcceptMultiClient = true, + ContinueOnStart = true, + Log = true, + LogOutput = "rpc,dap,debugger", + }) + .WithHttpEndpoint(port: 8080, env: "PORT"); +``` + + + + +```typescript title="apphost.mts" +const api = await builder.addGoApp('api', './api'); +await api.withDelveServer({ + acceptMultiClient: true, + continueOnStart: true, + log: true, + logOutput: 'rpc,dap,debugger', +}); +``` + + + + +| Option | Default | Delve behavior | +|---|---|---| +| `Port` | `2345` | Sets the loopback listener port. | +| `AcceptMultiClient` | `false` | Passes `--accept-multiclient` when enabled. | +| `OnlySameUser` | `null` | Passes `--only-same-user=true` or `--only-same-user=false` when set. | +| `ContinueOnStart` | `false` | Passes `--continue` when enabled. | +| `Log` | `false` | Passes `--log` when enabled. | +| `LogOutput` | `null` | Passes `--log-output=` when logging is enabled and components are specified. | + +:::note +`WithDelveServer(int port = 2345)` remains available as an obsolete overload for binary +compatibility and preserves its original single-client behavior. New code should use +`WithDelveServer()` or `WithDelveServer(DelveServerOptions)` instead. +::: + Start your attach configuration after the Go resource is running in the Aspire dashboard. For GoLand, create a **Go Remote** configuration with host `localhost` and port `2345`. For VS Code attach mode, add a launch configuration like this: ```json title=".vscode/launch.json" diff --git a/src/frontend/src/content/docs/integrations/frameworks/javascript.mdx b/src/frontend/src/content/docs/integrations/frameworks/javascript.mdx index b9c7d71f0..203bff73c 100644 --- a/src/frontend/src/content/docs/integrations/frameworks/javascript.mdx +++ b/src/frontend/src/content/docs/integrations/frameworks/javascript.mdx @@ -33,6 +33,7 @@ The integration exposes a number of app resource types: - `NodeAppResource`: Added with `AddNodeApp` / `addNodeApp` for running specific JavaScript files with Node.js - `ViteAppResource`: Added with `AddViteApp` / `addViteApp` for Vite applications with Vite-specific defaults - `NextJsAppResource`: Added with `AddNextJsApp` / `addNextJsApp` for Next.js applications with Next.js-specific run and publish defaults +- `BunAppResource`: Added with `AddBunApp` / `addBunApp` for applications running on the [Bun](https://bun.sh/) runtime — see the [Bun integration](/integrations/frameworks/bun-apps/) for details ## Framework examples diff --git a/src/frontend/src/content/docs/it/index.mdx b/src/frontend/src/content/docs/it/index.mdx index c86f40ac3..9ebc40b27 100644 --- a/src/frontend/src/content/docs/it/index.mdx +++ b/src/frontend/src/content/docs/it/index.mdx @@ -11,7 +11,7 @@ prev: false next: false banner: content: | - 🚀 Aspire 13.4 è disponibile!Scopri le novità di Aspire 13.4. + ✨ Aspire 13.5 è disponibile!Scopri le novità di Aspire 13.5. bannerAutoDismissAfterDays: 14 hero: tagline: Il tuo stack, semplificato.

Orchestra frontend, API, container e database senza sforzo—senza riscritture, senza limiti. Estendi Aspire per potenziare qualsiasi progetto.

diff --git a/src/frontend/src/content/docs/ja/app-host/configuration.mdx b/src/frontend/src/content/docs/ja/app-host/configuration.mdx index 1e85a7be3..6ae2fd6d8 100644 --- a/src/frontend/src/content/docs/ja/app-host/configuration.mdx +++ b/src/frontend/src/content/docs/ja/app-host/configuration.mdx @@ -128,7 +128,6 @@ Aspire アプリが起動すると、新しいバージョンの Aspire が NuGe | `ASPIRE_DASHBOARD_UNSECURED_ALLOW_ANONYMOUS`| `false` | ダッシュボードが認証を使用しないように設定し、匿名アクセスを受け入れます。フロントエンド、OTLP、MCP、および API 認証モードを `Unsecured` に設定します。 | | `ASPIRE_DASHBOARD_FRONTEND_BROWSERTOKEN` | 自動生成された 128 ビットエントロピートークン。 | フロントエンドブラウザトークンを設定します。これは、認証モードが BrowserToken である場合にダッシュボードにアクセスするために入力する必要がある値です。ブラウザトークンが指定されていない場合、AppHost が起動されるたびに新しいトークンが生成されます。 | | `ASPIRE_DASHBOARD_TELEMETRY_OPTOUT` | `false` | ダッシュボードが[使用テレメトリ](/ja/dashboard/microsoft-collected-dashboard-telemetry/)を送信しないように設定します。 | -| `ASPIRE_DASHBOARD_AI_DISABLED` | `true` | 将来の使用のために予約されています。ダッシュボード内の GitHub Copilot UI は Aspire 13.3 で削除されました。AI コーディングエージェントは、[Aspire CLI および MCP サーバー](/ja/dashboard/ai-coding-agents/)を通じてテレメトリデータにアクセスできます。 | | `ASPIRE_DASHBOARD_API_ENABLED` | `true` | ダッシュボード[テレメトリ API](/ja/dashboard/configuration/#api)(`/api/telemetry/*`)エンドポイントを有効にします。AppHost は常にこれを `true` に設定します。 | | `ASPIRE_DASHBOARD_FORWARDEDHEADERS_ENABLED` | `false` | `X-Forwarded-Proto` および `X-Forwarded-Host` ヘッダーから来ている値を使用して、Request コンテキストのスキーマとホスト値を置き換える転送ヘッダーミドルウェアを有効にします。 | diff --git a/src/frontend/src/content/docs/ja/docs.mdx b/src/frontend/src/content/docs/ja/docs.mdx index cc4849a01..6b8592a91 100644 --- a/src/frontend/src/content/docs/ja/docs.mdx +++ b/src/frontend/src/content/docs/ja/docs.mdx @@ -7,7 +7,7 @@ next: description: Aspire を使って、C#、TypeScript、JavaScript、Python などの分散アプリケーションを設計・実行・観測・デプロイする方法を学べます。 banner: content: | - 🆕 Aspire 13.4 が登場!新機能を見る + 🆕 Aspire 13.5 が登場!新機能を見る bannerAutoDismissAfterDays: 14 editUrl: false tableOfContents: false @@ -25,7 +25,10 @@ import aspireLogo from '@assets/aspire-logo-256.svg'; highlight="あなたのスタックに合わせて。" subtitle="Aspire は、分散アプリケーション向けのコードファーストなオーケストレーション兼オブザーバビリティ レイヤーです。あなたのリポジトリ、ランタイム、ワークフローに合ったルートから始めましょう。" logo={aspireLogo} - primaryCta={{ label: '最初のアプリを作成する', href: '/ja/get-started/first-app/' }} + primaryCta={{ + label: '最初のアプリを作成する', + href: '/ja/get-started/first-app/', + }} secondaryCta={{ label: 'Aspire とは?', href: '/ja/get-started/what-is-aspire/', diff --git a/src/frontend/src/content/docs/ja/fundamentals/external-parameters.mdx b/src/frontend/src/content/docs/ja/fundamentals/external-parameters.mdx index 6ca2ce43b..96432b725 100644 --- a/src/frontend/src/content/docs/ja/fundamentals/external-parameters.mdx +++ b/src/frontend/src/content/docs/ja/fundamentals/external-parameters.mdx @@ -517,9 +517,11 @@ builder.AddProject("customerapi ```csharp title="AppHost.cs" var builder = DistributedApplication.CreateBuilder(args); -var db = builder.AddSqlServer("sql") - .PublishAsConnectionString() - .AddDatabase("db"); +// 実行モードでは実際の SQL Server リソースを追加します。 +// 発行モードでは外部 SQL Server インスタンスを表す接続文字列を使用します。 +IResourceBuilder db = builder.ExecutionContext.IsRunMode + ? builder.AddSqlServer("sql").AddDatabase("db") + : builder.AddConnectionString("db"); var insertionRows = builder.AddParameter("insertionRows"); @@ -538,8 +540,13 @@ import { createBuilder } from './.aspire/modules/aspire.mjs'; const builder = await createBuilder(); -const db = (await builder.addSqlServer("sql")) - .addDatabase("db"); +// 実行モードでは実際の SQL Server リソースを追加します。 +// 発行モードでは外部 SQL Server インスタンスを表す接続文字列を使用します。 +const isRunMode = await builder.executionContext.isRunMode(); + +const db = isRunMode + ? (await builder.addSqlServer("sql")).addDatabase("db") + : await builder.addConnectionString("db"); const insertionRows = await builder.addParameter("insertionRows"); @@ -557,12 +564,11 @@ await builder.build().run(); -1. `sql` という名前の SQL Server リソースを追加し、接続文字列として公開します。 -2. `db` という名前のデータベースを追加します。 -3. `insertionRows` という名前のパラメーターを追加します。 -4. `api` という名前のプロジェクトを追加し、それを `Projects.Parameters_ApiService` のプロジェクト リソース型として関連付けます。 -5. `insertionRows` パラメーターを `api` プロジェクトに渡します。 -6. `db` データベースを参照します。 +1. 実行モードでは `sql` という名前の SQL Server リソースと `db` という名前のデータベースを追加します。発行モードでは `db` という名前の外部接続文字列を使用します。 +2. `insertionRows` という名前のパラメーターを追加します。 +3. `api` という名前のプロジェクトを追加し、それを `Projects.Parameters_ApiService` のプロジェクト リソース型として関連付けます。 +4. `insertionRows` パラメーターを `api` プロジェクトに渡します。 +5. `db` データベースを参照します。 diff --git a/src/frontend/src/content/docs/ja/index.mdx b/src/frontend/src/content/docs/ja/index.mdx index 64f22f70f..89aca32af 100644 --- a/src/frontend/src/content/docs/ja/index.mdx +++ b/src/frontend/src/content/docs/ja/index.mdx @@ -11,7 +11,7 @@ prev: false next: false banner: content: | - Aspire 13.4 が登場しました!新機能を見る + ✨ Aspire 13.5 が登場しました!新機能を見る bannerAutoDismissAfterDays: 14 hero: tagline: あなたのスタックをもっとシンプルに。

フロントエンド、API、コンテナ、データベースを再実装不要、制限なしでオーケストレーションします。Aspire を拡張してあらゆるプロジェクトを強化しましょう。

diff --git a/src/frontend/src/content/docs/ko/index.mdx b/src/frontend/src/content/docs/ko/index.mdx index 833e148a7..b22e01cb9 100644 --- a/src/frontend/src/content/docs/ko/index.mdx +++ b/src/frontend/src/content/docs/ko/index.mdx @@ -11,7 +11,7 @@ prev: false next: false banner: content: | - 🚀 Aspire 13.4이 출시되었습니다!Aspire 13.4의 새로운 기능 확인하기. + ✨ Aspire 13.5이 출시되었습니다!Aspire 13.5의 새로운 기능 확인하기. bannerAutoDismissAfterDays: 14 hero: tagline: 당신의 스택, 단순화.

프론트엔드, API, 컨테이너, 데이터베이스를 손쉽게 오케스트레이션—재작성 불필요, 무한한 가능성. Aspire를 확장하여 모든 프로젝트를 강화하세요.

diff --git a/src/frontend/src/content/docs/languages-and-runtimes/index.mdx b/src/frontend/src/content/docs/languages-and-runtimes/index.mdx index 3d399358b..f0b4c86db 100644 --- a/src/frontend/src/content/docs/languages-and-runtimes/index.mdx +++ b/src/frontend/src/content/docs/languages-and-runtimes/index.mdx @@ -49,7 +49,7 @@ The sections below use the labels that are most helpful when you're trying to an Use Aspire with C# projects, file-based apps, and other .NET workloads. - Start with [C# file-based apps](/integrations/dotnet/csharp-file-based-apps/) or [Project resources](/integrations/dotnet/project-resources/). + Start with [C# file-based apps](/integrations/dotnet/csharp-file-based-apps/) or [Project resources](/integrations/dotnet/project-resources/). To add a C# project or file-based app **by path** without referencing it from the AppHost's solution, use the [.NET / C# integration](/integrations/frameworks/dotnet/dotnet-get-started/). diff --git a/src/frontend/src/content/docs/pt-br/index.mdx b/src/frontend/src/content/docs/pt-br/index.mdx index 9128c403f..b5e3834cd 100644 --- a/src/frontend/src/content/docs/pt-br/index.mdx +++ b/src/frontend/src/content/docs/pt-br/index.mdx @@ -11,7 +11,7 @@ prev: false next: false banner: content: | - 🚀 Aspire 13.4 foi lançado!Veja o que há de novo no Aspire 13.4. + ✨ Aspire 13.5 foi lançado!Veja o que há de novo no Aspire 13.5. bannerAutoDismissAfterDays: 14 hero: tagline: Seu stack, simplificado.

Orquestre frontends, APIs, contêineres e bancos de dados sem esforço—sem reescritas, sem limites. Estenda o Aspire para impulsionar qualquer projeto.

diff --git a/src/frontend/src/content/docs/reference/cli/commands/aspire-add.mdx b/src/frontend/src/content/docs/reference/cli/commands/aspire-add.mdx index 54a47daf5..6a5e45169 100644 --- a/src/frontend/src/content/docs/reference/cli/commands/aspire-add.mdx +++ b/src/frontend/src/content/docs/reference/cli/commands/aspire-add.mdx @@ -26,6 +26,10 @@ The `aspire add` command searches for an integration package and adds it to the +:::note[Integration discovery on prerelease CLI builds] +When you're running a `staging` or `dev` quality CLI (see [`-Quality|--quality`](/reference/cli/install-script/#options)), `aspire add` discovers both stable and prerelease integration packages, because some integrations — such as `Aspire.Hosting.Azure.Kubernetes` — intentionally ship as prerelease even during a stable-shaped staging build. A `release` quality CLI continues to search stable packages only, but can still add a specific prerelease integration version with the `--version` option. +::: + ## Arguments The following arguments are available: @@ -81,3 +85,9 @@ The following options are available: ```bash title="Aspire CLI" aspire add redis --apphost './apphost.mts' ``` + +- Add the **azure-kubernetes** integration from a stable-shaped `staging` quality CLI, where the integration remains prerelease even though most other packages are stable: + + ```bash title="Aspire CLI" + aspire add azure-kubernetes + ``` diff --git a/src/frontend/src/content/docs/reference/cli/commands/aspire-agent-init.mdx b/src/frontend/src/content/docs/reference/cli/commands/aspire-agent-init.mdx index e4c22ddc3..ef2a17894 100644 --- a/src/frontend/src/content/docs/reference/cli/commands/aspire-agent-init.mdx +++ b/src/frontend/src/content/docs/reference/cli/commands/aspire-agent-init.mdx @@ -52,11 +52,11 @@ The Aspire skills bundle includes six workflow skills: `aspire`, `aspire-init`, Standalone `aspire agent init` pre-selects the bundle skills that are safe to add to an existing workspace: `aspire`, `aspire-init`, `aspire-orchestration`, `aspire-monitoring`, and `aspire-deployment`. The `aspireify` skill remains available but opt-in because it's a one-time AppHost wiring workflow. When `aspire init` chains into agent setup, `aspireify` is pre-selected because it is the natural follow-up after adding an AppHost skeleton to an existing repository. -Remote bundle fetching is off by default in Aspire 13.4. To opt into downloading matching Aspire skills releases from GitHub, enable the preview feature: +### Bundle integrity verification -```bash title="Aspire CLI" -aspire config set features.aspireSkillsRemoteFetchEnabled true -``` +The CLI verifies the embedded and remotely-fetched Aspire skills bundle using +SHA-512 checksums. Per-file hashes recorded in bundles published before the +SHA-512 switch continue to validate against SHA-256. ### Installation summary diff --git a/src/frontend/src/content/docs/reference/cli/commands/aspire-certs-clean.mdx b/src/frontend/src/content/docs/reference/cli/commands/aspire-certs-clean.mdx index 0b7fefa8d..8a17064e4 100644 --- a/src/frontend/src/content/docs/reference/cli/commands/aspire-certs-clean.mdx +++ b/src/frontend/src/content/docs/reference/cli/commands/aspire-certs-clean.mdx @@ -4,6 +4,7 @@ description: Learn about the aspire certs clean command and its usage. This comm --- import Include from '@components/Include.astro'; +import { Aside } from '@astrojs/starlight/components'; ## Name @@ -19,6 +20,15 @@ aspire certs clean [options] The `aspire certs clean` command removes all HTTPS development certificates. Use it when you want to reset local certificate state before trusting a new certificate or while troubleshooting HTTPS-related local development issues. + + ## Options The following options are available: diff --git a/src/frontend/src/content/docs/reference/cli/commands/aspire-certs-trust.mdx b/src/frontend/src/content/docs/reference/cli/commands/aspire-certs-trust.mdx index 315625fc5..1f84ee03f 100644 --- a/src/frontend/src/content/docs/reference/cli/commands/aspire-certs-trust.mdx +++ b/src/frontend/src/content/docs/reference/cli/commands/aspire-certs-trust.mdx @@ -4,6 +4,7 @@ description: Learn about the aspire certs trust command and its usage. This comm --- import Include from '@components/Include.astro'; +import { Aside } from '@astrojs/starlight/components'; ## Name @@ -21,6 +22,29 @@ The `aspire certs trust` command trusts the HTTPS development certificate used b Use this command when you want to prepare a machine for Aspire local development or re-establish trust after cleaning development certificates. + + ## Options The following options are available: @@ -45,7 +69,14 @@ The following options are available: aspire certs trust ``` +- Trust the certificate non-interactively, for example on a Linux CI runner: + + ```bash title="Aspire CLI" + aspire certs trust --non-interactive + ``` + ## See also - [aspire certs](../aspire-certs/) - [aspire certs clean](../aspire-certs-clean/) +- [aspire doctor](../aspire-doctor/) diff --git a/src/frontend/src/content/docs/reference/cli/commands/aspire-dashboard-run.mdx b/src/frontend/src/content/docs/reference/cli/commands/aspire-dashboard-run.mdx index 1270c43f6..647ab093b 100644 --- a/src/frontend/src/content/docs/reference/cli/commands/aspire-dashboard-run.mdx +++ b/src/frontend/src/content/docs/reference/cli/commands/aspire-dashboard-run.mdx @@ -35,6 +35,10 @@ The dashboard is secured with a browser token by default. When the dashboard sta Any additional arguments not recognized by the CLI are forwarded directly to the dashboard process, allowing you to pass dashboard configuration settings (for example, `--Dashboard:TelemetryLimits:MaxLogCount=5000`). +The CLI initially prepares the dashboard bundle without showing a status. If preparation is still in progress after 200 ms, it shows `Preparing dashboard bits...` until the bundle is ready. The CLI then launches the dashboard process and shows the separate `Starting dashboard...` status. + +To stop the dashboard, press Ctrl+C in the terminal where it's running. The CLI prints a single `Stopping dashboard.` message when shutdown is initiated. + ## Options The following options are available: diff --git a/src/frontend/src/content/docs/reference/cli/commands/aspire-doctor.mdx b/src/frontend/src/content/docs/reference/cli/commands/aspire-doctor.mdx index d6880337d..3199e4d0f 100644 --- a/src/frontend/src/content/docs/reference/cli/commands/aspire-doctor.mdx +++ b/src/frontend/src/content/docs/reference/cli/commands/aspire-doctor.mdx @@ -33,7 +33,46 @@ This command is useful for troubleshooting when you encounter issues with Aspire - **AppHost checks**: Reports the AppHost Aspire SDK version when an AppHost project is present in the current directory - **SDK checks**: Verifies .NET SDK installation and version requirements - **Container checks**: Validates container runtime (Docker and/or Podman) availability, running status, and version. Reports which runtime is active and why (explicit configuration, auto-detected default, or auto-detected only runtime running) -- **Environment checks**: Validates environment variables and other settings, including the JavaScript toolchain required by TypeScript AppHosts (npm, pnpm, Yarn, or Bun) +- **Environment checks**: Reports operating system information (type, version, and Linux distro details when available) and validates environment variables and other settings, including the JavaScript toolchain required by TypeScript AppHosts (npm, pnpm, Yarn, or Bun) +- **Development tools checks**: When VS Code is detected, reports whether the [Aspire VS Code extension](https://aka.ms/aspire/vscode-extension) is installed + + + + + + + + The command displays results with clear status indicators: @@ -88,10 +127,10 @@ Aspire Environment Check ======================== Aspire - ✅ Aspire CLI version 13.4.0 + ✅ Aspire CLI version %ASPIRE_VERSION% AppHost - ✅ AppHost version 13.4.0 (MyApp.AppHost.csproj) + ✅ AppHost version %ASPIRE_VERSION% (MyApp.AppHost.csproj) .NET SDK ✅ .NET 10.0.203 installed (arm64) @@ -100,9 +139,10 @@ Container Runtime ✅ Docker v28.5.1: running (auto-detected (default)) ← active Environment + ✅ Operating system: macOS 15.5.0 ✅ HTTPS development certificate is trusted -Summary: 5 passed, 0 warnings, 0 failed +Summary: 6 passed, 0 warnings, 0 failed ``` After the summary, table output also includes an `Aspire CLI Installations` @@ -113,11 +153,11 @@ When the CLI is out of date, the Aspire section shows a warning with the latest ```bash title="Aspire CLI" Aspire - ⚠️ Aspire CLI version 13.4.0-dev is out of date. Latest version is 13.4.0-preview.1.26262.10 + ⚠️ Aspire CLI version %ASPIRE_VERSION%-dev is out of date. Latest version is %ASPIRE_VERSION%-preview.1.26262.10 Run 'aspire update' to update Aspire CLI. AppHost - ✅ AppHost version 13.4.0 (MyApp.AppHost.csproj) + ✅ AppHost version %ASPIRE_VERSION% (MyApp.AppHost.csproj) ``` This warning snippet is abbreviated. In complete table output, a summary follows @@ -127,6 +167,27 @@ AppHost version messages include an inline `(channel: )` suffix; the same channel data appears in JSON metadata as `identityChannel`, `latestVersionChannel`, or `pinnedChannel` when available. +On Linux, when `certutil` is not installed, the Environment section reports a warning instead of failing the check: + +```bash title="Aspire CLI" +Environment + ✅ Operating system: Linux Ubuntu 24.04 + ⚠️ certutil is not available; browser certificate trust may be incomplete + Install certutil from your distribution's NSS tools package (for example, libnss3-tools). +``` + +On Linux, when the OpenSSL development certificate cache is stale, missing the +current certificate, or contains unreadable certificate files, the Environment +section reports a warning with a suggestion to clean and re-trust the +certificate: + +```bash title="Aspire CLI" +Environment + ✅ Operating system: Linux Ubuntu 24.04 + ⚠️ OpenSSL HTTPS development certificate cache is missing the current certificate + Run 'aspire certs clean' and then 'aspire certs trust' to remove stale or corrupt certificates and regenerate trusted development certificates. +``` + When only Podman is running: ```bash title="Aspire CLI" @@ -147,6 +208,14 @@ Container Runtime The active runtime is annotated with `← active`. Other detected runtimes are shown with `(available)`. +When VS Code is detected but the Aspire extension isn't installed, the Development tools section reports a warning: + +```bash title="Aspire CLI" +Development tools + ⚠️ VS Code is installed, but the Aspire extension is not installed + Install the Aspire extension from the VS Code Marketplace for an integrated Aspire experience. +``` + ## Exit codes The command returns the following exit codes: @@ -167,19 +236,31 @@ When using the `--format Json` option, the output includes a structured response "category": "aspire", "name": "cli-version", "status": "pass", - "message": "Aspire CLI version 13.4.0", + "message": "Aspire CLI version %ASPIRE_VERSION%", "metadata": { - "currentVersion": "13.4.0" + "currentVersion": "%ASPIRE_VERSION%" } }, { "category": "apphost", "name": "apphost-version", "status": "pass", - "message": "AppHost version 13.4.0 (MyApp.AppHost.csproj)", + "message": "AppHost version %ASPIRE_VERSION% (MyApp.AppHost.csproj)", "metadata": { "appHostPath": "MyApp.AppHost.csproj", - "version": "13.4.0" + "version": "%ASPIRE_VERSION%" + } + }, + { + "category": "environment", + "name": "operating-system", + "status": "pass", + "message": "Operating system: Linux Ubuntu 24.04", + "metadata": { + "osType": "Linux", + "displayName": "Linux Ubuntu", + "version": "24.04", + "description": "Ubuntu 24.04.2 LTS" } }, { @@ -190,13 +271,33 @@ When using the `--format Json` option, the output includes a structured response } ], "summary": { - "passed": 5, + "passed": 6, "warnings": 0, "failed": 0 } } ``` +When VS Code is detected, the checks include a `devtools` category entry named `vscode-extension`. It reports `"status": "warning"` when the [Aspire VS Code extension](https://aka.ms/aspire/vscode-extension) isn't installed, and `"status": "pass"` when it is. Its `metadata` includes `vsCodeInstalled`, `extensionInstalled`, and `extensionId`: + +```json title="JSON output" +{ + "category": "devtools", + "name": "vscode-extension", + "status": "warning", + "message": "VS Code is installed, but the Aspire extension is not installed", + "fix": "Install the Aspire extension from the VS Code Marketplace for an integrated Aspire experience.", + "link": "https://aka.ms/aspire/vscode-extension", + "metadata": { + "vsCodeInstalled": true, + "extensionInstalled": false, + "extensionId": "microsoft-aspire.aspire-vscode" + } +} +``` + +This check is omitted entirely when VS Code isn't detected on the machine. + When the CLI is out of date, the `cli-version` check has `"status": "warning"` and the `metadata` includes the latest available version: ```json title="JSON output" @@ -204,17 +305,26 @@ When the CLI is out of date, the `cli-version` check has `"status": "warning"` a "category": "aspire", "name": "cli-version", "status": "warning", - "message": "Aspire CLI version 13.4.0-dev is out of date. Latest version is 13.4.0-preview.1.26262.10", + "message": "Aspire CLI version %ASPIRE_VERSION%-dev is out of date. Latest version is %ASPIRE_VERSION%-preview.1.26262.10", "fix": "Run 'aspire update' to update Aspire CLI.", "metadata": { - "currentVersion": "13.4.0-dev", - "latestVersion": "13.4.0-preview.1.26262.10" + "currentVersion": "%ASPIRE_VERSION%-dev", + "latestVersion": "%ASPIRE_VERSION%-preview.1.26262.10" } } ``` The `apphost-version` check is only present in the JSON output when an AppHost project is discovered in the current directory. +The `operating-system` check is always present and includes the following metadata fields: + +| Field | Description | +| ------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `osType` | The platform family: `Windows`, `macOS`, or `Linux`. | +| `displayName` | A human-readable OS name, for example `Windows`, `macOS`, or `Linux Ubuntu`. | +| `version` | The OS version string. On Linux this is the `VERSION_ID` from `/etc/os-release` when available; on Windows and macOS it is the value from `Environment.OSVersion`. | +| `description` | A longer description of the OS. On Linux this is the `PRETTY_NAME` value from `/etc/os-release` (for example `Ubuntu 24.04.2 LTS`); on other platforms it is the runtime OS description string. | + ## See also - [aspire command](../aspire/) diff --git a/src/frontend/src/content/docs/reference/cli/commands/aspire-init.mdx b/src/frontend/src/content/docs/reference/cli/commands/aspire-init.mdx index 7981425e4..995e6a287 100644 --- a/src/frontend/src/content/docs/reference/cli/commands/aspire-init.mdx +++ b/src/frontend/src/content/docs/reference/cli/commands/aspire-init.mdx @@ -102,6 +102,14 @@ The following options are available: The AppHost language to scaffold (`csharp`, `typescript`). +- **`--skill-locations `** + + Comma-separated list of skill locations to configure. Use `all` to configure all supported locations or `none` to skip skill location configuration. When not specified, the command prompts interactively. Useful for non-interactive mode in scripts and CI environments. For the list of available locations, see the [`aspire agent init` command reference](../aspire-agent-init/#options). + +- **`--skills `** + + Comma-separated list of skills to install. Use `all` to install all available skills or `none` to skip skill installation. When not specified, the command prompts interactively. Useful for non-interactive mode in scripts and CI environments. For the list of available skills, see the [`aspire agent init` command reference](../aspire-agent-init/#options). + - - @@ -133,3 +141,15 @@ The following options are available: ```bash title="Aspire CLI" aspire init --channel daily ``` + +- Initialize Aspire support non-interactively without installing any agent skills: + + ```bash title="Aspire CLI" + aspire init --non-interactive --skills none + ``` + +- Initialize Aspire support non-interactively, installing all skills in the standard location: + + ```bash title="Aspire CLI" + aspire init --non-interactive --language csharp --skill-locations standard --skills all + ``` diff --git a/src/frontend/src/content/docs/reference/cli/commands/aspire-ls.mdx b/src/frontend/src/content/docs/reference/cli/commands/aspire-ls.mdx index f9fc63cb7..4635f2a7b 100644 --- a/src/frontend/src/content/docs/reference/cli/commands/aspire-ls.mdx +++ b/src/frontend/src/content/docs/reference/cli/commands/aspire-ls.mdx @@ -60,7 +60,7 @@ The following options are available: - **`--all`** - Include all candidate AppHosts by disabling Git filtering and the built-in skip list for common dependency, build-output, and tooling directories such as `bin`, `obj`, `node_modules`, `.venv`, `.git`, and `.vs`. The NuGet package cache is still excluded. + Include all candidate AppHosts by disabling Git filtering and the built-in skip list for common dependency, build-output, and tooling directories such as `bin`, `obj`, `node_modules`, `.venv`, `.git`, and `.vs`. This also includes AppHost snippet files under agent-skill directories, such as `.agents`, `.claude`, `.github/skills`, and `.opencode/skill`, which are excluded from default discovery because they're code samples rather than runnable AppHosts. The NuGet package cache is still excluded. - diff --git a/src/frontend/src/content/docs/reference/cli/commands/aspire-new.mdx b/src/frontend/src/content/docs/reference/cli/commands/aspire-new.mdx index b8cd93487..93bd29b66 100644 --- a/src/frontend/src/content/docs/reference/cli/commands/aspire-new.mdx +++ b/src/frontend/src/content/docs/reference/cli/commands/aspire-new.mdx @@ -118,10 +118,20 @@ The following options are available: If the CLI's identity does not match any registered explicit channel (for example, on a stable release or a locally-built CLI), `aspire new` falls back to ambient NuGet configuration (the implicit nuget.org channel). + Requesting `--channel staging` explicitly only resolves on `stable` or `staging` Aspire CLI builds. Daily, local, and per-PR builds don't have a deterministic staging feed, so they refuse the request with an error naming the running CLI's identity and pointing at the recovery options: install a staging or stable Aspire CLI, or set [`overrideStagingFeed`](/reference/cli/configuration/#settings-surfaced-by-aspire-config) to point at the staging feed you want to use. + - **`--suppress-agent-init`** Suppress the prompt to initialize MCP server configuration for agent environments after project creation. +- **`--skill-locations `** + + Comma-separated list of skill locations to configure. Use `all` to configure all supported locations or `none` to skip skill location configuration. When not specified, the command prompts interactively. Useful for non-interactive mode in scripts and CI environments. For the list of available locations, see the [`aspire agent init` command reference](../aspire-agent-init/#options). + +- **`--skills `** + + Comma-separated list of skills to install. Use `all` to install all available skills or `none` to skip skill installation. When not specified, the command prompts interactively. Useful for non-interactive mode in scripts and CI environments. For the list of available skills, see the [`aspire agent init` command reference](../aspire-agent-init/#options). + - - @@ -179,6 +189,18 @@ The `aspire-py-starter` template accepts the following additional options: aspire new aspire-starter --channel daily ``` +- Create a new project non-interactively without installing any agent skills: + + ```bash title="Aspire CLI" + aspire new aspire-starter --name myapp --skills none --non-interactive + ``` + +- Create a new project non-interactively and install all skills in all supported locations: + + ```bash title="Aspire CLI" + aspire new aspire-starter --name myapp --skill-locations all --skills all --non-interactive + ``` + ## Troubleshooting ### Language support not found diff --git a/src/frontend/src/content/docs/reference/cli/commands/aspire-otel-logs.mdx b/src/frontend/src/content/docs/reference/cli/commands/aspire-otel-logs.mdx index 2971234ed..a3b0ba7df 100644 --- a/src/frontend/src/content/docs/reference/cli/commands/aspire-otel-logs.mdx +++ b/src/frontend/src/content/docs/reference/cli/commands/aspire-otel-logs.mdx @@ -73,9 +73,10 @@ The following options are available: | `"quoted phrase"` | Single fragment containing spaces | | `field:value` | Field qualifier — value must match the named field | | `-field:value` | Negated qualifier — excludes matches | + | `field:>value` / `field:>=value` / `field: @@ -133,6 +134,12 @@ The following options are available: aspire otel logs --search "scope:Microsoft.EntityFrameworkCore severity:Warning" ``` +- Filter logs by timestamp: + + ```bash title="Aspire CLI" + aspire otel logs --search "timestamp:>=2026-06-01T12:00:00 severity:error" + ``` + - View logs from a standalone dashboard using the login URL (token is automatically exchanged for an API key): ```bash title="Aspire CLI" diff --git a/src/frontend/src/content/docs/reference/cli/commands/aspire-otel-spans.mdx b/src/frontend/src/content/docs/reference/cli/commands/aspire-otel-spans.mdx index 595fa1c69..628a9c0ca 100644 --- a/src/frontend/src/content/docs/reference/cli/commands/aspire-otel-spans.mdx +++ b/src/frontend/src/content/docs/reference/cli/commands/aspire-otel-spans.mdx @@ -73,10 +73,10 @@ The following options are available: | `"quoted phrase"` | Single fragment containing spaces | | `field:value` | Field qualifier — value must match the named field | | `-field:value` | Negated qualifier — excludes matches | - | `field:>N` / `field:>=N` / `field:value` / `field:>=value` / `field: @@ -134,6 +134,12 @@ The following options are available: aspire otel spans --search "@db.system:postgresql" ``` +- Filter spans by timestamp: + + ```bash title="Aspire CLI" + aspire otel spans --search "timestamp:>=2026-03-01T08:30:00 kind:server" + ``` + - View spans from a standalone dashboard using the login URL (token is automatically exchanged for an API key): ```bash title="Aspire CLI" diff --git a/src/frontend/src/content/docs/reference/cli/commands/aspire-otel-traces.mdx b/src/frontend/src/content/docs/reference/cli/commands/aspire-otel-traces.mdx index 2e174409e..27c494276 100644 --- a/src/frontend/src/content/docs/reference/cli/commands/aspire-otel-traces.mdx +++ b/src/frontend/src/content/docs/reference/cli/commands/aspire-otel-traces.mdx @@ -71,10 +71,10 @@ The following options are available: | `"quoted phrase"` | Single fragment containing spaces | | `field:value` | Field qualifier — value must match the named field | | `-field:value` | Negated qualifier — excludes matches | - | `field:>N` / `field:>=N` / `field:value` / `field:>=value` / `field: @@ -132,6 +132,12 @@ The following options are available: aspire otel traces --search "@http.status_code:500" ``` +- Filter traces by timestamp: + + ```bash title="Aspire CLI" + aspire otel traces --search "timestamp:>2026-01-15T09:30:00 status:error" + ``` + - View traces from a standalone dashboard using the login URL (token is automatically exchanged for an API key): ```bash title="Aspire CLI" diff --git a/src/frontend/src/content/docs/reference/cli/commands/aspire-ps.mdx b/src/frontend/src/content/docs/reference/cli/commands/aspire-ps.mdx index f9f430416..3d7729ed4 100644 --- a/src/frontend/src/content/docs/reference/cli/commands/aspire-ps.mdx +++ b/src/frontend/src/content/docs/reference/cli/commands/aspire-ps.mdx @@ -40,6 +40,8 @@ Log file paths are not shown in the table output. Use `aspire ps --format Json` In-scope AppHosts (those within the current directory) are displayed first, followed by out-of-scope AppHosts. +Before listing, `aspire ps` also detects and stops any orphaned AppHosts whose launching CLI process has died (for example, after a crash or a hard kill) so the output reflects only AppHosts that are actually running. This cleanup is best effort: if it fails for a given AppHost, `aspire ps` still proceeds with listing the rest. + ## Options The following options are available: diff --git a/src/frontend/src/content/docs/reference/cli/commands/aspire-resource.mdx b/src/frontend/src/content/docs/reference/cli/commands/aspire-resource.mdx index ba03f87ae..3dbd1366e 100644 --- a/src/frontend/src/content/docs/reference/cli/commands/aspire-resource.mdx +++ b/src/frontend/src/content/docs/reference/cli/commands/aspire-resource.mdx @@ -153,6 +153,16 @@ Boolean options for these commands require an explicit `true` or `false` value. The canonical command names changed in Aspire 13.4. `parameter-set` was renamed to `set-parameter` and `parameter-delete` was renamed to `delete-parameter`. The old names are accepted as aliases and continue to work. +### Azure resource location command + +Locally provisioned Azure resources also expose a `change-location` command for moving an existing resource to a different Azure region. Some Azure resource types are location-immutable, so changing their location requires Aspire to delete and recreate the live resource — which can permanently lose any data it holds. Pass `--confirm-delete true` to acknowledge this before Aspire proceeds: + +```bash title="Aspire CLI" +aspire resource my-storage change-location --location westus2 --confirm-delete true +``` + +Without `--confirm-delete true`, the command fails before any deletion, override persistence, reset, or reprovisioning occurs. For details, see [Change a resource's Azure location](/integrations/cloud/azure/local-provisioning/#change-a-resources-azure-location). + ## Options The following options are available: diff --git a/src/frontend/src/content/docs/reference/cli/commands/aspire-run.mdx b/src/frontend/src/content/docs/reference/cli/commands/aspire-run.mdx index 9e4c82ac6..e58d9a048 100644 --- a/src/frontend/src/content/docs/reference/cli/commands/aspire-run.mdx +++ b/src/frontend/src/content/docs/reference/cli/commands/aspire-run.mdx @@ -5,6 +5,7 @@ description: Learn about the aspire run command, which builds and runs an Aspire --- import Include from '@components/Include.astro'; +import { Steps } from '@astrojs/starlight/components'; import { Kbd } from 'starlight-kbd/components'; ## Name @@ -35,9 +36,34 @@ The command performs the following steps to run an Aspire AppHost: ## Stopping the AppHost -To stop the running AppHost and exit, press (or send `SIGTERM` on Linux/macOS). The CLI requests a graceful shutdown of the AppHost and its resources. +To stop the running AppHost and exit, press (or send `SIGTERM` on Linux/macOS). The shutdown follows a three-step sequence. If shutdown takes longer than a moment, a `🛑 Stopping Aspire.` message is displayed shortly after you press to confirm that shutdown is in progress. -If graceful shutdown is taking too long and you need to exit immediately, press a second time to terminate the process immediately. + + +1. **Cooperative cancellation** — The CLI requests that the AppHost stop gracefully. +2. **Graceful wait** — The CLI waits for the AppHost process to exit cleanly on its own. +3. **Automatic force-kill** — If the AppHost does not exit within the graceful timeout, the CLI terminates the process automatically. + + + +If graceful shutdown is taking too long and you need to exit immediately, press a second time. This collapses the graceful window and starts the force-kill sequence immediately. + +:::note +On Windows, TypeScript/JavaScript AppHosts started with `tsx` or `npm` run in an isolated console session so that the Ctrl+C signal is delivered correctly to the Node.js process rather than to an unrelated foreground window. +::: + +## Configuring the startup timeout + +`aspire run` waits for the AppHost to reach a stable running state before it considers startup complete. If the AppHost build or startup takes longer than the default 120-second window—for example on a slow machine or in a CI environment—set the `ASPIRE_CLI_START_TIMEOUT` environment variable to a higher number of seconds: + +```bash title="Aspire CLI" +export ASPIRE_CLI_START_TIMEOUT=300 +aspire run +``` + +If `ASPIRE_CLI_START_TIMEOUT` is set to a value that isn't a positive whole number of seconds, `aspire run` displays an error and exits without starting the AppHost. This behavior also applies to `aspire run --detach` and to `aspire start`. + +`ASPIRE_CLI_START_TIMEOUT` controls how long `aspire run` and `aspire start` wait for the AppHost to start. It's separate from `aspire wait --timeout`, which controls how long `aspire wait` waits for an individual *resource* inside an already-running AppHost to reach a target status. ## Hot Reload and watch behavior diff --git a/src/frontend/src/content/docs/reference/cli/commands/aspire-start.mdx b/src/frontend/src/content/docs/reference/cli/commands/aspire-start.mdx index 1693f1127..cebe7a17d 100644 --- a/src/frontend/src/content/docs/reference/cli/commands/aspire-start.mdx +++ b/src/frontend/src/content/docs/reference/cli/commands/aspire-start.mdx @@ -60,6 +60,17 @@ The parent log also captures the replayed child output under `DetachedAppHost/.. Pressing while `aspire start` is waiting for the AppHost to start will terminate the startup process. +### Configuring the startup timeout + +`aspire start` waits up to 120 seconds by default for the AppHost to reach a stable running state. If the AppHost build or startup takes longer than that—for example on a slow machine or in a CI environment—set the `ASPIRE_CLI_START_TIMEOUT` environment variable to a higher number of seconds: + +```bash title="Aspire CLI" +export ASPIRE_CLI_START_TIMEOUT=300 +aspire start +``` + +If `ASPIRE_CLI_START_TIMEOUT` is set to a value that isn't a positive whole number of seconds, `aspire start` displays an error and exits without starting the AppHost. This behavior also applies to `aspire run`, including `aspire run --detach`. + ## Hot Reload and watch behavior By default, `aspire start` starts the AppHost as a detached background process. It doesn't watch the AppHost or resource source files. After you change AppHost code, restart the detached AppHost by running `aspire start` again. For individual resource changes, keep the AppHost running and restart or rebuild the resource from the Aspire CLI or dashboard when needed. diff --git a/src/frontend/src/content/docs/reference/cli/commands/aspire-stop.mdx b/src/frontend/src/content/docs/reference/cli/commands/aspire-stop.mdx index bcca26551..abc5875db 100644 --- a/src/frontend/src/content/docs/reference/cli/commands/aspire-stop.mdx +++ b/src/frontend/src/content/docs/reference/cli/commands/aspire-stop.mdx @@ -27,7 +27,34 @@ When executed without the `--apphost` option, the command: 3. If only one AppHost is running in scope, stops it directly. 4. If no in-scope AppHosts are found but out-of-scope AppHosts exist, displays all running AppHosts for selection. -The command sends a stop signal to the CLI process that started the AppHost, which ensures a clean shutdown of all resources including the dashboard and any containers or processes that were started. +The command requests a graceful shutdown of the selected AppHost process (and its process tree), coordinating a clean shutdown of the AppHost, dashboard, and non-persistent containers and processes. Resources configured with a [persistent lifetime](/app-host/resource-lifetimes/#persistent-lifetime) remain available for later runs. + +### Stopping a detached AppHost + +When stopping an AppHost that was started with [`aspire run --detach`](/reference/cli/commands/aspire-run/#options), the `aspire stop` command waits for the AppHost process to terminate before removing its backchannel socket file. Removing the socket prevents subsequent CLI commands, such as `aspire add` or `aspire describe`, from attempting to connect to the stopped process. + +### Clean up persistent resources + +Use `--force` to stop the selected AppHost and then remove the persistent resources associated with it: + +```bash title="Aspire CLI" +aspire stop --force +``` + +The command performs the normal stop flow first, then removes persistent resources associated with the AppHost. The command attempts to clean up persistent resources whether or not an instance of the AppHost is running. Persistent resources started using a version of the Aspire CLI released before `--force` support was added can't be cleaned up using `--force`. + +:::caution +The `--force` option permanently removes the selected AppHost's persistent resource instances without an additional confirmation prompt. Data stored only in those resources can be lost. For container resources, use a [volume or bind mount](/fundamentals/persist-data-volumes/) to persist data independently of a specific resource's lifetime. +::: + +Additional notes and limitations: + +- You can't combine `--force` with `--all`; cleaning up persistent resources is only supported when stopping instances of a specific AppHost. +- AppHost instances and associated persistent resources are resolved based on the AppHost path. If you remove or rename an AppHost after it creates persistent resources, the command won't associate previously created persistent resources with the AppHost at its new path. In that case, either run `aspire stop --force` before renaming the AppHost or manually clean up the associated persistent resources. +- For a .NET AppHost that doesn't use the Aspire CLI bundle, cleanup requires Aspire.Hosting 13.5 or later. If the AppHost uses an older version, its version can't be determined, or its project can't be inspected, the command displays a warning and still attempts cleanup. Resources created without the required workload metadata might remain. +- If the AppHost stops successfully, but persistent resource cleanup fails, the command exits with an error but leaves the AppHost stopped. You can resolve any errors and run `aspire stop --force` again or manually clean up any remaining persistent resources if necessary. + +Before scanning for AppHosts to stop, `aspire stop` also detects and cleans up any orphaned AppHosts whose launching CLI process has died, so leaked processes are removed even if a normal stop can't reach one of them. ## Options @@ -35,11 +62,15 @@ The following options are available: - **`--apphost `** - The path to the Aspire AppHost project file. When specified, the command stops only the AppHost running from that apphost without prompting for selection. + The path to the Aspire AppHost project file. When specified, the command stops only the AppHost running from that AppHost project without prompting for selection. - **`--all`** - Stop all running AppHosts without prompting for selection. + Stop all running AppHosts without prompting for selection. You can't combine this option with `--force`. + +- **`--force`** + + Perform the normal attempt to stop all instances of a specific AppHost, then attempt to clean up persistent resources associated with that AppHost. You can combine this option with `--apphost` to specify an AppHost to stop, but not with `--all`. - @@ -73,6 +104,18 @@ The following options are available: aspire stop --all ``` +- Stop the AppHost and clean up its persistent resources: + + ```bash title="Aspire CLI" + aspire stop --force + ``` + +- Stop any running instances and clean up persistent resources for a specific AppHost when the target AppHost might be ambiguous: + + ```bash title="Aspire CLI" + aspire stop --force --apphost './src/MyApp.AppHost/MyApp.AppHost.csproj' + ``` + ## See also - [aspire run](/reference/cli/commands/aspire-run/) diff --git a/src/frontend/src/content/docs/reference/cli/commands/aspire-terminal-attach.mdx b/src/frontend/src/content/docs/reference/cli/commands/aspire-terminal-attach.mdx new file mode 100644 index 000000000..42ad9b713 --- /dev/null +++ b/src/frontend/src/content/docs/reference/cli/commands/aspire-terminal-attach.mdx @@ -0,0 +1,98 @@ +--- +title: aspire terminal attach command +seoTitle: aspire terminal attach command reference for the Aspire CLI +description: Learn about the aspire terminal attach command, which connects your local terminal to a resource's interactive PTY session exposed using WithTerminal. +sidebar: + badge: Preview +--- + +import Include from '@components/Include.astro'; + +## Name + +`aspire terminal attach` - Attach the local terminal to an interactive PTY session for a resource. + +## Synopsis + +```bash title="Aspire CLI" +aspire terminal attach [options] +``` + +## Description + +The `aspire terminal attach` command connects your local terminal to the interactive pseudo-terminal (PTY) session of a resource that was registered with [`WithTerminal()`](/app-host/with-terminal/). Once attached, you interact with the resource's terminal, as if it were running directly in your console. For example, you can drive its TUI or type into its shell. + +The command discovers the running AppHost, verifies it supports the `terminals.v1` capability, looks up the resource, and connects to one of its terminal replicas. When the resource has a single replica, that replica is selected automatically. When it has more than one, you're prompted to choose one—or you can pass `--replica`. + +Multiple peers can attach to the same session at once. By default, `attach` takes the **primary** role and drives the terminal's dimensions. Pass `--viewer` to join as a passive **viewer** instead. This technique is useful when another peer, such as the dashboard, is currently driving the session. + +While attached, the following hotkeys are available: + +| Hotkey | Action | +| ---------- | -------------------------------------------- | +| `Ctrl+B D` | Detach from the session and exit cleanly. | +| `Ctrl+B T` | Take control (request the primary role). | + +If the selected replica has already exited, the command attaches to the historical output buffer; no live input is sent. + +Because `WithTerminal` is experimental, this command is hidden behind a feature flag. Enable it with `aspire config set features.terminalCommandsEnabled true`. + +## Arguments + +The following arguments are available: + +- **``** + + The name of the resource to attach a terminal to. The resource must have been registered with `.WithTerminal()`. + +## Options + +The following options are available: + +- + +- **`-r, --replica `** + + The 0-based replica index to attach to. Required when the resource has more than one replica and the CLI is not running interactively. + +- **`--viewer`** + + Connect as a viewer (secondary) instead of taking primary control. Viewers see the terminal output but do not drive its dimensions. This option is useful when another peer (for example, the dashboard) is currently driving the session. Take control later with `Ctrl+B T`. + +- + +- + +- + +- + +- + +- + +## Examples + +- Attach to a resource's terminal: + + ```bash title="Aspire CLI" + aspire terminal attach agent + ``` + +- Attach to a specific replica of a multi-replica resource: + + ```bash title="Aspire CLI" + aspire terminal attach agent --replica 1 + ``` + +- Join an existing session as a passive viewer: + + ```bash title="Aspire CLI" + aspire terminal attach agent --viewer + ``` + +## See also + +- [Test TUI and shell apps using WithTerminal](/app-host/with-terminal/) +- [aspire terminal command](../aspire-terminal/) +- [aspire terminal ps command](../aspire-terminal-ps/) diff --git a/src/frontend/src/content/docs/reference/cli/commands/aspire-terminal-ps.mdx b/src/frontend/src/content/docs/reference/cli/commands/aspire-terminal-ps.mdx new file mode 100644 index 000000000..a30112bd4 --- /dev/null +++ b/src/frontend/src/content/docs/reference/cli/commands/aspire-terminal-ps.mdx @@ -0,0 +1,97 @@ +--- +title: aspire terminal ps command +seoTitle: aspire terminal ps command reference for the Aspire CLI +description: Learn about the aspire terminal ps command, which lists every WithTerminal-enabled resource in the connected AppHost with grid size, attached peers, and per-replica health. +sidebar: + badge: Preview +--- + +import Include from '@components/Include.astro'; + +## Name + +`aspire terminal ps` - List interactive terminal sessions in the connected AppHost. + +## Synopsis + +```bash title="Aspire CLI" +aspire terminal ps [options] +``` + +## Description + +The `aspire terminal ps` command lists every resource in the connected AppHost that was registered using [`WithTerminal()`](/app-host/with-terminal/). For each terminal it reports the current grid size, the number of attached peers, and per-replica health so you can see what's available before running [`aspire terminal attach`](/reference/cli/commands/aspire-terminal-attach/). + +Resources whose terminal host isn't reachable are still listed with a status that indicates they're unavailable, rather than being silently dropped. + +Because `WithTerminal` is experimental, this command is hidden behind a feature flag. Enable it with `aspire config set features.terminalCommandsEnabled true`. The connected AppHost must advertise the `terminals.v1` capability (Aspire.Hosting 13.4 or later). + +The default output is a human-readable table with the following columns: + +| Column | Description | +| ---------- | --------------------------------------------------------------------------- | +| `Resource` | The display name of the terminal-enabled resource. | +| `Replica` | The 0-based replica index (one row per replica). | +| `Status` | Whether the replica is `alive`, `exited ()`, or `host unreachable`. | +| `Size` | The current terminal grid size (`columns`x`rows`). | +| `Peers` | The number of peers currently attached to the replica. | +| `Restarts` | The number of times the replica's terminal host has restarted. | + +## Options + +The following options are available: + +- + +- **`--format `** + + Output format. `text` (default) renders a table; `json` emits structured output for scripting. The JSON output is an array of terminal entries with `resourceName`, `displayName`, `configuredColumns`, `configuredRows`, `isHostReachable`, and a `replicas` array. Each replica includes `replicaIndex`, `isAlive`, `exitCode`, `producerConnected`, `restartCount`, `currentColumns`, `currentRows`, and `attachedPeerCount`. When `--verbose` is set, each replica also includes a `peers` array of `{ peerId, displayName }`. + +- **`-v, --verbose`** + + Include per-peer details for every attached viewer (peer id and display name). + +- + +- + +- + +- + +- + +- + +## Examples + +- List terminal sessions in the running AppHost: + + ```bash title="Aspire CLI" + aspire terminal ps + ``` + + Example output: + + ```text title="Output" + Resource Replica Status Size Peers Restarts + agent 0 alive 120x30 1 0 + ``` + +- Include per-peer details: + + ```bash title="Aspire CLI" + aspire terminal ps --verbose + ``` + +- Emit JSON for scripting and pipe to `jq`: + + ```bash title="Aspire CLI" + aspire terminal ps --format json | jq -c '.[] | { resourceName, isHostReachable }' + ``` + +## See also + +- [Test TUI and shell apps using WithTerminal](/app-host/with-terminal/) +- [aspire terminal command](/reference/cli/commands/aspire-terminal/) +- [aspire terminal attach command](/reference/cli/commands/aspire-terminal-attach/) diff --git a/src/frontend/src/content/docs/reference/cli/commands/aspire-terminal.mdx b/src/frontend/src/content/docs/reference/cli/commands/aspire-terminal.mdx new file mode 100644 index 000000000..bf2861d06 --- /dev/null +++ b/src/frontend/src/content/docs/reference/cli/commands/aspire-terminal.mdx @@ -0,0 +1,62 @@ +--- +title: aspire terminal command +seoTitle: aspire terminal command reference for the Aspire CLI +description: Learn about the aspire terminal command, which lists and attaches to interactive terminal sessions for resources registered using WithTerminal. +sidebar: + badge: Preview +--- + +import Include from '@components/Include.astro'; + +## Name + +`aspire terminal` - Manage interactive terminal sessions for resources. + +## Synopsis + +```bash title="Aspire CLI" +aspire terminal [command] [options] +``` + +## Description + +The `aspire terminal` command provides subcommands for working with interactive terminal sessions exposed by resources that were registered using [`WithTerminal()`](/app-host/with-terminal/) in the AppHost. You can list which resources have a terminal and attach your local terminal to a running session. + +Because `WithTerminal` is experimental, the `aspire terminal` command group is hidden behind a feature flag. Enable it before use: + +```bash title="Enable the aspire terminal commands" +aspire config set features.terminalCommandsEnabled true +``` + +The connected AppHost must advertise the `terminals.v1` capability (Aspire.Hosting 13.4 or later). Against an older AppHost the subcommands report that terminals are not supported. + +## Options + +The following options are available: + +- + +- + +- + +- + +- + +- + +## Commands + +The following commands are available: + +| Command | Function | +| ---------------------------------------------------------- | -------------------------------------------------------------- | +| [`aspire terminal attach`](../aspire-terminal-attach/) | Attach the local terminal to a resource's interactive session. | +| [`aspire terminal ps`](../aspire-terminal-ps/) | List interactive terminal sessions in the connected AppHost. | + +## See also + +- [Test TUI and shell apps using WithTerminal](/app-host/with-terminal/) +- [aspire terminal attach command](../aspire-terminal-attach/) +- [aspire terminal ps command](../aspire-terminal-ps/) diff --git a/src/frontend/src/content/docs/reference/cli/commands/aspire-update.mdx b/src/frontend/src/content/docs/reference/cli/commands/aspire-update.mdx index e0466e41d..eeb5d5034 100644 --- a/src/frontend/src/content/docs/reference/cli/commands/aspire-update.mdx +++ b/src/frontend/src/content/docs/reference/cli/commands/aspire-update.mdx @@ -79,6 +79,15 @@ To update the CLI without being prompted, run `aspire update --self` before runn - When the CLI was installed with the **install script** or another **binary install**, `aspire update --self` downloads and installs the latest CLI binary directly. - When the CLI was installed as a **.NET tool**, the command prints the `dotnet tool update` command to run. +- When the CLI was installed via **Nix** (profile or flake), the command prints the Nix update commands to run instead of downloading a new binary. Because the Nix store is read-only, in-place binary updates are not possible: + + ```text title="Output" + To update the Aspire CLI when installed from Nix, update the profile package or flake input: + nix profile upgrade aspire-cli + nix flake update + ``` + + Run `nix profile upgrade aspire-cli` for a profile install, or `nix flake update ` for a project flake. ## Options @@ -96,6 +105,8 @@ The following options are available: When you switch to a persistable channel, such as `daily`, `aspire update` also rewrites the top-level `channel` key in `aspire.config.json` when the file already exists. Only channels registered as _explicit_ channels are persisted, with one exception: the `stable` channel is treated as the portable default and is intentionally not pinned. The persisted channel keeps subsequent `aspire add` and `aspire update` runs resolving packages against the channel you just switched to. + The `staging` channel can only be resolved from a `stable` or `staging` Aspire CLI build. Daily, local, and per-PR CLI builds don't have a deterministic staging feed, so requesting `--channel staging` from one of them fails with an error naming the running CLI's identity and pointing at the recovery options: install a staging or stable Aspire CLI, or set the `overrideStagingFeed` configuration value (for example, `aspire config set -g overrideStagingFeed `) to point at the staging feed you want to use. See [`overrideStagingFeed`](/reference/cli/configuration/#settings-surfaced-by-aspire-config) in the CLI configuration reference. + - **`-y, --yes`** Automatically confirm all prompts without user input. Use this option in CI/CD pipelines or other non-interactive environments to skip confirmation dialogs. diff --git a/src/frontend/src/content/docs/reference/cli/commands/aspire-wait.mdx b/src/frontend/src/content/docs/reference/cli/commands/aspire-wait.mdx index 8b7c73649..a6c41be30 100644 --- a/src/frontend/src/content/docs/reference/cli/commands/aspire-wait.mdx +++ b/src/frontend/src/content/docs/reference/cli/commands/aspire-wait.mdx @@ -20,6 +20,8 @@ aspire wait [options] The `aspire wait` command blocks until a named resource within a running AppHost reaches a target status. This is useful for CI/CD pipelines and automation workflows where you need to wait for resources to be ready after starting an AppHost with `aspire run --detach`. +The `--timeout` option here controls how long to wait for a *resource* to reach its target status. It's separate from the `ASPIRE_CLI_START_TIMEOUT` environment variable, which controls how long `aspire run` and `aspire start` wait for the *AppHost itself* to finish starting up. See [aspire run](/reference/cli/commands/aspire-run/#configuring-the-startup-timeout) for details. + The command connects to a running AppHost via the backchannel and streams resource state changes in real-time. It validates that the specified resource exists before entering the wait loop, so typos in resource names are caught immediately rather than causing a silent timeout. When executed without the `--apphost` option, the command: diff --git a/src/frontend/src/content/docs/reference/cli/includes/config-settings-table.md b/src/frontend/src/content/docs/reference/cli/includes/config-settings-table.md index 196ad887a..4a5e3d22c 100644 --- a/src/frontend/src/content/docs/reference/cli/includes/config-settings-table.md +++ b/src/frontend/src/content/docs/reference/cli/includes/config-settings-table.md @@ -6,12 +6,13 @@ title: Config Settings Table | ----------------------------------------- | ----------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------- | | `appHost.path` | `appHost.path` | Project-scoped path to the default AppHost entry point. This setting must be configured in the local `aspire.config.json` file. | | `channel` | `channel` | Default Aspire channel used by channel-aware commands such as `aspire new`, `aspire init`, and `aspire update`. | -| `features.aspireSkillsRemoteFetchEnabled` | `features.aspireSkillsRemoteFetchEnabled` | Enable or disable preview remote fetching of Aspire skills bundles from GitHub. | | `features.defaultWatchEnabled` | `features.defaultWatchEnabled` | Enable or disable watch mode by default when running Aspire applications for automatic restarts on file changes. | | `features.experimentalPolyglot:go` | `features.experimentalPolyglot:go` | Enable or disable experimental Go language support for polyglot Aspire applications. | | `features.experimentalPolyglot:java` | `features.experimentalPolyglot:java` | Enable or disable experimental Java language support for polyglot Aspire applications. | | `features.experimentalPolyglot:python` | `features.experimentalPolyglot:python` | Enable or disable experimental Python language support for polyglot Aspire applications. | | `features.experimentalPolyglot:rust` | `features.experimentalPolyglot:rust` | Enable or disable experimental Rust language support for polyglot Aspire applications. | +| `features.polyglotIntegrationFilterEnabled` | `features.polyglotIntegrationFilterEnabled` | Enable or disable filtering `aspire add`, `aspire integration list`, and `aspire integration search` results to only integrations compatible with a non-C# (polyglot) AppHost. Disabled by default because remote NuGet feeds don't reliably answer the `tags:polyglot` query used to build the compatibility allow-list. | | `features.showAllTemplates` | `features.showAllTemplates` | Show all available templates, including experimental ones, in `aspire new` and `aspire init`. | | `features.showDeprecatedPackages` | `features.showDeprecatedPackages` | Show or hide deprecated packages in `aspire add` search results. | | `features.updateNotificationsEnabled` | `features.updateNotificationsEnabled` | Enable or disable Aspire CLI update notifications. | +| `overrideStagingFeed` | `overrideStagingFeed` | Escape hatch that always allows the `staging` channel to be resolved, regardless of the running CLI's build identity. Set this to the staging feed URL you want channel-aware commands (`aspire new`, `aspire init`, `aspire update`) to use, for example: `aspire config set -g overrideStagingFeed `. Without this setting, `--channel staging` only resolves on `stable` or `staging` Aspire CLI builds — daily, local, and per-PR builds refuse it and report the recovery options. | diff --git a/src/frontend/src/content/docs/reference/cli/microsoft-collected-cli-telemetry.mdx b/src/frontend/src/content/docs/reference/cli/microsoft-collected-cli-telemetry.mdx index 48c954dbd..ef3c17590 100644 --- a/src/frontend/src/content/docs/reference/cli/microsoft-collected-cli-telemetry.mdx +++ b/src/frontend/src/content/docs/reference/cli/microsoft-collected-cli-telemetry.mdx @@ -11,6 +11,12 @@ The Aspire CLI collects usage telemetry to help Microsoft improve the product. T Aspire CLI telemetry is collected when using the CLI to run commands. Telemetry is gathered during normal CLI usage, unless you have [opted out](#how-to-opt-out) of telemetry collection. +### AI agent skill usage + +When you run `aspire agent init`, Aspire installs Aspire's AI skills and a `PostToolUse` hook into each detected agent client's user-level configuration (for example, GitHub Copilot CLI and Claude Code). The hook lets Aspire understand which of its AI skills and tools are actually used so the team can invest in the most valuable ones. + +After each agent tool use, the hook checks if an **Aspire** skill, Aspire MCP tool, or Aspire skill reference file was involved. If so, the hook inspects the event and forwards a low-cardinality usage event to the hidden `aspire agent telemetry` command. The command records the event through the same CLI telemetry pipeline. Tool uses that don't involve Aspire skills or tools are ignored. See [AI agent skill usage data](#ai-agent-skill-usage-data) for exactly what's recorded. + ## How to opt-out To opt-out of telemetry collection, set the `ASPIRE_CLI_TELEMETRY_OPTOUT` environment variable to `true`. This will disable telemetry collection for all CLI commands: @@ -49,6 +55,30 @@ Aspire CLI collects the following data: | 13.2 | CLI launch. | Includes command name and exit code. Option and argument values are not sent to Microsoft. | | 13.2 | Ensure .NET SDK install. | Includes .NET SDK version installed. | | 13.2 | CLI-related unhandled exceptions. | — | +| 13.5 | Coding agent detection. | When the CLI is invoked from a known coding agent environment (such as GitHub Copilot, Claude, Cursor, or others), the detected agent name is recorded. Only the known agent name is sent — no environment variable values or other identifying data are included. This data point is omitted entirely when no known coding agent is detected. | +| 13.5 | AI agent skill usage. | Recorded only for Aspire's own skills and tools. See [AI agent skill usage data](#ai-agent-skill-usage-data). | + +### AI agent skill usage data + +The agent telemetry hook installed by `aspire agent init` reports a single event each time one of Aspire's own AI skills or tools is used. Three event types are reported: + +- `skill_invocation` — an Aspire skill was invoked, or its `SKILL.md` was read. +- `tool_invocation` — an Aspire MCP tool was called. +- `reference_file_read` — a reference file bundled alongside an Aspire skill was read. + +Each event records only a subset of the following low-cardinality, Aspire-owned values (depending on the event type): + +| Field | Description | +|-------|-------------| +| Event type | One of `skill_invocation`, `tool_invocation`, or `reference_file_read`. | +| Client name | The agent client that produced the event, for example `copilot-cli`, `claude-code`, or `vscode`. | +| Session ID | The agent session identifier (an opaque GUID), used to group events from one session. | +| Skill name | The Aspire skill name, matched against the fixed list of skills Aspire ships (for example `aspire-deployment`). | +| Tool name | The Aspire MCP tool name (for example `aspire-list_resources`). | +| File reference | The skill-relative path of a reference file, for example `aspire/references/deploy.md`. | +| Event timestamp | The UTC time the event occurred. | + +To protect your privacy, the hook only forwards an event when the skill or tool name matches the fixed set Aspire ships, and a file reference is reported only as the path **after** the skill folder. Absolute paths, repository names, user names, file contents, and tool arguments are never recorded. Before sending, the `aspire agent telemetry` command validates each value, discards anything it doesn't recognize, and honors the same `ASPIRE_CLI_TELEMETRY_OPTOUT` opt-out. ## See also diff --git a/src/frontend/src/content/docs/reference/cli/search-filter.mdx b/src/frontend/src/content/docs/reference/cli/search-filter.mdx index a9f4f514a..d3cc7054c 100644 --- a/src/frontend/src/content/docs/reference/cli/search-filter.mdx +++ b/src/frontend/src/content/docs/reference/cli/search-filter.mdx @@ -28,10 +28,28 @@ Search queries support free-text fragments, field qualifiers, attribute qualifie | `field:"value with spaces"` | Quoted field qualifier value | `message:"connection failed"` | | `@attr:value` | Attribute qualifier — matches custom span/log attributes | `@http.method:GET` | | `-field:value` / `-@attr:value` | Negated qualifier — excludes matches | `-severity:debug` | -| `field:>N` / `field:>=N` / `field:100` | +| `field:>value` / `field:>=value` / `field:100` | All terms are AND'd: every fragment and qualifier must independently match. +## Timestamp qualifier + +Use the `timestamp` field qualifier to narrow structured logs, traces, and spans to a specific date/time range. The qualifier accepts ISO 8601 date or date/time strings together with a comparison operator: + +```bash title="Aspire CLI" +aspire otel logs --search "timestamp:>2026-01-15T09:30:00" +aspire otel traces --search "timestamp:<=2026-06-01T12:00:00Z" +aspire otel spans --search "timestamp:>=2026-01-01 timestamp:<2027-01-01" +``` + +The supported comparison operators are `>`, `>=`, `<`, and `<=`. + +Timestamp values are internally stored in UTC. The `timestamp` value is converted to UTC using these timezone rules: + +- A value with no timezone suffix (for example `2026-01-15` or `2026-01-15T09:30:00`) is treated as local time on the dashboard server and adjusted to UTC before comparison. +- A value with a UTC offset (for example `2026-06-01T12:00:00+05:00`) is adjusted to UTC before comparison. +- A value with the `Z` suffix is treated as UTC directly. + ## Console logs Matches against log line text content and resource name. Only free-text is supported (no structured qualifiers). @@ -45,36 +63,39 @@ aspire logs --follow --search "\"connection error\"" Supports free-text and structured qualifiers. Free-text matches against message, resource name, scope, trace/span IDs, severity, and all attribute keys/values. -Available field qualifiers: `severity`, `resource`, `scope`, `message`, `trace-id`, `span-id`, `event`. +Available field qualifiers: `severity`, `resource`, `scope`, `message`, `trace-id`, `span-id`, `event`, `timestamp`. ```bash title="Aspire CLI" aspire otel logs --search "severity:error \"connection failed\"" aspire otel logs --search "resource:api -severity:debug" aspire otel logs --search "scope:Microsoft.EntityFrameworkCore" +aspire otel logs --search "timestamp:>=2026-06-01T12:00:00 severity:error" ``` ## Traces Supports free-text and structured qualifiers. Free-text matches against trace name, resource name, and all span fields within the trace. -Available field qualifiers: `name`, `resource`, `trace-id`, `status`, `duration`. +Available field qualifiers: `name`, `resource`, `trace-id`, `status`, `duration`, `timestamp`. ```bash title="Aspire CLI" aspire otel traces --search "checkout" aspire otel traces --search "status:error duration:>500" aspire otel traces --search "@http.status_code:500" +aspire otel traces --search "timestamp:>2026-01-15T09:30:00 status:error" ``` ## Spans Supports free-text and structured qualifiers. Free-text matches against span name, resource name, scope, trace/span IDs, status, kind, and all attribute keys/values. -Available field qualifiers: `name`, `resource`, `scope`, `status`, `kind`, `trace-id`, `span-id`, `duration`. +Available field qualifiers: `name`, `resource`, `scope`, `status`, `kind`, `trace-id`, `span-id`, `duration`, `timestamp`. ```bash title="Aspire CLI" aspire otel spans --search "@http.method:GET duration:>100 status:error" aspire otel spans --search "@db.system:postgresql" aspire otel spans --search "-kind:internal" +aspire otel spans --search "timestamp:>=2026-03-01T08:30:00 kind:server" ``` ## See also diff --git a/src/frontend/src/content/docs/ru/index.mdx b/src/frontend/src/content/docs/ru/index.mdx index 8101fce5c..bb69753e6 100644 --- a/src/frontend/src/content/docs/ru/index.mdx +++ b/src/frontend/src/content/docs/ru/index.mdx @@ -11,7 +11,7 @@ prev: false next: false banner: content: | - 🚀 Aspire 13.4 выпущен!Что нового в Aspire 13.4. + ✨ Aspire 13.5 выпущен!Что нового в Aspire 13.5. bannerAutoDismissAfterDays: 14 hero: tagline: Ваш стек, упрощён.

Оркестрируйте фронтенды, API, контейнеры и базы данных без усилий—без переписывания, без ограничений. Расширяйте Aspire для любого проекта.

diff --git a/src/frontend/src/content/docs/testing/accessing-resources.mdx b/src/frontend/src/content/docs/testing/accessing-resources.mdx index e93608236..6bd78e6bb 100644 --- a/src/frontend/src/content/docs/testing/accessing-resources.mdx +++ b/src/frontend/src/content/docs/testing/accessing-resources.mdx @@ -46,6 +46,16 @@ await app.ResourceNotifications.WaitForResourceHealthyAsync( This resource-notification pattern ensures that the resources are available before running the tests, avoiding potential issues with the tests failing due to the resources not being ready. + + ## Start & Stop In some cases, you may want to manually start a resource when it is not initially started, for when the resource was created `WithExplicitStart` for example. diff --git a/src/frontend/src/content/docs/tr/index.mdx b/src/frontend/src/content/docs/tr/index.mdx index ff583c763..1f5879801 100644 --- a/src/frontend/src/content/docs/tr/index.mdx +++ b/src/frontend/src/content/docs/tr/index.mdx @@ -11,7 +11,7 @@ prev: false next: false banner: content: | - 🚀 Aspire 13.4 yayınlandı!Aspire 13.4'deki yeniliklere bakın. + ✨ Aspire 13.5 yayınlandı!Aspire 13.5'deki yeniliklere bakın. bannerAutoDismissAfterDays: 14 hero: tagline: Yığınınız basitleştirildi.

Frontend'leri, API'leri, konteynerleri ve veritabanlarını zahmetsizce orkestre edin—yeniden yazma yok, sınır yok. Her projeyi güçlendirmek için Aspire'ı genişletin.

diff --git a/src/frontend/src/content/docs/uk/index.mdx b/src/frontend/src/content/docs/uk/index.mdx index ea7792244..e7975b913 100644 --- a/src/frontend/src/content/docs/uk/index.mdx +++ b/src/frontend/src/content/docs/uk/index.mdx @@ -11,7 +11,7 @@ prev: false next: false banner: content: | - 🚀 Aspire 13.4 випущено!Що нового в Aspire 13.4. + ✨ Aspire 13.5 випущено!Що нового в Aspire 13.5. bannerAutoDismissAfterDays: 14 hero: tagline: Ваш стек спрощено.

Оркеструйте фронтенди, API, контейнери та бази даних без зусиль—без переписування, без обмежень. Розширюйте Aspire для будь-якого проєкту.

diff --git a/src/frontend/src/content/docs/whats-new/aspire-13-3.mdx b/src/frontend/src/content/docs/whats-new/aspire-13-3.mdx index 8999d2fe8..a7bd94ae6 100644 --- a/src/frontend/src/content/docs/whats-new/aspire-13-3.mdx +++ b/src/frontend/src/content/docs/whats-new/aspire-13-3.mdx @@ -521,7 +521,7 @@ await builder.build().run(); ### Resource commands return structured results -Custom resource commands can now return an `ExecuteCommandResult` with a structured `Message` payload that the dashboard renders in the notification center. The new `Logger` property on `ExecuteCommandContext` lets command implementations log directly to the resource's log stream. +Custom resource commands can now return an `ExecuteCommandResult` with structured `Data` payloads (`Text`, `Json`, or `Markdown`) that the dashboard renders from the notification center's **View response** action. The `CommandResults.Success(string, CommandResultData)` overload makes it easy to return Markdown tables and other rich output. The new `Logger` property on `ExecuteCommandContext` lets command implementations log directly to the resource's log stream. diff --git a/src/frontend/src/content/docs/whats-new/aspire-13-4.mdx b/src/frontend/src/content/docs/whats-new/aspire-13-4.mdx index 7ba057e48..359e4ea97 100644 --- a/src/frontend/src/content/docs/whats-new/aspire-13-4.mdx +++ b/src/frontend/src/content/docs/whats-new/aspire-13-4.mdx @@ -398,6 +398,8 @@ Aspire 13.4 includes a set of smaller CLI improvements and fixes: - `aspire update` now requires `--yes` in non-interactive mode, matching `aspire destroy`. - `aspire stop --all` output includes the AppHost name and, when needed, the PID for clearer multi-instance shutdown output. - `aspire new`, `aspire init`, `aspire run`, and `aspire update` include fixes for NuGet feed errors, output paths, generated files, disabled dashboards, detached shutdown, and AppHost package-reference cleanup. +- The C# empty AppHost template (`aspire new aspire-empty`) no longer emits a duplicate `profiles` block in `aspire.config.json`. The template now writes launch profiles only to `apphost.run.json`, so newly scaffolded projects have a minimal `aspire.config.json` that only identifies the AppHost entry point. This was a regression introduced in 13.4 when `apphost.run.json` was added alongside `aspire.config.json`; it is now corrected. +- `aspire run` now handles AppHost shutdown more gracefully: backchannel log, resource-state, and publishing-activity streams complete immediately when a shutdown is already in progress, and a warning is shown if log capture is interrupted rather than surfacing an unhandled error. ## 🧩 App model and AppHost @@ -472,11 +474,13 @@ Persistent lifetimes now extend beyond containers to executables and projects. C @@ -787,7 +791,7 @@ Re-run `aspire run` (or your code-generation step) to regenerate references, and #### Persistent executable and project lifetimes -Support for persistent lifetimes on executables and projects updates the underlying DCP executable model (new `persistent`, `start`, and `stop` fields). Persistent resources default to proxyless endpoints, require concrete ports for executables, don't support replicas, and aren't compatible with Aspire IDE debugging sessions. +Support for persistent lifetimes on executables and projects updates the underlying DCP executable model (new `persistent`, `start`, and `stop` fields). Persistent executables and projects default to proxyless endpoints, require concrete ports for executables, don't support replicas, and aren't compatible with Aspire IDE debugging sessions. Persistent containers use proxied endpoints by default, matching session container behavior, so integrations that depend on endpoint allocation before startup work correctly without changes. If you adopt `WithPersistentLifetime()`, review endpoint and port configuration. Tooling pinned to the previous DCP executable schema may need to be updated. See [Configure resource lifetimes](/app-host/resource-lifetimes/). diff --git a/src/frontend/src/content/docs/whats-new/aspire-13-5.mdx b/src/frontend/src/content/docs/whats-new/aspire-13-5.mdx new file mode 100644 index 000000000..d75185c7e --- /dev/null +++ b/src/frontend/src/content/docs/whats-new/aspire-13-5.mdx @@ -0,0 +1,1028 @@ +--- +title: "What's new in Aspire 13.5" +description: "Explore Aspire 13.5, a developer-experience release: interactive terminal sessions, the Interaction Service across C# and TypeScript AppHosts with file uploads and progress dialogs, user-defined resource command arguments, generally available TypeScript AppHosts with health checks and container files, HTTPS certificates for projects, Kubernetes and AKS persistent volumes, a refreshed dashboard, and a rebranded VS Code extension." +sidebar: + label: Aspire 13.5 + order: 0 +tableOfContents: + minHeadingLevel: 2 + maxHeadingLevel: 2 +--- + +import { + Steps, + Aside, + Icon, + Tabs, + TabItem, +} from '@astrojs/starlight/components'; +import LearnMore from '@components/LearnMore.astro'; +import OsAwareTabs from '@components/OsAwareTabs.astro'; +import { Image } from 'astro:assets'; + +import dashboardResources from '@assets/dashboard/explore/projects.png'; +import dashboardStructuredLogsFiltered from '@assets/dashboard/explore/structured-logs-filtered.png'; +import dashboardTracesFiltering from '@assets/dashboard/explore/traces-filtering.png'; + +Aspire 13.5 is here, and it's a **developer-experience** release through and through — sharper tooling, **closer C# and TypeScript parity**, and a batch of runtime-stability fixes. The headline is a richer, more interactive AppHost: resources can host **interactive terminal sessions** with `WithTerminal()`, the **Interaction Service** now works across both **C#** and **TypeScript** AppHosts — with **file uploads** and **progress dialogs** — and resource commands can **prompt for user-defined arguments** before they run. **TypeScript AppHosts are now generally available**, gaining **custom health checks** and **container file copying** to close the gap with C#. Projects can request **HTTPS developer certificates**, and deployment picks up **persistent volumes for Kubernetes and AKS**. The dashboard gets an officially branded visual refresh and sharper telemetry filtering, and the Visual Studio Code extension is rebranded to **Aspire** with dashboard, debugging, and discovery improvements. + +We'd love to hear what you think. Drop by [ Discord](https://aka.ms/aspire-discord) to chat with the team and the community, or file feedback and issues on [ GitHub](https://github.com/microsoft/aspire/issues). + +This release introduces: + +- **Interactive terminal sessions** with the experimental `WithTerminal()` API, so you can attach to REPLs, shells, and other terminal programs running as Aspire resources from the dashboard — with an opt-in `aspire terminal` CLI command. +- **The Interaction Service across C# and TypeScript AppHosts** — prompts, message boxes, notifications, and dynamic inputs, now with **file uploads** and **progress dialogs**. The core `PromptInput`/`PromptInputs` surface is stable and no longer requires suppressing `ASPIREINTERACTION001`. +- **User-defined resource command arguments**, so the dashboard can prompt for input before invoking a command — the CLI exposes them as `--` options — with full C# and TypeScript parity. +- **HTTPS certificates for project resources** through a new experimental configuration API. +- **Generally available TypeScript AppHosts**, adding **custom health checks** and **container file copying** at parity with C#, plus faster startup and a batch of reliability fixes. +- **The Aspire CLI on npm and Nix**, with the CLI bundle enabled by default in new C# projects — acquired on the fly via `dnx`. +- **A refreshed, officially branded dashboard** with timestamp filtering, numeric operators, and console-log text search. +- **A rebranded Visual Studio Code extension** with a dashboard side panel, Bun and MAUI debugging, and resource commands in the tree view. +- **Cross-scope Azure resource references** with the `AsExisting*` family, and **persistent volumes for Kubernetes and AKS**. +- …and much more. + +## 🆙 Upgrade to Aspire 13.5 + + +
+ + + + + +For general purpose upgrade guidance, see [Upgrade Aspire](/whats-new/upgrade-aspire/). + +The easiest way to upgrade to Aspire 13.5 is using the [`aspire update` command](/reference/cli/commands/aspire-update/): + + + +1. Update the Aspire CLI itself: + + ```bash title="Aspire CLI — Update the CLI" + aspire update --self + ``` + +1. Update your projects (run from the root of your repository): + + ```bash title="Aspire CLI — Update all Aspire packages" + aspire update + ``` + + + +Or install the CLI from scratch. The Aspire CLI ships through the package managers you already use — added in the 13.4 timeframe and now the recommended way to get it — so pick whichever fits your environment: + + + + +```bash title="Install with Homebrew" +brew install --cask microsoft/aspire/aspire +``` + + + + +```bash title="Install with npm" +npm install -g @microsoft/aspire-cli +``` + + + + +```bash title="Install with the .NET CLI" +dotnet tool install -g Aspire.Cli +``` + + + + +```powershell title="Install with WinGet" +winget install Microsoft.Aspire +``` + + + + +```bash title="Install with mise" +mise use -g aspire +``` + + + + +```bash title="Install with Nix" +nix profile add github:microsoft/aspire#aspire-cli +``` + + + + +Prefer the one-line install script? It still works everywhere: + + + + + ```bash title="Aspire CLI — Install Aspire CLI" + curl -sSL https://aspire.dev/install.sh | bash + ``` + + + + + ```powershell title="Aspire CLI — Install Aspire CLI" + irm https://aspire.dev/install.ps1 | iex + ``` + + + + + + For every installation method, see [Install the CLI](/get-started/install-cli/). + + + + +## 🧩 App model and AppHost + +The AppHost is where 13.5 invests most heavily. These additions make local development more interactive and bring the C# and TypeScript app models closer to parity — from terminal sessions and richer user interactions to modeling more kinds of resources. + +### 🖥️ Interactive terminal sessions with WithTerminal() + +AppHost authors can now call `WithTerminal()` on a resource to enable an interactive terminal session. The dashboard can attach to and detach from the session at will, so you can drive REPLs, shells, and other terminal programs that run as Aspire resources — right from the dashboard's terminal view. Terminal dimensions are configurable through `TerminalOptions`, which exposes `Columns` (default `120`), `Rows` (default `30`), and `ShowTerminalHost`. + + + + + + +```csharp title="AppHost.cs" +#pragma warning disable ASPIRETERMINAL001 + +var builder = DistributedApplication.CreateBuilder(args); + +builder.AddContainer("db", "postgres") + .WithTerminal(options => + { + options.Columns = 200; + options.Rows = 50; + }); + +builder.Build().Run(); +``` + + + + +```typescript title="apphost.mts" +import { createBuilder } from './.aspire/modules/aspire.mjs'; + +const builder = await createBuilder(); + +// Polyglot AppHosts expose a parameterless withTerminal(). Terminal dimensions +// (TerminalOptions.Columns/Rows) can only be configured from C#. +await builder.addContainer('db', 'postgres').withTerminal(); + +await builder.build().run(); +``` + + + + + + For details, see [Interactive terminal sessions with WithTerminal()](/app-host/with-terminal/). + + +### 💬 Interaction Service for C# and TypeScript AppHosts + +The Interaction Service and all of its related types — prompts, message boxes, notifications, and dynamic inputs — now work the same way from **C#** and **TypeScript** AppHosts, so the examples below come in both languages. The core prompt and input APIs (`PromptInputAsync`, `PromptInputsAsync`, and the supporting `InteractionInput`, `InputType`, and `InteractionInputCollection` types) are now **stable**, so you no longer have to suppress `ASPIREINTERACTION001` to use them from production code. + +The example below adds a resource command that prompts the user to choose a region, then acts on the selection. + + + + +```csharp title="AppHost.cs" +using Aspire.Hosting.ApplicationModel; +using Microsoft.Extensions.DependencyInjection; + +var builder = DistributedApplication.CreateBuilder(args); + +var api = builder.AddContainer("api", "nginx"); + +api.WithCommand("configure-region", "Configure region", async ctx => +{ + var interaction = ctx.Services.GetRequiredService(); + + // Commands invoked from the CLI run with NonInteractive = true, where + // PromptInputsAsync throws. Only prompt when a UI is attached. + if (!interaction.IsAvailable) + { + return CommandResults.Success(); + } + + var result = await interaction.PromptInputsAsync( + title: "Configure region", + message: "Choose the region to deploy to.", + inputs: + [ + new InteractionInput + { + Name = "region", + Label = "Region", + InputType = InputType.Choice, + Options = + [ + new("us", "United States"), + new("eu", "Europe"), + ] + } + ], + cancellationToken: ctx.CancellationToken); + + if (result.Canceled) + { + return CommandResults.Canceled(); + } + + var region = result.Data["region"].Value; + return CommandResults.Success(); +}); + +builder.Build().Run(); +``` + + + + +```typescript title="apphost.mts" +import { createBuilder } from './.aspire/modules/aspire.mjs'; +import type { InteractionChoiceOption } from './.aspire/modules/aspire.mjs'; + +const builder = await createBuilder(); + +const api = await builder.addContainer('api', 'nginx'); + +await api.withCommand('configure-region', 'Configure region', async (ctx) => { + const interaction = await ctx.services().getInteractionService(); + + if (!(await interaction.isAvailable())) { + return { success: true, message: 'No interactive dashboard.' }; + } + + const regionInput = await interaction.createChoiceInput('region', { + choices: [ + { value: 'us', label: 'United States' }, + { value: 'eu', label: 'Europe' }, + ] as InteractionChoiceOption[], + }); + + const result = await interaction.promptInputs( + 'Configure region', + 'Choose the region to deploy to.', + [regionInput], + { primaryButtonText: 'Apply' } + ); + + if (await result.canceled()) { + return { success: false, message: 'Canceled.' }; + } + + const region = await result.inputs().value('region'); + return { success: true, message: `region=${region ?? ''}` }; +}); + +await builder.build().run(); +``` + + + + + + For the full API surface and TypeScript examples, see [Interaction service](/extensibility/interaction-service/). + + +### 📤 File uploads and progress dialogs + +The Interaction Service can now ask users to **upload a file**. Add an `InteractionInput` with `InputType.File`, and the dashboard renders a file picker constrained by an optional `FileFilter` and `MaxFileSize`. After submission, C# AppHosts read the uploaded content through `InteractionFile` (via `ReadAllBytesAsync()` or `OpenRead()`), while TypeScript AppHosts receive the upload as an on-disk path (`file.filePath`) to read with Node's `fs` APIs. The file-upload input is **stable**. Long-running commands can also show a **progress dialog** with `PromptProgressAsync`. + + + + + + +```csharp title="AppHost.cs" +#pragma warning disable ASPIREINTERACTION001 + +using Aspire.Hosting.ApplicationModel; +using Microsoft.Extensions.DependencyInjection; + +var builder = DistributedApplication.CreateBuilder(args); + +var importer = builder.AddContainer("importer", "nginx"); + +importer.WithCommand("import-data", "Import data", async ctx => +{ + var interaction = ctx.Services.GetRequiredService(); + + // Commands invoked from the CLI run with NonInteractive = true, where + // PromptInputsAsync throws. Only prompt when a UI is attached. + if (!interaction.IsAvailable) + { + return CommandResults.Success(); + } + + var result = await interaction.PromptInputsAsync( + title: "Import data", + message: "Select a JSON file to import.", + inputs: + [ + new InteractionInput + { + Name = "dataFile", + Label = "Data file", + InputType = InputType.File, + FileFilter = ".json", + MaxFileSize = 10 * 1024 * 1024, // 10 MB + Required = true + } + ], + cancellationToken: ctx.CancellationToken); + + if (result.Canceled) + { + return CommandResults.Canceled(); + } + + var file = result.Data["dataFile"].Files?[0]; + if (file is null) + { + return CommandResults.Failure("No file was uploaded."); + } + + var bytes = await file.ReadAllBytesAsync(ctx.CancellationToken); + + // Progress dialog is experimental (ASPIREINTERACTION001). Run the work in + // ProgressInteractionOptions.Work so the dialog closes when the work + // completes; without a Work callback it stays open until the token cancels. + await interaction.PromptProgressAsync( + message: $"Processing {bytes.Length} bytes", + title: "Importing...", + options: new ProgressInteractionOptions + { + Work = async progress => + { + // Long-running processing runs here while the dialog is shown. + await Task.Delay(TimeSpan.FromSeconds(2), progress.CancellationToken); + } + }, + cancellationToken: ctx.CancellationToken); + + return CommandResults.Success(); +}); + +builder.Build().Run(); +``` + + + + +```typescript title="apphost.mts" +import { createBuilder } from './.aspire/modules/aspire.mjs'; +import { statSync } from 'node:fs'; + +const builder = await createBuilder(); + +const importer = await builder.addContainer('importer', 'nginx'); + +await importer.withCommand('import-data', 'Import data', async (ctx) => { + const interaction = await ctx.services().getInteractionService(); + + // Commands invoked from the CLI run without an attached UI, where prompting + // throws. Only prompt when the interaction service is available. + if (!(await interaction.isAvailable())) { + return { success: true, message: 'No interactive dashboard.' }; + } + + const fileInput = await interaction.createFileInput('dataFile', { + label: 'Data file', + fileFilter: '.json', + maxFileSize: 10 * 1024 * 1024, // 10 MB + required: true, + }); + + const result = await interaction.promptInput( + 'Import data', + 'Select a JSON file to import.', + fileInput, + { primaryButtonText: 'Import' }); + + if (result.canceled) { + return { success: false, message: 'Canceled.' }; + } + + // Uploaded files are written to disk; read them through their filePath. + const file = result.input?.files?.[0]; + if (!file?.filePath) { + return { success: false, message: 'No file was uploaded.' }; + } + + const bytes = statSync(file.filePath).size; + + // The work callback runs while the progress dialog is shown; the dialog + // closes when the callback completes. + await interaction.promptProgress(`Processing ${bytes} bytes`, { + title: 'Importing...', + options: { + work: async () => { + await new Promise((resolve) => setTimeout(resolve, 2000)); + }, + }, + }); + + return { success: true, message: 'Imported.' }; +}); + +await builder.build().run(); +``` + + + + + + For inputs, validation, and result handling, see [Interaction service](/extensibility/interaction-service/). + + +### ⚙️ Resource commands with user-defined arguments + +Resource commands can now declare **named arguments**. In the dashboard, users are prompted for these arguments before the command runs; from the CLI, each argument is surfaced as a `--` option, and the command errors when a required option is missing. Populate `CommandOptions.Arguments` with `InteractionInput` descriptors, and read the collected values from `ExecuteCommandContext.Arguments` inside the command callback. TypeScript AppHosts get full parity through Aspire Type System (ATS) exports. This mechanism is stable and works for interactive workflows such as custom deployment or setup procedures. + + + + +```csharp title="AppHost.cs" +using Aspire.Hosting.ApplicationModel; + +var builder = DistributedApplication.CreateBuilder(args); + +builder.AddContainer("api", "nginx") + .WithCommand( + name: "echo", + displayName: "Echo", + executeCommand: ctx => + { + var message = ctx.Arguments["message"].Value; + // Use the collected argument... + return Task.FromResult(CommandResults.Success()); + }, + commandOptions: new CommandOptions + { + Description = "Echo a message.", + Arguments = + [ + new InteractionInput + { + Name = "message", + Label = "Message", + InputType = InputType.Text, + Required = true + } + ] + }); + +builder.Build().Run(); +``` + + + + +```typescript title="apphost.mts" +import { createBuilder, InputType } from './.aspire/modules/aspire.mjs'; + +const builder = await createBuilder(); + +await builder.addContainer('api', 'nginx').withCommand('echo', 'Echo', async (ctx) => { + const args = await ctx.arguments(); + const message = await args.value('message'); + // Use the collected argument... + return { success: true, message: `message=${message ?? ''}` }; +}, { + commandOptions: { + arguments: [ + { name: 'message', inputType: InputType.Text, required: true }, + ], + }, +}); + +await builder.build().run(); +``` + + + + + + For the full command API, see [Custom resource commands](/fundamentals/custom-resource-commands/). + + +### 🔐 HTTPS certificates for project resources + +Project and executable resources can now be configured with HTTPS certificates directly from the AppHost. Use `WithHttpsDeveloperCertificate()` to inject the local ASP.NET Core developer certificate, `WithHttpsCertificate(certificate, password)` to supply an explicit `X509Certificate2`, or `WithHttpsCertificateConfiguration(...)` for full control. `WithoutHttpsCertificate()` opts a resource out. + + + + + + +```csharp title="AppHost.cs" +#pragma warning disable ASPIRECERTIFICATES001 + +var builder = DistributedApplication.CreateBuilder(args); + +builder.AddProject("api") + .WithHttpsDeveloperCertificate(); + +builder.Build().Run(); +``` + + + + +```typescript title="apphost.mts" +import { createBuilder } from './.aspire/modules/aspire.mjs'; + +const builder = await createBuilder(); + +await builder.addProject('api', './src/Api').withHttpsDeveloperCertificate(); + +await builder.build().run(); +``` + + + + + + For certificate options and deployment considerations, see [Certificate configuration](/app-host/certificate-configuration/). + + +### ☁️ Reference existing Azure resources across scopes + +Aspire 13.5 makes it easier to point at Azure resources that live **outside** your app's own resource group, subscription, or tenant. The `AsExistingInResourceGroup(name, resourceGroup, subscription)`, `AsExistingInSubscription(name, subscription)`, and `AsExistingInTenant(name)` methods — along with their `RunAsExisting*` and `PublishAsExisting*` variants — attach an existing-resource annotation so provisioning references the resource in the scope you specify. Each accepts either literal strings or `ParameterResource` values, so scope details can come from parameters and secrets. + + + + +```csharp title="AppHost.cs" +var builder = DistributedApplication.CreateBuilder(args); + +var name = builder.AddParameter("sb-name"); +var resourceGroup = builder.AddParameter("sb-rg"); +var subscription = builder.AddParameter("sb-sub"); + +builder.AddAzureServiceBus("sb") + .AsExistingInResourceGroup(name, resourceGroup, subscription); + +builder.Build().Run(); +``` + + + + +```typescript title="apphost.mts" +import { createBuilder } from './.aspire/modules/aspire.mjs'; + +const builder = await createBuilder(); + +const name = await builder.addParameter('sb-name'); +const resourceGroup = await builder.addParameter('sb-rg'); +const subscription = await builder.addParameter('sb-sub'); + +await builder.addAzureServiceBus('sb') + .asExistingInResourceGroup(name, resourceGroup, subscription); + +await builder.build().run(); +``` + + + + + + For run- versus publish-mode behavior, see [Use existing Azure resources](/integrations/cloud/azure/customize-resources/). + + +### 🐞 Model .NET projects by path with AddDotnetProject + +Aspire 13.5 adds the experimental `AddDotnetProject(name, path)` API in the new `Aspire.Hosting.Dotnet` package. It models a .NET project **by its path** — as a `DotnetProjectResource` — which is useful when you can't (or don't want to) add a compile-time `ProjectReference` from the AppHost, for example when the project lives outside your solution or you're assembling a mixed-language app. The resource participates in orchestration like any other project, and the [Aspire Visual Studio Code extension](/get-started/aspire-vscode-extension/) can attach a debugger to it through the new `SupportsDebuggingAnnotation`. + + + + + + +```csharp title="AppHost.cs" +#pragma warning disable ASPIREDOTNETPROJECT001 + +var builder = DistributedApplication.CreateBuilder(args); + +builder.AddDotnetProject("inventory", @"../InventoryService/InventoryService.csproj"); + +builder.Build().Run(); +``` + + + + +```typescript title="apphost.mts" +import { createBuilder } from './.aspire/modules/aspire.mjs'; + +const builder = await createBuilder(); + +await builder.addDotnetProject('inventory', '../InventoryService/InventoryService.csproj'); + +await builder.build().run(); +``` + + + + +Because a `DotnetProjectResource` is orchestration-only, `aspire publish` and `aspire deploy` fail with an actionable error rather than emitting a manifest with machine-local paths. When you need to publish a path-based project, reach for `AddCSharpApp(...)`/`addCSharpApp(...)` or configure container publishing with `PublishAsDockerFile(...)`. + +Go resources get a debugging boost too: the Delve server accepts a single client by default and can opt into **multi-client** mode via `WithDelveServer(o => o.AcceptMultiClient = true)`, and typed options for common Delve server flags (including `--continue`) are configured through `DelveServerOptions` in C# AppHosts. + + + For modeling .NET projects, see [Set up .NET / C# apps in the AppHost](/integrations/frameworks/dotnet/dotnet-host/); for Go, see [Go hosting integration](/integrations/frameworks/go/go-host/). + + +## 🟦 TypeScript AppHost improvements + +TypeScript (and polyglot) AppHost support is now **generally available** in 13.5 — the `ASPIREATS001` experimental diagnostic is gone, so you no longer suppress anything to author an AppHost in TypeScript. With GA in place, this release closes several remaining gaps with C#. + +### 💚 Custom health checks + +TypeScript AppHosts can now register custom health check callbacks with `builder.addHealthCheck(name, check)` and attach them (or the built-in checks) to a resource with `resource.withHealthCheck(key)`. The callback returns a `HealthCheckResult` with a `status`, optional `description`, and optional `data`. Project resources also gain `withEndpointsInEnvironment(endpointNames)` to control which endpoints are injected into environment variables. This brings TypeScript to parity with C#, where custom checks are registered through `AddHealthChecks().AddCheck(...)` and attached with the same `WithHealthCheck(key)` method. + +```typescript title="apphost.mts" +import { createBuilder, HealthStatus } from './.aspire/modules/aspire.mjs'; +import type { HealthCheckResult } from './.aspire/modules/aspire.mjs'; + +const builder = await createBuilder(); + +const myCheck = async (): Promise => ({ + status: HealthStatus.Healthy, + description: 'All systems nominal', + data: { version: '1.0' }, +}); +await builder.addHealthCheck('my_check', myCheck); + +await builder.addRedis('cache').withHealthCheck('my_check'); + +await builder.build().run(); +``` + + + For the TypeScript AppHost model, see [TypeScript AppHost](/app-host/typescript-apphost/), and for health checks in general, see [Health checks](/fundamentals/health-checks/). + + +### 🐳 Container file copying + +TypeScript AppHosts can now copy host files into container resources, reaching parity with C#. Use `withContainerFiles(destinationPath, sourcePath, options)` to copy a directory, or `withContainerFilesCallback(destinationPath, callback, options)` to generate files dynamically at build time. Ownership and permissions are controlled through `ContainerFilesOptions` (`defaultOwner`, `defaultGroup`, `umask`). C# exposes the same capability through the `WithContainerFiles(...)` overloads, which accept either a source directory or a build-time callback. + +```typescript title="apphost.mts" +import { createBuilder } from './.aspire/modules/aspire.mjs'; + +const builder = await createBuilder(); + +await builder.addContainer('myapp', 'nginx') + .withContainerFiles('/usr/share/nginx/html', './wwwroot', { + defaultOwner: 101, // nginx user UID + defaultGroup: 101, + umask: 0o022, + }) + .withContainerFilesCallback('/etc/nginx/conf.d', async (ctx) => { + const conf = await ctx.createFile('default.conf', { + contents: 'server { listen 80; }', + mode: 0o644, + }); + return [conf]; + }); + +await builder.build().run(); +``` + + + For the full callback surface, see [Container files](/app-host/container-files/). + + +### ⚡ Faster startup and reliability fixes + +TypeScript AppHost startup no longer waits a fixed delay before the CLI attempts to connect; the CLI now races the RPC connection retry loop against process exit, reducing the time from `aspire run` to an active AppHost. This release also fixes several reliability issues: + +- A deadlock where async callbacks stored in `IOptions.Configure` were invoked during `BeforeStartEvent`. +- A startup reliability issue with `WithBrowserLogs()` where tracked browser sessions could fail even when the browser eventually became responsive; the CDP startup timeout has been increased. +- Failures when proxyless container endpoint references were accessed before the container was created. +- `aspire run` failing for polyglot AppHosts that use `*.dev.localhost` resource service URLs. + +## 🖥️ Aspire CLI + +The CLI is central to the Aspire developer experience, and 13.5 makes it easier to install, keep current, and reason about how it runs. + +### 📦 Install via npm and Nix + +The Aspire CLI is now available as an npm package (`@microsoft/aspire-cli`), and on Nix via the flake (`nix profile add github:microsoft/aspire#aspire-cli`). The update command and update notifier detect npm-installed versions and print the matching npm command instead of overwriting the managed binary. When the CLI can't fetch the Aspire skills bundle from GitHub release assets, it falls back to an embedded bundle and shows a non-fatal warning instead of failing the command. + + + For every installation method, see [Install the CLI](/get-started/install-cli/). + + +### 🎯 CLI bundle by default + + + +The *CLI bundle* is a copy of the Aspire CLI that an AppHost can resolve for itself, so `dotnet run` and `aspire run` behave identically and everyone on the team — and CI — uses a consistent CLI version without a separate global install. In 13.5, new C# AppHosts created from the templates opt in automatically by setting `AspireUseCliBundle=true`, so the bundle is resolved out of the box. + +Here's what that means in practice: + +- **Nothing manual for new projects.** When the bundle is enabled and the CLI is 13.5.0 or later, `dotnet run` acquires the bundle on the fly through `dnx` and delegates to `aspire run`. It's a change in behavior from earlier releases, but not one you have to configure. +- **Existing projects are unaffected** unless they opt in. The SDK-level default remains opt-in (`false`); set `AspireUseCliBundle=true` in your AppHost to adopt it, or pin the CLI through a local tool manifest for reproducible `dnx` invocation. +- **The state is always explicit.** Diagnostics tell you exactly what's happening rather than failing silently: `ASPIRE009` (error) when the bundle can't be resolved, `ASPIRE010` (warning) when a project opts out, and `ASPIRE011` when `dnx` isn't available. You can force the DNX invocation path with `AspireCliInvocationMode=Dnx`. + +### 🛠️ Command improvements + +- **`aspire stop --force`** performs a normal stop and then cleans up the AppHost's persistent resources, permanently deleting their data without an additional confirmation prompt. +- **`aspire update --migrate`** migrates legacy TypeScript AppHost entry points (`apphost.ts` → `apphost.mts`). +- **`aspire doctor`** reports operating-system details (including Linux distro info from `/etc/os-release`), detects Visual Studio Code, and adds DCP health checks. JSON output includes a structured `operating-system` check for tooling. +- **`aspire docs search`** returns more relevant results. +- Stale AppHost backchannel sockets are pruned automatically so they no longer block commands like `aspire add`, and Ctrl+C/SIGTERM handling is more responsive during startup. + + + See the reference for [`aspire stop`](/reference/cli/commands/aspire-stop/), [`aspire update`](/reference/cli/commands/aspire-update/), and [`aspire doctor`](/reference/cli/commands/aspire-doctor/). + + +## 📊 Dashboard + +The dashboard is often the first thing you see when you run an Aspire app, and 13.5 gives it a substantial refresh — official branding, sharper telemetry filtering, and a built-in terminal view. + +### 🎨 Refreshed, officially branded UI + +The dashboard adopts official Aspire branding and a refreshed visual design built on a new design-token system, with accessibility improvements across the UI. + +The Aspire dashboard resources page showing the refreshed, officially branded UI with a list of running resources and their endpoints. + +### 🔎 Sharper telemetry filtering + +- **Timestamp filter for telemetry** — filter logs and traces by timestamp using a dedicated search qualifier in the filter dialog. +- **Numeric equality operators** — the telemetry filter dialog adds `==` and `!=` for exact numeric matching. +- **Console logs text filter** — filter console-log output by text. +- **Reconnect modal** — a clearer modal appears when the dashboard loses its connection to the AppHost. + +The Aspire dashboard structured logs page with a filter applied to narrow the displayed log entries. + +The Aspire dashboard traces page showing filtering controls used to focus on a specific set of traces. + +### 🖥️ Terminal view + +Running resources configured with `WithTerminal()` open in a terminal view in the dashboard by default, so you can interact with the live session immediately. Resources that are waiting, starting, exited, or failed fall back to the console-logs view until they reach the running state. + + + +Additional dashboard fixes include friendlier health-check error messages (in place of raw exception stacks), deduplicated replica display names, and correct telemetry streaming when resource filters are applied. + +## 🧩 Visual Studio Code extension + +The Aspire extension for Visual Studio Code is rebranded to **Aspire** (with an updated icon and display name) and gains a batch of new capabilities: + +- **Open the dashboard in a side panel** instead of an external browser. +- **Bun debugging** (via the WebKit Inspector Protocol) and **MAUI debugging** support. +- **Resource commands in the tree view** — Start, Stop, and custom commands appear as child items under each resource. +- **Discovered AppHosts** — idle AppHosts found in the workspace appear in the Aspire pane with context-menu actions, and `launchUrl` from `launchSettings.json` is honored. +- **Improved parameter display** — consistent secret masking, missing-value warnings, and truncation across panels. +- **More efficient discovery** — respects workspace exclusion settings and debounces file changes, and terminal commands now use structured shell arguments to prevent command injection. +- **A richer extension API surface** for integration with the C# Dev Kit. + + + + + For setup and usage, see [Aspire Visual Studio Code extension](/get-started/aspire-vscode-extension/). + + +## 🚀 Deployment and integrations + +Getting from local development to a deployed environment keeps getting smoother. This release adds first-class Kubernetes and AKS storage, more predictable Azure Container Apps naming and networking, and a batch of new and updated hosting integrations. + +### 📦 Persistent volumes for Kubernetes and AKS + +You can now model Kubernetes `PersistentVolumeClaim`s as first-class resources. Call `AddPersistentVolume(name)` on a Kubernetes environment, configure it with `WithStorageClass`, `WithCapacity`, and `WithAccessMode`, and bind it to a workload with `WithPersistentVolume(...)`. Any workload bound to a persistent volume is rendered as a `StatefulSet` rather than a `Deployment`. The same `AddPersistentVolume` API is available on the AKS environment via `Aspire.Hosting.Azure.Kubernetes`. + + + + + + +```csharp title="AppHost.cs" +#pragma warning disable ASPIRECOMPUTE002 + +using Aspire.Hosting.Kubernetes; + +var builder = DistributedApplication.CreateBuilder(args); + +var k8s = builder.AddKubernetesEnvironment("k8s"); + +var data = k8s.AddPersistentVolume("data") + .WithStorageClass("managed-csi") + .WithCapacity("20Gi") + .WithAccessMode(PersistentVolumeAccessMode.ReadWriteOnce); + +builder.AddContainer("postgres", "postgres:16") + .WithVolume("data", "/var/lib/postgresql/data") + .WithPersistentVolume(data); + +builder.Build().Run(); +``` + + + + +```typescript title="apphost.mts" +import { createBuilder, PersistentVolumeAccessMode } from './.aspire/modules/aspire.mjs'; + +const builder = await createBuilder(); + +const k8s = await builder.addKubernetesEnvironment('k8s'); + +const data = await k8s.addPersistentVolume('data') + .withStorageClass('managed-csi') + .withCapacity('20Gi') + .withAccessMode(PersistentVolumeAccessMode.ReadWriteOnce); + +// The polyglot withVolume() reorders parameters to (target, name?), so the +// mount path comes first. withKubernetesPersistentVolume() then binds by name. +await builder.addContainer('postgres', 'postgres:16') + .withVolume('/var/lib/postgresql/data', 'data') + .withKubernetesPersistentVolume(data); + +await builder.build().run(); +``` + + + + + + For details, see [Persistent volumes](/deployment/kubernetes/persistent-volumes/) and [Deploy to AKS](/deployment/kubernetes/aks/). + + +### 🏷️ Unique resource naming for Azure Container Apps + +Azure Container Apps environments can opt into deterministic, collision-resistant resource names with `WithUniqueResourceNaming()`, which is useful when you deploy more than one environment into the same resource group. Names incorporate a `uniqueString(resourceGroup().id)` suffix while preserving each environment's digits, so `cae1` and `cae2` stay distinct. + + + + + + +```csharp title="AppHost.cs" +#pragma warning disable ASPIREACANAMING002 + +var builder = DistributedApplication.CreateBuilder(args); + +builder.AddAzureContainerAppEnvironment("acaenv") + .WithUniqueResourceNaming(); + +builder.Build().Run(); +``` + + + + +```typescript title="apphost.mts" +import { createBuilder } from './.aspire/modules/aspire.mjs'; + +const builder = await createBuilder(); + +await builder.addAzureContainerAppEnvironment('acaenv') + .withUniqueResourceNaming(); + +await builder.build().run(); +``` + + + + + + For more configuration options, see [Configure Azure Container Apps environments](/integrations/cloud/azure/configure-container-apps/). + + +### 🔗 Virtual network integration for Azure environments + +Azure Container Apps and Azure App Service environments can now be placed into a delegated subnet. Declare a subnet with `WithServiceDelegation(serviceName)`, then attach it to an environment with `WithDelegatedSubnet(subnet)`. The virtual-network builder APIs live in `Aspire.Hosting.Azure.Network` and emit the [`ASPIREAZURE003`](/diagnostics/aspireazure003/) experimental diagnostic. + + + For App Service hosting, see [Azure App Service hosting integration](/integrations/cloud/azure/azure-app-service/azure-app-service-host/). + + +### ✨ New and updated integrations + +The integrations ecosystem keeps growing. Aspire 13.5 opens a preview path to a new deployment platform, sharpens the AI hosting story, and folds in a batch of community-driven improvements. Here are the highlights: + +- **Radius (preview).** The new `Aspire.Hosting.Radius` integration adds `AddRadiusEnvironment(name)` (with `WithNamespace(...)`) so you can publish your app to a [Radius](https://radapp.io/) environment. Publish-time infrastructure configuration (`ConfigureRadiusInfrastructure`) and project container-image overrides are gated behind experimental diagnostics. +- **Foundry Local.** `AddFoundry(name).RunAsFoundryLocal()` now drives the installed **foundry CLI** for lifecycle management, and resources can be exposed as hosted agents with `AsHostedAgent(...)`, where `HostedAgentProtocol` is `Responses` or `Invocations`. +- **Redis modules.** `AddRedis(...).WithModule(path)` loads a Redis module into the container, with `RedisModules` constants (`Json`, `Search`, `BloomFilter`, `TimeSeries`) pointing at the modules shipped in Redis 8+ images — see the sample below. +- **.NET projects by path.** The new `Aspire.Hosting.Dotnet` package provides the experimental `AddDotnetProject` API for modeling .NET projects by path, covered earlier in this release. +- **Dev tunnels regions.** `DevTunnelOptions.Region` (a `DevTunnelRegion?` enum) lets you pin the region a tunnel is created in. +- **Blazor gateway on Docker Compose.** Blazor gateway resources now support Docker Compose publishing. + + + + +```csharp title="AppHost.cs" +var builder = DistributedApplication.CreateBuilder(args); + +builder.AddRedis("cache") + .WithModule(RedisModules.Json) + .WithModule(RedisModules.Search); + +builder.Build().Run(); +``` + + + + +```typescript title="apphost.mts" +import { createBuilder, RedisModules } from './.aspire/modules/aspire.mjs'; + +const builder = await createBuilder(); + +await builder.addRedis('cache') + .withModule(RedisModules.Json) + .withModule(RedisModules.Search); + +await builder.build().run(); +``` + + + + + + For Redis hosting, see [Redis hosting integration](/integrations/caching/redis/redis-host/); for tunnels, see [Dev tunnels](/integrations/devtools/dev-tunnels/); for Foundry, see [Azure AI Foundry](/integrations/cloud/azure/azure-ai-foundry/azure-ai-foundry-get-started/). + + +## 🧰 Templates + +New project templates target **.NET 11 preview** in addition to the current LTS, and C# AppHost templates set `AspireUseCliBundle=true` by default so freshly scaffolded projects resolve the CLI bundle out of the box. + +## Breaking changes + +The following breaking changes are included in Aspire 13.5: + +1. **`ServiceProvider` renamed to `Services`.** The `ServiceProvider` property on hosting context types is now `Services`. Update your code to use the new property name. + +2. **`PublishAsConnectionString` marked obsolete.** Switch to `AddConnectionString` in publish-mode app model code. + +3. **`aspire ps --resources` and `--include-hidden` removed.** `aspire ps` now focuses on AppHost-level summaries; use `aspire describe` for detailed resource data. (`--include-hidden` remains on the `aspire resource` subcommand.) + +4. **GitHub Models integration deprecated.** GitHub Models is no longer available to new customers, so `Aspire.Hosting.GitHub.Models` is deprecated. Its public APIs are marked `[Obsolete]` and the package no longer appears in `aspire add` output; it will be removed in a future release. Migrate to the [Azure AI Foundry integration](/integrations/cloud/azure/azure-ai-foundry/azure-ai-foundry-get-started/). + +5. **Proxyless endpoint port allocation timing changed.** Proxyless endpoints without an explicit public `port` now receive one during service preparation, before workload resources are created. The default allocation range is `10000-32767` and can be overridden with `ASPIRE_PROXYLESS_ENDPOINT_PORT_RANGE=start-end`. + +6. **Go polyglot: a single optional `options` DTO is now passed directly.** When an exported API has exactly one optional `options` DTO parameter, the Go code generator now passes the DTO type directly instead of wrapping it in a generated method-options struct. Go AppHosts that used the wrapper form must update their call sites after regenerating the SDK. + +7. **`TerminalOptions.Shell` removed; `Columns`/`Rows` validated.** `TerminalOptions` no longer has a `Shell` property, and `Columns`/`Rows` now throw `ArgumentOutOfRangeException` when set to zero or a negative value. The internal terminal implementation types are gated behind the `ASPIRETERMINAL001` experimental diagnostic. + +8. **`DevTunnelRegion` enum values normalized.** Region enum names were normalized — for example, `UKSouth` (not `UkSouth`) and `SoutheastAsia` (not `SouthEastAsia`). Update any code that referenced the old spellings. + +9. **Dashboard AI Assistant removed.** The AI Assistant chat UI has been removed from the dashboard. + +10. **VS Code dashboard auto-launch removed.** The extension no longer opens the dashboard automatically; opt in with the `dashboardBrowser` setting or `launch.json` value. + +11. **Orleans provider annotation is internal.** `OrleansProviderTypeAnnotation` and `ProviderConfiguration` are now internal. + +12. **`DotnetProjectResource` moved to `Aspire.Hosting.Dotnet` and made experimental.** It now lives in the `Aspire.Hosting.Dotnet` namespace and emits the `ASPIREDOTNETPROJECT001` diagnostic. + + + +## Known issues + +No Aspire 13.5 known issues are documented yet. If you discover an issue, please [report it on GitHub](https://github.com/microsoft/aspire/issues). diff --git a/src/frontend/src/content/docs/zh-cn/index.mdx b/src/frontend/src/content/docs/zh-cn/index.mdx index d10821b4b..e0279c538 100644 --- a/src/frontend/src/content/docs/zh-cn/index.mdx +++ b/src/frontend/src/content/docs/zh-cn/index.mdx @@ -11,7 +11,7 @@ prev: false next: false banner: content: | - 🚀 Aspire 13.4 已发布!查看 Aspire 13.4 的新功能。 + ✨ Aspire 13.5 已发布!查看 Aspire 13.5 的新功能。 bannerAutoDismissAfterDays: 14 hero: tagline: 精简你的技术栈。

轻松编排前端、API、容器和数据库—无需重写,无限可能。扩展 Aspire 为任何项目赋能。

diff --git a/src/frontend/src/data/aspire-integrations.json b/src/frontend/src/data/aspire-integrations.json index 8bc624ff3..237fdbe4c 100644 --- a/src/frontend/src/data/aspire-integrations.json +++ b/src/frontend/src/data/aspire-integrations.json @@ -15,8 +15,8 @@ "inference", "ai-search" ], - "downloads": 116081, - "version": "13.4.6-preview.1.26319.6" + "downloads": 107909, + "version": "13.5.0-preview.1.26417.7" }, { "title": "Aspire.Azure.AI.OpenAI", @@ -33,8 +33,8 @@ "ai", "openai" ], - "downloads": 741855, - "version": "13.4.6-preview.1.26319.6" + "downloads": 723533, + "version": "13.5.0-preview.1.26417.7" }, { "title": "Aspire.Azure.Data.Tables", @@ -50,10 +50,11 @@ "azure", "tables", "table", - "storage" + "storage", + "cloud" ], - "downloads": 3874731, - "version": "13.4.6" + "downloads": 3843635, + "version": "13.5.0" }, { "title": "Aspire.Azure.Messaging.EventHubs", @@ -70,10 +71,11 @@ "eventhubs", "amqp", "messaging", - "eventing" + "eventing", + "cloud" ], - "downloads": 693013, - "version": "13.4.6" + "downloads": 673266, + "version": "13.5.0" }, { "title": "Aspire.Azure.Messaging.ServiceBus", @@ -90,10 +92,11 @@ "servicebus", "amqp", "messaging", - "eventing" + "eventing", + "cloud" ], - "downloads": 1679550, - "version": "13.4.6" + "downloads": 1613897, + "version": "13.5.0" }, { "title": "Aspire.Azure.Messaging.WebPubSub", @@ -110,10 +113,11 @@ "webpubsub", "websocket", "pubsub", - "messaging" + "messaging", + "cloud" ], - "downloads": 66081, - "version": "13.4.6" + "downloads": 64736, + "version": "13.5.0" }, { "title": "Aspire.Azure.Npgsql", @@ -132,10 +136,11 @@ "npgsql", "sql", "database", - "data" + "data", + "cloud" ], - "downloads": 132440, - "version": "13.4.6" + "downloads": 122721, + "version": "13.5.0" }, { "title": "Aspire.Azure.Npgsql.EntityFrameworkCore.PostgreSQL", @@ -159,10 +164,11 @@ "postgresql", "postgres", "npgsql", - "sql" + "sql", + "cloud" ], - "downloads": 365980, - "version": "13.4.6" + "downloads": 345922, + "version": "13.5.0" }, { "title": "Aspire.Azure.Search.Documents", @@ -176,12 +182,13 @@ "component", "cloud", "azure", + "azure", "search", "ai", "ai-search" ], - "downloads": 425362, - "version": "13.4.6" + "downloads": 416435, + "version": "13.5.0" }, { "title": "Aspire.Azure.Security.KeyVault", @@ -197,10 +204,11 @@ "azure", "keyvault", "secrets", - "security" + "security", + "cloud" ], - "downloads": 1467453, - "version": "13.4.6" + "downloads": 1417484, + "version": "13.5.0" }, { "title": "Aspire.Azure.Storage.Blobs", @@ -216,10 +224,11 @@ "azure", "storage", "blobs", - "blob" + "blob", + "cloud" ], - "downloads": 6516550, - "version": "13.4.6" + "downloads": 6365659, + "version": "13.5.0" }, { "title": "Aspire.Azure.Storage.Files.DataLake", @@ -237,8 +246,8 @@ "files", "datalake" ], - "downloads": 4583, - "version": "13.4.6-preview.1.26319.6" + "downloads": 4279, + "version": "13.5.0-preview.1.26417.7" }, { "title": "Aspire.Azure.Storage.Queues", @@ -255,10 +264,11 @@ "storage", "queue", "queues", - "messaging" + "messaging", + "cloud" ], - "downloads": 1795861, - "version": "13.4.6" + "downloads": 1765647, + "version": "13.5.0" }, { "title": "Aspire.Confluent.Kafka", @@ -275,8 +285,8 @@ "messaging", "eventing" ], - "downloads": 2614846, - "version": "13.4.6" + "downloads": 2600696, + "version": "13.5.0" }, { "title": "Aspire.Elastic.Clients.Elasticsearch", @@ -291,7 +301,7 @@ "cloud", "elasticsearch" ], - "downloads": 74993, + "downloads": 73344, "version": "13.3.0" }, { @@ -302,15 +312,16 @@ "tags": [ "aspire", "hosting", - "orchestration" + "orchestration", + "polyglot" ], - "downloads": 32062463, - "version": "13.4.6" + "downloads": 30663328, + "version": "13.5.0" }, { "title": "Aspire.Hosting.AgentFramework.DevUI", "description": "Microsoft Agent Framework DevUI support for Aspire.", - "icon": "https://api.nuget.org/v3-flatcontainer/aspire.hosting.agentframework.devui/1.17.0-preview.260804.1/icon", + "icon": "https://api.nuget.org/v3-flatcontainer/aspire.hosting.agentframework.devui/1.16.0-preview.260730.1/icon", "href": "https://www.nuget.org/packages/Aspire.Hosting.AgentFramework.DevUI", "tags": [ "aspire", @@ -321,13 +332,13 @@ "ai", "agents" ], - "downloads": 3112, - "version": "1.17.0-preview.260804.1" + "downloads": 2812, + "version": "1.16.0-preview.260730.1" }, { "title": "Aspire.Hosting.AWS", "description": "Add support for provisioning AWS application resources and configuring the AWS SDK for .NET.", - "icon": "https://api.nuget.org/v3-flatcontainer/aspire.hosting.aws/13.6.0/icon", + "icon": "https://api.nuget.org/v3-flatcontainer/aspire.hosting.aws/13.5.0/icon", "href": "https://www.nuget.org/packages/Aspire.Hosting.AWS", "tags": [ "aspire", @@ -335,8 +346,8 @@ "hosting", "aws" ], - "downloads": 703969, - "version": "13.6.0" + "downloads": 667233, + "version": "13.5.0" }, { "title": "Aspire.Hosting.Azure", @@ -349,10 +360,11 @@ "azure", "cloud", "provisioning", - "orchestration" + "orchestration", + "polyglot" ], - "downloads": 8017775, - "version": "13.4.6" + "downloads": 7660869, + "version": "13.5.0" }, { "title": "Aspire.Hosting.Azure.AppConfiguration", @@ -365,10 +377,11 @@ "hosting", "azure", "configuration", - "cloud" + "cloud", + "polyglot" ], - "downloads": 528479, - "version": "13.4.6" + "downloads": 501252, + "version": "13.5.0" }, { "title": "Aspire.Hosting.Azure.AppContainers", @@ -382,10 +395,11 @@ "azure", "container", "cloud", - "appcontainers" + "appcontainers", + "polyglot" ], - "downloads": 1076383, - "version": "13.4.6" + "downloads": 1022857, + "version": "13.5.0" }, { "title": "Aspire.Hosting.Azure.ApplicationInsights", @@ -400,10 +414,11 @@ "monitoring", "observability", "cloud", - "applicationinsights" + "applicationinsights", + "polyglot" ], - "downloads": 872170, - "version": "13.4.6" + "downloads": 838358, + "version": "13.5.0" }, { "title": "Aspire.Hosting.Azure.AppService", @@ -416,10 +431,11 @@ "hosting", "azure", "cloud", - "appservice" + "appservice", + "polyglot" ], - "downloads": 76479, - "version": "13.4.6" + "downloads": 71748, + "version": "13.5.0" }, { "title": "Aspire.Hosting.Azure.CognitiveServices", @@ -436,10 +452,11 @@ "cognitiveservices", "cognitive", "services", - "cloud" + "cloud", + "polyglot" ], - "downloads": 772183, - "version": "13.4.6" + "downloads": 750157, + "version": "13.5.0" }, { "title": "Aspire.Hosting.Azure.ContainerRegistry", @@ -453,10 +470,11 @@ "azure", "container", "registry", - "cloud" + "cloud", + "polyglot" ], - "downloads": 761994, - "version": "13.4.6" + "downloads": 706262, + "version": "13.5.0" }, { "title": "Aspire.Hosting.Azure.CosmosDB", @@ -472,10 +490,11 @@ "database", "cloud", "data", - "nosql" + "nosql", + "polyglot" ], - "downloads": 1429576, - "version": "13.4.6" + "downloads": 1362979, + "version": "13.5.0" }, { "title": "Aspire.Hosting.Azure.EventHubs", @@ -490,10 +509,11 @@ "eventhubs", "messaging", "eventing", - "cloud" + "cloud", + "polyglot" ], - "downloads": 542666, - "version": "13.4.6" + "downloads": 505669, + "version": "13.5.0" }, { "title": "Aspire.Hosting.Azure.FrontDoor", @@ -507,10 +527,11 @@ "azure", "front-door", "cdn", - "cloud" + "cloud", + "polyglot" ], - "downloads": 7538, - "version": "13.4.6-preview.1.26319.6" + "downloads": 6567, + "version": "13.5.0-preview.1.26417.7" }, { "title": "Aspire.Hosting.Azure.Functions", @@ -524,10 +545,11 @@ "azure", "functions", "serverless", - "cloud" + "cloud", + "polyglot" ], - "downloads": 1540064, - "version": "13.4.6" + "downloads": 1464733, + "version": "13.5.0" }, { "title": "Aspire.Hosting.Azure.KeyVault", @@ -542,10 +564,11 @@ "keyvault", "security", "secrets", - "cloud" + "cloud", + "polyglot" ], - "downloads": 2943472, - "version": "13.4.6" + "downloads": 2796945, + "version": "13.5.0" }, { "title": "Aspire.Hosting.Azure.Kubernetes", @@ -558,10 +581,11 @@ "hosting", "azure", "kubernetes", - "aks" + "aks", + "polyglot" ], - "downloads": 1975, - "version": "13.4.6-preview.1.26319.6" + "downloads": 1647, + "version": "13.5.0-preview.1.26417.7" }, { "title": "Aspire.Hosting.Azure.Kusto", @@ -576,10 +600,11 @@ "kusto", "database", "data", - "cloud" + "cloud", + "polyglot" ], - "downloads": 8087, - "version": "13.4.6-preview.1.26319.6" + "downloads": 7650, + "version": "13.5.0-preview.1.26417.7" }, { "title": "Aspire.Hosting.Azure.Network", @@ -597,10 +622,11 @@ "subnet", "nat-gateway", "public-ip", - "cloud" + "cloud", + "polyglot" ], - "downloads": 319526, - "version": "13.4.6" + "downloads": 287434, + "version": "13.5.0" }, { "title": "Aspire.Hosting.Azure.OperationalInsights", @@ -614,10 +640,11 @@ "azure", "monitoring", "observability", - "cloud" + "cloud", + "polyglot" ], - "downloads": 1440437, - "version": "13.4.6" + "downloads": 1375507, + "version": "13.5.0" }, { "title": "Aspire.Hosting.Azure.PostgreSQL", @@ -632,10 +659,11 @@ "postgresql", "database", "data", - "cloud" + "cloud", + "polyglot" ], - "downloads": 704574, - "version": "13.4.6" + "downloads": 666669, + "version": "13.5.0" }, { "title": "Aspire.Hosting.Azure.Redis", @@ -650,10 +678,11 @@ "redis", "cache", "caching", - "cloud" + "cloud", + "polyglot" ], - "downloads": 561502, - "version": "13.4.6" + "downloads": 539841, + "version": "13.5.0" }, { "title": "Aspire.Hosting.Azure.Search", @@ -668,10 +697,11 @@ "search", "ai", "ai-search", - "cloud" + "cloud", + "polyglot" ], - "downloads": 273112, - "version": "13.4.6" + "downloads": 263294, + "version": "13.5.0" }, { "title": "Aspire.Hosting.Azure.ServiceBus", @@ -686,10 +716,11 @@ "servicebus", "messaging", "eventing", - "cloud" + "cloud", + "polyglot" ], - "downloads": 2145908, - "version": "13.4.6" + "downloads": 2033377, + "version": "13.5.0" }, { "title": "Aspire.Hosting.Azure.SignalR", @@ -703,10 +734,11 @@ "azure", "signalr", "realtime", - "cloud" + "cloud", + "polyglot" ], - "downloads": 283215, - "version": "13.4.6" + "downloads": 261607, + "version": "13.5.0" }, { "title": "Aspire.Hosting.Azure.Sql", @@ -721,10 +753,11 @@ "sql", "database", "data", - "cloud" + "cloud", + "polyglot" ], - "downloads": 840548, - "version": "13.4.6" + "downloads": 805203, + "version": "13.5.0" }, { "title": "Aspire.Hosting.Azure.Storage", @@ -740,10 +773,11 @@ "blob", "queue", "table", - "cloud" + "cloud", + "polyglot" ], - "downloads": 5536104, - "version": "13.4.6" + "downloads": 5264774, + "version": "13.5.0" }, { "title": "Aspire.Hosting.Azure.WebPubSub", @@ -759,10 +793,11 @@ "pubsub", "websocket", "messaging", - "cloud" + "cloud", + "polyglot" ], - "downloads": 35918, - "version": "13.4.6" + "downloads": 34830, + "version": "13.5.0" }, { "title": "Aspire.Hosting.Blazor", @@ -775,10 +810,11 @@ "hosting", "blazor", "webassembly", - "gateway" + "gateway", + "polyglot" ], - "downloads": 2517, - "version": "13.4.6-preview.1.26319.6" + "downloads": 2049, + "version": "13.5.0-preview.1.26417.7" }, { "title": "Aspire.Hosting.Browsers", @@ -792,10 +828,11 @@ "browser", "browsers", "logs", - "diagnostics" + "diagnostics", + "polyglot" ], - "downloads": 129529, - "version": "13.4.6-preview.1.26319.6" + "downloads": 116844, + "version": "13.5.0-preview.1.26417.7" }, { "title": "Aspire.Hosting.ClickHouse", @@ -810,7 +847,7 @@ "database", "data" ], - "downloads": 18474, + "downloads": 15122, "version": "13.4.6" }, { @@ -819,8 +856,8 @@ "icon": "https://api.nuget.org/v3-flatcontainer/aspire.hosting.codegeneration.go/13.4.6/icon", "href": "https://www.nuget.org/packages/Aspire.Hosting.CodeGeneration.Go", "tags": [], - "downloads": 7573, - "version": "13.4.6" + "downloads": 6853, + "version": "13.5.0" }, { "title": "Aspire.Hosting.CodeGeneration.Java", @@ -828,8 +865,8 @@ "icon": "https://api.nuget.org/v3-flatcontainer/aspire.hosting.codegeneration.java/13.4.6/icon", "href": "https://www.nuget.org/packages/Aspire.Hosting.CodeGeneration.Java", "tags": [], - "downloads": 2298, - "version": "13.4.6" + "downloads": 2238, + "version": "13.5.0" }, { "title": "Aspire.Hosting.CodeGeneration.Python", @@ -837,8 +874,8 @@ "icon": "https://api.nuget.org/v3-flatcontainer/aspire.hosting.codegeneration.python/13.4.6/icon", "href": "https://www.nuget.org/packages/Aspire.Hosting.CodeGeneration.Python", "tags": [], - "downloads": 2298, - "version": "13.4.6" + "downloads": 2241, + "version": "13.5.0" }, { "title": "Aspire.Hosting.CodeGeneration.Rust", @@ -846,8 +883,8 @@ "icon": "https://api.nuget.org/v3-flatcontainer/aspire.hosting.codegeneration.rust/13.4.6/icon", "href": "https://www.nuget.org/packages/Aspire.Hosting.CodeGeneration.Rust", "tags": [], - "downloads": 2249, - "version": "13.4.6" + "downloads": 2190, + "version": "13.5.0" }, { "title": "Aspire.Hosting.CodeGeneration.TypeScript", @@ -855,8 +892,8 @@ "icon": "https://api.nuget.org/v3-flatcontainer/aspire.hosting.codegeneration.typescript/13.4.6/icon", "href": "https://www.nuget.org/packages/Aspire.Hosting.CodeGeneration.TypeScript", "tags": [], - "downloads": 52028, - "version": "13.4.6" + "downloads": 43892, + "version": "13.5.0" }, { "title": "Aspire.Hosting.DevTunnels", @@ -866,10 +903,11 @@ "tags": [ "aspire", "hosting", - "devtunnels" + "devtunnels", + "polyglot" ], - "downloads": 455070, - "version": "13.4.6" + "downloads": 426271, + "version": "13.5.0" }, { "title": "Aspire.Hosting.Docker", @@ -880,10 +918,11 @@ "aspire", "hosting", "docker", - "docker-compose" + "docker-compose", + "polyglot" ], - "downloads": 602697, - "version": "13.4.6" + "downloads": 567826, + "version": "13.5.0" }, { "title": "Aspire.Hosting.DocumentDB", @@ -900,9 +939,26 @@ "azure", "database" ], - "downloads": 1047, + "downloads": 999, "version": "0.114.1" }, + { + "title": "Aspire.Hosting.Dotnet", + "description": "C# and .NET application support for Aspire.", + "icon": "https://api.nuget.org/v3-flatcontainer/aspire.hosting.dotnet/13.5.0-preview.1.26417.7/icon", + "href": "https://www.nuget.org/packages/Aspire.Hosting.Dotnet", + "tags": [ + "aspire", + "integration", + "hosting", + "dotnet", + "csharp", + "framework", + "runtime", + "polyglot" + ], + "version": "13.5.0-preview.1.26417.7" + }, { "title": "Aspire.Hosting.Elasticsearch", "description": "Elasticsearch support for Aspire.", @@ -914,7 +970,7 @@ "hosting", "elasticsearch" ], - "downloads": 396760, + "downloads": 383091, "version": "13.3.0" }, { @@ -930,10 +986,11 @@ "efcore", "entityframeworkcore", "migrations", - "database" + "database", + "polyglot" ], - "downloads": 17898, - "version": "13.4.6-preview.1.26319.6" + "downloads": 14300, + "version": "13.5.0-preview.1.26417.7" }, { "title": "Aspire.Hosting.Foundry", @@ -952,7 +1009,7 @@ "ai-search", "cloud" ], - "downloads": 36495, + "downloads": 32599, "version": "13.4.6-preview.1.26319.6" }, { @@ -966,10 +1023,11 @@ "hosting", "garnet", "cache", - "caching" + "caching", + "polyglot" ], - "downloads": 102151, - "version": "13.4.6" + "downloads": 97323, + "version": "13.5.0" }, { "title": "Aspire.Hosting.GitHub.Models", @@ -982,10 +1040,11 @@ "hosting", "github", "models", - "ai" + "ai", + "polyglot" ], - "downloads": 27686, - "version": "13.4.6" + "downloads": 27084, + "version": "13.5.0" }, { "title": "Aspire.Hosting.Go", @@ -999,10 +1058,11 @@ "go", "golang", "framework", - "runtime" + "runtime", + "polyglot" ], - "downloads": 2774, - "version": "13.4.6-preview.1.26319.6" + "downloads": 2382, + "version": "13.5.0-preview.1.26417.7" }, { "title": "Aspire.Hosting.Integration.Analyzers", @@ -1013,12 +1073,10 @@ "aspire", "hosting", "analyzers", - "ats", - "polyglot", - "integration" + "ats" ], - "downloads": 3795, - "version": "13.4.6-preview.1.26319.6" + "downloads": 3326, + "version": "13.5.0-preview.1.26417.7" }, { "title": "Aspire.Hosting.JavaScript", @@ -1033,10 +1091,11 @@ "nodejs", "javascript", "framework", - "runtime" + "runtime", + "polyglot" ], - "downloads": 3098334, - "version": "13.4.6" + "downloads": 2823725, + "version": "13.5.0" }, { "title": "Aspire.Hosting.Kafka", @@ -1049,10 +1108,11 @@ "hosting", "kafka", "messaging", - "eventing" + "eventing", + "polyglot" ], - "downloads": 1171527, - "version": "13.4.6" + "downloads": 1120374, + "version": "13.5.0" }, { "title": "Aspire.Hosting.Keycloak", @@ -1066,10 +1126,11 @@ "keycloak", "authentication", "identity", - "security" + "security", + "polyglot" ], - "downloads": 778114, - "version": "13.4.6-preview.1.26319.6" + "downloads": 740212, + "version": "13.5.0-preview.1.26417.7" }, { "title": "Aspire.Hosting.Kubernetes", @@ -1079,10 +1140,11 @@ "tags": [ "aspire", "hosting", - "kubernetes" + "kubernetes", + "polyglot" ], - "downloads": 202740, - "version": "13.4.6-preview.1.26319.6" + "downloads": 187879, + "version": "13.5.0-preview.1.26417.7" }, { "title": "Aspire.Hosting.Maui", @@ -1092,10 +1154,11 @@ "tags": [ "aspire", "maui", - "hosting" + "hosting", + "polyglot" ], - "downloads": 33522, - "version": "13.4.6-preview.1.26319.6" + "downloads": 31400, + "version": "13.5.0-preview.1.26417.7" }, { "title": "Aspire.Hosting.Milvus", @@ -1111,10 +1174,11 @@ "vector", "search", "data", - "ai-search" + "ai-search", + "polyglot" ], - "downloads": 12921, - "version": "13.4.6" + "downloads": 12778, + "version": "13.5.0" }, { "title": "Aspire.Hosting.MongoDB", @@ -1127,10 +1191,11 @@ "hosting", "mongodb", "database", - "data" + "data", + "polyglot" ], - "downloads": 920333, - "version": "13.4.6" + "downloads": 882318, + "version": "13.5.0" }, { "title": "Aspire.Hosting.MySql", @@ -1143,10 +1208,11 @@ "hosting", "mysql", "database", - "data" + "data", + "polyglot" ], - "downloads": 352429, - "version": "13.4.6" + "downloads": 337848, + "version": "13.5.0" }, { "title": "Aspire.Hosting.Nats", @@ -1159,10 +1225,11 @@ "hosting", "nats", "messaging", - "eventing" + "eventing", + "polyglot" ], - "downloads": 204389, - "version": "13.4.6" + "downloads": 195257, + "version": "13.5.0" }, { "title": "Aspire.Hosting.OpenAI", @@ -1174,10 +1241,11 @@ "integration", "hosting", "openai", - "ai" + "ai", + "polyglot" ], - "downloads": 40479, - "version": "13.4.6" + "downloads": 39377, + "version": "13.5.0" }, { "title": "Aspire.Hosting.Oracle", @@ -1191,10 +1259,11 @@ "oracle", "sql", "database", - "data" + "data", + "polyglot" ], - "downloads": 84940, - "version": "13.4.6" + "downloads": 80980, + "version": "13.5.0" }, { "title": "Aspire.Hosting.Orleans", @@ -1207,10 +1276,11 @@ "hosting", "orleans", "messaging", - "eventing" + "eventing", + "polyglot" ], - "downloads": 326765, - "version": "13.4.6" + "downloads": 314175, + "version": "13.5.0" }, { "title": "Aspire.Hosting.PostgreSQL", @@ -1226,10 +1296,11 @@ "npgsql", "sql", "database", - "data" + "data", + "polyglot" ], - "downloads": 6805210, - "version": "13.4.6" + "downloads": 6451999, + "version": "13.5.0" }, { "title": "Aspire.Hosting.Python", @@ -1242,10 +1313,11 @@ "hosting", "python", "framework", - "runtime" + "runtime", + "polyglot" ], - "downloads": 333696, - "version": "13.4.6" + "downloads": 319425, + "version": "13.5.0" }, { "title": "Aspire.Hosting.Qdrant", @@ -1260,10 +1332,11 @@ "vector", "database", "ai-search", - "data" + "data", + "polyglot" ], - "downloads": 143328, - "version": "13.4.6" + "downloads": 141012, + "version": "13.5.0" }, { "title": "Aspire.Hosting.RabbitMQ", @@ -1276,10 +1349,27 @@ "hosting", "rabbitmq", "messaging", - "eventing" + "eventing", + "polyglot" ], - "downloads": 2750372, - "version": "13.4.6" + "downloads": 2611760, + "version": "13.5.0" + }, + { + "title": "Aspire.Hosting.Radius", + "description": "Provides extensions and resource definitions for an Aspire AppHost to publish and deploy applications to a Radius (radapp.io) compute environment.", + "icon": "https://api.nuget.org/v3-flatcontainer/aspire.hosting.radius/13.5.0-preview.1.26417.7/icon", + "href": "https://www.nuget.org/packages/Aspire.Hosting.Radius", + "tags": [ + "aspire", + "integration", + "hosting", + "radius", + "radapp", + "deployment", + "polyglot" + ], + "version": "13.5.0-preview.1.26417.7" }, { "title": "Aspire.Hosting.Redis", @@ -1292,10 +1382,11 @@ "hosting", "redis", "cache", - "caching" + "caching", + "polyglot" ], - "downloads": 6755073, - "version": "13.4.6" + "downloads": 6412937, + "version": "13.5.0" }, { "title": "Aspire.Hosting.Seq", @@ -1308,10 +1399,11 @@ "hosting", "seq", "observability", - "logging" + "logging", + "polyglot" ], - "downloads": 496960, - "version": "13.4.6" + "downloads": 476808, + "version": "13.5.0" }, { "title": "Aspire.Hosting.SqlServer", @@ -1325,10 +1417,11 @@ "sqlserver", "sql", "database", - "data" + "data", + "polyglot" ], - "downloads": 6784001, - "version": "13.4.6" + "downloads": 6444732, + "version": "13.5.0" }, { "title": "Aspire.Hosting.Valkey", @@ -1341,10 +1434,11 @@ "hosting", "valkey", "cache", - "caching" + "caching", + "polyglot" ], - "downloads": 596593, - "version": "13.4.6" + "downloads": 550910, + "version": "13.5.0" }, { "title": "Aspire.Hosting.Yarp", @@ -1357,10 +1451,11 @@ "hosting", "yarp", "reverse-proxy", - "api" + "api", + "polyglot" ], - "downloads": 443504, - "version": "13.4.6" + "downloads": 414489, + "version": "13.5.0" }, { "title": "Aspire.Keycloak.Authentication", @@ -1378,8 +1473,8 @@ "identity", "security" ], - "downloads": 558474, - "version": "13.4.6-preview.1.26319.6" + "downloads": 537869, + "version": "13.5.0-preview.1.26417.7" }, { "title": "Aspire.Microsoft.Azure.Cosmos", @@ -1398,10 +1493,11 @@ "data", "database", "db", - "nosql" + "nosql", + "cloud" ], - "downloads": 1362579, - "version": "13.4.6" + "downloads": 1319447, + "version": "13.5.0" }, { "title": "Aspire.Microsoft.Azure.StackExchangeRedis", @@ -1416,11 +1512,13 @@ "cloud", "azure", "redis", + "azure", "cache", - "caching" + "caching", + "cloud" ], - "downloads": 98214, - "version": "13.4.6" + "downloads": 91383, + "version": "13.5.0" }, { "title": "Aspire.Microsoft.Data.SqlClient", @@ -1438,8 +1536,8 @@ "sqlserver", "sql" ], - "downloads": 1851504, - "version": "13.4.6" + "downloads": 1823861, + "version": "13.5.0" }, { "title": "Aspire.Microsoft.EntityFrameworkCore.Cosmos", @@ -1463,10 +1561,11 @@ "azure", "cosmos", "cosmosdb", - "nosql" + "nosql", + "cloud" ], - "downloads": 217873, - "version": "13.4.6" + "downloads": 211353, + "version": "13.5.0" }, { "title": "Aspire.Microsoft.EntityFrameworkCore.SqlServer", @@ -1490,8 +1589,8 @@ "sqlserver", "sql" ], - "downloads": 5619838, - "version": "13.4.6" + "downloads": 5445270, + "version": "13.5.0" }, { "title": "Aspire.Microsoft.Extensions.Configuration.AzureAppConfiguration", @@ -1506,10 +1605,11 @@ "cloud", "azure", "configuration", - "appconfiguration" + "appconfiguration", + "cloud" ], - "downloads": 623121, - "version": "13.4.6" + "downloads": 574752, + "version": "13.5.0" }, { "title": "Aspire.Milvus.Client", @@ -1528,8 +1628,8 @@ "search", "ai-search" ], - "downloads": 9018, - "version": "13.4.6-preview.1.26319.6" + "downloads": 8930, + "version": "13.5.0-preview.1.26417.7" }, { "title": "Aspire.MongoDB.Driver", @@ -1546,8 +1646,8 @@ "database", "mongodb" ], - "downloads": 375965, - "version": "13.4.6" + "downloads": 363103, + "version": "13.5.0" }, { "title": "Aspire.MongoDB.Driver.v2", @@ -1564,8 +1664,8 @@ "database", "mongodb" ], - "downloads": 4278, - "version": "13.4.6" + "downloads": 4222, + "version": "13.5.0" }, { "title": "Aspire.MongoDB.EntityFrameworkCore", @@ -1588,8 +1688,8 @@ "o/rm", "mongodb" ], - "downloads": 5287, - "version": "13.4.6" + "downloads": 4847, + "version": "13.5.0" }, { "title": "Aspire.MySqlConnector", @@ -1608,8 +1708,8 @@ "mysql", "sql" ], - "downloads": 2466045, - "version": "13.4.6" + "downloads": 2464320, + "version": "13.5.0" }, { "title": "Aspire.NATS.Net", @@ -1626,8 +1726,8 @@ "messaging", "eventing" ], - "downloads": 164687, - "version": "13.4.6" + "downloads": 157740, + "version": "13.5.0" }, { "title": "Aspire.Npgsql", @@ -1647,8 +1747,8 @@ "npgsql", "sql" ], - "downloads": 3380880, - "version": "13.4.6" + "downloads": 3320615, + "version": "13.5.0" }, { "title": "Aspire.Npgsql.EntityFrameworkCore.PostgreSQL", @@ -1674,8 +1774,8 @@ "npgsql", "sql" ], - "downloads": 6469395, - "version": "13.4.6" + "downloads": 6277806, + "version": "13.5.0" }, { "title": "Aspire.OpenAI", @@ -1691,8 +1791,8 @@ "ai", "openai" ], - "downloads": 664288, - "version": "13.4.6-preview.1.26319.6" + "downloads": 643283, + "version": "13.5.0-preview.1.26417.7" }, { "title": "Aspire.Oracle.EntityFrameworkCore", @@ -1716,8 +1816,8 @@ "oracle", "sql" ], - "downloads": 243068, - "version": "13.4.6" + "downloads": 240666, + "version": "13.5.0" }, { "title": "Aspire.Pomelo.EntityFrameworkCore.MySql", @@ -1742,8 +1842,8 @@ "mysql", "sql" ], - "downloads": 413467, - "version": "13.4.6" + "downloads": 410972, + "version": "13.5.0" }, { "title": "Aspire.Qdrant.Client", @@ -1761,8 +1861,8 @@ "database", "ai-search" ], - "downloads": 115457, - "version": "13.4.6" + "downloads": 111838, + "version": "13.5.0" }, { "title": "Aspire.RabbitMQ.Client", @@ -1782,8 +1882,8 @@ "messaging", "eventing" ], - "downloads": 1085040, - "version": "13.4.6" + "downloads": 1044493, + "version": "13.5.0" }, { "title": "Aspire.RabbitMQ.Client.v6", @@ -1803,8 +1903,8 @@ "messaging", "eventing" ], - "downloads": 4637, - "version": "13.4.6" + "downloads": 4586, + "version": "13.5.0" }, { "title": "Aspire.Seq", @@ -1821,8 +1921,8 @@ "observability", "logging" ], - "downloads": 500449, - "version": "13.4.6" + "downloads": 485590, + "version": "13.5.0" }, { "title": "Aspire.StackExchange.Redis", @@ -1839,8 +1939,8 @@ "caching", "redis" ], - "downloads": 11168292, - "version": "13.4.6" + "downloads": 10961575, + "version": "13.5.0" }, { "title": "Aspire.StackExchange.Redis.DistributedCaching", @@ -1859,8 +1959,8 @@ "distributedcache", "redis" ], - "downloads": 3066938, - "version": "13.4.6" + "downloads": 2957866, + "version": "13.5.0" }, { "title": "Aspire.StackExchange.Redis.OutputCaching", @@ -1880,8 +1980,8 @@ "outputcache", "redis" ], - "downloads": 923457, - "version": "13.4.6" + "downloads": 902322, + "version": "13.5.0" }, { "title": "Aspire.TypeSystem", @@ -1894,13 +1994,13 @@ "typesystem", "polyglot" ], - "downloads": 59262, - "version": "13.4.6" + "downloads": 50154, + "version": "13.5.0" }, { "title": "CommunityToolkit.Aspire.Bitwarden.SecretManager", "description": "An Aspire client integration for Bitwarden Secrets Manager.", - "icon": "https://api.nuget.org/v3-flatcontainer/communitytoolkit.aspire.bitwarden.secretmanager/13.4.1-beta.706/icon", + "icon": "https://api.nuget.org/v3-flatcontainer/communitytoolkit.aspire.bitwarden.secretmanager/13.4.1-beta.701/icon", "href": "https://www.nuget.org/packages/CommunityToolkit.Aspire.Bitwarden.SecretManager", "tags": [ "aspire", @@ -1912,13 +2012,13 @@ "secret-manager", "client" ], - "downloads": 630, - "version": "13.4.1-beta.706" + "downloads": 396, + "version": "13.4.1-beta.701" }, { "title": "CommunityToolkit.Aspire.DuckDB.NET.Data", "description": "An Aspire client integration for the DuckDB.NET.Data package.", - "icon": "https://api.nuget.org/v3-flatcontainer/communitytoolkit.aspire.duckdb.net.data/13.4.1-beta.706/icon", + "icon": "https://api.nuget.org/v3-flatcontainer/communitytoolkit.aspire.duckdb.net.data/13.4.1-beta.701/icon", "href": "https://www.nuget.org/packages/CommunityToolkit.Aspire.DuckDB.NET.Data", "tags": [ "aspire", @@ -1931,8 +2031,8 @@ "olap", "ado.net" ], - "downloads": 956, - "version": "13.4.1-beta.706" + "downloads": 699, + "version": "13.4.1-beta.701" }, { "title": "CommunityToolkit.Aspire.GoFeatureFlag", @@ -1947,7 +2047,7 @@ "gofeatureflag", "client" ], - "downloads": 49054, + "downloads": 48635, "version": "13.4.0" }, { @@ -1963,7 +2063,7 @@ "hosting", "activemq" ], - "downloads": 71437, + "downloads": 70097, "version": "13.4.0" }, { @@ -1979,7 +2079,7 @@ "hosting", "adminer" ], - "downloads": 228088, + "downloads": 214987, "version": "13.4.0" }, { @@ -1996,7 +2096,7 @@ "dapr", "azure" ], - "downloads": 80000, + "downloads": 78262, "version": "13.0.0" }, { @@ -2016,7 +2116,7 @@ "state-store", "pubsub" ], - "downloads": 51654, + "downloads": 50650, "version": "13.0.0" }, { @@ -2033,7 +2133,7 @@ "dataapibuilder", "hosting" ], - "downloads": 67428, + "downloads": 66583, "version": "13.4.0" }, { @@ -2050,13 +2150,13 @@ "azure", "extensions" ], - "downloads": 5317, + "downloads": 4936, "version": "13.4.0" }, { "title": "CommunityToolkit.Aspire.Hosting.Bitwarden.SecretManager", "description": "An Aspire hosting integration for Bitwarden Secrets Manager.", - "icon": "https://api.nuget.org/v3-flatcontainer/communitytoolkit.aspire.hosting.bitwarden.secretmanager/13.4.1-beta.706/icon", + "icon": "https://api.nuget.org/v3-flatcontainer/communitytoolkit.aspire.hosting.bitwarden.secretmanager/13.4.1-beta.701/icon", "href": "https://www.nuget.org/packages/CommunityToolkit.Aspire.Hosting.Bitwarden.SecretManager", "tags": [ "aspire", @@ -2068,8 +2168,8 @@ "secrets", "secret-manager" ], - "downloads": 631, - "version": "13.4.1-beta.706" + "downloads": 396, + "version": "13.4.1-beta.701" }, { "title": "CommunityToolkit.Aspire.Hosting.Bun", @@ -2086,7 +2186,7 @@ "javascript", "deprecated" ], - "downloads": 100382, + "downloads": 97766, "version": "13.3.0" }, { @@ -2102,7 +2202,7 @@ "hosting", "dapr" ], - "downloads": 651866, + "downloads": 629133, "version": "13.0.0" }, { @@ -2116,7 +2216,7 @@ "communitytoolkit", "dotnetcommunitytoolkit" ], - "downloads": 4570, + "downloads": 4494, "version": "9.1.1-beta.197" }, { @@ -2132,13 +2232,13 @@ "hosting", "dbgate" ], - "downloads": 280587, + "downloads": 266171, "version": "13.4.0" }, { "title": "CommunityToolkit.Aspire.Hosting.Dbx", "description": "An Aspire hosting integration for the Dbx database management container.", - "icon": "https://api.nuget.org/v3-flatcontainer/communitytoolkit.aspire.hosting.dbx/13.4.1-beta.706/icon", + "icon": "https://api.nuget.org/v3-flatcontainer/communitytoolkit.aspire.hosting.dbx/13.4.1-beta.701/icon", "href": "https://www.nuget.org/packages/CommunityToolkit.Aspire.Hosting.Dbx", "tags": [ "aspire", @@ -2148,8 +2248,8 @@ "hosting", "dbx" ], - "downloads": 1428, - "version": "13.4.1-beta.706" + "downloads": 932, + "version": "13.4.1-beta.701" }, { "title": "CommunityToolkit.Aspire.Hosting.Deno", @@ -2164,13 +2264,13 @@ "hosting", "deno" ], - "downloads": 67717, + "downloads": 66268, "version": "13.4.0" }, { "title": "CommunityToolkit.Aspire.Hosting.DuckDB", "description": "An Aspire hosting integration for providing a DuckDB database connection.", - "icon": "https://api.nuget.org/v3-flatcontainer/communitytoolkit.aspire.hosting.duckdb/13.4.1-beta.706/icon", + "icon": "https://api.nuget.org/v3-flatcontainer/communitytoolkit.aspire.hosting.duckdb/13.4.1-beta.701/icon", "href": "https://www.nuget.org/packages/CommunityToolkit.Aspire.Hosting.DuckDB", "tags": [ "aspire", @@ -2182,8 +2282,8 @@ "analytics", "olap" ], - "downloads": 954, - "version": "13.4.1-beta.706" + "downloads": 692, + "version": "13.4.1-beta.701" }, { "title": "CommunityToolkit.Aspire.Hosting.Elasticsearch.Extensions", @@ -2199,7 +2299,7 @@ "elasticsearch", "elasticvue" ], - "downloads": 5694, + "downloads": 5312, "version": "13.4.0" }, { @@ -2217,7 +2317,7 @@ "feature-flags", "openfeature" ], - "downloads": 23060, + "downloads": 21591, "version": "13.4.0" }, { @@ -2234,7 +2334,7 @@ "flyway", "migration" ], - "downloads": 40543, + "downloads": 37222, "version": "13.4.0" }, { @@ -2250,7 +2350,7 @@ "hosting", "gofeatureflag" ], - "downloads": 47385, + "downloads": 47026, "version": "13.4.0" }, { @@ -2266,7 +2366,7 @@ "hosting", "java" ], - "downloads": 75099, + "downloads": 74339, "version": "13.4.0" }, { @@ -2286,13 +2386,13 @@ "pnpm", "npm" ], - "downloads": 140763, + "downloads": 132352, "version": "13.4.0" }, { "title": "CommunityToolkit.Aspire.Hosting.K3s", "description": "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.", - "icon": "https://api.nuget.org/v3-flatcontainer/communitytoolkit.aspire.hosting.k3s/13.4.1-beta.706/icon", + "icon": "https://api.nuget.org/v3-flatcontainer/communitytoolkit.aspire.hosting.k3s/13.4.1-beta.701/icon", "href": "https://www.nuget.org/packages/CommunityToolkit.Aspire.Hosting.K3s", "tags": [ "aspire", @@ -2304,8 +2404,8 @@ "hosting", "cluster" ], - "downloads": 714, - "version": "13.4.1-beta.706" + "downloads": 457, + "version": "13.4.1-beta.701" }, { "title": "CommunityToolkit.Aspire.Hosting.k6", @@ -2320,13 +2420,13 @@ "hosting", "k6" ], - "downloads": 60366, + "downloads": 58826, "version": "13.4.0" }, { "title": "CommunityToolkit.Aspire.Hosting.Keycloak.Extensions", "description": "Aspire hosting extensions for Keycloak (includes PostgreSQL integration).", - "icon": "https://api.nuget.org/v3-flatcontainer/communitytoolkit.aspire.hosting.keycloak.extensions/13.4.1-beta.706/icon", + "icon": "https://api.nuget.org/v3-flatcontainer/communitytoolkit.aspire.hosting.keycloak.extensions/13.4.1-beta.701/icon", "href": "https://www.nuget.org/packages/CommunityToolkit.Aspire.Hosting.Keycloak.Extensions", "tags": [ "aspire", @@ -2338,13 +2438,13 @@ "hosting", "extensions" ], - "downloads": 14519, - "version": "13.4.1-beta.706" + "downloads": 13313, + "version": "13.4.1-beta.701" }, { "title": "CommunityToolkit.Aspire.Hosting.Kind", "description": "An Aspire hosting integration for Kind that manages local Kind clusters for development with Docker or Podman.", - "icon": "https://api.nuget.org/v3-flatcontainer/communitytoolkit.aspire.hosting.kind/13.4.1-beta.706/icon", + "icon": "https://api.nuget.org/v3-flatcontainer/communitytoolkit.aspire.hosting.kind/13.4.1-beta.701/icon", "href": "https://www.nuget.org/packages/CommunityToolkit.Aspire.Hosting.Kind", "tags": [ "aspire", @@ -2358,8 +2458,8 @@ "docker", "podman" ], - "downloads": 348, - "version": "13.4.1-beta.706" + "downloads": 132, + "version": "13.4.1-beta.701" }, { "title": "CommunityToolkit.Aspire.Hosting.KurrentDB", @@ -2374,7 +2474,7 @@ "hosting", "kurrentdb" ], - "downloads": 15923, + "downloads": 15301, "version": "13.4.0" }, { @@ -2390,13 +2490,13 @@ "hosting", "lavinmq" ], - "downloads": 46544, + "downloads": 45610, "version": "13.4.0" }, { "title": "CommunityToolkit.Aspire.Hosting.Listmonk", "description": "listmonk support for Aspire.", - "icon": "https://api.nuget.org/v3-flatcontainer/communitytoolkit.aspire.hosting.listmonk/13.4.1-beta.706/icon", + "icon": "https://api.nuget.org/v3-flatcontainer/communitytoolkit.aspire.hosting.listmonk/13.4.1-beta.701/icon", "href": "https://www.nuget.org/packages/CommunityToolkit.Aspire.Hosting.Listmonk", "tags": [ "aspire", @@ -2409,13 +2509,13 @@ "email", "marketing" ], - "downloads": 331, - "version": "13.4.1-beta.706" + "downloads": 119, + "version": "13.4.1-beta.701" }, { "title": "CommunityToolkit.Aspire.Hosting.Logto", "description": "Aspire hosting extensions for Logto (includes PostgreSQL and Redis integration).", - "icon": "https://api.nuget.org/v3-flatcontainer/communitytoolkit.aspire.hosting.logto/13.4.1-beta.706/icon", + "icon": "https://api.nuget.org/v3-flatcontainer/communitytoolkit.aspire.hosting.logto/13.4.1-beta.701/icon", "href": "https://www.nuget.org/packages/CommunityToolkit.Aspire.Hosting.Logto", "tags": [ "aspire", @@ -2428,8 +2528,8 @@ "hosting", "extensions" ], - "downloads": 833, - "version": "13.4.1-beta.706" + "downloads": 557, + "version": "13.4.1-beta.701" }, { "title": "CommunityToolkit.Aspire.Hosting.MailPit", @@ -2445,7 +2545,7 @@ "smtp", "hosting" ], - "downloads": 305737, + "downloads": 288029, "version": "13.4.0" }, { @@ -2463,7 +2563,7 @@ "debugging", "hosting" ], - "downloads": 65545, + "downloads": 63327, "version": "13.4.0" }, { @@ -2479,7 +2579,7 @@ "hosting", "meilisearch" ], - "downloads": 70456, + "downloads": 69433, "version": "13.4.0" }, { @@ -2498,7 +2598,7 @@ "storage", "deprecated" ], - "downloads": 164051, + "downloads": 156563, "version": "13.4.0" }, { @@ -2515,7 +2615,7 @@ "mongodb", "dbgate" ], - "downloads": 80504, + "downloads": 78721, "version": "13.4.0" }, { @@ -2532,7 +2632,7 @@ "mysql", "dbgate" ], - "downloads": 43638, + "downloads": 42618, "version": "13.4.0" }, { @@ -2549,7 +2649,7 @@ "ngrok", "tunnels" ], - "downloads": 163498, + "downloads": 156893, "version": "13.4.0" }, { @@ -2566,7 +2666,7 @@ "ollama", "ai" ], - "downloads": 354004, + "downloads": 341591, "version": "13.4.0" }, { @@ -2583,7 +2683,7 @@ "opentelemetry", "observability" ], - "downloads": 51920, + "downloads": 48618, "version": "13.4.0" }, { @@ -2600,7 +2700,7 @@ "smtp", "hosting" ], - "downloads": 59341, + "downloads": 58566, "version": "13.4.0" }, { @@ -2616,7 +2716,7 @@ "hosting", "perl" ], - "downloads": 1253, + "downloads": 987, "version": "13.4.0" }, { @@ -2633,7 +2733,7 @@ "postgres", "dbgate" ], - "downloads": 99694, + "downloads": 96465, "version": "13.4.0" }, { @@ -2652,7 +2752,7 @@ "script", "hosting" ], - "downloads": 60669, + "downloads": 58541, "version": "13.4.0" }, { @@ -2669,7 +2769,7 @@ "uvicorn", "python" ], - "downloads": 76120, + "downloads": 75428, "version": "13.4.0" }, { @@ -2685,7 +2785,7 @@ "hosting", "ravendb" ], - "downloads": 67783, + "downloads": 66663, "version": "13.4.0" }, { @@ -2702,7 +2802,7 @@ "redis", "dbgate" ], - "downloads": 74145, + "downloads": 72725, "version": "13.4.0" }, { @@ -2718,13 +2818,13 @@ "hosting", "rust" ], - "downloads": 66747, + "downloads": 65622, "version": "13.4.0" }, { "title": "CommunityToolkit.Aspire.Hosting.RustFs", "description": "An Aspire hosting integration for the RustFS S3-compatible object storage container.", - "icon": "https://api.nuget.org/v3-flatcontainer/communitytoolkit.aspire.hosting.rustfs/13.4.1-beta.706/icon", + "icon": "https://api.nuget.org/v3-flatcontainer/communitytoolkit.aspire.hosting.rustfs/13.4.1-beta.701/icon", "href": "https://www.nuget.org/packages/CommunityToolkit.Aspire.Hosting.RustFs", "tags": [ "aspire", @@ -2736,13 +2836,13 @@ "storage", "s3-compatible" ], - "downloads": 1229, - "version": "13.4.1-beta.706" + "downloads": 610, + "version": "13.4.1-beta.701" }, { "title": "CommunityToolkit.Aspire.Hosting.SeaweedFS", "description": "Provides extension methods and resource definitions for the Aspire AppHost to support running SeaweedFS containers with an S3-compatible API.", - "icon": "https://api.nuget.org/v3-flatcontainer/communitytoolkit.aspire.hosting.seaweedfs/13.4.1-beta.706/icon", + "icon": "https://api.nuget.org/v3-flatcontainer/communitytoolkit.aspire.hosting.seaweedfs/13.4.1-beta.701/icon", "href": "https://www.nuget.org/packages/CommunityToolkit.Aspire.Hosting.SeaweedFS", "tags": [ "aspire", @@ -2755,8 +2855,8 @@ "storage", "s3" ], - "downloads": 741, - "version": "13.4.1-beta.706" + "downloads": 452, + "version": "13.4.1-beta.701" }, { "title": "CommunityToolkit.Aspire.Hosting.Sftp", @@ -2772,7 +2872,7 @@ "sftp", "hosting" ], - "downloads": 7785, + "downloads": 7257, "version": "13.4.0" }, { @@ -2789,7 +2889,7 @@ "solr", "search" ], - "downloads": 13835, + "downloads": 13438, "version": "13.4.0" }, { @@ -2806,7 +2906,7 @@ "sql", "sqlproj" ], - "downloads": 301273, + "downloads": 286007, "version": "13.4.0" }, { @@ -2823,7 +2923,7 @@ "sql", "sqlite" ], - "downloads": 87619, + "downloads": 85566, "version": "13.4.0" }, { @@ -2840,13 +2940,13 @@ "sqlserver", "dbgate" ], - "downloads": 187157, + "downloads": 177161, "version": "13.4.0" }, { "title": "CommunityToolkit.Aspire.Hosting.Squad", "description": "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.", - "icon": "https://api.nuget.org/v3-flatcontainer/communitytoolkit.aspire.hosting.squad/13.4.1-beta.706/icon", + "icon": "https://api.nuget.org/v3-flatcontainer/communitytoolkit.aspire.hosting.squad/13.4.1-beta.701/icon", "href": "https://www.nuget.org/packages/CommunityToolkit.Aspire.Hosting.Squad", "tags": [ "aspire", @@ -2859,8 +2959,8 @@ "agents", "copilot" ], - "downloads": 645, - "version": "13.4.1-beta.706" + "downloads": 401, + "version": "13.4.1-beta.701" }, { "title": "CommunityToolkit.Aspire.Hosting.Stripe", @@ -2877,7 +2977,7 @@ "payments", "webhooks" ], - "downloads": 11231, + "downloads": 10636, "version": "13.4.0" }, { @@ -2893,7 +2993,7 @@ "hosting", "surrealdb" ], - "downloads": 20987, + "downloads": 20637, "version": "13.4.0" }, { @@ -2909,7 +3009,7 @@ "hosting", "umami" ], - "downloads": 1741, + "downloads": 1441, "version": "13.4.0" }, { @@ -2930,7 +3030,7 @@ "openid-connect", "oidc" ], - "downloads": 1587, + "downloads": 1229, "version": "13.4.0" }, { @@ -2946,13 +3046,13 @@ "kurrentdb", "client" ], - "downloads": 11413, + "downloads": 11059, "version": "13.4.0" }, { "title": "CommunityToolkit.Aspire.Logto.Client", "description": "An Aspire client integration for Logto that registers OpenID Connect (OIDC) or JWT authentication services in the dependency injection container.", - "icon": "https://api.nuget.org/v3-flatcontainer/communitytoolkit.aspire.logto.client/13.4.1-beta.706/icon", + "icon": "https://api.nuget.org/v3-flatcontainer/communitytoolkit.aspire.logto.client/13.4.1-beta.701/icon", "href": "https://www.nuget.org/packages/CommunityToolkit.Aspire.Logto.Client", "tags": [ "aspire", @@ -2965,8 +3065,8 @@ "oidc", "jwt" ], - "downloads": 827, - "version": "13.4.1-beta.706" + "downloads": 570, + "version": "13.4.1-beta.701" }, { "title": "CommunityToolkit.Aspire.MassTransit.RabbitMQ", @@ -2982,7 +3082,7 @@ "masstransit", "rabbitmq" ], - "downloads": 79561, + "downloads": 78058, "version": "13.4.0" }, { @@ -2998,7 +3098,7 @@ "meilisearch", "client" ], - "downloads": 80641, + "downloads": 79689, "version": "13.4.0" }, { @@ -3016,7 +3116,7 @@ "data", "ado.net" ], - "downloads": 54842, + "downloads": 54197, "version": "13.4.0" }, { @@ -3037,7 +3137,7 @@ "ef", "orm" ], - "downloads": 64357, + "downloads": 63651, "version": "9.7.2" }, { @@ -3056,7 +3156,7 @@ "storage", "deprecated" ], - "downloads": 76761, + "downloads": 74832, "version": "13.4.0" }, { @@ -3074,7 +3174,7 @@ "ollamasharp", "client" ], - "downloads": 439972, + "downloads": 427684, "version": "13.4.0" }, { @@ -3090,13 +3190,13 @@ "client", "ravendb" ], - "downloads": 69769, + "downloads": 69184, "version": "13.4.0" }, { "title": "CommunityToolkit.Aspire.SeaweedFS.Client", "description": "An Aspire client integration for SeaweedFS using the AWSSDK.S3 client.", - "icon": "https://api.nuget.org/v3-flatcontainer/communitytoolkit.aspire.seaweedfs.client/13.4.1-beta.706/icon", + "icon": "https://api.nuget.org/v3-flatcontainer/communitytoolkit.aspire.seaweedfs.client/13.4.1-beta.701/icon", "href": "https://www.nuget.org/packages/CommunityToolkit.Aspire.SeaweedFS.Client", "tags": [ "aspire", @@ -3109,8 +3209,8 @@ "storage", "s3" ], - "downloads": 538, - "version": "13.4.1-beta.706" + "downloads": 290, + "version": "13.4.1-beta.701" }, { "title": "CommunityToolkit.Aspire.Sftp", @@ -3125,7 +3225,7 @@ "sftp", "client" ], - "downloads": 3837, + "downloads": 3473, "version": "13.4.0" }, { @@ -3141,7 +3241,7 @@ "surrealdb", "client" ], - "downloads": 20256, + "downloads": 19945, "version": "13.4.0" } ] \ No newline at end of file diff --git a/src/frontend/src/data/github-stats.json b/src/frontend/src/data/github-stats.json index ca7281f0b..3cf9de24a 100644 --- a/src/frontend/src/data/github-stats.json +++ b/src/frontend/src/data/github-stats.json @@ -1,7 +1,7 @@ [ { "name": "microsoft/aspire", - "stars": 6226, + "stars": 6203, "description": "Aspire is the tool for code-first, extensible, observable dev and deploy.", "license": "https://github.com/microsoft/aspire/blob/main/LICENSE.TXT", "licenseName": "MIT License", @@ -9,7 +9,7 @@ }, { "name": "microsoft/aspire-samples", - "stars": 1187, + "stars": 1189, "description": "Browse the sample apps demonstrating Aspire integration across C#, JavaScript, TypeScript, Python, Go, containers, databases, cloud, AI, and observability scenarios.", "license": "https://github.com/microsoft/aspire-samples/blob/main/LICENSE", "licenseName": "MIT License", @@ -33,7 +33,7 @@ }, { "name": "microsoft/dcp", - "stars": 182, + "stars": 183, "description": "Developer Control Plane API server and CLI.", "license": "https://github.com/microsoft/dcp/blob/main/LICENSE", "licenseName": "MIT License", diff --git a/src/frontend/src/data/integration-docs.json b/src/frontend/src/data/integration-docs.json index a12098aaa..f1247d023 100644 --- a/src/frontend/src/data/integration-docs.json +++ b/src/frontend/src/data/integration-docs.json @@ -167,6 +167,10 @@ "match": "Aspire.Hosting.Docker", "href": "/integrations/compute/docker/" }, + { + "match": "Aspire.Hosting.Dotnet", + "href": "/integrations/frameworks/dotnet/dotnet-get-started/" + }, { "match": "Aspire.Hosting.Elasticsearch", "href": "/integrations/databases/elasticsearch/elasticsearch-get-started/" diff --git a/src/frontend/src/data/pkgs/Aspire.Azure.AI.Inference.13.4.6-preview.1.26319.6.json b/src/frontend/src/data/pkgs/Aspire.Azure.AI.Inference.13.5.0-preview.1.26417.7.json similarity index 99% rename from src/frontend/src/data/pkgs/Aspire.Azure.AI.Inference.13.4.6-preview.1.26319.6.json rename to src/frontend/src/data/pkgs/Aspire.Azure.AI.Inference.13.5.0-preview.1.26417.7.json index 837d1e250..22958082e 100644 --- a/src/frontend/src/data/pkgs/Aspire.Azure.AI.Inference.13.4.6-preview.1.26319.6.json +++ b/src/frontend/src/data/pkgs/Aspire.Azure.AI.Inference.13.5.0-preview.1.26417.7.json @@ -1,10 +1,10 @@ { "package": { "name": "Aspire.Azure.AI.Inference", - "version": "13.4.6-preview.1.26319.6", + "version": "13.5.0-preview.1.26417.7", "targetFramework": "net10.0", "sourceRepository": "https://github.com/microsoft/aspire", - "sourceCommit": "87fe259e4fc244c599019a7b1304c85a1488f248" + "sourceCommit": "e076d8e427cb3afb528dbd605acd74c3aea69f94" }, "types": [ { diff --git a/src/frontend/src/data/pkgs/Aspire.Azure.AI.OpenAI.13.4.6-preview.1.26319.6.json b/src/frontend/src/data/pkgs/Aspire.Azure.AI.OpenAI.13.5.0-preview.1.26417.7.json similarity index 99% rename from src/frontend/src/data/pkgs/Aspire.Azure.AI.OpenAI.13.4.6-preview.1.26319.6.json rename to src/frontend/src/data/pkgs/Aspire.Azure.AI.OpenAI.13.5.0-preview.1.26417.7.json index 09db0d163..bf41f8d25 100644 --- a/src/frontend/src/data/pkgs/Aspire.Azure.AI.OpenAI.13.4.6-preview.1.26319.6.json +++ b/src/frontend/src/data/pkgs/Aspire.Azure.AI.OpenAI.13.5.0-preview.1.26417.7.json @@ -1,10 +1,10 @@ { "package": { "name": "Aspire.Azure.AI.OpenAI", - "version": "13.4.6-preview.1.26319.6", + "version": "13.5.0-preview.1.26417.7", "targetFramework": "net10.0", "sourceRepository": "https://github.com/microsoft/aspire", - "sourceCommit": "87fe259e4fc244c599019a7b1304c85a1488f248" + "sourceCommit": "e076d8e427cb3afb528dbd605acd74c3aea69f94" }, "types": [ { diff --git a/src/frontend/src/data/pkgs/Aspire.Azure.Data.Tables.13.4.6.json b/src/frontend/src/data/pkgs/Aspire.Azure.Data.Tables.13.5.0.json similarity index 99% rename from src/frontend/src/data/pkgs/Aspire.Azure.Data.Tables.13.4.6.json rename to src/frontend/src/data/pkgs/Aspire.Azure.Data.Tables.13.5.0.json index 0da9c6845..2f041b33d 100644 --- a/src/frontend/src/data/pkgs/Aspire.Azure.Data.Tables.13.4.6.json +++ b/src/frontend/src/data/pkgs/Aspire.Azure.Data.Tables.13.5.0.json @@ -1,10 +1,10 @@ { "package": { "name": "Aspire.Azure.Data.Tables", - "version": "13.4.6", + "version": "13.5.0", "targetFramework": "net10.0", "sourceRepository": "https://github.com/microsoft/aspire", - "sourceCommit": "87fe259e4fc244c599019a7b1304c85a1488f248" + "sourceCommit": "e076d8e427cb3afb528dbd605acd74c3aea69f94" }, "types": [ { diff --git a/src/frontend/src/data/pkgs/Aspire.Azure.Messaging.EventHubs.13.4.6.json b/src/frontend/src/data/pkgs/Aspire.Azure.Messaging.EventHubs.13.5.0.json similarity index 99% rename from src/frontend/src/data/pkgs/Aspire.Azure.Messaging.EventHubs.13.4.6.json rename to src/frontend/src/data/pkgs/Aspire.Azure.Messaging.EventHubs.13.5.0.json index 0466aed7a..8fa4652e9 100644 --- a/src/frontend/src/data/pkgs/Aspire.Azure.Messaging.EventHubs.13.4.6.json +++ b/src/frontend/src/data/pkgs/Aspire.Azure.Messaging.EventHubs.13.5.0.json @@ -1,10 +1,10 @@ { "package": { "name": "Aspire.Azure.Messaging.EventHubs", - "version": "13.4.6", + "version": "13.5.0", "targetFramework": "net10.0", "sourceRepository": "https://github.com/microsoft/aspire", - "sourceCommit": "87fe259e4fc244c599019a7b1304c85a1488f248" + "sourceCommit": "e076d8e427cb3afb528dbd605acd74c3aea69f94" }, "types": [ { diff --git a/src/frontend/src/data/pkgs/Aspire.Azure.Messaging.ServiceBus.13.4.6.json b/src/frontend/src/data/pkgs/Aspire.Azure.Messaging.ServiceBus.13.5.0.json similarity index 99% rename from src/frontend/src/data/pkgs/Aspire.Azure.Messaging.ServiceBus.13.4.6.json rename to src/frontend/src/data/pkgs/Aspire.Azure.Messaging.ServiceBus.13.5.0.json index 46ceee8aa..98e1d633b 100644 --- a/src/frontend/src/data/pkgs/Aspire.Azure.Messaging.ServiceBus.13.4.6.json +++ b/src/frontend/src/data/pkgs/Aspire.Azure.Messaging.ServiceBus.13.5.0.json @@ -1,10 +1,10 @@ { "package": { "name": "Aspire.Azure.Messaging.ServiceBus", - "version": "13.4.6", + "version": "13.5.0", "targetFramework": "net10.0", "sourceRepository": "https://github.com/microsoft/aspire", - "sourceCommit": "87fe259e4fc244c599019a7b1304c85a1488f248" + "sourceCommit": "e076d8e427cb3afb528dbd605acd74c3aea69f94" }, "types": [ { diff --git a/src/frontend/src/data/pkgs/Aspire.Azure.Messaging.WebPubSub.13.4.6.json b/src/frontend/src/data/pkgs/Aspire.Azure.Messaging.WebPubSub.13.5.0.json similarity index 99% rename from src/frontend/src/data/pkgs/Aspire.Azure.Messaging.WebPubSub.13.4.6.json rename to src/frontend/src/data/pkgs/Aspire.Azure.Messaging.WebPubSub.13.5.0.json index 8320c3447..7433a7d89 100644 --- a/src/frontend/src/data/pkgs/Aspire.Azure.Messaging.WebPubSub.13.4.6.json +++ b/src/frontend/src/data/pkgs/Aspire.Azure.Messaging.WebPubSub.13.5.0.json @@ -1,10 +1,10 @@ { "package": { "name": "Aspire.Azure.Messaging.WebPubSub", - "version": "13.4.6", + "version": "13.5.0", "targetFramework": "net10.0", "sourceRepository": "https://github.com/microsoft/aspire", - "sourceCommit": "87fe259e4fc244c599019a7b1304c85a1488f248" + "sourceCommit": "e076d8e427cb3afb528dbd605acd74c3aea69f94" }, "types": [ { diff --git a/src/frontend/src/data/pkgs/Aspire.Azure.Npgsql.13.4.6.json b/src/frontend/src/data/pkgs/Aspire.Azure.Npgsql.13.5.0.json similarity index 99% rename from src/frontend/src/data/pkgs/Aspire.Azure.Npgsql.13.4.6.json rename to src/frontend/src/data/pkgs/Aspire.Azure.Npgsql.13.5.0.json index e18fa08be..00177aa5c 100644 --- a/src/frontend/src/data/pkgs/Aspire.Azure.Npgsql.13.4.6.json +++ b/src/frontend/src/data/pkgs/Aspire.Azure.Npgsql.13.5.0.json @@ -1,10 +1,10 @@ { "package": { "name": "Aspire.Azure.Npgsql", - "version": "13.4.6", + "version": "13.5.0", "targetFramework": "net10.0", "sourceRepository": "https://github.com/microsoft/aspire", - "sourceCommit": "87fe259e4fc244c599019a7b1304c85a1488f248" + "sourceCommit": "e076d8e427cb3afb528dbd605acd74c3aea69f94" }, "types": [ { diff --git a/src/frontend/src/data/pkgs/Aspire.Azure.Npgsql.EntityFrameworkCore.PostgreSQL.13.4.6.json b/src/frontend/src/data/pkgs/Aspire.Azure.Npgsql.EntityFrameworkCore.PostgreSQL.13.5.0.json similarity index 99% rename from src/frontend/src/data/pkgs/Aspire.Azure.Npgsql.EntityFrameworkCore.PostgreSQL.13.4.6.json rename to src/frontend/src/data/pkgs/Aspire.Azure.Npgsql.EntityFrameworkCore.PostgreSQL.13.5.0.json index c89b25f5b..af4b73c0d 100644 --- a/src/frontend/src/data/pkgs/Aspire.Azure.Npgsql.EntityFrameworkCore.PostgreSQL.13.4.6.json +++ b/src/frontend/src/data/pkgs/Aspire.Azure.Npgsql.EntityFrameworkCore.PostgreSQL.13.5.0.json @@ -1,10 +1,10 @@ { "package": { "name": "Aspire.Azure.Npgsql.EntityFrameworkCore.PostgreSQL", - "version": "13.4.6", + "version": "13.5.0", "targetFramework": "net10.0", "sourceRepository": "https://github.com/microsoft/aspire", - "sourceCommit": "87fe259e4fc244c599019a7b1304c85a1488f248" + "sourceCommit": "e076d8e427cb3afb528dbd605acd74c3aea69f94" }, "types": [ { diff --git a/src/frontend/src/data/pkgs/Aspire.Azure.Search.Documents.13.4.6.json b/src/frontend/src/data/pkgs/Aspire.Azure.Search.Documents.13.5.0.json similarity index 99% rename from src/frontend/src/data/pkgs/Aspire.Azure.Search.Documents.13.4.6.json rename to src/frontend/src/data/pkgs/Aspire.Azure.Search.Documents.13.5.0.json index 1d1f0f3d7..50c903f2a 100644 --- a/src/frontend/src/data/pkgs/Aspire.Azure.Search.Documents.13.4.6.json +++ b/src/frontend/src/data/pkgs/Aspire.Azure.Search.Documents.13.5.0.json @@ -1,10 +1,10 @@ { "package": { "name": "Aspire.Azure.Search.Documents", - "version": "13.4.6", + "version": "13.5.0", "targetFramework": "net10.0", "sourceRepository": "https://github.com/microsoft/aspire", - "sourceCommit": "87fe259e4fc244c599019a7b1304c85a1488f248" + "sourceCommit": "e076d8e427cb3afb528dbd605acd74c3aea69f94" }, "types": [ { diff --git a/src/frontend/src/data/pkgs/Aspire.Azure.Security.KeyVault.13.4.6.json b/src/frontend/src/data/pkgs/Aspire.Azure.Security.KeyVault.13.5.0.json similarity index 99% rename from src/frontend/src/data/pkgs/Aspire.Azure.Security.KeyVault.13.4.6.json rename to src/frontend/src/data/pkgs/Aspire.Azure.Security.KeyVault.13.5.0.json index bd3b4b15b..1a4cff273 100644 --- a/src/frontend/src/data/pkgs/Aspire.Azure.Security.KeyVault.13.4.6.json +++ b/src/frontend/src/data/pkgs/Aspire.Azure.Security.KeyVault.13.5.0.json @@ -1,10 +1,10 @@ { "package": { "name": "Aspire.Azure.Security.KeyVault", - "version": "13.4.6", + "version": "13.5.0", "targetFramework": "net10.0", "sourceRepository": "https://github.com/microsoft/aspire", - "sourceCommit": "87fe259e4fc244c599019a7b1304c85a1488f248" + "sourceCommit": "e076d8e427cb3afb528dbd605acd74c3aea69f94" }, "types": [ { diff --git a/src/frontend/src/data/pkgs/Aspire.Azure.Storage.Blobs.13.4.6.json b/src/frontend/src/data/pkgs/Aspire.Azure.Storage.Blobs.13.5.0.json similarity index 99% rename from src/frontend/src/data/pkgs/Aspire.Azure.Storage.Blobs.13.4.6.json rename to src/frontend/src/data/pkgs/Aspire.Azure.Storage.Blobs.13.5.0.json index 26166e8a7..9f89ca731 100644 --- a/src/frontend/src/data/pkgs/Aspire.Azure.Storage.Blobs.13.4.6.json +++ b/src/frontend/src/data/pkgs/Aspire.Azure.Storage.Blobs.13.5.0.json @@ -1,10 +1,10 @@ { "package": { "name": "Aspire.Azure.Storage.Blobs", - "version": "13.4.6", + "version": "13.5.0", "targetFramework": "net10.0", "sourceRepository": "https://github.com/microsoft/aspire", - "sourceCommit": "87fe259e4fc244c599019a7b1304c85a1488f248" + "sourceCommit": "e076d8e427cb3afb528dbd605acd74c3aea69f94" }, "types": [ { diff --git a/src/frontend/src/data/pkgs/Aspire.Azure.Storage.Files.DataLake.13.4.6-preview.1.26319.6.json b/src/frontend/src/data/pkgs/Aspire.Azure.Storage.Files.DataLake.13.5.0-preview.1.26417.7.json similarity index 99% rename from src/frontend/src/data/pkgs/Aspire.Azure.Storage.Files.DataLake.13.4.6-preview.1.26319.6.json rename to src/frontend/src/data/pkgs/Aspire.Azure.Storage.Files.DataLake.13.5.0-preview.1.26417.7.json index 4d7dcc0df..6410e26ad 100644 --- a/src/frontend/src/data/pkgs/Aspire.Azure.Storage.Files.DataLake.13.4.6-preview.1.26319.6.json +++ b/src/frontend/src/data/pkgs/Aspire.Azure.Storage.Files.DataLake.13.5.0-preview.1.26417.7.json @@ -1,10 +1,10 @@ { "package": { "name": "Aspire.Azure.Storage.Files.DataLake", - "version": "13.4.6-preview.1.26319.6", + "version": "13.5.0-preview.1.26417.7", "targetFramework": "net10.0", "sourceRepository": "https://github.com/microsoft/aspire", - "sourceCommit": "87fe259e4fc244c599019a7b1304c85a1488f248" + "sourceCommit": "e076d8e427cb3afb528dbd605acd74c3aea69f94" }, "types": [ { diff --git a/src/frontend/src/data/pkgs/Aspire.Azure.Storage.Queues.13.4.6.json b/src/frontend/src/data/pkgs/Aspire.Azure.Storage.Queues.13.5.0.json similarity index 99% rename from src/frontend/src/data/pkgs/Aspire.Azure.Storage.Queues.13.4.6.json rename to src/frontend/src/data/pkgs/Aspire.Azure.Storage.Queues.13.5.0.json index 214868cce..ae3f9efb5 100644 --- a/src/frontend/src/data/pkgs/Aspire.Azure.Storage.Queues.13.4.6.json +++ b/src/frontend/src/data/pkgs/Aspire.Azure.Storage.Queues.13.5.0.json @@ -1,10 +1,10 @@ { "package": { "name": "Aspire.Azure.Storage.Queues", - "version": "13.4.6", + "version": "13.5.0", "targetFramework": "net10.0", "sourceRepository": "https://github.com/microsoft/aspire", - "sourceCommit": "87fe259e4fc244c599019a7b1304c85a1488f248" + "sourceCommit": "e076d8e427cb3afb528dbd605acd74c3aea69f94" }, "types": [ { diff --git a/src/frontend/src/data/pkgs/Aspire.Confluent.Kafka.13.4.6.json b/src/frontend/src/data/pkgs/Aspire.Confluent.Kafka.13.5.0.json similarity index 99% rename from src/frontend/src/data/pkgs/Aspire.Confluent.Kafka.13.4.6.json rename to src/frontend/src/data/pkgs/Aspire.Confluent.Kafka.13.5.0.json index 0f38a5364..7a8917254 100644 --- a/src/frontend/src/data/pkgs/Aspire.Confluent.Kafka.13.4.6.json +++ b/src/frontend/src/data/pkgs/Aspire.Confluent.Kafka.13.5.0.json @@ -1,10 +1,10 @@ { "package": { "name": "Aspire.Confluent.Kafka", - "version": "13.4.6", + "version": "13.5.0", "targetFramework": "net10.0", "sourceRepository": "https://github.com/microsoft/aspire", - "sourceCommit": "87fe259e4fc244c599019a7b1304c85a1488f248" + "sourceCommit": "e076d8e427cb3afb528dbd605acd74c3aea69f94" }, "types": [ { diff --git a/src/frontend/src/data/pkgs/Aspire.Hosting.13.4.6.json b/src/frontend/src/data/pkgs/Aspire.Hosting.13.5.0.json similarity index 94% rename from src/frontend/src/data/pkgs/Aspire.Hosting.13.4.6.json rename to src/frontend/src/data/pkgs/Aspire.Hosting.13.5.0.json index 3dc625770..6025e2191 100644 --- a/src/frontend/src/data/pkgs/Aspire.Hosting.13.4.6.json +++ b/src/frontend/src/data/pkgs/Aspire.Hosting.13.5.0.json @@ -1,10 +1,10 @@ { "package": { "name": "Aspire.Hosting", - "version": "13.4.6", + "version": "13.5.0", "targetFramework": "net10.0", "sourceRepository": "https://github.com/microsoft/aspire", - "sourceCommit": "87fe259e4fc244c599019a7b1304c85a1488f248" + "sourceCommit": "8ab6999850d96e0023670799edbd4bdc245ad63c" }, "types": [ { @@ -4193,7 +4193,7 @@ { "name": "Aspire.Hosting.AspireExportIgnoreAttribute", "arguments": { - "Reason": "ContainerFileSystemCallbackContext exposes IServiceProvider and IResource — .NET runtime types not usable from polyglot hosts." + "Reason": "Exposed to ATS via the WithContainerFilesCallbackExport shim, which accepts integer file-mode options and lets polyglot callbacks build the IEnumerable result through ContainerFileSystemCallbackContext factory methods (createFile/createDirectory/createCertificateFile)." } } ], @@ -4228,7 +4228,7 @@ }, { "kind": "codeblock", - "text": "\n var builder = DistributedApplication.CreateBuilder(args);\n \n builder.AddContainer(\"mycontainer\", \"myimage\")\n .WithContainerFiles(\"/\", (context, cancellationToken) =>\n {\n var appModel = context.ServiceProvider.GetRequiredService();\n var postgresInstances = appModel.Resources.OfType();\n \n return [\n new ContainerDirectory\n {\n Name = \".pgweb\",\n Entries = [\n new ContainerDirectory\n {\n Name = \"bookmarks\",\n Entries = postgresInstances.Select(instance =>\n new ContainerFile\n {\n Name = $\"{instance.Name}.toml\",\n Contents = instance.ToPgWebBookmark(),\n Owner = defaultOwner,\n Group = defaultGroup,\n }),\n },\n ],\n },\n ];\n });\n ", + "text": "\n var builder = DistributedApplication.CreateBuilder(args);\n \n builder.AddContainer(\"mycontainer\", \"myimage\")\n .WithContainerFiles(\"/\", (context, cancellationToken) =>\n {\n var appModel = context.Services.GetRequiredService();\n var postgresInstances = appModel.Resources.OfType();\n \n return [\n new ContainerDirectory\n {\n Name = \".pgweb\",\n Entries = [\n new ContainerDirectory\n {\n Name = \"bookmarks\",\n Entries = postgresInstances.Select(instance =>\n new ContainerFile\n {\n Name = $\"{instance.Name}.toml\",\n Contents = instance.ToPgWebBookmark(),\n Owner = defaultOwner,\n Group = defaultGroup,\n }),\n },\n ],\n },\n ];\n });\n ", "language": "csharp" } ], @@ -4302,7 +4302,7 @@ } }, "sourceFile": "src/Aspire.Hosting/ContainerResourceBuilderExtensions.cs", - "sourceLines": "1464-1477" + "sourceLines": "1463-1476" }, { "name": "WithContainerFiles", @@ -4357,7 +4357,7 @@ { "name": "Aspire.Hosting.AspireExportIgnoreAttribute", "arguments": { - "Reason": "Uses UnixFileMode parameter which is not ATS-compatible." + "Reason": "Exposed to ATS via the WithContainerFilesExport shim overload, which accepts integer file-mode options (ContainerFilesOptions) in place of the UnixFileMode parameter." } } ], @@ -4368,12 +4368,6 @@ "text": " Creates or updates files and/or folders at the destination path in the container by copying them from a source path on the host. In run mode, this will copy the files from the host to the container at runtime, allowing for overriding ownership and permissions in the container. In publish mode, this will create a bind mount to the source path on the host. " } ], - "remarks": [ - { - "kind": "text", - "text": "This method is not available in polyglot AppHosts." - } - ], "returns": [ { "kind": "text", @@ -4444,7 +4438,7 @@ } }, "sourceFile": "src/Aspire.Hosting/ContainerResourceBuilderExtensions.cs", - "sourceLines": "1497-1526" + "sourceLines": "1495-1524" }, { "name": "WithContainerName", @@ -4636,7 +4630,7 @@ } }, "sourceFile": "src/Aspire.Hosting/ContainerResourceBuilderExtensions.cs", - "sourceLines": "1755-1755" + "sourceLines": "1881-1881" }, { "name": "WithContainerRuntimeArgs", @@ -5279,7 +5273,7 @@ } }, "sourceFile": "src/Aspire.Hosting/ContainerResourceBuilderExtensions.cs", - "sourceLines": "1720-1731" + "sourceLines": "1846-1857" }, { "name": "WithDockerfileBuilder", @@ -8890,7 +8884,7 @@ ] }, "sourceFile": "src/Aspire.Hosting/DistributedApplicationBuilder.cs", - "sourceLines": "66-66", + "sourceLines": "67-67", "members": [ { "name": ".ctor", @@ -8956,7 +8950,7 @@ } }, "sourceFile": "src/Aspire.Hosting/DistributedApplicationBuilder.cs", - "sourceLines": "126-129" + "sourceLines": "127-130" }, { "name": ".ctor", @@ -9063,7 +9057,7 @@ } }, "sourceFile": "src/Aspire.Hosting/DistributedApplicationBuilder.cs", - "sourceLines": "101-591" + "sourceLines": "102-619" }, { "name": "AddResource", @@ -9211,7 +9205,7 @@ ] }, "sourceFile": "src/Aspire.Hosting/DistributedApplicationBuilder.cs", - "sourceLines": "815-820" + "sourceLines": "843-848" }, { "name": "Build", @@ -9293,7 +9287,7 @@ ] }, "sourceFile": "src/Aspire.Hosting/DistributedApplicationBuilder.cs", - "sourceLines": "785-809" + "sourceLines": "813-837" }, { "name": "CreateResourceBuilder", @@ -9551,7 +9545,7 @@ } }, "sourceFile": "src/Aspire.Hosting/DistributedApplicationBuilder.cs", - "sourceLines": "826-829" + "sourceLines": "854-857" }, { "name": "AppHostAssembly", @@ -9570,7 +9564,7 @@ ] }, "sourceFile": "src/Aspire.Hosting/DistributedApplicationBuilder.cs", - "sourceLines": "95-95" + "sourceLines": "96-96" }, { "name": "AppHostDirectory", @@ -9588,7 +9582,7 @@ ] }, "sourceFile": "src/Aspire.Hosting/DistributedApplicationBuilder.cs", - "sourceLines": "89-89" + "sourceLines": "90-90" }, { "name": "AppHostPath", @@ -9599,7 +9593,7 @@ "hasGet": true, "docs": {}, "sourceFile": "src/Aspire.Hosting/DistributedApplicationBuilder.cs", - "sourceLines": "92-92" + "sourceLines": "93-93" }, { "name": "Configuration", @@ -9623,7 +9617,7 @@ ] }, "sourceFile": "src/Aspire.Hosting/DistributedApplicationBuilder.cs", - "sourceLines": "83-83" + "sourceLines": "84-84" }, { "name": "Environment", @@ -9641,7 +9635,7 @@ ] }, "sourceFile": "src/Aspire.Hosting/DistributedApplicationBuilder.cs", - "sourceLines": "80-80" + "sourceLines": "81-81" }, { "name": "Eventing", @@ -9659,7 +9653,7 @@ ] }, "sourceFile": "src/Aspire.Hosting/DistributedApplicationBuilder.cs", - "sourceLines": "104-104" + "sourceLines": "105-105" }, { "name": "ExecutionContext", @@ -9758,7 +9752,7 @@ ] }, "sourceFile": "src/Aspire.Hosting/DistributedApplicationBuilder.cs", - "sourceLines": "98-98" + "sourceLines": "99-99" }, { "name": "FileSystemService", @@ -9820,7 +9814,7 @@ ] }, "sourceFile": "src/Aspire.Hosting/DistributedApplicationBuilder.cs", - "sourceLines": "110-110" + "sourceLines": "111-111" }, { "name": "Pipeline", @@ -9844,7 +9838,7 @@ ] }, "sourceFile": "src/Aspire.Hosting/DistributedApplicationBuilder.cs", - "sourceLines": "107-107" + "sourceLines": "108-108" }, { "name": "Resources", @@ -9868,7 +9862,7 @@ ] }, "sourceFile": "src/Aspire.Hosting/DistributedApplicationBuilder.cs", - "sourceLines": "101-101" + "sourceLines": "102-102" }, { "name": "Services", @@ -9886,7 +9880,7 @@ ] }, "sourceFile": "src/Aspire.Hosting/DistributedApplicationBuilder.cs", - "sourceLines": "86-86" + "sourceLines": "87-87" }, { "name": "UserSecretsManager", @@ -9923,7 +9917,7 @@ ] }, "sourceFile": "src/Aspire.Hosting/DistributedApplicationBuilder.cs", - "sourceLines": "113-113" + "sourceLines": "114-114" } ] }, @@ -11348,7 +11342,7 @@ } ], "sourceFile": "src/Aspire.Hosting/DistributedApplicationExecutionContext.cs", - "sourceLines": "10-10", + "sourceLines": "12-12", "members": [ { "name": ".ctor", @@ -11401,7 +11395,7 @@ } }, "sourceFile": "src/Aspire.Hosting/DistributedApplicationExecutionContext.cs", - "sourceLines": "19-21" + "sourceLines": "21-23" }, { "name": ".ctor", @@ -11472,7 +11466,7 @@ } }, "sourceFile": "src/Aspire.Hosting/DistributedApplicationExecutionContext.cs", - "sourceLines": "31-35" + "sourceLines": "33-70" }, { "name": ".ctor", @@ -11527,7 +11521,7 @@ } }, "sourceFile": "src/Aspire.Hosting/DistributedApplicationExecutionContext.cs", - "sourceLines": "48-51" + "sourceLines": "50-58" }, { "name": "IsPublishMode", @@ -11545,7 +11539,7 @@ ] }, "sourceFile": "src/Aspire.Hosting/DistributedApplicationExecutionContext.cs", - "sourceLines": "83-83" + "sourceLines": "104-104" }, { "name": "IsRunMode", @@ -11563,7 +11557,7 @@ ] }, "sourceFile": "src/Aspire.Hosting/DistributedApplicationExecutionContext.cs", - "sourceLines": "88-88" + "sourceLines": "109-109" }, { "name": "Operation", @@ -11581,7 +11575,7 @@ ] }, "sourceFile": "src/Aspire.Hosting/DistributedApplicationExecutionContext.cs", - "sourceLines": "56-56" + "sourceLines": "63-63" }, { "name": "PublisherName", @@ -11617,6 +11611,51 @@ }, "sourceFile": "src/Aspire.Hosting/DistributedApplicationExecutionContext.cs" }, + { + "name": "RunConfiguration", + "kind": "property", + "accessibility": "public", + "signature": "public RunConfiguration DistributedApplicationExecutionContext.RunConfiguration", + "returnType": "Aspire.Hosting.RunConfiguration", + "hasGet": true, + "attributes": [ + { + "name": "System.Diagnostics.CodeAnalysis.ExperimentalAttribute", + "constructorArguments": [ + "ASPIREWATCH001" + ], + "arguments": { + "UrlFormat": "https://aka.ms/aspire/diagnostics/{0}" + } + } + ], + "docs": { + "summary": [ + { + "kind": "text", + "text": " Describes how the AppHost is being run. Only meaningful when " + }, + { + "kind": "cref", + "value": "P:Aspire.Hosting.DistributedApplicationExecutionContext.Operation" + }, + { + "kind": "text", + "text": " is " + }, + { + "kind": "cref", + "value": "F:Aspire.Hosting.DistributedApplicationOperation.Run" + }, + { + "kind": "text", + "text": "; otherwise every aspect holds its default value. " + } + ] + }, + "sourceFile": "src/Aspire.Hosting/DistributedApplicationExecutionContext.cs", + "sourceLines": "70-70" + }, { "name": "ServiceProvider", "kind": "property", @@ -11624,6 +11663,14 @@ "signature": "public IServiceProvider DistributedApplicationExecutionContext.ServiceProvider", "returnType": "System.IServiceProvider", "hasGet": true, + "attributes": [ + { + "name": "System.ObsoleteAttribute", + "constructorArguments": [ + "Use Services instead." + ] + } + ], "docs": { "summary": [ { @@ -11660,7 +11707,52 @@ ] }, "sourceFile": "src/Aspire.Hosting/DistributedApplicationExecutionContext.cs", - "sourceLines": "66-76" + "sourceLines": "77-77" + }, + { + "name": "Services", + "kind": "property", + "accessibility": "public", + "signature": "public IServiceProvider DistributedApplicationExecutionContext.Services", + "returnType": "System.IServiceProvider", + "hasGet": true, + "docs": { + "summary": [ + { + "kind": "text", + "text": " The " + }, + { + "kind": "cref", + "value": "T:System.IServiceProvider" + }, + { + "kind": "text", + "text": " for the AppHost. " + } + ], + "exceptions": [ + { + "type": "T:System.InvalidOperationException", + "description": [ + { + "kind": "text", + "text": "Thrown when the " + }, + { + "kind": "cref", + "value": "T:System.IServiceProvider" + }, + { + "kind": "text", + "text": " is not available." + } + ] + } + ] + }, + "sourceFile": "src/Aspire.Hosting/DistributedApplicationExecutionContext.cs", + "sourceLines": "87-97" } ] }, @@ -11692,7 +11784,7 @@ } ], "sourceFile": "src/Aspire.Hosting/DistributedApplicationExecutionContextOptions.cs", - "sourceLines": "11-11", + "sourceLines": "13-13", "members": [ { "name": ".ctor", @@ -11731,7 +11823,7 @@ } }, "sourceFile": "src/Aspire.Hosting/DistributedApplicationExecutionContextOptions.cs", - "sourceLines": "17-20" + "sourceLines": "19-66" }, { "name": ".ctor", @@ -11780,7 +11872,7 @@ } }, "sourceFile": "src/Aspire.Hosting/DistributedApplicationExecutionContextOptions.cs", - "sourceLines": "27-31" + "sourceLines": "29-66" }, { "name": "Operation", @@ -11798,7 +11890,7 @@ ] }, "sourceFile": "src/Aspire.Hosting/DistributedApplicationExecutionContextOptions.cs", - "sourceLines": "41-41" + "sourceLines": "53-53" }, { "name": "PublisherName", @@ -11817,7 +11909,53 @@ ] }, "sourceFile": "src/Aspire.Hosting/DistributedApplicationExecutionContextOptions.cs", - "sourceLines": "46-46" + "sourceLines": "58-58" + }, + { + "name": "RunConfiguration", + "kind": "property", + "accessibility": "public", + "signature": "public RunConfiguration DistributedApplicationExecutionContextOptions.RunConfiguration", + "returnType": "Aspire.Hosting.RunConfiguration", + "hasGet": true, + "hasSet": true, + "isInitOnly": true, + "attributes": [ + { + "name": "System.Diagnostics.CodeAnalysis.ExperimentalAttribute", + "constructorArguments": [ + "ASPIREWATCH001" + ], + "arguments": { + "UrlFormat": "https://aka.ms/aspire/diagnostics/{0}" + } + } + ], + "docs": { + "summary": [ + { + "kind": "text", + "text": " Describes how the AppHost is being run. Only meaningful when " + }, + { + "kind": "cref", + "value": "P:Aspire.Hosting.DistributedApplicationExecutionContextOptions.Operation" + }, + { + "kind": "text", + "text": " is " + }, + { + "kind": "cref", + "value": "F:Aspire.Hosting.DistributedApplicationOperation.Run" + }, + { + "kind": "text", + "text": "; for any other operation the execution context reports defaults regardless of what is set here. " + } + ] + }, + "sourceFile": "src/Aspire.Hosting/DistributedApplicationExecutionContextOptions.cs" }, { "name": "ServiceProvider", @@ -11828,6 +11966,41 @@ "isReturnNullable": true, "hasGet": true, "hasSet": true, + "attributes": [ + { + "name": "System.ObsoleteAttribute", + "constructorArguments": [ + "Use Services instead." + ] + } + ], + "docs": { + "summary": [ + { + "kind": "text", + "text": " The " + }, + { + "kind": "cref", + "value": "T:System.IServiceProvider" + }, + { + "kind": "text", + "text": " for the AppHost. " + } + ] + }, + "sourceFile": "src/Aspire.Hosting/DistributedApplicationExecutionContextOptions.cs" + }, + { + "name": "Services", + "kind": "property", + "accessibility": "public", + "signature": "public IServiceProvider? DistributedApplicationExecutionContextOptions.Services", + "returnType": "System.IServiceProvider?", + "isReturnNullable": true, + "hasGet": true, + "hasSet": true, "docs": { "summary": [ { @@ -12016,7 +12189,7 @@ "summary": [ { "kind": "text", - "text": " The application name to display in the dashboard. For source-file AppHosts, this defaults to the AppHost directory name. For other apps, it falls back to the environment's application name. " + "text": " The application name to display in the dashboard. For source-file app hosts, this defaults to the AppHost directory name. For other apps, it falls back to the environment's application name. " } ] }, @@ -12329,7 +12502,7 @@ } }, "sourceFile": "src/Aspire.Hosting/DotnetToolResourceExtensions.cs", - "sourceLines": "45-55" + "sourceLines": "46-56" }, { "name": "WithToolIgnoreExistingFeeds", @@ -12406,7 +12579,7 @@ } }, "sourceFile": "src/Aspire.Hosting/DotnetToolResourceExtensions.cs", - "sourceLines": "193-194" + "sourceLines": "191-192" }, { "name": "WithToolIgnoreFailedSources", @@ -12483,7 +12656,7 @@ } }, "sourceFile": "src/Aspire.Hosting/DotnetToolResourceExtensions.cs", - "sourceLines": "208-209" + "sourceLines": "206-207" }, { "name": "WithToolPackage", @@ -12570,7 +12743,7 @@ } }, "sourceFile": "src/Aspire.Hosting/DotnetToolResourceExtensions.cs", - "sourceLines": "131-132" + "sourceLines": "129-130" }, { "name": "WithToolPrerelease", @@ -12647,7 +12820,7 @@ } }, "sourceFile": "src/Aspire.Hosting/DotnetToolResourceExtensions.cs", - "sourceLines": "162-163" + "sourceLines": "160-161" }, { "name": "WithToolSource", @@ -12734,7 +12907,7 @@ } }, "sourceFile": "src/Aspire.Hosting/DotnetToolResourceExtensions.cs", - "sourceLines": "178-179" + "sourceLines": "176-177" }, { "name": "WithToolVersion", @@ -12821,7 +12994,7 @@ } }, "sourceFile": "src/Aspire.Hosting/DotnetToolResourceExtensions.cs", - "sourceLines": "147-148" + "sourceLines": "145-146" } ] }, @@ -13713,7 +13886,7 @@ ] }, "sourceFile": "src/Aspire.Hosting/ExternalServiceBuilderExtensions.cs", - "sourceLines": "18-18", + "sourceLines": "17-17", "members": [ { "name": "AddExternalService", @@ -13789,7 +13962,7 @@ } }, "sourceFile": "src/Aspire.Hosting/ExternalServiceBuilderExtensions.cs", - "sourceLines": "30-39" + "sourceLines": "29-38" }, { "name": "AddExternalService", @@ -13865,7 +14038,7 @@ } }, "sourceFile": "src/Aspire.Hosting/ExternalServiceBuilderExtensions.cs", - "sourceLines": "74-78" + "sourceLines": "73-77" }, { "name": "AddExternalService", @@ -13941,7 +14114,7 @@ } }, "sourceFile": "src/Aspire.Hosting/ExternalServiceBuilderExtensions.cs", - "sourceLines": "91-95" + "sourceLines": "90-94" }, { "name": "WithHttpHealthCheck", @@ -14016,15 +14189,7 @@ }, { "kind": "text", - "text": ", the health check is registered with " - }, - { - "kind": "code", - "text": "AddUrlGroup" - }, - { - "kind": "text", - "text": " at configuration time and the HTTP or HTTPS scheme is validated when this method is called. " + "text": ", the health check is registered at configuration time and the HTTP or HTTPS scheme is validated when this method is called. " } ] }, @@ -14106,7 +14271,7 @@ } }, "sourceFile": "src/Aspire.Hosting/ExternalServiceBuilderExtensions.cs", - "sourceLines": "223-284" + "sourceLines": "222-287" } ] }, @@ -14163,7 +14328,7 @@ "remarks": [ { "kind": "text", - "text": " The URI must be an absolute URI with the absolute path ending with '/'. The URI cannot contain a fragment or query string. " + "text": " The URI must be an absolute URI. The URI cannot contain a fragment or query string. " } ], "parameters": { @@ -15564,17 +15729,6 @@ } ] }, - "attributes": [ - { - "name": "System.Diagnostics.CodeAnalysis.ExperimentalAttribute", - "constructorArguments": [ - "ASPIREINTERACTION001" - ], - "arguments": { - "UrlFormat": "https://aka.ms/aspire/diagnostics/{0}" - } - } - ], "sourceFile": "src/Aspire.Hosting/Ats/IInteractionService.cs", "members": [ { @@ -16154,6 +16308,165 @@ } } }, + { + "name": "PromptProgressAsync", + "kind": "method", + "accessibility": "public", + "signature": "public abstract Task> IInteractionService.PromptProgressAsync(string message, string? title = null, ProgressInteractionOptions? options = null, CancellationToken cancellationToken = default(CancellationToken))", + "returnType": "System.Threading.Tasks.Task>", + "isAbstract": true, + "parameters": [ + { + "name": "message", + "type": "string" + }, + { + "name": "title", + "type": "string?", + "isNullable": true, + "isOptional": true + }, + { + "name": "options", + "type": "Aspire.Hosting.ProgressInteractionOptions?", + "isNullable": true, + "isOptional": true + }, + { + "name": "cancellationToken", + "type": "System.Threading.CancellationToken", + "isOptional": true + } + ], + "attributes": [ + { + "name": "System.Diagnostics.CodeAnalysis.ExperimentalAttribute", + "constructorArguments": [ + "ASPIREINTERACTION001" + ], + "arguments": { + "UrlFormat": "https://aka.ms/aspire/diagnostics/{0}" + } + } + ], + "docs": { + "summary": [ + { + "kind": "text", + "text": " Displays a progress dialog with an indeterminate progress indicator. " + } + ], + "remarks": [ + { + "kind": "para", + "children": [ + { + "kind": "text", + "text": " The dialog displays a spinning progress wheel and can optionally include a title, message, and a cancel button. " + } + ] + }, + { + "kind": "para", + "children": [ + { + "kind": "text", + "text": " If " + }, + { + "kind": "cref", + "value": "P:Aspire.Hosting.ProgressInteractionOptions.Work" + }, + { + "kind": "text", + "text": " is provided, the dialog remains open while the callback executes and closes automatically when it completes. If no callback is provided, the dialog remains open until " + }, + { + "kind": "paramref", + "value": "cancellationToken" + }, + { + "kind": "text", + "text": " is canceled. " + } + ] + }, + { + "kind": "para", + "children": [ + { + "kind": "text", + "text": " When a button is shown (via " + }, + { + "kind": "cref", + "value": "P:Aspire.Hosting.InteractionOptions.PrimaryButtonText" + }, + { + "kind": "text", + "text": "), clicking it signals cancellation through the " + }, + { + "kind": "cref", + "value": "P:Aspire.Hosting.ProgressContext.CancellationToken" + }, + { + "kind": "text", + "text": " provided to the work callback. " + } + ] + } + ], + "returns": [ + { + "kind": "text", + "text": " An " + }, + { + "kind": "cref", + "value": "T:Aspire.Hosting.InteractionResult`1" + }, + { + "kind": "text", + "text": " containing " + }, + { + "kind": "code", + "text": "true" + }, + { + "kind": "text", + "text": " if the operation completed successfully, or a canceled result if the user clicked the cancel button. " + } + ], + "parameters": { + "cancellationToken": [ + { + "kind": "text", + "text": "A token to cancel the operation and close the dialog." + } + ], + "message": [ + { + "kind": "text", + "text": "The message to display in the progress dialog." + } + ], + "options": [ + { + "kind": "text", + "text": "Optional configuration for the progress interaction." + } + ], + "title": [ + { + "kind": "text", + "text": "The optional title of the progress dialog." + } + ] + } + } + }, { "name": "IsAvailable", "kind": "property", @@ -16202,19 +16515,8 @@ } ] }, - "attributes": [ - { - "name": "System.Diagnostics.CodeAnalysis.ExperimentalAttribute", - "constructorArguments": [ - "ASPIREINTERACTION001" - ], - "arguments": { - "UrlFormat": "https://aka.ms/aspire/diagnostics/{0}" - } - } - ], "sourceFile": "src/Aspire.Hosting/IInteractionService.cs", - "sourceLines": "206-206", + "sourceLines": "230-230", "members": [ { "name": ".ctor", @@ -16340,19 +16642,8 @@ } ] }, - "attributes": [ - { - "name": "System.Diagnostics.CodeAnalysis.ExperimentalAttribute", - "constructorArguments": [ - "ASPIREINTERACTION001" - ], - "arguments": { - "UrlFormat": "https://aka.ms/aspire/diagnostics/{0}" - } - } - ], "sourceFile": "src/Aspire.Hosting/IInteractionService.cs", - "sourceLines": "584-584", + "sourceLines": "697-697", "members": [ { "name": ".ctor", @@ -16406,15 +16697,6 @@ ] }, "attributes": [ - { - "name": "System.Diagnostics.CodeAnalysis.ExperimentalAttribute", - "constructorArguments": [ - "ASPIREINTERACTION001" - ], - "arguments": { - "UrlFormat": "https://aka.ms/aspire/diagnostics/{0}" - } - }, { "name": "Aspire.Hosting.AspireExportAttribute", "arguments": { @@ -16423,7 +16705,7 @@ } ], "sourceFile": "src/Aspire.Hosting/IInteractionService.cs", - "sourceLines": "600-600", + "sourceLines": "712-712", "members": [ { "name": ".ctor", @@ -16471,7 +16753,7 @@ } }, "sourceFile": "src/Aspire.Hosting/IInteractionService.cs", - "sourceLines": "627-636" + "sourceLines": "738-747" }, { "name": "AddValidationError", @@ -16523,7 +16805,7 @@ } }, "sourceFile": "src/Aspire.Hosting/IInteractionService.cs", - "sourceLines": "646-647" + "sourceLines": "757-758" }, { "name": "CancellationToken", @@ -16572,14 +16854,6 @@ "hasGet": true, "hasSet": true, "isInitOnly": true, - "attributes": [ - { - "name": "Aspire.Hosting.AspireExportIgnoreAttribute", - "arguments": { - "Reason": "IServiceProvider is not part of the polyglot validation surface." - } - } - ], "docs": { "summary": [ { @@ -16639,22 +16913,167 @@ "name": "Number", "value": 4, "description": "A numeric input." - } - ], - "attributes": [ + }, { - "name": "System.Diagnostics.CodeAnalysis.ExperimentalAttribute", - "constructorArguments": [ - "ASPIREINTERACTION001" - ], - "arguments": { - "UrlFormat": "https://aka.ms/aspire/diagnostics/{0}" - } + "name": "File", + "value": 5, + "description": "A file input. Allows the user to select a file using the OS/browser file picker." } ], "sourceFile": "src/Aspire.Hosting/Ats/InputType.cs", "members": [] }, + { + "name": "InteractionFile", + "fullName": "Aspire.Hosting.InteractionFile", + "namespace": "Aspire.Hosting", + "kind": "class", + "accessibility": "public", + "isSealed": true, + "docs": { + "summary": [ + { + "kind": "text", + "text": " Represents a file selected by the user for an " + }, + { + "kind": "cref", + "value": "F:Aspire.Hosting.InputType.File" + }, + { + "kind": "text", + "text": " input. " + } + ] + }, + "sourceFile": "src/Aspire.Hosting/IInteractionService.cs", + "sourceLines": "448-448", + "members": [ + { + "name": "OpenRead", + "kind": "method", + "accessibility": "public", + "signature": "public Stream InteractionFile.OpenRead()", + "returnType": "System.IO.Stream", + "docs": { + "summary": [ + { + "kind": "text", + "text": " Opens a read-only stream for the file content. " + } + ], + "returns": [ + { + "kind": "text", + "text": "A " + }, + { + "kind": "cref", + "value": "T:System.IO.Stream" + }, + { + "kind": "text", + "text": " for reading the file." + } + ] + }, + "sourceFile": "src/Aspire.Hosting/IInteractionService.cs", + "sourceLines": "476-476" + }, + { + "name": "ReadAllBytesAsync", + "kind": "method", + "accessibility": "public", + "signature": "public Task InteractionFile.ReadAllBytesAsync(CancellationToken cancellationToken = default(CancellationToken))", + "returnType": "System.Threading.Tasks.Task", + "parameters": [ + { + "name": "cancellationToken", + "type": "System.Threading.CancellationToken", + "isOptional": true + } + ], + "docs": { + "summary": [ + { + "kind": "text", + "text": " Reads all bytes of the file asynchronously. " + } + ], + "returns": [ + { + "kind": "text", + "text": "A byte array containing the file content." + } + ], + "parameters": { + "cancellationToken": [ + { + "kind": "text", + "text": "A token to monitor for cancellation requests." + } + ] + } + }, + "sourceFile": "src/Aspire.Hosting/IInteractionService.cs", + "sourceLines": "483-483" + }, + { + "name": "FilePath", + "kind": "property", + "accessibility": "public", + "signature": "public string InteractionFile.FilePath", + "returnType": "string", + "hasGet": true, + "docs": { + "summary": [ + { + "kind": "text", + "text": " Gets the full path to the uploaded file on disk. " + } + ] + }, + "sourceFile": "src/Aspire.Hosting/IInteractionService.cs", + "sourceLines": "470-470" + }, + { + "name": "Id", + "kind": "property", + "accessibility": "public", + "signature": "public string InteractionFile.Id", + "returnType": "string", + "hasGet": true, + "docs": { + "summary": [ + { + "kind": "text", + "text": " Gets the unique identifier for the uploaded file. " + } + ] + }, + "sourceFile": "src/Aspire.Hosting/IInteractionService.cs", + "sourceLines": "460-460" + }, + { + "name": "Name", + "kind": "property", + "accessibility": "public", + "signature": "public string InteractionFile.Name", + "returnType": "string", + "hasGet": true, + "docs": { + "summary": [ + { + "kind": "text", + "text": " Gets the original file name as provided by the user (e.g. \"readme.txt\"). " + } + ] + }, + "sourceFile": "src/Aspire.Hosting/IInteractionService.cs", + "sourceLines": "465-465" + } + ] + }, { "name": "InteractionInput", "fullName": "Aspire.Hosting.InteractionInput", @@ -16671,21 +17090,12 @@ ] }, "attributes": [ - { - "name": "System.Diagnostics.CodeAnalysis.ExperimentalAttribute", - "constructorArguments": [ - "ASPIREINTERACTION001" - ], - "arguments": { - "UrlFormat": "https://aka.ms/aspire/diagnostics/{0}" - } - }, { "name": "Aspire.Hosting.AspireDtoAttribute" } ], "sourceFile": "src/Aspire.Hosting/IInteractionService.cs", - "sourceLines": "262-262", + "sourceLines": "284-284", "members": [ { "name": ".ctor", @@ -16694,7 +17104,7 @@ "signature": "public InteractionInput.InteractionInput()", "returnType": "void", "sourceFile": "src/Aspire.Hosting/IInteractionService.cs", - "sourceLines": "270-270" + "sourceLines": "292-292" }, { "name": "AllowCustomChoice", @@ -16723,6 +17133,33 @@ }, "sourceFile": "src/Aspire.Hosting/IInteractionService.cs" }, + { + "name": "AllowMultipleFiles", + "kind": "property", + "accessibility": "public", + "signature": "public bool InteractionInput.AllowMultipleFiles", + "returnType": "bool", + "hasGet": true, + "hasSet": true, + "isInitOnly": true, + "docs": { + "summary": [ + { + "kind": "text", + "text": " Gets or sets a value indicating whether multiple files can be selected. Only used by " + }, + { + "kind": "cref", + "value": "F:Aspire.Hosting.InputType.File" + }, + { + "kind": "text", + "text": " inputs. " + } + ] + }, + "sourceFile": "src/Aspire.Hosting/IInteractionService.cs" + }, { "name": "Description", "kind": "property", @@ -16755,15 +17192,7 @@ "summary": [ { "kind": "text", - "text": " Gets or sets a value indicating whether a custom choice is allowed. Only used by " - }, - { - "kind": "cref", - "value": "F:Aspire.Hosting.InputType.Choice" - }, - { - "kind": "text", - "text": " inputs. " + "text": " Gets or sets a value indicating whether the input is disabled. " } ] }, @@ -16779,6 +17208,14 @@ "hasGet": true, "hasSet": true, "isInitOnly": true, + "attributes": [ + { + "name": "Aspire.Hosting.AspireExportIgnoreAttribute", + "arguments": { + "Reason": "InputLoadOptions carries a non-serializable callback and is never populated on interaction results." + } + } + ], "docs": { "summary": [ { @@ -16824,6 +17261,100 @@ }, "sourceFile": "src/Aspire.Hosting/IInteractionService.cs" }, + { + "name": "FileFilter", + "kind": "property", + "accessibility": "public", + "signature": "public string? InteractionInput.FileFilter", + "returnType": "string?", + "isReturnNullable": true, + "hasGet": true, + "hasSet": true, + "isInitOnly": true, + "docs": { + "summary": [ + { + "kind": "text", + "text": " Gets or sets the file type filter for " + }, + { + "kind": "cref", + "value": "F:Aspire.Hosting.InputType.File" + }, + { + "kind": "text", + "text": " inputs. Uses the same format as the HTML " + }, + { + "kind": "code", + "text": "accept" + }, + { + "kind": "text", + "text": " attribute, e.g. " + }, + { + "kind": "code", + "text": "\".pem,.pfx,.crt\"" + }, + { + "kind": "text", + "text": " or " + }, + { + "kind": "code", + "text": "\"image/*\"" + }, + { + "kind": "text", + "text": ". When set, the file picker restricts selectable files. The CLI validates only dot-prefixed extension filters and does not validate MIME type patterns such as " + }, + { + "kind": "code", + "text": "\"image/*\"" + }, + { + "kind": "text", + "text": ". " + } + ] + }, + "sourceFile": "src/Aspire.Hosting/IInteractionService.cs" + }, + { + "name": "Files", + "kind": "property", + "accessibility": "public", + "signature": "public IReadOnlyList? InteractionInput.Files", + "returnType": "System.Collections.Generic.IReadOnlyList?", + "isReturnNullable": true, + "hasGet": true, + "attributes": [ + { + "name": "Aspire.Hosting.AspireExportIgnoreAttribute", + "arguments": { + "Reason": "InteractionFile contains non-serializable methods and server-local paths; polyglot callers use InteractionInputFile from base.mts." + } + } + ], + "docs": { + "summary": [ + { + "kind": "text", + "text": " Gets the files associated with this " + }, + { + "kind": "cref", + "value": "F:Aspire.Hosting.InputType.File" + }, + { + "kind": "text", + "text": " input. Populated after the user selects file(s) and the interaction completes. " + } + ] + }, + "sourceFile": "src/Aspire.Hosting/IInteractionService.cs" + }, { "name": "InputType", "kind": "property", @@ -16863,6 +17394,34 @@ }, "sourceFile": "src/Aspire.Hosting/IInteractionService.cs" }, + { + "name": "MaxFileSize", + "kind": "property", + "accessibility": "public", + "signature": "public long? InteractionInput.MaxFileSize", + "returnType": "long?", + "isReturnNullable": true, + "hasGet": true, + "hasSet": true, + "isInitOnly": true, + "docs": { + "summary": [ + { + "kind": "text", + "text": " Gets or sets the maximum file size in bytes for " + }, + { + "kind": "cref", + "value": "F:Aspire.Hosting.InputType.File" + }, + { + "kind": "text", + "text": " inputs. If not specified, the server applies the configured upload limit (default 100 MB). When specified, the value is capped at the server-side upload limit. " + } + ] + }, + "sourceFile": "src/Aspire.Hosting/IInteractionService.cs" + }, { "name": "MaxLength", "kind": "property", @@ -17011,21 +17570,12 @@ ] }, "attributes": [ - { - "name": "System.Diagnostics.CodeAnalysis.ExperimentalAttribute", - "constructorArguments": [ - "ASPIREINTERACTION001" - ], - "arguments": { - "UrlFormat": "https://aka.ms/aspire/diagnostics/{0}" - } - }, { "name": "Aspire.Hosting.AspireExportAttribute" } ], "sourceFile": "src/Aspire.Hosting/IInteractionService.cs", - "sourceLines": "380-380", + "sourceLines": "491-491", "members": [ { "name": ".ctor", @@ -17064,7 +17614,7 @@ } }, "sourceFile": "src/Aspire.Hosting/IInteractionService.cs", - "sourceLines": "389-406" + "sourceLines": "500-517" }, { "name": "this[]", @@ -17184,7 +17734,7 @@ } }, "sourceFile": "src/Aspire.Hosting/IInteractionService.cs", - "sourceLines": "456-456" + "sourceLines": "567-567" }, { "name": "GetBoolean", @@ -17265,7 +17815,7 @@ ] }, "sourceFile": "src/Aspire.Hosting/IInteractionService.cs", - "sourceLines": "478-478" + "sourceLines": "589-589" }, { "name": "GetDouble", @@ -17363,7 +17913,7 @@ ] }, "sourceFile": "src/Aspire.Hosting/IInteractionService.cs", - "sourceLines": "508-508" + "sourceLines": "619-619" }, { "name": "GetEnumerator", @@ -17386,7 +17936,7 @@ ] }, "sourceFile": "src/Aspire.Hosting/IInteractionService.cs", - "sourceLines": "530-530" + "sourceLines": "641-641" }, { "name": "GetInt32", @@ -17502,7 +18052,7 @@ ] }, "sourceFile": "src/Aspire.Hosting/IInteractionService.cs", - "sourceLines": "495-495" + "sourceLines": "606-606" }, { "name": "GetString", @@ -17548,7 +18098,7 @@ } }, "sourceFile": "src/Aspire.Hosting/IInteractionService.cs", - "sourceLines": "466-466" + "sourceLines": "577-577" }, { "name": "ToArray", @@ -17582,7 +18132,7 @@ ] }, "sourceFile": "src/Aspire.Hosting/IInteractionService.cs", - "sourceLines": "518-518" + "sourceLines": "629-629" }, { "name": "TryGetByName", @@ -17631,7 +18181,7 @@ } }, "sourceFile": "src/Aspire.Hosting/IInteractionService.cs", - "sourceLines": "446-446" + "sourceLines": "557-557" }, { "name": "Count", @@ -17649,7 +18199,7 @@ ] }, "sourceFile": "src/Aspire.Hosting/IInteractionService.cs", - "sourceLines": "436-436" + "sourceLines": "547-547" }, { "name": "Names", @@ -17667,7 +18217,7 @@ ] }, "sourceFile": "src/Aspire.Hosting/IInteractionService.cs", - "sourceLines": "524-524" + "sourceLines": "635-635" } ] }, @@ -17693,19 +18243,8 @@ } ] }, - "attributes": [ - { - "name": "System.Diagnostics.CodeAnalysis.ExperimentalAttribute", - "constructorArguments": [ - "ASPIREINTERACTION001" - ], - "arguments": { - "UrlFormat": "https://aka.ms/aspire/diagnostics/{0}" - } - } - ], "sourceFile": "src/Aspire.Hosting/IInteractionService.cs", - "sourceLines": "724-724", + "sourceLines": "865-865", "members": [ { "name": ".ctor", @@ -17843,7 +18382,7 @@ ] }, "sourceFile": "src/Aspire.Hosting/IInteractionService.cs", - "sourceLines": "758-758", + "sourceLines": "899-899", "members": [ { "name": "Cancel", @@ -17936,7 +18475,7 @@ } }, "sourceFile": "src/Aspire.Hosting/IInteractionService.cs", - "sourceLines": "783-783" + "sourceLines": "924-924" }, { "name": "Ok", @@ -18003,7 +18542,7 @@ } }, "sourceFile": "src/Aspire.Hosting/IInteractionService.cs", - "sourceLines": "768-768" + "sourceLines": "909-909" } ] }, @@ -18027,19 +18566,8 @@ } ] }, - "attributes": [ - { - "name": "System.Diagnostics.CodeAnalysis.ExperimentalAttribute", - "constructorArguments": [ - "ASPIREINTERACTION001" - ], - "arguments": { - "UrlFormat": "https://aka.ms/aspire/diagnostics/{0}" - } - } - ], "sourceFile": "src/Aspire.Hosting/IInteractionService.cs", - "sourceLines": "758-758", + "sourceLines": "899-899", "members": [ { "name": "Canceled", @@ -18094,7 +18622,7 @@ ] }, "sourceFile": "src/Aspire.Hosting/IProjectMetadata.cs", - "sourceLines": "13-13", + "sourceLines": "14-14", "members": [ { "name": "IsFileBasedApp", @@ -18113,7 +18641,7 @@ ] }, "sourceFile": "src/Aspire.Hosting/IProjectMetadata.cs", - "sourceLines": "36-36" + "sourceLines": "37-37" }, { "name": "LaunchSettings", @@ -18133,7 +18661,7 @@ ] }, "sourceFile": "src/Aspire.Hosting/IProjectMetadata.cs", - "sourceLines": "23-23" + "sourceLines": "24-24" }, { "name": "ProjectPath", @@ -18169,7 +18697,7 @@ ] }, "sourceFile": "src/Aspire.Hosting/IProjectMetadata.cs", - "sourceLines": "31-31" + "sourceLines": "32-32" } ] }, @@ -18987,19 +19515,8 @@ } ] }, - "attributes": [ - { - "name": "System.Diagnostics.CodeAnalysis.ExperimentalAttribute", - "constructorArguments": [ - "ASPIREINTERACTION001" - ], - "arguments": { - "UrlFormat": "https://aka.ms/aspire/diagnostics/{0}" - } - } - ], "sourceFile": "src/Aspire.Hosting/IInteractionService.cs", - "sourceLines": "233-233", + "sourceLines": "256-256", "members": [ { "name": ".ctor", @@ -19290,19 +19807,8 @@ } ] }, - "attributes": [ - { - "name": "System.Diagnostics.CodeAnalysis.ExperimentalAttribute", - "constructorArguments": [ - "ASPIREINTERACTION001" - ], - "arguments": { - "UrlFormat": "https://aka.ms/aspire/diagnostics/{0}" - } - } - ], "sourceFile": "src/Aspire.Hosting/IInteractionService.cs", - "sourceLines": "654-654", + "sourceLines": "764-764", "members": [ { "name": ".ctor", @@ -19378,17 +19884,6 @@ "description": "Requests confirmation from the user." } ], - "attributes": [ - { - "name": "System.Diagnostics.CodeAnalysis.ExperimentalAttribute", - "constructorArguments": [ - "ASPIREINTERACTION001" - ], - "arguments": { - "UrlFormat": "https://aka.ms/aspire/diagnostics/{0}" - } - } - ], "sourceFile": "src/Aspire.Hosting/Ats/MessageIntent.cs", "members": [] }, @@ -19551,19 +20046,8 @@ } ] }, - "attributes": [ - { - "name": "System.Diagnostics.CodeAnalysis.ExperimentalAttribute", - "constructorArguments": [ - "ASPIREINTERACTION001" - ], - "arguments": { - "UrlFormat": "https://aka.ms/aspire/diagnostics/{0}" - } - } - ], "sourceFile": "src/Aspire.Hosting/IInteractionService.cs", - "sourceLines": "668-668", + "sourceLines": "777-777", "members": [ { "name": ".ctor", @@ -20044,19 +20528,8 @@ } ] }, - "attributes": [ - { - "name": "System.Diagnostics.CodeAnalysis.ExperimentalAttribute", - "constructorArguments": [ - "ASPIREINTERACTION001" - ], - "arguments": { - "UrlFormat": "https://aka.ms/aspire/diagnostics/{0}" - } - } - ], "sourceFile": "src/Aspire.Hosting/Orchestrator/ParameterProcessor.cs", - "sourceLines": "21-21", + "sourceLines": "18-18", "members": [ { "name": ".ctor", @@ -20103,7 +20576,7 @@ ] }, "sourceFile": "src/Aspire.Hosting/Orchestrator/ParameterProcessor.cs", - "sourceLines": "21-35" + "sourceLines": "18-32" }, { "name": "DeleteParameterAsync", @@ -20151,7 +20624,7 @@ } }, "sourceFile": "src/Aspire.Hosting/Orchestrator/ParameterProcessor.cs", - "sourceLines": "371-402" + "sourceLines": "368-399" }, { "name": "InitializeParametersAsync", @@ -20306,7 +20779,7 @@ } }, "sourceFile": "src/Aspire.Hosting/Orchestrator/ParameterProcessor.cs", - "sourceLines": "326-361" + "sourceLines": "323-358" } ] }, @@ -20326,7 +20799,7 @@ ] }, "sourceFile": "src/Aspire.Hosting/ParameterResourceBuilderExtensions.cs", - "sourceLines": "18-18", + "sourceLines": "17-17", "members": [ { "name": "AddConnectionString", @@ -20405,7 +20878,7 @@ ] }, "sourceFile": "src/Aspire.Hosting/ParameterResourceBuilderExtensions.cs", - "sourceLines": "327-336" + "sourceLines": "324-333" }, { "name": "AddParameter", @@ -20480,7 +20953,7 @@ ] }, "sourceFile": "src/Aspire.Hosting/ParameterResourceBuilderExtensions.cs", - "sourceLines": "31-39" + "sourceLines": "30-38" }, { "name": "AddParameter", @@ -20578,7 +21051,7 @@ } }, "sourceFile": "src/Aspire.Hosting/ParameterResourceBuilderExtensions.cs", - "sourceLines": "78-82" + "sourceLines": "77-81" }, { "name": "AddParameter", @@ -20685,7 +21158,7 @@ } }, "sourceFile": "src/Aspire.Hosting/ParameterResourceBuilderExtensions.cs", - "sourceLines": "103-123" + "sourceLines": "102-122" }, { "name": "AddParameter", @@ -20811,7 +21284,7 @@ } }, "sourceFile": "src/Aspire.Hosting/ParameterResourceBuilderExtensions.cs", - "sourceLines": "169-183" + "sourceLines": "168-182" }, { "name": "AddParameterFromConfiguration", @@ -20888,7 +21361,7 @@ } }, "sourceFile": "src/Aspire.Hosting/ParameterResourceBuilderExtensions.cs", - "sourceLines": "137-148" + "sourceLines": "136-147" }, { "name": "ConfigureConnectionStringManifestPublisher", @@ -20928,7 +21401,7 @@ } }, "sourceFile": "src/Aspire.Hosting/ParameterResourceBuilderExtensions.cs", - "sourceLines": "383-390" + "sourceLines": "384-391" }, { "name": "CreateDefaultPasswordParameter", @@ -21162,7 +21635,7 @@ } }, "sourceFile": "src/Aspire.Hosting/ParameterResourceBuilderExtensions.cs", - "sourceLines": "415-431" + "sourceLines": "416-432" }, { "name": "CreateGeneratedParameter", @@ -21284,7 +21757,7 @@ } }, "sourceFile": "src/Aspire.Hosting/ParameterResourceBuilderExtensions.cs", - "sourceLines": "448-461" + "sourceLines": "449-462" }, { "name": "CreateParameter", @@ -21380,7 +21853,7 @@ } }, "sourceFile": "src/Aspire.Hosting/ParameterResourceBuilderExtensions.cs", - "sourceLines": "476-481" + "sourceLines": "477-482" }, { "name": "PublishAsConnectionString", @@ -21407,6 +21880,12 @@ } ], "attributes": [ + { + "name": "System.ObsoleteAttribute", + "constructorArguments": [ + "PublishAsConnectionString only works with the manifest publisher and is obsolete. Use AddConnectionString in publish-mode app model code instead." + ] + }, { "name": "Aspire.Hosting.AspireExportAttribute" } @@ -21418,6 +21897,12 @@ "text": " Changes the resource to be published as a connection string reference in the manifest. " } ], + "remarks": [ + { + "kind": "text", + "text": " This API only changes the manifest representation; it does not change the resource model used by other publishers. " + } + ], "returns": [ { "kind": "text", @@ -21450,7 +21935,7 @@ } }, "sourceFile": "src/Aspire.Hosting/ParameterResourceBuilderExtensions.cs", - "sourceLines": "371-374" + "sourceLines": "372-375" }, { "name": "WithCustomInput", @@ -21472,15 +21957,6 @@ } ], "attributes": [ - { - "name": "System.Diagnostics.CodeAnalysis.ExperimentalAttribute", - "constructorArguments": [ - "ASPIREINTERACTION001" - ], - "arguments": { - "UrlFormat": "https://aka.ms/aspire/diagnostics/{0}" - } - }, { "name": "Aspire.Hosting.AspireExportIgnoreAttribute", "arguments": { @@ -21537,7 +22013,7 @@ } }, "sourceFile": "src/Aspire.Hosting/ParameterResourceBuilderExtensions.cs", - "sourceLines": "246-251" + "sourceLines": "244-249" }, { "name": "WithDescription", @@ -21612,7 +22088,159 @@ } }, "sourceFile": "src/Aspire.Hosting/ParameterResourceBuilderExtensions.cs", - "sourceLines": "212-218" + "sourceLines": "211-217" + } + ] + }, + { + "name": "ProgressContext", + "fullName": "Aspire.Hosting.ProgressContext", + "namespace": "Aspire.Hosting", + "kind": "class", + "accessibility": "public", + "isSealed": true, + "docs": { + "summary": [ + { + "kind": "text", + "text": " Provides context to the work callback of a progress interaction. " + } + ] + }, + "attributes": [ + { + "name": "System.Diagnostics.CodeAnalysis.ExperimentalAttribute", + "constructorArguments": [ + "ASPIREINTERACTION001" + ], + "arguments": { + "UrlFormat": "https://aka.ms/aspire/diagnostics/{0}" + } + } + ], + "sourceFile": "src/Aspire.Hosting/IInteractionService.cs", + "sourceLines": "822-822", + "members": [ + { + "name": ".ctor", + "kind": "constructor", + "accessibility": "public", + "signature": "public ProgressContext.ProgressContext()", + "returnType": "void" + }, + { + "name": "CancellationToken", + "kind": "property", + "accessibility": "public", + "signature": "public CancellationToken ProgressContext.CancellationToken", + "returnType": "System.Threading.CancellationToken", + "hasGet": true, + "hasSet": true, + "isInitOnly": true, + "docs": { + "summary": [ + { + "kind": "text", + "text": " Gets the " + }, + { + "kind": "cref", + "value": "T:System.Threading.CancellationToken" + }, + { + "kind": "text", + "text": " that is triggered when the user clicks the cancel button or the operation is externally canceled. " + } + ] + }, + "sourceFile": "src/Aspire.Hosting/IInteractionService.cs" + } + ] + }, + { + "name": "ProgressInteractionOptions", + "fullName": "Aspire.Hosting.ProgressInteractionOptions", + "namespace": "Aspire.Hosting", + "kind": "class", + "accessibility": "public", + "baseType": "Aspire.Hosting.InteractionOptions", + "docs": { + "summary": [ + { + "kind": "text", + "text": " Options for configuring a progress interaction. " + } + ] + }, + "attributes": [ + { + "name": "System.Diagnostics.CodeAnalysis.ExperimentalAttribute", + "constructorArguments": [ + "ASPIREINTERACTION001" + ], + "arguments": { + "UrlFormat": "https://aka.ms/aspire/diagnostics/{0}" + } + } + ], + "sourceFile": "src/Aspire.Hosting/IInteractionService.cs", + "sourceLines": "801-801", + "members": [ + { + "name": ".ctor", + "kind": "constructor", + "accessibility": "public", + "signature": "public ProgressInteractionOptions.ProgressInteractionOptions()", + "returnType": "void" + }, + { + "name": "Work", + "kind": "property", + "accessibility": "public", + "signature": "public Func? ProgressInteractionOptions.Work", + "returnType": "System.Func?", + "isReturnNullable": true, + "hasGet": true, + "hasSet": true, + "docs": { + "summary": [ + { + "kind": "text", + "text": " Gets or sets an optional asynchronous work callback to execute while the progress dialog is displayed. " + } + ], + "remarks": [ + { + "kind": "text", + "text": " When provided, the progress dialog remains open while this callback executes and closes automatically when the callback completes. The " + }, + { + "kind": "cref", + "value": "P:Aspire.Hosting.ProgressContext.CancellationToken" + }, + { + "kind": "text", + "text": " passed to the callback is triggered when the user clicks the cancel button or the operation is externally canceled. When not provided, the dialog remains open until the " + }, + { + "kind": "cref", + "value": "T:System.Threading.CancellationToken" + }, + { + "kind": "text", + "text": " passed to " + }, + { + "kind": "cref", + "value": "M:Aspire.Hosting.IInteractionService.PromptProgressAsync(System.String,System.String,Aspire.Hosting.ProgressInteractionOptions,System.Threading.CancellationToken)" + }, + { + "kind": "text", + "text": " is canceled. " + } + ] + }, + "sourceFile": "src/Aspire.Hosting/IInteractionService.cs" } ] }, @@ -21640,7 +22268,7 @@ ] }, "sourceFile": "src/Aspire.Hosting/ProjectResourceBuilderExtensions.cs", - "sourceLines": "23-23", + "sourceLines": "24-24", "members": [ { "name": "AddCSharpApp", @@ -21761,7 +22389,7 @@ } }, "sourceFile": "src/Aspire.Hosting/ProjectResourceBuilderExtensions.cs", - "sourceLines": "356-360" + "sourceLines": "353-357" }, { "name": "AddCSharpApp", @@ -21892,7 +22520,7 @@ } }, "sourceFile": "src/Aspire.Hosting/ProjectResourceBuilderExtensions.cs", - "sourceLines": "408-453" + "sourceLines": "405-439" }, { "name": "AddProject", @@ -22106,7 +22734,7 @@ } }, "sourceFile": "src/Aspire.Hosting/ProjectResourceBuilderExtensions.cs", - "sourceLines": "70-73" + "sourceLines": "69-72" }, { "name": "AddProject", @@ -22218,7 +22846,7 @@ } }, "sourceFile": "src/Aspire.Hosting/ProjectResourceBuilderExtensions.cs", - "sourceLines": "104-108" + "sourceLines": "103-107" }, { "name": "AddProject", @@ -22434,7 +23062,7 @@ } }, "sourceFile": "src/Aspire.Hosting/ProjectResourceBuilderExtensions.cs", - "sourceLines": "176-183" + "sourceLines": "175-182" }, { "name": "AddProject", @@ -22565,7 +23193,7 @@ } }, "sourceFile": "src/Aspire.Hosting/ProjectResourceBuilderExtensions.cs", - "sourceLines": "215-223" + "sourceLines": "214-222" }, { "name": "AddProject", @@ -22772,7 +23400,7 @@ } }, "sourceFile": "src/Aspire.Hosting/ProjectResourceBuilderExtensions.cs", - "sourceLines": "266-279" + "sourceLines": "265-277" }, { "name": "AddProject", @@ -22894,7 +23522,7 @@ } }, "sourceFile": "src/Aspire.Hosting/ProjectResourceBuilderExtensions.cs", - "sourceLines": "310-325" + "sourceLines": "308-322" }, { "name": "DisableForwardedHeaders", @@ -22992,7 +23620,7 @@ } }, "sourceFile": "src/Aspire.Hosting/ProjectResourceBuilderExtensions.cs", - "sourceLines": "841-844" + "sourceLines": "923-926" }, { "name": "PublishAsDockerFile", @@ -23110,7 +23738,7 @@ } }, "sourceFile": "src/Aspire.Hosting/ProjectResourceBuilderExtensions.cs", - "sourceLines": "887-934" + "sourceLines": "969-1016" }, { "name": "WithEndpointsInEnvironment", @@ -23135,7 +23763,7 @@ { "name": "Aspire.Hosting.AspireExportIgnoreAttribute", "arguments": { - "Reason": "Uses Func which is not ATS-compatible." + "Reason": "Uses Func which is not ATS-compatible. The ATS-friendly implementation is in src/Aspire.Hosting/Ats/CoreExports.cs and accepts endpoint names instead of a predicate." } } ], @@ -23146,110 +23774,294 @@ "text": " Set a filter that determines if environment variables are injected for a given endpoint. By default, all endpoints are included (if this method is not called). " } ], + "returns": [ + { + "kind": "text", + "text": "A reference to the " + }, + { + "kind": "cref", + "value": "T:Aspire.Hosting.ApplicationModel.IResourceBuilder`1" + }, + { + "kind": "text", + "text": "." + } + ], + "parameters": { + "builder": [ + { + "kind": "text", + "text": "The project resource builder." + } + ], + "filter": [ + { + "kind": "text", + "text": "The filter callback that returns true if and only if the endpoint should be included." + } + ] + } + }, + "sourceFile": "src/Aspire.Hosting/ProjectResourceBuilderExtensions.cs", + "sourceLines": "941-946" + }, + { + "name": "WithProjectDefaults", + "kind": "method", + "accessibility": "public", + "signature": "public static IResourceBuilder ProjectResourceBuilderExtensions.WithProjectDefaults(this IResourceBuilder builder, ProjectResourceOptions options)", + "returnType": "Aspire.Hosting.ApplicationModel.IResourceBuilder", + "isStatic": true, + "isExtension": true, + "parameters": [ + { + "name": "builder", + "type": "Aspire.Hosting.ApplicationModel.IResourceBuilder", + "modifier": "this" + }, + { + "name": "options", + "type": "Aspire.Hosting.ProjectResourceOptions" + } + ], + "genericParameters": [ + { + "name": "TProjectResource", + "constraints": [ + "class", + "Aspire.Hosting.ApplicationModel.IResourceWithEnvironment", + "Aspire.Hosting.ApplicationModel.IResourceWithEndpoints", + "Aspire.Hosting.ApplicationModel.IResourceWithArgs" + ] + } + ], + "attributes": [ + { + "name": "System.Diagnostics.CodeAnalysis.ExperimentalAttribute", + "constructorArguments": [ + "ASPIREPROJECTS001" + ], + "arguments": { + "UrlFormat": "https://aka.ms/aspire/diagnostics/{0}" + } + }, + { + "name": "Aspire.Hosting.AspireExportIgnoreAttribute", + "arguments": { + "Reason": "Project launch defaults are applied by the .NET language integration, not by polyglot AppHosts." + } + } + ], + "docs": { + "summary": [ + { + "kind": "text", + "text": " Applies the standard .NET launch defaults to a resource that is started through the .NET SDK. " + } + ], "remarks": [ + { + "kind": "para", + "children": [ + { + "kind": "text", + "text": " This is the wiring shared by every .NET-launched resource: OpenTelemetry exporter configuration, launch profile selection and materialization, endpoints derived from launch profile and Kestrel configuration, " + }, + { + "kind": "code", + "text": "ASPNETCORE_URLS" + }, + { + "kind": "text", + "text": " / " + }, + { + "kind": "code", + "text": "HTTP_PORTS" + }, + { + "kind": "text", + "text": " / " + }, + { + "kind": "code", + "text": "HTTPS_PORTS" + }, + { + "kind": "text", + "text": " and " + }, + { + "kind": "code", + "text": "Kestrel__Endpoints__*__Url" + }, + { + "kind": "text", + "text": " environment overrides, and (in run mode) the hidden rebuilder resource behind the Rebuild command. " + } + ] + }, + { + "kind": "para", + "children": [ + { + "kind": "text", + "text": " The resource must carry " + }, + { + "kind": "cref", + "value": "T:Aspire.Hosting.IProjectMetadata" + }, + { + "kind": "text", + "text": ". It is intended for language integration packages that add their own .NET resource type, such as " + }, + { + "kind": "code", + "text": "Aspire.Hosting.Dotnet" + }, + { + "kind": "text", + "text": "; use " + }, + { + "kind": "cref", + "value": "M:Aspire.Hosting.ProjectResourceBuilderExtensions.AddProject``1(Aspire.Hosting.IDistributedApplicationBuilder,System.String)" + }, + { + "kind": "text", + "text": " for ordinary projects. " + } + ] + }, + { + "kind": "para", + "children": [ + { + "kind": "text", + "text": " The project metadata annotation must not be added, removed, or replaced after this method returns. Aspire validates this before the distributed application starts or publishes. " + } + ] + } + ], + "returns": [ { "kind": "text", - "text": "This method is not available in polyglot AppHosts." - } - ], - "returns": [ - { - "kind": "text", - "text": "A reference to the " - }, - { - "kind": "cref", - "value": "T:Aspire.Hosting.ApplicationModel.IResourceBuilder`1" - }, - { - "kind": "text", - "text": "." - } - ], - "parameters": { - "builder": [ - { - "kind": "text", - "text": "The project resource builder." - } - ], - "filter": [ - { - "kind": "text", - "text": "The filter callback that returns true if and only if the endpoint should be included." - } - ] - } - }, - "sourceFile": "src/Aspire.Hosting/ProjectResourceBuilderExtensions.cs", - "sourceLines": "859-864" - }, - { - "name": "WithReplicas", - "kind": "method", - "accessibility": "public", - "signature": "public static IResourceBuilder ProjectResourceBuilderExtensions.WithReplicas(this IResourceBuilder builder, int replicas)", - "returnType": "Aspire.Hosting.ApplicationModel.IResourceBuilder", - "isStatic": true, - "isExtension": true, - "parameters": [ - { - "name": "builder", - "type": "Aspire.Hosting.ApplicationModel.IResourceBuilder", - "modifier": "this" - }, - { - "name": "replicas", - "type": "int" - } - ], - "attributes": [ - { - "name": "Aspire.Hosting.AspireExportAttribute" - } - ], - "docs": { - "summary": [ - { - "kind": "text", - "text": " Configures how many replicas of the project should be created for the project. " - } - ], - "remarks": [ - { - "kind": "para", - "children": [ - { - "kind": "text", - "text": " When this method is applied to a project resource it will configure the AppHost to start multiple instances of the application based on the specified number of replicas. By default the AppHost automatically starts a reverse proxy for each process. When " - }, - { - "kind": "cref", - "value": "M:Aspire.Hosting.ProjectResourceBuilderExtensions.WithReplicas(Aspire.Hosting.ApplicationModel.IResourceBuilder{Aspire.Hosting.ApplicationModel.ProjectResource},System.Int32)" - }, - { - "kind": "text", - "text": " is used the reverse proxy will load balance traffic between the replicas. " - } - ] - }, - { - "kind": "para", - "children": [ - { - "kind": "text", - "text": " This capability can be useful when debugging scale out scenarios to ensure state is appropriately managed within a cluster of instances. " - } - ] - }, - { - "kind": "text", - "text": " Start multiple instances of the same service. " - }, - { - "kind": "codeblock", - "text": "\n var builder = DistributedApplication.CreateBuilder(args);\n \n builder.AddProject(\"inventoryservice\")\n .WithReplicas(3);\n ", - "language": "csharp" + "text": "The resource builder." + } + ], + "parameters": { + "builder": [ + { + "kind": "text", + "text": "The resource builder." + } + ], + "options": [ + { + "kind": "text", + "text": "Options controlling launch profile and Kestrel endpoint handling." + } + ] + }, + "typeParameters": { + "TProjectResource": [ + { + "kind": "text", + "text": "The resource type." + } + ] + }, + "exceptions": [ + { + "type": "T:System.InvalidOperationException", + "description": [ + { + "kind": "text", + "text": "The resource does not carry exactly one " + }, + { + "kind": "cref", + "value": "T:Aspire.Hosting.IProjectMetadata" + }, + { + "kind": "text", + "text": " annotation, project metadata changes after defaults are applied, or defaults were already applied." + } + ] + } + ] + }, + "sourceFile": "src/Aspire.Hosting/ProjectResourceBuilderExtensions.cs", + "sourceLines": "483-851" + }, + { + "name": "WithReplicas", + "kind": "method", + "accessibility": "public", + "signature": "public static IResourceBuilder ProjectResourceBuilderExtensions.WithReplicas(this IResourceBuilder builder, int replicas)", + "returnType": "Aspire.Hosting.ApplicationModel.IResourceBuilder", + "isStatic": true, + "isExtension": true, + "parameters": [ + { + "name": "builder", + "type": "Aspire.Hosting.ApplicationModel.IResourceBuilder", + "modifier": "this" + }, + { + "name": "replicas", + "type": "int" + } + ], + "attributes": [ + { + "name": "Aspire.Hosting.AspireExportAttribute" + } + ], + "docs": { + "summary": [ + { + "kind": "text", + "text": " Configures how many replicas of the project should be created for the project. " + } + ], + "remarks": [ + { + "kind": "para", + "children": [ + { + "kind": "text", + "text": " When this method is applied to a project resource it will configure the AppHost to start multiple instances of the application based on the specified number of replicas. By default the AppHost automatically starts a reverse proxy for each process. When " + }, + { + "kind": "cref", + "value": "M:Aspire.Hosting.ProjectResourceBuilderExtensions.WithReplicas(Aspire.Hosting.ApplicationModel.IResourceBuilder{Aspire.Hosting.ApplicationModel.ProjectResource},System.Int32)" + }, + { + "kind": "text", + "text": " is used the reverse proxy will load balance traffic between the replicas. " + } + ] + }, + { + "kind": "para", + "children": [ + { + "kind": "text", + "text": " This capability can be useful when debugging scale out scenarios to ensure state is appropriately managed within a cluster of instances. " + } + ] + }, + { + "kind": "text", + "text": " Start multiple instances of the same service. " + }, + { + "kind": "codeblock", + "text": "\n var builder = DistributedApplication.CreateBuilder(args);\n \n builder.AddProject(\"inventoryservice\")\n .WithReplicas(3);\n ", + "language": "csharp" } ], "returns": [ @@ -23282,7 +24094,7 @@ } }, "sourceFile": "src/Aspire.Hosting/ProjectResourceBuilderExtensions.cs", - "sourceLines": "804-807" + "sourceLines": "886-889" } ] }, @@ -23538,9 +24350,12 @@ } }, { - "name": "Aspire.Hosting.AspireExportIgnoreAttribute", + "name": "Aspire.Hosting.AspireExportAttribute", + "constructorArguments": [ + "withRequiredCommandValidation" + ], "arguments": { - "Reason": "RequiredCommandValidationContext exposes IServiceProvider — not usable from polyglot hosts." + "MethodName": "withRequiredCommandValidation" } } ], @@ -23552,15 +24367,6 @@ } ], "remarks": [ - { - "kind": "para", - "children": [ - { - "kind": "text", - "text": "This method is not available in polyglot AppHosts. Use the overload without validation callback instead." - } - ] - }, { "kind": "text", "text": " The command is first resolved to a full path. If found, the validation callback is invoked with the context containing the resolved path and service provider. The callback should return a " @@ -23571,7 +24377,23 @@ }, { "kind": "text", - "text": " indicating whether the command is valid. If the command is not found or fails validation, a warning message will be logged but the resource will be allowed to attempt to start. " + "text": " indicating whether the command is valid, which can be created via " + }, + { + "kind": "cref", + "value": "M:Aspire.Hosting.ApplicationModel.RequiredCommandValidationContext.Success" + }, + { + "kind": "text", + "text": " or " + }, + { + "kind": "cref", + "value": "M:Aspire.Hosting.ApplicationModel.RequiredCommandValidationContext.Failure(System.String)" + }, + { + "kind": "text", + "text": ". If the command is not found or fails validation, a warning message will be logged but the resource will be allowed to attempt to start. " } ], "returns": [ @@ -23652,7 +24474,7 @@ ] }, "sourceFile": "src/Aspire.Hosting/ResourceBuilderExtensions.cs", - "sourceLines": "29-29", + "sourceLines": "31-31", "members": [ { "name": "AsHttp2Service", @@ -23721,7 +24543,7 @@ } }, "sourceFile": "src/Aspire.Hosting/ResourceBuilderExtensions.cs", - "sourceLines": "1926-1928" + "sourceLines": "1923-1925" }, { "name": "ClearContainerFilesSources", @@ -23782,7 +24604,7 @@ } }, "sourceFile": "src/Aspire.Hosting/ResourceBuilderExtensions.cs", - "sourceLines": "2314-2321" + "sourceLines": "2311-2318" }, { "name": "ExcludeFromManifest", @@ -23851,7 +24673,7 @@ } }, "sourceFile": "src/Aspire.Hosting/ResourceBuilderExtensions.cs", - "sourceLines": "2334-2336" + "sourceLines": "2331-2333" }, { "name": "ExcludeFromMcp", @@ -23920,7 +24742,7 @@ } }, "sourceFile": "src/Aspire.Hosting/ResourceBuilderExtensions.cs", - "sourceLines": "4866-4868" + "sourceLines": "5062-5064" }, { "name": "GetConnectionProperty", @@ -23981,7 +24803,7 @@ } }, "sourceFile": "src/Aspire.Hosting/ResourceBuilderExtensions.cs", - "sourceLines": "1169-1178" + "sourceLines": "1171-1180" }, { "name": "GetEndpoint", @@ -24111,7 +24933,7 @@ } }, "sourceFile": "src/Aspire.Hosting/ResourceBuilderExtensions.cs", - "sourceLines": "1894-1896" + "sourceLines": "1891-1893" }, { "name": "GetEndpoint", @@ -24222,7 +25044,7 @@ } }, "sourceFile": "src/Aspire.Hosting/ResourceBuilderExtensions.cs", - "sourceLines": "1911-1913" + "sourceLines": "1908-1910" }, { "name": "PublishWithContainerFiles", @@ -24311,7 +25133,7 @@ } }, "sourceFile": "src/Aspire.Hosting/ResourceBuilderExtensions.cs", - "sourceLines": "2266-2279" + "sourceLines": "2263-2276" }, { "name": "SubscribeHttpsEndpointsUpdate", @@ -24351,10 +25173,7 @@ } }, { - "name": "Aspire.Hosting.AspireExportIgnoreAttribute", - "arguments": { - "Reason": "HttpsEndpointUpdateCallbackContext exposes IServiceProvider and IResource — not usable from polyglot hosts." - } + "name": "Aspire.Hosting.AspireExportAttribute" } ], "docs": { @@ -24431,15 +25250,6 @@ "kind": "codeblock", "text": "\n builder.SubscribeHttpsEndpointsUpdate(ctx =>\n {\n builder.WithEndpoint(\"http\", ep => ep.UriScheme = \"https\");\n });\n ", "language": "csharp" - }, - { - "kind": "para", - "children": [ - { - "kind": "text", - "text": "This method is not available in polyglot AppHosts." - } - ] } ], "returns": [ @@ -24480,7 +25290,7 @@ } }, "sourceFile": "src/Aspire.Hosting/ResourceBuilderExtensions.cs", - "sourceLines": "4244-4281" + "sourceLines": "4322-4359" }, { "name": "WaitFor", @@ -24624,7 +25434,7 @@ } }, "sourceFile": "src/Aspire.Hosting/ResourceBuilderExtensions.cs", - "sourceLines": "2369-2372" + "sourceLines": "2366-2369" }, { "name": "WaitFor", @@ -24836,7 +25646,7 @@ } }, "sourceFile": "src/Aspire.Hosting/ResourceBuilderExtensions.cs", - "sourceLines": "2429-2432" + "sourceLines": "2426-2429" }, { "name": "WaitForCompletion", @@ -24962,7 +25772,7 @@ } }, "sourceFile": "src/Aspire.Hosting/ResourceBuilderExtensions.cs", - "sourceLines": "2660-2675" + "sourceLines": "2657-2672" }, { "name": "WaitForStart", @@ -25081,7 +25891,7 @@ } }, "sourceFile": "src/Aspire.Hosting/ResourceBuilderExtensions.cs", - "sourceLines": "2494-2497" + "sourceLines": "2491-2494" }, { "name": "WaitForStart", @@ -25268,7 +26078,7 @@ } }, "sourceFile": "src/Aspire.Hosting/ResourceBuilderExtensions.cs", - "sourceLines": "2552-2555" + "sourceLines": "2549-2552" }, { "name": "WithArgs", @@ -25740,7 +26550,7 @@ } }, "sourceFile": "src/Aspire.Hosting/ResourceBuilderExtensions.cs", - "sourceLines": "3911-3931" + "sourceLines": "3991-4011" }, { "name": "WithCertificateTrustConfiguration", @@ -25843,7 +26653,7 @@ } }, "sourceFile": "src/Aspire.Hosting/ResourceBuilderExtensions.cs", - "sourceLines": "4067-4070" + "sourceLines": "4147-4150" }, { "name": "WithCertificateTrustScope", @@ -25970,7 +26780,7 @@ } }, "sourceFile": "src/Aspire.Hosting/ResourceBuilderExtensions.cs", - "sourceLines": "4020-4033" + "sourceLines": "4100-4113" }, { "name": "WithChildRelationship", @@ -26371,7 +27181,7 @@ } }, "sourceFile": "src/Aspire.Hosting/ResourceBuilderExtensions.cs", - "sourceLines": "2927-2944" + "sourceLines": "2919-2935" }, { "name": "WithCommand", @@ -26619,7 +27429,7 @@ } }, "sourceFile": "src/Aspire.Hosting/ResourceBuilderExtensions.cs", - "sourceLines": "2999-3012" + "sourceLines": "2989-3001" }, { "name": "WithComputeEnvironment", @@ -26696,7 +27506,7 @@ } }, "sourceFile": "src/Aspire.Hosting/ResourceBuilderExtensions.cs", - "sourceLines": "4678-4682" + "sourceLines": "4756-4760" }, { "name": "WithConnectionProperty", @@ -26956,7 +27766,7 @@ } }, "sourceFile": "src/Aspire.Hosting/ResourceBuilderExtensions.cs", - "sourceLines": "794-798" + "sourceLines": "796-800" }, { "name": "WithContainerFilesSource", @@ -27027,13 +27837,13 @@ } }, "sourceFile": "src/Aspire.Hosting/ResourceBuilderExtensions.cs", - "sourceLines": "2295-2301" + "sourceLines": "2292-2298" }, { "name": "WithDebugSupport", "kind": "method", "accessibility": "public", - "signature": "public static IResourceBuilder ResourceBuilderExtensions.WithDebugSupport(this IResourceBuilder builder, Func launchConfigurationProducer, string launchConfigurationType, Action? argsCallback = null)", + "signature": "public static IResourceBuilder ResourceBuilderExtensions.WithDebugSupport(this IResourceBuilder builder, Func launchConfigurationProducer, string launchConfigurationType)", "returnType": "Aspire.Hosting.ApplicationModel.IResourceBuilder", "isStatic": true, "isExtension": true, @@ -27050,12 +27860,6 @@ { "name": "launchConfigurationType", "type": "string" - }, - { - "name": "argsCallback", - "type": "System.Action?", - "isNullable": true, - "isOptional": true } ], "genericParameters": [ @@ -27093,13 +27897,35 @@ "text": " Adds support for debugging the resource in VS Code when running in an extension host. " } ], + "remarks": [ + { + "kind": "text", + "text": " Aspire invokes the launch configuration producer while preparing and creating the underlying orchestrator objects, and may invoke it several times for the same resource. Use " + }, + { + "kind": "cref", + "value": "M:Aspire.Hosting.ResourceBuilderExtensions.WithDebugSupport``2(Aspire.Hosting.ApplicationModel.IResourceBuilder{``0},System.Func{System.String,System.Threading.CancellationToken,System.Threading.Tasks.Task{``1}},System.String)" + }, + { + "kind": "text", + "text": " when the configuration has to be resolved from work that is itself asynchronous, for example in the presence of build-argument callbacks contributed by other annotations. " + } + ], + "returns": [ + { + "kind": "text", + "text": "The " + }, + { + "kind": "cref", + "value": "T:Aspire.Hosting.ApplicationModel.IResourceBuilder`1" + }, + { + "kind": "text", + "text": "." + } + ], "parameters": { - "argsCallback": [ - { - "kind": "text", - "text": "Optional callback to add or modify command line arguments when running in an extension host. Useful if the entrypoint is usually provided as an argument to the resource executable." - } - ], "builder": [ { "kind": "text", @@ -27109,78 +27935,293 @@ "launchConfigurationProducer": [ { "kind": "text", - "text": "Launch configuration producer for the resource." + "text": "Launch configuration producer for the resource. It is passed the launch mode (one of the values on " + }, + { + "kind": "cref", + "value": "T:Aspire.Hosting.ApplicationModel.ExecutableLaunchMode" + }, + { + "kind": "text", + "text": ") and produces the configuration that is handed to the IDE." } ], "launchConfigurationType": [ { "kind": "text", - "text": "The type of the resource." + "text": "The type tag of the launch configuration (as sent to the IDE)." } ] - } + }, + "typeParameters": { + "T": [ + { + "kind": "text", + "text": "The resource type." + } + ], + "TLaunchConfiguration": [ + { + "kind": "text", + "text": "The launch configuration type produced for the resource, typically derived from " + }, + { + "kind": "cref", + "value": "T:Aspire.Hosting.ApplicationModel.ExecutableLaunchConfiguration" + }, + { + "kind": "text", + "text": "." + } + ] + }, + "exceptions": [ + { + "type": "T:System.ArgumentException", + "description": [ + { + "kind": "typeparamref", + "value": "TLaunchConfiguration" + }, + { + "kind": "text", + "text": " is a " + }, + { + "kind": "cref", + "value": "T:System.Threading.Tasks.Task" + }, + { + "kind": "text", + "text": " or " + }, + { + "kind": "cref", + "value": "T:System.Threading.Tasks.ValueTask" + }, + { + "kind": "text", + "text": ", which means an asynchronous producer was written without the " + }, + { + "kind": "cref", + "value": "T:System.Threading.CancellationToken" + }, + { + "kind": "text", + "text": " parameter and bound to this overload. Use " + }, + { + "kind": "cref", + "value": "M:Aspire.Hosting.ResourceBuilderExtensions.WithDebugSupport``2(Aspire.Hosting.ApplicationModel.IResourceBuilder{``0},System.Func{System.String,System.Threading.CancellationToken,System.Threading.Tasks.Task{``1}},System.String)" + }, + { + "kind": "text", + "text": " instead. " + } + ] + } + ] }, - "sourceFile": "src/Aspire.Hosting/ResourceBuilderExtensions.cs", - "sourceLines": "4697-4716" + "sourceFile": "src/Aspire.Hosting/ResourceBuilderExtensions.cs" }, { - "name": "WithDeveloperCertificateTrust", + "name": "WithDebugSupport", "kind": "method", "accessibility": "public", - "signature": "public static IResourceBuilder ResourceBuilderExtensions.WithDeveloperCertificateTrust(this IResourceBuilder builder, bool trust)", - "returnType": "Aspire.Hosting.ApplicationModel.IResourceBuilder", + "signature": "public static IResourceBuilder ResourceBuilderExtensions.WithDebugSupport(this IResourceBuilder builder, Func> launchConfigurationProducer, string launchConfigurationType)", + "returnType": "Aspire.Hosting.ApplicationModel.IResourceBuilder", "isStatic": true, "isExtension": true, "parameters": [ { "name": "builder", - "type": "Aspire.Hosting.ApplicationModel.IResourceBuilder", + "type": "Aspire.Hosting.ApplicationModel.IResourceBuilder", "modifier": "this" }, { - "name": "trust", - "type": "bool" + "name": "launchConfigurationProducer", + "type": "System.Func>" + }, + { + "name": "launchConfigurationType", + "type": "string" } ], "genericParameters": [ { - "name": "TResource", + "name": "T", "constraints": [ - "Aspire.Hosting.ApplicationModel.IResourceWithEnvironment", - "Aspire.Hosting.ApplicationModel.IResourceWithArgs" + "Aspire.Hosting.ApplicationModel.IResource" ] + }, + { + "name": "TLaunchConfiguration" } ], "attributes": [ { - "name": "Aspire.Hosting.AspireExportAttribute" + "name": "System.Diagnostics.CodeAnalysis.ExperimentalAttribute", + "constructorArguments": [ + "ASPIREEXTENSION001" + ], + "arguments": { + "UrlFormat": "https://aka.ms/aspire/diagnostics/{0}" + } + }, + { + "name": "Aspire.Hosting.AspireExportIgnoreAttribute", + "arguments": { + "Reason": "Generic debug launch configuration support is not part of the ATS surface." + } } ], "docs": { "summary": [ { "kind": "text", - "text": " Indicates whether developer certificates should be treated as trusted certificate authorities for the resource at run time. Currently this indicates trust for the ASP.NET Core developer certificate. The developer certificate will only be trusted when running in local development scenarios; in publish mode resources will use their default certificate trust. " + "text": " Adds support for debugging the resource in VS Code when running in an extension host, using a launch configuration that is produced asynchronously. " } ], "remarks": [ { "kind": "text", - "text": " Disable trust for AppHost managed developer certificate(s) for a container resource. " + "text": " Use this overload when the launch configuration has to be resolved from work that is itself asynchronous, for example in the presence of build-argument callbacks contributed by other annotations. Aspire invokes the producer while preparing and creating the underlying orchestrator objects, and may invoke it several times for the same resource. A producer that computes everything synchronously should use " }, { - "kind": "codeblock", - "text": "\n var container = builder.AddContainer(\"my-service\", \"my-service:latest\")\n .WithDeveloperCertificateTrust(false);\n ", - "language": "csharp" + "kind": "cref", + "value": "M:Aspire.Hosting.ResourceBuilderExtensions.WithDebugSupport``2(Aspire.Hosting.ApplicationModel.IResourceBuilder{``0},System.Func{System.String,``1},System.String)" }, { "kind": "text", - "text": " Disable automatic trust for AppHost managed developer certificate(s), but explicitly enable it for a specific resource. " - }, - { - "kind": "codeblock", - "text": "\n var builder = DistributedApplication.CreateBuilder(new DistributedApplicationOptions()\n {\n Args = args,\n TrustDeveloperCertificate = false,\n });\n var project = builder.AddProject(\"my-service\")\n .WithDeveloperCertificateTrust(true);\n ", - "language": "csharp" + "text": " instead. " + } + ], + "returns": [ + { + "kind": "text", + "text": "The " + }, + { + "kind": "cref", + "value": "T:Aspire.Hosting.ApplicationModel.IResourceBuilder`1" + }, + { + "kind": "text", + "text": "." + } + ], + "parameters": { + "builder": [ + { + "kind": "text", + "text": "The resource builder." + } + ], + "launchConfigurationProducer": [ + { + "kind": "text", + "text": "Launch configuration producer for the resource. It is passed the launch mode (one of the values on " + }, + { + "kind": "cref", + "value": "T:Aspire.Hosting.ApplicationModel.ExecutableLaunchMode" + }, + { + "kind": "text", + "text": ") and produces the configuration that is handed to the IDE." + } + ], + "launchConfigurationType": [ + { + "kind": "text", + "text": "The type of the resource." + } + ] + }, + "typeParameters": { + "T": [ + { + "kind": "text", + "text": "The resource type." + } + ], + "TLaunchConfiguration": [ + { + "kind": "text", + "text": "The launch configuration type produced for the resource, typically derived from " + }, + { + "kind": "cref", + "value": "T:Aspire.Hosting.ApplicationModel.ExecutableLaunchConfiguration" + }, + { + "kind": "text", + "text": "." + } + ] + } + }, + "sourceFile": "src/Aspire.Hosting/ResourceBuilderExtensions.cs" + }, + { + "name": "WithDeveloperCertificateTrust", + "kind": "method", + "accessibility": "public", + "signature": "public static IResourceBuilder ResourceBuilderExtensions.WithDeveloperCertificateTrust(this IResourceBuilder builder, bool trust)", + "returnType": "Aspire.Hosting.ApplicationModel.IResourceBuilder", + "isStatic": true, + "isExtension": true, + "parameters": [ + { + "name": "builder", + "type": "Aspire.Hosting.ApplicationModel.IResourceBuilder", + "modifier": "this" + }, + { + "name": "trust", + "type": "bool" + } + ], + "genericParameters": [ + { + "name": "TResource", + "constraints": [ + "Aspire.Hosting.ApplicationModel.IResourceWithEnvironment", + "Aspire.Hosting.ApplicationModel.IResourceWithArgs" + ] + } + ], + "attributes": [ + { + "name": "Aspire.Hosting.AspireExportAttribute" + } + ], + "docs": { + "summary": [ + { + "kind": "text", + "text": " Indicates whether developer certificates should be treated as trusted certificate authorities for the resource at run time. Currently this indicates trust for the ASP.NET Core developer certificate. The developer certificate will only be trusted when running in local development scenarios; in publish mode resources will use their default certificate trust. " + } + ], + "remarks": [ + { + "kind": "text", + "text": " Disable trust for AppHost managed developer certificate(s) for a container resource. " + }, + { + "kind": "codeblock", + "text": "\n var container = builder.AddContainer(\"my-service\", \"my-service:latest\")\n .WithDeveloperCertificateTrust(false);\n ", + "language": "csharp" + }, + { + "kind": "text", + "text": " Disable automatic trust for AppHost managed developer certificate(s), but explicitly enable it for a specific resource. " + }, + { + "kind": "codeblock", + "text": "\n var builder = DistributedApplication.CreateBuilder(new DistributedApplicationOptions()\n {\n Args = args,\n TrustDeveloperCertificate = false,\n });\n var project = builder.AddProject(\"my-service\")\n .WithDeveloperCertificateTrust(true);\n ", + "language": "csharp" } ], "returns": [ @@ -27221,7 +28262,7 @@ } }, "sourceFile": "src/Aspire.Hosting/ResourceBuilderExtensions.cs", - "sourceLines": "3969-3982" + "sourceLines": "4049-4062" }, { "name": "WithEndpoint", @@ -27370,7 +28411,7 @@ } }, "sourceFile": "src/Aspire.Hosting/ResourceBuilderExtensions.cs", - "sourceLines": "1466-1494" + "sourceLines": "1463-1491" }, { "name": "WithEndpoint", @@ -28284,7 +29325,7 @@ } }, "sourceFile": "src/Aspire.Hosting/ResourceBuilderExtensions.cs", - "sourceLines": "1695-1695" + "sourceLines": "1692-1692" }, { "name": "WithEnvironment", @@ -28688,7 +29729,7 @@ } }, "sourceFile": "src/Aspire.Hosting/ResourceBuilderExtensions.cs", - "sourceLines": "349-353" + "sourceLines": "351-355" }, { "name": "WithEnvironment", @@ -28950,7 +29991,7 @@ } }, "sourceFile": "src/Aspire.Hosting/ResourceBuilderExtensions.cs", - "sourceLines": "401-410" + "sourceLines": "403-412" }, { "name": "WithEnvironment", @@ -29056,7 +30097,7 @@ } }, "sourceFile": "src/Aspire.Hosting/ResourceBuilderExtensions.cs", - "sourceLines": "426-453" + "sourceLines": "428-455" }, { "name": "WithEnvironment", @@ -29156,7 +30197,7 @@ } }, "sourceFile": "src/Aspire.Hosting/ResourceBuilderExtensions.cs", - "sourceLines": "467-476" + "sourceLines": "469-478" }, { "name": "WithEnvironment", @@ -29248,7 +30289,7 @@ } }, "sourceFile": "src/Aspire.Hosting/ResourceBuilderExtensions.cs", - "sourceLines": "494-503" + "sourceLines": "496-505" }, { "name": "WithEnvironment", @@ -29592,7 +30633,7 @@ } }, "sourceFile": "src/Aspire.Hosting/ResourceBuilderExtensions.cs", - "sourceLines": "2626-2626" + "sourceLines": "2623-2623" }, { "name": "WithExternalHttpEndpoints", @@ -29661,7 +30702,7 @@ } }, "sourceFile": "src/Aspire.Hosting/ResourceBuilderExtensions.cs", - "sourceLines": "1863-1878" + "sourceLines": "1860-1875" }, { "name": "WithHealthCheck", @@ -29792,7 +30833,7 @@ } }, "sourceFile": "src/Aspire.Hosting/ResourceBuilderExtensions.cs", - "sourceLines": "2720-2730" + "sourceLines": "2717-2727" }, { "name": "WithHidden", @@ -29883,7 +30924,7 @@ } }, "sourceFile": "src/Aspire.Hosting/ResourceBuilderExtensions.cs", - "sourceLines": "4886-4888" + "sourceLines": "5082-5084" }, { "name": "WithHiddenOnCompletion", @@ -29987,7 +31028,7 @@ } }, "sourceFile": "src/Aspire.Hosting/ResourceBuilderExtensions.cs", - "sourceLines": "4906-4908" + "sourceLines": "5102-5104" }, { "name": "WithHiddenOnCompletion", @@ -30100,7 +31141,7 @@ } }, "sourceFile": "src/Aspire.Hosting/ResourceBuilderExtensions.cs", - "sourceLines": "4951-4954" + "sourceLines": "5147-5150" }, { "name": "WithHttpCommand", @@ -30305,7 +31346,7 @@ }, { "kind": "text", - "text": " instance with a specific handler or other options using " + "text": " instance with a specific handler, timeout, or other options using " }, { "kind": "cref", @@ -30329,7 +31370,23 @@ }, { "kind": "text", - "text": " will be used. " + "text": " will be used and its " + }, + { + "kind": "cref", + "value": "P:System.Net.Http.HttpClient.Timeout" + }, + { + "kind": "text", + "text": " will be set to " + }, + { + "kind": "cref", + "value": "F:System.Threading.Timeout.InfiniteTimeSpan" + }, + { + "kind": "text", + "text": ". Specify a named client to preserve its configured timeout. " } ] }, @@ -30497,7 +31554,7 @@ } }, "sourceFile": "src/Aspire.Hosting/ResourceBuilderExtensions.cs", - "sourceLines": "3595-3602" + "sourceLines": "3603-3610" }, { "name": "WithHttpCommand", @@ -30693,7 +31750,7 @@ }, { "kind": "text", - "text": " instance with a specific handler or other options using " + "text": " instance with a specific handler, timeout, or other options using " }, { "kind": "cref", @@ -30701,7 +31758,7 @@ }, { "kind": "text", - "text": ". If no " + "text": ". If " }, { "kind": "cref", @@ -30709,7 +31766,7 @@ }, { "kind": "text", - "text": " is specified, the default " + "text": " is not specified, the default " }, { "kind": "cref", @@ -30717,7 +31774,23 @@ }, { "kind": "text", - "text": " will be used. " + "text": " will be used and its " + }, + { + "kind": "cref", + "value": "P:System.Net.Http.HttpClient.Timeout" + }, + { + "kind": "text", + "text": " will be set to " + }, + { + "kind": "cref", + "value": "F:System.Threading.Timeout.InfiniteTimeSpan" + }, + { + "kind": "text", + "text": ". Specify a named client to preserve its configured timeout. " } ] }, @@ -30849,7 +31922,7 @@ ] }, "sourceFile": "src/Aspire.Hosting/ResourceBuilderExtensions.cs", - "sourceLines": "3672-3753" + "sourceLines": "3681-3775" }, { "name": "WithHttpEndpoint", @@ -31299,7 +32372,7 @@ } }, "sourceFile": "src/Aspire.Hosting/ResourceBuilderExtensions.cs", - "sourceLines": "2767-2773" + "sourceLines": "2764-2770" }, { "name": "WithHttpHealthCheck", @@ -31437,7 +32510,7 @@ } }, "sourceFile": "src/Aspire.Hosting/ResourceBuilderExtensions.cs", - "sourceLines": "2809-2858" + "sourceLines": "2806-2850" }, { "name": "WithHttpProbe", @@ -31651,7 +32724,7 @@ } }, "sourceFile": "src/Aspire.Hosting/ResourceBuilderExtensions.cs", - "sourceLines": "4757-4763" + "sourceLines": "4953-4959" }, { "name": "WithHttpProbe", @@ -31864,7 +32937,7 @@ } }, "sourceFile": "src/Aspire.Hosting/ResourceBuilderExtensions.cs", - "sourceLines": "4817-4834" + "sourceLines": "5013-5030" }, { "name": "WithHttpsCertificate", @@ -32012,7 +33085,7 @@ } }, "sourceFile": "src/Aspire.Hosting/ResourceBuilderExtensions.cs", - "sourceLines": "4133-4141" + "sourceLines": "4213-4221" }, { "name": "WithHttpsCertificateConfiguration", @@ -32053,10 +33126,7 @@ } }, { - "name": "Aspire.Hosting.AspireExportIgnoreAttribute", - "arguments": { - "Reason": "HttpsCertificateConfigurationCallbackAnnotationContext exposes IServiceProvider and IResource — not usable from polyglot hosts." - } + "name": "Aspire.Hosting.AspireExportAttribute" } ], "docs": { @@ -32075,15 +33145,6 @@ "kind": "codeblock", "text": "\n builder.AddContainer(\"my-service\", \"my-image\")\n .WithHttpsCertificateConfiguration(ctx =>\n {\n ctx.Arguments.Add(\"--https-certificate-path\");\n ctx.Arguments.Add(ctx.PfxPath);\n return Task.CompletedTask;\n });\n ", "language": "csharp" - }, - { - "kind": "para", - "children": [ - { - "kind": "text", - "text": "This method is not available in polyglot AppHosts." - } - ] } ], "returns": [ @@ -32116,7 +33177,7 @@ } }, "sourceFile": "src/Aspire.Hosting/ResourceBuilderExtensions.cs", - "sourceLines": "4203-4208" + "sourceLines": "4282-4287" }, { "name": "WithHttpsDeveloperCertificate", @@ -32224,7 +33285,7 @@ } }, "sourceFile": "src/Aspire.Hosting/ResourceBuilderExtensions.cs", - "sourceLines": "4097-4105" + "sourceLines": "4177-4185" }, { "name": "WithHttpsEndpoint", @@ -32677,7 +33738,7 @@ } }, "sourceFile": "src/Aspire.Hosting/ResourceBuilderExtensions.cs", - "sourceLines": "2893-2895" + "sourceLines": "2885-2887" }, { "name": "WithIconName", @@ -32797,7 +33858,7 @@ } }, "sourceFile": "src/Aspire.Hosting/ResourceBuilderExtensions.cs", - "sourceLines": "4658-4661" + "sourceLines": "4736-4739" }, { "name": "WithImagePushOptions", @@ -33115,10 +34176,10 @@ "sourceFile": "src/Aspire.Hosting/ResourceBuilderExtensions.cs" }, { - "name": "WithLifetimeOf", + "name": "WithLaunchToolArgs", "kind": "method", "accessibility": "public", - "signature": "public static IResourceBuilder ResourceBuilderExtensions.WithLifetimeOf(this IResourceBuilder builder, IResourceBuilder sourceBuilder)", + "signature": "public static IResourceBuilder ResourceBuilderExtensions.WithLaunchToolArgs(this IResourceBuilder builder, Action callback, string? ownedByLaunchConfigurationType = null, bool showInCommandLine = true)", "returnType": "Aspire.Hosting.ApplicationModel.IResourceBuilder", "isStatic": true, "isExtension": true, @@ -33129,21 +34190,27 @@ "modifier": "this" }, { - "name": "sourceBuilder", - "type": "Aspire.Hosting.ApplicationModel.IResourceBuilder" + "name": "callback", + "type": "System.Action" + }, + { + "name": "ownedByLaunchConfigurationType", + "type": "string?", + "isNullable": true, + "isOptional": true + }, + { + "name": "showInCommandLine", + "type": "bool", + "isOptional": true, + "defaultValue": "True" } ], "genericParameters": [ { "name": "T", "constraints": [ - "Aspire.Hosting.ApplicationModel.IResource" - ] - }, - { - "name": "TSource", - "constraints": [ - "Aspire.Hosting.ApplicationModel.IResource" + "Aspire.Hosting.ApplicationModel.IResourceWithArgs" ] } ], @@ -33151,41 +34218,172 @@ { "name": "System.Diagnostics.CodeAnalysis.ExperimentalAttribute", "constructorArguments": [ - "ASPIREPERSISTENCE001" + "ASPIREEXTENSION001" ], "arguments": { "UrlFormat": "https://aka.ms/aspire/diagnostics/{0}" } }, { - "name": "Aspire.Hosting.AspireExportAttribute" + "name": "Aspire.Hosting.AspireExportIgnoreAttribute", + "arguments": { + "Reason": "Generic launch tool argument support is not part of the ATS surface." + } } ], "docs": { "summary": [ { "kind": "text", - "text": " Configures a resource to match the lifetime of another resource. " + "text": " Declares the resource's " + }, + { + "kind": "text", + "text": "launch tool arguments" + }, + { + "kind": "text", + "text": ": the tool-invocation prefix that hosts the program, for example " + }, + { + "kind": "code", + "text": "run ./cmd/api" + }, + { + "kind": "text", + "text": " for " + }, + { + "kind": "code", + "text": "go" + }, + { + "kind": "text", + "text": ", " + }, + { + "kind": "code", + "text": "-m flask" + }, + { + "kind": "text", + "text": " for " + }, + { + "kind": "code", + "text": "python" + }, + { + "kind": "text", + "text": ", or " + }, + { + "kind": "code", + "text": "tool exec --yes --" + }, + { + "kind": "text", + "text": " for " + }, + { + "kind": "code", + "text": "dotnet" + }, + { + "kind": "text", + "text": ". " } ], "remarks": [ { - "kind": "text", - "text": " The resource lifetime is evaluated from " + "kind": "para", + "children": [ + { + "kind": "text", + "text": " Launch tool arguments are always placed ahead of every argument contributed by " + }, + { + "kind": "code", + "text": "WithArgs" + }, + { + "kind": "text", + "text": ", no matter when this method is called, and no " + }, + { + "kind": "code", + "text": "WithArgs" + }, + { + "kind": "text", + "text": " callback can observe or modify them. Declaring the tool invocation this way therefore avoids any dependency on the order in which resource builder methods are called. " + } + ] }, { - "kind": "paramref", - "value": "sourceBuilder" + "kind": "para", + "children": [ + { + "kind": "text", + "text": " When " + }, + { + "kind": "paramref", + "value": "ownedByLaunchConfigurationType" + }, + { + "kind": "text", + "text": " is supplied and the resource is launched by an IDE using a launch configuration of that type (see " + }, + { + "kind": "code", + "text": "WithDebugSupport" + }, + { + "kind": "text", + "text": "), the launch configuration already carries the tool invocation, so these arguments are not passed to the launched program. In every other case — process execution, publish, or when a launch configuration of a different type is active — they are part of the resource's command line. " + } + ] }, { - "kind": "text", - "text": " when the application model is prepared, so later lifetime changes to the source resource are reflected by this resource. " + "kind": "para", + "children": [ + { + "kind": "text", + "text": " This has no effect on a container resource, which invokes its program through the image's " + }, + { + "kind": "code", + "text": "ENTRYPOINT" + }, + { + "kind": "text", + "text": " rather than through a local tool. That matters for executables published as a Dockerfile, because " + }, + { + "kind": "cref", + "value": "M:Aspire.Hosting.ExecutableResourceBuilderExtensions.PublishAsDockerFile``1(Aspire.Hosting.ApplicationModel.IResourceBuilder{``0})" + }, + { + "kind": "text", + "text": " carries the executable's annotations over to the generated container resource. " + } + ] + }, + { + "kind": "para", + "children": [ + { + "kind": "text", + "text": " Calling this method more than once is allowed; the most recent declaration wins. It therefore declares a single tool invocation rather than accumulating one, which is why it is the integration's own description of how it launches the program, not a place for callers to append flags. " + } + ] } ], "returns": [ { "kind": "text", - "text": "The " + "text": "A reference to the " }, { "kind": "cref", @@ -33203,47 +34401,70 @@ "text": "The resource builder." } ], - "sourceBuilder": [ + "callback": [ { "kind": "text", - "text": "The resource builder whose lifetime should be used." + "text": " Callback that produces the launch tool arguments. It is invoked with an " + }, + { + "kind": "text", + "text": "empty" + }, + { + "kind": "cref", + "value": "P:Aspire.Hosting.ApplicationModel.CommandLineArgsCallbackContext.Args" + }, + { + "kind": "text", + "text": " list; everything it adds becomes the leading arguments. " } - ] - }, - "typeParameters": { - "T": [ + ], + "ownedByLaunchConfigurationType": [ { "kind": "text", - "text": "The resource type." + "text": " The debug launch configuration type that performs this tool invocation itself, for example \"go\" or \"python\" — the same value passed to " + }, + { + "kind": "code", + "text": "WithDebugSupport" + }, + { + "kind": "text", + "text": ". Leave this " + }, + { + "kind": "langword", + "value": "null" + }, + { + "kind": "text", + "text": " (the default) when the prefix is not a debugging concern and must always be passed to the launched program. " } ], - "TSource": [ + "showInCommandLine": [ { "kind": "text", - "text": "The source resource type." + "text": " Whether these arguments are part of the command line shown for the resource in the dashboard. Pass " + }, + { + "kind": "langword", + "value": "false" + }, + { + "kind": "text", + "text": " for a prefix that is pure invocation plumbing the user did not write and cannot act on. " } ] - }, - "exceptions": [ - { - "type": "T:System.InvalidOperationException", - "description": [ - { - "kind": "text", - "text": "Thrown when the resource does not support lifetime configuration." - } - ] - } - ] + } }, "sourceFile": "src/Aspire.Hosting/ResourceBuilderExtensions.cs", - "sourceLines": "119-133" + "sourceLines": "4817-4832" }, { - "name": "WithManifestPublishingCallback", + "name": "WithLifetimeOf", "kind": "method", "accessibility": "public", - "signature": "public static IResourceBuilder ResourceBuilderExtensions.WithManifestPublishingCallback(this IResourceBuilder builder, Action callback)", + "signature": "public static IResourceBuilder ResourceBuilderExtensions.WithLifetimeOf(this IResourceBuilder builder, IResourceBuilder sourceBuilder)", "returnType": "Aspire.Hosting.ApplicationModel.IResourceBuilder", "isStatic": true, "isExtension": true, @@ -33254,8 +34475,8 @@ "modifier": "this" }, { - "name": "callback", - "type": "System.Action" + "name": "sourceBuilder", + "type": "Aspire.Hosting.ApplicationModel.IResourceBuilder" } ], "genericParameters": [ @@ -33264,27 +34485,152 @@ "constraints": [ "Aspire.Hosting.ApplicationModel.IResource" ] + }, + { + "name": "TSource", + "constraints": [ + "Aspire.Hosting.ApplicationModel.IResource" + ] } ], "attributes": [ { - "name": "Aspire.Hosting.AspireExportIgnoreAttribute", + "name": "System.Diagnostics.CodeAnalysis.ExperimentalAttribute", + "constructorArguments": [ + "ASPIREPERSISTENCE001" + ], "arguments": { - "Reason": "ManifestPublishingContext exposes Utf8JsonWriter and DistributedApplicationExecutionContext — .NET runtime types not usable from polyglot hosts." + "UrlFormat": "https://aka.ms/aspire/diagnostics/{0}" } + }, + { + "name": "Aspire.Hosting.AspireExportAttribute" } ], "docs": { "summary": [ { "kind": "text", - "text": " Registers a callback which is invoked when manifest is generated for the app model. " + "text": " Configures a resource to match the lifetime of another resource. " } ], "remarks": [ { "kind": "text", - "text": "This method is not available in polyglot AppHosts." + "text": " The resource lifetime is evaluated from " + }, + { + "kind": "paramref", + "value": "sourceBuilder" + }, + { + "kind": "text", + "text": " when the application model is prepared, so later lifetime changes to the source resource are reflected by this resource. " + } + ], + "returns": [ + { + "kind": "text", + "text": "The " + }, + { + "kind": "cref", + "value": "T:Aspire.Hosting.ApplicationModel.IResourceBuilder`1" + }, + { + "kind": "text", + "text": "." + } + ], + "parameters": { + "builder": [ + { + "kind": "text", + "text": "The resource builder." + } + ], + "sourceBuilder": [ + { + "kind": "text", + "text": "The resource builder whose lifetime should be used." + } + ] + }, + "typeParameters": { + "T": [ + { + "kind": "text", + "text": "The resource type." + } + ], + "TSource": [ + { + "kind": "text", + "text": "The source resource type." + } + ] + }, + "exceptions": [ + { + "type": "T:System.InvalidOperationException", + "description": [ + { + "kind": "text", + "text": "Thrown when the resource does not support lifetime configuration." + } + ] + } + ] + }, + "sourceFile": "src/Aspire.Hosting/ResourceBuilderExtensions.cs", + "sourceLines": "121-135" + }, + { + "name": "WithManifestPublishingCallback", + "kind": "method", + "accessibility": "public", + "signature": "public static IResourceBuilder ResourceBuilderExtensions.WithManifestPublishingCallback(this IResourceBuilder builder, Action callback)", + "returnType": "Aspire.Hosting.ApplicationModel.IResourceBuilder", + "isStatic": true, + "isExtension": true, + "parameters": [ + { + "name": "builder", + "type": "Aspire.Hosting.ApplicationModel.IResourceBuilder", + "modifier": "this" + }, + { + "name": "callback", + "type": "System.Action" + } + ], + "genericParameters": [ + { + "name": "T", + "constraints": [ + "Aspire.Hosting.ApplicationModel.IResource" + ] + } + ], + "attributes": [ + { + "name": "Aspire.Hosting.AspireExportIgnoreAttribute", + "arguments": { + "Reason": "ManifestPublishingContext exposes Utf8JsonWriter and DistributedApplicationExecutionContext — .NET runtime types not usable from polyglot hosts." + } + } + ], + "docs": { + "summary": [ + { + "kind": "text", + "text": " Registers a callback which is invoked when manifest is generated for the app model. " + } + ], + "remarks": [ + { + "kind": "text", + "text": "This method is not available in polyglot AppHosts." } ], "returns": [ @@ -33517,7 +34863,7 @@ } }, "sourceFile": "src/Aspire.Hosting/ResourceBuilderExtensions.cs", - "sourceLines": "4165-4173" + "sourceLines": "4245-4253" }, { "name": "WithParentProcessLifetime", @@ -33665,7 +35011,7 @@ ] }, "sourceFile": "src/Aspire.Hosting/ResourceBuilderExtensions.cs", - "sourceLines": "167-185" + "sourceLines": "169-187" }, { "name": "WithParentRelationship", @@ -34011,7 +35357,7 @@ ] }, "sourceFile": "src/Aspire.Hosting/ResourceBuilderExtensions.cs", - "sourceLines": "94-96" + "sourceLines": "96-98" }, { "name": "WithProcessCommand", @@ -34180,7 +35526,7 @@ ] }, "sourceFile": "src/Aspire.Hosting/ResourceBuilderExtensions.cs", - "sourceLines": "3061-3071" + "sourceLines": "3064-3074" }, { "name": "WithProcessCommand", @@ -34777,7 +36123,7 @@ ] }, "sourceFile": "src/Aspire.Hosting/ResourceBuilderExtensions.cs", - "sourceLines": "1107-1145" + "sourceLines": "1109-1147" }, { "name": "WithReference", @@ -34934,7 +36280,7 @@ } }, "sourceFile": "src/Aspire.Hosting/ResourceBuilderExtensions.cs", - "sourceLines": "1204-1208" + "sourceLines": "1206-1210" }, { "name": "WithReference", @@ -35101,7 +36447,7 @@ } }, "sourceFile": "src/Aspire.Hosting/ResourceBuilderExtensions.cs", - "sourceLines": "1236-1240" + "sourceLines": "1238-1242" }, { "name": "WithReference", @@ -35193,7 +36539,7 @@ } }, "sourceFile": "src/Aspire.Hosting/ResourceBuilderExtensions.cs", - "sourceLines": "1257-1295" + "sourceLines": "1259-1292" }, { "name": "WithReference", @@ -35275,7 +36621,7 @@ } }, "sourceFile": "src/Aspire.Hosting/ResourceBuilderExtensions.cs", - "sourceLines": "1310-1370" + "sourceLines": "1307-1367" }, { "name": "WithReference", @@ -35365,7 +36711,7 @@ } }, "sourceFile": "src/Aspire.Hosting/ResourceBuilderExtensions.cs", - "sourceLines": "1386-1390" + "sourceLines": "1383-1387" }, { "name": "WithReferenceEnvironment", @@ -35453,7 +36799,7 @@ } }, "sourceFile": "src/Aspire.Hosting/ResourceBuilderExtensions.cs", - "sourceLines": "880-882" + "sourceLines": "882-884" }, { "name": "WithReferenceRelationship", @@ -35541,7 +36887,7 @@ } }, "sourceFile": "src/Aspire.Hosting/ResourceBuilderExtensions.cs", - "sourceLines": "4405-4408" + "sourceLines": "4483-4486" }, { "name": "WithReferenceRelationship", @@ -35629,7 +36975,7 @@ } }, "sourceFile": "src/Aspire.Hosting/ResourceBuilderExtensions.cs", - "sourceLines": "4424-4429" + "sourceLines": "4502-4507" }, { "name": "WithReferenceRelationship", @@ -35717,7 +37063,7 @@ } }, "sourceFile": "src/Aspire.Hosting/ResourceBuilderExtensions.cs", - "sourceLines": "4485-4488" + "sourceLines": "4563-4566" }, { "name": "WithRelationship", @@ -35854,7 +37200,7 @@ } }, "sourceFile": "src/Aspire.Hosting/ResourceBuilderExtensions.cs", - "sourceLines": "4365-4369" + "sourceLines": "4443-4447" }, { "name": "WithRelationship", @@ -35941,7 +37287,7 @@ } }, "sourceFile": "src/Aspire.Hosting/ResourceBuilderExtensions.cs", - "sourceLines": "4386-4389" + "sourceLines": "4464-4467" }, { "name": "WithRemoteImageName", @@ -36098,7 +37444,7 @@ ] }, "sourceFile": "src/Aspire.Hosting/ResourceBuilderExtensions.cs", - "sourceLines": "5072-5078" + "sourceLines": "5268-5274" }, { "name": "WithRemoteImageTag", @@ -36255,7 +37601,7 @@ ] }, "sourceFile": "src/Aspire.Hosting/ResourceBuilderExtensions.cs", - "sourceLines": "5112-5118" + "sourceLines": "5308-5314" }, { "name": "WithSessionLifetime", @@ -36355,7 +37701,7 @@ ] }, "sourceFile": "src/Aspire.Hosting/ResourceBuilderExtensions.cs", - "sourceLines": "62-64" + "sourceLines": "64-66" }, { "name": "WithUrl", @@ -37248,6 +38594,107 @@ } ] }, + { + "name": "RunConfiguration", + "fullName": "Aspire.Hosting.RunConfiguration", + "namespace": "Aspire.Hosting", + "kind": "class", + "accessibility": "public", + "isSealed": true, + "docs": { + "summary": [ + { + "kind": "text", + "text": " Holds settings applicable to the AppHost run mode (when " + }, + { + "kind": "cref", + "value": "P:Aspire.Hosting.DistributedApplicationExecutionContext.Operation" + }, + { + "kind": "text", + "text": " is " + }, + { + "kind": "cref", + "value": "F:Aspire.Hosting.DistributedApplicationOperation.Run" + }, + { + "kind": "text", + "text": "). " + } + ], + "remarks": [ + { + "kind": "para", + "children": [ + { + "kind": "text", + "text": " Integrations use it to vary how their resources are launched without changing the core hosting behavior. In " + }, + { + "kind": "cref", + "value": "F:Aspire.Hosting.DistributedApplicationOperation.Publish" + }, + { + "kind": "text", + "text": " mode every property holds its default value. " + } + ] + } + ] + }, + "attributes": [ + { + "name": "System.Diagnostics.CodeAnalysis.ExperimentalAttribute", + "constructorArguments": [ + "ASPIREWATCH001" + ], + "arguments": { + "UrlFormat": "https://aka.ms/aspire/diagnostics/{0}" + } + }, + { + "name": "Aspire.Hosting.AspireDtoAttribute" + } + ], + "sourceFile": "src/Aspire.Hosting/RunConfiguration.cs", + "sourceLines": "20-20", + "members": [ + { + "name": ".ctor", + "kind": "constructor", + "accessibility": "public", + "signature": "public RunConfiguration.RunConfiguration()", + "returnType": "void" + }, + { + "name": "WatchEnabled", + "kind": "property", + "accessibility": "public", + "signature": "public bool RunConfiguration.WatchEnabled", + "returnType": "bool", + "hasGet": true, + "hasSet": true, + "isInitOnly": true, + "docs": { + "summary": [ + { + "kind": "text", + "text": " Indicates that resources should start in watch mode if able. " + } + ], + "remarks": [ + { + "kind": "text", + "text": " Integrations that support watch can launch their resources so that source changes are hot-reloaded. This is a hint: integrations that cannot watch their resources should start them in normal fashion. " + } + ] + }, + "sourceFile": "src/Aspire.Hosting/RunConfiguration.cs" + } + ] + }, { "name": "TempDirectory", "fullName": "Aspire.Hosting.TempDirectory", @@ -37380,6 +38827,241 @@ } ] }, + { + "name": "TerminalResourceBuilderExtensions", + "fullName": "Aspire.Hosting.TerminalResourceBuilderExtensions", + "namespace": "Aspire.Hosting", + "kind": "class", + "accessibility": "public", + "isStatic": true, + "docs": { + "summary": [ + { + "kind": "text", + "text": " Provides extension methods for configuring interactive terminal support on resources. " + } + ] + }, + "sourceFile": "src/Aspire.Hosting/TerminalResourceBuilderExtensions.cs", + "sourceLines": "19-19", + "members": [ + { + "name": "WithTerminal", + "kind": "method", + "accessibility": "public", + "signature": "public static IResourceBuilder TerminalResourceBuilderExtensions.WithTerminal(this IResourceBuilder builder, Action? configure = null)", + "returnType": "Aspire.Hosting.ApplicationModel.IResourceBuilder", + "isStatic": true, + "isExtension": true, + "parameters": [ + { + "name": "builder", + "type": "Aspire.Hosting.ApplicationModel.IResourceBuilder", + "modifier": "this" + }, + { + "name": "configure", + "type": "System.Action?", + "isNullable": true, + "isOptional": true + } + ], + "genericParameters": [ + { + "name": "T", + "constraints": [ + "Aspire.Hosting.ApplicationModel.IResource" + ] + } + ], + "attributes": [ + { + "name": "System.Diagnostics.CodeAnalysis.ExperimentalAttribute", + "constructorArguments": [ + "ASPIRETERMINAL001" + ], + "arguments": { + "UrlFormat": "https://aka.ms/aspire/diagnostics/{0}" + } + }, + { + "name": "Aspire.Hosting.AspireExportIgnoreAttribute", + "arguments": { + "Reason": "Polyglot AppHosts use the parameterless withTerminal dispatcher export." + } + } + ], + "docs": { + "summary": [ + { + "kind": "text", + "text": " Configures a resource to expose an interactive terminal session. " + } + ], + "remarks": [ + { + "kind": "para", + "children": [ + { + "kind": "text", + "text": " When a resource is configured with " + }, + { + "kind": "code", + "text": ".WithTerminal()" + }, + { + "kind": "text", + "text": ", DCP allocates a pseudo-terminal (PTY) per replica and a hidden terminal host process bridges the PTY traffic over Hex1b's HMP v1 protocol. The terminal session can be accessed from the Aspire Dashboard's terminal page or via the " + }, + { + "kind": "code", + "text": "aspire terminal" + }, + { + "kind": "text", + "text": " CLI command. " + } + ] + }, + { + "kind": "para", + "children": [ + { + "kind": "text", + "text": " One terminal host process is spawned per parent replica (e.g. " + }, + { + "kind": "code", + "text": "WithReplicas(3).WithTerminal()" + }, + { + "kind": "text", + "text": " → 3 terminal host processes named " + }, + { + "kind": "code", + "text": "{parent}-terminalhost-0" + }, + { + "kind": "text", + "text": " .. " + }, + { + "kind": "code", + "text": "{parent}-terminalhost-2" + }, + { + "kind": "text", + "text": "). The order of " + }, + { + "kind": "code", + "text": "WithReplicas(...)" + }, + { + "kind": "text", + "text": " and " + }, + { + "kind": "code", + "text": "WithTerminal()" + }, + { + "kind": "text", + "text": " does not matter: the per-replica hosts are materialized during " + }, + { + "kind": "cref", + "value": "T:Aspire.Hosting.ApplicationModel.BeforeStartEvent" + }, + { + "kind": "text", + "text": " after the model is fully built, so the final replica count is always honoured. " + } + ] + } + ], + "returns": [ + { + "kind": "text", + "text": "A reference to the " + }, + { + "kind": "cref", + "value": "T:Aspire.Hosting.ApplicationModel.IResourceBuilder`1" + }, + { + "kind": "text", + "text": " for chaining additional configuration." + } + ], + "parameters": { + "builder": [ + { + "kind": "text", + "text": "The resource builder." + } + ], + "configure": [ + { + "kind": "text", + "text": "An optional callback to configure the terminal options." + } + ] + }, + "typeParameters": { + "T": [ + { + "kind": "text", + "text": "The type of the resource." + } + ] + }, + "examples": [ + { + "code": "\n var agent = builder.AddExecutable(\"agent\", \"my-agent\", \".\")\n .WithTerminal();\n ", + "language": "csharp", + "description": [ + { + "kind": "text", + "text": "Add terminal support to an executable resource:" + } + ] + }, + { + "code": "\n var agent = builder.AddExecutable(\"agent\", \"my-agent\", \".\")\n .WithReplicas(3)\n .WithTerminal(options =>\n {\n options.Columns = 200;\n options.Rows = 50;\n });\n ", + "language": "csharp", + "description": [ + { + "kind": "text", + "text": "Add terminal support with custom dimensions to a multi-replica resource. The order of" + }, + { + "kind": "text", + "text": "WithReplicas" + }, + { + "kind": "text", + "text": "and" + }, + { + "kind": "text", + "text": "WithTerminal" + }, + { + "kind": "text", + "text": "does not matter:" + } + ] + } + ] + }, + "sourceFile": "src/Aspire.Hosting/TerminalResourceBuilderExtensions.cs", + "sourceLines": "70-110" + } + ] + }, { "name": "VolumeNameGenerator", "fullName": "Aspire.Hosting.VolumeNameGenerator", @@ -37552,7 +39234,7 @@ }, { "kind": "codeblock", - "text": "\n var builder = DistributedApplication.CreateBuilder(args);\n builder.Eventing.Subscribe(async (@event, cancellationToken) => {\n var appModel = @event.ServiceProvider.GetRequiredService();\n // Update configuration of resource based on final endpoint configuration\n });\n ", + "text": "\n var builder = DistributedApplication.CreateBuilder(args);\n builder.Eventing.Subscribe(async (@event, cancellationToken) => {\n var appModel = @event.Services.GetRequiredService();\n // Update configuration of resource based on final endpoint configuration\n });\n ", "language": "csharp" } ], @@ -37672,7 +39354,7 @@ }, { "kind": "codeblock", - "text": "\n var builder = DistributedApplication.CreateBuilder(args);\n builder.Eventing.Subscribe(async (@event, cancellationToken) => {\n var appModel = @event.ServiceProvider.GetRequiredService();\n // Update configuration of resource based on final endpoint configuration\n });\n ", + "text": "\n var builder = DistributedApplication.CreateBuilder(args);\n builder.Eventing.Subscribe(async (@event, cancellationToken) => {\n var appModel = @event.Services.GetRequiredService();\n // Update configuration of resource based on final endpoint configuration\n });\n ", "language": "csharp" } ], @@ -37850,7 +39532,7 @@ }, "examples": [ { - "code": "\n var builder = DistributedApplication.CreateBuilder(args);\n builder.Eventing.Subscribe(async (@event, cancellationToken) => {\n var appModel = @event.ServiceProvider.GetRequiredService();\n // Run post startup logic.\n });\n ", + "code": "\n var builder = DistributedApplication.CreateBuilder(args);\n builder.Eventing.Subscribe(async (@event, cancellationToken) => {\n var appModel = @event.Services.GetRequiredService();\n // Run post startup logic.\n });\n ", "language": "csharp", "description": [ { @@ -37969,7 +39651,7 @@ }, "examples": [ { - "code": "\n var builder = DistributedApplication.CreateBuilder(args);\n builder.Eventing.Subscribe(async (@event, cancellationToken) => {\n var appModel = @event.ServiceProvider.GetRequiredService();\n // Run post startup logic.\n });\n ", + "code": "\n var builder = DistributedApplication.CreateBuilder(args);\n builder.Eventing.Subscribe(async (@event, cancellationToken) => {\n var appModel = @event.Services.GetRequiredService();\n // Run post startup logic.\n });\n ", "language": "csharp", "description": [ { @@ -38924,7 +40606,7 @@ }, "examples": [ { - "code": "\n var builder = DistributedApplication.CreateBuilder(args);\n builder.Eventing.Subscribe(async (@event, cancellationToken) => {\n var appModel = @event.ServiceProvider.GetRequiredService();\n // Mutate the distributed application model.\n });\n ", + "code": "\n var builder = DistributedApplication.CreateBuilder(args);\n builder.Eventing.Subscribe(async (@event, cancellationToken) => {\n var appModel = @event.Services.GetRequiredService();\n // Mutate the distributed application model.\n });\n ", "language": "csharp", "description": [ { @@ -39043,7 +40725,7 @@ }, "examples": [ { - "code": "\n var builder = DistributedApplication.CreateBuilder(args);\n builder.Eventing.Subscribe(async (@event, cancellationToken) => {\n var appModel = @event.ServiceProvider.GetRequiredService();\n // Mutate the distributed application model.\n });\n ", + "code": "\n var builder = DistributedApplication.CreateBuilder(args);\n builder.Eventing.Subscribe(async (@event, cancellationToken) => {\n var appModel = @event.Services.GetRequiredService();\n // Mutate the distributed application model.\n });\n ", "language": "csharp", "description": [ { @@ -40388,7 +42070,7 @@ } ], "sourceFile": "src/Aspire.Hosting/ApplicationModel/CertificateTrustExecutionConfigurationGatherer.cs", - "sourceLines": "156-156", + "sourceLines": "159-159", "members": [ { "name": ".ctor", @@ -40504,7 +42186,7 @@ } ], "sourceFile": "src/Aspire.Hosting/ApplicationModel/CertificateTrustExecutionConfigurationGatherer.cs", - "sourceLines": "133-133", + "sourceLines": "136-136", "members": [ { "name": ".ctor", @@ -40513,7 +42195,7 @@ "signature": "public CertificateTrustExecutionConfigurationData.CertificateTrustExecutionConfigurationData()", "returnType": "void", "sourceFile": "src/Aspire.Hosting/ApplicationModel/CertificateTrustExecutionConfigurationGatherer.cs", - "sourceLines": "143-148" + "sourceLines": "146-151" }, { "name": "Certificates", @@ -40531,7 +42213,7 @@ ] }, "sourceFile": "src/Aspire.Hosting/ApplicationModel/CertificateTrustExecutionConfigurationGatherer.cs", - "sourceLines": "143-143" + "sourceLines": "146-146" }, { "name": "CustomBundlesFactories", @@ -40557,7 +42239,7 @@ ] }, "sourceFile": "src/Aspire.Hosting/ApplicationModel/CertificateTrustExecutionConfigurationGatherer.cs", - "sourceLines": "148-148" + "sourceLines": "151-151" }, { "name": "Scope", @@ -41017,7 +42699,7 @@ } ], "sourceFile": "src/Aspire.Hosting/ApplicationModel/CommandOptions.cs", - "sourceLines": "15-15", + "sourceLines": "11-11", "members": [ { "name": ".ctor", @@ -41026,7 +42708,7 @@ "signature": "public CommandOptions.CommandOptions()", "returnType": "void", "sourceFile": "src/Aspire.Hosting/ApplicationModel/CommandOptions.cs", - "sourceLines": "17-74" + "sourceLines": "13-68" }, { "name": "Arguments", @@ -41036,17 +42718,6 @@ "returnType": "System.Collections.Generic.IReadOnlyList", "hasGet": true, "hasSet": true, - "attributes": [ - { - "name": "System.Diagnostics.CodeAnalysis.ExperimentalAttribute", - "constructorArguments": [ - "ASPIREINTERACTION001" - ], - "arguments": { - "UrlFormat": "https://aka.ms/aspire/diagnostics/{0}" - } - } - ], "docs": { "summary": [ { @@ -41205,6 +42876,85 @@ }, "sourceFile": "src/Aspire.Hosting/ApplicationModel/CommandOptions.cs" }, + { + "name": "Progress", + "kind": "property", + "accessibility": "public", + "signature": "public CommandProgressOptions? CommandOptions.Progress", + "returnType": "Aspire.Hosting.ApplicationModel.CommandProgressOptions?", + "isReturnNullable": true, + "hasGet": true, + "hasSet": true, + "docs": { + "summary": [ + { + "kind": "text", + "text": " Gets or sets options for displaying a progress dialog while the command is executing. " + } + ], + "remarks": [ + { + "kind": "para", + "children": [ + { + "kind": "text", + "text": " When " + }, + { + "kind": "cref", + "value": "P:Aspire.Hosting.ApplicationModel.CommandProgressOptions.Message" + }, + { + "kind": "text", + "text": " is not " + }, + { + "kind": "langword", + "value": "null" + }, + { + "kind": "text", + "text": " or empty, a progress dialog is automatically shown while the command callback executes. The dialog closes when the command completes. " + } + ] + }, + { + "kind": "para", + "children": [ + { + "kind": "text", + "text": " When " + }, + { + "kind": "langword", + "value": "null" + }, + { + "kind": "text", + "text": ", or when " + }, + { + "kind": "cref", + "value": "P:Aspire.Hosting.ApplicationModel.CommandProgressOptions.Message" + }, + { + "kind": "text", + "text": " is " + }, + { + "kind": "langword", + "value": "null" + }, + { + "kind": "text", + "text": " or empty, no progress dialog is shown and the command executes without visual feedback. " + } + ] + } + ] + }, + "sourceFile": "src/Aspire.Hosting/ApplicationModel/CommandOptions.cs" + }, { "name": "UpdateState", "kind": "property", @@ -41247,17 +42997,6 @@ "isReturnNullable": true, "hasGet": true, "hasSet": true, - "attributes": [ - { - "name": "System.Diagnostics.CodeAnalysis.ExperimentalAttribute", - "constructorArguments": [ - "ASPIREINTERACTION001" - ], - "arguments": { - "UrlFormat": "https://aka.ms/aspire/diagnostics/{0}" - } - } - ], "docs": { "summary": [ { @@ -41345,6 +43084,138 @@ } ] }, + { + "name": "CommandProgressOptions", + "fullName": "Aspire.Hosting.ApplicationModel.CommandProgressOptions", + "namespace": "Aspire.Hosting.ApplicationModel", + "kind": "class", + "accessibility": "public", + "isSealed": true, + "docs": { + "summary": [ + { + "kind": "text", + "text": " Options for displaying a progress dialog while a command is executing. " + } + ] + }, + "attributes": [ + { + "name": "Aspire.Hosting.AspireDtoAttribute" + } + ], + "sourceFile": "src/Aspire.Hosting/ApplicationModel/CommandOptions.cs", + "sourceLines": "117-117", + "members": [ + { + "name": ".ctor", + "kind": "constructor", + "accessibility": "public", + "signature": "public CommandProgressOptions.CommandProgressOptions()", + "returnType": "void" + }, + { + "name": "HideCancelButton", + "kind": "property", + "accessibility": "public", + "signature": "public bool CommandProgressOptions.HideCancelButton", + "returnType": "bool", + "hasGet": true, + "hasSet": true, + "docs": { + "summary": [ + { + "kind": "text", + "text": " Gets or sets a value indicating whether the cancel button is hidden in the progress dialog. " + } + ], + "remarks": [ + { + "kind": "text", + "text": " When " + }, + { + "kind": "langword", + "value": "false" + }, + { + "kind": "text", + "text": " (the default), a cancel button is shown. Clicking it cancels the command via the " + }, + { + "kind": "cref", + "value": "P:Aspire.Hosting.ApplicationModel.ExecuteCommandContext.CancellationToken" + }, + { + "kind": "text", + "text": ". When " + }, + { + "kind": "langword", + "value": "true" + }, + { + "kind": "text", + "text": ", no cancel button is displayed and the user cannot cancel the operation from the dialog. " + } + ] + }, + "sourceFile": "src/Aspire.Hosting/ApplicationModel/CommandOptions.cs" + }, + { + "name": "Message", + "kind": "property", + "accessibility": "public", + "signature": "public string? CommandProgressOptions.Message", + "returnType": "string?", + "isReturnNullable": true, + "hasGet": true, + "hasSet": true, + "docs": { + "summary": [ + { + "kind": "text", + "text": " Gets or sets the message to display in the progress dialog. " + } + ], + "remarks": [ + { + "kind": "text", + "text": " When not " + }, + { + "kind": "langword", + "value": "null" + }, + { + "kind": "text", + "text": " or empty, a progress dialog is displayed while the command executes. " + } + ] + }, + "sourceFile": "src/Aspire.Hosting/ApplicationModel/CommandOptions.cs" + }, + { + "name": "Title", + "kind": "property", + "accessibility": "public", + "signature": "public string? CommandProgressOptions.Title", + "returnType": "string?", + "isReturnNullable": true, + "hasGet": true, + "hasSet": true, + "docs": { + "summary": [ + { + "kind": "text", + "text": " Gets or sets the optional title of the progress dialog. " + } + ] + }, + "sourceFile": "src/Aspire.Hosting/ApplicationModel/CommandOptions.cs" + } + ] + }, { "name": "CommandResultData", "fullName": "Aspire.Hosting.ApplicationModel.CommandResultData", @@ -41366,7 +43237,7 @@ } ], "sourceFile": "src/Aspire.Hosting/ApplicationModel/ResourceCommandAnnotation.cs", - "sourceLines": "337-337", + "sourceLines": "340-340", "members": [ { "name": ".ctor", @@ -41508,7 +43379,7 @@ ] }, "sourceFile": "src/Aspire.Hosting/ApplicationModel/ResourceCommandAnnotation.cs", - "sourceLines": "214-214", + "sourceLines": "217-217", "members": [ { "name": "Canceled", @@ -41526,7 +43397,7 @@ ] }, "sourceFile": "src/Aspire.Hosting/ApplicationModel/ResourceCommandAnnotation.cs", - "sourceLines": "279-279" + "sourceLines": "282-282" }, { "name": "Failure", @@ -41560,7 +43431,7 @@ } }, "sourceFile": "src/Aspire.Hosting/ApplicationModel/ResourceCommandAnnotation.cs", - "sourceLines": "259-259" + "sourceLines": "262-262" }, { "name": "Failure", @@ -41622,7 +43493,7 @@ } }, "sourceFile": "src/Aspire.Hosting/ApplicationModel/ResourceCommandAnnotation.cs", - "sourceLines": "267-267" + "sourceLines": "270-270" }, { "name": "Failure", @@ -41664,7 +43535,7 @@ } }, "sourceFile": "src/Aspire.Hosting/ApplicationModel/ResourceCommandAnnotation.cs", - "sourceLines": "274-274" + "sourceLines": "277-277" }, { "name": "Failure", @@ -41712,7 +43583,7 @@ } }, "sourceFile": "src/Aspire.Hosting/ApplicationModel/ResourceCommandAnnotation.cs", - "sourceLines": "285-285" + "sourceLines": "288-288" }, { "name": "Success", @@ -41730,7 +43601,7 @@ ] }, "sourceFile": "src/Aspire.Hosting/ApplicationModel/ResourceCommandAnnotation.cs", - "sourceLines": "219-219" + "sourceLines": "222-222" }, { "name": "Success", @@ -41754,7 +43625,7 @@ ] }, "sourceFile": "src/Aspire.Hosting/ApplicationModel/ResourceCommandAnnotation.cs", - "sourceLines": "224-224" + "sourceLines": "227-227" }, { "name": "Success", @@ -41816,7 +43687,7 @@ } }, "sourceFile": "src/Aspire.Hosting/ApplicationModel/ResourceCommandAnnotation.cs", - "sourceLines": "232-232" + "sourceLines": "235-235" }, { "name": "Success", @@ -41908,7 +43779,7 @@ } }, "sourceFile": "src/Aspire.Hosting/ApplicationModel/ResourceCommandAnnotation.cs", - "sourceLines": "246-246" + "sourceLines": "249-249" }, { "name": "Success", @@ -41950,7 +43821,7 @@ } }, "sourceFile": "src/Aspire.Hosting/ApplicationModel/ResourceCommandAnnotation.cs", - "sourceLines": "253-253" + "sourceLines": "256-256" } ] }, @@ -42575,10 +44446,16 @@ "arguments": { "UrlFormat": "https://aka.ms/aspire/diagnostics/{0}" } + }, + { + "name": "Aspire.Hosting.AspireExportAttribute", + "arguments": { + "ExposeProperties": "True" + } } ], "sourceFile": "src/Aspire.Hosting/ApplicationModel/ContainerBuildOptionsCallbackAnnotation.cs", - "sourceLines": "40-40", + "sourceLines": "41-41", "members": [ { "name": ".ctor", @@ -42657,7 +44534,7 @@ } }, "sourceFile": "src/Aspire.Hosting/ApplicationModel/ContainerBuildOptionsCallbackAnnotation.cs", - "sourceLines": "50-62" + "sourceLines": "51-63" }, { "name": "CancellationToken", @@ -42675,7 +44552,7 @@ ] }, "sourceFile": "src/Aspire.Hosting/ApplicationModel/ContainerBuildOptionsCallbackAnnotation.cs", - "sourceLines": "82-82" + "sourceLines": "83-83" }, { "name": "Destination", @@ -42742,7 +44619,7 @@ ] }, "sourceFile": "src/Aspire.Hosting/ApplicationModel/ContainerBuildOptionsCallbackAnnotation.cs", - "sourceLines": "92-92" + "sourceLines": "93-93" }, { "name": "ImageFormat", @@ -42817,7 +44694,7 @@ ] }, "sourceFile": "src/Aspire.Hosting/ApplicationModel/ContainerBuildOptionsCallbackAnnotation.cs", - "sourceLines": "77-77" + "sourceLines": "78-78" }, { "name": "OutputPath", @@ -42854,7 +44731,7 @@ ] }, "sourceFile": "src/Aspire.Hosting/ApplicationModel/ContainerBuildOptionsCallbackAnnotation.cs", - "sourceLines": "67-67" + "sourceLines": "68-68" }, { "name": "Services", @@ -42872,7 +44749,7 @@ ] }, "sourceFile": "src/Aspire.Hosting/ApplicationModel/ContainerBuildOptionsCallbackAnnotation.cs", - "sourceLines": "72-72" + "sourceLines": "73-73" }, { "name": "TargetPlatform", @@ -43042,7 +44919,7 @@ ] }, "sourceFile": "src/Aspire.Hosting/ApplicationModel/ContainerFileSystemCallbackAnnotation.cs", - "sourceLines": "94-94", + "sourceLines": "100-100", "members": [ { "name": ".ctor", @@ -43051,7 +44928,7 @@ "signature": "public ContainerDirectory.ContainerDirectory()", "returnType": "void", "sourceFile": "src/Aspire.Hosting/ApplicationModel/ContainerFileSystemCallbackAnnotation.cs", - "sourceLines": "99-99" + "sourceLines": "105-105" }, { "name": "GetFileSystemItemsFromPath", @@ -43160,7 +45037,7 @@ ] }, "sourceFile": "src/Aspire.Hosting/ApplicationModel/ContainerFileSystemCallbackAnnotation.cs", - "sourceLines": "135-222" + "sourceLines": "141-228" }, { "name": "Entries", @@ -43242,7 +45119,7 @@ ] }, "sourceFile": "src/Aspire.Hosting/ApplicationModel/ContainerFileSystemCallbackAnnotation.cs", - "sourceLines": "54-54", + "sourceLines": "60-60", "members": [ { "name": "Contents", @@ -43467,7 +45344,7 @@ ] }, "sourceFile": "src/Aspire.Hosting/ApplicationModel/ContainerFileSystemCallbackAnnotation.cs", - "sourceLines": "230-230", + "sourceLines": "236-236", "members": [ { "name": ".ctor", @@ -43612,8 +45489,13 @@ } ] }, + "attributes": [ + { + "name": "Aspire.Hosting.AspireExportAttribute" + } + ], "sourceFile": "src/Aspire.Hosting/ApplicationModel/ContainerFileSystemCallbackAnnotation.cs", - "sourceLines": "269-269", + "sourceLines": "276-276", "members": [ { "name": ".ctor", @@ -43640,6 +45522,12 @@ "arguments": { "UrlFormat": "https://aka.ms/aspire/diagnostics/{0}" } + }, + { + "name": "Aspire.Hosting.AspireExportIgnoreAttribute", + "arguments": { + "Reason": "HttpsCertificateContext is an experimental certificate-specific type that is not yet part of the ATS surface." + } } ], "docs": { @@ -43661,6 +45549,11 @@ "hasGet": true, "hasSet": true, "isInitOnly": true, + "attributes": [ + { + "name": "Aspire.Hosting.AspireExportAttribute" + } + ], "docs": { "summary": [ { @@ -43680,6 +45573,46 @@ "hasGet": true, "hasSet": true, "isInitOnly": true, + "attributes": [ + { + "name": "System.ObsoleteAttribute", + "constructorArguments": [ + "Use Services instead." + ] + } + ], + "docs": { + "summary": [ + { + "kind": "text", + "text": " A " + }, + { + "kind": "cref", + "value": "T:System.IServiceProvider" + }, + { + "kind": "text", + "text": " that can be used to resolve services in the callback. " + } + ] + }, + "sourceFile": "src/Aspire.Hosting/ApplicationModel/ContainerFileSystemCallbackAnnotation.cs" + }, + { + "name": "Services", + "kind": "property", + "accessibility": "public", + "signature": "public IServiceProvider ContainerFileSystemCallbackContext.Services", + "returnType": "System.IServiceProvider", + "hasGet": true, + "hasSet": true, + "isInitOnly": true, + "attributes": [ + { + "name": "Aspire.Hosting.AspireExportAttribute" + } + ], "docs": { "summary": [ { @@ -43735,7 +45668,7 @@ } ], "sourceFile": "src/Aspire.Hosting/ApplicationModel/ContainerFileSystemCallbackAnnotation.cs", - "sourceLines": "292-292", + "sourceLines": "450-450", "members": [ { "name": ".ctor", @@ -43763,6 +45696,25 @@ }, "sourceFile": "src/Aspire.Hosting/ApplicationModel/ContainerFileSystemCallbackAnnotation.cs" }, + { + "name": "CertificateWithKeyPath", + "kind": "property", + "accessibility": "public", + "signature": "public ReferenceExpression ContainerFileSystemCallbackHttpsCertificateContext.CertificateWithKeyPath", + "returnType": "Aspire.Hosting.ApplicationModel.ReferenceExpression", + "hasGet": true, + "hasSet": true, + "isInitOnly": true, + "docs": { + "summary": [ + { + "kind": "text", + "text": " A reference expression that resolves to the path to the server authentication certificate and key combined in a single PEM file inside the container. Use GetValueAsync to resolve the path. " + } + ] + }, + "sourceFile": "src/Aspire.Hosting/ApplicationModel/ContainerFileSystemCallbackAnnotation.cs" + }, { "name": "KeyPath", "kind": "property", @@ -43836,10 +45788,29 @@ "kind": "text", "text": " Represents a base class for file system entries in a container. " } + ], + "remarks": [ + { + "kind": "text", + "text": " Exported to ATS as an opaque handle type. Polyglot AppHosts never construct or inspect these directly; they create concrete entries through the factory methods on " + }, + { + "kind": "cref", + "value": "T:Aspire.Hosting.ApplicationModel.ContainerFileSystemCallbackContext" + }, + { + "kind": "text", + "text": " and pass the resulting handles back via the callback. " + } ] }, + "attributes": [ + { + "name": "Aspire.Hosting.AspireExportAttribute" + } + ], "sourceFile": "src/Aspire.Hosting/ApplicationModel/ContainerFileSystemCallbackAnnotation.cs", - "sourceLines": "12-12", + "sourceLines": "18-18", "members": [ { "name": "Group", @@ -46327,7 +48298,7 @@ ] }, "sourceFile": "src/Aspire.Hosting/ApplicationModel/CustomResourceSnapshot.cs", - "sourceLines": "16-16", + "sourceLines": "17-17", "members": [ { "name": ".ctor", @@ -46336,7 +48307,7 @@ "signature": "public CustomResourceSnapshot.CustomResourceSnapshot()", "returnType": "void", "sourceFile": "src/Aspire.Hosting/ApplicationModel/CustomResourceSnapshot.cs", - "sourceLines": "18-124" + "sourceLines": "19-125" }, { "name": "$", @@ -47031,6 +49002,412 @@ } ] }, + { + "name": "DebugSupportExtensions", + "fullName": "Aspire.Hosting.ApplicationModel.DebugSupportExtensions", + "namespace": "Aspire.Hosting.ApplicationModel", + "kind": "class", + "accessibility": "public", + "isStatic": true, + "docs": { + "summary": [ + { + "kind": "text", + "text": " Extension methods for inspecting whether a resource will be launched by an IDE or extension host for debugging rather than started as a plain process by Aspire. " + } + ] + }, + "attributes": [ + { + "name": "System.Diagnostics.CodeAnalysis.ExperimentalAttribute", + "constructorArguments": [ + "ASPIREEXTENSION001" + ], + "arguments": { + "UrlFormat": "https://aka.ms/aspire/diagnostics/{0}" + } + } + ], + "sourceFile": "src/Aspire.Hosting/ApplicationModel/DebugSupportExtensions.cs", + "sourceLines": "17-17", + "members": [ + { + "name": "CreateLaunchConfigurationAsync", + "kind": "method", + "accessibility": "public", + "signature": "public static Task DebugSupportExtensions.CreateLaunchConfigurationAsync(this IResource resource, string mode, CancellationToken cancellationToken = default(CancellationToken))", + "returnType": "System.Threading.Tasks.Task", + "isStatic": true, + "isExtension": true, + "parameters": [ + { + "name": "resource", + "type": "Aspire.Hosting.ApplicationModel.IResource", + "modifier": "this" + }, + { + "name": "mode", + "type": "string" + }, + { + "name": "cancellationToken", + "type": "System.Threading.CancellationToken", + "isOptional": true + } + ], + "attributes": [ + { + "name": "Aspire.Hosting.AspireExportIgnoreAttribute", + "arguments": { + "Reason": "Debug support inspection is a local .NET helper and is not part of the ATS surface." + } + } + ], + "docs": { + "summary": [ + { + "kind": "text", + "text": " Creates the launch configuration that this resource sends to the IDE for the given launch mode. " + } + ], + "remarks": [ + { + "kind": "para", + "children": [ + { + "kind": "text", + "text": " Launch configuration is created by invoking the producer callback passed to " + }, + { + "kind": "cref", + "value": "M:Aspire.Hosting.ResourceBuilderExtensions.WithDebugSupport``2(Aspire.Hosting.ApplicationModel.IResourceBuilder{``0},System.Func{System.String,``1},System.String)" + }, + { + "kind": "text", + "text": " (or its asynchronous overload), which owns the complete configuration; Aspire serializes the result as-is. The configuration is produced fresh on each call; it is not a singleton. Aspire may call the producer several times for the same resource. " + } + ] + }, + { + "kind": "para", + "children": [ + { + "kind": "text", + "text": " This describes the launch configuration itself, not whether one is going to be used. Depending on how the application is started, or how a resource is configured, Aspire may or may not run the resource under a debugger. Use " + }, + { + "kind": "cref", + "value": "M:Aspire.Hosting.ApplicationModel.DebugSupportExtensions.SupportsDebugging(Aspire.Hosting.ApplicationModel.IResource,Microsoft.Extensions.Configuration.IConfiguration,Aspire.Hosting.ApplicationModel.SupportsDebuggingAnnotation@)" + }, + { + "kind": "text", + "text": " to test for that. " + } + ] + } + ], + "returns": [ + { + "kind": "text", + "text": "The launch configuration, typically an " + }, + { + "kind": "cref", + "value": "T:Aspire.Hosting.ApplicationModel.ExecutableLaunchConfiguration" + }, + { + "kind": "text", + "text": "." + } + ], + "parameters": { + "cancellationToken": [ + { + "kind": "text", + "text": "A token to cancel the operation." + } + ], + "mode": [ + { + "kind": "text", + "text": "The launch mode, one of the values on " + }, + { + "kind": "cref", + "value": "T:Aspire.Hosting.ApplicationModel.ExecutableLaunchMode" + }, + { + "kind": "text", + "text": "." + } + ], + "resource": [ + { + "kind": "text", + "text": "The resource to inspect. It must carry a " + }, + { + "kind": "cref", + "value": "T:Aspire.Hosting.ApplicationModel.SupportsDebuggingAnnotation" + }, + { + "kind": "text", + "text": "." + } + ] + }, + "exceptions": [ + { + "type": "T:System.InvalidOperationException", + "description": [ + { + "kind": "text", + "text": "The resource does not declare debug launch support." + } + ] + } + ] + }, + "sourceFile": "src/Aspire.Hosting/ApplicationModel/DebugSupportExtensions.cs", + "sourceLines": "124-135" + }, + { + "name": "HasLaunchToolArgsOwnedBy", + "kind": "method", + "accessibility": "public", + "signature": "public static bool DebugSupportExtensions.HasLaunchToolArgsOwnedBy(this IResource resource, SupportsDebuggingAnnotation supportsDebuggingAnnotation)", + "returnType": "bool", + "isStatic": true, + "isExtension": true, + "parameters": [ + { + "name": "resource", + "type": "Aspire.Hosting.ApplicationModel.IResource", + "modifier": "this" + }, + { + "name": "supportsDebuggingAnnotation", + "type": "Aspire.Hosting.ApplicationModel.SupportsDebuggingAnnotation" + } + ], + "attributes": [ + { + "name": "Aspire.Hosting.AspireExportIgnoreAttribute", + "arguments": { + "Reason": "Debug support inspection is a local .NET helper and is not part of the ATS surface." + } + } + ], + "docs": { + "summary": [ + { + "kind": "text", + "text": " Determines whether the launch configuration performs the resource's tool invocation itself, meaning the resource's launch tool arguments must not also be passed to the launched program. " + } + ], + "remarks": [ + { + "kind": "text", + "text": " This is " + }, + { + "kind": "langword", + "value": "false" + }, + { + "kind": "text", + "text": " for a resource whose launch tool arguments declare no owning launch configuration type, because such a prefix is always passed to the program. " + } + ], + "returns": [ + { + "kind": "langword", + "value": "true" + }, + { + "kind": "text", + "text": " when the launch configuration supplies the tool invocation; otherwise, " + }, + { + "kind": "langword", + "value": "false" + }, + { + "kind": "text", + "text": "." + } + ], + "parameters": { + "resource": [ + { + "kind": "text", + "text": "The resource to inspect." + } + ], + "supportsDebuggingAnnotation": [ + { + "kind": "text", + "text": "The launch configuration annotation to compare." + } + ] + } + }, + "sourceFile": "src/Aspire.Hosting/ApplicationModel/DebugSupportExtensions.cs", + "sourceLines": "90-95" + }, + { + "name": "SupportsDebugging", + "kind": "method", + "accessibility": "public", + "signature": "public static bool DebugSupportExtensions.SupportsDebugging(this IResource resource, IConfiguration configuration, out SupportsDebuggingAnnotation? supportsDebuggingAnnotation)", + "returnType": "bool", + "isStatic": true, + "isExtension": true, + "parameters": [ + { + "name": "resource", + "type": "Aspire.Hosting.ApplicationModel.IResource", + "modifier": "this" + }, + { + "name": "configuration", + "type": "Microsoft.Extensions.Configuration.IConfiguration" + }, + { + "name": "supportsDebuggingAnnotation", + "type": "Aspire.Hosting.ApplicationModel.SupportsDebuggingAnnotation?", + "isNullable": true, + "modifier": "out" + } + ], + "attributes": [ + { + "name": "Aspire.Hosting.AspireExportIgnoreAttribute", + "arguments": { + "Reason": "Debug support inspection is a local .NET helper and is not part of the ATS surface." + } + } + ], + "docs": { + "summary": [ + { + "kind": "text", + "text": " Determines whether the resource will be launched by the IDE for debugging in the current session. " + } + ], + "remarks": [ + { + "kind": "para", + "children": [ + { + "kind": "text", + "text": " Integrations use this to decide whether to build a runnable command line for the resource. When the IDE launches the resource, arguments such as " + }, + { + "kind": "code", + "text": "dotnet run --project …" + }, + { + "kind": "text", + "text": " or " + }, + { + "kind": "code", + "text": "go run …" + }, + { + "kind": "text", + "text": " are supplied by the IDE instead and must not be produced by the integration. " + } + ] + }, + { + "kind": "para", + "children": [ + { + "kind": "text", + "text": " A resource is only considered debuggable when it carries a " + }, + { + "kind": "cref", + "value": "T:Aspire.Hosting.ApplicationModel.SupportsDebuggingAnnotation" + }, + { + "kind": "text", + "text": ", a debug session is active, the resource is not forced to process execution, it does not have a persistent lifetime, and the IDE advertised support for the annotation's launch configuration type. " + } + ] + }, + { + "kind": "para", + "children": [ + { + "kind": "text", + "text": " Exception: when the active debug session did not advertise any launch configuration types at all (for example Visual Studio, which does not send a capability list), a resource whose launch configuration type is " + }, + { + "kind": "cref", + "value": "F:Aspire.Hosting.ApplicationModel.KnownLaunchConfigurationTypes.Project" + }, + { + "kind": "text", + "text": " is treated as implicitly supported rather than falling back to plain process execution. " + } + ] + } + ], + "returns": [ + { + "kind": "langword", + "value": "true" + }, + { + "kind": "text", + "text": " when the IDE owns launching this resource; otherwise " + }, + { + "kind": "langword", + "value": "false" + }, + { + "kind": "text", + "text": "." + } + ], + "parameters": { + "configuration": [ + { + "kind": "text", + "text": "The AppHost configuration, used to detect the active debug session and its capabilities." + } + ], + "resource": [ + { + "kind": "text", + "text": "The resource to inspect." + } + ], + "supportsDebuggingAnnotation": [ + { + "kind": "text", + "text": "When this method returns " + }, + { + "kind": "langword", + "value": "true" + }, + { + "kind": "text", + "text": ", the annotation describing how the resource is launched." + } + ] + } + }, + "sourceFile": "src/Aspire.Hosting/ApplicationModel/DebugSupportExtensions.cs", + "sourceLines": "47-73" + } + ] + }, { "name": "DefaultLaunchProfileAnnotation", "fullName": "Aspire.Hosting.ApplicationModel.DefaultLaunchProfileAnnotation", @@ -48977,7 +51354,7 @@ } ], "sourceFile": "src/Aspire.Hosting/ApplicationModel/DotnetToolResource.cs", - "sourceLines": "18-18", + "sourceLines": "20-20", "members": [ { "name": ".ctor", @@ -49026,7 +51403,7 @@ } }, "sourceFile": "src/Aspire.Hosting/ApplicationModel/DotnetToolResource.cs", - "sourceLines": "26-30" + "sourceLines": "28-32" } ] }, @@ -49613,7 +51990,7 @@ ] }, "sourceFile": "src/Aspire.Hosting/ApplicationModel/EndpointAnnotation.cs", - "sourceLines": "385-385" + "sourceLines": "390-390" }, { "name": "AllocatedEndpoint", @@ -49682,7 +52059,7 @@ ] }, "sourceFile": "src/Aspire.Hosting/ApplicationModel/EndpointAnnotation.cs", - "sourceLines": "380-380" + "sourceLines": "385-385" }, { "name": "DefaultNetworkID", @@ -49700,7 +52077,7 @@ ] }, "sourceFile": "src/Aspire.Hosting/ApplicationModel/EndpointAnnotation.cs", - "sourceLines": "336-336" + "sourceLines": "341-341" }, { "name": "ExcludeReferenceEndpoint", @@ -52687,7 +55064,7 @@ } }, "sourceFile": "src/Aspire.Hosting/ApplicationModel/CustomResourceSnapshot.cs", - "sourceLines": "193-193", + "sourceLines": "339-339", "members": [ { "name": ".ctor", @@ -52739,7 +55116,7 @@ } }, "sourceFile": "src/Aspire.Hosting/ApplicationModel/CustomResourceSnapshot.cs", - "sourceLines": "193-193" + "sourceLines": "339-339" }, { "name": "$", @@ -53117,6 +55494,323 @@ } ] }, + { + "name": "ExecutableLaunchConfiguration", + "fullName": "Aspire.Hosting.ApplicationModel.ExecutableLaunchConfiguration", + "namespace": "Aspire.Hosting.ApplicationModel", + "kind": "class", + "accessibility": "public", + "docs": { + "summary": [ + { + "kind": "text", + "text": " Base properties shared by all launch configurations handed to an IDE or extension host. " + } + ], + "remarks": [ + { + "kind": "para", + "children": [ + { + "kind": "text", + "text": " A launch configuration describes how a resource should be started when Aspire is running inside an IDE debug session. It is serialized to JSON and attached to the underlying orchestrator object, so the property names below (and any added by derived types) are part of the IDE contract. " + } + ] + }, + { + "kind": "para", + "children": [ + { + "kind": "text", + "text": " Integrations create a derived type and supply it through " + }, + { + "kind": "cref", + "value": "M:Aspire.Hosting.ResourceBuilderExtensions.WithDebugSupport``2(Aspire.Hosting.ApplicationModel.IResourceBuilder{``0},System.Func{System.String,``1},System.String)" + }, + { + "kind": "text", + "text": " or its asynchronous overload. " + } + ] + } + ], + "parameters": { + "type": [ + { + "kind": "text", + "text": "The launch configuration type identifier, for example " + }, + { + "kind": "cref", + "value": "F:Aspire.Hosting.ApplicationModel.KnownLaunchConfigurationTypes.Project" + }, + { + "kind": "text", + "text": "." + } + ] + }, + "examples": [ + { + "code": "\n internal sealed class ContosoLaunchConfiguration() : ExecutableLaunchConfiguration(\"contoso\")\n {\n [JsonPropertyName(\"script_path\")]\n public string ScriptPath { get; set; } = string.Empty;\n }\n ", + "language": "csharp", + "description": [ + { + "kind": "text", + "text": "A launch configuration for a hypothetical language integration:" + } + ] + } + ] + }, + "attributes": [ + { + "name": "System.Diagnostics.CodeAnalysis.ExperimentalAttribute", + "constructorArguments": [ + "ASPIREEXTENSION001" + ], + "arguments": { + "UrlFormat": "https://aka.ms/aspire/diagnostics/{0}" + } + } + ], + "sourceFile": "src/Aspire.Hosting/ApplicationModel/ExecutableLaunchConfiguration.cs", + "sourceLines": "79-79", + "members": [ + { + "name": ".ctor", + "kind": "constructor", + "accessibility": "public", + "signature": "public ExecutableLaunchConfiguration.ExecutableLaunchConfiguration(string type)", + "returnType": "void", + "parameters": [ + { + "name": "type", + "type": "string" + } + ], + "docs": { + "summary": [ + { + "kind": "text", + "text": " Base properties shared by all launch configurations handed to an IDE or extension host. " + } + ], + "remarks": [ + { + "kind": "para", + "children": [ + { + "kind": "text", + "text": " A launch configuration describes how a resource should be started when Aspire is running inside an IDE debug session. It is serialized to JSON and attached to the underlying orchestrator object, so the property names below (and any added by derived types) are part of the IDE contract. " + } + ] + }, + { + "kind": "para", + "children": [ + { + "kind": "text", + "text": " Integrations create a derived type and supply it through " + }, + { + "kind": "cref", + "value": "M:Aspire.Hosting.ResourceBuilderExtensions.WithDebugSupport``2(Aspire.Hosting.ApplicationModel.IResourceBuilder{``0},System.Func{System.String,``1},System.String)" + }, + { + "kind": "text", + "text": " or its asynchronous overload. " + } + ] + } + ], + "parameters": { + "type": [ + { + "kind": "text", + "text": "The launch configuration type identifier, for example " + }, + { + "kind": "cref", + "value": "F:Aspire.Hosting.ApplicationModel.KnownLaunchConfigurationTypes.Project" + }, + { + "kind": "text", + "text": "." + } + ] + }, + "examples": [ + { + "code": "\n internal sealed class ContosoLaunchConfiguration() : ExecutableLaunchConfiguration(\"contoso\")\n {\n [JsonPropertyName(\"script_path\")]\n public string ScriptPath { get; set; } = string.Empty;\n }\n ", + "language": "csharp", + "description": [ + { + "kind": "text", + "text": "A launch configuration for a hypothetical language integration:" + } + ] + } + ] + }, + "sourceFile": "src/Aspire.Hosting/ApplicationModel/ExecutableLaunchConfiguration.cs", + "sourceLines": "79-97" + }, + { + "name": "Mode", + "kind": "property", + "accessibility": "public", + "signature": "public string ExecutableLaunchConfiguration.Mode", + "returnType": "string", + "hasGet": true, + "hasSet": true, + "docs": { + "summary": [ + { + "kind": "text", + "text": " Gets or sets the launch mode, one of the values on " + }, + { + "kind": "cref", + "value": "T:Aspire.Hosting.ApplicationModel.ExecutableLaunchMode" + }, + { + "kind": "text", + "text": ". " + } + ], + "remarks": [ + { + "kind": "text", + "text": " Defaults to " + }, + { + "kind": "cref", + "value": "F:Aspire.Hosting.ApplicationModel.ExecutableLaunchMode.Debug" + }, + { + "kind": "text", + "text": " when a debugger is attached to the AppHost and " + }, + { + "kind": "cref", + "value": "F:Aspire.Hosting.ApplicationModel.ExecutableLaunchMode.NoDebug" + }, + { + "kind": "text", + "text": " otherwise. The mode requested by the IDE for the current debug session is passed to the producer callback of " + }, + { + "kind": "cref", + "value": "M:Aspire.Hosting.ResourceBuilderExtensions.WithDebugSupport``2(Aspire.Hosting.ApplicationModel.IResourceBuilder{``0},System.Func{System.String,``1},System.String)" + }, + { + "kind": "text", + "text": ". " + } + ] + }, + "sourceFile": "src/Aspire.Hosting/ApplicationModel/ExecutableLaunchConfiguration.cs" + }, + { + "name": "Type", + "kind": "property", + "accessibility": "public", + "signature": "public string ExecutableLaunchConfiguration.Type", + "returnType": "string", + "hasGet": true, + "hasSet": true, + "docs": { + "summary": [ + { + "kind": "text", + "text": " Gets or sets the launch configuration type identifier. " + } + ] + }, + "sourceFile": "src/Aspire.Hosting/ApplicationModel/ExecutableLaunchConfiguration.cs" + } + ] + }, + { + "name": "ExecutableLaunchMode", + "fullName": "Aspire.Hosting.ApplicationModel.ExecutableLaunchMode", + "namespace": "Aspire.Hosting.ApplicationModel", + "kind": "class", + "accessibility": "public", + "isStatic": true, + "docs": { + "summary": [ + { + "kind": "text", + "text": " Well-known launch modes that can be requested when an IDE or extension host launches a resource. " + } + ], + "remarks": [ + { + "kind": "text", + "text": " The value is serialized as the " + }, + { + "kind": "code", + "text": "mode" + }, + { + "kind": "text", + "text": " field of a launch configuration and is interpreted by the IDE (Visual Studio, VS Code) that owns the debug session. " + } + ] + }, + "attributes": [ + { + "name": "System.Diagnostics.CodeAnalysis.ExperimentalAttribute", + "constructorArguments": [ + "ASPIREEXTENSION001" + ], + "arguments": { + "UrlFormat": "https://aka.ms/aspire/diagnostics/{0}" + } + } + ], + "sourceFile": "src/Aspire.Hosting/ApplicationModel/ExecutableLaunchMode.cs", + "members": [ + { + "name": "Debug", + "kind": "field", + "accessibility": "public", + "signature": "public const static string ExecutableLaunchMode.Debug", + "returnType": "string", + "isStatic": true, + "isConst": true, + "docs": { + "summary": [ + { + "kind": "text", + "text": " Launch the resource under the debugger. " + } + ] + } + }, + { + "name": "NoDebug", + "kind": "field", + "accessibility": "public", + "signature": "public const static string ExecutableLaunchMode.NoDebug", + "returnType": "string", + "isStatic": true, + "isConst": true, + "docs": { + "summary": [ + { + "kind": "text", + "text": " Launch the resource without debugging. " + } + ] + } + } + ] + }, { "name": "ExecutableResource", "fullName": "Aspire.Hosting.ApplicationModel.ExecutableResource", @@ -53277,7 +55971,7 @@ } ], "sourceFile": "src/Aspire.Hosting/ApplicationModel/ResourceCommandAnnotation.cs", - "sourceLines": "430-430", + "sourceLines": "443-443", "members": [ { "name": ".ctor", @@ -53399,10 +56093,16 @@ "hasSet": true, "isInitOnly": true, "attributes": [ + { + "name": "System.ObsoleteAttribute", + "constructorArguments": [ + "Use Services instead." + ] + }, { "name": "Aspire.Hosting.AspireExportIgnoreAttribute", "arguments": { - "Reason": "IServiceProvider is not usable from polyglot command callbacks." + "Reason": "Obsolete alias for Services. The service provider is exposed to polyglot hosts via Services (services)." } } ], @@ -53415,6 +56115,25 @@ ] }, "sourceFile": "src/Aspire.Hosting/ApplicationModel/ResourceCommandAnnotation.cs" + }, + { + "name": "Services", + "kind": "property", + "accessibility": "public", + "signature": "public IServiceProvider ExecuteCommandContext.Services", + "returnType": "System.IServiceProvider", + "hasGet": true, + "hasSet": true, + "isInitOnly": true, + "docs": { + "summary": [ + { + "kind": "text", + "text": " The service provider. " + } + ] + }, + "sourceFile": "src/Aspire.Hosting/ApplicationModel/ResourceCommandAnnotation.cs" } ] }, @@ -53447,7 +56166,7 @@ } ], "sourceFile": "src/Aspire.Hosting/ApplicationModel/ResourceCommandAnnotation.cs", - "sourceLines": "292-292", + "sourceLines": "295-295", "members": [ { "name": ".ctor", @@ -55299,7 +58018,7 @@ } }, "sourceFile": "src/Aspire.Hosting/ApplicationModel/CustomResourceSnapshot.cs", - "sourceLines": "319-319", + "sourceLines": "487-487", "members": [ { "name": ".ctor", @@ -55371,7 +58090,7 @@ } }, "sourceFile": "src/Aspire.Hosting/ApplicationModel/CustomResourceSnapshot.cs", - "sourceLines": "319-319" + "sourceLines": "487-487" }, { "name": "$", @@ -55718,6 +58437,162 @@ } ] }, + { + "name": "HiddenAnnotation", + "fullName": "Aspire.Hosting.ApplicationModel.HiddenAnnotation", + "namespace": "Aspire.Hosting.ApplicationModel", + "kind": "class", + "accessibility": "public", + "isSealed": true, + "interfaces": [ + "Aspire.Hosting.ApplicationModel.IResourceAnnotation" + ], + "docs": { + "summary": [ + { + "kind": "text", + "text": " Represents visibility metadata that hides a resource from default resource lists. " + } + ], + "remarks": [ + { + "kind": "text", + "text": " Hidden resources can still be accessed directly by name or included explicitly by tooling that supports showing hidden resources. " + } + ], + "parameters": { + "behavior": [ + { + "kind": "text", + "text": "Specifies when the resource should be hidden." + } + ] + } + }, + "sourceFile": "src/Aspire.Hosting/ApplicationModel/HiddenAnnotation.cs", + "sourceLines": "29-29", + "members": [ + { + "name": ".ctor", + "kind": "constructor", + "accessibility": "public", + "signature": "public HiddenAnnotation.HiddenAnnotation(HiddenBehavior behavior)", + "returnType": "void", + "parameters": [ + { + "name": "behavior", + "type": "Aspire.Hosting.ApplicationModel.HiddenBehavior" + } + ], + "docs": { + "summary": [ + { + "kind": "text", + "text": " Represents visibility metadata that hides a resource from default resource lists. " + } + ], + "remarks": [ + { + "kind": "text", + "text": " Hidden resources can still be accessed directly by name or included explicitly by tooling that supports showing hidden resources. " + } + ], + "parameters": { + "behavior": [ + { + "kind": "text", + "text": "Specifies when the resource should be hidden." + } + ] + } + }, + "sourceFile": "src/Aspire.Hosting/ApplicationModel/HiddenAnnotation.cs", + "sourceLines": "29-39" + }, + { + "name": "Behavior", + "kind": "property", + "accessibility": "public", + "signature": "public HiddenBehavior HiddenAnnotation.Behavior", + "returnType": "Aspire.Hosting.ApplicationModel.HiddenBehavior", + "hasGet": true, + "docs": { + "summary": [ + { + "kind": "text", + "text": " Gets when the resource should be hidden from default resource lists. " + } + ] + }, + "sourceFile": "src/Aspire.Hosting/ApplicationModel/HiddenAnnotation.cs", + "sourceLines": "34-34" + }, + { + "name": "SuccessfulExitCodes", + "kind": "property", + "accessibility": "public", + "signature": "public IReadOnlyList HiddenAnnotation.SuccessfulExitCodes", + "returnType": "System.Collections.Generic.IReadOnlyList", + "hasGet": true, + "hasSet": true, + "isInitOnly": true, + "docs": { + "summary": [ + { + "kind": "text", + "text": " Gets the exit codes that are treated as successful completion when " + }, + { + "kind": "cref", + "value": "P:Aspire.Hosting.ApplicationModel.HiddenAnnotation.Behavior" + }, + { + "kind": "text", + "text": " is " + }, + { + "kind": "cref", + "value": "F:Aspire.Hosting.ApplicationModel.HiddenBehavior.OnCompletion" + }, + { + "kind": "text", + "text": ". " + } + ] + }, + "sourceFile": "src/Aspire.Hosting/ApplicationModel/HiddenAnnotation.cs" + } + ] + }, + { + "name": "HiddenBehavior", + "fullName": "Aspire.Hosting.ApplicationModel.HiddenBehavior", + "namespace": "Aspire.Hosting.ApplicationModel", + "kind": "enum", + "accessibility": "public", + "docs": { + "summary": [ + { + "kind": "text", + "text": " Specifies when a hidden resource should be omitted from default resource lists. " + } + ] + }, + "enumMembers": [ + { + "name": "Always", + "value": 0, + "description": "Always hide the resource from default resource lists." + }, + { + "name": "OnCompletion", + "value": 1, + "description": "Hide the resource from default resource lists only after it completes successfully." + } + ], + "sourceFile": "src/Aspire.Hosting/ApplicationModel/HiddenBehavior.cs", + "members": [] + }, { "name": "HostUrl", "fullName": "Aspire.Hosting.ApplicationModel.HostUrl", @@ -56083,6 +58958,44 @@ "kind": "text", "text": ". " } + ], + "remarks": [ + { + "kind": "text", + "text": " When this property is " + }, + { + "kind": "langword", + "value": "null" + }, + { + "kind": "text", + "text": ", the default " + }, + { + "kind": "cref", + "value": "T:System.Net.Http.HttpClient" + }, + { + "kind": "text", + "text": " is used and its " + }, + { + "kind": "cref", + "value": "P:System.Net.Http.HttpClient.Timeout" + }, + { + "kind": "text", + "text": " is set to " + }, + { + "kind": "cref", + "value": "F:System.Threading.Timeout.InfiniteTimeSpan" + }, + { + "kind": "text", + "text": ". Specify a named client to preserve its configured timeout. " + } ] }, "sourceFile": "src/Aspire.Hosting/ApplicationModel/HttpCommandOptions.cs" @@ -56208,7 +59121,55 @@ "kind": "constructor", "accessibility": "public", "signature": "public HttpCommandRequestContext.HttpCommandRequestContext()", - "returnType": "void" + "returnType": "void", + "sourceFile": "src/Aspire.Hosting/ApplicationModel/HttpCommandContext.cs", + "sourceLines": "58-58" + }, + { + "name": "Arguments", + "kind": "property", + "accessibility": "public", + "signature": "public InteractionInputCollection HttpCommandRequestContext.Arguments", + "returnType": "Aspire.Hosting.InteractionInputCollection", + "hasGet": true, + "hasSet": true, + "isInitOnly": true, + "docs": { + "summary": [ + { + "kind": "text", + "text": " Gets the invocation arguments supplied by the client when the command is executed. " + } + ], + "remarks": [ + { + "kind": "para", + "children": [ + { + "kind": "text", + "text": " The collection contains the arguments described by the command's " + }, + { + "kind": "cref", + "value": "P:Aspire.Hosting.ApplicationModel.CommandOptions.Arguments" + }, + { + "kind": "text", + "text": " with their submitted values populated. CLI positional arguments are mapped by declaration order. Dashboard, MCP, and other named-payload clients are mapped by " + }, + { + "kind": "cref", + "value": "P:Aspire.Hosting.InteractionInput.Name" + }, + { + "kind": "text", + "text": ". " + } + ] + } + ] + }, + "sourceFile": "src/Aspire.Hosting/ApplicationModel/HttpCommandContext.cs" }, { "name": "CancellationToken", @@ -56314,6 +59275,33 @@ "hasGet": true, "hasSet": true, "isInitOnly": true, + "attributes": [ + { + "name": "System.ObsoleteAttribute", + "constructorArguments": [ + "Use Services instead." + ] + } + ], + "docs": { + "summary": [ + { + "kind": "text", + "text": " The service provider. " + } + ] + }, + "sourceFile": "src/Aspire.Hosting/ApplicationModel/HttpCommandContext.cs" + }, + { + "name": "Services", + "kind": "property", + "accessibility": "public", + "signature": "public IServiceProvider HttpCommandRequestContext.Services", + "returnType": "System.IServiceProvider", + "hasGet": true, + "hasSet": true, + "isInitOnly": true, "docs": { "summary": [ { @@ -56366,14 +59354,62 @@ ] }, "sourceFile": "src/Aspire.Hosting/ApplicationModel/HttpCommandContext.cs", - "sourceLines": "49-49", + "sourceLines": "98-98", "members": [ { "name": ".ctor", "kind": "constructor", "accessibility": "public", "signature": "public HttpCommandResultContext.HttpCommandResultContext()", - "returnType": "void" + "returnType": "void", + "sourceFile": "src/Aspire.Hosting/ApplicationModel/HttpCommandContext.cs", + "sourceLines": "145-145" + }, + { + "name": "Arguments", + "kind": "property", + "accessibility": "public", + "signature": "public InteractionInputCollection HttpCommandResultContext.Arguments", + "returnType": "Aspire.Hosting.InteractionInputCollection", + "hasGet": true, + "hasSet": true, + "isInitOnly": true, + "docs": { + "summary": [ + { + "kind": "text", + "text": " Gets the invocation arguments supplied by the client when the command is executed. " + } + ], + "remarks": [ + { + "kind": "para", + "children": [ + { + "kind": "text", + "text": " The collection contains the arguments described by the command's " + }, + { + "kind": "cref", + "value": "P:Aspire.Hosting.ApplicationModel.CommandOptions.Arguments" + }, + { + "kind": "text", + "text": " with their submitted values populated. CLI positional arguments are mapped by declaration order. Dashboard, MCP, and other named-payload clients are mapped by " + }, + { + "kind": "cref", + "value": "P:Aspire.Hosting.InteractionInput.Name" + }, + { + "kind": "text", + "text": ". " + } + ] + } + ] + }, + "sourceFile": "src/Aspire.Hosting/ApplicationModel/HttpCommandContext.cs" }, { "name": "CancellationToken", @@ -56479,6 +59515,33 @@ "hasGet": true, "hasSet": true, "isInitOnly": true, + "attributes": [ + { + "name": "System.ObsoleteAttribute", + "constructorArguments": [ + "Use Services instead." + ] + } + ], + "docs": { + "summary": [ + { + "kind": "text", + "text": " The service provider. " + } + ] + }, + "sourceFile": "src/Aspire.Hosting/ApplicationModel/HttpCommandContext.cs" + }, + { + "name": "Services", + "kind": "property", + "accessibility": "public", + "signature": "public IServiceProvider HttpCommandResultContext.Services", + "returnType": "System.IServiceProvider", + "hasGet": true, + "hasSet": true, + "isInitOnly": true, "docs": { "summary": [ { @@ -56770,10 +59833,13 @@ "arguments": { "UrlFormat": "https://aka.ms/aspire/diagnostics/{0}" } + }, + { + "name": "Aspire.Hosting.AspireExportAttribute" } ], "sourceFile": "src/Aspire.Hosting/ApplicationModel/HttpsCertificateConfigurationCallbackAnnotaion.cs", - "sourceLines": "25-25", + "sourceLines": "26-26", "members": [ { "name": ".ctor", @@ -56833,6 +59899,11 @@ "hasGet": true, "hasSet": true, "isInitOnly": true, + "attributes": [ + { + "name": "Aspire.Hosting.AspireExportAttribute" + } + ], "docs": { "summary": [ { @@ -56860,6 +59931,11 @@ "hasGet": true, "hasSet": true, "isInitOnly": true, + "attributes": [ + { + "name": "Aspire.Hosting.AspireExportAttribute" + } + ], "docs": { "summary": [ { @@ -56870,6 +59946,30 @@ }, "sourceFile": "src/Aspire.Hosting/ApplicationModel/HttpsCertificateConfigurationCallbackAnnotaion.cs" }, + { + "name": "CertificateWithKeyPath", + "kind": "property", + "accessibility": "public", + "signature": "public ReferenceExpression HttpsCertificateConfigurationCallbackAnnotationContext.CertificateWithKeyPath", + "returnType": "Aspire.Hosting.ApplicationModel.ReferenceExpression", + "hasGet": true, + "hasSet": true, + "isInitOnly": true, + "attributes": [ + { + "name": "Aspire.Hosting.AspireExportAttribute" + } + ], + "docs": { + "summary": [ + { + "kind": "text", + "text": " A value provider that will resolve to a path to the certificate and key concatenated together in PEM format. " + } + ] + }, + "sourceFile": "src/Aspire.Hosting/ApplicationModel/HttpsCertificateConfigurationCallbackAnnotaion.cs" + }, { "name": "EnvironmentVariables", "kind": "property", @@ -56921,6 +60021,11 @@ "hasGet": true, "hasSet": true, "isInitOnly": true, + "attributes": [ + { + "name": "Aspire.Hosting.AspireExportAttribute" + } + ], "docs": { "summary": [ { @@ -56948,6 +60053,11 @@ "hasGet": true, "hasSet": true, "isInitOnly": true, + "attributes": [ + { + "name": "Aspire.Hosting.AspireExportAttribute" + } + ], "docs": { "summary": [ { @@ -56968,6 +60078,14 @@ "hasGet": true, "hasSet": true, "isInitOnly": true, + "attributes": [ + { + "name": "Aspire.Hosting.AspireExportIgnoreAttribute", + "arguments": { + "Reason": "Password is typed as IValueProvider, which has no ATS-exported representation and no guaranteed concrete type to expose it as. The certificate paths (exposed as ReferenceExpression) cover the common configuration scenarios." + } + } + ], "docs": { "summary": [ { @@ -56987,6 +60105,11 @@ "hasGet": true, "hasSet": true, "isInitOnly": true, + "attributes": [ + { + "name": "Aspire.Hosting.AspireExportAttribute" + } + ], "docs": { "summary": [ { @@ -57006,6 +60129,11 @@ "hasGet": true, "hasSet": true, "isInitOnly": true, + "attributes": [ + { + "name": "Aspire.Hosting.AspireExportAttribute" + } + ], "docs": { "summary": [ { @@ -57047,7 +60175,7 @@ } ], "sourceFile": "src/Aspire.Hosting/ApplicationModel/HttpsCertificateExecutionConfigurationGatherer.cs", - "sourceLines": "177-177", + "sourceLines": "203-203", "members": [ { "name": ".ctor", @@ -57075,6 +60203,25 @@ }, "sourceFile": "src/Aspire.Hosting/ApplicationModel/HttpsCertificateExecutionConfigurationGatherer.cs" }, + { + "name": "CertificateWithKeyPath", + "kind": "property", + "accessibility": "public", + "signature": "public ReferenceExpression HttpsCertificateExecutionConfigurationContext.CertificateWithKeyPath", + "returnType": "Aspire.Hosting.ApplicationModel.ReferenceExpression", + "hasGet": true, + "hasSet": true, + "isInitOnly": true, + "docs": { + "summary": [ + { + "kind": "text", + "text": " Expression that will resolve to the path of the server authentication certificate and key in a combined PEM file. For containers this will be a path inside the container. " + } + ] + }, + "sourceFile": "src/Aspire.Hosting/ApplicationModel/HttpsCertificateExecutionConfigurationGatherer.cs" + }, { "name": "KeyPath", "kind": "property", @@ -57144,7 +60291,7 @@ } ], "sourceFile": "src/Aspire.Hosting/ApplicationModel/HttpsCertificateExecutionConfigurationGatherer.cs", - "sourceLines": "90-90", + "sourceLines": "92-92", "members": [ { "name": ".ctor", @@ -57172,6 +60319,42 @@ }, "sourceFile": "src/Aspire.Hosting/ApplicationModel/HttpsCertificateExecutionConfigurationGatherer.cs" }, + { + "name": "CertificateWithKeyPathReference", + "kind": "property", + "accessibility": "public", + "signature": "public ReferenceExpression HttpsCertificateExecutionConfigurationData.CertificateWithKeyPathReference", + "returnType": "Aspire.Hosting.ApplicationModel.ReferenceExpression", + "hasGet": true, + "hasSet": true, + "docs": { + "summary": [ + { + "kind": "text", + "text": " Reference expression that will resolve to the path of the server authentication certificate in PFX format. " + } + ] + }, + "sourceFile": "src/Aspire.Hosting/ApplicationModel/HttpsCertificateExecutionConfigurationGatherer.cs" + }, + { + "name": "IsCertificateWithKeyPathReferenced", + "kind": "property", + "accessibility": "public", + "signature": "public bool HttpsCertificateExecutionConfigurationData.IsCertificateWithKeyPathReferenced", + "returnType": "bool", + "hasGet": true, + "docs": { + "summary": [ + { + "kind": "text", + "text": " Indicates whether the certificate-with-key path was actually referenced in the resource configuration. " + } + ] + }, + "sourceFile": "src/Aspire.Hosting/ApplicationModel/HttpsCertificateExecutionConfigurationGatherer.cs", + "sourceLines": "148-148" + }, { "name": "IsKeyPathReferenced", "kind": "property", @@ -57188,7 +60371,7 @@ ] }, "sourceFile": "src/Aspire.Hosting/ApplicationModel/HttpsCertificateExecutionConfigurationGatherer.cs", - "sourceLines": "122-122" + "sourceLines": "127-127" }, { "name": "IsPfxPathReferenced", @@ -57206,7 +60389,7 @@ ] }, "sourceFile": "src/Aspire.Hosting/ApplicationModel/HttpsCertificateExecutionConfigurationGatherer.cs", - "sourceLines": "143-143" + "sourceLines": "169-169" }, { "name": "KeyPathReference", @@ -57298,10 +60481,16 @@ "arguments": { "UrlFormat": "https://aka.ms/aspire/diagnostics/{0}" } + }, + { + "name": "Aspire.Hosting.AspireExportAttribute", + "arguments": { + "ExposeProperties": "True" + } } ], "sourceFile": "src/Aspire.Hosting/ApplicationModel/HttpsEndpointUpdateCallbackContext.cs", - "sourceLines": "13-13", + "sourceLines": "14-14", "members": [ { "name": ".ctor", @@ -59001,19 +62190,8 @@ ] } }, - "attributes": [ - { - "name": "System.Diagnostics.CodeAnalysis.ExperimentalAttribute", - "constructorArguments": [ - "ASPIREINTERACTION001" - ], - "arguments": { - "UrlFormat": "https://aka.ms/aspire/diagnostics/{0}" - } - } - ], "sourceFile": "src/Aspire.Hosting/ApplicationModel/InputGeneratorAnnotation.cs", - "sourceLines": "13-13", + "sourceLines": "10-10", "members": [ { "name": ".ctor", @@ -59044,7 +62222,7 @@ } }, "sourceFile": "src/Aspire.Hosting/ApplicationModel/InputGeneratorAnnotation.cs", - "sourceLines": "13-13" + "sourceLines": "10-10" }, { "name": "InputGenerator", @@ -59062,7 +62240,7 @@ ] }, "sourceFile": "src/Aspire.Hosting/ApplicationModel/InputGeneratorAnnotation.cs", - "sourceLines": "18-18" + "sourceLines": "15-15" } ] }, @@ -60467,6 +63645,89 @@ } ] }, + { + "name": "KnownLaunchConfigurationTypes", + "fullName": "Aspire.Hosting.ApplicationModel.KnownLaunchConfigurationTypes", + "namespace": "Aspire.Hosting.ApplicationModel", + "kind": "class", + "accessibility": "public", + "isStatic": true, + "docs": { + "summary": [ + { + "kind": "text", + "text": " Well-known launch configuration type identifiers. " + } + ], + "remarks": [ + { + "kind": "text", + "text": " The launch configuration type tells the IDE which launcher to use for a resource. Integrations are free to define their own identifiers (for example " + }, + { + "kind": "code", + "text": "\"go\"" + }, + { + "kind": "text", + "text": " or " + }, + { + "kind": "code", + "text": "\"python\"" + }, + { + "kind": "text", + "text": "); only the identifiers that Aspire itself gives special meaning to are listed here. " + } + ] + }, + "attributes": [ + { + "name": "System.Diagnostics.CodeAnalysis.ExperimentalAttribute", + "constructorArguments": [ + "ASPIREEXTENSION001" + ], + "arguments": { + "UrlFormat": "https://aka.ms/aspire/diagnostics/{0}" + } + } + ], + "sourceFile": "src/Aspire.Hosting/ApplicationModel/KnownLaunchConfigurationTypes.cs", + "members": [ + { + "name": "Project", + "kind": "field", + "accessibility": "public", + "signature": "public const static string KnownLaunchConfigurationTypes.Project", + "returnType": "string", + "isStatic": true, + "isConst": true, + "docs": { + "summary": [ + { + "kind": "text", + "text": " The .NET project launch configuration type. " + } + ], + "remarks": [ + { + "kind": "text", + "text": " This type is reserved for resources that carry " + }, + { + "kind": "cref", + "value": "T:Aspire.Hosting.IProjectMetadata" + }, + { + "kind": "text", + "text": ". Aspire hands the project path (and launch profile) to the IDE, which owns building and launching the project, so no process fallback is offered for resources using this type. " + } + ] + } + } + ] + }, { "name": "KnownNetworkIdentifiers", "fullName": "Aspire.Hosting.ApplicationModel.KnownNetworkIdentifiers", @@ -60685,7 +63946,7 @@ ] }, "sourceFile": "src/Aspire.Hosting/ApplicationModel/CustomResourceSnapshot.cs", - "sourceLines": "397-397", + "sourceLines": "565-565", "members": [ { "name": "Active", @@ -60983,7 +64244,7 @@ ] }, "sourceFile": "src/Aspire.Hosting/ApplicationModel/CustomResourceSnapshot.cs", - "sourceLines": "371-371", + "sourceLines": "539-539", "members": [ { "name": "Error", @@ -61552,7 +64813,7 @@ } }, "sourceFile": "src/Aspire.Hosting/ApplicationModel/ResourceLoggerService.cs", - "sourceLines": "669-669", + "sourceLines": "909-909", "members": [ { "name": ".ctor", @@ -62424,7 +65685,7 @@ } }, "sourceFile": "src/Aspire.Hosting/ApplicationModel/EndpointAnnotation.cs", - "sourceLines": "394-394", + "sourceLines": "399-399", "members": [ { "name": ".ctor", @@ -62465,7 +65726,7 @@ } }, "sourceFile": "src/Aspire.Hosting/ApplicationModel/EndpointAnnotation.cs", - "sourceLines": "394-394" + "sourceLines": "399-399" }, { "name": "$", @@ -62751,7 +66012,7 @@ ] }, "sourceFile": "src/Aspire.Hosting/ApplicationModel/EndpointAnnotation.cs", - "sourceLines": "399-399", + "sourceLines": "404-404", "members": [ { "name": ".ctor", @@ -62760,7 +66021,7 @@ "signature": "public NetworkEndpointSnapshotList.NetworkEndpointSnapshotList()", "returnType": "void", "sourceFile": "src/Aspire.Hosting/ApplicationModel/EndpointAnnotation.cs", - "sourceLines": "402-402" + "sourceLines": "407-407" }, { "name": "AddOrUpdateAllocatedEndpoint", @@ -62787,7 +66048,7 @@ ] }, "sourceFile": "src/Aspire.Hosting/ApplicationModel/EndpointAnnotation.cs", - "sourceLines": "439-445" + "sourceLines": "444-450" }, { "name": "GetAllocatedEndpointAsync", @@ -62815,7 +66076,7 @@ ] }, "sourceFile": "src/Aspire.Hosting/ApplicationModel/EndpointAnnotation.cs", - "sourceLines": "452-453" + "sourceLines": "457-458" }, { "name": "GetEnumerator", @@ -62832,7 +66093,7 @@ ] }, "sourceFile": "src/Aspire.Hosting/ApplicationModel/EndpointAnnotation.cs", - "sourceLines": "409-409" + "sourceLines": "414-414" }, { "name": "TryAdd", @@ -62867,7 +66128,7 @@ ] }, "sourceFile": "src/Aspire.Hosting/ApplicationModel/EndpointAnnotation.cs", - "sourceLines": "423-432" + "sourceLines": "428-437" } ] }, @@ -63289,7 +66550,7 @@ ] }, "sourceFile": "src/Aspire.Hosting/ApplicationModel/ParameterResource.cs", - "sourceLines": "12-12", + "sourceLines": "14-14", "members": [ { "name": ".ctor", @@ -63350,7 +66611,7 @@ } }, "sourceFile": "src/Aspire.Hosting/ApplicationModel/ParameterResource.cs", - "sourceLines": "24-32" + "sourceLines": "26-34" }, { "name": "GetValueAsync", @@ -63387,7 +66648,7 @@ } }, "sourceFile": "src/Aspire.Hosting/ApplicationModel/ParameterResource.cs", - "sourceLines": "117-117" + "sourceLines": "130-130" }, { "name": "GetValueAsync", @@ -63414,7 +66675,7 @@ ] }, "sourceFile": "src/Aspire.Hosting/ApplicationModel/ParameterResource.cs", - "sourceLines": "117-117" + "sourceLines": "130-130" }, { "name": "Default", @@ -63506,7 +66767,7 @@ ] }, "sourceFile": "src/Aspire.Hosting/ApplicationModel/ParameterResource.cs", - "sourceLines": "65-65" + "sourceLines": "67-67" }, { "name": "Value", @@ -63554,7 +66815,7 @@ ] }, "sourceFile": "src/Aspire.Hosting/ApplicationModel/ParameterResource.cs", - "sourceLines": "41-41" + "sourceLines": "43-43" }, { "name": "ValueExpression", @@ -63572,7 +66833,7 @@ ] }, "sourceFile": "src/Aspire.Hosting/ApplicationModel/ParameterResource.cs", - "sourceLines": "75-75" + "sourceLines": "77-77" } ] }, @@ -64391,7 +67652,9 @@ "kind": "constructor", "accessibility": "public", "signature": "public ProcessCommandResultContext.ProcessCommandResultContext()", - "returnType": "void" + "returnType": "void", + "sourceFile": "src/Aspire.Hosting/ApplicationModel/ProcessCommandResultContext.cs", + "sourceLines": "64-64" }, { "name": "GetFormattedOutput", @@ -64450,7 +67713,65 @@ } }, "sourceFile": "src/Aspire.Hosting/ApplicationModel/ProcessCommandResultContext.cs", - "sourceLines": "65-65" + "sourceLines": "94-94" + }, + { + "name": "Arguments", + "kind": "property", + "accessibility": "public", + "signature": "public InteractionInputCollection ProcessCommandResultContext.Arguments", + "returnType": "Aspire.Hosting.InteractionInputCollection", + "hasGet": true, + "hasSet": true, + "isInitOnly": true, + "docs": { + "summary": [ + { + "kind": "text", + "text": " Gets the invocation arguments supplied by the client when the command is executed. " + } + ], + "remarks": [ + { + "kind": "para", + "children": [ + { + "kind": "text", + "text": " The collection contains the arguments described by the command's " + }, + { + "kind": "cref", + "value": "P:Aspire.Hosting.ApplicationModel.CommandOptions.Arguments" + }, + { + "kind": "text", + "text": " with their submitted values populated. CLI positional arguments are mapped by declaration order. Dashboard, MCP, and other named-payload clients are mapped by " + }, + { + "kind": "cref", + "value": "P:Aspire.Hosting.InteractionInput.Name" + }, + { + "kind": "text", + "text": ". " + } + ] + } + ], + "examples": [ + { + "code": "\n GetCommandResult = context =>\n Task.FromResult(CommandResults.Success(\"received\", context.Arguments.GetString(\"message\")!));\n ", + "language": "csharp", + "description": [ + { + "kind": "text", + "text": "Read a declared command argument when producing a custom result:" + } + ] + } + ] + }, + "sourceFile": "src/Aspire.Hosting/ApplicationModel/ProcessCommandResultContext.cs" }, { "name": "CancellationToken", @@ -64575,6 +67896,33 @@ "hasGet": true, "hasSet": true, "isInitOnly": true, + "attributes": [ + { + "name": "System.ObsoleteAttribute", + "constructorArguments": [ + "Use Services instead." + ] + } + ], + "docs": { + "summary": [ + { + "kind": "text", + "text": " Gets the service provider. " + } + ] + }, + "sourceFile": "src/Aspire.Hosting/ApplicationModel/ProcessCommandResultContext.cs" + }, + { + "name": "Services", + "kind": "property", + "accessibility": "public", + "signature": "public IServiceProvider ProcessCommandResultContext.Services", + "returnType": "System.IServiceProvider", + "hasGet": true, + "hasSet": true, + "isInitOnly": true, "docs": { "summary": [ { @@ -64840,6 +68188,530 @@ } ] }, + { + "name": "ProjectLaunchArgsOverrideAnnotation", + "fullName": "Aspire.Hosting.ApplicationModel.ProjectLaunchArgsOverrideAnnotation", + "namespace": "Aspire.Hosting.ApplicationModel", + "kind": "class", + "accessibility": "public", + "isSealed": true, + "interfaces": [ + "Aspire.Hosting.ApplicationModel.IResourceAnnotation" + ], + "docs": { + "summary": [ + { + "kind": "text", + "text": " Represents an annotation that overrides the default project launch arguments generated by DCP for a " + }, + { + "kind": "cref", + "value": "T:Aspire.Hosting.ApplicationModel.ProjectResource" + }, + { + "kind": "text", + "text": ". " + } + ], + "remarks": [ + { + "kind": "para", + "children": [ + { + "kind": "text", + "text": " When this annotation is present on a " + }, + { + "kind": "cref", + "value": "T:Aspire.Hosting.ApplicationModel.ProjectResource" + }, + { + "kind": "text", + "text": ", DCP will use the provided arguments as the base command (e.g., " + }, + { + "kind": "code", + "text": "build /t:Run" + }, + { + "kind": "text", + "text": ") instead of the default " + }, + { + "kind": "code", + "text": "run" + }, + { + "kind": "text", + "text": " verb. DCP still appends the project path positionally and appends " + }, + { + "kind": "code", + "text": "--configuration" + }, + { + "kind": "text", + "text": " automatically; only the verb and its options are overridden. This annotation is intended for verbs like " + }, + { + "kind": "code", + "text": "build" + }, + { + "kind": "text", + "text": " that accept the project path as a positional argument. The " + }, + { + "kind": "code", + "text": "--no-launch-profile" + }, + { + "kind": "text", + "text": " flag is omitted when this annotation is present. " + } + ] + }, + { + "kind": "para", + "children": [ + { + "kind": "text", + "text": " A non-empty launch-tool argument callback replaces this base command. If the callback resolves no arguments, this override remains the Process command. " + } + ] + } + ], + "parameters": { + "arguments": [ + { + "kind": "text", + "text": "The custom launch arguments to use instead of the default project launch arguments." + } + ], + "leadingResourceArgumentToRemove": [ + { + "kind": "text", + "text": "The optional first resource argument to omit from the final launch arguments when it is already represented by " + }, + { + "kind": "paramref", + "value": "arguments" + }, + { + "kind": "text", + "text": "." + } + ] + }, + "examples": [ + { + "code": "\n builder.WithAnnotation(new ProjectLaunchArgsOverrideAnnotation([\"build\", \"/t:Run\"]));\n ", + "language": "csharp", + "description": [ + { + "kind": "text", + "text": "Override DCP's default launch to use" + }, + { + "kind": "text", + "text": "dotnet build /t:Run" + }, + { + "kind": "text", + "text": ":" + } + ] + } + ] + }, + "attributes": [ + { + "name": "System.Diagnostics.CodeAnalysis.ExperimentalAttribute", + "constructorArguments": [ + "ASPIREPROJECTS001" + ], + "arguments": { + "UrlFormat": "https://aka.ms/aspire/diagnostics/{0}" + } + } + ], + "sourceFile": "src/Aspire.Hosting/ApplicationModel/ProjectLaunchArgsOverrideAnnotation.cs", + "sourceLines": "37-37", + "members": [ + { + "name": ".ctor", + "kind": "constructor", + "accessibility": "public", + "signature": "public ProjectLaunchArgsOverrideAnnotation.ProjectLaunchArgsOverrideAnnotation(IReadOnlyList arguments, string? leadingResourceArgumentToRemove = null)", + "returnType": "void", + "parameters": [ + { + "name": "arguments", + "type": "System.Collections.Generic.IReadOnlyList" + }, + { + "name": "leadingResourceArgumentToRemove", + "type": "string?", + "isNullable": true, + "isOptional": true + } + ], + "docs": { + "summary": [ + { + "kind": "text", + "text": " Represents an annotation that overrides the default project launch arguments generated by DCP for a " + }, + { + "kind": "cref", + "value": "T:Aspire.Hosting.ApplicationModel.ProjectResource" + }, + { + "kind": "text", + "text": ". " + } + ], + "remarks": [ + { + "kind": "para", + "children": [ + { + "kind": "text", + "text": " When this annotation is present on a " + }, + { + "kind": "cref", + "value": "T:Aspire.Hosting.ApplicationModel.ProjectResource" + }, + { + "kind": "text", + "text": ", DCP will use the provided arguments as the base command (e.g., " + }, + { + "kind": "code", + "text": "build /t:Run" + }, + { + "kind": "text", + "text": ") instead of the default " + }, + { + "kind": "code", + "text": "run" + }, + { + "kind": "text", + "text": " verb. DCP still appends the project path positionally and appends " + }, + { + "kind": "code", + "text": "--configuration" + }, + { + "kind": "text", + "text": " automatically; only the verb and its options are overridden. This annotation is intended for verbs like " + }, + { + "kind": "code", + "text": "build" + }, + { + "kind": "text", + "text": " that accept the project path as a positional argument. The " + }, + { + "kind": "code", + "text": "--no-launch-profile" + }, + { + "kind": "text", + "text": " flag is omitted when this annotation is present. " + } + ] + }, + { + "kind": "para", + "children": [ + { + "kind": "text", + "text": " A non-empty launch-tool argument callback replaces this base command. If the callback resolves no arguments, this override remains the Process command. " + } + ] + } + ], + "parameters": { + "arguments": [ + { + "kind": "text", + "text": "The custom launch arguments to use instead of the default project launch arguments." + } + ], + "leadingResourceArgumentToRemove": [ + { + "kind": "text", + "text": "The optional first resource argument to omit from the final launch arguments when it is already represented by " + }, + { + "kind": "paramref", + "value": "arguments" + }, + { + "kind": "text", + "text": "." + } + ] + }, + "examples": [ + { + "code": "\n builder.WithAnnotation(new ProjectLaunchArgsOverrideAnnotation([\"build\", \"/t:Run\"]));\n ", + "language": "csharp", + "description": [ + { + "kind": "text", + "text": "Override DCP's default launch to use" + }, + { + "kind": "text", + "text": "dotnet build /t:Run" + }, + { + "kind": "text", + "text": ":" + } + ] + } + ] + }, + "sourceFile": "src/Aspire.Hosting/ApplicationModel/ProjectLaunchArgsOverrideAnnotation.cs", + "sourceLines": "37-47" + }, + { + "name": "Arguments", + "kind": "property", + "accessibility": "public", + "signature": "public IReadOnlyList ProjectLaunchArgsOverrideAnnotation.Arguments", + "returnType": "System.Collections.Generic.IReadOnlyList", + "hasGet": true, + "docs": { + "summary": [ + { + "kind": "text", + "text": " Gets the custom launch arguments to use instead of the default project args. " + } + ] + }, + "sourceFile": "src/Aspire.Hosting/ApplicationModel/ProjectLaunchArgsOverrideAnnotation.cs", + "sourceLines": "42-42" + }, + { + "name": "LeadingResourceArgumentToRemove", + "kind": "property", + "accessibility": "public", + "signature": "public string? ProjectLaunchArgsOverrideAnnotation.LeadingResourceArgumentToRemove", + "returnType": "string?", + "isReturnNullable": true, + "hasGet": true, + "docs": { + "summary": [ + { + "kind": "text", + "text": " Gets the optional first resource argument to omit from the final launch arguments when it is already represented by " + }, + { + "kind": "cref", + "value": "P:Aspire.Hosting.ApplicationModel.ProjectLaunchArgsOverrideAnnotation.Arguments" + }, + { + "kind": "text", + "text": ". " + } + ] + }, + "sourceFile": "src/Aspire.Hosting/ApplicationModel/ProjectLaunchArgsOverrideAnnotation.cs", + "sourceLines": "47-47" + } + ] + }, + { + "name": "ProjectLaunchConfiguration", + "fullName": "Aspire.Hosting.ApplicationModel.ProjectLaunchConfiguration", + "namespace": "Aspire.Hosting.ApplicationModel", + "kind": "class", + "accessibility": "public", + "isSealed": true, + "baseType": "Aspire.Hosting.ApplicationModel.ExecutableLaunchConfiguration", + "docs": { + "summary": [ + { + "kind": "text", + "text": " The launch configuration used for .NET projects and file-based C# apps. " + } + ], + "remarks": [ + { + "kind": "text", + "text": " The IDE builds and launches the project itself, so resources using this launch configuration do not get a process fallback. The resource must carry " + }, + { + "kind": "cref", + "value": "T:Aspire.Hosting.IProjectMetadata" + }, + { + "kind": "text", + "text": ". " + } + ] + }, + "attributes": [ + { + "name": "System.Diagnostics.CodeAnalysis.ExperimentalAttribute", + "constructorArguments": [ + "ASPIREEXTENSION001" + ], + "arguments": { + "UrlFormat": "https://aka.ms/aspire/diagnostics/{0}" + } + } + ], + "sourceFile": "src/Aspire.Hosting/ApplicationModel/ExecutableLaunchConfiguration.cs", + "sourceLines": "108-108", + "members": [ + { + "name": ".ctor", + "kind": "constructor", + "accessibility": "public", + "signature": "public ProjectLaunchConfiguration.ProjectLaunchConfiguration()", + "returnType": "void", + "docs": { + "summary": [ + { + "kind": "text", + "text": " The launch configuration used for .NET projects and file-based C# apps. " + } + ], + "remarks": [ + { + "kind": "text", + "text": " The IDE builds and launches the project itself, so resources using this launch configuration do not get a process fallback. The resource must carry " + }, + { + "kind": "cref", + "value": "T:Aspire.Hosting.IProjectMetadata" + }, + { + "kind": "text", + "text": ". " + } + ] + }, + "sourceFile": "src/Aspire.Hosting/ApplicationModel/ExecutableLaunchConfiguration.cs", + "sourceLines": "108-115" + }, + { + "name": "DisableLaunchProfile", + "kind": "property", + "accessibility": "public", + "signature": "public bool ProjectLaunchConfiguration.DisableLaunchProfile", + "returnType": "bool", + "hasGet": true, + "hasSet": true, + "docs": { + "summary": [ + { + "kind": "text", + "text": " Gets or sets a value indicating whether launch profile handling should be suppressed entirely. " + } + ] + }, + "sourceFile": "src/Aspire.Hosting/ApplicationModel/ExecutableLaunchConfiguration.cs" + }, + { + "name": "LaunchProfile", + "kind": "property", + "accessibility": "public", + "signature": "public string ProjectLaunchConfiguration.LaunchProfile", + "returnType": "string", + "hasGet": true, + "hasSet": true, + "docs": { + "summary": [ + { + "kind": "text", + "text": " Gets or sets the name of the launch profile the IDE should apply. Empty means the IDE picks the effective profile itself. " + } + ] + }, + "sourceFile": "src/Aspire.Hosting/ApplicationModel/ExecutableLaunchConfiguration.cs" + }, + { + "name": "ProjectPath", + "kind": "property", + "accessibility": "public", + "signature": "public string ProjectLaunchConfiguration.ProjectPath", + "returnType": "string", + "hasGet": true, + "hasSet": true, + "docs": { + "summary": [ + { + "kind": "text", + "text": " Gets or sets the fully-qualified path to the project file or file-based app to launch. " + } + ] + }, + "sourceFile": "src/Aspire.Hosting/ApplicationModel/ExecutableLaunchConfiguration.cs" + } + ] + }, + { + "name": "ProjectLaunchDefaultsAnnotation", + "fullName": "Aspire.Hosting.ApplicationModel.ProjectLaunchDefaultsAnnotation", + "namespace": "Aspire.Hosting.ApplicationModel", + "kind": "class", + "accessibility": "public", + "isSealed": true, + "interfaces": [ + "Aspire.Hosting.ApplicationModel.IResourceAnnotation" + ], + "docs": { + "summary": [ + { + "kind": "text", + "text": " Marks a resource as launched through the .NET SDK, so that Aspire treats it like a C# project. " + } + ], + "remarks": [ + { + "kind": "text", + "text": " This is a public annotation rather than an interface so resources in other assemblies can opt into the C# project-defaults behavior without implementing a specific interface. " + } + ] + }, + "attributes": [ + { + "name": "System.Diagnostics.CodeAnalysis.ExperimentalAttribute", + "constructorArguments": [ + "ASPIREPROJECTS001" + ], + "arguments": { + "UrlFormat": "https://aka.ms/aspire/diagnostics/{0}" + } + } + ], + "sourceFile": "src/Aspire.Hosting/ApplicationModel/ProjectLaunchDefaultsAnnotation.cs", + "sourceLines": "16-16", + "members": [ + { + "name": ".ctor", + "kind": "constructor", + "accessibility": "public", + "signature": "public ProjectLaunchDefaultsAnnotation.ProjectLaunchDefaultsAnnotation()", + "returnType": "void", + "sourceFile": "src/Aspire.Hosting/ApplicationModel/ProjectLaunchDefaultsAnnotation.cs", + "sourceLines": "24-24" + } + ] + }, { "name": "ProjectResource", "fullName": "Aspire.Hosting.ApplicationModel.ProjectResource", @@ -64867,7 +68739,7 @@ ] }, "sourceFile": "src/Aspire.Hosting/ApplicationModel/ProjectResource.cs", - "sourceLines": "24-24", + "sourceLines": "25-25", "members": [ { "name": ".ctor", @@ -64906,7 +68778,7 @@ } }, "sourceFile": "src/Aspire.Hosting/ApplicationModel/ProjectResource.cs", - "sourceLines": "31-101" + "sourceLines": "32-106" } ] }, @@ -64942,7 +68814,7 @@ ] }, "sourceFile": "src/Aspire.Hosting/ApplicationModel/ProjectResourceExtensions.cs", - "sourceLines": "9-9", + "sourceLines": "13-13", "members": [ { "name": "GetProjectMetadata", @@ -64974,6 +68846,20 @@ "text": " Gets the project metadata for the specified project resource. " } ], + "remarks": [ + { + "kind": "text", + "text": " A project resource must carry exactly one " + }, + { + "kind": "cref", + "value": "T:Aspire.Hosting.IProjectMetadata" + }, + { + "kind": "text", + "text": " annotation. Project metadata cannot be replaced after project defaults have been applied because launch settings, endpoints, and rebuild behavior are derived from that annotation. " + } + ], "returns": [ { "kind": "text", @@ -64994,14 +68880,13 @@ "description": [ { "kind": "text", - "text": "Thrown when the project resource doesn't have project metadata." + "text": "Thrown when the project resource doesn't have exactly one project metadata annotation." } ] } ] }, - "sourceFile": "src/Aspire.Hosting/ApplicationModel/ProjectResourceExtensions.cs", - "sourceLines": "33-35" + "sourceFile": "src/Aspire.Hosting/ApplicationModel/ProjectResourceExtensions.cs" }, { "name": "GetProjectResources", @@ -65049,7 +68934,7 @@ } }, "sourceFile": "src/Aspire.Hosting/ApplicationModel/ProjectResourceExtensions.cs", - "sourceLines": "19-21" + "sourceLines": "23-25" } ] }, @@ -67339,7 +71224,7 @@ } }, "sourceFile": "src/Aspire.Hosting/ApplicationModel/CustomResourceSnapshot.cs", - "sourceLines": "248-248", + "sourceLines": "394-394", "members": [ { "name": ".ctor", @@ -67380,7 +71265,7 @@ } }, "sourceFile": "src/Aspire.Hosting/ApplicationModel/CustomResourceSnapshot.cs", - "sourceLines": "248-248" + "sourceLines": "394-394" }, { "name": "$", @@ -67915,10 +71800,17 @@ "arguments": { "UrlFormat": "https://aka.ms/aspire/diagnostics/{0}" } + }, + { + "name": "Aspire.Hosting.AspireExportAttribute", + "arguments": { + "ExposeMethods": "True", + "ExposeProperties": "True" + } } ], "sourceFile": "src/Aspire.Hosting/ApplicationModel/RequiredCommandValidationContext.cs", - "sourceLines": "15-15", + "sourceLines": "16-16", "members": [ { "name": ".ctor", @@ -67969,7 +71861,83 @@ } }, "sourceFile": "src/Aspire.Hosting/ApplicationModel/RequiredCommandValidationContext.cs", - "sourceLines": "15-30" + "sourceLines": "16-31" + }, + { + "name": "Failure", + "kind": "method", + "accessibility": "public", + "signature": "public RequiredCommandValidationResult RequiredCommandValidationContext.Failure(string validationMessage)", + "returnType": "Aspire.Hosting.ApplicationModel.RequiredCommandValidationResult", + "parameters": [ + { + "name": "validationMessage", + "type": "string" + } + ], + "docs": { + "summary": [ + { + "kind": "text", + "text": " Creates a failed validation result with the specified message. " + } + ], + "returns": [ + { + "kind": "text", + "text": "A " + }, + { + "kind": "cref", + "value": "T:Aspire.Hosting.ApplicationModel.RequiredCommandValidationResult" + }, + { + "kind": "text", + "text": " indicating the command is invalid." + } + ], + "parameters": { + "validationMessage": [ + { + "kind": "text", + "text": "A message describing why validation failed." + } + ] + } + }, + "sourceFile": "src/Aspire.Hosting/ApplicationModel/RequiredCommandValidationContext.cs", + "sourceLines": "44-44" + }, + { + "name": "Success", + "kind": "method", + "accessibility": "public", + "signature": "public RequiredCommandValidationResult RequiredCommandValidationContext.Success()", + "returnType": "Aspire.Hosting.ApplicationModel.RequiredCommandValidationResult", + "docs": { + "summary": [ + { + "kind": "text", + "text": " Creates a successful validation result. " + } + ], + "returns": [ + { + "kind": "text", + "text": "A " + }, + { + "kind": "cref", + "value": "T:Aspire.Hosting.ApplicationModel.RequiredCommandValidationResult" + }, + { + "kind": "text", + "text": " indicating the command is valid." + } + ] + }, + "sourceFile": "src/Aspire.Hosting/ApplicationModel/RequiredCommandValidationContext.cs", + "sourceLines": "37-37" }, { "name": "CancellationToken", @@ -67987,7 +71955,7 @@ ] }, "sourceFile": "src/Aspire.Hosting/ApplicationModel/RequiredCommandValidationContext.cs", - "sourceLines": "30-30" + "sourceLines": "31-31" }, { "name": "ResolvedPath", @@ -68005,7 +71973,7 @@ ] }, "sourceFile": "src/Aspire.Hosting/ApplicationModel/RequiredCommandValidationContext.cs", - "sourceLines": "20-20" + "sourceLines": "21-21" }, { "name": "Services", @@ -68023,7 +71991,7 @@ ] }, "sourceFile": "src/Aspire.Hosting/ApplicationModel/RequiredCommandValidationContext.cs", - "sourceLines": "25-25" + "sourceLines": "26-26" } ] }, @@ -68051,10 +72019,16 @@ "arguments": { "UrlFormat": "https://aka.ms/aspire/diagnostics/{0}" } + }, + { + "name": "Aspire.Hosting.AspireExportAttribute", + "arguments": { + "ExposeProperties": "True" + } } ], "sourceFile": "src/Aspire.Hosting/ApplicationModel/RequiredCommandValidationResult.cs", - "sourceLines": "12-12", + "sourceLines": "13-13", "members": [ { "name": "Failure", @@ -68092,7 +72066,7 @@ } }, "sourceFile": "src/Aspire.Hosting/ApplicationModel/RequiredCommandValidationResult.cs", - "sourceLines": "47-47" + "sourceLines": "48-48" }, { "name": "Success", @@ -68116,7 +72090,7 @@ ] }, "sourceFile": "src/Aspire.Hosting/ApplicationModel/RequiredCommandValidationResult.cs", - "sourceLines": "40-40" + "sourceLines": "41-41" }, { "name": "IsValid", @@ -68134,7 +72108,7 @@ ] }, "sourceFile": "src/Aspire.Hosting/ApplicationModel/RequiredCommandValidationResult.cs", - "sourceLines": "29-29" + "sourceLines": "30-30" }, { "name": "ValidationMessage", @@ -68153,7 +72127,7 @@ ] }, "sourceFile": "src/Aspire.Hosting/ApplicationModel/RequiredCommandValidationResult.cs", - "sourceLines": "34-34" + "sourceLines": "35-35" } ] }, @@ -68641,14 +72615,32 @@ ] }, "sourceFile": "src/Aspire.Hosting/ApplicationModel/ResourceAnnotationCollection.cs", - "sourceLines": "11-11", + "sourceLines": "18-18", "members": [ { "name": ".ctor", "kind": "constructor", "accessibility": "public", "signature": "public ResourceAnnotationCollection.ResourceAnnotationCollection()", - "returnType": "void" + "returnType": "void", + "docs": { + "summary": [ + { + "kind": "text", + "text": " Initializes a new instance of the " + }, + { + "kind": "cref", + "value": "T:Aspire.Hosting.ApplicationModel.ResourceAnnotationCollection" + }, + { + "kind": "text", + "text": " class. " + } + ] + }, + "sourceFile": "src/Aspire.Hosting/ApplicationModel/ResourceAnnotationCollection.cs", + "sourceLines": "24-26" } ] }, @@ -68717,7 +72709,7 @@ ] }, "sourceFile": "src/Aspire.Hosting/ApplicationModel/ResourceCommandAnnotation.cs", - "sourceLines": "17-17", + "sourceLines": "14-14", "members": [ { "name": ".ctor", @@ -68789,7 +72781,7 @@ ] }, "sourceFile": "src/Aspire.Hosting/ApplicationModel/ResourceCommandAnnotation.cs", - "sourceLines": "33-35" + "sourceLines": "30-32" }, { "name": ".ctor", @@ -68873,7 +72865,7 @@ ] }, "sourceFile": "src/Aspire.Hosting/ApplicationModel/ResourceCommandAnnotation.cs", - "sourceLines": "53-55" + "sourceLines": "50-52" }, { "name": "Arguments", @@ -68882,17 +72874,6 @@ "signature": "public IReadOnlyList ResourceCommandAnnotation.Arguments", "returnType": "System.Collections.Generic.IReadOnlyList", "hasGet": true, - "attributes": [ - { - "name": "System.Diagnostics.CodeAnalysis.ExperimentalAttribute", - "constructorArguments": [ - "ASPIREINTERACTION001" - ], - "arguments": { - "UrlFormat": "https://aka.ms/aspire/diagnostics/{0}" - } - } - ], "docs": { "summary": [ { @@ -68921,7 +72902,7 @@ ] }, "sourceFile": "src/Aspire.Hosting/ApplicationModel/ResourceCommandAnnotation.cs", - "sourceLines": "140-140" + "sourceLines": "138-138" }, { "name": "ConfirmationMessage", @@ -68940,7 +72921,7 @@ ] }, "sourceFile": "src/Aspire.Hosting/ApplicationModel/ResourceCommandAnnotation.cs", - "sourceLines": "152-152" + "sourceLines": "149-149" }, { "name": "DisplayDescription", @@ -68959,7 +72940,7 @@ ] }, "sourceFile": "src/Aspire.Hosting/ApplicationModel/ResourceCommandAnnotation.cs", - "sourceLines": "120-120" + "sourceLines": "119-119" }, { "name": "DisplayName", @@ -68977,7 +72958,7 @@ ] }, "sourceFile": "src/Aspire.Hosting/ApplicationModel/ResourceCommandAnnotation.cs", - "sourceLines": "102-102" + "sourceLines": "101-101" }, { "name": "ExecuteCommand", @@ -68995,7 +72976,7 @@ ] }, "sourceFile": "src/Aspire.Hosting/ApplicationModel/ResourceCommandAnnotation.cs", - "sourceLines": "114-114" + "sourceLines": "113-113" }, { "name": "IconName", @@ -69014,7 +72995,7 @@ ] }, "sourceFile": "src/Aspire.Hosting/ApplicationModel/ResourceCommandAnnotation.cs", - "sourceLines": "157-157" + "sourceLines": "154-154" }, { "name": "IconVariant", @@ -69033,7 +73014,7 @@ ] }, "sourceFile": "src/Aspire.Hosting/ApplicationModel/ResourceCommandAnnotation.cs", - "sourceLines": "162-162" + "sourceLines": "159-159" }, { "name": "IsHighlighted", @@ -69051,7 +73032,7 @@ ] }, "sourceFile": "src/Aspire.Hosting/ApplicationModel/ResourceCommandAnnotation.cs", - "sourceLines": "167-167" + "sourceLines": "164-164" }, { "name": "Name", @@ -69069,7 +73050,7 @@ ] }, "sourceFile": "src/Aspire.Hosting/ApplicationModel/ResourceCommandAnnotation.cs", - "sourceLines": "97-97" + "sourceLines": "96-96" }, { "name": "Parameter", @@ -69096,7 +73077,34 @@ ] }, "sourceFile": "src/Aspire.Hosting/ApplicationModel/ResourceCommandAnnotation.cs", - "sourceLines": "127-127" + "sourceLines": "126-126" + }, + { + "name": "Progress", + "kind": "property", + "accessibility": "public", + "signature": "public CommandProgressOptions? ResourceCommandAnnotation.Progress", + "returnType": "Aspire.Hosting.ApplicationModel.CommandProgressOptions?", + "isReturnNullable": true, + "hasGet": true, + "docs": { + "summary": [ + { + "kind": "text", + "text": " Gets the progress dialog options for the command. When " + }, + { + "kind": "langword", + "value": "null" + }, + { + "kind": "text", + "text": ", no progress dialog is shown. " + } + ] + }, + "sourceFile": "src/Aspire.Hosting/ApplicationModel/ResourceCommandAnnotation.cs", + "sourceLines": "175-175" }, { "name": "UpdateState", @@ -69114,7 +73122,7 @@ ] }, "sourceFile": "src/Aspire.Hosting/ApplicationModel/ResourceCommandAnnotation.cs", - "sourceLines": "108-108" + "sourceLines": "107-107" }, { "name": "ValidateArguments", @@ -69124,17 +73132,6 @@ "returnType": "System.Func?", "isReturnNullable": true, "hasGet": true, - "attributes": [ - { - "name": "System.Diagnostics.CodeAnalysis.ExperimentalAttribute", - "constructorArguments": [ - "ASPIREINTERACTION001" - ], - "arguments": { - "UrlFormat": "https://aka.ms/aspire/diagnostics/{0}" - } - } - ], "docs": { "summary": [ { @@ -69144,7 +73141,7 @@ ] }, "sourceFile": "src/Aspire.Hosting/ApplicationModel/ResourceCommandAnnotation.cs", - "sourceLines": "146-146" + "sourceLines": "143-143" }, { "name": "Visibility", @@ -69162,7 +73159,7 @@ ] }, "sourceFile": "src/Aspire.Hosting/ApplicationModel/ResourceCommandAnnotation.cs", - "sourceLines": "172-172" + "sourceLines": "169-169" } ] }, @@ -69181,7 +73178,7 @@ ] }, "sourceFile": "src/Aspire.Hosting/ApplicationModel/ResourceCommandService.cs", - "sourceLines": "15-15", + "sourceLines": "16-16", "members": [ { "name": "ExecuteCommandAsync", @@ -69662,7 +73659,7 @@ } }, "sourceFile": "src/Aspire.Hosting/ApplicationModel/CustomResourceSnapshot.cs", - "sourceLines": "296-296", + "sourceLines": "466-466", "members": [ { "name": ".ctor", @@ -69778,7 +73775,7 @@ } }, "sourceFile": "src/Aspire.Hosting/ApplicationModel/CustomResourceSnapshot.cs", - "sourceLines": "296-308" + "sourceLines": "466-476" }, { "name": "$", @@ -70600,7 +74597,7 @@ } }, "sourceFile": "src/Aspire.Hosting/ApplicationModel/ResourceNotificationService.cs", - "sourceLines": "1397-1397", + "sourceLines": "1442-1442", "members": [ { "name": ".ctor", @@ -70651,7 +74648,7 @@ } }, "sourceFile": "src/Aspire.Hosting/ApplicationModel/ResourceNotificationService.cs", - "sourceLines": "1397-1412" + "sourceLines": "1442-1457" }, { "name": "Resource", @@ -70669,7 +74666,7 @@ ] }, "sourceFile": "src/Aspire.Hosting/ApplicationModel/ResourceNotificationService.cs", - "sourceLines": "1402-1402" + "sourceLines": "1447-1447" }, { "name": "ResourceId", @@ -70687,7 +74684,7 @@ ] }, "sourceFile": "src/Aspire.Hosting/ApplicationModel/ResourceNotificationService.cs", - "sourceLines": "1407-1407" + "sourceLines": "1452-1452" }, { "name": "Snapshot", @@ -70705,7 +74702,7 @@ ] }, "sourceFile": "src/Aspire.Hosting/ApplicationModel/ResourceNotificationService.cs", - "sourceLines": "1412-1412" + "sourceLines": "1457-1457" } ] }, @@ -70897,7 +74894,7 @@ } }, "sourceFile": "src/Aspire.Hosting/ApplicationModel/ResourceExtensions.cs", - "sourceLines": "993-997" + "sourceLines": "1031-1035" }, { "name": "GetDeploymentTargetAnnotation", @@ -70938,7 +74935,7 @@ ] }, "sourceFile": "src/Aspire.Hosting/ApplicationModel/ResourceExtensions.cs", - "sourceLines": "1007-1047" + "sourceLines": "1045-1085" }, { "name": "GetEndpoint", @@ -71020,7 +75017,7 @@ } }, "sourceFile": "src/Aspire.Hosting/ApplicationModel/ResourceExtensions.cs", - "sourceLines": "746-755" + "sourceLines": "781-790" }, { "name": "GetEndpoint", @@ -71116,7 +75113,7 @@ } }, "sourceFile": "src/Aspire.Hosting/ApplicationModel/ResourceExtensions.cs", - "sourceLines": "770-779" + "sourceLines": "805-814" }, { "name": "GetEndpoints", @@ -71204,7 +75201,7 @@ } }, "sourceFile": "src/Aspire.Hosting/ApplicationModel/ResourceExtensions.cs", - "sourceLines": "712-717" + "sourceLines": "747-752" }, { "name": "GetEndpoints", @@ -71302,7 +75299,7 @@ } }, "sourceFile": "src/Aspire.Hosting/ApplicationModel/ResourceExtensions.cs", - "sourceLines": "729-734" + "sourceLines": "764-769" }, { "name": "GetEnvironmentVariableValuesAsync", @@ -71473,7 +75470,7 @@ } }, "sourceFile": "src/Aspire.Hosting/ApplicationModel/ResourceExtensions.cs", - "sourceLines": "933-939" + "sourceLines": "971-977" }, { "name": "GetResourceDependenciesAsync", @@ -71689,7 +75686,7 @@ } }, "sourceFile": "src/Aspire.Hosting/ApplicationModel/ResourceExtensions.cs", - "sourceLines": "1427-1427" + "sourceLines": "1479-1479" }, { "name": "GetResourceDependenciesAsync", @@ -71870,7 +75867,7 @@ } }, "sourceFile": "src/Aspire.Hosting/ApplicationModel/ResourceExtensions.cs", - "sourceLines": "1459-1459" + "sourceLines": "1511-1511" }, { "name": "HasAnnotationIncludingAncestorsOfType", @@ -72088,7 +76085,7 @@ } }, "sourceFile": "src/Aspire.Hosting/ApplicationModel/ResourceExtensions.cs", - "sourceLines": "565-565" + "sourceLines": "600-600" }, { "name": "ProcessArgumentValuesAsync", @@ -72177,7 +76174,7 @@ } }, "sourceFile": "src/Aspire.Hosting/ApplicationModel/ResourceExtensions.cs", - "sourceLines": "350-353" + "sourceLines": "387-390" }, { "name": "ProcessEnvironmentVariableValuesAsync", @@ -72266,7 +76263,7 @@ } }, "sourceFile": "src/Aspire.Hosting/ApplicationModel/ResourceExtensions.cs", - "sourceLines": "442-445" + "sourceLines": "479-482" }, { "name": "RequiresImageBuild", @@ -72320,7 +76317,7 @@ } }, "sourceFile": "src/Aspire.Hosting/ApplicationModel/ResourceExtensions.cs", - "sourceLines": "955-960" + "sourceLines": "993-998" }, { "name": "RequiresImageBuildAndPush", @@ -72374,7 +76371,7 @@ } }, "sourceFile": "src/Aspire.Hosting/ApplicationModel/ResourceExtensions.cs", - "sourceLines": "976-976" + "sourceLines": "1014-1014" }, { "name": "ResolveEndpoints", @@ -72434,7 +76431,7 @@ } }, "sourceFile": "src/Aspire.Hosting/ApplicationModel/ResourceExtensions.cs", - "sourceLines": "794-864" + "sourceLines": "829-902" }, { "name": "TryGetAnnotationsIncludingAncestorsOfType", @@ -72686,7 +76683,7 @@ } }, "sourceFile": "src/Aspire.Hosting/ApplicationModel/ResourceExtensions.cs", - "sourceLines": "878-878" + "sourceLines": "916-916" }, { "name": "TryGetContainerImageName", @@ -72756,7 +76753,7 @@ } }, "sourceFile": "src/Aspire.Hosting/ApplicationModel/ResourceExtensions.cs", - "sourceLines": "893-921" + "sourceLines": "931-959" }, { "name": "TryGetContainerMounts", @@ -72836,7 +76833,7 @@ } }, "sourceFile": "src/Aspire.Hosting/ApplicationModel/ResourceExtensions.cs", - "sourceLines": "677-677" + "sourceLines": "712-712" }, { "name": "TryGetEndpoints", @@ -72896,7 +76893,7 @@ } }, "sourceFile": "src/Aspire.Hosting/ApplicationModel/ResourceExtensions.cs", - "sourceLines": "689-689" + "sourceLines": "724-724" }, { "name": "TryGetEnvironmentVariables", @@ -73112,7 +77109,7 @@ } }, "sourceFile": "src/Aspire.Hosting/ApplicationModel/ResourceExtensions.cs", - "sourceLines": "701-701" + "sourceLines": "736-736" }, { "name": "WithContainerBuildOptions", @@ -73155,7 +77152,7 @@ { "name": "Aspire.Hosting.AspireExportIgnoreAttribute", "arguments": { - "Reason": "ContainerBuildOptionsCallbackContext exposes IResource and IServiceProvider — .NET runtime types not usable from polyglot hosts." + "Reason": "Polyglot AppHosts use the async callback overload." } } ], @@ -73166,12 +77163,6 @@ "text": " Configures container build options for a compute resource using a callback. " } ], - "remarks": [ - { - "kind": "text", - "text": "This method is not available in polyglot AppHosts." - } - ], "returns": [ { "kind": "text", @@ -73250,10 +77241,7 @@ } }, { - "name": "Aspire.Hosting.AspireExportIgnoreAttribute", - "arguments": { - "Reason": "ContainerBuildOptionsCallbackContext exposes IResource and IServiceProvider — .NET runtime types not usable from polyglot hosts." - } + "name": "Aspire.Hosting.AspireExportAttribute" } ], "docs": { @@ -73263,12 +77251,6 @@ "text": " Configures container build options for a compute resource using an async callback. " } ], - "remarks": [ - { - "kind": "text", - "text": "This method is not available in polyglot AppHosts." - } - ], "returns": [ { "kind": "text", @@ -73482,7 +77464,7 @@ ] }, "sourceFile": "src/Aspire.Hosting/ApplicationModel/ResourceLoggerService.cs", - "sourceLines": "304-310" + "sourceLines": "307-313" }, { "name": "Complete", @@ -73521,7 +77503,7 @@ } }, "sourceFile": "src/Aspire.Hosting/ApplicationModel/ResourceLoggerService.cs", - "sourceLines": "273-283" + "sourceLines": "276-286" }, { "name": "Complete", @@ -73552,7 +77534,7 @@ } }, "sourceFile": "src/Aspire.Hosting/ApplicationModel/ResourceLoggerService.cs", - "sourceLines": "291-297" + "sourceLines": "294-300" }, { "name": "Dispose", @@ -73569,7 +77551,7 @@ ] }, "sourceFile": "src/Aspire.Hosting/ApplicationModel/ResourceLoggerService.cs", - "sourceLines": "639-653" + "sourceLines": "879-893" }, { "name": "GetAllAsync", @@ -73606,7 +77588,7 @@ } }, "sourceFile": "src/Aspire.Hosting/ApplicationModel/ResourceLoggerService.cs", - "sourceLines": "159-168" + "sourceLines": "147-156" }, { "name": "GetAllAsync", @@ -73643,7 +77625,7 @@ } }, "sourceFile": "src/Aspire.Hosting/ApplicationModel/ResourceLoggerService.cs", - "sourceLines": "199-201" + "sourceLines": "187-189" }, { "name": "GetLogger", @@ -73763,7 +77745,7 @@ ] }, "sourceFile": "src/Aspire.Hosting/ApplicationModel/ResourceLoggerService.cs", - "sourceLines": "225-265" + "sourceLines": "228-268" }, { "name": "WatchAsync", @@ -73800,7 +77782,7 @@ } }, "sourceFile": "src/Aspire.Hosting/ApplicationModel/ResourceLoggerService.cs", - "sourceLines": "179-188" + "sourceLines": "167-176" }, { "name": "WatchAsync", @@ -73837,7 +77819,7 @@ } }, "sourceFile": "src/Aspire.Hosting/ApplicationModel/ResourceLoggerService.cs", - "sourceLines": "211-213" + "sourceLines": "199-201" } ] }, @@ -74009,7 +77991,7 @@ } }, "sourceFile": "src/Aspire.Hosting/ApplicationModel/ResourceNotificationService.cs", - "sourceLines": "27-676" + "sourceLines": "27-698" }, { "name": ".ctor", @@ -74078,7 +78060,7 @@ } }, "sourceFile": "src/Aspire.Hosting/ApplicationModel/ResourceNotificationService.cs", - "sourceLines": "27-676" + "sourceLines": "27-698" }, { "name": "Dispose", @@ -74095,7 +78077,7 @@ ] }, "sourceFile": "src/Aspire.Hosting/ApplicationModel/ResourceNotificationService.cs", - "sourceLines": "1337-1338" + "sourceLines": "1382-1383" }, { "name": "PublishUpdateAsync", @@ -74132,6 +78114,12 @@ "text": " for a resource. " } ], + "remarks": [ + { + "kind": "text", + "text": " If the resulting snapshot has the same content as the current snapshot, the update is not published and the snapshot version is not incremented. " + } + ], "parameters": { "resource": [ { @@ -74154,7 +78142,7 @@ } }, "sourceFile": "src/Aspire.Hosting/ApplicationModel/ResourceNotificationService.cs", - "sourceLines": "804-908" + "sourceLines": "830-952" }, { "name": "PublishUpdateAsync", @@ -74187,6 +78175,12 @@ "text": " for a resource. " } ], + "remarks": [ + { + "kind": "text", + "text": " If the resulting snapshot has the same content as the current snapshot, the update is not published and the snapshot version is not incremented. " + } + ], "parameters": { "resource": [ { @@ -74203,7 +78197,7 @@ } }, "sourceFile": "src/Aspire.Hosting/ApplicationModel/ResourceNotificationService.cs", - "sourceLines": "804-908" + "sourceLines": "830-952" }, { "name": "TryGetCurrentState", @@ -74341,7 +78335,7 @@ } }, "sourceFile": "src/Aspire.Hosting/ApplicationModel/ResourceNotificationService.cs", - "sourceLines": "700-733" + "sourceLines": "722-755" }, { "name": "WaitForDependenciesAsync", @@ -74393,7 +78387,7 @@ ] }, "sourceFile": "src/Aspire.Hosting/ApplicationModel/ResourceNotificationService.cs", - "sourceLines": "462-579" + "sourceLines": "478-595" }, { "name": "WaitForResourceAsync", @@ -75008,7 +79002,7 @@ ] }, "sourceFile": "src/Aspire.Hosting/ApplicationModel/ResourceNotificationService.cs", - "sourceLines": "741-794" + "sourceLines": "763-816" } ] }, @@ -75036,7 +79030,7 @@ ] }, "sourceFile": "src/Aspire.Hosting/ApplicationModel/ResourceNotificationService.cs", - "sourceLines": "1418-1418", + "sourceLines": "1463-1463", "members": [ { "name": ".ctor", @@ -75098,7 +79092,7 @@ } }, "sourceFile": "src/Aspire.Hosting/ApplicationModel/CustomResourceSnapshot.cs", - "sourceLines": "256-256", + "sourceLines": "402-402", "members": [ { "name": ".ctor", @@ -75140,7 +79134,7 @@ } }, "sourceFile": "src/Aspire.Hosting/ApplicationModel/CustomResourceSnapshot.cs", - "sourceLines": "256-256" + "sourceLines": "402-402" }, { "name": "$", @@ -75169,7 +79163,7 @@ } ], "sourceFile": "src/Aspire.Hosting/ApplicationModel/CustomResourceSnapshot.cs", - "sourceLines": "268-271" + "sourceLines": "438-441" }, { "name": "Equals", @@ -75360,6 +79354,65 @@ ] } }, + { + "name": "DisplayName", + "kind": "property", + "accessibility": "public", + "signature": "public string? ResourcePropertySnapshot.DisplayName", + "returnType": "string?", + "isReturnNullable": true, + "hasGet": true, + "hasSet": true, + "isInitOnly": true, + "docs": { + "summary": [ + { + "kind": "text", + "text": " The display name visible in UI. " + } + ], + "remarks": [ + { + "kind": "text", + "text": " If not specified, clients may use the " + }, + { + "kind": "cref", + "value": "P:Aspire.Hosting.ApplicationModel.ResourcePropertySnapshot.Name" + }, + { + "kind": "text", + "text": " as the display name. " + } + ] + }, + "sourceFile": "src/Aspire.Hosting/ApplicationModel/CustomResourceSnapshot.cs" + }, + { + "name": "IsHighlighted", + "kind": "property", + "accessibility": "public", + "signature": "public bool ResourcePropertySnapshot.IsHighlighted", + "returnType": "bool", + "hasGet": true, + "hasSet": true, + "isInitOnly": true, + "docs": { + "summary": [ + { + "kind": "text", + "text": " A flag indicating whether the property is highlighted in the UI. " + } + ], + "remarks": [ + { + "kind": "text", + "text": " Highlighted properties are shown by default even if the client does not otherwise recognize the property name. " + } + ] + }, + "sourceFile": "src/Aspire.Hosting/ApplicationModel/CustomResourceSnapshot.cs" + }, { "name": "IsSensitive", "kind": "property", @@ -75404,6 +79457,32 @@ }, "sourceFile": "src/Aspire.Hosting/ApplicationModel/CustomResourceSnapshot.cs" }, + { + "name": "SortOrder", + "kind": "property", + "accessibility": "public", + "signature": "public int? ResourcePropertySnapshot.SortOrder", + "returnType": "int?", + "isReturnNullable": true, + "hasGet": true, + "hasSet": true, + "isInitOnly": true, + "docs": { + "summary": [ + { + "kind": "text", + "text": " Gets the optional sort order used when displaying the property in UI. " + } + ], + "remarks": [ + { + "kind": "text", + "text": " Properties with lower values are displayed before properties with higher values. " + } + ] + }, + "sourceFile": "src/Aspire.Hosting/ApplicationModel/CustomResourceSnapshot.cs" + }, { "name": "Value", "kind": "property", @@ -75762,7 +79841,7 @@ } }, "sourceFile": "src/Aspire.Hosting/ApplicationModel/CustomResourceSnapshot.cs", - "sourceLines": "176-176", + "sourceLines": "322-322", "members": [ { "name": ".ctor", @@ -75816,7 +79895,7 @@ } }, "sourceFile": "src/Aspire.Hosting/ApplicationModel/CustomResourceSnapshot.cs", - "sourceLines": "176-176" + "sourceLines": "322-322" }, { "name": "$", @@ -76016,7 +80095,7 @@ ] }, "sourceFile": "src/Aspire.Hosting/ApplicationModel/CustomResourceSnapshot.cs", - "sourceLines": "183-183" + "sourceLines": "329-329" }, { "name": "op_Inequality", @@ -76369,12 +80448,26 @@ "signature": "public int? ResourceUrlAnnotation.DisplayOrder", "returnType": "int?", "isReturnNullable": true, + "attributes": [ + { + "name": "System.ObsoleteAttribute", + "constructorArguments": [ + "DisplayOrder was incorrectly created as a field. It will be re-added as a property in a future Aspire version." + ] + } + ], "docs": { "summary": [ { "kind": "text", "text": " The display order the URL. Higher values mean sort higher in the list. " } + ], + "remarks": [ + { + "kind": "text", + "text": " This member was incorrectly created as a field. It will be re-added as a property in a future Aspire version. " + } ] }, "sourceFile": "src/Aspire.Hosting/ApplicationModel/ResourceUrlAnnotation.cs" @@ -76977,6 +81070,282 @@ } ] }, + { + "name": "SupportsDebuggingAnnotation", + "fullName": "Aspire.Hosting.ApplicationModel.SupportsDebuggingAnnotation", + "namespace": "Aspire.Hosting.ApplicationModel", + "kind": "class", + "accessibility": "public", + "isSealed": true, + "interfaces": [ + "Aspire.Hosting.ApplicationModel.IResourceAnnotation" + ], + "docs": { + "summary": [ + { + "kind": "text", + "text": " Indicates that a resource can be launched by an IDE or extension host so it can be debugged, instead of being started as a plain process by Aspire. " + } + ], + "remarks": [ + { + "kind": "text", + "text": " Added by " + }, + { + "kind": "cref", + "value": "M:Aspire.Hosting.ResourceBuilderExtensions.WithDebugSupport``2(Aspire.Hosting.ApplicationModel.IResourceBuilder{``0},System.Func{System.String,``1},System.String)" + }, + { + "kind": "text", + "text": " (or its asynchronous overload). The annotation is only honored while a debug session is active; use " + }, + { + "kind": "cref", + "value": "M:Aspire.Hosting.ApplicationModel.DebugSupportExtensions.SupportsDebugging(Aspire.Hosting.ApplicationModel.IResource,Microsoft.Extensions.Configuration.IConfiguration,Aspire.Hosting.ApplicationModel.SupportsDebuggingAnnotation@)" + }, + { + "kind": "text", + "text": " to test for that, and " + }, + { + "kind": "cref", + "value": "M:Aspire.Hosting.ApplicationModel.DebugSupportExtensions.CreateLaunchConfigurationAsync(Aspire.Hosting.ApplicationModel.IResource,System.String,System.Threading.CancellationToken)" + }, + { + "kind": "text", + "text": " to inspect the launch configuration the resource will send. " + } + ] + }, + "attributes": [ + { + "name": "System.Diagnostics.CodeAnalysis.ExperimentalAttribute", + "constructorArguments": [ + "ASPIREEXTENSION001" + ], + "arguments": { + "UrlFormat": "https://aka.ms/aspire/diagnostics/{0}" + } + } + ], + "sourceFile": "src/Aspire.Hosting/SupportsDebuggingAnnotation.cs", + "sourceLines": "24-24", + "members": [ + { + "name": "LaunchConfigurationType", + "kind": "property", + "accessibility": "public", + "signature": "public string SupportsDebuggingAnnotation.LaunchConfigurationType", + "returnType": "string", + "hasGet": true, + "docs": { + "summary": [ + { + "kind": "text", + "text": " Gets the launch configuration type identifier, for example " + }, + { + "kind": "cref", + "value": "F:Aspire.Hosting.ApplicationModel.KnownLaunchConfigurationTypes.Project" + }, + { + "kind": "text", + "text": ". " + } + ], + "remarks": [ + { + "kind": "text", + "text": " The IDE advertises the launch configuration types it can handle; a resource whose type is not advertised is started as a plain process instead. " + }, + { + "kind": "para", + "children": [ + { + "kind": "text", + "text": " Exception: when the active debug session does not advertise any launch configuration types at all (for example Visual Studio, which does not send a capability list), " + }, + { + "kind": "cref", + "value": "F:Aspire.Hosting.ApplicationModel.KnownLaunchConfigurationTypes.Project" + }, + { + "kind": "text", + "text": " is treated as implicitly supported rather than falling back to plain process execution. " + } + ] + } + ] + }, + "sourceFile": "src/Aspire.Hosting/SupportsDebuggingAnnotation.cs", + "sourceLines": "49-49" + } + ] + }, + { + "name": "TerminalOptions", + "fullName": "Aspire.Hosting.ApplicationModel.TerminalOptions", + "namespace": "Aspire.Hosting.ApplicationModel", + "kind": "class", + "accessibility": "public", + "isSealed": true, + "docs": { + "summary": [ + { + "kind": "text", + "text": " Options for configuring a terminal session. " + } + ] + }, + "attributes": [ + { + "name": "System.Diagnostics.CodeAnalysis.ExperimentalAttribute", + "constructorArguments": [ + "ASPIRETERMINAL001" + ], + "arguments": { + "UrlFormat": "https://aka.ms/aspire/diagnostics/{0}" + } + } + ], + "sourceFile": "src/Aspire.Hosting/ApplicationModel/TerminalAnnotation.cs", + "sourceLines": "97-97", + "members": [ + { + "name": ".ctor", + "kind": "constructor", + "accessibility": "public", + "signature": "public TerminalOptions.TerminalOptions()", + "returnType": "void", + "sourceFile": "src/Aspire.Hosting/ApplicationModel/TerminalAnnotation.cs", + "sourceLines": "99-100" + }, + { + "name": "Columns", + "kind": "property", + "accessibility": "public", + "signature": "public int TerminalOptions.Columns", + "returnType": "int", + "hasGet": true, + "hasSet": true, + "docs": { + "summary": [ + { + "kind": "text", + "text": " Gets or sets the initial number of columns for the terminal. The value must be greater than zero. Defaults to 120. " + } + ], + "exceptions": [ + { + "type": "T:System.ArgumentOutOfRangeException", + "description": [ + { + "kind": "text", + "text": "Thrown when set to zero or a negative value." + } + ] + } + ] + }, + "sourceFile": "src/Aspire.Hosting/ApplicationModel/TerminalAnnotation.cs" + }, + { + "name": "Rows", + "kind": "property", + "accessibility": "public", + "signature": "public int TerminalOptions.Rows", + "returnType": "int", + "hasGet": true, + "hasSet": true, + "docs": { + "summary": [ + { + "kind": "text", + "text": " Gets or sets the initial number of rows for the terminal. The value must be greater than zero. Defaults to 30. " + } + ], + "exceptions": [ + { + "type": "T:System.ArgumentOutOfRangeException", + "description": [ + { + "kind": "text", + "text": "Thrown when set to zero or a negative value." + } + ] + } + ] + }, + "sourceFile": "src/Aspire.Hosting/ApplicationModel/TerminalAnnotation.cs" + }, + { + "name": "ShowTerminalHost", + "kind": "property", + "accessibility": "public", + "signature": "public bool TerminalOptions.ShowTerminalHost", + "returnType": "bool", + "hasGet": true, + "hasSet": true, + "docs": { + "summary": [ + { + "kind": "text", + "text": " Gets or sets a value indicating whether the per-replica terminal host resources (named " + }, + { + "kind": "code", + "text": "{parent}-terminalhost-{index}" + }, + { + "kind": "text", + "text": ") should appear in the resource list. " + } + ], + "remarks": [ + { + "kind": "text", + "text": " Defaults to " + }, + { + "kind": "code", + "text": "false" + }, + { + "kind": "text", + "text": ": terminal host resources are hidden from the dashboard and CLI resource list because they are an implementation detail of the " + }, + { + "kind": "cref", + "value": "M:Aspire.Hosting.TerminalResourceBuilderExtensions.WithTerminal``1(Aspire.Hosting.ApplicationModel.IResourceBuilder{``0},System.Action{Aspire.Hosting.ApplicationModel.TerminalOptions})" + }, + { + "kind": "text", + "text": " feature, not something the user explicitly added to their app model. " + }, + { + "kind": "para", + "children": [ + { + "kind": "text", + "text": " Set to " + }, + { + "kind": "code", + "text": "true" + }, + { + "kind": "text", + "text": " when diagnosing terminal-host startup / connectivity issues so the host's state, exit code, logs, and (eventually) telemetry are visible alongside the parent resource. This is useful when investigating cases like \"DCP never dialed the producer UDS\" or \"the host crashed during recycle\". " + } + ] + } + ] + }, + "sourceFile": "src/Aspire.Hosting/ApplicationModel/TerminalAnnotation.cs" + } + ] + }, { "name": "UpdateCommandStateContext", "fullName": "Aspire.Hosting.ApplicationModel.UpdateCommandStateContext", @@ -77009,7 +81378,7 @@ } ], "sourceFile": "src/Aspire.Hosting/ApplicationModel/ResourceCommandAnnotation.cs", - "sourceLines": "360-360", + "sourceLines": "363-363", "members": [ { "name": ".ctor", @@ -77055,10 +81424,16 @@ "hasSet": true, "isInitOnly": true, "attributes": [ + { + "name": "System.ObsoleteAttribute", + "constructorArguments": [ + "Use Services instead." + ] + }, { "name": "Aspire.Hosting.AspireExportIgnoreAttribute", "arguments": { - "Reason": "IServiceProvider is not usable from polyglot command state callbacks." + "Reason": "Obsolete alias for Services. The service provider is exposed to polyglot hosts via Services (services)." } } ], @@ -77071,6 +81446,25 @@ ] }, "sourceFile": "src/Aspire.Hosting/ApplicationModel/ResourceCommandAnnotation.cs" + }, + { + "name": "Services", + "kind": "property", + "accessibility": "public", + "signature": "public IServiceProvider UpdateCommandStateContext.Services", + "returnType": "System.IServiceProvider", + "hasGet": true, + "hasSet": true, + "isInitOnly": true, + "docs": { + "summary": [ + { + "kind": "text", + "text": " The service provider. " + } + ] + }, + "sourceFile": "src/Aspire.Hosting/ApplicationModel/ResourceCommandAnnotation.cs" } ] }, @@ -77136,7 +81530,7 @@ } }, "sourceFile": "src/Aspire.Hosting/ApplicationModel/CustomResourceSnapshot.cs", - "sourceLines": "231-231", + "sourceLines": "377-377", "members": [ { "name": ".ctor", @@ -77181,7 +81575,7 @@ } }, "sourceFile": "src/Aspire.Hosting/ApplicationModel/CustomResourceSnapshot.cs", - "sourceLines": "231-231" + "sourceLines": "377-377" }, { "name": "$", @@ -77477,7 +81871,7 @@ } }, "sourceFile": "src/Aspire.Hosting/ApplicationModel/CustomResourceSnapshot.cs", - "sourceLines": "202-202", + "sourceLines": "348-348", "members": [ { "name": ".ctor", @@ -77529,7 +81923,7 @@ } }, "sourceFile": "src/Aspire.Hosting/ApplicationModel/CustomResourceSnapshot.cs", - "sourceLines": "202-207" + "sourceLines": "348-353" }, { "name": "$", @@ -77563,7 +81957,7 @@ } ], "sourceFile": "src/Aspire.Hosting/ApplicationModel/CustomResourceSnapshot.cs", - "sourceLines": "219-223" + "sourceLines": "365-369" }, { "name": "Equals", @@ -78135,7 +82529,7 @@ } }, "sourceFile": "src/Aspire.Hosting/ApplicationModel/CustomResourceSnapshot.cs", - "sourceLines": "241-241", + "sourceLines": "387-387", "members": [ { "name": ".ctor", @@ -78217,7 +82611,7 @@ } }, "sourceFile": "src/Aspire.Hosting/ApplicationModel/CustomResourceSnapshot.cs", - "sourceLines": "241-241" + "sourceLines": "387-387" }, { "name": "$", @@ -82435,19 +86829,8 @@ "description": "The task completed with an error." } ], - "attributes": [ - { - "name": "System.Diagnostics.CodeAnalysis.ExperimentalAttribute", - "constructorArguments": [ - "ASPIREPIPELINES001" - ], - "arguments": { - "UrlFormat": "https://aka.ms/aspire/diagnostics/{0}" - } - } - ], "sourceFile": "src/Aspire.Hosting/Pipelines/CompletionState.cs", - "sourceLines": "12-12", + "sourceLines": "9-9", "members": [] }, { diff --git a/src/frontend/src/data/pkgs/Aspire.Hosting.AWS.13.6.0.json b/src/frontend/src/data/pkgs/Aspire.Hosting.AWS.13.5.0.json similarity index 97% rename from src/frontend/src/data/pkgs/Aspire.Hosting.AWS.13.6.0.json rename to src/frontend/src/data/pkgs/Aspire.Hosting.AWS.13.5.0.json index fe7a76094..fd191919b 100644 --- a/src/frontend/src/data/pkgs/Aspire.Hosting.AWS.13.6.0.json +++ b/src/frontend/src/data/pkgs/Aspire.Hosting.AWS.13.5.0.json @@ -1,7 +1,7 @@ { "package": { "name": "Aspire.Hosting.AWS", - "version": "13.6.0", + "version": "13.5.0", "targetFramework": "net10.0", "sourceRepository": "https://github.com/aws/integrations-on-dotnet-aspire-for-aws" }, @@ -139,7 +139,7 @@ ] }, "sourceFile": "C:\\build\\src\\Aspire.Hosting.AWS\\Lambda\\APIGatewayExtensions.cs", - "sourceLines": "30-30", + "sourceLines": "29-29", "members": [ { "name": "AddAWSAPIGatewayEmulator", @@ -170,13 +170,8 @@ "isOptional": true } ], - "attributes": [ - { - "name": "Aspire.Hosting.AspireExportAttribute" - } - ], "sourceFile": "C:\\build\\src\\Aspire.Hosting.AWS\\Lambda\\APIGatewayExtensions.cs", - "sourceLines": "30-77" + "sourceLines": "29-76" }, { "name": "WithReference", @@ -205,16 +200,8 @@ "type": "string" } ], - "attributes": [ - { - "name": "Aspire.Hosting.AspireExportAttribute", - "constructorArguments": [ - "withAPIGatewayLambdaReference" - ] - } - ], "sourceFile": "C:\\build\\src\\Aspire.Hosting.AWS\\Lambda\\APIGatewayExtensions.cs", - "sourceLines": "92-109" + "sourceLines": "90-107" } ] }, @@ -1369,7 +1356,7 @@ ] }, "sourceFile": "C:\\build\\src\\Aspire.Hosting.AWS\\DynamoDB\\DynamoDBLocalResourceBuilderExtensions.cs", - "sourceLines": "24-24", + "sourceLines": "23-23", "members": [ { "name": "AddAWSDynamoDBLocal", @@ -1396,13 +1383,8 @@ "isOptional": true } ], - "attributes": [ - { - "name": "Aspire.Hosting.AspireExportAttribute" - } - ], "sourceFile": "C:\\build\\src\\Aspire.Hosting.AWS\\DynamoDB\\DynamoDBLocalResourceBuilderExtensions.cs", - "sourceLines": "24-37" + "sourceLines": "23-36" }, { "name": "WithImagePullPolicy", @@ -1424,7 +1406,7 @@ } ], "sourceFile": "C:\\build\\src\\Aspire.Hosting.AWS\\DynamoDB\\DynamoDBLocalResourceBuilderExtensions.cs", - "sourceLines": "49-54" + "sourceLines": "48-53" }, { "name": "WithReference", @@ -1453,16 +1435,8 @@ ] } ], - "attributes": [ - { - "name": "Aspire.Hosting.AspireExportAttribute", - "constructorArguments": [ - "withDynamoDBLocalReference" - ] - } - ], "sourceFile": "C:\\build\\src\\Aspire.Hosting.AWS\\DynamoDB\\DynamoDBLocalResourceBuilderExtensions.cs", - "sourceLines": "74-95" + "sourceLines": "72-93" } ] }, @@ -1608,7 +1582,7 @@ ] }, "sourceFile": "C:\\build\\src\\Aspire.Hosting.AWS\\Lambda\\DynamoDBStreamsEventSourceExtensions.cs", - "sourceLines": "33-33", + "sourceLines": "32-32", "members": [ { "name": "WithDynamoDBStreamsEventSource", @@ -1635,16 +1609,8 @@ "isOptional": true } ], - "attributes": [ - { - "name": "Aspire.Hosting.AspireExportAttribute", - "constructorArguments": [ - "withDynamoDBStreamsEventSource" - ] - } - ], "sourceFile": "C:\\build\\src\\Aspire.Hosting.AWS\\Lambda\\DynamoDBStreamsEventSourceExtensions.cs", - "sourceLines": "33-33" + "sourceLines": "32-32" }, { "name": "WithDynamoDBStreamsEventSource", @@ -1672,7 +1638,7 @@ } ], "sourceFile": "C:\\build\\src\\Aspire.Hosting.AWS\\Lambda\\DynamoDBStreamsEventSourceExtensions.cs", - "sourceLines": "47-59" + "sourceLines": "46-58" }, { "name": "WithDynamoDBStreamsEventSource", @@ -1700,7 +1666,7 @@ } ], "sourceFile": "C:\\build\\src\\Aspire.Hosting.AWS\\Lambda\\DynamoDBStreamsEventSourceExtensions.cs", - "sourceLines": "73-84" + "sourceLines": "72-83" } ] }, @@ -1845,7 +1811,7 @@ } ], "sourceFile": "C:\\build\\src\\Aspire.Hosting.AWS\\Lambda\\LambdaExtensions.cs", - "sourceLines": "33-34" + "sourceLines": "33-129" }, { "name": "AddAWSLambdaServiceEmulator", @@ -1868,13 +1834,8 @@ "isOptional": true } ], - "attributes": [ - { - "name": "Aspire.Hosting.AspireExportAttribute" - } - ], "sourceFile": "C:\\build\\src\\Aspire.Hosting.AWS\\Lambda\\LambdaExtensions.cs", - "sourceLines": "204-266" + "sourceLines": "143-205" } ] }, @@ -2113,7 +2074,7 @@ ] }, "sourceFile": "C:\\build\\src\\Aspire.Hosting.AWS\\SDKResourceExtensions.cs", - "sourceLines": "22-22", + "sourceLines": "21-21", "members": [ { "name": "AddAWSSDKConfig", @@ -2130,13 +2091,8 @@ "modifier": "this" } ], - "attributes": [ - { - "name": "Aspire.Hosting.AspireExportAttribute" - } - ], "sourceFile": "C:\\build\\src\\Aspire.Hosting.AWS\\SDKResourceExtensions.cs", - "sourceLines": "22-24" + "sourceLines": "21-23" }, { "name": "WithProfile", @@ -2157,13 +2113,8 @@ "type": "string" } ], - "attributes": [ - { - "name": "Aspire.Hosting.AspireExportAttribute" - } - ], "sourceFile": "C:\\build\\src\\Aspire.Hosting.AWS\\SDKResourceExtensions.cs", - "sourceLines": "36-37" + "sourceLines": "34-35" }, { "name": "WithReference", @@ -2192,16 +2143,8 @@ ] } ], - "attributes": [ - { - "name": "Aspire.Hosting.AspireExportAttribute", - "constructorArguments": [ - "withAWSSDKConfigReference" - ] - } - ], "sourceFile": "C:\\build\\src\\Aspire.Hosting.AWS\\SDKResourceExtensions.cs", - "sourceLines": "86-98" + "sourceLines": "70-82" }, { "name": "WithRegion", @@ -2223,37 +2166,7 @@ } ], "sourceFile": "C:\\build\\src\\Aspire.Hosting.AWS\\SDKResourceExtensions.cs", - "sourceLines": "47-48" - }, - { - "name": "WithRegion", - "kind": "method", - "accessibility": "public", - "signature": "public static IAWSSDKConfig SDKResourceExtensions.WithRegion(this IAWSSDKConfig config, string systemName)", - "returnType": "Aspire.Hosting.AWS.IAWSSDKConfig", - "isStatic": true, - "isExtension": true, - "parameters": [ - { - "name": "config", - "type": "Aspire.Hosting.AWS.IAWSSDKConfig", - "modifier": "this" - }, - { - "name": "systemName", - "type": "string" - } - ], - "attributes": [ - { - "name": "Aspire.Hosting.AspireExportAttribute", - "constructorArguments": [ - "withRegion" - ] - } - ], - "sourceFile": "C:\\build\\src\\Aspire.Hosting.AWS\\SDKResourceExtensions.cs", - "sourceLines": "59-60" + "sourceLines": "45-46" }, { "name": "WithSdkValidation", @@ -2274,13 +2187,8 @@ "type": "bool" } ], - "attributes": [ - { - "name": "Aspire.Hosting.AspireExportAttribute" - } - ], "sourceFile": "C:\\build\\src\\Aspire.Hosting.AWS\\SDKResourceExtensions.cs", - "sourceLines": "71-73" + "sourceLines": "56-58" } ] }, @@ -2412,7 +2320,7 @@ ] }, "sourceFile": "C:\\build\\src\\Aspire.Hosting.AWS\\Lambda\\SQSEventSourceExtensions.cs", - "sourceLines": "38-38", + "sourceLines": "37-37", "members": [ { "name": "WithSQSEventSource", @@ -2439,16 +2347,8 @@ "isOptional": true } ], - "attributes": [ - { - "name": "Aspire.Hosting.AspireExportAttribute", - "constructorArguments": [ - "withSQSEventSource" - ] - } - ], "sourceFile": "C:\\build\\src\\Aspire.Hosting.AWS\\Lambda\\SQSEventSourceExtensions.cs", - "sourceLines": "38-38" + "sourceLines": "37-37" }, { "name": "WithSQSEventSource", @@ -2476,7 +2376,7 @@ } ], "sourceFile": "C:\\build\\src\\Aspire.Hosting.AWS\\Lambda\\SQSEventSourceExtensions.cs", - "sourceLines": "53-70" + "sourceLines": "52-69" }, { "name": "WithSQSEventSource", @@ -2504,7 +2404,7 @@ } ], "sourceFile": "C:\\build\\src\\Aspire.Hosting.AWS\\Lambda\\SQSEventSourceExtensions.cs", - "sourceLines": "85-101" + "sourceLines": "84-100" } ] }, @@ -2632,13 +2532,8 @@ "namespace": "Aspire.Hosting.AWS", "kind": "interface", "accessibility": "public", - "attributes": [ - { - "name": "Aspire.Hosting.AspireExportAttribute" - } - ], "sourceFile": "C:\\build\\src\\Aspire.Hosting.AWS\\IAWSSDKConfig.cs", - "sourceLines": "31-31", + "sourceLines": "30-30", "members": [ { "name": "Profile", @@ -4127,28 +4022,6 @@ "hasSet": true, "sourceFile": "C:\\build\\src\\Aspire.Hosting.AWS\\Deployment\\PublishECSFargateServiceExpressAnnotation.cs" }, - { - "name": "ConstructContainerDefinitionCallback", - "kind": "property", - "accessibility": "public", - "signature": "public PublishCallback? PublishECSFargateExpressServiceConfig.ConstructContainerDefinitionCallback", - "returnType": "Aspire.Hosting.AWS.Deployment.PublishCallback?", - "isReturnNullable": true, - "hasGet": true, - "hasSet": true, - "sourceFile": "C:\\build\\src\\Aspire.Hosting.AWS\\Deployment\\PublishECSFargateServiceExpressAnnotation.cs" - }, - { - "name": "ConstructFargateTaskDefinitionCallback", - "kind": "property", - "accessibility": "public", - "signature": "public PublishCallback? PublishECSFargateExpressServiceConfig.ConstructFargateTaskDefinitionCallback", - "returnType": "Aspire.Hosting.AWS.Deployment.PublishCallback?", - "isReturnNullable": true, - "hasGet": true, - "hasSet": true, - "sourceFile": "C:\\build\\src\\Aspire.Hosting.AWS\\Deployment\\PublishECSFargateServiceExpressAnnotation.cs" - }, { "name": "PropsCfnExpressGatewayServicePropsCallback", "kind": "property", @@ -4159,28 +4032,6 @@ "hasGet": true, "hasSet": true, "sourceFile": "C:\\build\\src\\Aspire.Hosting.AWS\\Deployment\\PublishECSFargateServiceExpressAnnotation.cs" - }, - { - "name": "PropsContainerDefinitionCallback", - "kind": "property", - "accessibility": "public", - "signature": "public PublishCallback? PublishECSFargateExpressServiceConfig.PropsContainerDefinitionCallback", - "returnType": "Aspire.Hosting.AWS.Deployment.PublishCallback?", - "isReturnNullable": true, - "hasGet": true, - "hasSet": true, - "sourceFile": "C:\\build\\src\\Aspire.Hosting.AWS\\Deployment\\PublishECSFargateServiceExpressAnnotation.cs" - }, - { - "name": "PropsFargateTaskDefinitionCallback", - "kind": "property", - "accessibility": "public", - "signature": "public PublishCallback? PublishECSFargateExpressServiceConfig.PropsFargateTaskDefinitionCallback", - "returnType": "Aspire.Hosting.AWS.Deployment.PublishCallback?", - "isReturnNullable": true, - "hasGet": true, - "hasSet": true, - "sourceFile": "C:\\build\\src\\Aspire.Hosting.AWS\\Deployment\\PublishECSFargateServiceExpressAnnotation.cs" } ] }, @@ -4771,17 +4622,6 @@ "sourceFile": "C:\\build\\src\\Aspire.Hosting.AWS\\Deployment\\CDKDefaults\\CDKDefaultsProvider.ECSFargateExpressService.cs", "sourceLines": "31-31" }, - { - "name": "ECSFargateExpressContainerPortName", - "kind": "property", - "accessibility": "public", - "signature": "public virtual string CDKDefaultsProvider.ECSFargateExpressContainerPortName", - "returnType": "string", - "isVirtual": true, - "hasGet": true, - "sourceFile": "C:\\build\\src\\Aspire.Hosting.AWS\\Deployment\\CDKDefaults\\CDKDefaultsProvider.ECSFargateExpressService.cs", - "sourceLines": "40-40" - }, { "name": "ECSFargateExpressCpu", "kind": "property", @@ -5981,13 +5821,8 @@ } ] }, - "attributes": [ - { - "name": "Aspire.Hosting.AspireDtoAttribute" - } - ], "sourceFile": "C:\\build\\src\\Aspire.Hosting.AWS\\DynamoDB\\DynamoDBLocalOptions.cs", - "sourceLines": "17-17", + "sourceLines": "16-16", "members": [ { "name": ".ctor", @@ -5996,7 +5831,7 @@ "signature": "public DynamoDBLocalOptions.DynamoDBLocalOptions()", "returnType": "void", "sourceFile": "C:\\build\\src\\Aspire.Hosting.AWS\\DynamoDB\\DynamoDBLocalOptions.cs", - "sourceLines": "17-27" + "sourceLines": "16-26" }, { "name": "DelayTransientStatuses", @@ -6128,13 +5963,8 @@ ] } }, - "attributes": [ - { - "name": "Aspire.Hosting.AspireExportAttribute" - } - ], "sourceFile": "C:\\build\\src\\Aspire.Hosting.AWS\\DynamoDB\\DynamoDBLocalResource.cs", - "sourceLines": "11-11", + "sourceLines": "10-10", "members": [ { "name": ".ctor", @@ -6153,7 +5983,7 @@ } ], "sourceFile": "C:\\build\\src\\Aspire.Hosting.AWS\\DynamoDB\\DynamoDBLocalResource.cs", - "sourceLines": "11-16" + "sourceLines": "10-15" } ] }, @@ -6184,13 +6014,8 @@ } ] }, - "attributes": [ - { - "name": "Aspire.Hosting.AspireDtoAttribute" - } - ], "sourceFile": "C:\\build\\src\\Aspire.Hosting.AWS\\Lambda\\APIGatewayEmulatorOptions.cs", - "sourceLines": "11-11", + "sourceLines": "10-10", "members": [ { "name": ".ctor", @@ -6199,7 +6024,7 @@ "signature": "public APIGatewayEmulatorOptions.APIGatewayEmulatorOptions()", "returnType": "void", "sourceFile": "C:\\build\\src\\Aspire.Hosting.AWS\\Lambda\\APIGatewayEmulatorOptions.cs", - "sourceLines": "11-14" + "sourceLines": "10-13" }, { "name": "DisableHttpsEndpoint", @@ -6268,13 +6093,8 @@ } ] }, - "attributes": [ - { - "name": "Aspire.Hosting.AspireExportAttribute" - } - ], "sourceFile": "C:\\build\\src\\Aspire.Hosting.AWS\\Lambda\\APIGatewayEmulatorResource.cs", - "sourceLines": "14-14", + "sourceLines": "13-13", "members": [ { "name": ".ctor", @@ -6293,7 +6113,7 @@ } ], "sourceFile": "C:\\build\\src\\Aspire.Hosting.AWS\\Lambda\\APIGatewayEmulatorResource.cs", - "sourceLines": "14-17" + "sourceLines": "13-16" } ] }, @@ -6341,13 +6161,8 @@ } ] }, - "attributes": [ - { - "name": "Aspire.Hosting.AspireDtoAttribute" - } - ], "sourceFile": "C:\\build\\src\\Aspire.Hosting.AWS\\Lambda\\DynamoDBStreamsEventSourceOptions.cs", - "sourceLines": "15-15", + "sourceLines": "14-14", "members": [ { "name": ".ctor", @@ -6405,13 +6220,8 @@ } ] }, - "attributes": [ - { - "name": "Aspire.Hosting.AspireDtoAttribute" - } - ], "sourceFile": "C:\\build\\src\\Aspire.Hosting.AWS\\Lambda\\LambdaEmulatorOptions.cs", - "sourceLines": "11-11", + "sourceLines": "10-10", "members": [ { "name": ".ctor", @@ -6420,7 +6230,7 @@ "signature": "public LambdaEmulatorOptions.LambdaEmulatorOptions()", "returnType": "void", "sourceFile": "C:\\build\\src\\Aspire.Hosting.AWS\\Lambda\\LambdaEmulatorOptions.cs", - "sourceLines": "11-14" + "sourceLines": "10-13" }, { "name": "AllowDowngrade", @@ -6531,13 +6341,8 @@ } ] }, - "attributes": [ - { - "name": "Aspire.Hosting.AspireExportAttribute" - } - ], "sourceFile": "C:\\build\\src\\Aspire.Hosting.AWS\\Lambda\\LambdaEmulatorResource.cs", - "sourceLines": "13-13", + "sourceLines": "12-12", "members": [ { "name": ".ctor", @@ -6552,7 +6357,7 @@ } ], "sourceFile": "C:\\build\\src\\Aspire.Hosting.AWS\\Lambda\\LambdaEmulatorResource.cs", - "sourceLines": "13-16" + "sourceLines": "12-15" } ] }, @@ -6619,13 +6424,8 @@ } ] }, - "attributes": [ - { - "name": "Aspire.Hosting.AspireExportAttribute" - } - ], "sourceFile": "C:\\build\\src\\Aspire.Hosting.AWS\\Lambda\\LambdaProjectResource.cs", - "sourceLines": "23-23", + "sourceLines": "22-22", "members": [ { "name": ".ctor", @@ -6640,7 +6440,7 @@ } ], "sourceFile": "C:\\build\\src\\Aspire.Hosting.AWS\\Lambda\\LambdaProjectResource.cs", - "sourceLines": "23-52" + "sourceLines": "22-51" } ] }, @@ -6708,13 +6508,8 @@ } ] }, - "attributes": [ - { - "name": "Aspire.Hosting.AspireDtoAttribute" - } - ], "sourceFile": "C:\\build\\src\\Aspire.Hosting.AWS\\Lambda\\SQSEventSourceOptions.cs", - "sourceLines": "15-15", + "sourceLines": "14-14", "members": [ { "name": ".ctor", diff --git a/src/frontend/src/data/pkgs/Aspire.Hosting.AgentFramework.DevUI.1.17.0-preview.260804.1.json b/src/frontend/src/data/pkgs/Aspire.Hosting.AgentFramework.DevUI.1.16.0-preview.260730.1.json similarity index 99% rename from src/frontend/src/data/pkgs/Aspire.Hosting.AgentFramework.DevUI.1.17.0-preview.260804.1.json rename to src/frontend/src/data/pkgs/Aspire.Hosting.AgentFramework.DevUI.1.16.0-preview.260730.1.json index 0313ce471..76e9511bf 100644 --- a/src/frontend/src/data/pkgs/Aspire.Hosting.AgentFramework.DevUI.1.17.0-preview.260804.1.json +++ b/src/frontend/src/data/pkgs/Aspire.Hosting.AgentFramework.DevUI.1.16.0-preview.260730.1.json @@ -1,10 +1,10 @@ { "package": { "name": "Aspire.Hosting.AgentFramework.DevUI", - "version": "1.17.0-preview.260804.1", + "version": "1.16.0-preview.260730.1", "targetFramework": "net10.0", "sourceRepository": "https://github.com/microsoft/agent-framework", - "sourceCommit": "1da571860a60f0da4f060bd60c8e7ee8d092cd32" + "sourceCommit": "2aa267e0286b9aab7c491debcca1625752011505" }, "types": [ { diff --git a/src/frontend/src/data/pkgs/Aspire.Hosting.Azure.13.4.6.json b/src/frontend/src/data/pkgs/Aspire.Hosting.Azure.13.5.0.json similarity index 81% rename from src/frontend/src/data/pkgs/Aspire.Hosting.Azure.13.4.6.json rename to src/frontend/src/data/pkgs/Aspire.Hosting.Azure.13.5.0.json index fab0cf078..c3a3b3d24 100644 --- a/src/frontend/src/data/pkgs/Aspire.Hosting.Azure.13.4.6.json +++ b/src/frontend/src/data/pkgs/Aspire.Hosting.Azure.13.5.0.json @@ -1,10 +1,10 @@ { "package": { "name": "Aspire.Hosting.Azure", - "version": "13.4.6", + "version": "13.5.0", "targetFramework": "net10.0", "sourceRepository": "https://github.com/microsoft/aspire", - "sourceCommit": "87fe259e4fc244c599019a7b1304c85a1488f248" + "sourceCommit": "aab640cb6e4d05e1422b3ab723e78524aa1c5a22" }, "types": [ { @@ -1675,7 +1675,7 @@ ] }, "sourceFile": "src/Aspire.Hosting.Azure/Provisioning/AzureProvisionerExtensions.cs", - "sourceLines": "15-15", + "sourceLines": "16-16", "members": [ { "name": "AddAzureProvisioning", @@ -1720,7 +1720,7 @@ } }, "sourceFile": "src/Aspire.Hosting.Azure/Provisioning/AzureProvisionerExtensions.cs", - "sourceLines": "28-71" + "sourceLines": "29-82" } ] }, @@ -3008,7 +3008,7 @@ ] }, "sourceFile": "src/Aspire.Hosting.Azure/AzureResourceExtensions.cs", - "sourceLines": "68-76" + "sourceLines": "72-80" }, { "name": "GetBicepIdentifier", @@ -3053,7 +3053,7 @@ } }, "sourceFile": "src/Aspire.Hosting.Azure/AzureResourceExtensions.cs", - "sourceLines": "37-37" + "sourceLines": "41-41" }, { "name": "PublishAsConnectionString", @@ -3080,6 +3080,12 @@ } ], "attributes": [ + { + "name": "System.ObsoleteAttribute", + "constructorArguments": [ + "PublishAsConnectionString only works with the manifest publisher and is obsolete. Use AddConnectionString in publish-mode app model code instead." + ] + }, { "name": "Aspire.Hosting.AspireExportAttribute" } @@ -3091,6 +3097,12 @@ "text": " Changes the resource to be published as a connection string reference in the manifest. " } ], + "remarks": [ + { + "kind": "text", + "text": " This API only changes the manifest representation; it does not change the resource model used by other publishers. " + } + ], "returns": [ { "kind": "text", @@ -3123,7 +3135,7 @@ } }, "sourceFile": "src/Aspire.Hosting.Azure/AzureResourceExtensions.cs", - "sourceLines": "26-27" + "sourceLines": "30-31" } ] }, @@ -3239,25 +3251,45 @@ "sourceLines": "162-164" }, { - "name": "IsExisting", + "name": "AsExistingInResourceGroup", "kind": "method", "accessibility": "public", - "signature": "public static bool ExistingAzureResourceExtensions.IsExisting(this IResource resource)", - "returnType": "bool", + "signature": "public static IResourceBuilder ExistingAzureResourceExtensions.AsExistingInResourceGroup(this IResourceBuilder builder, IResourceBuilder nameParameter, IResourceBuilder resourceGroupParameter, IResourceBuilder subscriptionParameter)", + "returnType": "Aspire.Hosting.ApplicationModel.IResourceBuilder", "isStatic": true, "isExtension": true, "parameters": [ { - "name": "resource", - "type": "Aspire.Hosting.ApplicationModel.IResource", + "name": "builder", + "type": "Aspire.Hosting.ApplicationModel.IResourceBuilder", "modifier": "this" + }, + { + "name": "nameParameter", + "type": "Aspire.Hosting.ApplicationModel.IResourceBuilder" + }, + { + "name": "resourceGroupParameter", + "type": "Aspire.Hosting.ApplicationModel.IResourceBuilder" + }, + { + "name": "subscriptionParameter", + "type": "Aspire.Hosting.ApplicationModel.IResourceBuilder" + } + ], + "genericParameters": [ + { + "name": "T", + "constraints": [ + "Aspire.Hosting.ApplicationModel.IAzureResource" + ] } ], "attributes": [ { "name": "Aspire.Hosting.AspireExportIgnoreAttribute", "arguments": { - "Reason": "Use the Azure resource-specific polyglot export instead." + "Reason": "Use the polyglot asExistingInResourceGroup overload that accepts string or ParameterResource values instead." } } ], @@ -3265,38 +3297,58 @@ "summary": [ { "kind": "text", - "text": " Determines if the resource is an existing resource. " - } - ], - "remarks": [ - { - "kind": "text", - "text": "This method is not available in polyglot AppHosts. Use the Azure resource-specific polyglot surface instead." + "text": " Marks the resource as an existing resource in a specific resource group and subscription in both run and publish modes. " } ], "returns": [ { "kind": "text", - "text": "True if the resource is an existing resource, otherwise false." + "text": "The resource builder with the existing resource annotation added." } ], "parameters": { - "resource": [ + "builder": [ { "kind": "text", - "text": "The resource to check." + "text": "The resource builder." + } + ], + "nameParameter": [ + { + "kind": "text", + "text": "The name of the existing resource." + } + ], + "resourceGroupParameter": [ + { + "kind": "text", + "text": "The name of the existing resource group." + } + ], + "subscriptionParameter": [ + { + "kind": "text", + "text": "The subscription identifier containing the resource group." + } + ] + }, + "typeParameters": { + "T": [ + { + "kind": "text", + "text": "The type of the resource." } ] } }, "sourceFile": "src/Aspire.Hosting.Azure/ExistingAzureResourceExtensions.cs", - "sourceLines": "24-26" + "sourceLines": "492-494" }, { - "name": "PublishAsExisting", + "name": "AsExistingInResourceGroup", "kind": "method", "accessibility": "public", - "signature": "public static IResourceBuilder ExistingAzureResourceExtensions.PublishAsExisting(this IResourceBuilder builder, IResourceBuilder nameParameter, IResourceBuilder? resourceGroupParameter)", + "signature": "public static IResourceBuilder ExistingAzureResourceExtensions.AsExistingInResourceGroup(this IResourceBuilder builder, string name, string resourceGroup, string subscription)", "returnType": "Aspire.Hosting.ApplicationModel.IResourceBuilder", "isStatic": true, "isExtension": true, @@ -3307,13 +3359,16 @@ "modifier": "this" }, { - "name": "nameParameter", - "type": "Aspire.Hosting.ApplicationModel.IResourceBuilder" + "name": "name", + "type": "string" }, { - "name": "resourceGroupParameter", - "type": "Aspire.Hosting.ApplicationModel.IResourceBuilder?", - "isNullable": true + "name": "resourceGroup", + "type": "string" + }, + { + "name": "subscription", + "type": "string" } ], "genericParameters": [ @@ -3328,7 +3383,7 @@ { "name": "Aspire.Hosting.AspireExportIgnoreAttribute", "arguments": { - "Reason": "Use the polyglot publishAsExisting overload that accepts string or ParameterResource values instead." + "Reason": "Use the polyglot asExistingInResourceGroup overload that accepts string or ParameterResource values instead." } } ], @@ -3336,7 +3391,7 @@ "summary": [ { "kind": "text", - "text": " Marks the resource as an existing resource when the application is deployed. " + "text": " Marks the resource as an existing resource in a specific resource group and subscription in both run and publish modes. " } ], "returns": [ @@ -3352,24 +3407,22 @@ "text": "The resource builder." } ], - "nameParameter": [ + "name": [ { "kind": "text", "text": "The name of the existing resource." } ], - "resourceGroupParameter": [ + "resourceGroup": [ { "kind": "text", - "text": "The name of the existing resource group, or " - }, - { - "kind": "langword", - "value": "null" - }, + "text": "The name of the existing resource group." + } + ], + "subscription": [ { "kind": "text", - "text": " to use the current resource group." + "text": "The subscription identifier containing the resource group." } ] }, @@ -3383,13 +3436,13 @@ } }, "sourceFile": "src/Aspire.Hosting.Azure/ExistingAzureResourceExtensions.cs", - "sourceLines": "107-109" + "sourceLines": "510-512" }, { - "name": "PublishAsExisting", + "name": "AsExistingInSubscription", "kind": "method", "accessibility": "public", - "signature": "public static IResourceBuilder ExistingAzureResourceExtensions.PublishAsExisting(this IResourceBuilder builder, string name, string? resourceGroup)", + "signature": "public static IResourceBuilder ExistingAzureResourceExtensions.AsExistingInSubscription(this IResourceBuilder builder, IResourceBuilder nameParameter, IResourceBuilder subscriptionParameter)", "returnType": "Aspire.Hosting.ApplicationModel.IResourceBuilder", "isStatic": true, "isExtension": true, @@ -3400,13 +3453,12 @@ "modifier": "this" }, { - "name": "name", - "type": "string" + "name": "nameParameter", + "type": "Aspire.Hosting.ApplicationModel.IResourceBuilder" }, { - "name": "resourceGroup", - "type": "string?", - "isNullable": true + "name": "subscriptionParameter", + "type": "Aspire.Hosting.ApplicationModel.IResourceBuilder" } ], "genericParameters": [ @@ -3421,7 +3473,7 @@ { "name": "Aspire.Hosting.AspireExportIgnoreAttribute", "arguments": { - "Reason": "Use the polyglot publishAsExisting overload that accepts string or ParameterResource values instead." + "Reason": "Use the polyglot asExistingInSubscription overload that accepts string or ParameterResource values instead." } } ], @@ -3429,7 +3481,21 @@ "summary": [ { "kind": "text", - "text": " Marks the resource as an existing resource when the application is deployed. " + "text": " Marks the subscription-scoped resource as an existing resource in both run and publish modes. " + } + ], + "remarks": [ + { + "kind": "text", + "text": "Use this only for Azure resources that are deployed at subscription scope. Most Azure services are resource-group scoped and should use " + }, + { + "kind": "code", + "text": "AsExistingInResourceGroup" + }, + { + "kind": "text", + "text": "." } ], "returns": [ @@ -3445,24 +3511,16 @@ "text": "The resource builder." } ], - "name": [ + "nameParameter": [ { "kind": "text", "text": "The name of the existing resource." } ], - "resourceGroup": [ - { - "kind": "text", - "text": "The name of the existing resource group, or " - }, - { - "kind": "langword", - "value": "null" - }, + "subscriptionParameter": [ { "kind": "text", - "text": " to use the current resource group." + "text": "The subscription identifier containing the resource." } ] }, @@ -3476,13 +3534,13 @@ } }, "sourceFile": "src/Aspire.Hosting.Azure/ExistingAzureResourceExtensions.cs", - "sourceLines": "124-126" + "sourceLines": "315-317" }, { - "name": "RunAsExisting", + "name": "AsExistingInSubscription", "kind": "method", "accessibility": "public", - "signature": "public static IResourceBuilder ExistingAzureResourceExtensions.RunAsExisting(this IResourceBuilder builder, IResourceBuilder nameParameter, IResourceBuilder? resourceGroupParameter)", + "signature": "public static IResourceBuilder ExistingAzureResourceExtensions.AsExistingInSubscription(this IResourceBuilder builder, string name, string subscription)", "returnType": "Aspire.Hosting.ApplicationModel.IResourceBuilder", "isStatic": true, "isExtension": true, @@ -3493,13 +3551,12 @@ "modifier": "this" }, { - "name": "nameParameter", - "type": "Aspire.Hosting.ApplicationModel.IResourceBuilder" + "name": "name", + "type": "string" }, { - "name": "resourceGroupParameter", - "type": "Aspire.Hosting.ApplicationModel.IResourceBuilder?", - "isNullable": true + "name": "subscription", + "type": "string" } ], "genericParameters": [ @@ -3514,7 +3571,7 @@ { "name": "Aspire.Hosting.AspireExportIgnoreAttribute", "arguments": { - "Reason": "Use the polyglot runAsExisting overload that accepts string or ParameterResource values instead." + "Reason": "Use the polyglot asExistingInSubscription overload that accepts string or ParameterResource values instead." } } ], @@ -3522,7 +3579,21 @@ "summary": [ { "kind": "text", - "text": " Marks the resource as an existing resource when the application is running. " + "text": " Marks the subscription-scoped resource as an existing resource in both run and publish modes. " + } + ], + "remarks": [ + { + "kind": "text", + "text": "Use this only for Azure resources that are deployed at subscription scope. Most Azure services are resource-group scoped and should use " + }, + { + "kind": "code", + "text": "AsExistingInResourceGroup" + }, + { + "kind": "text", + "text": "." } ], "returns": [ @@ -3538,24 +3609,16 @@ "text": "The resource builder." } ], - "nameParameter": [ + "name": [ { "kind": "text", "text": "The name of the existing resource." } ], - "resourceGroupParameter": [ - { - "kind": "text", - "text": "The name of the existing resource group, or " - }, - { - "kind": "langword", - "value": "null" - }, + "subscription": [ { "kind": "text", - "text": " to use the current resource group." + "text": "The subscription identifier containing the resource." } ] }, @@ -3569,13 +3632,13 @@ } }, "sourceFile": "src/Aspire.Hosting.Azure/ExistingAzureResourceExtensions.cs", - "sourceLines": "52-54" + "sourceLines": "333-335" }, { - "name": "RunAsExisting", + "name": "AsExistingInTenant", "kind": "method", "accessibility": "public", - "signature": "public static IResourceBuilder ExistingAzureResourceExtensions.RunAsExisting(this IResourceBuilder builder, string name, string? resourceGroup)", + "signature": "public static IResourceBuilder ExistingAzureResourceExtensions.AsExistingInTenant(this IResourceBuilder builder, IResourceBuilder nameParameter)", "returnType": "Aspire.Hosting.ApplicationModel.IResourceBuilder", "isStatic": true, "isExtension": true, @@ -3586,13 +3649,8 @@ "modifier": "this" }, { - "name": "name", - "type": "string" - }, - { - "name": "resourceGroup", - "type": "string?", - "isNullable": true + "name": "nameParameter", + "type": "Aspire.Hosting.ApplicationModel.IResourceBuilder" } ], "genericParameters": [ @@ -3607,7 +3665,7 @@ { "name": "Aspire.Hosting.AspireExportIgnoreAttribute", "arguments": { - "Reason": "Use the polyglot runAsExisting overload that accepts string or ParameterResource values instead." + "Reason": "Use the polyglot asExistingInTenant overload that accepts string or ParameterResource values instead." } } ], @@ -3615,7 +3673,21 @@ "summary": [ { "kind": "text", - "text": " Marks the resource as an existing resource when the application is running. " + "text": " Marks the current-tenant-scoped resource as an existing resource in both run and publish modes. " + } + ], + "remarks": [ + { + "kind": "text", + "text": "Tenant scope targets the current tenant. Bicep doesn't support selecting a different tenant with the " + }, + { + "kind": "code", + "text": "tenant()" + }, + { + "kind": "text", + "text": " scope function." } ], "returns": [ @@ -3631,25 +3703,11 @@ "text": "The resource builder." } ], - "name": [ + "nameParameter": [ { "kind": "text", "text": "The name of the existing resource." } - ], - "resourceGroup": [ - { - "kind": "text", - "text": "The name of the existing resource group, or " - }, - { - "kind": "langword", - "value": "null" - }, - { - "kind": "text", - "text": " to use the current resource group." - } ] }, "typeParameters": { @@ -3662,34 +3720,1668 @@ } }, "sourceFile": "src/Aspire.Hosting.Azure/ExistingAzureResourceExtensions.cs", - "sourceLines": "69-71" - } - ] - }, - { - "name": "IAzureResource", - "fullName": "Aspire.Hosting.ApplicationModel.IAzureResource", - "namespace": "Aspire.Hosting.ApplicationModel", - "kind": "interface", - "accessibility": "public", - "interfaces": [ - "Aspire.Hosting.ApplicationModel.IResource" - ], - "docs": { - "summary": [ - { - "kind": "text", - "text": " Represents an Azure resource, as a marker interface for " - }, - { - "kind": "cref", - "value": "T:Aspire.Hosting.ApplicationModel.IResource" - }, - { - "kind": "text", - "text": "'s that can be deployed to an Azure resource group. " - } - ] + "sourceLines": "655-657" + }, + { + "name": "AsExistingInTenant", + "kind": "method", + "accessibility": "public", + "signature": "public static IResourceBuilder ExistingAzureResourceExtensions.AsExistingInTenant(this IResourceBuilder builder, string name)", + "returnType": "Aspire.Hosting.ApplicationModel.IResourceBuilder", + "isStatic": true, + "isExtension": true, + "parameters": [ + { + "name": "builder", + "type": "Aspire.Hosting.ApplicationModel.IResourceBuilder", + "modifier": "this" + }, + { + "name": "name", + "type": "string" + } + ], + "genericParameters": [ + { + "name": "T", + "constraints": [ + "Aspire.Hosting.ApplicationModel.IAzureResource" + ] + } + ], + "attributes": [ + { + "name": "Aspire.Hosting.AspireExportIgnoreAttribute", + "arguments": { + "Reason": "Use the polyglot asExistingInTenant overload that accepts string or ParameterResource values instead." + } + } + ], + "docs": { + "summary": [ + { + "kind": "text", + "text": " Marks the current-tenant-scoped resource as an existing resource in both run and publish modes. " + } + ], + "remarks": [ + { + "kind": "text", + "text": "Tenant scope targets the current tenant. Bicep doesn't support selecting a different tenant with the " + }, + { + "kind": "code", + "text": "tenant()" + }, + { + "kind": "text", + "text": " scope function." + } + ], + "returns": [ + { + "kind": "text", + "text": "The resource builder with the existing resource annotation added." + } + ], + "parameters": { + "builder": [ + { + "kind": "text", + "text": "The resource builder." + } + ], + "name": [ + { + "kind": "text", + "text": "The name of the existing resource." + } + ] + }, + "typeParameters": { + "T": [ + { + "kind": "text", + "text": "The type of the resource." + } + ] + } + }, + "sourceFile": "src/Aspire.Hosting.Azure/ExistingAzureResourceExtensions.cs", + "sourceLines": "672-674" + }, + { + "name": "IsExisting", + "kind": "method", + "accessibility": "public", + "signature": "public static bool ExistingAzureResourceExtensions.IsExisting(this IResource resource)", + "returnType": "bool", + "isStatic": true, + "isExtension": true, + "parameters": [ + { + "name": "resource", + "type": "Aspire.Hosting.ApplicationModel.IResource", + "modifier": "this" + } + ], + "attributes": [ + { + "name": "Aspire.Hosting.AspireExportIgnoreAttribute", + "arguments": { + "Reason": "Use the Azure resource-specific polyglot export instead." + } + } + ], + "docs": { + "summary": [ + { + "kind": "text", + "text": " Determines if the resource is an existing resource. " + } + ], + "remarks": [ + { + "kind": "text", + "text": "This method is not available in polyglot AppHosts. Use the Azure resource-specific polyglot surface instead." + } + ], + "returns": [ + { + "kind": "text", + "text": "True if the resource is an existing resource, otherwise false." + } + ], + "parameters": { + "resource": [ + { + "kind": "text", + "text": "The resource to check." + } + ] + } + }, + "sourceFile": "src/Aspire.Hosting.Azure/ExistingAzureResourceExtensions.cs", + "sourceLines": "24-26" + }, + { + "name": "PublishAsExisting", + "kind": "method", + "accessibility": "public", + "signature": "public static IResourceBuilder ExistingAzureResourceExtensions.PublishAsExisting(this IResourceBuilder builder, IResourceBuilder nameParameter, IResourceBuilder? resourceGroupParameter)", + "returnType": "Aspire.Hosting.ApplicationModel.IResourceBuilder", + "isStatic": true, + "isExtension": true, + "parameters": [ + { + "name": "builder", + "type": "Aspire.Hosting.ApplicationModel.IResourceBuilder", + "modifier": "this" + }, + { + "name": "nameParameter", + "type": "Aspire.Hosting.ApplicationModel.IResourceBuilder" + }, + { + "name": "resourceGroupParameter", + "type": "Aspire.Hosting.ApplicationModel.IResourceBuilder?", + "isNullable": true + } + ], + "genericParameters": [ + { + "name": "T", + "constraints": [ + "Aspire.Hosting.ApplicationModel.IAzureResource" + ] + } + ], + "attributes": [ + { + "name": "Aspire.Hosting.AspireExportIgnoreAttribute", + "arguments": { + "Reason": "Use the polyglot publishAsExisting overload that accepts string or ParameterResource values instead." + } + } + ], + "docs": { + "summary": [ + { + "kind": "text", + "text": " Marks the resource as an existing resource when the application is deployed. " + } + ], + "returns": [ + { + "kind": "text", + "text": "The resource builder with the existing resource annotation added." + } + ], + "parameters": { + "builder": [ + { + "kind": "text", + "text": "The resource builder." + } + ], + "nameParameter": [ + { + "kind": "text", + "text": "The name of the existing resource." + } + ], + "resourceGroupParameter": [ + { + "kind": "text", + "text": "The name of the existing resource group, or " + }, + { + "kind": "langword", + "value": "null" + }, + { + "kind": "text", + "text": " to use the current resource group." + } + ] + }, + "typeParameters": { + "T": [ + { + "kind": "text", + "text": "The type of the resource." + } + ] + } + }, + "sourceFile": "src/Aspire.Hosting.Azure/ExistingAzureResourceExtensions.cs", + "sourceLines": "107-109" + }, + { + "name": "PublishAsExisting", + "kind": "method", + "accessibility": "public", + "signature": "public static IResourceBuilder ExistingAzureResourceExtensions.PublishAsExisting(this IResourceBuilder builder, string name, string? resourceGroup)", + "returnType": "Aspire.Hosting.ApplicationModel.IResourceBuilder", + "isStatic": true, + "isExtension": true, + "parameters": [ + { + "name": "builder", + "type": "Aspire.Hosting.ApplicationModel.IResourceBuilder", + "modifier": "this" + }, + { + "name": "name", + "type": "string" + }, + { + "name": "resourceGroup", + "type": "string?", + "isNullable": true + } + ], + "genericParameters": [ + { + "name": "T", + "constraints": [ + "Aspire.Hosting.ApplicationModel.IAzureResource" + ] + } + ], + "attributes": [ + { + "name": "Aspire.Hosting.AspireExportIgnoreAttribute", + "arguments": { + "Reason": "Use the polyglot publishAsExisting overload that accepts string or ParameterResource values instead." + } + } + ], + "docs": { + "summary": [ + { + "kind": "text", + "text": " Marks the resource as an existing resource when the application is deployed. " + } + ], + "returns": [ + { + "kind": "text", + "text": "The resource builder with the existing resource annotation added." + } + ], + "parameters": { + "builder": [ + { + "kind": "text", + "text": "The resource builder." + } + ], + "name": [ + { + "kind": "text", + "text": "The name of the existing resource." + } + ], + "resourceGroup": [ + { + "kind": "text", + "text": "The name of the existing resource group, or " + }, + { + "kind": "langword", + "value": "null" + }, + { + "kind": "text", + "text": " to use the current resource group." + } + ] + }, + "typeParameters": { + "T": [ + { + "kind": "text", + "text": "The type of the resource." + } + ] + } + }, + "sourceFile": "src/Aspire.Hosting.Azure/ExistingAzureResourceExtensions.cs", + "sourceLines": "124-126" + }, + { + "name": "PublishAsExistingInResourceGroup", + "kind": "method", + "accessibility": "public", + "signature": "public static IResourceBuilder ExistingAzureResourceExtensions.PublishAsExistingInResourceGroup(this IResourceBuilder builder, IResourceBuilder nameParameter, IResourceBuilder resourceGroupParameter, IResourceBuilder subscriptionParameter)", + "returnType": "Aspire.Hosting.ApplicationModel.IResourceBuilder", + "isStatic": true, + "isExtension": true, + "parameters": [ + { + "name": "builder", + "type": "Aspire.Hosting.ApplicationModel.IResourceBuilder", + "modifier": "this" + }, + { + "name": "nameParameter", + "type": "Aspire.Hosting.ApplicationModel.IResourceBuilder" + }, + { + "name": "resourceGroupParameter", + "type": "Aspire.Hosting.ApplicationModel.IResourceBuilder" + }, + { + "name": "subscriptionParameter", + "type": "Aspire.Hosting.ApplicationModel.IResourceBuilder" + } + ], + "genericParameters": [ + { + "name": "T", + "constraints": [ + "Aspire.Hosting.ApplicationModel.IAzureResource" + ] + } + ], + "attributes": [ + { + "name": "Aspire.Hosting.AspireExportIgnoreAttribute", + "arguments": { + "Reason": "Use the polyglot publishAsExistingInResourceGroup overload that accepts string or ParameterResource values instead." + } + } + ], + "docs": { + "summary": [ + { + "kind": "text", + "text": " Marks the resource as an existing resource in a specific resource group and subscription when the application is deployed. " + } + ], + "returns": [ + { + "kind": "text", + "text": "The resource builder with the existing resource annotation added." + } + ], + "parameters": { + "builder": [ + { + "kind": "text", + "text": "The resource builder." + } + ], + "nameParameter": [ + { + "kind": "text", + "text": "The name of the existing resource." + } + ], + "resourceGroupParameter": [ + { + "kind": "text", + "text": "The name of the existing resource group." + } + ], + "subscriptionParameter": [ + { + "kind": "text", + "text": "The subscription identifier containing the resource group." + } + ] + }, + "typeParameters": { + "T": [ + { + "kind": "text", + "text": "The type of the resource." + } + ] + } + }, + "sourceFile": "src/Aspire.Hosting.Azure/ExistingAzureResourceExtensions.cs", + "sourceLines": "432-434" + }, + { + "name": "PublishAsExistingInResourceGroup", + "kind": "method", + "accessibility": "public", + "signature": "public static IResourceBuilder ExistingAzureResourceExtensions.PublishAsExistingInResourceGroup(this IResourceBuilder builder, string name, string resourceGroup, string subscription)", + "returnType": "Aspire.Hosting.ApplicationModel.IResourceBuilder", + "isStatic": true, + "isExtension": true, + "parameters": [ + { + "name": "builder", + "type": "Aspire.Hosting.ApplicationModel.IResourceBuilder", + "modifier": "this" + }, + { + "name": "name", + "type": "string" + }, + { + "name": "resourceGroup", + "type": "string" + }, + { + "name": "subscription", + "type": "string" + } + ], + "genericParameters": [ + { + "name": "T", + "constraints": [ + "Aspire.Hosting.ApplicationModel.IAzureResource" + ] + } + ], + "attributes": [ + { + "name": "Aspire.Hosting.AspireExportIgnoreAttribute", + "arguments": { + "Reason": "Use the polyglot publishAsExistingInResourceGroup overload that accepts string or ParameterResource values instead." + } + } + ], + "docs": { + "summary": [ + { + "kind": "text", + "text": " Marks the resource as an existing resource in a specific resource group and subscription when the application is deployed. " + } + ], + "returns": [ + { + "kind": "text", + "text": "The resource builder with the existing resource annotation added." + } + ], + "parameters": { + "builder": [ + { + "kind": "text", + "text": "The resource builder." + } + ], + "name": [ + { + "kind": "text", + "text": "The name of the existing resource." + } + ], + "resourceGroup": [ + { + "kind": "text", + "text": "The name of the existing resource group." + } + ], + "subscription": [ + { + "kind": "text", + "text": "The subscription identifier containing the resource group." + } + ] + }, + "typeParameters": { + "T": [ + { + "kind": "text", + "text": "The type of the resource." + } + ] + } + }, + "sourceFile": "src/Aspire.Hosting.Azure/ExistingAzureResourceExtensions.cs", + "sourceLines": "450-452" + }, + { + "name": "PublishAsExistingInSubscription", + "kind": "method", + "accessibility": "public", + "signature": "public static IResourceBuilder ExistingAzureResourceExtensions.PublishAsExistingInSubscription(this IResourceBuilder builder, IResourceBuilder nameParameter, IResourceBuilder subscriptionParameter)", + "returnType": "Aspire.Hosting.ApplicationModel.IResourceBuilder", + "isStatic": true, + "isExtension": true, + "parameters": [ + { + "name": "builder", + "type": "Aspire.Hosting.ApplicationModel.IResourceBuilder", + "modifier": "this" + }, + { + "name": "nameParameter", + "type": "Aspire.Hosting.ApplicationModel.IResourceBuilder" + }, + { + "name": "subscriptionParameter", + "type": "Aspire.Hosting.ApplicationModel.IResourceBuilder" + } + ], + "genericParameters": [ + { + "name": "T", + "constraints": [ + "Aspire.Hosting.ApplicationModel.IAzureResource" + ] + } + ], + "attributes": [ + { + "name": "Aspire.Hosting.AspireExportIgnoreAttribute", + "arguments": { + "Reason": "Use the polyglot publishAsExistingInSubscription overload that accepts string or ParameterResource values instead." + } + } + ], + "docs": { + "summary": [ + { + "kind": "text", + "text": " Marks the subscription-scoped resource as an existing resource when the application is deployed. " + } + ], + "remarks": [ + { + "kind": "text", + "text": "Use this only for Azure resources that are deployed at subscription scope. Most Azure services are resource-group scoped and should use " + }, + { + "kind": "code", + "text": "PublishAsExistingInResourceGroup" + }, + { + "kind": "text", + "text": "." + } + ], + "returns": [ + { + "kind": "text", + "text": "The resource builder with the existing resource annotation added." + } + ], + "parameters": { + "builder": [ + { + "kind": "text", + "text": "The resource builder." + } + ], + "nameParameter": [ + { + "kind": "text", + "text": "The name of the existing resource." + } + ], + "subscriptionParameter": [ + { + "kind": "text", + "text": "The subscription identifier containing the resource." + } + ] + }, + "typeParameters": { + "T": [ + { + "kind": "text", + "text": "The type of the resource." + } + ] + } + }, + "sourceFile": "src/Aspire.Hosting.Azure/ExistingAzureResourceExtensions.cs", + "sourceLines": "258-260" + }, + { + "name": "PublishAsExistingInSubscription", + "kind": "method", + "accessibility": "public", + "signature": "public static IResourceBuilder ExistingAzureResourceExtensions.PublishAsExistingInSubscription(this IResourceBuilder builder, string name, string subscription)", + "returnType": "Aspire.Hosting.ApplicationModel.IResourceBuilder", + "isStatic": true, + "isExtension": true, + "parameters": [ + { + "name": "builder", + "type": "Aspire.Hosting.ApplicationModel.IResourceBuilder", + "modifier": "this" + }, + { + "name": "name", + "type": "string" + }, + { + "name": "subscription", + "type": "string" + } + ], + "genericParameters": [ + { + "name": "T", + "constraints": [ + "Aspire.Hosting.ApplicationModel.IAzureResource" + ] + } + ], + "attributes": [ + { + "name": "Aspire.Hosting.AspireExportIgnoreAttribute", + "arguments": { + "Reason": "Use the polyglot publishAsExistingInSubscription overload that accepts string or ParameterResource values instead." + } + } + ], + "docs": { + "summary": [ + { + "kind": "text", + "text": " Marks the subscription-scoped resource as an existing resource when the application is deployed. " + } + ], + "remarks": [ + { + "kind": "text", + "text": "Use this only for Azure resources that are deployed at subscription scope. Most Azure services are resource-group scoped and should use " + }, + { + "kind": "code", + "text": "PublishAsExistingInResourceGroup" + }, + { + "kind": "text", + "text": "." + } + ], + "returns": [ + { + "kind": "text", + "text": "The resource builder with the existing resource annotation added." + } + ], + "parameters": { + "builder": [ + { + "kind": "text", + "text": "The resource builder." + } + ], + "name": [ + { + "kind": "text", + "text": "The name of the existing resource." + } + ], + "subscription": [ + { + "kind": "text", + "text": "The subscription identifier containing the resource." + } + ] + }, + "typeParameters": { + "T": [ + { + "kind": "text", + "text": "The type of the resource." + } + ] + } + }, + "sourceFile": "src/Aspire.Hosting.Azure/ExistingAzureResourceExtensions.cs", + "sourceLines": "276-278" + }, + { + "name": "PublishAsExistingInTenant", + "kind": "method", + "accessibility": "public", + "signature": "public static IResourceBuilder ExistingAzureResourceExtensions.PublishAsExistingInTenant(this IResourceBuilder builder, IResourceBuilder nameParameter)", + "returnType": "Aspire.Hosting.ApplicationModel.IResourceBuilder", + "isStatic": true, + "isExtension": true, + "parameters": [ + { + "name": "builder", + "type": "Aspire.Hosting.ApplicationModel.IResourceBuilder", + "modifier": "this" + }, + { + "name": "nameParameter", + "type": "Aspire.Hosting.ApplicationModel.IResourceBuilder" + } + ], + "genericParameters": [ + { + "name": "T", + "constraints": [ + "Aspire.Hosting.ApplicationModel.IAzureResource" + ] + } + ], + "attributes": [ + { + "name": "Aspire.Hosting.AspireExportIgnoreAttribute", + "arguments": { + "Reason": "Use the polyglot publishAsExistingInTenant overload that accepts string or ParameterResource values instead." + } + } + ], + "docs": { + "summary": [ + { + "kind": "text", + "text": " Marks the current-tenant-scoped resource as an existing resource when the application is deployed. " + } + ], + "remarks": [ + { + "kind": "text", + "text": "Tenant scope targets the current tenant. Bicep doesn't support selecting a different tenant with the " + }, + { + "kind": "code", + "text": "tenant()" + }, + { + "kind": "text", + "text": " scope function." + } + ], + "returns": [ + { + "kind": "text", + "text": "The resource builder with the existing resource annotation added." + } + ], + "parameters": { + "builder": [ + { + "kind": "text", + "text": "The resource builder." + } + ], + "nameParameter": [ + { + "kind": "text", + "text": "The name of the existing resource." + } + ] + }, + "typeParameters": { + "T": [ + { + "kind": "text", + "text": "The type of the resource." + } + ] + } + }, + "sourceFile": "src/Aspire.Hosting.Azure/ExistingAzureResourceExtensions.cs", + "sourceLines": "603-605" + }, + { + "name": "PublishAsExistingInTenant", + "kind": "method", + "accessibility": "public", + "signature": "public static IResourceBuilder ExistingAzureResourceExtensions.PublishAsExistingInTenant(this IResourceBuilder builder, string name)", + "returnType": "Aspire.Hosting.ApplicationModel.IResourceBuilder", + "isStatic": true, + "isExtension": true, + "parameters": [ + { + "name": "builder", + "type": "Aspire.Hosting.ApplicationModel.IResourceBuilder", + "modifier": "this" + }, + { + "name": "name", + "type": "string" + } + ], + "genericParameters": [ + { + "name": "T", + "constraints": [ + "Aspire.Hosting.ApplicationModel.IAzureResource" + ] + } + ], + "attributes": [ + { + "name": "Aspire.Hosting.AspireExportIgnoreAttribute", + "arguments": { + "Reason": "Use the polyglot publishAsExistingInTenant overload that accepts string or ParameterResource values instead." + } + } + ], + "docs": { + "summary": [ + { + "kind": "text", + "text": " Marks the current-tenant-scoped resource as an existing resource when the application is deployed. " + } + ], + "remarks": [ + { + "kind": "text", + "text": "Tenant scope targets the current tenant. Bicep doesn't support selecting a different tenant with the " + }, + { + "kind": "code", + "text": "tenant()" + }, + { + "kind": "text", + "text": " scope function." + } + ], + "returns": [ + { + "kind": "text", + "text": "The resource builder with the existing resource annotation added." + } + ], + "parameters": { + "builder": [ + { + "kind": "text", + "text": "The resource builder." + } + ], + "name": [ + { + "kind": "text", + "text": "The name of the existing resource." + } + ] + }, + "typeParameters": { + "T": [ + { + "kind": "text", + "text": "The type of the resource." + } + ] + } + }, + "sourceFile": "src/Aspire.Hosting.Azure/ExistingAzureResourceExtensions.cs", + "sourceLines": "620-622" + }, + { + "name": "RunAsExisting", + "kind": "method", + "accessibility": "public", + "signature": "public static IResourceBuilder ExistingAzureResourceExtensions.RunAsExisting(this IResourceBuilder builder, IResourceBuilder nameParameter, IResourceBuilder? resourceGroupParameter)", + "returnType": "Aspire.Hosting.ApplicationModel.IResourceBuilder", + "isStatic": true, + "isExtension": true, + "parameters": [ + { + "name": "builder", + "type": "Aspire.Hosting.ApplicationModel.IResourceBuilder", + "modifier": "this" + }, + { + "name": "nameParameter", + "type": "Aspire.Hosting.ApplicationModel.IResourceBuilder" + }, + { + "name": "resourceGroupParameter", + "type": "Aspire.Hosting.ApplicationModel.IResourceBuilder?", + "isNullable": true + } + ], + "genericParameters": [ + { + "name": "T", + "constraints": [ + "Aspire.Hosting.ApplicationModel.IAzureResource" + ] + } + ], + "attributes": [ + { + "name": "Aspire.Hosting.AspireExportIgnoreAttribute", + "arguments": { + "Reason": "Use the polyglot runAsExisting overload that accepts string or ParameterResource values instead." + } + } + ], + "docs": { + "summary": [ + { + "kind": "text", + "text": " Marks the resource as an existing resource when the application is running. " + } + ], + "returns": [ + { + "kind": "text", + "text": "The resource builder with the existing resource annotation added." + } + ], + "parameters": { + "builder": [ + { + "kind": "text", + "text": "The resource builder." + } + ], + "nameParameter": [ + { + "kind": "text", + "text": "The name of the existing resource." + } + ], + "resourceGroupParameter": [ + { + "kind": "text", + "text": "The name of the existing resource group, or " + }, + { + "kind": "langword", + "value": "null" + }, + { + "kind": "text", + "text": " to use the current resource group." + } + ] + }, + "typeParameters": { + "T": [ + { + "kind": "text", + "text": "The type of the resource." + } + ] + } + }, + "sourceFile": "src/Aspire.Hosting.Azure/ExistingAzureResourceExtensions.cs", + "sourceLines": "52-54" + }, + { + "name": "RunAsExisting", + "kind": "method", + "accessibility": "public", + "signature": "public static IResourceBuilder ExistingAzureResourceExtensions.RunAsExisting(this IResourceBuilder builder, string name, string? resourceGroup)", + "returnType": "Aspire.Hosting.ApplicationModel.IResourceBuilder", + "isStatic": true, + "isExtension": true, + "parameters": [ + { + "name": "builder", + "type": "Aspire.Hosting.ApplicationModel.IResourceBuilder", + "modifier": "this" + }, + { + "name": "name", + "type": "string" + }, + { + "name": "resourceGroup", + "type": "string?", + "isNullable": true + } + ], + "genericParameters": [ + { + "name": "T", + "constraints": [ + "Aspire.Hosting.ApplicationModel.IAzureResource" + ] + } + ], + "attributes": [ + { + "name": "Aspire.Hosting.AspireExportIgnoreAttribute", + "arguments": { + "Reason": "Use the polyglot runAsExisting overload that accepts string or ParameterResource values instead." + } + } + ], + "docs": { + "summary": [ + { + "kind": "text", + "text": " Marks the resource as an existing resource when the application is running. " + } + ], + "returns": [ + { + "kind": "text", + "text": "The resource builder with the existing resource annotation added." + } + ], + "parameters": { + "builder": [ + { + "kind": "text", + "text": "The resource builder." + } + ], + "name": [ + { + "kind": "text", + "text": "The name of the existing resource." + } + ], + "resourceGroup": [ + { + "kind": "text", + "text": "The name of the existing resource group, or " + }, + { + "kind": "langword", + "value": "null" + }, + { + "kind": "text", + "text": " to use the current resource group." + } + ] + }, + "typeParameters": { + "T": [ + { + "kind": "text", + "text": "The type of the resource." + } + ] + } + }, + "sourceFile": "src/Aspire.Hosting.Azure/ExistingAzureResourceExtensions.cs", + "sourceLines": "69-71" + }, + { + "name": "RunAsExistingInResourceGroup", + "kind": "method", + "accessibility": "public", + "signature": "public static IResourceBuilder ExistingAzureResourceExtensions.RunAsExistingInResourceGroup(this IResourceBuilder builder, IResourceBuilder nameParameter, IResourceBuilder resourceGroupParameter, IResourceBuilder subscriptionParameter)", + "returnType": "Aspire.Hosting.ApplicationModel.IResourceBuilder", + "isStatic": true, + "isExtension": true, + "parameters": [ + { + "name": "builder", + "type": "Aspire.Hosting.ApplicationModel.IResourceBuilder", + "modifier": "this" + }, + { + "name": "nameParameter", + "type": "Aspire.Hosting.ApplicationModel.IResourceBuilder" + }, + { + "name": "resourceGroupParameter", + "type": "Aspire.Hosting.ApplicationModel.IResourceBuilder" + }, + { + "name": "subscriptionParameter", + "type": "Aspire.Hosting.ApplicationModel.IResourceBuilder" + } + ], + "genericParameters": [ + { + "name": "T", + "constraints": [ + "Aspire.Hosting.ApplicationModel.IAzureResource" + ] + } + ], + "attributes": [ + { + "name": "Aspire.Hosting.AspireExportIgnoreAttribute", + "arguments": { + "Reason": "Use the polyglot runAsExistingInResourceGroup overload that accepts string or ParameterResource values instead." + } + } + ], + "docs": { + "summary": [ + { + "kind": "text", + "text": " Marks the resource as an existing resource in a specific resource group and subscription when the application is running. " + } + ], + "returns": [ + { + "kind": "text", + "text": "The resource builder with the existing resource annotation added." + } + ], + "parameters": { + "builder": [ + { + "kind": "text", + "text": "The resource builder." + } + ], + "nameParameter": [ + { + "kind": "text", + "text": "The name of the existing resource." + } + ], + "resourceGroupParameter": [ + { + "kind": "text", + "text": "The name of the existing resource group." + } + ], + "subscriptionParameter": [ + { + "kind": "text", + "text": "The subscription identifier containing the resource group." + } + ] + }, + "typeParameters": { + "T": [ + { + "kind": "text", + "text": "The type of the resource." + } + ] + } + }, + "sourceFile": "src/Aspire.Hosting.Azure/ExistingAzureResourceExtensions.cs", + "sourceLines": "372-374" + }, + { + "name": "RunAsExistingInResourceGroup", + "kind": "method", + "accessibility": "public", + "signature": "public static IResourceBuilder ExistingAzureResourceExtensions.RunAsExistingInResourceGroup(this IResourceBuilder builder, string name, string resourceGroup, string subscription)", + "returnType": "Aspire.Hosting.ApplicationModel.IResourceBuilder", + "isStatic": true, + "isExtension": true, + "parameters": [ + { + "name": "builder", + "type": "Aspire.Hosting.ApplicationModel.IResourceBuilder", + "modifier": "this" + }, + { + "name": "name", + "type": "string" + }, + { + "name": "resourceGroup", + "type": "string" + }, + { + "name": "subscription", + "type": "string" + } + ], + "genericParameters": [ + { + "name": "T", + "constraints": [ + "Aspire.Hosting.ApplicationModel.IAzureResource" + ] + } + ], + "attributes": [ + { + "name": "Aspire.Hosting.AspireExportIgnoreAttribute", + "arguments": { + "Reason": "Use the polyglot runAsExistingInResourceGroup overload that accepts string or ParameterResource values instead." + } + } + ], + "docs": { + "summary": [ + { + "kind": "text", + "text": " Marks the resource as an existing resource in a specific resource group and subscription when the application is running. " + } + ], + "returns": [ + { + "kind": "text", + "text": "The resource builder with the existing resource annotation added." + } + ], + "parameters": { + "builder": [ + { + "kind": "text", + "text": "The resource builder." + } + ], + "name": [ + { + "kind": "text", + "text": "The name of the existing resource." + } + ], + "resourceGroup": [ + { + "kind": "text", + "text": "The name of the existing resource group." + } + ], + "subscription": [ + { + "kind": "text", + "text": "The subscription identifier containing the resource group." + } + ] + }, + "typeParameters": { + "T": [ + { + "kind": "text", + "text": "The type of the resource." + } + ] + } + }, + "sourceFile": "src/Aspire.Hosting.Azure/ExistingAzureResourceExtensions.cs", + "sourceLines": "390-392" + }, + { + "name": "RunAsExistingInSubscription", + "kind": "method", + "accessibility": "public", + "signature": "public static IResourceBuilder ExistingAzureResourceExtensions.RunAsExistingInSubscription(this IResourceBuilder builder, IResourceBuilder nameParameter, IResourceBuilder subscriptionParameter)", + "returnType": "Aspire.Hosting.ApplicationModel.IResourceBuilder", + "isStatic": true, + "isExtension": true, + "parameters": [ + { + "name": "builder", + "type": "Aspire.Hosting.ApplicationModel.IResourceBuilder", + "modifier": "this" + }, + { + "name": "nameParameter", + "type": "Aspire.Hosting.ApplicationModel.IResourceBuilder" + }, + { + "name": "subscriptionParameter", + "type": "Aspire.Hosting.ApplicationModel.IResourceBuilder" + } + ], + "genericParameters": [ + { + "name": "T", + "constraints": [ + "Aspire.Hosting.ApplicationModel.IAzureResource" + ] + } + ], + "attributes": [ + { + "name": "Aspire.Hosting.AspireExportIgnoreAttribute", + "arguments": { + "Reason": "Use the polyglot runAsExistingInSubscription overload that accepts string or ParameterResource values instead." + } + } + ], + "docs": { + "summary": [ + { + "kind": "text", + "text": " Marks the subscription-scoped resource as an existing resource when the application is running. " + } + ], + "remarks": [ + { + "kind": "text", + "text": "Use this only for Azure resources that are deployed at subscription scope. Most Azure services are resource-group scoped and should use " + }, + { + "kind": "code", + "text": "RunAsExistingInResourceGroup" + }, + { + "kind": "text", + "text": "." + } + ], + "returns": [ + { + "kind": "text", + "text": "The resource builder with the existing resource annotation added." + } + ], + "parameters": { + "builder": [ + { + "kind": "text", + "text": "The resource builder." + } + ], + "nameParameter": [ + { + "kind": "text", + "text": "The name of the existing resource." + } + ], + "subscriptionParameter": [ + { + "kind": "text", + "text": "The subscription identifier containing the resource." + } + ] + }, + "typeParameters": { + "T": [ + { + "kind": "text", + "text": "The type of the resource." + } + ] + } + }, + "sourceFile": "src/Aspire.Hosting.Azure/ExistingAzureResourceExtensions.cs", + "sourceLines": "201-203" + }, + { + "name": "RunAsExistingInSubscription", + "kind": "method", + "accessibility": "public", + "signature": "public static IResourceBuilder ExistingAzureResourceExtensions.RunAsExistingInSubscription(this IResourceBuilder builder, string name, string subscription)", + "returnType": "Aspire.Hosting.ApplicationModel.IResourceBuilder", + "isStatic": true, + "isExtension": true, + "parameters": [ + { + "name": "builder", + "type": "Aspire.Hosting.ApplicationModel.IResourceBuilder", + "modifier": "this" + }, + { + "name": "name", + "type": "string" + }, + { + "name": "subscription", + "type": "string" + } + ], + "genericParameters": [ + { + "name": "T", + "constraints": [ + "Aspire.Hosting.ApplicationModel.IAzureResource" + ] + } + ], + "attributes": [ + { + "name": "Aspire.Hosting.AspireExportIgnoreAttribute", + "arguments": { + "Reason": "Use the polyglot runAsExistingInSubscription overload that accepts string or ParameterResource values instead." + } + } + ], + "docs": { + "summary": [ + { + "kind": "text", + "text": " Marks the subscription-scoped resource as an existing resource when the application is running. " + } + ], + "remarks": [ + { + "kind": "text", + "text": "Use this only for Azure resources that are deployed at subscription scope. Most Azure services are resource-group scoped and should use " + }, + { + "kind": "code", + "text": "RunAsExistingInResourceGroup" + }, + { + "kind": "text", + "text": "." + } + ], + "returns": [ + { + "kind": "text", + "text": "The resource builder with the existing resource annotation added." + } + ], + "parameters": { + "builder": [ + { + "kind": "text", + "text": "The resource builder." + } + ], + "name": [ + { + "kind": "text", + "text": "The name of the existing resource." + } + ], + "subscription": [ + { + "kind": "text", + "text": "The subscription identifier containing the resource." + } + ] + }, + "typeParameters": { + "T": [ + { + "kind": "text", + "text": "The type of the resource." + } + ] + } + }, + "sourceFile": "src/Aspire.Hosting.Azure/ExistingAzureResourceExtensions.cs", + "sourceLines": "219-221" + }, + { + "name": "RunAsExistingInTenant", + "kind": "method", + "accessibility": "public", + "signature": "public static IResourceBuilder ExistingAzureResourceExtensions.RunAsExistingInTenant(this IResourceBuilder builder, IResourceBuilder nameParameter)", + "returnType": "Aspire.Hosting.ApplicationModel.IResourceBuilder", + "isStatic": true, + "isExtension": true, + "parameters": [ + { + "name": "builder", + "type": "Aspire.Hosting.ApplicationModel.IResourceBuilder", + "modifier": "this" + }, + { + "name": "nameParameter", + "type": "Aspire.Hosting.ApplicationModel.IResourceBuilder" + } + ], + "genericParameters": [ + { + "name": "T", + "constraints": [ + "Aspire.Hosting.ApplicationModel.IAzureResource" + ] + } + ], + "attributes": [ + { + "name": "Aspire.Hosting.AspireExportIgnoreAttribute", + "arguments": { + "Reason": "Use the polyglot runAsExistingInTenant overload that accepts string or ParameterResource values instead." + } + } + ], + "docs": { + "summary": [ + { + "kind": "text", + "text": " Marks the current-tenant-scoped resource as an existing resource when the application is running. " + } + ], + "remarks": [ + { + "kind": "text", + "text": "Tenant scope targets the current tenant. Bicep doesn't support selecting a different tenant with the " + }, + { + "kind": "code", + "text": "tenant()" + }, + { + "kind": "text", + "text": " scope function." + } + ], + "returns": [ + { + "kind": "text", + "text": "The resource builder with the existing resource annotation added." + } + ], + "parameters": { + "builder": [ + { + "kind": "text", + "text": "The resource builder." + } + ], + "nameParameter": [ + { + "kind": "text", + "text": "The name of the existing resource." + } + ] + }, + "typeParameters": { + "T": [ + { + "kind": "text", + "text": "The type of the resource." + } + ] + } + }, + "sourceFile": "src/Aspire.Hosting.Azure/ExistingAzureResourceExtensions.cs", + "sourceLines": "551-553" + }, + { + "name": "RunAsExistingInTenant", + "kind": "method", + "accessibility": "public", + "signature": "public static IResourceBuilder ExistingAzureResourceExtensions.RunAsExistingInTenant(this IResourceBuilder builder, string name)", + "returnType": "Aspire.Hosting.ApplicationModel.IResourceBuilder", + "isStatic": true, + "isExtension": true, + "parameters": [ + { + "name": "builder", + "type": "Aspire.Hosting.ApplicationModel.IResourceBuilder", + "modifier": "this" + }, + { + "name": "name", + "type": "string" + } + ], + "genericParameters": [ + { + "name": "T", + "constraints": [ + "Aspire.Hosting.ApplicationModel.IAzureResource" + ] + } + ], + "attributes": [ + { + "name": "Aspire.Hosting.AspireExportIgnoreAttribute", + "arguments": { + "Reason": "Use the polyglot runAsExistingInTenant overload that accepts string or ParameterResource values instead." + } + } + ], + "docs": { + "summary": [ + { + "kind": "text", + "text": " Marks the current-tenant-scoped resource as an existing resource when the application is running. " + } + ], + "remarks": [ + { + "kind": "text", + "text": "Tenant scope targets the current tenant. Bicep doesn't support selecting a different tenant with the " + }, + { + "kind": "code", + "text": "tenant()" + }, + { + "kind": "text", + "text": " scope function." + } + ], + "returns": [ + { + "kind": "text", + "text": "The resource builder with the existing resource annotation added." + } + ], + "parameters": { + "builder": [ + { + "kind": "text", + "text": "The resource builder." + } + ], + "name": [ + { + "kind": "text", + "text": "The name of the existing resource." + } + ] + }, + "typeParameters": { + "T": [ + { + "kind": "text", + "text": "The type of the resource." + } + ] + } + }, + "sourceFile": "src/Aspire.Hosting.Azure/ExistingAzureResourceExtensions.cs", + "sourceLines": "568-570" + } + ] + }, + { + "name": "IAzureResource", + "fullName": "Aspire.Hosting.ApplicationModel.IAzureResource", + "namespace": "Aspire.Hosting.ApplicationModel", + "kind": "interface", + "accessibility": "public", + "interfaces": [ + "Aspire.Hosting.ApplicationModel.IResource" + ], + "docs": { + "summary": [ + { + "kind": "text", + "text": " Represents an Azure resource, as a marker interface for " + }, + { + "kind": "cref", + "value": "T:Aspire.Hosting.ApplicationModel.IResource" + }, + { + "kind": "text", + "text": "'s that can be deployed to an Azure resource group. " + } + ] }, "attributes": [ { @@ -3934,7 +5626,7 @@ ] }, "sourceFile": "src/Aspire.Hosting.Azure/AzureBicepResource.cs", - "sourceLines": "26-26", + "sourceLines": "25-25", "members": [ { "name": ".ctor", @@ -4009,7 +5701,7 @@ } }, "sourceFile": "src/Aspire.Hosting.Azure/AzureBicepResource.cs", - "sourceLines": "35-118" + "sourceLines": "34-127" }, { "name": "GetBicepTemplateFile", @@ -4082,7 +5774,7 @@ ] }, "sourceFile": "src/Aspire.Hosting.Azure/AzureBicepResource.cs", - "sourceLines": "150-188" + "sourceLines": "159-197" }, { "name": "GetBicepTemplateString", @@ -4100,7 +5792,7 @@ ] }, "sourceFile": "src/Aspire.Hosting.Azure/AzureBicepResource.cs", - "sourceLines": "196-216" + "sourceLines": "205-225" }, { "name": "WriteToManifest", @@ -4140,7 +5832,7 @@ } }, "sourceFile": "src/Aspire.Hosting.Azure/AzureBicepResource.cs", - "sourceLines": "224-284" + "sourceLines": "233-295" }, { "name": "Outputs", @@ -4158,7 +5850,7 @@ ] }, "sourceFile": "src/Aspire.Hosting.Azure/AzureBicepResource.cs", - "sourceLines": "113-113" + "sourceLines": "122-122" }, { "name": "Parameters", @@ -4176,7 +5868,7 @@ ] }, "sourceFile": "src/Aspire.Hosting.Azure/AzureBicepResource.cs", - "sourceLines": "101-101" + "sourceLines": "110-110" }, { "name": "ProvisioningTaskCompletionSource", @@ -4213,7 +5905,7 @@ ] }, "sourceFile": "src/Aspire.Hosting.Azure/AzureBicepResource.cs", - "sourceLines": "106-106" + "sourceLines": "115-115" }, { "name": "Scope", @@ -4256,7 +5948,7 @@ ] }, "sourceFile": "src/Aspire.Hosting.Azure/AzureBicepResource.cs", - "sourceLines": "118-118" + "sourceLines": "127-127" } ] }, @@ -4602,18 +6294,10 @@ "kind": "text", "text": " Represents the scope associated with the resource. " } - ], - "parameters": { - "resourceGroup": [ - { - "kind": "text", - "text": "The name of the existing resource group." - } - ] - } + ] }, "sourceFile": "src/Aspire.Hosting.Azure/AzureBicepResourceScope.cs", - "sourceLines": "10-10", + "sourceLines": "9-9", "members": [ { "name": ".ctor", @@ -4631,7 +6315,15 @@ "summary": [ { "kind": "text", - "text": " Represents the scope associated with the resource. " + "text": " Initializes a new instance of the " + }, + { + "kind": "cref", + "value": "T:Aspire.Hosting.Azure.AzureBicepResourceScope" + }, + { + "kind": "text", + "text": " class with a resource group scope. " } ], "parameters": { @@ -4644,7 +6336,7 @@ } }, "sourceFile": "src/Aspire.Hosting.Azure/AzureBicepResourceScope.cs", - "sourceLines": "10-25" + "sourceLines": "17-22" }, { "name": ".ctor", @@ -4674,7 +6366,7 @@ }, { "kind": "text", - "text": " class. " + "text": " class with a resource group scope in a specific subscription. " } ], "parameters": { @@ -4693,7 +6385,135 @@ } }, "sourceFile": "src/Aspire.Hosting.Azure/AzureBicepResourceScope.cs", - "sourceLines": "17-20" + "sourceLines": "29-34" + }, + { + "name": "CreateForSubscription", + "kind": "method", + "accessibility": "public", + "signature": "public static AzureBicepResourceScope AzureBicepResourceScope.CreateForSubscription(object subscription)", + "returnType": "Aspire.Hosting.Azure.AzureBicepResourceScope", + "isStatic": true, + "parameters": [ + { + "name": "subscription", + "type": "object" + } + ], + "docs": { + "summary": [ + { + "kind": "text", + "text": " Creates a scope for subscription-level resources. " + } + ], + "returns": [ + { + "kind": "text", + "text": "A new " + }, + { + "kind": "cref", + "value": "T:Aspire.Hosting.Azure.AzureBicepResourceScope" + }, + { + "kind": "text", + "text": " scoped to the subscription." + } + ], + "parameters": { + "subscription": [ + { + "kind": "text", + "text": "The subscription identifier for subscription-level resources." + } + ] + } + }, + "sourceFile": "src/Aspire.Hosting.Azure/AzureBicepResourceScope.cs", + "sourceLines": "65-67" + }, + { + "name": "CreateForTenant", + "kind": "method", + "accessibility": "public", + "signature": "public static AzureBicepResourceScope AzureBicepResourceScope.CreateForTenant()", + "returnType": "Aspire.Hosting.Azure.AzureBicepResourceScope", + "isStatic": true, + "docs": { + "summary": [ + { + "kind": "text", + "text": " Creates a scope for tenant-level resources in the current tenant. " + } + ], + "returns": [ + { + "kind": "text", + "text": "A new " + }, + { + "kind": "cref", + "value": "T:Aspire.Hosting.Azure.AzureBicepResourceScope" + }, + { + "kind": "text", + "text": " scoped to the current tenant." + } + ] + }, + "sourceFile": "src/Aspire.Hosting.Azure/AzureBicepResourceScope.cs", + "sourceLines": "76-76" + }, + { + "name": "HasResourceGroup", + "kind": "property", + "accessibility": "public", + "signature": "public bool AzureBicepResourceScope.HasResourceGroup", + "returnType": "bool", + "hasGet": true, + "docs": { + "summary": [ + { + "kind": "text", + "text": " Gets a value indicating whether the scope targets a resource group. " + } + ], + "remarks": [ + { + "kind": "text", + "text": " Use this to test the scope before reading " + }, + { + "kind": "cref", + "value": "P:Aspire.Hosting.Azure.AzureBicepResourceScope.ResourceGroup" + }, + { + "kind": "text", + "text": ", which throws for subscription- and tenant-scoped resources. " + } + ] + }, + "sourceFile": "src/Aspire.Hosting.Azure/AzureBicepResourceScope.cs", + "sourceLines": "102-102" + }, + { + "name": "IsTenantScope", + "kind": "property", + "accessibility": "public", + "signature": "public bool AzureBicepResourceScope.IsTenantScope", + "returnType": "bool", + "hasGet": true, + "docs": { + "summary": [ + { + "kind": "text", + "text": " Gets a value indicating whether the scope targets the current tenant. " + } + ] + }, + "sourceFile": "src/Aspire.Hosting.Azure/AzureBicepResourceScope.cs", + "sourceLines": "93-93" }, { "name": "ResourceGroup", @@ -4708,10 +6528,21 @@ "kind": "text", "text": " Represents the resource group to encode in the scope. " } + ], + "exceptions": [ + { + "type": "T:System.InvalidOperationException", + "description": [ + { + "kind": "text", + "text": "The scope does not target a resource group." + } + ] + } ] }, "sourceFile": "src/Aspire.Hosting.Azure/AzureBicepResourceScope.cs", - "sourceLines": "25-25" + "sourceLines": "83-83" }, { "name": "Subscription", @@ -4730,7 +6561,7 @@ ] }, "sourceFile": "src/Aspire.Hosting.Azure/AzureBicepResourceScope.cs", - "sourceLines": "30-30" + "sourceLines": "88-88" } ] }, @@ -4762,7 +6593,7 @@ } ], "sourceFile": "src/Aspire.Hosting.Azure/AzureEnvironmentResource.cs", - "sourceLines": "27-27", + "sourceLines": "26-26", "members": [ { "name": ".ctor", @@ -4851,7 +6682,7 @@ ] }, "sourceFile": "src/Aspire.Hosting.Azure/AzureEnvironmentResource.cs", - "sourceLines": "64-180" + "sourceLines": "63-162" }, { "name": "PrepareResourcesStepName", @@ -4961,7 +6792,7 @@ ] }, "sourceFile": "src/Aspire.Hosting.Azure/AzureEnvironmentResourceExtensions.cs", - "sourceLines": "12-12", + "sourceLines": "16-16", "members": [ { "name": "AddAzureEnvironment", @@ -5031,7 +6862,7 @@ } }, "sourceFile": "src/Aspire.Hosting.Azure/AzureEnvironmentResourceExtensions.cs", - "sourceLines": "24-51" + "sourceLines": "28-88" }, { "name": "WithLocation", @@ -5117,7 +6948,7 @@ } }, "sourceFile": "src/Aspire.Hosting.Azure/AzureEnvironmentResourceExtensions.cs", - "sourceLines": "71-76" + "sourceLines": "116-121" }, { "name": "WithResourceGroup", @@ -5203,7 +7034,7 @@ } }, "sourceFile": "src/Aspire.Hosting.Azure/AzureEnvironmentResourceExtensions.cs", - "sourceLines": "96-101" + "sourceLines": "141-146" } ] }, @@ -5856,7 +7687,7 @@ } }, "sourceFile": "src/Aspire.Hosting.Azure/AzureProvisioningResource.cs", - "sourceLines": "169-225" + "sourceLines": "169-195" }, { "name": "ConfigureInfrastructure", @@ -6600,6 +8431,121 @@ } ] }, + { + "name": "AzureSubnetServiceDelegations", + "fullName": "Aspire.Hosting.Azure.AzureSubnetServiceDelegations", + "namespace": "Aspire.Hosting.Azure", + "kind": "class", + "accessibility": "public", + "isStatic": true, + "docs": { + "summary": [ + { + "kind": "text", + "text": " Well-known Azure service identifiers for subnet service delegation. " + } + ], + "remarks": [ + { + "kind": "text", + "text": " Delegating a subnet grants an Azure service permission to create service-specific resources in that subnet. These constants provide discoverable, strongly-named values for the services Aspire integrates with, so callers don't have to remember or duplicate the underlying resource provider strings when delegating a subnet. Each value is an Azure resource provider path; see " + }, + { + "kind": "href", + "text": "Subnet delegation", + "value": "https://learn.microsoft.com/azure/virtual-network/subnet-delegation-overview" + }, + { + "kind": "text", + "text": ". " + } + ], + "examples": [ + { + "code": "\n var vnet = builder.AddAzureVirtualNetwork(\"vnet\");\n var subnet = vnet.AddSubnet(\"aci-subnet\", \"10.0.0.0/23\")\n .WithServiceDelegation(AzureSubnetServiceDelegations.ContainerInstances);\n ", + "language": "csharp", + "description": [ + { + "kind": "text", + "text": "This example delegates a subnet to Azure Container Instances using a well-known value:" + } + ] + } + ] + }, + "sourceFile": "src/Aspire.Hosting.Azure/AzureSubnetServiceDelegations.cs", + "sourceLines": "24-24", + "members": [ + { + "name": "ApplicationGatewayForContainers", + "kind": "field", + "accessibility": "public", + "signature": "public const static string AzureSubnetServiceDelegations.ApplicationGatewayForContainers", + "returnType": "string", + "isStatic": true, + "isConst": true, + "docs": { + "summary": [ + { + "kind": "text", + "text": " Delegation for Azure Application Gateway for Containers. " + } + ] + } + }, + { + "name": "AppServiceEnvironments", + "kind": "field", + "accessibility": "public", + "signature": "public const static string AzureSubnetServiceDelegations.AppServiceEnvironments", + "returnType": "string", + "isStatic": true, + "isConst": true, + "docs": { + "summary": [ + { + "kind": "text", + "text": " Delegation for Azure App Service environments. " + } + ] + } + }, + { + "name": "ContainerAppEnvironments", + "kind": "field", + "accessibility": "public", + "signature": "public const static string AzureSubnetServiceDelegations.ContainerAppEnvironments", + "returnType": "string", + "isStatic": true, + "isConst": true, + "docs": { + "summary": [ + { + "kind": "text", + "text": " Delegation for Azure Container Apps environments. " + } + ] + } + }, + { + "name": "ContainerInstances", + "kind": "field", + "accessibility": "public", + "signature": "public const static string AzureSubnetServiceDelegations.ContainerInstances", + "returnType": "string", + "isStatic": true, + "isConst": true, + "docs": { + "summary": [ + { + "kind": "text", + "text": " Delegation for Azure Container Instances (ACI), which allows container groups to be deployed into the subnet. " + } + ] + } + } + ] + }, { "name": "AzureUserAssignedIdentityExtensions", "fullName": "Aspire.Hosting.Azure.AzureUserAssignedIdentityExtensions", @@ -7108,7 +9054,7 @@ } ], "sourceFile": "src/Aspire.Hosting.Azure/AzureBicepResource.cs", - "sourceLines": "631-631", + "sourceLines": "580-580", "members": [ { "name": ".ctor", @@ -7157,7 +9103,7 @@ } }, "sourceFile": "src/Aspire.Hosting.Azure/AzureBicepResource.cs", - "sourceLines": "631-641" + "sourceLines": "580-590" }, { "name": "GetHashCode", @@ -7181,7 +9127,7 @@ ] }, "sourceFile": "src/Aspire.Hosting.Azure/AzureBicepResource.cs", - "sourceLines": "688-688" + "sourceLines": "637-637" }, { "name": "GetValueAsync", @@ -7221,7 +9167,7 @@ } }, "sourceFile": "src/Aspire.Hosting.Azure/AzureBicepResource.cs", - "sourceLines": "651-658" + "sourceLines": "600-607" }, { "name": "Name", @@ -7239,7 +9185,7 @@ ] }, "sourceFile": "src/Aspire.Hosting.Azure/AzureBicepResource.cs", - "sourceLines": "636-636" + "sourceLines": "585-585" }, { "name": "Resource", @@ -7257,7 +9203,7 @@ ] }, "sourceFile": "src/Aspire.Hosting.Azure/AzureBicepResource.cs", - "sourceLines": "641-641" + "sourceLines": "590-590" }, { "name": "Value", @@ -7276,7 +9222,7 @@ ] }, "sourceFile": "src/Aspire.Hosting.Azure/AzureBicepResource.cs", - "sourceLines": "667-672" + "sourceLines": "616-621" }, { "name": "ValueExpression", @@ -7294,7 +9240,7 @@ ] }, "sourceFile": "src/Aspire.Hosting.Azure/AzureBicepResource.cs", - "sourceLines": "679-679" + "sourceLines": "628-628" } ] }, @@ -7350,7 +9296,7 @@ } ], "sourceFile": "src/Aspire.Hosting.Azure/AzureBicepResource.cs", - "sourceLines": "576-576", + "sourceLines": "525-525", "members": [ { "name": ".ctor", @@ -7399,7 +9345,7 @@ } }, "sourceFile": "src/Aspire.Hosting.Azure/AzureBicepResource.cs", - "sourceLines": "576-586" + "sourceLines": "525-535" }, { "name": "GetValueAsync", @@ -7439,7 +9385,7 @@ } }, "sourceFile": "src/Aspire.Hosting.Azure/AzureBicepResource.cs", - "sourceLines": "594-600" + "sourceLines": "543-549" }, { "name": "Name", @@ -7457,7 +9403,7 @@ ] }, "sourceFile": "src/Aspire.Hosting.Azure/AzureBicepResource.cs", - "sourceLines": "581-581" + "sourceLines": "530-530" }, { "name": "Resource", @@ -7475,7 +9421,7 @@ ] }, "sourceFile": "src/Aspire.Hosting.Azure/AzureBicepResource.cs", - "sourceLines": "586-586" + "sourceLines": "535-535" }, { "name": "Value", @@ -7494,7 +9440,7 @@ ] }, "sourceFile": "src/Aspire.Hosting.Azure/AzureBicepResource.cs", - "sourceLines": "609-613" + "sourceLines": "558-562" }, { "name": "ValueExpression", @@ -7512,7 +9458,7 @@ ] }, "sourceFile": "src/Aspire.Hosting.Azure/AzureBicepResource.cs", - "sourceLines": "620-620" + "sourceLines": "569-569" } ] }, @@ -7550,7 +9496,7 @@ } }, "sourceFile": "src/Aspire.Hosting.Azure/AzureBicepResource.cs", - "sourceLines": "551-551", + "sourceLines": "500-500", "members": [ { "name": ".ctor", @@ -7591,7 +9537,7 @@ } }, "sourceFile": "src/Aspire.Hosting.Azure/AzureBicepResource.cs", - "sourceLines": "556-556" + "sourceLines": "505-505" }, { "name": "Dispose", @@ -7616,7 +9562,7 @@ ] }, "sourceFile": "src/Aspire.Hosting.Azure/AzureBicepResource.cs", - "sourceLines": "563-567" + "sourceLines": "512-516" }, { "name": "Path", @@ -7634,7 +9580,7 @@ ] }, "sourceFile": "src/Aspire.Hosting.Azure/AzureBicepResource.cs", - "sourceLines": "556-556" + "sourceLines": "505-505" } ] }, @@ -7963,12 +9909,128 @@ "summary": [ { "kind": "text", - "text": " Represents a resource that is not managed by Aspire's provisioning or container management layer. " + "text": " Initializes a new instance of the " + }, + { + "kind": "cref", + "value": "T:Aspire.Hosting.Azure.ExistingAzureResourceAnnotation" + }, + { + "kind": "text", + "text": " class. " + } + ], + "parameters": { + "name": [ + { + "kind": "text", + "text": "The name of the existing resource." + } + ], + "resourceGroup": [ + { + "kind": "text", + "text": "The name of the existing resource group, or " + }, + { + "kind": "langword", + "value": "null" + }, + { + "kind": "text", + "text": " to use the current resource group." + } + ] + } + }, + "sourceFile": "src/Aspire.Hosting.Azure/ExistingAzureResourceAnnotation.cs", + "sourceLines": "19-23" + }, + { + "name": ".ctor", + "kind": "constructor", + "accessibility": "public", + "signature": "public ExistingAzureResourceAnnotation.ExistingAzureResourceAnnotation(object name, object? resourceGroup, object subscription)", + "returnType": "void", + "parameters": [ + { + "name": "name", + "type": "object" + }, + { + "name": "resourceGroup", + "type": "object?", + "isNullable": true + }, + { + "name": "subscription", + "type": "object" + } + ], + "docs": { + "summary": [ + { + "kind": "text", + "text": " Initializes a new instance of the " + }, + { + "kind": "cref", + "value": "T:Aspire.Hosting.Azure.ExistingAzureResourceAnnotation" + }, + { + "kind": "text", + "text": " class. " + } + ], + "parameters": { + "name": [ + { + "kind": "text", + "text": "The name of the existing resource." + } + ], + "resourceGroup": [ + { + "kind": "text", + "text": "The name of the existing resource group, or " + }, + { + "kind": "langword", + "value": "null" + }, + { + "kind": "text", + "text": " to use the current resource group." + } + ], + "subscription": [ + { + "kind": "text", + "text": "The subscription identifier associated with the resource group." + } + ] + } + }, + "sourceFile": "src/Aspire.Hosting.Azure/ExistingAzureResourceAnnotation.cs", + "sourceLines": "31-34" + }, + { + "name": "IsTenantScope", + "kind": "property", + "accessibility": "public", + "signature": "public bool ExistingAzureResourceAnnotation.IsTenantScope", + "returnType": "bool", + "hasGet": true, + "docs": { + "summary": [ + { + "kind": "text", + "text": " Gets a value indicating whether the resource is scoped to the current tenant. " } ] }, "sourceFile": "src/Aspire.Hosting.Azure/ExistingAzureResourceAnnotation.cs", - "sourceLines": "12-28" + "sourceLines": "68-68" }, { "name": "Name", @@ -8016,7 +10078,7 @@ ] }, "sourceFile": "src/Aspire.Hosting.Azure/ExistingAzureResourceAnnotation.cs", - "sourceLines": "20-20" + "sourceLines": "47-47" }, { "name": "ResourceGroup", @@ -8065,7 +10127,48 @@ ] }, "sourceFile": "src/Aspire.Hosting.Azure/ExistingAzureResourceAnnotation.cs", - "sourceLines": "28-28" + "sourceLines": "55-55" + }, + { + "name": "Subscription", + "kind": "property", + "accessibility": "public", + "signature": "public object? ExistingAzureResourceAnnotation.Subscription", + "returnType": "object?", + "isReturnNullable": true, + "hasGet": true, + "docs": { + "summary": [ + { + "kind": "text", + "text": " Gets the subscription identifier associated with the resource group or subscription-scoped resource. " + } + ], + "remarks": [ + { + "kind": "text", + "text": " Supports a " + }, + { + "kind": "cref", + "value": "T:System.String" + }, + { + "kind": "text", + "text": " or a " + }, + { + "kind": "cref", + "value": "T:Aspire.Hosting.ApplicationModel.ParameterResource" + }, + { + "kind": "text", + "text": " via runtime validation. " + } + ] + }, + "sourceFile": "src/Aspire.Hosting.Azure/ExistingAzureResourceAnnotation.cs", + "sourceLines": "63-63" } ] }, @@ -9218,7 +11321,7 @@ ] }, "sourceFile": "src/Aspire.Hosting.Azure/AzureBicepResource.cs", - "sourceLines": "458-458", + "sourceLines": "407-407", "members": [ { "name": "KeyVaultName", diff --git a/src/frontend/src/data/pkgs/Aspire.Hosting.Azure.AppConfiguration.13.4.6.json b/src/frontend/src/data/pkgs/Aspire.Hosting.Azure.AppConfiguration.13.5.0.json similarity index 99% rename from src/frontend/src/data/pkgs/Aspire.Hosting.Azure.AppConfiguration.13.4.6.json rename to src/frontend/src/data/pkgs/Aspire.Hosting.Azure.AppConfiguration.13.5.0.json index 95d48729f..a20cc2be9 100644 --- a/src/frontend/src/data/pkgs/Aspire.Hosting.Azure.AppConfiguration.13.4.6.json +++ b/src/frontend/src/data/pkgs/Aspire.Hosting.Azure.AppConfiguration.13.5.0.json @@ -1,10 +1,10 @@ { "package": { "name": "Aspire.Hosting.Azure.AppConfiguration", - "version": "13.4.6", + "version": "13.5.0", "targetFramework": "net10.0", "sourceRepository": "https://github.com/microsoft/aspire", - "sourceCommit": "87fe259e4fc244c599019a7b1304c85a1488f248" + "sourceCommit": "e076d8e427cb3afb528dbd605acd74c3aea69f94" }, "types": [ { @@ -116,7 +116,7 @@ } }, "sourceFile": "src/Aspire.Hosting.Azure.AppConfiguration/AzureAppConfigurationExtensions.cs", - "sourceLines": "37-86" + "sourceLines": "37-87" }, { "name": "RunAsEmulator", @@ -210,7 +210,7 @@ } }, "sourceFile": "src/Aspire.Hosting.Azure.AppConfiguration/AzureAppConfigurationExtensions.cs", - "sourceLines": "103-125" + "sourceLines": "104-126" }, { "name": "WithDataBindMount", @@ -283,7 +283,7 @@ } }, "sourceFile": "src/Aspire.Hosting.Azure.AppConfiguration/AzureAppConfigurationExtensions.cs", - "sourceLines": "137-139" + "sourceLines": "138-140" }, { "name": "WithDataVolume", @@ -356,7 +356,7 @@ } }, "sourceFile": "src/Aspire.Hosting.Azure.AppConfiguration/AzureAppConfigurationExtensions.cs", - "sourceLines": "151-153" + "sourceLines": "152-154" }, { "name": "WithHostPort", @@ -428,7 +428,7 @@ } }, "sourceFile": "src/Aspire.Hosting.Azure.AppConfiguration/AzureAppConfigurationExtensions.cs", - "sourceLines": "166-171" + "sourceLines": "167-172" }, { "name": "WithRoleAssignments", diff --git a/src/frontend/src/data/pkgs/Aspire.Hosting.Azure.AppContainers.13.4.6.json b/src/frontend/src/data/pkgs/Aspire.Hosting.Azure.AppContainers.13.5.0.json similarity index 89% rename from src/frontend/src/data/pkgs/Aspire.Hosting.Azure.AppContainers.13.4.6.json rename to src/frontend/src/data/pkgs/Aspire.Hosting.Azure.AppContainers.13.5.0.json index ecbd0381f..88a95480a 100644 --- a/src/frontend/src/data/pkgs/Aspire.Hosting.Azure.AppContainers.13.4.6.json +++ b/src/frontend/src/data/pkgs/Aspire.Hosting.Azure.AppContainers.13.5.0.json @@ -1,10 +1,10 @@ { "package": { "name": "Aspire.Hosting.Azure.AppContainers", - "version": "13.4.6", + "version": "13.5.0", "targetFramework": "net10.0", "sourceRepository": "https://github.com/microsoft/aspire", - "sourceCommit": "87fe259e4fc244c599019a7b1304c85a1488f248" + "sourceCommit": "e076d8e427cb3afb528dbd605acd74c3aea69f94" }, "types": [ { @@ -239,7 +239,7 @@ ] }, "sourceFile": "src/Aspire.Hosting.Azure.AppContainers/AzureContainerAppExtensions.cs", - "sourceLines": "28-28", + "sourceLines": "31-31", "members": [ { "name": "AddAzureContainerAppEnvironment", @@ -294,7 +294,7 @@ } }, "sourceFile": "src/Aspire.Hosting.Azure.AppContainers/AzureContainerAppExtensions.cs", - "sourceLines": "104-439" + "sourceLines": "270-663" }, { "name": "AddAzureContainerAppsInfrastructure", @@ -336,7 +336,7 @@ } }, "sourceFile": "src/Aspire.Hosting.Azure.AppContainers/AzureContainerAppExtensions.cs", - "sourceLines": "36-36" + "sourceLines": "42-42" }, { "name": "WithAcrPullIdentity", @@ -597,7 +597,7 @@ ] }, "sourceFile": "src/Aspire.Hosting.Azure.AppContainers/AzureContainerAppExtensions.cs", - "sourceLines": "756-761" + "sourceLines": "1110-1115" }, { "name": "WithAzdResourceNaming", @@ -652,7 +652,7 @@ } }, "sourceFile": "src/Aspire.Hosting.Azure.AppContainers/AzureContainerAppExtensions.cs", - "sourceLines": "617-618" + "sourceLines": "915-916" }, { "name": "WithAzureLogAnalyticsWorkspace", @@ -742,7 +742,7 @@ ] }, "sourceFile": "src/Aspire.Hosting.Azure.AppContainers/AzureContainerAppExtensions.cs", - "sourceLines": "698-704" + "sourceLines": "1052-1058" }, { "name": "WithCompactResourceNaming", @@ -889,7 +889,7 @@ } }, "sourceFile": "src/Aspire.Hosting.Azure.AppContainers/AzureContainerAppExtensions.cs", - "sourceLines": "649-650" + "sourceLines": "947-948" }, { "name": "WithDashboard", @@ -946,7 +946,7 @@ } }, "sourceFile": "src/Aspire.Hosting.Azure.AppContainers/AzureContainerAppExtensions.cs", - "sourceLines": "663-664" + "sourceLines": "1017-1018" }, { "name": "WithHttpsUpgrade", @@ -1017,7 +1017,267 @@ } }, "sourceFile": "src/Aspire.Hosting.Azure.AppContainers/AzureContainerAppExtensions.cs", - "sourceLines": "683-684" + "sourceLines": "1037-1038" + }, + { + "name": "WithUniqueResourceNaming", + "kind": "method", + "accessibility": "public", + "signature": "public static IResourceBuilder AzureContainerAppExtensions.WithUniqueResourceNaming(this IResourceBuilder builder)", + "returnType": "Aspire.Hosting.ApplicationModel.IResourceBuilder", + "isStatic": true, + "isExtension": true, + "parameters": [ + { + "name": "builder", + "type": "Aspire.Hosting.ApplicationModel.IResourceBuilder", + "modifier": "this" + } + ], + "attributes": [ + { + "name": "Aspire.Hosting.AspireExportAttribute" + }, + { + "name": "System.Diagnostics.CodeAnalysis.ExperimentalAttribute", + "constructorArguments": [ + "ASPIREACANAMING002" + ], + "arguments": { + "UrlFormat": "https://aka.ms/aspire/diagnostics/{0}" + } + } + ], + "docs": { + "summary": [ + { + "kind": "text", + "text": " Configures the container app environment to incorporate its resource name into the generated managed environment " + }, + { + "kind": "code", + "text": "name" + }, + { + "kind": "text", + "text": ", so that multiple environments in the same resource group get distinct names. " + } + ], + "remarks": [ + { + "kind": "para", + "children": [ + { + "kind": "text", + "text": " By default the managed environment relies on Azure.Provisioning's name, whose sanitizer keeps only lowercase letters. For example, two " + }, + { + "kind": "cref", + "value": "M:Aspire.Hosting.AzureContainerAppExtensions.AddAzureContainerAppEnvironment(Aspire.Hosting.IDistributedApplicationBuilder,System.String)" + }, + { + "kind": "text", + "text": " resources named " + }, + { + "kind": "code", + "text": "cae1" + }, + { + "kind": "text", + "text": " and " + }, + { + "kind": "code", + "text": "cae2" + }, + { + "kind": "text", + "text": " both drop their trailing digit and yield " + }, + { + "kind": "code", + "text": "take('cae${uniqueString(resourceGroup().id)}', 24)" + }, + { + "kind": "text", + "text": ". When they share a resource group, that default would collapse both onto a single physical environment and concurrent container-app writes would race with " + }, + { + "kind": "code", + "text": "ManagedEnvironmentOperationInProgress" + }, + { + "kind": "text", + "text": ". Publish and deploy detect this collision and fail with guidance to apply this method instead (see " + }, + { + "kind": "href", + "value": "https://github.com/microsoft/aspire/issues/18722" + }, + { + "kind": "text", + "text": "). " + } + ] + }, + { + "kind": "para", + "children": [ + { + "kind": "text", + "text": " Applying this method computes the managed environment " + }, + { + "kind": "code", + "text": "name" + }, + { + "kind": "text", + "text": " with the same algorithm Azure.Provisioning uses for every other Azure resource type (sanitized resource name, then a hyphen separator and a " + }, + { + "kind": "code", + "text": "uniqueString(resourceGroup().id)" + }, + { + "kind": "text", + "text": " suffix, truncated to the maximum length), but with the character requirements Azure Container Apps managed environments actually allow — lowercase letters, digits, and hyphens, with a 60-character maximum. For example, " + }, + { + "kind": "code", + "text": "cae1" + }, + { + "kind": "text", + "text": " produces " + }, + { + "kind": "code", + "text": "take('cae1-${uniqueString(resourceGroup().id)}', 60)" + }, + { + "kind": "text", + "text": ", while " + }, + { + "kind": "code", + "text": "prod1" + }, + { + "kind": "text", + "text": " uses a " + }, + { + "kind": "code", + "text": "prod1" + }, + { + "kind": "text", + "text": " prefix. Preserving the digits gives each environment a distinct " + }, + { + "kind": "code", + "text": "name" + }, + { + "kind": "text", + "text": ". This is opt-in because enabling it changes the environment " + }, + { + "kind": "code", + "text": "name" + }, + { + "kind": "text", + "text": " for an already-deployed single environment, which would cause Azure to recreate it. Apply it only to the environments that need distinct names (typically when deploying more than one environment to a single resource group), or to new deployments. " + } + ] + }, + { + "kind": "para", + "children": [ + { + "kind": "text", + "text": " This option acts as a fallback after name resolvers configured through " + }, + { + "kind": "cref", + "value": "P:Aspire.Hosting.Azure.AzureProvisioningOptions.ProvisioningBuildOptions" + }, + { + "kind": "text", + "text": ". A configured resolver can therefore override the generated name. This option also has no effect when " + }, + { + "kind": "cref", + "value": "M:Aspire.Hosting.AzureContainerAppExtensions.WithAzdResourceNaming(Aspire.Hosting.ApplicationModel.IResourceBuilder{Aspire.Hosting.Azure.AppContainers.AzureContainerAppEnvironmentResource})" + }, + { + "kind": "text", + "text": " is used, since azd naming sets the environment name explicitly. " + } + ] + } + ], + "returns": [ + { + "kind": "text", + "text": "A reference to the " + }, + { + "kind": "cref", + "value": "T:Aspire.Hosting.ApplicationModel.IResourceBuilder`1" + }, + { + "kind": "text", + "text": " for chaining." + } + ], + "parameters": { + "builder": [ + { + "kind": "text", + "text": "The " + }, + { + "kind": "cref", + "value": "T:Aspire.Hosting.Azure.AppContainers.AzureContainerAppEnvironmentResource" + }, + { + "kind": "text", + "text": " to configure." + } + ] + }, + "exceptions": [ + { + "type": "T:System.ArgumentNullException", + "description": [ + { + "kind": "text", + "text": "Thrown when " + }, + { + "kind": "paramref", + "value": "builder" + }, + { + "kind": "text", + "text": " is null." + } + ] + } + ], + "examples": [ + { + "code": "\n var env1 = builder.AddAzureContainerAppEnvironment(\"cae1\")\n .WithUniqueResourceNaming();\n var env2 = builder.AddAzureContainerAppEnvironment(\"cae2\")\n .WithUniqueResourceNaming();\n ", + "language": "csharp" + } + ] + }, + "sourceFile": "src/Aspire.Hosting.Azure.AppContainers/AzureContainerAppExtensions.cs", + "sourceLines": "1001-1004" } ] }, @@ -1145,7 +1405,7 @@ ] }, "sourceFile": "src/Aspire.Hosting.Azure.AppContainers/ContainerAppExtensions.cs", - "sourceLines": "16-16", + "sourceLines": "15-15", "members": [ { "name": "ConfigureCustomDomain", @@ -1173,15 +1433,6 @@ "attributes": [ { "name": "Aspire.Hosting.AspireExportAttribute" - }, - { - "name": "System.Diagnostics.CodeAnalysis.ExperimentalAttribute", - "constructorArguments": [ - "ASPIREACADOMAINS001" - ], - "arguments": { - "UrlFormat": "https://aka.ms/aspire/diagnostics/{0}" - } } ], "docs": { @@ -1368,7 +1619,7 @@ ] }, "sourceFile": "src/Aspire.Hosting.Azure.AppContainers/ContainerAppExtensions.cs", - "sourceLines": "62-127" + "sourceLines": "60-125" }, { "name": "PublishAsAzureContainerAppJob", @@ -1462,7 +1713,7 @@ } }, "sourceFile": "src/Aspire.Hosting.Azure.AppContainers/ContainerAppExtensions.cs", - "sourceLines": "158-170" + "sourceLines": "156-168" }, { "name": "PublishAsAzureContainerAppJob", @@ -1537,7 +1788,7 @@ } }, "sourceFile": "src/Aspire.Hosting.Azure.AppContainers/ContainerAppExtensions.cs", - "sourceLines": "195-201" + "sourceLines": "193-199" }, { "name": "PublishAsScheduledAzureContainerAppJob", @@ -1651,7 +1902,7 @@ } }, "sourceFile": "src/Aspire.Hosting.Azure.AppContainers/ContainerAppExtensions.cs", - "sourceLines": "244-253" + "sourceLines": "242-251" } ] }, @@ -1856,7 +2107,7 @@ } }, "sourceFile": "src/Aspire.Hosting.Azure.AppContainers/AzureContainerAppEnvironmentResource.cs", - "sourceLines": "38-273" + "sourceLines": "38-279" }, { "name": "AddAsExistingResource", @@ -1942,7 +2193,7 @@ } }, "sourceFile": "src/Aspire.Hosting.Azure.AppContainers/AzureContainerAppEnvironmentResource.cs", - "sourceLines": "401-425" + "sourceLines": "407-431" }, { "name": "GetEndpointPropertyExpression", @@ -2072,7 +2323,7 @@ ] }, "sourceFile": "src/Aspire.Hosting.Azure.AppContainers/AzureContainerAppEnvironmentResource.cs", - "sourceLines": "349-371" + "sourceLines": "355-377" }, { "name": "GetHostAddressExpression", @@ -2150,7 +2401,7 @@ } }, "sourceFile": "src/Aspire.Hosting.Azure.AppContainers/AzureContainerAppEnvironmentResource.cs", - "sourceLines": "332-342" + "sourceLines": "338-348" }, { "name": "ContainerRegistry", @@ -2169,7 +2420,7 @@ ] }, "sourceFile": "src/Aspire.Hosting.Azure.AppContainers/AzureContainerAppEnvironmentResource.cs", - "sourceLines": "305-320" + "sourceLines": "311-326" }, { "name": "NameOutputReference", @@ -2187,7 +2438,7 @@ ] }, "sourceFile": "src/Aspire.Hosting.Azure.AppContainers/AzureContainerAppEnvironmentResource.cs", - "sourceLines": "271-271" + "sourceLines": "277-277" } ] }, diff --git a/src/frontend/src/data/pkgs/Aspire.Hosting.Azure.AppService.13.4.6.json b/src/frontend/src/data/pkgs/Aspire.Hosting.Azure.AppService.13.5.0.json similarity index 98% rename from src/frontend/src/data/pkgs/Aspire.Hosting.Azure.AppService.13.4.6.json rename to src/frontend/src/data/pkgs/Aspire.Hosting.Azure.AppService.13.5.0.json index 72378c728..c6a02b1ab 100644 --- a/src/frontend/src/data/pkgs/Aspire.Hosting.Azure.AppService.13.4.6.json +++ b/src/frontend/src/data/pkgs/Aspire.Hosting.Azure.AppService.13.5.0.json @@ -1,10 +1,10 @@ { "package": { "name": "Aspire.Hosting.Azure.AppService", - "version": "13.4.6", + "version": "13.5.0", "targetFramework": "net10.0", "sourceRepository": "https://github.com/microsoft/aspire", - "sourceCommit": "87fe259e4fc244c599019a7b1304c85a1488f248" + "sourceCommit": "e076d8e427cb3afb528dbd605acd74c3aea69f94" }, "types": [ { @@ -268,7 +268,7 @@ } }, "sourceFile": "src/Aspire.Hosting.Azure.AppService/AzureAppServiceEnvironmentExtensions.cs", - "sourceLines": "88-300" + "sourceLines": "88-307" }, { "name": "WithAcrPullIdentity", @@ -571,7 +571,7 @@ ] }, "sourceFile": "src/Aspire.Hosting.Azure.AppService/AzureAppServiceEnvironmentExtensions.cs", - "sourceLines": "534-539" + "sourceLines": "541-546" }, { "name": "WithAzureApplicationInsights", @@ -619,7 +619,7 @@ } }, "sourceFile": "src/Aspire.Hosting.Azure.AppService/AzureAppServiceEnvironmentExtensions.cs", - "sourceLines": "352-354" + "sourceLines": "359-361" }, { "name": "WithAzureApplicationInsights", @@ -791,7 +791,7 @@ } }, "sourceFile": "src/Aspire.Hosting.Azure.AppService/AzureAppServiceEnvironmentExtensions.cs", - "sourceLines": "416-418" + "sourceLines": "423-425" }, { "name": "WithDashboard", @@ -864,7 +864,7 @@ } }, "sourceFile": "src/Aspire.Hosting.Azure.AppService/AzureAppServiceEnvironmentExtensions.cs", - "sourceLines": "340-341" + "sourceLines": "347-348" }, { "name": "WithDeploymentSlot", @@ -1077,7 +1077,7 @@ ] }, "sourceFile": "src/Aspire.Hosting.Azure.AppService/AzureAppServiceEnvironmentExtensions.cs", - "sourceLines": "326-327" + "sourceLines": "333-334" } ] }, @@ -1093,7 +1093,8 @@ "Aspire.Hosting.ApplicationModel.IContainerRegistry", "Aspire.Hosting.ApplicationModel.IResource", "Aspire.Hosting.Azure.IAzureComputeEnvironmentResource", - "Aspire.Hosting.Azure.IAzureContainerRegistry" + "Aspire.Hosting.Azure.IAzureContainerRegistry", + "Aspire.Hosting.Azure.IAzureDelegatedSubnetResource" ], "docs": { "summary": [ @@ -1104,7 +1105,7 @@ ] }, "sourceFile": "src/Aspire.Hosting.Azure.AppService/AzureAppServiceEnvironmentResource.cs", - "sourceLines": "27-27", + "sourceLines": "29-29", "members": [ { "name": ".ctor", @@ -1153,7 +1154,7 @@ } }, "sourceFile": "src/Aspire.Hosting.Azure.AppService/AzureAppServiceEnvironmentResource.cs", - "sourceLines": "39-375" + "sourceLines": "46-397" }, { "name": "AddAsExistingResource", @@ -1239,7 +1240,7 @@ } }, "sourceFile": "src/Aspire.Hosting.Azure.AppService/AzureAppServiceEnvironmentResource.cs", - "sourceLines": "524-547" + "sourceLines": "546-569" }, { "name": "GetEndpointPropertyExpression", @@ -1369,7 +1370,7 @@ ] }, "sourceFile": "src/Aspire.Hosting.Azure.AppService/AzureAppServiceEnvironmentResource.cs", - "sourceLines": "496-518" + "sourceLines": "518-540" }, { "name": "GetHostAddressExpression", @@ -1447,7 +1448,7 @@ } }, "sourceFile": "src/Aspire.Hosting.Azure.AppService/AzureAppServiceEnvironmentResource.cs", - "sourceLines": "488-489" + "sourceLines": "510-511" }, { "name": "AzureAppInsightsConnectionStringReference", @@ -1465,7 +1466,7 @@ ] }, "sourceFile": "src/Aspire.Hosting.Azure.AppService/AzureAppServiceEnvironmentResource.cs", - "sourceLines": "427-427" + "sourceLines": "449-449" }, { "name": "AzureAppInsightsInstrumentationKeyReference", @@ -1483,7 +1484,7 @@ ] }, "sourceFile": "src/Aspire.Hosting.Azure.AppService/AzureAppServiceEnvironmentResource.cs", - "sourceLines": "421-421" + "sourceLines": "443-443" }, { "name": "ContainerRegistry", @@ -1502,7 +1503,7 @@ ] }, "sourceFile": "src/Aspire.Hosting.Azure.AppService/AzureAppServiceEnvironmentResource.cs", - "sourceLines": "462-476" + "sourceLines": "484-498" }, { "name": "DashboardUriReference", @@ -1520,7 +1521,7 @@ ] }, "sourceFile": "src/Aspire.Hosting.Azure.AppService/AzureAppServiceEnvironmentResource.cs", - "sourceLines": "415-415" + "sourceLines": "437-437" }, { "name": "NameOutputReference", @@ -1538,7 +1539,7 @@ ] }, "sourceFile": "src/Aspire.Hosting.Azure.AppService/AzureAppServiceEnvironmentResource.cs", - "sourceLines": "410-410" + "sourceLines": "432-432" } ] }, diff --git a/src/frontend/src/data/pkgs/Aspire.Hosting.Azure.ApplicationInsights.13.4.6.json b/src/frontend/src/data/pkgs/Aspire.Hosting.Azure.ApplicationInsights.13.5.0.json similarity index 99% rename from src/frontend/src/data/pkgs/Aspire.Hosting.Azure.ApplicationInsights.13.4.6.json rename to src/frontend/src/data/pkgs/Aspire.Hosting.Azure.ApplicationInsights.13.5.0.json index 30879aa45..9301c6638 100644 --- a/src/frontend/src/data/pkgs/Aspire.Hosting.Azure.ApplicationInsights.13.4.6.json +++ b/src/frontend/src/data/pkgs/Aspire.Hosting.Azure.ApplicationInsights.13.5.0.json @@ -1,10 +1,10 @@ { "package": { "name": "Aspire.Hosting.Azure.ApplicationInsights", - "version": "13.4.6", + "version": "13.5.0", "targetFramework": "net10.0", "sourceRepository": "https://github.com/microsoft/aspire", - "sourceCommit": "87fe259e4fc244c599019a7b1304c85a1488f248" + "sourceCommit": "e076d8e427cb3afb528dbd605acd74c3aea69f94" }, "types": [ { @@ -201,7 +201,7 @@ } }, "sourceFile": "src/Aspire.Hosting.Azure.ApplicationInsights/AzureApplicationInsightsExtensions.cs", - "sourceLines": "42-125" + "sourceLines": "42-126" }, { "name": "WithLogAnalyticsWorkspace", @@ -305,7 +305,7 @@ } }, "sourceFile": "src/Aspire.Hosting.Azure.ApplicationInsights/AzureApplicationInsightsExtensions.cs", - "sourceLines": "140-140" + "sourceLines": "141-141" }, { "name": "WithLogAnalyticsWorkspace", @@ -384,7 +384,7 @@ } }, "sourceFile": "src/Aspire.Hosting.Azure.ApplicationInsights/AzureApplicationInsightsExtensions.cs", - "sourceLines": "155-155" + "sourceLines": "156-156" } ] }, diff --git a/src/frontend/src/data/pkgs/Aspire.Hosting.Azure.CognitiveServices.13.4.6.json b/src/frontend/src/data/pkgs/Aspire.Hosting.Azure.CognitiveServices.13.5.0.json similarity index 99% rename from src/frontend/src/data/pkgs/Aspire.Hosting.Azure.CognitiveServices.13.4.6.json rename to src/frontend/src/data/pkgs/Aspire.Hosting.Azure.CognitiveServices.13.5.0.json index 030c52b86..4f916e7c2 100644 --- a/src/frontend/src/data/pkgs/Aspire.Hosting.Azure.CognitiveServices.13.4.6.json +++ b/src/frontend/src/data/pkgs/Aspire.Hosting.Azure.CognitiveServices.13.5.0.json @@ -1,10 +1,10 @@ { "package": { "name": "Aspire.Hosting.Azure.CognitiveServices", - "version": "13.4.6", + "version": "13.5.0", "targetFramework": "net10.0", "sourceRepository": "https://github.com/microsoft/aspire", - "sourceCommit": "87fe259e4fc244c599019a7b1304c85a1488f248" + "sourceCommit": "e076d8e427cb3afb528dbd605acd74c3aea69f94" }, "types": [ { @@ -116,7 +116,7 @@ } }, "sourceFile": "src/Aspire.Hosting.Azure.CognitiveServices/AzureOpenAIExtensions.cs", - "sourceLines": "38-120" + "sourceLines": "38-121" }, { "name": "AddDeployment", @@ -218,7 +218,7 @@ } }, "sourceFile": "src/Aspire.Hosting.Azure.CognitiveServices/AzureOpenAIExtensions.cs", - "sourceLines": "171-176" + "sourceLines": "172-177" }, { "name": "AddDeployment", @@ -309,7 +309,7 @@ } }, "sourceFile": "src/Aspire.Hosting.Azure.CognitiveServices/AzureOpenAIExtensions.cs", - "sourceLines": "192-200" + "sourceLines": "193-202" }, { "name": "WithProperties", @@ -383,7 +383,7 @@ } }, "sourceFile": "src/Aspire.Hosting.Azure.CognitiveServices/AzureOpenAIExtensions.cs", - "sourceLines": "213-218" + "sourceLines": "215-220" }, { "name": "WithRoleAssignments", diff --git a/src/frontend/src/data/pkgs/Aspire.Hosting.Azure.ContainerRegistry.13.4.6.json b/src/frontend/src/data/pkgs/Aspire.Hosting.Azure.ContainerRegistry.13.5.0.json similarity index 99% rename from src/frontend/src/data/pkgs/Aspire.Hosting.Azure.ContainerRegistry.13.4.6.json rename to src/frontend/src/data/pkgs/Aspire.Hosting.Azure.ContainerRegistry.13.5.0.json index 6a9c772d1..bd6954a72 100644 --- a/src/frontend/src/data/pkgs/Aspire.Hosting.Azure.ContainerRegistry.13.4.6.json +++ b/src/frontend/src/data/pkgs/Aspire.Hosting.Azure.ContainerRegistry.13.5.0.json @@ -1,10 +1,10 @@ { "package": { "name": "Aspire.Hosting.Azure.ContainerRegistry", - "version": "13.4.6", + "version": "13.5.0", "targetFramework": "net10.0", "sourceRepository": "https://github.com/microsoft/aspire", - "sourceCommit": "87fe259e4fc244c599019a7b1304c85a1488f248" + "sourceCommit": "e076d8e427cb3afb528dbd605acd74c3aea69f94" }, "types": [ { @@ -122,7 +122,7 @@ ] }, "sourceFile": "src/Aspire.Hosting.Azure.ContainerRegistry/AzureContainerRegistryExtensions.cs", - "sourceLines": "35-57" + "sourceLines": "35-58" }, { "name": "GetAzureContainerRegistry", @@ -252,7 +252,7 @@ ] }, "sourceFile": "src/Aspire.Hosting.Azure.ContainerRegistry/AzureContainerRegistryExtensions.cs", - "sourceLines": "115-120" + "sourceLines": "116-121" }, { "name": "WithAzureContainerRegistry", @@ -397,7 +397,7 @@ ] }, "sourceFile": "src/Aspire.Hosting.Azure.ContainerRegistry/AzureContainerRegistryExtensions.cs", - "sourceLines": "91-97" + "sourceLines": "92-98" }, { "name": "WithPurgeTask", @@ -685,7 +685,7 @@ ] }, "sourceFile": "src/Aspire.Hosting.Azure.ContainerRegistry/AzureContainerRegistryExtensions.cs", - "sourceLines": "161-239" + "sourceLines": "162-240" }, { "name": "WithRoleAssignments", diff --git a/src/frontend/src/data/pkgs/Aspire.Hosting.Azure.CosmosDB.13.4.6.json b/src/frontend/src/data/pkgs/Aspire.Hosting.Azure.CosmosDB.13.5.0.json similarity index 98% rename from src/frontend/src/data/pkgs/Aspire.Hosting.Azure.CosmosDB.13.4.6.json rename to src/frontend/src/data/pkgs/Aspire.Hosting.Azure.CosmosDB.13.5.0.json index 98c7d6c13..d2eae95fc 100644 --- a/src/frontend/src/data/pkgs/Aspire.Hosting.Azure.CosmosDB.13.4.6.json +++ b/src/frontend/src/data/pkgs/Aspire.Hosting.Azure.CosmosDB.13.5.0.json @@ -1,10 +1,10 @@ { "package": { "name": "Aspire.Hosting.Azure.CosmosDB", - "version": "13.4.6", + "version": "13.5.0", "targetFramework": "net10.0", "sourceRepository": "https://github.com/microsoft/aspire", - "sourceCommit": "87fe259e4fc244c599019a7b1304c85a1488f248" + "sourceCommit": "e076d8e427cb3afb528dbd605acd74c3aea69f94" }, "types": [ { @@ -468,7 +468,7 @@ } }, "sourceFile": "src/Aspire.Hosting.Azure.CosmosDB/AzureCosmosDBExtensions.cs", - "sourceLines": "39-46" + "sourceLines": "39-47" }, { "name": "AddContainer", @@ -564,7 +564,7 @@ } }, "sourceFile": "src/Aspire.Hosting.Azure.CosmosDB/AzureCosmosDBExtensions.cs", - "sourceLines": "350-360" + "sourceLines": "373-384" }, { "name": "AddContainer", @@ -660,7 +660,7 @@ } }, "sourceFile": "src/Aspire.Hosting.Azure.CosmosDB/AzureCosmosDBExtensions.cs", - "sourceLines": "396-417" + "sourceLines": "420-442" }, { "name": "AddCosmosDatabase", @@ -743,7 +743,7 @@ } }, "sourceFile": "src/Aspire.Hosting.Azure.CosmosDB/AzureCosmosDBExtensions.cs", - "sourceLines": "327-336" + "sourceLines": "349-359" }, { "name": "AddDatabase", @@ -829,7 +829,7 @@ } }, "sourceFile": "src/Aspire.Hosting.Azure.CosmosDB/AzureCosmosDBExtensions.cs", - "sourceLines": "308-313" + "sourceLines": "330-335" }, { "name": "RunAsEmulator", @@ -939,7 +939,7 @@ } }, "sourceFile": "src/Aspire.Hosting.Azure.CosmosDB/AzureCosmosDBExtensions.cs", - "sourceLines": "65-65" + "sourceLines": "66-66" }, { "name": "RunAsPreviewEmulator", @@ -983,7 +983,7 @@ "summary": [ { "kind": "text", - "text": " Configures an Azure Cosmos DB resource to be emulated using the Azure Cosmos DB Linux-based emulator (preview) with the NoSQL API. This resource requires an " + "text": " Configures an Azure Cosmos DB resource to be emulated using the Azure Cosmos DB Linux-based (vNext) emulator with the NoSQL API. This resource requires an " }, { "kind": "cref", @@ -1050,7 +1050,7 @@ } }, "sourceFile": "src/Aspire.Hosting.Azure.CosmosDB/AzureCosmosDBExtensions.cs", - "sourceLines": "82-82" + "sourceLines": "83-83" }, { "name": "WithAccessKeyAuthentication", @@ -1117,7 +1117,7 @@ } }, "sourceFile": "src/Aspire.Hosting.Azure.CosmosDB/AzureCosmosDBExtensions.cs", - "sourceLines": "508-527" + "sourceLines": "537-556" }, { "name": "WithAccessKeyAuthentication", @@ -1183,7 +1183,7 @@ } }, "sourceFile": "src/Aspire.Hosting.Azure.CosmosDB/AzureCosmosDBExtensions.cs", - "sourceLines": "554-571" + "sourceLines": "583-600" }, { "name": "WithDataExplorer", @@ -1224,7 +1224,7 @@ "summary": [ { "kind": "text", - "text": " Configures the Azure Cosmos DB preview emulator to expose the Data Explorer endpoint. " + "text": " Configures the Azure Cosmos DB Linux-based (vNext) emulator to expose the Data Explorer endpoint. " } ], "remarks": [ @@ -1263,7 +1263,7 @@ } }, "sourceFile": "src/Aspire.Hosting.Azure.CosmosDB/AzureCosmosDBExtensions.cs", - "sourceLines": "446-481" + "sourceLines": "471-510" }, { "name": "WithDataVolume", @@ -1336,7 +1336,7 @@ } }, "sourceFile": "src/Aspire.Hosting.Azure.CosmosDB/AzureCosmosDBExtensions.cs", - "sourceLines": "245-250" + "sourceLines": "258-272" }, { "name": "WithDefaultAzureSku", @@ -1389,7 +1389,7 @@ } }, "sourceFile": "src/Aspire.Hosting.Azure.CosmosDB/AzureCosmosDBExtensions.cs", - "sourceLines": "429-430" + "sourceLines": "454-455" }, { "name": "WithGatewayPort", @@ -1445,7 +1445,7 @@ } }, "sourceFile": "src/Aspire.Hosting.Azure.CosmosDB/AzureCosmosDBExtensions.cs", - "sourceLines": "262-267" + "sourceLines": "284-289" }, { "name": "WithPartitionCount", @@ -1515,7 +1515,7 @@ } }, "sourceFile": "src/Aspire.Hosting.Azure.CosmosDB/AzureCosmosDBExtensions.cs", - "sourceLines": "282-294" + "sourceLines": "304-316" } ] }, diff --git a/src/frontend/src/data/pkgs/Aspire.Hosting.Azure.EventHubs.13.4.6.json b/src/frontend/src/data/pkgs/Aspire.Hosting.Azure.EventHubs.13.5.0.json similarity index 99% rename from src/frontend/src/data/pkgs/Aspire.Hosting.Azure.EventHubs.13.4.6.json rename to src/frontend/src/data/pkgs/Aspire.Hosting.Azure.EventHubs.13.5.0.json index 108c37e0e..0b11160cc 100644 --- a/src/frontend/src/data/pkgs/Aspire.Hosting.Azure.EventHubs.13.4.6.json +++ b/src/frontend/src/data/pkgs/Aspire.Hosting.Azure.EventHubs.13.5.0.json @@ -1,10 +1,10 @@ { "package": { "name": "Aspire.Hosting.Azure.EventHubs", - "version": "13.4.6", + "version": "13.5.0", "targetFramework": "net10.0", "sourceRepository": "https://github.com/microsoft/aspire", - "sourceCommit": "87fe259e4fc244c599019a7b1304c85a1488f248" + "sourceCommit": "e076d8e427cb3afb528dbd605acd74c3aea69f94" }, "types": [ { @@ -108,7 +108,7 @@ } }, "sourceFile": "src/Aspire.Hosting.Azure.EventHubs/AzureEventHubsExtensions.cs", - "sourceLines": "47-131" + "sourceLines": "47-132" }, { "name": "AddConsumerGroup", @@ -191,7 +191,7 @@ } }, "sourceFile": "src/Aspire.Hosting.Azure.EventHubs/AzureEventHubsExtensions.cs", - "sourceLines": "206-215" + "sourceLines": "208-218" }, { "name": "AddEventHub", @@ -265,7 +265,7 @@ } }, "sourceFile": "src/Aspire.Hosting.Azure.EventHubs/AzureEventHubsExtensions.cs", - "sourceLines": "143-148" + "sourceLines": "144-149" }, { "name": "AddHub", @@ -348,7 +348,7 @@ } }, "sourceFile": "src/Aspire.Hosting.Azure.EventHubs/AzureEventHubsExtensions.cs", - "sourceLines": "162-171" + "sourceLines": "163-173" }, { "name": "RunAsEmulator", @@ -454,7 +454,7 @@ ] }, "sourceFile": "src/Aspire.Hosting.Azure.EventHubs/AzureEventHubsExtensions.cs", - "sourceLines": "251-360" + "sourceLines": "254-363" }, { "name": "WithConfiguration", @@ -542,7 +542,7 @@ } }, "sourceFile": "src/Aspire.Hosting.Azure.EventHubs/AzureEventHubsExtensions.cs", - "sourceLines": "448-453" + "sourceLines": "451-456" }, { "name": "WithConfigurationFile", @@ -613,7 +613,7 @@ } }, "sourceFile": "src/Aspire.Hosting.Azure.EventHubs/AzureEventHubsExtensions.cs", - "sourceLines": "432-435" + "sourceLines": "435-438" }, { "name": "WithDataBindMount", @@ -689,7 +689,7 @@ } }, "sourceFile": "src/Aspire.Hosting.Azure.EventHubs/AzureEventHubsExtensions.cs", - "sourceLines": "372-374" + "sourceLines": "375-377" }, { "name": "WithDataVolume", @@ -765,7 +765,7 @@ } }, "sourceFile": "src/Aspire.Hosting.Azure.EventHubs/AzureEventHubsExtensions.cs", - "sourceLines": "386-388" + "sourceLines": "389-391" }, { "name": "WithGatewayPort", @@ -832,7 +832,7 @@ } }, "sourceFile": "src/Aspire.Hosting.Azure.EventHubs/AzureEventHubsExtensions.cs", - "sourceLines": "400-402" + "sourceLines": "403-405" }, { "name": "WithHostPort", @@ -896,7 +896,7 @@ } }, "sourceFile": "src/Aspire.Hosting.Azure.EventHubs/AzureEventHubsExtensions.cs", - "sourceLines": "414-419" + "sourceLines": "417-422" }, { "name": "WithProperties", @@ -970,7 +970,7 @@ } }, "sourceFile": "src/Aspire.Hosting.Azure.EventHubs/AzureEventHubsExtensions.cs", - "sourceLines": "184-189" + "sourceLines": "186-191" }, { "name": "WithRoleAssignments", diff --git a/src/frontend/src/data/pkgs/Aspire.Hosting.Azure.FrontDoor.13.4.6-preview.1.26319.6.json b/src/frontend/src/data/pkgs/Aspire.Hosting.Azure.FrontDoor.13.5.0-preview.1.26417.7.json similarity index 99% rename from src/frontend/src/data/pkgs/Aspire.Hosting.Azure.FrontDoor.13.4.6-preview.1.26319.6.json rename to src/frontend/src/data/pkgs/Aspire.Hosting.Azure.FrontDoor.13.5.0-preview.1.26417.7.json index cfb09c756..6356bd295 100644 --- a/src/frontend/src/data/pkgs/Aspire.Hosting.Azure.FrontDoor.13.4.6-preview.1.26319.6.json +++ b/src/frontend/src/data/pkgs/Aspire.Hosting.Azure.FrontDoor.13.5.0-preview.1.26417.7.json @@ -1,10 +1,10 @@ { "package": { "name": "Aspire.Hosting.Azure.FrontDoor", - "version": "13.4.6-preview.1.26319.6", + "version": "13.5.0-preview.1.26417.7", "targetFramework": "net10.0", "sourceRepository": "https://github.com/microsoft/aspire", - "sourceCommit": "87fe259e4fc244c599019a7b1304c85a1488f248" + "sourceCommit": "e076d8e427cb3afb528dbd605acd74c3aea69f94" }, "types": [ { diff --git a/src/frontend/src/data/pkgs/Aspire.Hosting.Azure.Functions.13.4.6.json b/src/frontend/src/data/pkgs/Aspire.Hosting.Azure.Functions.13.5.0.json similarity index 99% rename from src/frontend/src/data/pkgs/Aspire.Hosting.Azure.Functions.13.4.6.json rename to src/frontend/src/data/pkgs/Aspire.Hosting.Azure.Functions.13.5.0.json index e9ac0a974..221f2019a 100644 --- a/src/frontend/src/data/pkgs/Aspire.Hosting.Azure.Functions.13.4.6.json +++ b/src/frontend/src/data/pkgs/Aspire.Hosting.Azure.Functions.13.5.0.json @@ -1,10 +1,10 @@ { "package": { "name": "Aspire.Hosting.Azure.Functions", - "version": "13.4.6", + "version": "13.5.0", "targetFramework": "net10.0", "sourceRepository": "https://github.com/microsoft/aspire", - "sourceCommit": "87fe259e4fc244c599019a7b1304c85a1488f248" + "sourceCommit": "e076d8e427cb3afb528dbd605acd74c3aea69f94" }, "types": [ { @@ -517,7 +517,7 @@ } }, "sourceFile": "src/Aspire.Hosting.Azure.Functions/AzureFunctionsProjectResourceExtensions.cs", - "sourceLines": "324-328" + "sourceLines": "325-329" }, { "name": "WithReference", @@ -620,7 +620,7 @@ } }, "sourceFile": "src/Aspire.Hosting.Azure.Functions/AzureFunctionsProjectResourceExtensions.cs", - "sourceLines": "344-353" + "sourceLines": "345-354" } ] }, @@ -724,7 +724,7 @@ ] }, "sourceFile": "src/Aspire.Hosting.Azure.Functions/DurableTask/DurableTaskResourceExtensions.cs", - "sourceLines": "34-38" + "sourceLines": "34-39" }, { "name": "AddTaskHub", @@ -808,7 +808,7 @@ ] }, "sourceFile": "src/Aspire.Hosting.Azure.Functions/DurableTask/DurableTaskResourceExtensions.cs", - "sourceLines": "219-243" + "sourceLines": "220-245" }, { "name": "RunAsEmulator", @@ -897,7 +897,7 @@ ] }, "sourceFile": "src/Aspire.Hosting.Azure.Functions/DurableTask/DurableTaskResourceExtensions.cs", - "sourceLines": "138-195" + "sourceLines": "139-196" }, { "name": "RunAsExisting", diff --git a/src/frontend/src/data/pkgs/Aspire.Hosting.Azure.KeyVault.13.4.6.json b/src/frontend/src/data/pkgs/Aspire.Hosting.Azure.KeyVault.13.5.0.json similarity index 99% rename from src/frontend/src/data/pkgs/Aspire.Hosting.Azure.KeyVault.13.4.6.json rename to src/frontend/src/data/pkgs/Aspire.Hosting.Azure.KeyVault.13.5.0.json index 9a40f23a7..ee1a8f30d 100644 --- a/src/frontend/src/data/pkgs/Aspire.Hosting.Azure.KeyVault.13.4.6.json +++ b/src/frontend/src/data/pkgs/Aspire.Hosting.Azure.KeyVault.13.5.0.json @@ -1,10 +1,10 @@ { "package": { "name": "Aspire.Hosting.Azure.KeyVault", - "version": "13.4.6", + "version": "13.5.0", "targetFramework": "net10.0", "sourceRepository": "https://github.com/microsoft/aspire", - "sourceCommit": "87fe259e4fc244c599019a7b1304c85a1488f248" + "sourceCommit": "e076d8e427cb3afb528dbd605acd74c3aea69f94" }, "types": [ { @@ -166,7 +166,7 @@ } }, "sourceFile": "src/Aspire.Hosting.Azure.KeyVault/AzureKeyVaultResourceExtensions.cs", - "sourceLines": "66-147" + "sourceLines": "66-148" }, { "name": "AddSecret", @@ -392,7 +392,7 @@ } }, "sourceFile": "src/Aspire.Hosting.Azure.KeyVault/AzureKeyVaultResourceExtensions.cs", - "sourceLines": "313-321" + "sourceLines": "314-322" }, { "name": "AddSecret", @@ -648,7 +648,7 @@ } }, "sourceFile": "src/Aspire.Hosting.Azure.KeyVault/AzureKeyVaultResourceExtensions.cs", - "sourceLines": "374-382" + "sourceLines": "375-383" }, { "name": "GetSecret", @@ -703,7 +703,7 @@ } }, "sourceFile": "src/Aspire.Hosting.Azure.KeyVault/AzureKeyVaultResourceExtensions.cs", - "sourceLines": "238-240" + "sourceLines": "239-241" }, { "name": "WithRoleAssignments", diff --git a/src/frontend/src/data/pkgs/Aspire.Hosting.Azure.Kubernetes.13.4.6-preview.1.26319.6.json b/src/frontend/src/data/pkgs/Aspire.Hosting.Azure.Kubernetes.13.5.0-preview.1.26417.7.json similarity index 91% rename from src/frontend/src/data/pkgs/Aspire.Hosting.Azure.Kubernetes.13.4.6-preview.1.26319.6.json rename to src/frontend/src/data/pkgs/Aspire.Hosting.Azure.Kubernetes.13.5.0-preview.1.26417.7.json index efd235770..ec473a0fb 100644 --- a/src/frontend/src/data/pkgs/Aspire.Hosting.Azure.Kubernetes.13.4.6-preview.1.26319.6.json +++ b/src/frontend/src/data/pkgs/Aspire.Hosting.Azure.Kubernetes.13.5.0-preview.1.26417.7.json @@ -1,10 +1,10 @@ { "package": { "name": "Aspire.Hosting.Azure.Kubernetes", - "version": "13.4.6-preview.1.26319.6", + "version": "13.5.0-preview.1.26417.7", "targetFramework": "net10.0", "sourceRepository": "https://github.com/microsoft/aspire", - "sourceCommit": "87fe259e4fc244c599019a7b1304c85a1488f248" + "sourceCommit": "e076d8e427cb3afb528dbd605acd74c3aea69f94" }, "types": [ { @@ -255,7 +255,7 @@ ] }, "sourceFile": "src/Aspire.Hosting.Azure.Kubernetes/AzureKubernetesEnvironmentExtensions.cs", - "sourceLines": "54-134" + "sourceLines": "54-135" }, { "name": "AddLoadBalancer", @@ -515,7 +515,7 @@ ] }, "sourceFile": "src/Aspire.Hosting.Azure.Kubernetes/AzureKubernetesEnvironmentExtensions.cs", - "sourceLines": "419-488" + "sourceLines": "421-482" }, { "name": "AddNodePool", @@ -642,7 +642,7 @@ ] }, "sourceFile": "src/Aspire.Hosting.Azure.Kubernetes/AzureKubernetesEnvironmentExtensions.cs", - "sourceLines": "170-188" + "sourceLines": "171-190" }, { "name": "WithContainerRegistry", @@ -711,7 +711,7 @@ } }, "sourceFile": "src/Aspire.Hosting.Azure.Kubernetes/AzureKubernetesEnvironmentExtensions.cs", - "sourceLines": "325-358" + "sourceLines": "327-360" }, { "name": "WithSubnet", @@ -986,7 +986,7 @@ ] }, "sourceFile": "src/Aspire.Hosting.Azure.Kubernetes/AzureKubernetesEnvironmentExtensions.cs", - "sourceLines": "223-233" + "sourceLines": "225-235" }, { "name": "WithWorkloadIdentity", @@ -1093,7 +1093,7 @@ } }, "sourceFile": "src/Aspire.Hosting.Azure.Kubernetes/AzureKubernetesEnvironmentExtensions.cs", - "sourceLines": "509-513" + "sourceLines": "503-507" } ] }, @@ -1723,6 +1723,158 @@ } ] }, + { + "name": "AzureKubernetesPersistentVolumeExtensions", + "fullName": "Aspire.Hosting.AzureKubernetesPersistentVolumeExtensions", + "namespace": "Aspire.Hosting", + "kind": "class", + "accessibility": "public", + "isStatic": true, + "docs": { + "summary": [ + { + "kind": "text", + "text": " Provides extension methods for adding Kubernetes persistent volumes to an " + }, + { + "kind": "cref", + "value": "T:Aspire.Hosting.Azure.Kubernetes.AzureKubernetesEnvironmentResource" + }, + { + "kind": "text", + "text": ". " + } + ] + }, + "attributes": [ + { + "name": "System.Diagnostics.CodeAnalysis.ExperimentalAttribute", + "constructorArguments": [ + "ASPIRECOMPUTE002" + ], + "arguments": { + "UrlFormat": "https://aka.ms/aspire/diagnostics/{0}" + } + } + ], + "sourceFile": "src/Aspire.Hosting.Azure.Kubernetes/AzureKubernetesPersistentVolumeExtensions.cs", + "sourceLines": "16-16", + "members": [ + { + "name": "AddPersistentVolume", + "kind": "method", + "accessibility": "public", + "signature": "public static IResourceBuilder AzureKubernetesPersistentVolumeExtensions.AddPersistentVolume(this IResourceBuilder builder, string name)", + "returnType": "Aspire.Hosting.ApplicationModel.IResourceBuilder", + "isStatic": true, + "isExtension": true, + "parameters": [ + { + "name": "builder", + "type": "Aspire.Hosting.ApplicationModel.IResourceBuilder", + "modifier": "this" + }, + { + "name": "name", + "type": "string" + } + ], + "attributes": [ + { + "name": "Aspire.Hosting.AspireExportAttribute" + } + ], + "docs": { + "summary": [ + { + "kind": "text", + "text": " Adds a Kubernetes PersistentVolumeClaim resource to the application model for the specified AKS environment. " + } + ], + "remarks": [ + { + "kind": "para", + "children": [ + { + "kind": "text", + "text": " The persistent volume is associated with the AKS environment's underlying Kubernetes environment and generates a " + }, + { + "kind": "code", + "text": "v1.PersistentVolumeClaim" + }, + { + "kind": "text", + "text": " in the Helm chart output. " + } + ] + }, + { + "kind": "para", + "children": [ + { + "kind": "text", + "text": " When no storage class is configured, the generated claim omits " + }, + { + "kind": "code", + "text": "spec.storageClassName" + }, + { + "kind": "text", + "text": " so the cluster's default storage class is used. A standard AKS cluster dynamically provisions an Azure managed disk for such claims. Use " + }, + { + "kind": "cref", + "value": "M:Aspire.Hosting.KubernetesPersistentVolumeExtensions.WithStorageClass(Aspire.Hosting.ApplicationModel.IResourceBuilder{Aspire.Hosting.Kubernetes.KubernetesPersistentVolumeResource},System.String)" + }, + { + "kind": "text", + "text": " to select a different storage class explicitly. " + } + ] + } + ], + "returns": [ + { + "kind": "text", + "text": "A builder for the new " + }, + { + "kind": "cref", + "value": "T:Aspire.Hosting.Kubernetes.KubernetesPersistentVolumeResource" + }, + { + "kind": "text", + "text": "." + } + ], + "parameters": { + "builder": [ + { + "kind": "text", + "text": "The AKS environment resource builder." + } + ], + "name": [ + { + "kind": "text", + "text": "The name of the persistent volume resource." + } + ] + }, + "examples": [ + { + "code": "\n var aks = builder.AddAzureKubernetesEnvironment(\"aks\");\n \n var data = aks.AddPersistentVolume(\"data\")\n .WithCapacity(\"20Gi\");\n \n builder.AddProject(\"api\")\n .WithPersistentVolume(data, \"/data\");\n ", + "language": "csharp" + } + ] + }, + "sourceFile": "src/Aspire.Hosting.Azure.Kubernetes/AzureKubernetesPersistentVolumeExtensions.cs", + "sourceLines": "57-61" + } + ] + }, { "name": "AksNodePoolConfig", "fullName": "Aspire.Hosting.Azure.Kubernetes.AksNodePoolConfig", @@ -2402,13 +2554,21 @@ "Aspire.Hosting.Azure.Kubernetes.AksNodeVmSizes.StandardDasv7", "Aspire.Hosting.Azure.Kubernetes.AksNodeVmSizes.StandardDav6", "Aspire.Hosting.Azure.Kubernetes.AksNodeVmSizes.StandardDdsv6", + "Aspire.Hosting.Azure.Kubernetes.AksNodeVmSizes.StandardDdsv7", "Aspire.Hosting.Azure.Kubernetes.AksNodeVmSizes.StandardDldsv6", + "Aspire.Hosting.Azure.Kubernetes.AksNodeVmSizes.StandardDldsv7", "Aspire.Hosting.Azure.Kubernetes.AksNodeVmSizes.StandardDlsv6", + "Aspire.Hosting.Azure.Kubernetes.AksNodeVmSizes.StandardDlsv7", + "Aspire.Hosting.Azure.Kubernetes.AksNodeVmSizes.StandardDndv6", + "Aspire.Hosting.Azure.Kubernetes.AksNodeVmSizes.StandardDnldv6", + "Aspire.Hosting.Azure.Kubernetes.AksNodeVmSizes.StandardDnlv6", + "Aspire.Hosting.Azure.Kubernetes.AksNodeVmSizes.StandardDnv6", "Aspire.Hosting.Azure.Kubernetes.AksNodeVmSizes.StandardDpdsv6", "Aspire.Hosting.Azure.Kubernetes.AksNodeVmSizes.StandardDpldsv6", "Aspire.Hosting.Azure.Kubernetes.AksNodeVmSizes.StandardDplsv6", "Aspire.Hosting.Azure.Kubernetes.AksNodeVmSizes.StandardDpsv6", "Aspire.Hosting.Azure.Kubernetes.AksNodeVmSizes.StandardDsv6", + "Aspire.Hosting.Azure.Kubernetes.AksNodeVmSizes.StandardDsv7", "Aspire.Hosting.Azure.Kubernetes.AksNodeVmSizes.StandardDv2", "Aspire.Hosting.Azure.Kubernetes.AksNodeVmSizes.StandardDv2Promo", "Aspire.Hosting.Azure.Kubernetes.AksNodeVmSizes.StandardDv3", @@ -2445,9 +2605,7 @@ "Aspire.Hosting.Azure.Kubernetes.AksNodeVmSizes.StandardEIBSv5", "Aspire.Hosting.Azure.Kubernetes.AksNodeVmSizes.StandardEIDSv5", "Aspire.Hosting.Azure.Kubernetes.AksNodeVmSizes.StandardEIDv5", - "Aspire.Hosting.Azure.Kubernetes.AksNodeVmSizes.StandardEISv3", "Aspire.Hosting.Azure.Kubernetes.AksNodeVmSizes.StandardEISv5", - "Aspire.Hosting.Azure.Kubernetes.AksNodeVmSizes.StandardEIv3", "Aspire.Hosting.Azure.Kubernetes.AksNodeVmSizes.StandardEIv5", "Aspire.Hosting.Azure.Kubernetes.AksNodeVmSizes.StandardEPDSv5", "Aspire.Hosting.Azure.Kubernetes.AksNodeVmSizes.StandardEPSv5", @@ -2459,9 +2617,13 @@ "Aspire.Hosting.Azure.Kubernetes.AksNodeVmSizes.StandardEasv7", "Aspire.Hosting.Azure.Kubernetes.AksNodeVmSizes.StandardEav6", "Aspire.Hosting.Azure.Kubernetes.AksNodeVmSizes.StandardEdsv6", + "Aspire.Hosting.Azure.Kubernetes.AksNodeVmSizes.StandardEdsv7", + "Aspire.Hosting.Azure.Kubernetes.AksNodeVmSizes.StandardEndv6", + "Aspire.Hosting.Azure.Kubernetes.AksNodeVmSizes.StandardEnv6", "Aspire.Hosting.Azure.Kubernetes.AksNodeVmSizes.StandardEpdsv6", "Aspire.Hosting.Azure.Kubernetes.AksNodeVmSizes.StandardEpsv6", "Aspire.Hosting.Azure.Kubernetes.AksNodeVmSizes.StandardEsv6", + "Aspire.Hosting.Azure.Kubernetes.AksNodeVmSizes.StandardEsv7", "Aspire.Hosting.Azure.Kubernetes.AksNodeVmSizes.StandardEv3", "Aspire.Hosting.Azure.Kubernetes.AksNodeVmSizes.StandardEv4", "Aspire.Hosting.Azure.Kubernetes.AksNodeVmSizes.StandardEv5", @@ -2515,6 +2677,7 @@ "Aspire.Hosting.Azure.Kubernetes.AksNodeVmSizes.StandardNCCads2023", "Aspire.Hosting.Azure.Kubernetes.AksNodeVmSizes.StandardNCSv3", "Aspire.Hosting.Azure.Kubernetes.AksNodeVmSizes.StandardNCadsH100v5", + "Aspire.Hosting.Azure.Kubernetes.AksNodeVmSizes.StandardNCdsRTXPRO6000BSEv6XL", "Aspire.Hosting.Azure.Kubernetes.AksNodeVmSizes.StandardNDAMSv4A100", "Aspire.Hosting.Azure.Kubernetes.AksNodeVmSizes.StandardNDASv4A100", "Aspire.Hosting.Azure.Kubernetes.AksNodeVmSizes.StandardNDISRGB200V6NDR", @@ -8200,8 +8363,8 @@ ] }, { - "name": "StandardDDv4", - "fullName": "Aspire.Hosting.Azure.Kubernetes.AksNodeVmSizes.StandardDDv4", + "name": "StandardDdsv7", + "fullName": "Aspire.Hosting.Azure.Kubernetes.AksNodeVmSizes.StandardDdsv7", "namespace": "Aspire.Hosting.Azure.Kubernetes", "kind": "class", "accessibility": "public", @@ -8210,17 +8373,17 @@ "summary": [ { "kind": "text", - "text": " VM sizes in the standardDDv4Family. " + "text": " VM sizes in the StandardDdsv7Family. " } ] }, "sourceFile": "src/Aspire.Hosting.Azure.Kubernetes/AksNodeVmSizes.cs", "members": [ { - "name": "StandardD16dV4", + "name": "StandardD128dsV7", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardDDv4.StandardD16dV4", + "signature": "public const static string StandardDdsv7.StandardD128dsV7", "returnType": "string", "isStatic": true, "isConst": true, @@ -8228,16 +8391,16 @@ "summary": [ { "kind": "text", - "text": " Standard_D16d_v4 — 16 vCPUs — 64 GB RAM " + "text": " Standard_D128ds_v7 — 128 vCPUs — 512 GB RAM — Premium SSD " } ] } }, { - "name": "StandardD2dV4", + "name": "StandardD16dsV7", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardDDv4.StandardD2dV4", + "signature": "public const static string StandardDdsv7.StandardD16dsV7", "returnType": "string", "isStatic": true, "isConst": true, @@ -8245,16 +8408,16 @@ "summary": [ { "kind": "text", - "text": " Standard_D2d_v4 — 2 vCPUs — 8 GB RAM " + "text": " Standard_D16ds_v7 — 16 vCPUs — 64 GB RAM — Premium SSD " } ] } }, { - "name": "StandardD32dV4", + "name": "StandardD192dsV7", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardDDv4.StandardD32dV4", + "signature": "public const static string StandardDdsv7.StandardD192dsV7", "returnType": "string", "isStatic": true, "isConst": true, @@ -8262,16 +8425,16 @@ "summary": [ { "kind": "text", - "text": " Standard_D32d_v4 — 32 vCPUs — 128 GB RAM " + "text": " Standard_D192ds_v7 — 192 vCPUs — 768 GB RAM — Premium SSD " } ] } }, { - "name": "StandardD48dV4", + "name": "StandardD2dsV7", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardDDv4.StandardD48dV4", + "signature": "public const static string StandardDdsv7.StandardD2dsV7", "returnType": "string", "isStatic": true, "isConst": true, @@ -8279,16 +8442,16 @@ "summary": [ { "kind": "text", - "text": " Standard_D48d_v4 — 48 vCPUs — 192 GB RAM " + "text": " Standard_D2ds_v7 — 2 vCPUs — 8 GB RAM — Premium SSD " } ] } }, { - "name": "StandardD4dV4", + "name": "StandardD32dsV7", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardDDv4.StandardD4dV4", + "signature": "public const static string StandardDdsv7.StandardD32dsV7", "returnType": "string", "isStatic": true, "isConst": true, @@ -8296,16 +8459,16 @@ "summary": [ { "kind": "text", - "text": " Standard_D4d_v4 — 4 vCPUs — 16 GB RAM " + "text": " Standard_D32ds_v7 — 32 vCPUs — 128 GB RAM — Premium SSD " } ] } }, { - "name": "StandardD64dV4", + "name": "StandardD48dsV7", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardDDv4.StandardD64dV4", + "signature": "public const static string StandardDdsv7.StandardD48dsV7", "returnType": "string", "isStatic": true, "isConst": true, @@ -8313,16 +8476,16 @@ "summary": [ { "kind": "text", - "text": " Standard_D64d_v4 — 64 vCPUs — 256 GB RAM " + "text": " Standard_D48ds_v7 — 48 vCPUs — 192 GB RAM — Premium SSD " } ] } }, { - "name": "StandardD8dV4", + "name": "StandardD4dsV7", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardDDv4.StandardD8dV4", + "signature": "public const static string StandardDdsv7.StandardD4dsV7", "returnType": "string", "isStatic": true, "isConst": true, @@ -8330,35 +8493,16 @@ "summary": [ { "kind": "text", - "text": " Standard_D8d_v4 — 8 vCPUs — 32 GB RAM " + "text": " Standard_D4ds_v7 — 4 vCPUs — 16 GB RAM — Premium SSD " } ] } - } - ] - }, - { - "name": "StandardDDv5", - "fullName": "Aspire.Hosting.Azure.Kubernetes.AksNodeVmSizes.StandardDDv5", - "namespace": "Aspire.Hosting.Azure.Kubernetes", - "kind": "class", - "accessibility": "public", - "isStatic": true, - "docs": { - "summary": [ - { - "kind": "text", - "text": " VM sizes in the standardDDv5Family. " - } - ] - }, - "sourceFile": "src/Aspire.Hosting.Azure.Kubernetes/AksNodeVmSizes.cs", - "members": [ + }, { - "name": "StandardD16dV5", + "name": "StandardD64dsV7", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardDDv5.StandardD16dV5", + "signature": "public const static string StandardDdsv7.StandardD64dsV7", "returnType": "string", "isStatic": true, "isConst": true, @@ -8366,16 +8510,16 @@ "summary": [ { "kind": "text", - "text": " Standard_D16d_v5 — 16 vCPUs — 64 GB RAM " + "text": " Standard_D64ds_v7 — 64 vCPUs — 256 GB RAM — Premium SSD " } ] } }, { - "name": "StandardD2dV5", + "name": "StandardD8dsV7", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardDDv5.StandardD2dV5", + "signature": "public const static string StandardDdsv7.StandardD8dsV7", "returnType": "string", "isStatic": true, "isConst": true, @@ -8383,16 +8527,16 @@ "summary": [ { "kind": "text", - "text": " Standard_D2d_v5 — 2 vCPUs — 8 GB RAM " + "text": " Standard_D8ds_v7 — 8 vCPUs — 32 GB RAM — Premium SSD " } ] } }, { - "name": "StandardD32dV5", + "name": "StandardD96dsV7", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardDDv5.StandardD32dV5", + "signature": "public const static string StandardDdsv7.StandardD96dsV7", "returnType": "string", "isStatic": true, "isConst": true, @@ -8400,16 +8544,35 @@ "summary": [ { "kind": "text", - "text": " Standard_D32d_v5 — 32 vCPUs — 128 GB RAM " + "text": " Standard_D96ds_v7 — 96 vCPUs — 384 GB RAM — Premium SSD " } ] } - }, + } + ] + }, + { + "name": "StandardDDv4", + "fullName": "Aspire.Hosting.Azure.Kubernetes.AksNodeVmSizes.StandardDDv4", + "namespace": "Aspire.Hosting.Azure.Kubernetes", + "kind": "class", + "accessibility": "public", + "isStatic": true, + "docs": { + "summary": [ + { + "kind": "text", + "text": " VM sizes in the standardDDv4Family. " + } + ] + }, + "sourceFile": "src/Aspire.Hosting.Azure.Kubernetes/AksNodeVmSizes.cs", + "members": [ { - "name": "StandardD48dV5", + "name": "StandardD16dV4", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardDDv5.StandardD48dV5", + "signature": "public const static string StandardDDv4.StandardD16dV4", "returnType": "string", "isStatic": true, "isConst": true, @@ -8417,16 +8580,16 @@ "summary": [ { "kind": "text", - "text": " Standard_D48d_v5 — 48 vCPUs — 192 GB RAM " + "text": " Standard_D16d_v4 — 16 vCPUs — 64 GB RAM " } ] } }, { - "name": "StandardD4dV5", + "name": "StandardD2dV4", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardDDv5.StandardD4dV5", + "signature": "public const static string StandardDDv4.StandardD2dV4", "returnType": "string", "isStatic": true, "isConst": true, @@ -8434,16 +8597,16 @@ "summary": [ { "kind": "text", - "text": " Standard_D4d_v5 — 4 vCPUs — 16 GB RAM " + "text": " Standard_D2d_v4 — 2 vCPUs — 8 GB RAM " } ] } }, { - "name": "StandardD64dV5", + "name": "StandardD32dV4", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardDDv5.StandardD64dV5", + "signature": "public const static string StandardDDv4.StandardD32dV4", "returnType": "string", "isStatic": true, "isConst": true, @@ -8451,16 +8614,16 @@ "summary": [ { "kind": "text", - "text": " Standard_D64d_v5 — 64 vCPUs — 256 GB RAM " + "text": " Standard_D32d_v4 — 32 vCPUs — 128 GB RAM " } ] } }, { - "name": "StandardD8dV5", + "name": "StandardD48dV4", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardDDv5.StandardD8dV5", + "signature": "public const static string StandardDDv4.StandardD48dV4", "returnType": "string", "isStatic": true, "isConst": true, @@ -8468,16 +8631,16 @@ "summary": [ { "kind": "text", - "text": " Standard_D8d_v5 — 8 vCPUs — 32 GB RAM " + "text": " Standard_D48d_v4 — 48 vCPUs — 192 GB RAM " } ] } }, { - "name": "StandardD96dV5", + "name": "StandardD4dV4", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardDDv5.StandardD96dV5", + "signature": "public const static string StandardDDv4.StandardD4dV4", "returnType": "string", "isStatic": true, "isConst": true, @@ -8485,35 +8648,16 @@ "summary": [ { "kind": "text", - "text": " Standard_D96d_v5 — 96 vCPUs — 384 GB RAM " + "text": " Standard_D4d_v4 — 4 vCPUs — 16 GB RAM " } ] } - } - ] - }, - { - "name": "StandardDLDSv5", - "fullName": "Aspire.Hosting.Azure.Kubernetes.AksNodeVmSizes.StandardDLDSv5", - "namespace": "Aspire.Hosting.Azure.Kubernetes", - "kind": "class", - "accessibility": "public", - "isStatic": true, - "docs": { - "summary": [ - { - "kind": "text", - "text": " VM sizes in the standardDLDSv5Family. " - } - ] - }, - "sourceFile": "src/Aspire.Hosting.Azure.Kubernetes/AksNodeVmSizes.cs", - "members": [ + }, { - "name": "StandardD16ldsV5", + "name": "StandardD64dV4", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardDLDSv5.StandardD16ldsV5", + "signature": "public const static string StandardDDv4.StandardD64dV4", "returnType": "string", "isStatic": true, "isConst": true, @@ -8521,16 +8665,16 @@ "summary": [ { "kind": "text", - "text": " Standard_D16lds_v5 — 16 vCPUs — 32 GB RAM — Premium SSD " + "text": " Standard_D64d_v4 — 64 vCPUs — 256 GB RAM " } ] } }, { - "name": "StandardD2ldsV5", + "name": "StandardD8dV4", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardDLDSv5.StandardD2ldsV5", + "signature": "public const static string StandardDDv4.StandardD8dV4", "returnType": "string", "isStatic": true, "isConst": true, @@ -8538,16 +8682,52 @@ "summary": [ { "kind": "text", - "text": " Standard_D2lds_v5 — 2 vCPUs — 4 GB RAM — Premium SSD " + "text": " Standard_D8d_v4 — 8 vCPUs — 32 GB RAM " + } + ] + } + } + ] + }, + { + "name": "StandardDDv5", + "fullName": "Aspire.Hosting.Azure.Kubernetes.AksNodeVmSizes.StandardDDv5", + "namespace": "Aspire.Hosting.Azure.Kubernetes", + "kind": "class", + "accessibility": "public", + "isStatic": true, + "docs": { + "summary": [ + { + "kind": "text", + "text": " VM sizes in the standardDDv5Family. " + } + ] + }, + "sourceFile": "src/Aspire.Hosting.Azure.Kubernetes/AksNodeVmSizes.cs", + "members": [ + { + "name": "StandardD16dV5", + "kind": "field", + "accessibility": "public", + "signature": "public const static string StandardDDv5.StandardD16dV5", + "returnType": "string", + "isStatic": true, + "isConst": true, + "docs": { + "summary": [ + { + "kind": "text", + "text": " Standard_D16d_v5 — 16 vCPUs — 64 GB RAM " } ] } }, { - "name": "StandardD32ldsV5", + "name": "StandardD2dV5", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardDLDSv5.StandardD32ldsV5", + "signature": "public const static string StandardDDv5.StandardD2dV5", "returnType": "string", "isStatic": true, "isConst": true, @@ -8555,16 +8735,16 @@ "summary": [ { "kind": "text", - "text": " Standard_D32lds_v5 — 32 vCPUs — 64 GB RAM — Premium SSD " + "text": " Standard_D2d_v5 — 2 vCPUs — 8 GB RAM " } ] } }, { - "name": "StandardD48ldsV5", + "name": "StandardD32dV5", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardDLDSv5.StandardD48ldsV5", + "signature": "public const static string StandardDDv5.StandardD32dV5", "returnType": "string", "isStatic": true, "isConst": true, @@ -8572,16 +8752,16 @@ "summary": [ { "kind": "text", - "text": " Standard_D48lds_v5 — 48 vCPUs — 96 GB RAM — Premium SSD " + "text": " Standard_D32d_v5 — 32 vCPUs — 128 GB RAM " } ] } }, { - "name": "StandardD4ldsV5", + "name": "StandardD48dV5", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardDLDSv5.StandardD4ldsV5", + "signature": "public const static string StandardDDv5.StandardD48dV5", "returnType": "string", "isStatic": true, "isConst": true, @@ -8589,16 +8769,16 @@ "summary": [ { "kind": "text", - "text": " Standard_D4lds_v5 — 4 vCPUs — 8 GB RAM — Premium SSD " + "text": " Standard_D48d_v5 — 48 vCPUs — 192 GB RAM " } ] } }, { - "name": "StandardD64ldsV5", + "name": "StandardD4dV5", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardDLDSv5.StandardD64ldsV5", + "signature": "public const static string StandardDDv5.StandardD4dV5", "returnType": "string", "isStatic": true, "isConst": true, @@ -8606,16 +8786,16 @@ "summary": [ { "kind": "text", - "text": " Standard_D64lds_v5 — 64 vCPUs — 128 GB RAM — Premium SSD " + "text": " Standard_D4d_v5 — 4 vCPUs — 16 GB RAM " } ] } }, { - "name": "StandardD8ldsV5", + "name": "StandardD64dV5", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardDLDSv5.StandardD8ldsV5", + "signature": "public const static string StandardDDv5.StandardD64dV5", "returnType": "string", "isStatic": true, "isConst": true, @@ -8623,16 +8803,16 @@ "summary": [ { "kind": "text", - "text": " Standard_D8lds_v5 — 8 vCPUs — 16 GB RAM — Premium SSD " + "text": " Standard_D64d_v5 — 64 vCPUs — 256 GB RAM " } ] } }, { - "name": "StandardD96ldsV5", + "name": "StandardD8dV5", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardDLDSv5.StandardD96ldsV5", + "signature": "public const static string StandardDDv5.StandardD8dV5", "returnType": "string", "isStatic": true, "isConst": true, @@ -8640,7 +8820,24 @@ "summary": [ { "kind": "text", - "text": " Standard_D96lds_v5 — 96 vCPUs — 192 GB RAM — Premium SSD " + "text": " Standard_D8d_v5 — 8 vCPUs — 32 GB RAM " + } + ] + } + }, + { + "name": "StandardD96dV5", + "kind": "field", + "accessibility": "public", + "signature": "public const static string StandardDDv5.StandardD96dV5", + "returnType": "string", + "isStatic": true, + "isConst": true, + "docs": { + "summary": [ + { + "kind": "text", + "text": " Standard_D96d_v5 — 96 vCPUs — 384 GB RAM " } ] } @@ -8648,8 +8845,8 @@ ] }, { - "name": "StandardDldsv6", - "fullName": "Aspire.Hosting.Azure.Kubernetes.AksNodeVmSizes.StandardDldsv6", + "name": "StandardDLDSv5", + "fullName": "Aspire.Hosting.Azure.Kubernetes.AksNodeVmSizes.StandardDLDSv5", "namespace": "Aspire.Hosting.Azure.Kubernetes", "kind": "class", "accessibility": "public", @@ -8658,34 +8855,17 @@ "summary": [ { "kind": "text", - "text": " VM sizes in the StandardDldsv6Family. " + "text": " VM sizes in the standardDLDSv5Family. " } ] }, "sourceFile": "src/Aspire.Hosting.Azure.Kubernetes/AksNodeVmSizes.cs", "members": [ { - "name": "StandardD128ldsV6", - "kind": "field", - "accessibility": "public", - "signature": "public const static string StandardDldsv6.StandardD128ldsV6", - "returnType": "string", - "isStatic": true, - "isConst": true, - "docs": { - "summary": [ - { - "kind": "text", - "text": " Standard_D128lds_v6 — 128 vCPUs — 256 GB RAM — Premium SSD " - } - ] - } - }, - { - "name": "StandardD16ldsV6", + "name": "StandardD16ldsV5", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardDldsv6.StandardD16ldsV6", + "signature": "public const static string StandardDLDSv5.StandardD16ldsV5", "returnType": "string", "isStatic": true, "isConst": true, @@ -8693,16 +8873,16 @@ "summary": [ { "kind": "text", - "text": " Standard_D16lds_v6 — 16 vCPUs — 32 GB RAM — Premium SSD " + "text": " Standard_D16lds_v5 — 16 vCPUs — 32 GB RAM — Premium SSD " } ] } }, { - "name": "StandardD2ldsV6", + "name": "StandardD2ldsV5", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardDldsv6.StandardD2ldsV6", + "signature": "public const static string StandardDLDSv5.StandardD2ldsV5", "returnType": "string", "isStatic": true, "isConst": true, @@ -8710,16 +8890,16 @@ "summary": [ { "kind": "text", - "text": " Standard_D2lds_v6 — 2 vCPUs — 4 GB RAM — Premium SSD " + "text": " Standard_D2lds_v5 — 2 vCPUs — 4 GB RAM — Premium SSD " } ] } }, { - "name": "StandardD32ldsV6", + "name": "StandardD32ldsV5", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardDldsv6.StandardD32ldsV6", + "signature": "public const static string StandardDLDSv5.StandardD32ldsV5", "returnType": "string", "isStatic": true, "isConst": true, @@ -8727,16 +8907,16 @@ "summary": [ { "kind": "text", - "text": " Standard_D32lds_v6 — 32 vCPUs — 64 GB RAM — Premium SSD " + "text": " Standard_D32lds_v5 — 32 vCPUs — 64 GB RAM — Premium SSD " } ] } }, { - "name": "StandardD48ldsV6", + "name": "StandardD48ldsV5", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardDldsv6.StandardD48ldsV6", + "signature": "public const static string StandardDLDSv5.StandardD48ldsV5", "returnType": "string", "isStatic": true, "isConst": true, @@ -8744,16 +8924,16 @@ "summary": [ { "kind": "text", - "text": " Standard_D48lds_v6 — 48 vCPUs — 96 GB RAM — Premium SSD " + "text": " Standard_D48lds_v5 — 48 vCPUs — 96 GB RAM — Premium SSD " } ] } }, { - "name": "StandardD4ldsV6", + "name": "StandardD4ldsV5", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardDldsv6.StandardD4ldsV6", + "signature": "public const static string StandardDLDSv5.StandardD4ldsV5", "returnType": "string", "isStatic": true, "isConst": true, @@ -8761,16 +8941,16 @@ "summary": [ { "kind": "text", - "text": " Standard_D4lds_v6 — 4 vCPUs — 8 GB RAM — Premium SSD " + "text": " Standard_D4lds_v5 — 4 vCPUs — 8 GB RAM — Premium SSD " } ] } }, { - "name": "StandardD64ldsV6", + "name": "StandardD64ldsV5", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardDldsv6.StandardD64ldsV6", + "signature": "public const static string StandardDLDSv5.StandardD64ldsV5", "returnType": "string", "isStatic": true, "isConst": true, @@ -8778,16 +8958,16 @@ "summary": [ { "kind": "text", - "text": " Standard_D64lds_v6 — 64 vCPUs — 128 GB RAM — Premium SSD " + "text": " Standard_D64lds_v5 — 64 vCPUs — 128 GB RAM — Premium SSD " } ] } }, { - "name": "StandardD8ldsV6", + "name": "StandardD8ldsV5", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardDldsv6.StandardD8ldsV6", + "signature": "public const static string StandardDLDSv5.StandardD8ldsV5", "returnType": "string", "isStatic": true, "isConst": true, @@ -8795,16 +8975,16 @@ "summary": [ { "kind": "text", - "text": " Standard_D8lds_v6 — 8 vCPUs — 16 GB RAM — Premium SSD " + "text": " Standard_D8lds_v5 — 8 vCPUs — 16 GB RAM — Premium SSD " } ] } }, { - "name": "StandardD96ldsV6", + "name": "StandardD96ldsV5", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardDldsv6.StandardD96ldsV6", + "signature": "public const static string StandardDLDSv5.StandardD96ldsV5", "returnType": "string", "isStatic": true, "isConst": true, @@ -8812,7 +8992,7 @@ "summary": [ { "kind": "text", - "text": " Standard_D96lds_v6 — 96 vCPUs — 192 GB RAM — Premium SSD " + "text": " Standard_D96lds_v5 — 96 vCPUs — 192 GB RAM — Premium SSD " } ] } @@ -8820,8 +9000,8 @@ ] }, { - "name": "StandardDLSv5", - "fullName": "Aspire.Hosting.Azure.Kubernetes.AksNodeVmSizes.StandardDLSv5", + "name": "StandardDldsv6", + "fullName": "Aspire.Hosting.Azure.Kubernetes.AksNodeVmSizes.StandardDldsv6", "namespace": "Aspire.Hosting.Azure.Kubernetes", "kind": "class", "accessibility": "public", @@ -8830,17 +9010,17 @@ "summary": [ { "kind": "text", - "text": " VM sizes in the standardDLSv5Family. " + "text": " VM sizes in the StandardDldsv6Family. " } ] }, "sourceFile": "src/Aspire.Hosting.Azure.Kubernetes/AksNodeVmSizes.cs", "members": [ { - "name": "StandardD16lsV5", + "name": "StandardD128ldsV6", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardDLSv5.StandardD16lsV5", + "signature": "public const static string StandardDldsv6.StandardD128ldsV6", "returnType": "string", "isStatic": true, "isConst": true, @@ -8848,16 +9028,16 @@ "summary": [ { "kind": "text", - "text": " Standard_D16ls_v5 — 16 vCPUs — 32 GB RAM — Premium SSD " + "text": " Standard_D128lds_v6 — 128 vCPUs — 256 GB RAM — Premium SSD " } ] } }, { - "name": "StandardD2lsV5", + "name": "StandardD16ldsV6", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardDLSv5.StandardD2lsV5", + "signature": "public const static string StandardDldsv6.StandardD16ldsV6", "returnType": "string", "isStatic": true, "isConst": true, @@ -8865,16 +9045,16 @@ "summary": [ { "kind": "text", - "text": " Standard_D2ls_v5 — 2 vCPUs — 4 GB RAM — Premium SSD " + "text": " Standard_D16lds_v6 — 16 vCPUs — 32 GB RAM — Premium SSD " } ] } }, { - "name": "StandardD32lsV5", + "name": "StandardD2ldsV6", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardDLSv5.StandardD32lsV5", + "signature": "public const static string StandardDldsv6.StandardD2ldsV6", "returnType": "string", "isStatic": true, "isConst": true, @@ -8882,16 +9062,16 @@ "summary": [ { "kind": "text", - "text": " Standard_D32ls_v5 — 32 vCPUs — 64 GB RAM — Premium SSD " + "text": " Standard_D2lds_v6 — 2 vCPUs — 4 GB RAM — Premium SSD " } ] } }, { - "name": "StandardD48lsV5", + "name": "StandardD32ldsV6", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardDLSv5.StandardD48lsV5", + "signature": "public const static string StandardDldsv6.StandardD32ldsV6", "returnType": "string", "isStatic": true, "isConst": true, @@ -8899,16 +9079,16 @@ "summary": [ { "kind": "text", - "text": " Standard_D48ls_v5 — 48 vCPUs — 96 GB RAM — Premium SSD " + "text": " Standard_D32lds_v6 — 32 vCPUs — 64 GB RAM — Premium SSD " } ] } }, { - "name": "StandardD4lsV5", + "name": "StandardD48ldsV6", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardDLSv5.StandardD4lsV5", + "signature": "public const static string StandardDldsv6.StandardD48ldsV6", "returnType": "string", "isStatic": true, "isConst": true, @@ -8916,16 +9096,16 @@ "summary": [ { "kind": "text", - "text": " Standard_D4ls_v5 — 4 vCPUs — 8 GB RAM — Premium SSD " + "text": " Standard_D48lds_v6 — 48 vCPUs — 96 GB RAM — Premium SSD " } ] } }, { - "name": "StandardD64lsV5", + "name": "StandardD4ldsV6", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardDLSv5.StandardD64lsV5", + "signature": "public const static string StandardDldsv6.StandardD4ldsV6", "returnType": "string", "isStatic": true, "isConst": true, @@ -8933,16 +9113,16 @@ "summary": [ { "kind": "text", - "text": " Standard_D64ls_v5 — 64 vCPUs — 128 GB RAM — Premium SSD " + "text": " Standard_D4lds_v6 — 4 vCPUs — 8 GB RAM — Premium SSD " } ] } }, { - "name": "StandardD8lsV5", + "name": "StandardD64ldsV6", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardDLSv5.StandardD8lsV5", + "signature": "public const static string StandardDldsv6.StandardD64ldsV6", "returnType": "string", "isStatic": true, "isConst": true, @@ -8950,16 +9130,16 @@ "summary": [ { "kind": "text", - "text": " Standard_D8ls_v5 — 8 vCPUs — 16 GB RAM — Premium SSD " + "text": " Standard_D64lds_v6 — 64 vCPUs — 128 GB RAM — Premium SSD " } ] } }, { - "name": "StandardD96lsV5", + "name": "StandardD8ldsV6", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardDLSv5.StandardD96lsV5", + "signature": "public const static string StandardDldsv6.StandardD8ldsV6", "returnType": "string", "isStatic": true, "isConst": true, @@ -8967,7 +9147,24 @@ "summary": [ { "kind": "text", - "text": " Standard_D96ls_v5 — 96 vCPUs — 192 GB RAM — Premium SSD " + "text": " Standard_D8lds_v6 — 8 vCPUs — 16 GB RAM — Premium SSD " + } + ] + } + }, + { + "name": "StandardD96ldsV6", + "kind": "field", + "accessibility": "public", + "signature": "public const static string StandardDldsv6.StandardD96ldsV6", + "returnType": "string", + "isStatic": true, + "isConst": true, + "docs": { + "summary": [ + { + "kind": "text", + "text": " Standard_D96lds_v6 — 96 vCPUs — 192 GB RAM — Premium SSD " } ] } @@ -8975,8 +9172,8 @@ ] }, { - "name": "StandardDlsv6", - "fullName": "Aspire.Hosting.Azure.Kubernetes.AksNodeVmSizes.StandardDlsv6", + "name": "StandardDldsv7", + "fullName": "Aspire.Hosting.Azure.Kubernetes.AksNodeVmSizes.StandardDldsv7", "namespace": "Aspire.Hosting.Azure.Kubernetes", "kind": "class", "accessibility": "public", @@ -8985,17 +9182,17 @@ "summary": [ { "kind": "text", - "text": " VM sizes in the StandardDlsv6Family. " + "text": " VM sizes in the StandardDldsv7Family. " } ] }, "sourceFile": "src/Aspire.Hosting.Azure.Kubernetes/AksNodeVmSizes.cs", "members": [ { - "name": "StandardD128lsV6", + "name": "StandardD128ldsV7", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardDlsv6.StandardD128lsV6", + "signature": "public const static string StandardDldsv7.StandardD128ldsV7", "returnType": "string", "isStatic": true, "isConst": true, @@ -9003,16 +9200,16 @@ "summary": [ { "kind": "text", - "text": " Standard_D128ls_v6 — 128 vCPUs — 256 GB RAM — Premium SSD " + "text": " Standard_D128lds_v7 — 128 vCPUs — 256 GB RAM — Premium SSD " } ] } }, { - "name": "StandardD16lsV6", + "name": "StandardD16ldsV7", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardDlsv6.StandardD16lsV6", + "signature": "public const static string StandardDldsv7.StandardD16ldsV7", "returnType": "string", "isStatic": true, "isConst": true, @@ -9020,16 +9217,16 @@ "summary": [ { "kind": "text", - "text": " Standard_D16ls_v6 — 16 vCPUs — 32 GB RAM — Premium SSD " + "text": " Standard_D16lds_v7 — 16 vCPUs — 32 GB RAM — Premium SSD " } ] } }, { - "name": "StandardD2lsV6", + "name": "StandardD192ldsV7", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardDlsv6.StandardD2lsV6", + "signature": "public const static string StandardDldsv7.StandardD192ldsV7", "returnType": "string", "isStatic": true, "isConst": true, @@ -9037,16 +9234,16 @@ "summary": [ { "kind": "text", - "text": " Standard_D2ls_v6 — 2 vCPUs — 4 GB RAM — Premium SSD " + "text": " Standard_D192lds_v7 — 192 vCPUs — 384 GB RAM — Premium SSD " } ] } }, { - "name": "StandardD32lsV6", + "name": "StandardD2ldsV7", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardDlsv6.StandardD32lsV6", + "signature": "public const static string StandardDldsv7.StandardD2ldsV7", "returnType": "string", "isStatic": true, "isConst": true, @@ -9054,16 +9251,16 @@ "summary": [ { "kind": "text", - "text": " Standard_D32ls_v6 — 32 vCPUs — 64 GB RAM — Premium SSD " + "text": " Standard_D2lds_v7 — 2 vCPUs — 4 GB RAM — Premium SSD " } ] } }, { - "name": "StandardD48lsV6", + "name": "StandardD32ldsV7", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardDlsv6.StandardD48lsV6", + "signature": "public const static string StandardDldsv7.StandardD32ldsV7", "returnType": "string", "isStatic": true, "isConst": true, @@ -9071,16 +9268,16 @@ "summary": [ { "kind": "text", - "text": " Standard_D48ls_v6 — 48 vCPUs — 96 GB RAM — Premium SSD " + "text": " Standard_D32lds_v7 — 32 vCPUs — 64 GB RAM — Premium SSD " } ] } }, { - "name": "StandardD4lsV6", + "name": "StandardD48ldsV7", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardDlsv6.StandardD4lsV6", + "signature": "public const static string StandardDldsv7.StandardD48ldsV7", "returnType": "string", "isStatic": true, "isConst": true, @@ -9088,16 +9285,16 @@ "summary": [ { "kind": "text", - "text": " Standard_D4ls_v6 — 4 vCPUs — 8 GB RAM — Premium SSD " + "text": " Standard_D48lds_v7 — 48 vCPUs — 96 GB RAM — Premium SSD " } ] } }, { - "name": "StandardD64lsV6", + "name": "StandardD4ldsV7", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardDlsv6.StandardD64lsV6", + "signature": "public const static string StandardDldsv7.StandardD4ldsV7", "returnType": "string", "isStatic": true, "isConst": true, @@ -9105,16 +9302,16 @@ "summary": [ { "kind": "text", - "text": " Standard_D64ls_v6 — 64 vCPUs — 128 GB RAM — Premium SSD " + "text": " Standard_D4lds_v7 — 4 vCPUs — 8 GB RAM — Premium SSD " } ] } }, { - "name": "StandardD8lsV6", + "name": "StandardD64ldsV7", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardDlsv6.StandardD8lsV6", + "signature": "public const static string StandardDldsv7.StandardD64ldsV7", "returnType": "string", "isStatic": true, "isConst": true, @@ -9122,16 +9319,16 @@ "summary": [ { "kind": "text", - "text": " Standard_D8ls_v6 — 8 vCPUs — 16 GB RAM — Premium SSD " + "text": " Standard_D64lds_v7 — 64 vCPUs — 128 GB RAM — Premium SSD " } ] } }, { - "name": "StandardD96lsV6", + "name": "StandardD8ldsV7", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardDlsv6.StandardD96lsV6", + "signature": "public const static string StandardDldsv7.StandardD8ldsV7", "returnType": "string", "isStatic": true, "isConst": true, @@ -9139,7 +9336,24 @@ "summary": [ { "kind": "text", - "text": " Standard_D96ls_v6 — 96 vCPUs — 192 GB RAM — Premium SSD " + "text": " Standard_D8lds_v7 — 8 vCPUs — 16 GB RAM — Premium SSD " + } + ] + } + }, + { + "name": "StandardD96ldsV7", + "kind": "field", + "accessibility": "public", + "signature": "public const static string StandardDldsv7.StandardD96ldsV7", + "returnType": "string", + "isStatic": true, + "isConst": true, + "docs": { + "summary": [ + { + "kind": "text", + "text": " Standard_D96lds_v7 — 96 vCPUs — 192 GB RAM — Premium SSD " } ] } @@ -9147,8 +9361,8 @@ ] }, { - "name": "StandardDPDSv5", - "fullName": "Aspire.Hosting.Azure.Kubernetes.AksNodeVmSizes.StandardDPDSv5", + "name": "StandardDLSv5", + "fullName": "Aspire.Hosting.Azure.Kubernetes.AksNodeVmSizes.StandardDLSv5", "namespace": "Aspire.Hosting.Azure.Kubernetes", "kind": "class", "accessibility": "public", @@ -9157,17 +9371,17 @@ "summary": [ { "kind": "text", - "text": " VM sizes in the standardDPDSv5Family. " + "text": " VM sizes in the standardDLSv5Family. " } ] }, "sourceFile": "src/Aspire.Hosting.Azure.Kubernetes/AksNodeVmSizes.cs", "members": [ { - "name": "StandardD16pdsV5", + "name": "StandardD16lsV5", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardDPDSv5.StandardD16pdsV5", + "signature": "public const static string StandardDLSv5.StandardD16lsV5", "returnType": "string", "isStatic": true, "isConst": true, @@ -9175,16 +9389,16 @@ "summary": [ { "kind": "text", - "text": " Standard_D16pds_v5 — 16 vCPUs — 64 GB RAM — Premium SSD " + "text": " Standard_D16ls_v5 — 16 vCPUs — 32 GB RAM — Premium SSD " } ] } }, { - "name": "StandardD2pdsV5", + "name": "StandardD2lsV5", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardDPDSv5.StandardD2pdsV5", + "signature": "public const static string StandardDLSv5.StandardD2lsV5", "returnType": "string", "isStatic": true, "isConst": true, @@ -9192,16 +9406,16 @@ "summary": [ { "kind": "text", - "text": " Standard_D2pds_v5 — 2 vCPUs — 8 GB RAM — Premium SSD " + "text": " Standard_D2ls_v5 — 2 vCPUs — 4 GB RAM — Premium SSD " } ] } }, { - "name": "StandardD32pdsV5", + "name": "StandardD32lsV5", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardDPDSv5.StandardD32pdsV5", + "signature": "public const static string StandardDLSv5.StandardD32lsV5", "returnType": "string", "isStatic": true, "isConst": true, @@ -9209,16 +9423,16 @@ "summary": [ { "kind": "text", - "text": " Standard_D32pds_v5 — 32 vCPUs — 128 GB RAM — Premium SSD " + "text": " Standard_D32ls_v5 — 32 vCPUs — 64 GB RAM — Premium SSD " } ] } }, { - "name": "StandardD48pdsV5", + "name": "StandardD48lsV5", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardDPDSv5.StandardD48pdsV5", + "signature": "public const static string StandardDLSv5.StandardD48lsV5", "returnType": "string", "isStatic": true, "isConst": true, @@ -9226,16 +9440,16 @@ "summary": [ { "kind": "text", - "text": " Standard_D48pds_v5 — 48 vCPUs — 192 GB RAM — Premium SSD " + "text": " Standard_D48ls_v5 — 48 vCPUs — 96 GB RAM — Premium SSD " } ] } }, { - "name": "StandardD4pdsV5", + "name": "StandardD4lsV5", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardDPDSv5.StandardD4pdsV5", + "signature": "public const static string StandardDLSv5.StandardD4lsV5", "returnType": "string", "isStatic": true, "isConst": true, @@ -9243,16 +9457,16 @@ "summary": [ { "kind": "text", - "text": " Standard_D4pds_v5 — 4 vCPUs — 16 GB RAM — Premium SSD " + "text": " Standard_D4ls_v5 — 4 vCPUs — 8 GB RAM — Premium SSD " } ] } }, { - "name": "StandardD64pdsV5", + "name": "StandardD64lsV5", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardDPDSv5.StandardD64pdsV5", + "signature": "public const static string StandardDLSv5.StandardD64lsV5", "returnType": "string", "isStatic": true, "isConst": true, @@ -9260,16 +9474,16 @@ "summary": [ { "kind": "text", - "text": " Standard_D64pds_v5 — 64 vCPUs — 208 GB RAM — Premium SSD " + "text": " Standard_D64ls_v5 — 64 vCPUs — 128 GB RAM — Premium SSD " } ] } }, { - "name": "StandardD8pdsV5", + "name": "StandardD8lsV5", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardDPDSv5.StandardD8pdsV5", + "signature": "public const static string StandardDLSv5.StandardD8lsV5", "returnType": "string", "isStatic": true, "isConst": true, @@ -9277,7 +9491,24 @@ "summary": [ { "kind": "text", - "text": " Standard_D8pds_v5 — 8 vCPUs — 32 GB RAM — Premium SSD " + "text": " Standard_D8ls_v5 — 8 vCPUs — 16 GB RAM — Premium SSD " + } + ] + } + }, + { + "name": "StandardD96lsV5", + "kind": "field", + "accessibility": "public", + "signature": "public const static string StandardDLSv5.StandardD96lsV5", + "returnType": "string", + "isStatic": true, + "isConst": true, + "docs": { + "summary": [ + { + "kind": "text", + "text": " Standard_D96ls_v5 — 96 vCPUs — 192 GB RAM — Premium SSD " } ] } @@ -9285,8 +9516,8 @@ ] }, { - "name": "StandardDpdsv6", - "fullName": "Aspire.Hosting.Azure.Kubernetes.AksNodeVmSizes.StandardDpdsv6", + "name": "StandardDlsv6", + "fullName": "Aspire.Hosting.Azure.Kubernetes.AksNodeVmSizes.StandardDlsv6", "namespace": "Aspire.Hosting.Azure.Kubernetes", "kind": "class", "accessibility": "public", @@ -9295,17 +9526,17 @@ "summary": [ { "kind": "text", - "text": " VM sizes in the StandardDpdsv6Family. " + "text": " VM sizes in the StandardDlsv6Family. " } ] }, "sourceFile": "src/Aspire.Hosting.Azure.Kubernetes/AksNodeVmSizes.cs", "members": [ { - "name": "StandardD16pdsV6", + "name": "StandardD128lsV6", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardDpdsv6.StandardD16pdsV6", + "signature": "public const static string StandardDlsv6.StandardD128lsV6", "returnType": "string", "isStatic": true, "isConst": true, @@ -9313,16 +9544,16 @@ "summary": [ { "kind": "text", - "text": " Standard_D16pds_v6 — 16 vCPUs — 64 GB RAM — Premium SSD " + "text": " Standard_D128ls_v6 — 128 vCPUs — 256 GB RAM — Premium SSD " } ] } }, { - "name": "StandardD2pdsV6", + "name": "StandardD16lsV6", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardDpdsv6.StandardD2pdsV6", + "signature": "public const static string StandardDlsv6.StandardD16lsV6", "returnType": "string", "isStatic": true, "isConst": true, @@ -9330,16 +9561,16 @@ "summary": [ { "kind": "text", - "text": " Standard_D2pds_v6 — 2 vCPUs — 8 GB RAM — Premium SSD " + "text": " Standard_D16ls_v6 — 16 vCPUs — 32 GB RAM — Premium SSD " } ] } }, { - "name": "StandardD32pdsV6", + "name": "StandardD2lsV6", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardDpdsv6.StandardD32pdsV6", + "signature": "public const static string StandardDlsv6.StandardD2lsV6", "returnType": "string", "isStatic": true, "isConst": true, @@ -9347,16 +9578,16 @@ "summary": [ { "kind": "text", - "text": " Standard_D32pds_v6 — 32 vCPUs — 128 GB RAM — Premium SSD " + "text": " Standard_D2ls_v6 — 2 vCPUs — 4 GB RAM — Premium SSD " } ] } }, { - "name": "StandardD48pdsV6", + "name": "StandardD32lsV6", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardDpdsv6.StandardD48pdsV6", + "signature": "public const static string StandardDlsv6.StandardD32lsV6", "returnType": "string", "isStatic": true, "isConst": true, @@ -9364,16 +9595,16 @@ "summary": [ { "kind": "text", - "text": " Standard_D48pds_v6 — 48 vCPUs — 192 GB RAM — Premium SSD " + "text": " Standard_D32ls_v6 — 32 vCPUs — 64 GB RAM — Premium SSD " } ] } }, { - "name": "StandardD4pdsV6", + "name": "StandardD48lsV6", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardDpdsv6.StandardD4pdsV6", + "signature": "public const static string StandardDlsv6.StandardD48lsV6", "returnType": "string", "isStatic": true, "isConst": true, @@ -9381,16 +9612,16 @@ "summary": [ { "kind": "text", - "text": " Standard_D4pds_v6 — 4 vCPUs — 16 GB RAM — Premium SSD " + "text": " Standard_D48ls_v6 — 48 vCPUs — 96 GB RAM — Premium SSD " } ] } }, { - "name": "StandardD64pdsV6", + "name": "StandardD4lsV6", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardDpdsv6.StandardD64pdsV6", + "signature": "public const static string StandardDlsv6.StandardD4lsV6", "returnType": "string", "isStatic": true, "isConst": true, @@ -9398,16 +9629,16 @@ "summary": [ { "kind": "text", - "text": " Standard_D64pds_v6 — 64 vCPUs — 256 GB RAM — Premium SSD " + "text": " Standard_D4ls_v6 — 4 vCPUs — 8 GB RAM — Premium SSD " } ] } }, { - "name": "StandardD8pdsV6", + "name": "StandardD64lsV6", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardDpdsv6.StandardD8pdsV6", + "signature": "public const static string StandardDlsv6.StandardD64lsV6", "returnType": "string", "isStatic": true, "isConst": true, @@ -9415,16 +9646,16 @@ "summary": [ { "kind": "text", - "text": " Standard_D8pds_v6 — 8 vCPUs — 32 GB RAM — Premium SSD " + "text": " Standard_D64ls_v6 — 64 vCPUs — 128 GB RAM — Premium SSD " } ] } }, { - "name": "StandardD96pdsV6", + "name": "StandardD8lsV6", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardDpdsv6.StandardD96pdsV6", + "signature": "public const static string StandardDlsv6.StandardD8lsV6", "returnType": "string", "isStatic": true, "isConst": true, @@ -9432,7 +9663,24 @@ "summary": [ { "kind": "text", - "text": " Standard_D96pds_v6 — 96 vCPUs — 384 GB RAM — Premium SSD " + "text": " Standard_D8ls_v6 — 8 vCPUs — 16 GB RAM — Premium SSD " + } + ] + } + }, + { + "name": "StandardD96lsV6", + "kind": "field", + "accessibility": "public", + "signature": "public const static string StandardDlsv6.StandardD96lsV6", + "returnType": "string", + "isStatic": true, + "isConst": true, + "docs": { + "summary": [ + { + "kind": "text", + "text": " Standard_D96ls_v6 — 96 vCPUs — 192 GB RAM — Premium SSD " } ] } @@ -9440,8 +9688,8 @@ ] }, { - "name": "StandardDPLDSv5", - "fullName": "Aspire.Hosting.Azure.Kubernetes.AksNodeVmSizes.StandardDPLDSv5", + "name": "StandardDlsv7", + "fullName": "Aspire.Hosting.Azure.Kubernetes.AksNodeVmSizes.StandardDlsv7", "namespace": "Aspire.Hosting.Azure.Kubernetes", "kind": "class", "accessibility": "public", @@ -9450,17 +9698,17 @@ "summary": [ { "kind": "text", - "text": " VM sizes in the standardDPLDSv5Family. " + "text": " VM sizes in the StandardDlsv7Family. " } ] }, "sourceFile": "src/Aspire.Hosting.Azure.Kubernetes/AksNodeVmSizes.cs", "members": [ { - "name": "StandardD16pldsV5", + "name": "StandardD128lsV7", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardDPLDSv5.StandardD16pldsV5", + "signature": "public const static string StandardDlsv7.StandardD128lsV7", "returnType": "string", "isStatic": true, "isConst": true, @@ -9468,16 +9716,16 @@ "summary": [ { "kind": "text", - "text": " Standard_D16plds_v5 — 16 vCPUs — 32 GB RAM — Premium SSD " + "text": " Standard_D128ls_v7 — 128 vCPUs — 256 GB RAM — Premium SSD " } ] } }, { - "name": "StandardD2pldsV5", + "name": "StandardD16lsV7", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardDPLDSv5.StandardD2pldsV5", + "signature": "public const static string StandardDlsv7.StandardD16lsV7", "returnType": "string", "isStatic": true, "isConst": true, @@ -9485,16 +9733,16 @@ "summary": [ { "kind": "text", - "text": " Standard_D2plds_v5 — 2 vCPUs — 4 GB RAM — Premium SSD " + "text": " Standard_D16ls_v7 — 16 vCPUs — 32 GB RAM — Premium SSD " } ] } }, { - "name": "StandardD32pldsV5", + "name": "StandardD192lsV7", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardDPLDSv5.StandardD32pldsV5", + "signature": "public const static string StandardDlsv7.StandardD192lsV7", "returnType": "string", "isStatic": true, "isConst": true, @@ -9502,16 +9750,16 @@ "summary": [ { "kind": "text", - "text": " Standard_D32plds_v5 — 32 vCPUs — 64 GB RAM — Premium SSD " + "text": " Standard_D192ls_v7 — 192 vCPUs — 384 GB RAM — Premium SSD " } ] } }, { - "name": "StandardD48pldsV5", + "name": "StandardD2lsV7", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardDPLDSv5.StandardD48pldsV5", + "signature": "public const static string StandardDlsv7.StandardD2lsV7", "returnType": "string", "isStatic": true, "isConst": true, @@ -9519,16 +9767,16 @@ "summary": [ { "kind": "text", - "text": " Standard_D48plds_v5 — 48 vCPUs — 96 GB RAM — Premium SSD " + "text": " Standard_D2ls_v7 — 2 vCPUs — 4 GB RAM — Premium SSD " } ] } }, { - "name": "StandardD4pldsV5", + "name": "StandardD32lsV7", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardDPLDSv5.StandardD4pldsV5", + "signature": "public const static string StandardDlsv7.StandardD32lsV7", "returnType": "string", "isStatic": true, "isConst": true, @@ -9536,16 +9784,16 @@ "summary": [ { "kind": "text", - "text": " Standard_D4plds_v5 — 4 vCPUs — 8 GB RAM — Premium SSD " + "text": " Standard_D32ls_v7 — 32 vCPUs — 64 GB RAM — Premium SSD " } ] } }, { - "name": "StandardD64pldsV5", + "name": "StandardD48lsV7", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardDPLDSv5.StandardD64pldsV5", + "signature": "public const static string StandardDlsv7.StandardD48lsV7", "returnType": "string", "isStatic": true, "isConst": true, @@ -9553,16 +9801,16 @@ "summary": [ { "kind": "text", - "text": " Standard_D64plds_v5 — 64 vCPUs — 128 GB RAM — Premium SSD " + "text": " Standard_D48ls_v7 — 48 vCPUs — 96 GB RAM — Premium SSD " } ] } }, { - "name": "StandardD8pldsV5", + "name": "StandardD4lsV7", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardDPLDSv5.StandardD8pldsV5", + "signature": "public const static string StandardDlsv7.StandardD4lsV7", "returnType": "string", "isStatic": true, "isConst": true, @@ -9570,7 +9818,58 @@ "summary": [ { "kind": "text", - "text": " Standard_D8plds_v5 — 8 vCPUs — 16 GB RAM — Premium SSD " + "text": " Standard_D4ls_v7 — 4 vCPUs — 8 GB RAM — Premium SSD " + } + ] + } + }, + { + "name": "StandardD64lsV7", + "kind": "field", + "accessibility": "public", + "signature": "public const static string StandardDlsv7.StandardD64lsV7", + "returnType": "string", + "isStatic": true, + "isConst": true, + "docs": { + "summary": [ + { + "kind": "text", + "text": " Standard_D64ls_v7 — 64 vCPUs — 128 GB RAM — Premium SSD " + } + ] + } + }, + { + "name": "StandardD8lsV7", + "kind": "field", + "accessibility": "public", + "signature": "public const static string StandardDlsv7.StandardD8lsV7", + "returnType": "string", + "isStatic": true, + "isConst": true, + "docs": { + "summary": [ + { + "kind": "text", + "text": " Standard_D8ls_v7 — 8 vCPUs — 16 GB RAM — Premium SSD " + } + ] + } + }, + { + "name": "StandardD96lsV7", + "kind": "field", + "accessibility": "public", + "signature": "public const static string StandardDlsv7.StandardD96lsV7", + "returnType": "string", + "isStatic": true, + "isConst": true, + "docs": { + "summary": [ + { + "kind": "text", + "text": " Standard_D96ls_v7 — 96 vCPUs — 192 GB RAM — Premium SSD " } ] } @@ -9578,8 +9877,8 @@ ] }, { - "name": "StandardDpldsv6", - "fullName": "Aspire.Hosting.Azure.Kubernetes.AksNodeVmSizes.StandardDpldsv6", + "name": "StandardDndv6", + "fullName": "Aspire.Hosting.Azure.Kubernetes.AksNodeVmSizes.StandardDndv6", "namespace": "Aspire.Hosting.Azure.Kubernetes", "kind": "class", "accessibility": "public", @@ -9588,17 +9887,17 @@ "summary": [ { "kind": "text", - "text": " VM sizes in the StandardDpldsv6Family. " + "text": " VM sizes in the StandardDndv6Family. " } ] }, "sourceFile": "src/Aspire.Hosting.Azure.Kubernetes/AksNodeVmSizes.cs", "members": [ { - "name": "StandardD16pldsV6", + "name": "StandardD128ndsV6", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardDpldsv6.StandardD16pldsV6", + "signature": "public const static string StandardDndv6.StandardD128ndsV6", "returnType": "string", "isStatic": true, "isConst": true, @@ -9606,16 +9905,16 @@ "summary": [ { "kind": "text", - "text": " Standard_D16plds_v6 — 16 vCPUs — 32 GB RAM — Premium SSD " + "text": " Standard_D128nds_v6 — 128 vCPUs — 512 GB RAM — Premium SSD " } ] } }, { - "name": "StandardD2pldsV6", + "name": "StandardD16ndsV6", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardDpldsv6.StandardD2pldsV6", + "signature": "public const static string StandardDndv6.StandardD16ndsV6", "returnType": "string", "isStatic": true, "isConst": true, @@ -9623,16 +9922,16 @@ "summary": [ { "kind": "text", - "text": " Standard_D2plds_v6 — 2 vCPUs — 4 GB RAM — Premium SSD " + "text": " Standard_D16nds_v6 — 16 vCPUs — 64 GB RAM — Premium SSD " } ] } }, { - "name": "StandardD32pldsV6", + "name": "StandardD2ndsV6", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardDpldsv6.StandardD32pldsV6", + "signature": "public const static string StandardDndv6.StandardD2ndsV6", "returnType": "string", "isStatic": true, "isConst": true, @@ -9640,16 +9939,16 @@ "summary": [ { "kind": "text", - "text": " Standard_D32plds_v6 — 32 vCPUs — 64 GB RAM — Premium SSD " + "text": " Standard_D2nds_v6 — 2 vCPUs — 8 GB RAM — Premium SSD " } ] } }, { - "name": "StandardD48pldsV6", + "name": "StandardD32ndsV6", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardDpldsv6.StandardD48pldsV6", + "signature": "public const static string StandardDndv6.StandardD32ndsV6", "returnType": "string", "isStatic": true, "isConst": true, @@ -9657,16 +9956,16 @@ "summary": [ { "kind": "text", - "text": " Standard_D48plds_v6 — 48 vCPUs — 96 GB RAM — Premium SSD " + "text": " Standard_D32nds_v6 — 32 vCPUs — 128 GB RAM — Premium SSD " } ] } }, { - "name": "StandardD4pldsV6", + "name": "StandardD48ndsV6", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardDpldsv6.StandardD4pldsV6", + "signature": "public const static string StandardDndv6.StandardD48ndsV6", "returnType": "string", "isStatic": true, "isConst": true, @@ -9674,16 +9973,16 @@ "summary": [ { "kind": "text", - "text": " Standard_D4plds_v6 — 4 vCPUs — 8 GB RAM — Premium SSD " + "text": " Standard_D48nds_v6 — 48 vCPUs — 192 GB RAM — Premium SSD " } ] } }, { - "name": "StandardD64pldsV6", + "name": "StandardD4ndsV6", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardDpldsv6.StandardD64pldsV6", + "signature": "public const static string StandardDndv6.StandardD4ndsV6", "returnType": "string", "isStatic": true, "isConst": true, @@ -9691,16 +9990,16 @@ "summary": [ { "kind": "text", - "text": " Standard_D64plds_v6 — 64 vCPUs — 128 GB RAM — Premium SSD " + "text": " Standard_D4nds_v6 — 4 vCPUs — 16 GB RAM — Premium SSD " } ] } }, { - "name": "StandardD8pldsV6", + "name": "StandardD64ndsV6", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardDpldsv6.StandardD8pldsV6", + "signature": "public const static string StandardDndv6.StandardD64ndsV6", "returnType": "string", "isStatic": true, "isConst": true, @@ -9708,16 +10007,16 @@ "summary": [ { "kind": "text", - "text": " Standard_D8plds_v6 — 8 vCPUs — 16 GB RAM — Premium SSD " + "text": " Standard_D64nds_v6 — 64 vCPUs — 256 GB RAM — Premium SSD " } ] } }, { - "name": "StandardD96pldsV6", + "name": "StandardD8ndsV6", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardDpldsv6.StandardD96pldsV6", + "signature": "public const static string StandardDndv6.StandardD8ndsV6", "returnType": "string", "isStatic": true, "isConst": true, @@ -9725,16 +10024,33 @@ "summary": [ { "kind": "text", - "text": " Standard_D96plds_v6 — 96 vCPUs — 192 GB RAM — Premium SSD " + "text": " Standard_D8nds_v6 — 8 vCPUs — 32 GB RAM — Premium SSD " } ] } - } - ] + }, + { + "name": "StandardD96ndsV6", + "kind": "field", + "accessibility": "public", + "signature": "public const static string StandardDndv6.StandardD96ndsV6", + "returnType": "string", + "isStatic": true, + "isConst": true, + "docs": { + "summary": [ + { + "kind": "text", + "text": " Standard_D96nds_v6 — 96 vCPUs — 384 GB RAM — Premium SSD " + } + ] + } + } + ] }, { - "name": "StandardDPLSv5", - "fullName": "Aspire.Hosting.Azure.Kubernetes.AksNodeVmSizes.StandardDPLSv5", + "name": "StandardDnldv6", + "fullName": "Aspire.Hosting.Azure.Kubernetes.AksNodeVmSizes.StandardDnldv6", "namespace": "Aspire.Hosting.Azure.Kubernetes", "kind": "class", "accessibility": "public", @@ -9743,17 +10059,17 @@ "summary": [ { "kind": "text", - "text": " VM sizes in the standardDPLSv5Family. " + "text": " VM sizes in the StandardDnldv6Family. " } ] }, "sourceFile": "src/Aspire.Hosting.Azure.Kubernetes/AksNodeVmSizes.cs", "members": [ { - "name": "StandardD16plsV5", + "name": "StandardD128nldsV6", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardDPLSv5.StandardD16plsV5", + "signature": "public const static string StandardDnldv6.StandardD128nldsV6", "returnType": "string", "isStatic": true, "isConst": true, @@ -9761,16 +10077,16 @@ "summary": [ { "kind": "text", - "text": " Standard_D16pls_v5 — 16 vCPUs — 32 GB RAM — Premium SSD " + "text": " Standard_D128nlds_v6 — 128 vCPUs — 256 GB RAM — Premium SSD " } ] } }, { - "name": "StandardD2plsV5", + "name": "StandardD16nldsV6", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardDPLSv5.StandardD2plsV5", + "signature": "public const static string StandardDnldv6.StandardD16nldsV6", "returnType": "string", "isStatic": true, "isConst": true, @@ -9778,16 +10094,16 @@ "summary": [ { "kind": "text", - "text": " Standard_D2pls_v5 — 2 vCPUs — 4 GB RAM — Premium SSD " + "text": " Standard_D16nlds_v6 — 16 vCPUs — 32 GB RAM — Premium SSD " } ] } }, { - "name": "StandardD32plsV5", + "name": "StandardD2nldsV6", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardDPLSv5.StandardD32plsV5", + "signature": "public const static string StandardDnldv6.StandardD2nldsV6", "returnType": "string", "isStatic": true, "isConst": true, @@ -9795,16 +10111,16 @@ "summary": [ { "kind": "text", - "text": " Standard_D32pls_v5 — 32 vCPUs — 64 GB RAM — Premium SSD " + "text": " Standard_D2nlds_v6 — 2 vCPUs — 4 GB RAM — Premium SSD " } ] } }, { - "name": "StandardD48plsV5", + "name": "StandardD32nldsV6", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardDPLSv5.StandardD48plsV5", + "signature": "public const static string StandardDnldv6.StandardD32nldsV6", "returnType": "string", "isStatic": true, "isConst": true, @@ -9812,16 +10128,16 @@ "summary": [ { "kind": "text", - "text": " Standard_D48pls_v5 — 48 vCPUs — 96 GB RAM — Premium SSD " + "text": " Standard_D32nlds_v6 — 32 vCPUs — 64 GB RAM — Premium SSD " } ] } }, { - "name": "StandardD4plsV5", + "name": "StandardD48nldsV6", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardDPLSv5.StandardD4plsV5", + "signature": "public const static string StandardDnldv6.StandardD48nldsV6", "returnType": "string", "isStatic": true, "isConst": true, @@ -9829,16 +10145,16 @@ "summary": [ { "kind": "text", - "text": " Standard_D4pls_v5 — 4 vCPUs — 8 GB RAM — Premium SSD " + "text": " Standard_D48nlds_v6 — 48 vCPUs — 96 GB RAM — Premium SSD " } ] } }, { - "name": "StandardD64plsV5", + "name": "StandardD4nldsV6", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardDPLSv5.StandardD64plsV5", + "signature": "public const static string StandardDnldv6.StandardD4nldsV6", "returnType": "string", "isStatic": true, "isConst": true, @@ -9846,16 +10162,16 @@ "summary": [ { "kind": "text", - "text": " Standard_D64pls_v5 — 64 vCPUs — 128 GB RAM — Premium SSD " + "text": " Standard_D4nlds_v6 — 4 vCPUs — 8 GB RAM — Premium SSD " } ] } }, { - "name": "StandardD8plsV5", + "name": "StandardD64nldsV6", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardDPLSv5.StandardD8plsV5", + "signature": "public const static string StandardDnldv6.StandardD64nldsV6", "returnType": "string", "isStatic": true, "isConst": true, @@ -9863,7 +10179,41 @@ "summary": [ { "kind": "text", - "text": " Standard_D8pls_v5 — 8 vCPUs — 16 GB RAM — Premium SSD " + "text": " Standard_D64nlds_v6 — 64 vCPUs — 128 GB RAM — Premium SSD " + } + ] + } + }, + { + "name": "StandardD8nldsV6", + "kind": "field", + "accessibility": "public", + "signature": "public const static string StandardDnldv6.StandardD8nldsV6", + "returnType": "string", + "isStatic": true, + "isConst": true, + "docs": { + "summary": [ + { + "kind": "text", + "text": " Standard_D8nlds_v6 — 8 vCPUs — 16 GB RAM — Premium SSD " + } + ] + } + }, + { + "name": "StandardD96nldsV6", + "kind": "field", + "accessibility": "public", + "signature": "public const static string StandardDnldv6.StandardD96nldsV6", + "returnType": "string", + "isStatic": true, + "isConst": true, + "docs": { + "summary": [ + { + "kind": "text", + "text": " Standard_D96nlds_v6 — 96 vCPUs — 192 GB RAM — Premium SSD " } ] } @@ -9871,8 +10221,8 @@ ] }, { - "name": "StandardDplsv6", - "fullName": "Aspire.Hosting.Azure.Kubernetes.AksNodeVmSizes.StandardDplsv6", + "name": "StandardDnlv6", + "fullName": "Aspire.Hosting.Azure.Kubernetes.AksNodeVmSizes.StandardDnlv6", "namespace": "Aspire.Hosting.Azure.Kubernetes", "kind": "class", "accessibility": "public", @@ -9881,17 +10231,17 @@ "summary": [ { "kind": "text", - "text": " VM sizes in the StandardDplsv6Family. " + "text": " VM sizes in the StandardDnlv6Family. " } ] }, "sourceFile": "src/Aspire.Hosting.Azure.Kubernetes/AksNodeVmSizes.cs", "members": [ { - "name": "StandardD16plsV6", + "name": "StandardD128nlsV6", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardDplsv6.StandardD16plsV6", + "signature": "public const static string StandardDnlv6.StandardD128nlsV6", "returnType": "string", "isStatic": true, "isConst": true, @@ -9899,16 +10249,16 @@ "summary": [ { "kind": "text", - "text": " Standard_D16pls_v6 — 16 vCPUs — 32 GB RAM — Premium SSD " + "text": " Standard_D128nls_v6 — 128 vCPUs — 256 GB RAM — Premium SSD " } ] } }, { - "name": "StandardD2plsV6", + "name": "StandardD16nlsV6", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardDplsv6.StandardD2plsV6", + "signature": "public const static string StandardDnlv6.StandardD16nlsV6", "returnType": "string", "isStatic": true, "isConst": true, @@ -9916,16 +10266,16 @@ "summary": [ { "kind": "text", - "text": " Standard_D2pls_v6 — 2 vCPUs — 4 GB RAM — Premium SSD " + "text": " Standard_D16nls_v6 — 16 vCPUs — 32 GB RAM — Premium SSD " } ] } }, { - "name": "StandardD32plsV6", + "name": "StandardD2nlsV6", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardDplsv6.StandardD32plsV6", + "signature": "public const static string StandardDnlv6.StandardD2nlsV6", "returnType": "string", "isStatic": true, "isConst": true, @@ -9933,16 +10283,16 @@ "summary": [ { "kind": "text", - "text": " Standard_D32pls_v6 — 32 vCPUs — 64 GB RAM — Premium SSD " + "text": " Standard_D2nls_v6 — 2 vCPUs — 4 GB RAM — Premium SSD " } ] } }, { - "name": "StandardD48plsV6", + "name": "StandardD32nlsV6", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardDplsv6.StandardD48plsV6", + "signature": "public const static string StandardDnlv6.StandardD32nlsV6", "returnType": "string", "isStatic": true, "isConst": true, @@ -9950,16 +10300,16 @@ "summary": [ { "kind": "text", - "text": " Standard_D48pls_v6 — 48 vCPUs — 96 GB RAM — Premium SSD " + "text": " Standard_D32nls_v6 — 32 vCPUs — 64 GB RAM — Premium SSD " } ] } }, { - "name": "StandardD4plsV6", + "name": "StandardD48nlsV6", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardDplsv6.StandardD4plsV6", + "signature": "public const static string StandardDnlv6.StandardD48nlsV6", "returnType": "string", "isStatic": true, "isConst": true, @@ -9967,16 +10317,16 @@ "summary": [ { "kind": "text", - "text": " Standard_D4pls_v6 — 4 vCPUs — 8 GB RAM — Premium SSD " + "text": " Standard_D48nls_v6 — 48 vCPUs — 96 GB RAM — Premium SSD " } ] } }, { - "name": "StandardD64plsV6", + "name": "StandardD4nlsV6", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardDplsv6.StandardD64plsV6", + "signature": "public const static string StandardDnlv6.StandardD4nlsV6", "returnType": "string", "isStatic": true, "isConst": true, @@ -9984,16 +10334,16 @@ "summary": [ { "kind": "text", - "text": " Standard_D64pls_v6 — 64 vCPUs — 128 GB RAM — Premium SSD " + "text": " Standard_D4nls_v6 — 4 vCPUs — 8 GB RAM — Premium SSD " } ] } }, { - "name": "StandardD8plsV6", + "name": "StandardD64nlsV6", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardDplsv6.StandardD8plsV6", + "signature": "public const static string StandardDnlv6.StandardD64nlsV6", "returnType": "string", "isStatic": true, "isConst": true, @@ -10001,16 +10351,16 @@ "summary": [ { "kind": "text", - "text": " Standard_D8pls_v6 — 8 vCPUs — 16 GB RAM — Premium SSD " + "text": " Standard_D64nls_v6 — 64 vCPUs — 128 GB RAM — Premium SSD " } ] } }, { - "name": "StandardD96plsV6", + "name": "StandardD8nlsV6", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardDplsv6.StandardD96plsV6", + "signature": "public const static string StandardDnlv6.StandardD8nlsV6", "returnType": "string", "isStatic": true, "isConst": true, @@ -10018,7 +10368,24 @@ "summary": [ { "kind": "text", - "text": " Standard_D96pls_v6 — 96 vCPUs — 192 GB RAM — Premium SSD " + "text": " Standard_D8nls_v6 — 8 vCPUs — 16 GB RAM — Premium SSD " + } + ] + } + }, + { + "name": "StandardD96nlsV6", + "kind": "field", + "accessibility": "public", + "signature": "public const static string StandardDnlv6.StandardD96nlsV6", + "returnType": "string", + "isStatic": true, + "isConst": true, + "docs": { + "summary": [ + { + "kind": "text", + "text": " Standard_D96nls_v6 — 96 vCPUs — 192 GB RAM — Premium SSD " } ] } @@ -10026,8 +10393,8 @@ ] }, { - "name": "StandardDPSv5", - "fullName": "Aspire.Hosting.Azure.Kubernetes.AksNodeVmSizes.StandardDPSv5", + "name": "StandardDnv6", + "fullName": "Aspire.Hosting.Azure.Kubernetes.AksNodeVmSizes.StandardDnv6", "namespace": "Aspire.Hosting.Azure.Kubernetes", "kind": "class", "accessibility": "public", @@ -10036,17 +10403,17 @@ "summary": [ { "kind": "text", - "text": " VM sizes in the standardDPSv5Family. " + "text": " VM sizes in the StandardDnv6Family. " } ] }, "sourceFile": "src/Aspire.Hosting.Azure.Kubernetes/AksNodeVmSizes.cs", "members": [ { - "name": "StandardD16psV5", + "name": "StandardD128nsV6", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardDPSv5.StandardD16psV5", + "signature": "public const static string StandardDnv6.StandardD128nsV6", "returnType": "string", "isStatic": true, "isConst": true, @@ -10054,16 +10421,16 @@ "summary": [ { "kind": "text", - "text": " Standard_D16ps_v5 — 16 vCPUs — 64 GB RAM — Premium SSD " + "text": " Standard_D128ns_v6 — 128 vCPUs — 512 GB RAM — Premium SSD " } ] } }, { - "name": "StandardD2psV5", + "name": "StandardD16nsV6", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardDPSv5.StandardD2psV5", + "signature": "public const static string StandardDnv6.StandardD16nsV6", "returnType": "string", "isStatic": true, "isConst": true, @@ -10071,16 +10438,16 @@ "summary": [ { "kind": "text", - "text": " Standard_D2ps_v5 — 2 vCPUs — 8 GB RAM — Premium SSD " + "text": " Standard_D16ns_v6 — 16 vCPUs — 64 GB RAM — Premium SSD " } ] } }, { - "name": "StandardD32psV5", + "name": "StandardD2nsV6", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardDPSv5.StandardD32psV5", + "signature": "public const static string StandardDnv6.StandardD2nsV6", "returnType": "string", "isStatic": true, "isConst": true, @@ -10088,16 +10455,16 @@ "summary": [ { "kind": "text", - "text": " Standard_D32ps_v5 — 32 vCPUs — 128 GB RAM — Premium SSD " + "text": " Standard_D2ns_v6 — 2 vCPUs — 8 GB RAM — Premium SSD " } ] } }, { - "name": "StandardD48psV5", + "name": "StandardD32nsV6", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardDPSv5.StandardD48psV5", + "signature": "public const static string StandardDnv6.StandardD32nsV6", "returnType": "string", "isStatic": true, "isConst": true, @@ -10105,16 +10472,16 @@ "summary": [ { "kind": "text", - "text": " Standard_D48ps_v5 — 48 vCPUs — 192 GB RAM — Premium SSD " + "text": " Standard_D32ns_v6 — 32 vCPUs — 128 GB RAM — Premium SSD " } ] } }, { - "name": "StandardD4psV5", + "name": "StandardD48nsV6", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardDPSv5.StandardD4psV5", + "signature": "public const static string StandardDnv6.StandardD48nsV6", "returnType": "string", "isStatic": true, "isConst": true, @@ -10122,16 +10489,16 @@ "summary": [ { "kind": "text", - "text": " Standard_D4ps_v5 — 4 vCPUs — 16 GB RAM — Premium SSD " + "text": " Standard_D48ns_v6 — 48 vCPUs — 192 GB RAM — Premium SSD " } ] } }, { - "name": "StandardD64psV5", + "name": "StandardD4nsV6", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardDPSv5.StandardD64psV5", + "signature": "public const static string StandardDnv6.StandardD4nsV6", "returnType": "string", "isStatic": true, "isConst": true, @@ -10139,16 +10506,16 @@ "summary": [ { "kind": "text", - "text": " Standard_D64ps_v5 — 64 vCPUs — 208 GB RAM — Premium SSD " + "text": " Standard_D4ns_v6 — 4 vCPUs — 16 GB RAM — Premium SSD " } ] } }, { - "name": "StandardD8psV5", + "name": "StandardD64nsV6", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardDPSv5.StandardD8psV5", + "signature": "public const static string StandardDnv6.StandardD64nsV6", "returnType": "string", "isStatic": true, "isConst": true, @@ -10156,7 +10523,41 @@ "summary": [ { "kind": "text", - "text": " Standard_D8ps_v5 — 8 vCPUs — 32 GB RAM — Premium SSD " + "text": " Standard_D64ns_v6 — 64 vCPUs — 256 GB RAM — Premium SSD " + } + ] + } + }, + { + "name": "StandardD8nsV6", + "kind": "field", + "accessibility": "public", + "signature": "public const static string StandardDnv6.StandardD8nsV6", + "returnType": "string", + "isStatic": true, + "isConst": true, + "docs": { + "summary": [ + { + "kind": "text", + "text": " Standard_D8ns_v6 — 8 vCPUs — 32 GB RAM — Premium SSD " + } + ] + } + }, + { + "name": "StandardD96nsV6", + "kind": "field", + "accessibility": "public", + "signature": "public const static string StandardDnv6.StandardD96nsV6", + "returnType": "string", + "isStatic": true, + "isConst": true, + "docs": { + "summary": [ + { + "kind": "text", + "text": " Standard_D96ns_v6 — 96 vCPUs — 384 GB RAM — Premium SSD " } ] } @@ -10164,8 +10565,8 @@ ] }, { - "name": "StandardDpsv6", - "fullName": "Aspire.Hosting.Azure.Kubernetes.AksNodeVmSizes.StandardDpsv6", + "name": "StandardDPDSv5", + "fullName": "Aspire.Hosting.Azure.Kubernetes.AksNodeVmSizes.StandardDPDSv5", "namespace": "Aspire.Hosting.Azure.Kubernetes", "kind": "class", "accessibility": "public", @@ -10174,34 +10575,17 @@ "summary": [ { "kind": "text", - "text": " VM sizes in the StandardDpsv6Family. " + "text": " VM sizes in the standardDPDSv5Family. " } ] }, "sourceFile": "src/Aspire.Hosting.Azure.Kubernetes/AksNodeVmSizes.cs", "members": [ { - "name": "StandardD16psV6", - "kind": "field", - "accessibility": "public", - "signature": "public const static string StandardDpsv6.StandardD16psV6", - "returnType": "string", - "isStatic": true, - "isConst": true, - "docs": { - "summary": [ - { - "kind": "text", - "text": " Standard_D16ps_v6 — 16 vCPUs — 64 GB RAM — Premium SSD " - } - ] - } - }, - { - "name": "StandardD2psV6", + "name": "StandardD16pdsV5", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardDpsv6.StandardD2psV6", + "signature": "public const static string StandardDPDSv5.StandardD16pdsV5", "returnType": "string", "isStatic": true, "isConst": true, @@ -10209,16 +10593,16 @@ "summary": [ { "kind": "text", - "text": " Standard_D2ps_v6 — 2 vCPUs — 8 GB RAM — Premium SSD " + "text": " Standard_D16pds_v5 — 16 vCPUs — 64 GB RAM — Premium SSD " } ] } }, { - "name": "StandardD32psV6", + "name": "StandardD2pdsV5", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardDpsv6.StandardD32psV6", + "signature": "public const static string StandardDPDSv5.StandardD2pdsV5", "returnType": "string", "isStatic": true, "isConst": true, @@ -10226,16 +10610,16 @@ "summary": [ { "kind": "text", - "text": " Standard_D32ps_v6 — 32 vCPUs — 128 GB RAM — Premium SSD " + "text": " Standard_D2pds_v5 — 2 vCPUs — 8 GB RAM — Premium SSD " } ] } }, { - "name": "StandardD48psV6", + "name": "StandardD32pdsV5", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardDpsv6.StandardD48psV6", + "signature": "public const static string StandardDPDSv5.StandardD32pdsV5", "returnType": "string", "isStatic": true, "isConst": true, @@ -10243,16 +10627,16 @@ "summary": [ { "kind": "text", - "text": " Standard_D48ps_v6 — 48 vCPUs — 192 GB RAM — Premium SSD " + "text": " Standard_D32pds_v5 — 32 vCPUs — 128 GB RAM — Premium SSD " } ] } }, { - "name": "StandardD4psV6", + "name": "StandardD48pdsV5", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardDpsv6.StandardD4psV6", + "signature": "public const static string StandardDPDSv5.StandardD48pdsV5", "returnType": "string", "isStatic": true, "isConst": true, @@ -10260,16 +10644,16 @@ "summary": [ { "kind": "text", - "text": " Standard_D4ps_v6 — 4 vCPUs — 16 GB RAM — Premium SSD " + "text": " Standard_D48pds_v5 — 48 vCPUs — 192 GB RAM — Premium SSD " } ] } }, { - "name": "StandardD64psV6", + "name": "StandardD4pdsV5", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardDpsv6.StandardD64psV6", + "signature": "public const static string StandardDPDSv5.StandardD4pdsV5", "returnType": "string", "isStatic": true, "isConst": true, @@ -10277,16 +10661,16 @@ "summary": [ { "kind": "text", - "text": " Standard_D64ps_v6 — 64 vCPUs — 256 GB RAM — Premium SSD " + "text": " Standard_D4pds_v5 — 4 vCPUs — 16 GB RAM — Premium SSD " } ] } }, { - "name": "StandardD8psV6", + "name": "StandardD64pdsV5", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardDpsv6.StandardD8psV6", + "signature": "public const static string StandardDPDSv5.StandardD64pdsV5", "returnType": "string", "isStatic": true, "isConst": true, @@ -10294,16 +10678,16 @@ "summary": [ { "kind": "text", - "text": " Standard_D8ps_v6 — 8 vCPUs — 32 GB RAM — Premium SSD " + "text": " Standard_D64pds_v5 — 64 vCPUs — 208 GB RAM — Premium SSD " } ] } }, { - "name": "StandardD96psV6", + "name": "StandardD8pdsV5", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardDpsv6.StandardD96psV6", + "signature": "public const static string StandardDPDSv5.StandardD8pdsV5", "returnType": "string", "isStatic": true, "isConst": true, @@ -10311,7 +10695,7 @@ "summary": [ { "kind": "text", - "text": " Standard_D96ps_v6 — 96 vCPUs — 384 GB RAM — Premium SSD " + "text": " Standard_D8pds_v5 — 8 vCPUs — 32 GB RAM — Premium SSD " } ] } @@ -10319,8 +10703,8 @@ ] }, { - "name": "StandardDS", - "fullName": "Aspire.Hosting.Azure.Kubernetes.AksNodeVmSizes.StandardDS", + "name": "StandardDpdsv6", + "fullName": "Aspire.Hosting.Azure.Kubernetes.AksNodeVmSizes.StandardDpdsv6", "namespace": "Aspire.Hosting.Azure.Kubernetes", "kind": "class", "accessibility": "public", @@ -10329,17 +10713,17 @@ "summary": [ { "kind": "text", - "text": " VM sizes in the standardDSFamily. " + "text": " VM sizes in the StandardDpdsv6Family. " } ] }, "sourceFile": "src/Aspire.Hosting.Azure.Kubernetes/AksNodeVmSizes.cs", "members": [ { - "name": "StandardDS11", + "name": "StandardD16pdsV6", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardDS.StandardDS11", + "signature": "public const static string StandardDpdsv6.StandardD16pdsV6", "returnType": "string", "isStatic": true, "isConst": true, @@ -10347,16 +10731,16 @@ "summary": [ { "kind": "text", - "text": " Standard_DS11 — 2 vCPUs — 14 GB RAM — Premium SSD " + "text": " Standard_D16pds_v6 — 16 vCPUs — 64 GB RAM — Premium SSD " } ] } }, { - "name": "StandardDS12", + "name": "StandardD2pdsV6", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardDS.StandardDS12", + "signature": "public const static string StandardDpdsv6.StandardD2pdsV6", "returnType": "string", "isStatic": true, "isConst": true, @@ -10364,16 +10748,16 @@ "summary": [ { "kind": "text", - "text": " Standard_DS12 — 4 vCPUs — 28 GB RAM — Premium SSD " + "text": " Standard_D2pds_v6 — 2 vCPUs — 8 GB RAM — Premium SSD " } ] } }, { - "name": "StandardDS13", + "name": "StandardD32pdsV6", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardDS.StandardDS13", + "signature": "public const static string StandardDpdsv6.StandardD32pdsV6", "returnType": "string", "isStatic": true, "isConst": true, @@ -10381,16 +10765,16 @@ "summary": [ { "kind": "text", - "text": " Standard_DS13 — 8 vCPUs — 56 GB RAM — Premium SSD " + "text": " Standard_D32pds_v6 — 32 vCPUs — 128 GB RAM — Premium SSD " } ] } }, { - "name": "StandardDS14", + "name": "StandardD48pdsV6", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardDS.StandardDS14", + "signature": "public const static string StandardDpdsv6.StandardD48pdsV6", "returnType": "string", "isStatic": true, "isConst": true, @@ -10398,16 +10782,16 @@ "summary": [ { "kind": "text", - "text": " Standard_DS14 — 16 vCPUs — 112 GB RAM — Premium SSD " + "text": " Standard_D48pds_v6 — 48 vCPUs — 192 GB RAM — Premium SSD " } ] } }, { - "name": "StandardDS2", + "name": "StandardD4pdsV6", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardDS.StandardDS2", + "signature": "public const static string StandardDpdsv6.StandardD4pdsV6", "returnType": "string", "isStatic": true, "isConst": true, @@ -10415,16 +10799,16 @@ "summary": [ { "kind": "text", - "text": " Standard_DS2 — 2 vCPUs — 7 GB RAM — Premium SSD " + "text": " Standard_D4pds_v6 — 4 vCPUs — 16 GB RAM — Premium SSD " } ] } }, { - "name": "StandardDS3", + "name": "StandardD64pdsV6", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardDS.StandardDS3", + "signature": "public const static string StandardDpdsv6.StandardD64pdsV6", "returnType": "string", "isStatic": true, "isConst": true, @@ -10432,16 +10816,16 @@ "summary": [ { "kind": "text", - "text": " Standard_DS3 — 4 vCPUs — 14 GB RAM — Premium SSD " + "text": " Standard_D64pds_v6 — 64 vCPUs — 256 GB RAM — Premium SSD " } ] } }, { - "name": "StandardDS4", + "name": "StandardD8pdsV6", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardDS.StandardDS4", + "signature": "public const static string StandardDpdsv6.StandardD8pdsV6", "returnType": "string", "isStatic": true, "isConst": true, @@ -10449,7 +10833,24 @@ "summary": [ { "kind": "text", - "text": " Standard_DS4 — 8 vCPUs — 28 GB RAM — Premium SSD " + "text": " Standard_D8pds_v6 — 8 vCPUs — 32 GB RAM — Premium SSD " + } + ] + } + }, + { + "name": "StandardD96pdsV6", + "kind": "field", + "accessibility": "public", + "signature": "public const static string StandardDpdsv6.StandardD96pdsV6", + "returnType": "string", + "isStatic": true, + "isConst": true, + "docs": { + "summary": [ + { + "kind": "text", + "text": " Standard_D96pds_v6 — 96 vCPUs — 384 GB RAM — Premium SSD " } ] } @@ -10457,8 +10858,8 @@ ] }, { - "name": "StandardDSv2", - "fullName": "Aspire.Hosting.Azure.Kubernetes.AksNodeVmSizes.StandardDSv2", + "name": "StandardDPLDSv5", + "fullName": "Aspire.Hosting.Azure.Kubernetes.AksNodeVmSizes.StandardDPLDSv5", "namespace": "Aspire.Hosting.Azure.Kubernetes", "kind": "class", "accessibility": "public", @@ -10467,17 +10868,17 @@ "summary": [ { "kind": "text", - "text": " VM sizes in the standardDSv2Family. " + "text": " VM sizes in the standardDPLDSv5Family. " } ] }, "sourceFile": "src/Aspire.Hosting.Azure.Kubernetes/AksNodeVmSizes.cs", "members": [ { - "name": "StandardDS111V2", + "name": "StandardD16pldsV5", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardDSv2.StandardDS111V2", + "signature": "public const static string StandardDPLDSv5.StandardD16pldsV5", "returnType": "string", "isStatic": true, "isConst": true, @@ -10485,16 +10886,16 @@ "summary": [ { "kind": "text", - "text": " Standard_DS11-1_v2 — 2 vCPUs — 14 GB RAM — Premium SSD " + "text": " Standard_D16plds_v5 — 16 vCPUs — 32 GB RAM — Premium SSD " } ] } }, { - "name": "StandardDS11V2", + "name": "StandardD2pldsV5", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardDSv2.StandardDS11V2", + "signature": "public const static string StandardDPLDSv5.StandardD2pldsV5", "returnType": "string", "isStatic": true, "isConst": true, @@ -10502,16 +10903,16 @@ "summary": [ { "kind": "text", - "text": " Standard_DS11_v2 — 2 vCPUs — 14 GB RAM — Premium SSD " + "text": " Standard_D2plds_v5 — 2 vCPUs — 4 GB RAM — Premium SSD " } ] } }, { - "name": "StandardDS121V2", + "name": "StandardD32pldsV5", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardDSv2.StandardDS121V2", + "signature": "public const static string StandardDPLDSv5.StandardD32pldsV5", "returnType": "string", "isStatic": true, "isConst": true, @@ -10519,16 +10920,16 @@ "summary": [ { "kind": "text", - "text": " Standard_DS12-1_v2 — 4 vCPUs — 28 GB RAM — Premium SSD " + "text": " Standard_D32plds_v5 — 32 vCPUs — 64 GB RAM — Premium SSD " } ] } }, { - "name": "StandardDS122V2", + "name": "StandardD48pldsV5", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardDSv2.StandardDS122V2", + "signature": "public const static string StandardDPLDSv5.StandardD48pldsV5", "returnType": "string", "isStatic": true, "isConst": true, @@ -10536,16 +10937,16 @@ "summary": [ { "kind": "text", - "text": " Standard_DS12-2_v2 — 4 vCPUs — 28 GB RAM — Premium SSD " + "text": " Standard_D48plds_v5 — 48 vCPUs — 96 GB RAM — Premium SSD " } ] } }, { - "name": "StandardDS12V2", + "name": "StandardD4pldsV5", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardDSv2.StandardDS12V2", + "signature": "public const static string StandardDPLDSv5.StandardD4pldsV5", "returnType": "string", "isStatic": true, "isConst": true, @@ -10553,16 +10954,16 @@ "summary": [ { "kind": "text", - "text": " Standard_DS12_v2 — 4 vCPUs — 28 GB RAM — Premium SSD " + "text": " Standard_D4plds_v5 — 4 vCPUs — 8 GB RAM — Premium SSD " } ] } }, { - "name": "StandardDS132V2", + "name": "StandardD64pldsV5", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardDSv2.StandardDS132V2", + "signature": "public const static string StandardDPLDSv5.StandardD64pldsV5", "returnType": "string", "isStatic": true, "isConst": true, @@ -10570,16 +10971,16 @@ "summary": [ { "kind": "text", - "text": " Standard_DS13-2_v2 — 8 vCPUs — 56 GB RAM — Premium SSD " + "text": " Standard_D64plds_v5 — 64 vCPUs — 128 GB RAM — Premium SSD " } ] } }, { - "name": "StandardDS134V2", + "name": "StandardD8pldsV5", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardDSv2.StandardDS134V2", + "signature": "public const static string StandardDPLDSv5.StandardD8pldsV5", "returnType": "string", "isStatic": true, "isConst": true, @@ -10587,33 +10988,35 @@ "summary": [ { "kind": "text", - "text": " Standard_DS13-4_v2 — 8 vCPUs — 56 GB RAM — Premium SSD " + "text": " Standard_D8plds_v5 — 8 vCPUs — 16 GB RAM — Premium SSD " } ] } - }, - { - "name": "StandardDS13V2", - "kind": "field", - "accessibility": "public", - "signature": "public const static string StandardDSv2.StandardDS13V2", - "returnType": "string", - "isStatic": true, - "isConst": true, - "docs": { - "summary": [ - { - "kind": "text", - "text": " Standard_DS13_v2 — 8 vCPUs — 56 GB RAM — Premium SSD " - } - ] + } + ] + }, + { + "name": "StandardDpldsv6", + "fullName": "Aspire.Hosting.Azure.Kubernetes.AksNodeVmSizes.StandardDpldsv6", + "namespace": "Aspire.Hosting.Azure.Kubernetes", + "kind": "class", + "accessibility": "public", + "isStatic": true, + "docs": { + "summary": [ + { + "kind": "text", + "text": " VM sizes in the StandardDpldsv6Family. " } - }, + ] + }, + "sourceFile": "src/Aspire.Hosting.Azure.Kubernetes/AksNodeVmSizes.cs", + "members": [ { - "name": "StandardDS144V2", + "name": "StandardD16pldsV6", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardDSv2.StandardDS144V2", + "signature": "public const static string StandardDpldsv6.StandardD16pldsV6", "returnType": "string", "isStatic": true, "isConst": true, @@ -10621,16 +11024,16 @@ "summary": [ { "kind": "text", - "text": " Standard_DS14-4_v2 — 16 vCPUs — 112 GB RAM — Premium SSD " + "text": " Standard_D16plds_v6 — 16 vCPUs — 32 GB RAM — Premium SSD " } ] } }, { - "name": "StandardDS148V2", + "name": "StandardD2pldsV6", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardDSv2.StandardDS148V2", + "signature": "public const static string StandardDpldsv6.StandardD2pldsV6", "returnType": "string", "isStatic": true, "isConst": true, @@ -10638,16 +11041,16 @@ "summary": [ { "kind": "text", - "text": " Standard_DS14-8_v2 — 16 vCPUs — 112 GB RAM — Premium SSD " + "text": " Standard_D2plds_v6 — 2 vCPUs — 4 GB RAM — Premium SSD " } ] } }, { - "name": "StandardDS14V2", + "name": "StandardD32pldsV6", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardDSv2.StandardDS14V2", + "signature": "public const static string StandardDpldsv6.StandardD32pldsV6", "returnType": "string", "isStatic": true, "isConst": true, @@ -10655,16 +11058,16 @@ "summary": [ { "kind": "text", - "text": " Standard_DS14_v2 — 16 vCPUs — 112 GB RAM — Premium SSD " + "text": " Standard_D32plds_v6 — 32 vCPUs — 64 GB RAM — Premium SSD " } ] } }, { - "name": "StandardDS15V2", + "name": "StandardD48pldsV6", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardDSv2.StandardDS15V2", + "signature": "public const static string StandardDpldsv6.StandardD48pldsV6", "returnType": "string", "isStatic": true, "isConst": true, @@ -10672,16 +11075,16 @@ "summary": [ { "kind": "text", - "text": " Standard_DS15_v2 — 20 vCPUs — 140 GB RAM — Premium SSD " + "text": " Standard_D48plds_v6 — 48 vCPUs — 96 GB RAM — Premium SSD " } ] } }, { - "name": "StandardDS2V2", + "name": "StandardD4pldsV6", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardDSv2.StandardDS2V2", + "signature": "public const static string StandardDpldsv6.StandardD4pldsV6", "returnType": "string", "isStatic": true, "isConst": true, @@ -10689,16 +11092,16 @@ "summary": [ { "kind": "text", - "text": " Standard_DS2_v2 — 2 vCPUs — 7 GB RAM — Premium SSD " + "text": " Standard_D4plds_v6 — 4 vCPUs — 8 GB RAM — Premium SSD " } ] } }, { - "name": "StandardDS3V2", + "name": "StandardD64pldsV6", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardDSv2.StandardDS3V2", + "signature": "public const static string StandardDpldsv6.StandardD64pldsV6", "returnType": "string", "isStatic": true, "isConst": true, @@ -10706,16 +11109,16 @@ "summary": [ { "kind": "text", - "text": " Standard_DS3_v2 — 4 vCPUs — 14 GB RAM — Premium SSD " + "text": " Standard_D64plds_v6 — 64 vCPUs — 128 GB RAM — Premium SSD " } ] } }, { - "name": "StandardDS4V2", + "name": "StandardD8pldsV6", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardDSv2.StandardDS4V2", + "signature": "public const static string StandardDpldsv6.StandardD8pldsV6", "returnType": "string", "isStatic": true, "isConst": true, @@ -10723,16 +11126,16 @@ "summary": [ { "kind": "text", - "text": " Standard_DS4_v2 — 8 vCPUs — 28 GB RAM — Premium SSD " + "text": " Standard_D8plds_v6 — 8 vCPUs — 16 GB RAM — Premium SSD " } ] } }, { - "name": "StandardDS5V2", + "name": "StandardD96pldsV6", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardDSv2.StandardDS5V2", + "signature": "public const static string StandardDpldsv6.StandardD96pldsV6", "returnType": "string", "isStatic": true, "isConst": true, @@ -10740,7 +11143,7 @@ "summary": [ { "kind": "text", - "text": " Standard_DS5_v2 — 16 vCPUs — 56 GB RAM — Premium SSD " + "text": " Standard_D96plds_v6 — 96 vCPUs — 192 GB RAM — Premium SSD " } ] } @@ -10748,8 +11151,8 @@ ] }, { - "name": "StandardDSv2Promo", - "fullName": "Aspire.Hosting.Azure.Kubernetes.AksNodeVmSizes.StandardDSv2Promo", + "name": "StandardDPLSv5", + "fullName": "Aspire.Hosting.Azure.Kubernetes.AksNodeVmSizes.StandardDPLSv5", "namespace": "Aspire.Hosting.Azure.Kubernetes", "kind": "class", "accessibility": "public", @@ -10758,34 +11161,17 @@ "summary": [ { "kind": "text", - "text": " VM sizes in the standardDSv2PromoFamily. " + "text": " VM sizes in the standardDPLSv5Family. " } ] }, "sourceFile": "src/Aspire.Hosting.Azure.Kubernetes/AksNodeVmSizes.cs", "members": [ { - "name": "StandardDS11V2Promo", - "kind": "field", - "accessibility": "public", - "signature": "public const static string StandardDSv2Promo.StandardDS11V2Promo", - "returnType": "string", - "isStatic": true, - "isConst": true, - "docs": { - "summary": [ - { - "kind": "text", - "text": " Standard_DS11_v2_Promo — 2 vCPUs — 14 GB RAM — Premium SSD " - } - ] - } - }, - { - "name": "StandardDS12V2Promo", + "name": "StandardD16plsV5", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardDSv2Promo.StandardDS12V2Promo", + "signature": "public const static string StandardDPLSv5.StandardD16plsV5", "returnType": "string", "isStatic": true, "isConst": true, @@ -10793,16 +11179,16 @@ "summary": [ { "kind": "text", - "text": " Standard_DS12_v2_Promo — 4 vCPUs — 28 GB RAM — Premium SSD " + "text": " Standard_D16pls_v5 — 16 vCPUs — 32 GB RAM — Premium SSD " } ] } }, { - "name": "StandardDS13V2Promo", + "name": "StandardD2plsV5", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardDSv2Promo.StandardDS13V2Promo", + "signature": "public const static string StandardDPLSv5.StandardD2plsV5", "returnType": "string", "isStatic": true, "isConst": true, @@ -10810,16 +11196,16 @@ "summary": [ { "kind": "text", - "text": " Standard_DS13_v2_Promo — 8 vCPUs — 56 GB RAM — Premium SSD " + "text": " Standard_D2pls_v5 — 2 vCPUs — 4 GB RAM — Premium SSD " } ] } }, { - "name": "StandardDS14V2Promo", + "name": "StandardD32plsV5", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardDSv2Promo.StandardDS14V2Promo", + "signature": "public const static string StandardDPLSv5.StandardD32plsV5", "returnType": "string", "isStatic": true, "isConst": true, @@ -10827,16 +11213,16 @@ "summary": [ { "kind": "text", - "text": " Standard_DS14_v2_Promo — 16 vCPUs — 112 GB RAM — Premium SSD " + "text": " Standard_D32pls_v5 — 32 vCPUs — 64 GB RAM — Premium SSD " } ] } }, { - "name": "StandardDS2V2Promo", + "name": "StandardD48plsV5", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardDSv2Promo.StandardDS2V2Promo", + "signature": "public const static string StandardDPLSv5.StandardD48plsV5", "returnType": "string", "isStatic": true, "isConst": true, @@ -10844,16 +11230,16 @@ "summary": [ { "kind": "text", - "text": " Standard_DS2_v2_Promo — 2 vCPUs — 7 GB RAM — Premium SSD " + "text": " Standard_D48pls_v5 — 48 vCPUs — 96 GB RAM — Premium SSD " } ] } }, { - "name": "StandardDS3V2Promo", + "name": "StandardD4plsV5", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardDSv2Promo.StandardDS3V2Promo", + "signature": "public const static string StandardDPLSv5.StandardD4plsV5", "returnType": "string", "isStatic": true, "isConst": true, @@ -10861,16 +11247,16 @@ "summary": [ { "kind": "text", - "text": " Standard_DS3_v2_Promo — 4 vCPUs — 14 GB RAM — Premium SSD " + "text": " Standard_D4pls_v5 — 4 vCPUs — 8 GB RAM — Premium SSD " } ] } }, { - "name": "StandardDS4V2Promo", + "name": "StandardD64plsV5", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardDSv2Promo.StandardDS4V2Promo", + "signature": "public const static string StandardDPLSv5.StandardD64plsV5", "returnType": "string", "isStatic": true, "isConst": true, @@ -10878,16 +11264,16 @@ "summary": [ { "kind": "text", - "text": " Standard_DS4_v2_Promo — 8 vCPUs — 28 GB RAM — Premium SSD " + "text": " Standard_D64pls_v5 — 64 vCPUs — 128 GB RAM — Premium SSD " } ] } }, { - "name": "StandardDS5V2Promo", + "name": "StandardD8plsV5", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardDSv2Promo.StandardDS5V2Promo", + "signature": "public const static string StandardDPLSv5.StandardD8plsV5", "returnType": "string", "isStatic": true, "isConst": true, @@ -10895,7 +11281,7 @@ "summary": [ { "kind": "text", - "text": " Standard_DS5_v2_Promo — 16 vCPUs — 56 GB RAM — Premium SSD " + "text": " Standard_D8pls_v5 — 8 vCPUs — 16 GB RAM — Premium SSD " } ] } @@ -10903,8 +11289,8 @@ ] }, { - "name": "StandardDSv3", - "fullName": "Aspire.Hosting.Azure.Kubernetes.AksNodeVmSizes.StandardDSv3", + "name": "StandardDplsv6", + "fullName": "Aspire.Hosting.Azure.Kubernetes.AksNodeVmSizes.StandardDplsv6", "namespace": "Aspire.Hosting.Azure.Kubernetes", "kind": "class", "accessibility": "public", @@ -10913,17 +11299,17 @@ "summary": [ { "kind": "text", - "text": " VM sizes in the standardDSv3Family. " + "text": " VM sizes in the StandardDplsv6Family. " } ] }, "sourceFile": "src/Aspire.Hosting.Azure.Kubernetes/AksNodeVmSizes.cs", "members": [ { - "name": "StandardD16sV3", + "name": "StandardD16plsV6", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardDSv3.StandardD16sV3", + "signature": "public const static string StandardDplsv6.StandardD16plsV6", "returnType": "string", "isStatic": true, "isConst": true, @@ -10931,16 +11317,16 @@ "summary": [ { "kind": "text", - "text": " Standard_D16s_v3 — 16 vCPUs — 64 GB RAM — Premium SSD " + "text": " Standard_D16pls_v6 — 16 vCPUs — 32 GB RAM — Premium SSD " } ] } }, { - "name": "StandardD2sV3", + "name": "StandardD2plsV6", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardDSv3.StandardD2sV3", + "signature": "public const static string StandardDplsv6.StandardD2plsV6", "returnType": "string", "isStatic": true, "isConst": true, @@ -10948,16 +11334,16 @@ "summary": [ { "kind": "text", - "text": " Standard_D2s_v3 — 2 vCPUs — 8 GB RAM — Premium SSD " + "text": " Standard_D2pls_v6 — 2 vCPUs — 4 GB RAM — Premium SSD " } ] } }, { - "name": "StandardD32sV3", + "name": "StandardD32plsV6", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardDSv3.StandardD32sV3", + "signature": "public const static string StandardDplsv6.StandardD32plsV6", "returnType": "string", "isStatic": true, "isConst": true, @@ -10965,16 +11351,16 @@ "summary": [ { "kind": "text", - "text": " Standard_D32s_v3 — 32 vCPUs — 128 GB RAM — Premium SSD " + "text": " Standard_D32pls_v6 — 32 vCPUs — 64 GB RAM — Premium SSD " } ] } }, { - "name": "StandardD48sV3", + "name": "StandardD48plsV6", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardDSv3.StandardD48sV3", + "signature": "public const static string StandardDplsv6.StandardD48plsV6", "returnType": "string", "isStatic": true, "isConst": true, @@ -10982,16 +11368,16 @@ "summary": [ { "kind": "text", - "text": " Standard_D48s_v3 — 48 vCPUs — 192 GB RAM — Premium SSD " + "text": " Standard_D48pls_v6 — 48 vCPUs — 96 GB RAM — Premium SSD " } ] } }, { - "name": "StandardD4sV3", + "name": "StandardD4plsV6", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardDSv3.StandardD4sV3", + "signature": "public const static string StandardDplsv6.StandardD4plsV6", "returnType": "string", "isStatic": true, "isConst": true, @@ -10999,16 +11385,16 @@ "summary": [ { "kind": "text", - "text": " Standard_D4s_v3 — 4 vCPUs — 16 GB RAM — Premium SSD " + "text": " Standard_D4pls_v6 — 4 vCPUs — 8 GB RAM — Premium SSD " } ] } }, { - "name": "StandardD64sV3", + "name": "StandardD64plsV6", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardDSv3.StandardD64sV3", + "signature": "public const static string StandardDplsv6.StandardD64plsV6", "returnType": "string", "isStatic": true, "isConst": true, @@ -11016,16 +11402,16 @@ "summary": [ { "kind": "text", - "text": " Standard_D64s_v3 — 64 vCPUs — 256 GB RAM — Premium SSD " + "text": " Standard_D64pls_v6 — 64 vCPUs — 128 GB RAM — Premium SSD " } ] } }, { - "name": "StandardD8sV3", + "name": "StandardD8plsV6", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardDSv3.StandardD8sV3", + "signature": "public const static string StandardDplsv6.StandardD8plsV6", "returnType": "string", "isStatic": true, "isConst": true, @@ -11033,7 +11419,24 @@ "summary": [ { "kind": "text", - "text": " Standard_D8s_v3 — 8 vCPUs — 32 GB RAM — Premium SSD " + "text": " Standard_D8pls_v6 — 8 vCPUs — 16 GB RAM — Premium SSD " + } + ] + } + }, + { + "name": "StandardD96plsV6", + "kind": "field", + "accessibility": "public", + "signature": "public const static string StandardDplsv6.StandardD96plsV6", + "returnType": "string", + "isStatic": true, + "isConst": true, + "docs": { + "summary": [ + { + "kind": "text", + "text": " Standard_D96pls_v6 — 96 vCPUs — 192 GB RAM — Premium SSD " } ] } @@ -11041,8 +11444,8 @@ ] }, { - "name": "StandardDSv4", - "fullName": "Aspire.Hosting.Azure.Kubernetes.AksNodeVmSizes.StandardDSv4", + "name": "StandardDPSv5", + "fullName": "Aspire.Hosting.Azure.Kubernetes.AksNodeVmSizes.StandardDPSv5", "namespace": "Aspire.Hosting.Azure.Kubernetes", "kind": "class", "accessibility": "public", @@ -11051,17 +11454,17 @@ "summary": [ { "kind": "text", - "text": " VM sizes in the standardDSv4Family. " + "text": " VM sizes in the standardDPSv5Family. " } ] }, "sourceFile": "src/Aspire.Hosting.Azure.Kubernetes/AksNodeVmSizes.cs", "members": [ { - "name": "StandardD16sV4", + "name": "StandardD16psV5", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardDSv4.StandardD16sV4", + "signature": "public const static string StandardDPSv5.StandardD16psV5", "returnType": "string", "isStatic": true, "isConst": true, @@ -11069,16 +11472,16 @@ "summary": [ { "kind": "text", - "text": " Standard_D16s_v4 — 16 vCPUs — 64 GB RAM — Premium SSD " + "text": " Standard_D16ps_v5 — 16 vCPUs — 64 GB RAM — Premium SSD " } ] } }, { - "name": "StandardD2sV4", + "name": "StandardD2psV5", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardDSv4.StandardD2sV4", + "signature": "public const static string StandardDPSv5.StandardD2psV5", "returnType": "string", "isStatic": true, "isConst": true, @@ -11086,16 +11489,16 @@ "summary": [ { "kind": "text", - "text": " Standard_D2s_v4 — 2 vCPUs — 8 GB RAM — Premium SSD " + "text": " Standard_D2ps_v5 — 2 vCPUs — 8 GB RAM — Premium SSD " } ] } }, { - "name": "StandardD32sV4", + "name": "StandardD32psV5", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardDSv4.StandardD32sV4", + "signature": "public const static string StandardDPSv5.StandardD32psV5", "returnType": "string", "isStatic": true, "isConst": true, @@ -11103,16 +11506,16 @@ "summary": [ { "kind": "text", - "text": " Standard_D32s_v4 — 32 vCPUs — 128 GB RAM — Premium SSD " + "text": " Standard_D32ps_v5 — 32 vCPUs — 128 GB RAM — Premium SSD " } ] } }, { - "name": "StandardD48sV4", + "name": "StandardD48psV5", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardDSv4.StandardD48sV4", + "signature": "public const static string StandardDPSv5.StandardD48psV5", "returnType": "string", "isStatic": true, "isConst": true, @@ -11120,16 +11523,16 @@ "summary": [ { "kind": "text", - "text": " Standard_D48s_v4 — 48 vCPUs — 192 GB RAM — Premium SSD " + "text": " Standard_D48ps_v5 — 48 vCPUs — 192 GB RAM — Premium SSD " } ] } }, { - "name": "StandardD4sV4", + "name": "StandardD4psV5", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardDSv4.StandardD4sV4", + "signature": "public const static string StandardDPSv5.StandardD4psV5", "returnType": "string", "isStatic": true, "isConst": true, @@ -11137,16 +11540,16 @@ "summary": [ { "kind": "text", - "text": " Standard_D4s_v4 — 4 vCPUs — 16 GB RAM — Premium SSD " + "text": " Standard_D4ps_v5 — 4 vCPUs — 16 GB RAM — Premium SSD " } ] } }, { - "name": "StandardD64sV4", + "name": "StandardD64psV5", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardDSv4.StandardD64sV4", + "signature": "public const static string StandardDPSv5.StandardD64psV5", "returnType": "string", "isStatic": true, "isConst": true, @@ -11154,16 +11557,16 @@ "summary": [ { "kind": "text", - "text": " Standard_D64s_v4 — 64 vCPUs — 256 GB RAM — Premium SSD " + "text": " Standard_D64ps_v5 — 64 vCPUs — 208 GB RAM — Premium SSD " } ] } }, { - "name": "StandardD8sV4", + "name": "StandardD8psV5", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardDSv4.StandardD8sV4", + "signature": "public const static string StandardDPSv5.StandardD8psV5", "returnType": "string", "isStatic": true, "isConst": true, @@ -11171,7 +11574,7 @@ "summary": [ { "kind": "text", - "text": " Standard_D8s_v4 — 8 vCPUs — 32 GB RAM — Premium SSD " + "text": " Standard_D8ps_v5 — 8 vCPUs — 32 GB RAM — Premium SSD " } ] } @@ -11179,8 +11582,8 @@ ] }, { - "name": "StandardDSv5", - "fullName": "Aspire.Hosting.Azure.Kubernetes.AksNodeVmSizes.StandardDSv5", + "name": "StandardDpsv6", + "fullName": "Aspire.Hosting.Azure.Kubernetes.AksNodeVmSizes.StandardDpsv6", "namespace": "Aspire.Hosting.Azure.Kubernetes", "kind": "class", "accessibility": "public", @@ -11189,17 +11592,17 @@ "summary": [ { "kind": "text", - "text": " VM sizes in the standardDSv5Family. " + "text": " VM sizes in the StandardDpsv6Family. " } ] }, "sourceFile": "src/Aspire.Hosting.Azure.Kubernetes/AksNodeVmSizes.cs", "members": [ { - "name": "StandardD16sV5", + "name": "StandardD16psV6", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardDSv5.StandardD16sV5", + "signature": "public const static string StandardDpsv6.StandardD16psV6", "returnType": "string", "isStatic": true, "isConst": true, @@ -11207,16 +11610,16 @@ "summary": [ { "kind": "text", - "text": " Standard_D16s_v5 — 16 vCPUs — 64 GB RAM — Premium SSD " + "text": " Standard_D16ps_v6 — 16 vCPUs — 64 GB RAM — Premium SSD " } ] } }, { - "name": "StandardD2sV5", + "name": "StandardD2psV6", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardDSv5.StandardD2sV5", + "signature": "public const static string StandardDpsv6.StandardD2psV6", "returnType": "string", "isStatic": true, "isConst": true, @@ -11224,16 +11627,16 @@ "summary": [ { "kind": "text", - "text": " Standard_D2s_v5 — 2 vCPUs — 8 GB RAM — Premium SSD " + "text": " Standard_D2ps_v6 — 2 vCPUs — 8 GB RAM — Premium SSD " } ] } }, { - "name": "StandardD32sV5", + "name": "StandardD32psV6", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardDSv5.StandardD32sV5", + "signature": "public const static string StandardDpsv6.StandardD32psV6", "returnType": "string", "isStatic": true, "isConst": true, @@ -11241,16 +11644,16 @@ "summary": [ { "kind": "text", - "text": " Standard_D32s_v5 — 32 vCPUs — 128 GB RAM — Premium SSD " + "text": " Standard_D32ps_v6 — 32 vCPUs — 128 GB RAM — Premium SSD " } ] } }, { - "name": "StandardD48sV5", + "name": "StandardD48psV6", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardDSv5.StandardD48sV5", + "signature": "public const static string StandardDpsv6.StandardD48psV6", "returnType": "string", "isStatic": true, "isConst": true, @@ -11258,16 +11661,16 @@ "summary": [ { "kind": "text", - "text": " Standard_D48s_v5 — 48 vCPUs — 192 GB RAM — Premium SSD " + "text": " Standard_D48ps_v6 — 48 vCPUs — 192 GB RAM — Premium SSD " } ] } }, { - "name": "StandardD4sV5", + "name": "StandardD4psV6", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardDSv5.StandardD4sV5", + "signature": "public const static string StandardDpsv6.StandardD4psV6", "returnType": "string", "isStatic": true, "isConst": true, @@ -11275,16 +11678,16 @@ "summary": [ { "kind": "text", - "text": " Standard_D4s_v5 — 4 vCPUs — 16 GB RAM — Premium SSD " + "text": " Standard_D4ps_v6 — 4 vCPUs — 16 GB RAM — Premium SSD " } ] } }, { - "name": "StandardD64sV5", + "name": "StandardD64psV6", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardDSv5.StandardD64sV5", + "signature": "public const static string StandardDpsv6.StandardD64psV6", "returnType": "string", "isStatic": true, "isConst": true, @@ -11292,16 +11695,16 @@ "summary": [ { "kind": "text", - "text": " Standard_D64s_v5 — 64 vCPUs — 256 GB RAM — Premium SSD " + "text": " Standard_D64ps_v6 — 64 vCPUs — 256 GB RAM — Premium SSD " } ] } }, { - "name": "StandardD8sV5", + "name": "StandardD8psV6", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardDSv5.StandardD8sV5", + "signature": "public const static string StandardDpsv6.StandardD8psV6", "returnType": "string", "isStatic": true, "isConst": true, @@ -11309,16 +11712,16 @@ "summary": [ { "kind": "text", - "text": " Standard_D8s_v5 — 8 vCPUs — 32 GB RAM — Premium SSD " + "text": " Standard_D8ps_v6 — 8 vCPUs — 32 GB RAM — Premium SSD " } ] } }, { - "name": "StandardD96sV5", + "name": "StandardD96psV6", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardDSv5.StandardD96sV5", + "signature": "public const static string StandardDpsv6.StandardD96psV6", "returnType": "string", "isStatic": true, "isConst": true, @@ -11326,7 +11729,7 @@ "summary": [ { "kind": "text", - "text": " Standard_D96s_v5 — 96 vCPUs — 384 GB RAM — Premium SSD " + "text": " Standard_D96ps_v6 — 96 vCPUs — 384 GB RAM — Premium SSD " } ] } @@ -11334,8 +11737,8 @@ ] }, { - "name": "StandardDsv6", - "fullName": "Aspire.Hosting.Azure.Kubernetes.AksNodeVmSizes.StandardDsv6", + "name": "StandardDS", + "fullName": "Aspire.Hosting.Azure.Kubernetes.AksNodeVmSizes.StandardDS", "namespace": "Aspire.Hosting.Azure.Kubernetes", "kind": "class", "accessibility": "public", @@ -11344,17 +11747,17 @@ "summary": [ { "kind": "text", - "text": " VM sizes in the StandardDsv6Family. " + "text": " VM sizes in the standardDSFamily. " } ] }, "sourceFile": "src/Aspire.Hosting.Azure.Kubernetes/AksNodeVmSizes.cs", "members": [ { - "name": "StandardD128sV6", + "name": "StandardDS11", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardDsv6.StandardD128sV6", + "signature": "public const static string StandardDS.StandardDS11", "returnType": "string", "isStatic": true, "isConst": true, @@ -11362,16 +11765,16 @@ "summary": [ { "kind": "text", - "text": " Standard_D128s_v6 — 128 vCPUs — 512 GB RAM — Premium SSD " + "text": " Standard_DS11 — 2 vCPUs — 14 GB RAM — Premium SSD " } ] } }, { - "name": "StandardD16sV6", + "name": "StandardDS12", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardDsv6.StandardD16sV6", + "signature": "public const static string StandardDS.StandardDS12", "returnType": "string", "isStatic": true, "isConst": true, @@ -11379,16 +11782,16 @@ "summary": [ { "kind": "text", - "text": " Standard_D16s_v6 — 16 vCPUs — 64 GB RAM — Premium SSD " + "text": " Standard_DS12 — 4 vCPUs — 28 GB RAM — Premium SSD " } ] } }, { - "name": "StandardD192sV6", + "name": "StandardDS13", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardDsv6.StandardD192sV6", + "signature": "public const static string StandardDS.StandardDS13", "returnType": "string", "isStatic": true, "isConst": true, @@ -11396,16 +11799,16 @@ "summary": [ { "kind": "text", - "text": " Standard_D192s_v6 — 192 vCPUs — 768 GB RAM — Premium SSD " + "text": " Standard_DS13 — 8 vCPUs — 56 GB RAM — Premium SSD " } ] } }, { - "name": "StandardD2sV6", + "name": "StandardDS14", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardDsv6.StandardD2sV6", + "signature": "public const static string StandardDS.StandardDS14", "returnType": "string", "isStatic": true, "isConst": true, @@ -11413,16 +11816,16 @@ "summary": [ { "kind": "text", - "text": " Standard_D2s_v6 — 2 vCPUs — 8 GB RAM — Premium SSD " + "text": " Standard_DS14 — 16 vCPUs — 112 GB RAM — Premium SSD " } ] } }, { - "name": "StandardD32sV6", + "name": "StandardDS2", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardDsv6.StandardD32sV6", + "signature": "public const static string StandardDS.StandardDS2", "returnType": "string", "isStatic": true, "isConst": true, @@ -11430,16 +11833,16 @@ "summary": [ { "kind": "text", - "text": " Standard_D32s_v6 — 32 vCPUs — 128 GB RAM — Premium SSD " + "text": " Standard_DS2 — 2 vCPUs — 7 GB RAM — Premium SSD " } ] } }, { - "name": "StandardD48sV6", + "name": "StandardDS3", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardDsv6.StandardD48sV6", + "signature": "public const static string StandardDS.StandardDS3", "returnType": "string", "isStatic": true, "isConst": true, @@ -11447,16 +11850,16 @@ "summary": [ { "kind": "text", - "text": " Standard_D48s_v6 — 48 vCPUs — 192 GB RAM — Premium SSD " + "text": " Standard_DS3 — 4 vCPUs — 14 GB RAM — Premium SSD " } ] } }, { - "name": "StandardD4sV6", + "name": "StandardDS4", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardDsv6.StandardD4sV6", + "signature": "public const static string StandardDS.StandardDS4", "returnType": "string", "isStatic": true, "isConst": true, @@ -11464,16 +11867,35 @@ "summary": [ { "kind": "text", - "text": " Standard_D4s_v6 — 4 vCPUs — 16 GB RAM — Premium SSD " + "text": " Standard_DS4 — 8 vCPUs — 28 GB RAM — Premium SSD " } ] } - }, + } + ] + }, + { + "name": "StandardDSv2", + "fullName": "Aspire.Hosting.Azure.Kubernetes.AksNodeVmSizes.StandardDSv2", + "namespace": "Aspire.Hosting.Azure.Kubernetes", + "kind": "class", + "accessibility": "public", + "isStatic": true, + "docs": { + "summary": [ + { + "kind": "text", + "text": " VM sizes in the standardDSv2Family. " + } + ] + }, + "sourceFile": "src/Aspire.Hosting.Azure.Kubernetes/AksNodeVmSizes.cs", + "members": [ { - "name": "StandardD64sV6", + "name": "StandardDS111V2", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardDsv6.StandardD64sV6", + "signature": "public const static string StandardDSv2.StandardDS111V2", "returnType": "string", "isStatic": true, "isConst": true, @@ -11481,16 +11903,16 @@ "summary": [ { "kind": "text", - "text": " Standard_D64s_v6 — 64 vCPUs — 256 GB RAM — Premium SSD " + "text": " Standard_DS11-1_v2 — 2 vCPUs — 14 GB RAM — Premium SSD " } ] } }, { - "name": "StandardD8sV6", + "name": "StandardDS11V2", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardDsv6.StandardD8sV6", + "signature": "public const static string StandardDSv2.StandardDS11V2", "returnType": "string", "isStatic": true, "isConst": true, @@ -11498,16 +11920,16 @@ "summary": [ { "kind": "text", - "text": " Standard_D8s_v6 — 8 vCPUs — 32 GB RAM — Premium SSD " + "text": " Standard_DS11_v2 — 2 vCPUs — 14 GB RAM — Premium SSD " } ] } }, { - "name": "StandardD96sV6", + "name": "StandardDS121V2", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardDsv6.StandardD96sV6", + "signature": "public const static string StandardDSv2.StandardDS121V2", "returnType": "string", "isStatic": true, "isConst": true, @@ -11515,35 +11937,16 @@ "summary": [ { "kind": "text", - "text": " Standard_D96s_v6 — 96 vCPUs — 384 GB RAM — Premium SSD " + "text": " Standard_DS12-1_v2 — 4 vCPUs — 28 GB RAM — Premium SSD " } ] } - } - ] - }, - { - "name": "StandardDv2", - "fullName": "Aspire.Hosting.Azure.Kubernetes.AksNodeVmSizes.StandardDv2", - "namespace": "Aspire.Hosting.Azure.Kubernetes", - "kind": "class", - "accessibility": "public", - "isStatic": true, - "docs": { - "summary": [ - { - "kind": "text", - "text": " VM sizes in the standardDv2Family. " - } - ] - }, - "sourceFile": "src/Aspire.Hosting.Azure.Kubernetes/AksNodeVmSizes.cs", - "members": [ + }, { - "name": "StandardD11V2", + "name": "StandardDS122V2", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardDv2.StandardD11V2", + "signature": "public const static string StandardDSv2.StandardDS122V2", "returnType": "string", "isStatic": true, "isConst": true, @@ -11551,16 +11954,16 @@ "summary": [ { "kind": "text", - "text": " Standard_D11_v2 — 2 vCPUs — 14 GB RAM " + "text": " Standard_DS12-2_v2 — 4 vCPUs — 28 GB RAM — Premium SSD " } ] } }, { - "name": "StandardD12V2", + "name": "StandardDS12V2", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardDv2.StandardD12V2", + "signature": "public const static string StandardDSv2.StandardDS12V2", "returnType": "string", "isStatic": true, "isConst": true, @@ -11568,16 +11971,16 @@ "summary": [ { "kind": "text", - "text": " Standard_D12_v2 — 4 vCPUs — 28 GB RAM " + "text": " Standard_DS12_v2 — 4 vCPUs — 28 GB RAM — Premium SSD " } ] } }, { - "name": "StandardD13V2", + "name": "StandardDS132V2", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardDv2.StandardD13V2", + "signature": "public const static string StandardDSv2.StandardDS132V2", "returnType": "string", "isStatic": true, "isConst": true, @@ -11585,16 +11988,16 @@ "summary": [ { "kind": "text", - "text": " Standard_D13_v2 — 8 vCPUs — 56 GB RAM " + "text": " Standard_DS13-2_v2 — 8 vCPUs — 56 GB RAM — Premium SSD " } ] } }, { - "name": "StandardD14V2", + "name": "StandardDS134V2", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardDv2.StandardD14V2", + "signature": "public const static string StandardDSv2.StandardDS134V2", "returnType": "string", "isStatic": true, "isConst": true, @@ -11602,16 +12005,16 @@ "summary": [ { "kind": "text", - "text": " Standard_D14_v2 — 16 vCPUs — 112 GB RAM " + "text": " Standard_DS13-4_v2 — 8 vCPUs — 56 GB RAM — Premium SSD " } ] } }, { - "name": "StandardD15V2", + "name": "StandardDS13V2", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardDv2.StandardD15V2", + "signature": "public const static string StandardDSv2.StandardDS13V2", "returnType": "string", "isStatic": true, "isConst": true, @@ -11619,16 +12022,16 @@ "summary": [ { "kind": "text", - "text": " Standard_D15_v2 — 20 vCPUs — 140 GB RAM " + "text": " Standard_DS13_v2 — 8 vCPUs — 56 GB RAM — Premium SSD " } ] } }, { - "name": "StandardD2V2", + "name": "StandardDS144V2", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardDv2.StandardD2V2", + "signature": "public const static string StandardDSv2.StandardDS144V2", "returnType": "string", "isStatic": true, "isConst": true, @@ -11636,16 +12039,16 @@ "summary": [ { "kind": "text", - "text": " Standard_D2_v2 — 2 vCPUs — 7 GB RAM " + "text": " Standard_DS14-4_v2 — 16 vCPUs — 112 GB RAM — Premium SSD " } ] } }, { - "name": "StandardD3V2", + "name": "StandardDS148V2", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardDv2.StandardD3V2", + "signature": "public const static string StandardDSv2.StandardDS148V2", "returnType": "string", "isStatic": true, "isConst": true, @@ -11653,16 +12056,16 @@ "summary": [ { "kind": "text", - "text": " Standard_D3_v2 — 4 vCPUs — 14 GB RAM " + "text": " Standard_DS14-8_v2 — 16 vCPUs — 112 GB RAM — Premium SSD " } ] } }, { - "name": "StandardD4V2", + "name": "StandardDS14V2", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardDv2.StandardD4V2", + "signature": "public const static string StandardDSv2.StandardDS14V2", "returnType": "string", "isStatic": true, "isConst": true, @@ -11670,16 +12073,16 @@ "summary": [ { "kind": "text", - "text": " Standard_D4_v2 — 8 vCPUs — 28 GB RAM " + "text": " Standard_DS14_v2 — 16 vCPUs — 112 GB RAM — Premium SSD " } ] } }, { - "name": "StandardD5V2", + "name": "StandardDS15V2", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardDv2.StandardD5V2", + "signature": "public const static string StandardDSv2.StandardDS15V2", "returnType": "string", "isStatic": true, "isConst": true, @@ -11687,7 +12090,75 @@ "summary": [ { "kind": "text", - "text": " Standard_D5_v2 — 16 vCPUs — 56 GB RAM " + "text": " Standard_DS15_v2 — 20 vCPUs — 140 GB RAM — Premium SSD " + } + ] + } + }, + { + "name": "StandardDS2V2", + "kind": "field", + "accessibility": "public", + "signature": "public const static string StandardDSv2.StandardDS2V2", + "returnType": "string", + "isStatic": true, + "isConst": true, + "docs": { + "summary": [ + { + "kind": "text", + "text": " Standard_DS2_v2 — 2 vCPUs — 7 GB RAM — Premium SSD " + } + ] + } + }, + { + "name": "StandardDS3V2", + "kind": "field", + "accessibility": "public", + "signature": "public const static string StandardDSv2.StandardDS3V2", + "returnType": "string", + "isStatic": true, + "isConst": true, + "docs": { + "summary": [ + { + "kind": "text", + "text": " Standard_DS3_v2 — 4 vCPUs — 14 GB RAM — Premium SSD " + } + ] + } + }, + { + "name": "StandardDS4V2", + "kind": "field", + "accessibility": "public", + "signature": "public const static string StandardDSv2.StandardDS4V2", + "returnType": "string", + "isStatic": true, + "isConst": true, + "docs": { + "summary": [ + { + "kind": "text", + "text": " Standard_DS4_v2 — 8 vCPUs — 28 GB RAM — Premium SSD " + } + ] + } + }, + { + "name": "StandardDS5V2", + "kind": "field", + "accessibility": "public", + "signature": "public const static string StandardDSv2.StandardDS5V2", + "returnType": "string", + "isStatic": true, + "isConst": true, + "docs": { + "summary": [ + { + "kind": "text", + "text": " Standard_DS5_v2 — 16 vCPUs — 56 GB RAM — Premium SSD " } ] } @@ -11695,8 +12166,8 @@ ] }, { - "name": "StandardDv2Promo", - "fullName": "Aspire.Hosting.Azure.Kubernetes.AksNodeVmSizes.StandardDv2Promo", + "name": "StandardDSv2Promo", + "fullName": "Aspire.Hosting.Azure.Kubernetes.AksNodeVmSizes.StandardDSv2Promo", "namespace": "Aspire.Hosting.Azure.Kubernetes", "kind": "class", "accessibility": "public", @@ -11705,17 +12176,17 @@ "summary": [ { "kind": "text", - "text": " VM sizes in the standardDv2PromoFamily. " + "text": " VM sizes in the standardDSv2PromoFamily. " } ] }, "sourceFile": "src/Aspire.Hosting.Azure.Kubernetes/AksNodeVmSizes.cs", "members": [ { - "name": "StandardD11V2Promo", + "name": "StandardDS11V2Promo", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardDv2Promo.StandardD11V2Promo", + "signature": "public const static string StandardDSv2Promo.StandardDS11V2Promo", "returnType": "string", "isStatic": true, "isConst": true, @@ -11723,16 +12194,16 @@ "summary": [ { "kind": "text", - "text": " Standard_D11_v2_Promo — 2 vCPUs — 14 GB RAM " + "text": " Standard_DS11_v2_Promo — 2 vCPUs — 14 GB RAM — Premium SSD " } ] } }, { - "name": "StandardD12V2Promo", + "name": "StandardDS12V2Promo", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardDv2Promo.StandardD12V2Promo", + "signature": "public const static string StandardDSv2Promo.StandardDS12V2Promo", "returnType": "string", "isStatic": true, "isConst": true, @@ -11740,16 +12211,16 @@ "summary": [ { "kind": "text", - "text": " Standard_D12_v2_Promo — 4 vCPUs — 28 GB RAM " + "text": " Standard_DS12_v2_Promo — 4 vCPUs — 28 GB RAM — Premium SSD " } ] } }, { - "name": "StandardD13V2Promo", + "name": "StandardDS13V2Promo", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardDv2Promo.StandardD13V2Promo", + "signature": "public const static string StandardDSv2Promo.StandardDS13V2Promo", "returnType": "string", "isStatic": true, "isConst": true, @@ -11757,16 +12228,16 @@ "summary": [ { "kind": "text", - "text": " Standard_D13_v2_Promo — 8 vCPUs — 56 GB RAM " + "text": " Standard_DS13_v2_Promo — 8 vCPUs — 56 GB RAM — Premium SSD " } ] } }, { - "name": "StandardD14V2Promo", + "name": "StandardDS14V2Promo", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardDv2Promo.StandardD14V2Promo", + "signature": "public const static string StandardDSv2Promo.StandardDS14V2Promo", "returnType": "string", "isStatic": true, "isConst": true, @@ -11774,16 +12245,16 @@ "summary": [ { "kind": "text", - "text": " Standard_D14_v2_Promo — 16 vCPUs — 112 GB RAM " + "text": " Standard_DS14_v2_Promo — 16 vCPUs — 112 GB RAM — Premium SSD " } ] } }, { - "name": "StandardD2V2Promo", + "name": "StandardDS2V2Promo", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardDv2Promo.StandardD2V2Promo", + "signature": "public const static string StandardDSv2Promo.StandardDS2V2Promo", "returnType": "string", "isStatic": true, "isConst": true, @@ -11791,16 +12262,16 @@ "summary": [ { "kind": "text", - "text": " Standard_D2_v2_Promo — 2 vCPUs — 7 GB RAM " + "text": " Standard_DS2_v2_Promo — 2 vCPUs — 7 GB RAM — Premium SSD " } ] } }, { - "name": "StandardD3V2Promo", + "name": "StandardDS3V2Promo", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardDv2Promo.StandardD3V2Promo", + "signature": "public const static string StandardDSv2Promo.StandardDS3V2Promo", "returnType": "string", "isStatic": true, "isConst": true, @@ -11808,16 +12279,16 @@ "summary": [ { "kind": "text", - "text": " Standard_D3_v2_Promo — 4 vCPUs — 14 GB RAM " + "text": " Standard_DS3_v2_Promo — 4 vCPUs — 14 GB RAM — Premium SSD " } ] } }, { - "name": "StandardD4V2Promo", + "name": "StandardDS4V2Promo", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardDv2Promo.StandardD4V2Promo", + "signature": "public const static string StandardDSv2Promo.StandardDS4V2Promo", "returnType": "string", "isStatic": true, "isConst": true, @@ -11825,16 +12296,16 @@ "summary": [ { "kind": "text", - "text": " Standard_D4_v2_Promo — 8 vCPUs — 28 GB RAM " + "text": " Standard_DS4_v2_Promo — 8 vCPUs — 28 GB RAM — Premium SSD " } ] } }, { - "name": "StandardD5V2Promo", + "name": "StandardDS5V2Promo", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardDv2Promo.StandardD5V2Promo", + "signature": "public const static string StandardDSv2Promo.StandardDS5V2Promo", "returnType": "string", "isStatic": true, "isConst": true, @@ -11842,7 +12313,7 @@ "summary": [ { "kind": "text", - "text": " Standard_D5_v2_Promo — 16 vCPUs — 56 GB RAM " + "text": " Standard_DS5_v2_Promo — 16 vCPUs — 56 GB RAM — Premium SSD " } ] } @@ -11850,8 +12321,8 @@ ] }, { - "name": "StandardDv3", - "fullName": "Aspire.Hosting.Azure.Kubernetes.AksNodeVmSizes.StandardDv3", + "name": "StandardDSv3", + "fullName": "Aspire.Hosting.Azure.Kubernetes.AksNodeVmSizes.StandardDSv3", "namespace": "Aspire.Hosting.Azure.Kubernetes", "kind": "class", "accessibility": "public", @@ -11860,17 +12331,17 @@ "summary": [ { "kind": "text", - "text": " VM sizes in the standardDv3Family. " + "text": " VM sizes in the standardDSv3Family. " } ] }, "sourceFile": "src/Aspire.Hosting.Azure.Kubernetes/AksNodeVmSizes.cs", "members": [ { - "name": "StandardD16V3", + "name": "StandardD16sV3", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardDv3.StandardD16V3", + "signature": "public const static string StandardDSv3.StandardD16sV3", "returnType": "string", "isStatic": true, "isConst": true, @@ -11878,16 +12349,16 @@ "summary": [ { "kind": "text", - "text": " Standard_D16_v3 — 16 vCPUs — 64 GB RAM " + "text": " Standard_D16s_v3 — 16 vCPUs — 64 GB RAM — Premium SSD " } ] } }, { - "name": "StandardD2V3", + "name": "StandardD2sV3", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardDv3.StandardD2V3", + "signature": "public const static string StandardDSv3.StandardD2sV3", "returnType": "string", "isStatic": true, "isConst": true, @@ -11895,16 +12366,16 @@ "summary": [ { "kind": "text", - "text": " Standard_D2_v3 — 2 vCPUs — 8 GB RAM " + "text": " Standard_D2s_v3 — 2 vCPUs — 8 GB RAM — Premium SSD " } ] } }, { - "name": "StandardD32V3", + "name": "StandardD32sV3", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardDv3.StandardD32V3", + "signature": "public const static string StandardDSv3.StandardD32sV3", "returnType": "string", "isStatic": true, "isConst": true, @@ -11912,16 +12383,16 @@ "summary": [ { "kind": "text", - "text": " Standard_D32_v3 — 32 vCPUs — 128 GB RAM " + "text": " Standard_D32s_v3 — 32 vCPUs — 128 GB RAM — Premium SSD " } ] } }, { - "name": "StandardD48V3", + "name": "StandardD48sV3", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardDv3.StandardD48V3", + "signature": "public const static string StandardDSv3.StandardD48sV3", "returnType": "string", "isStatic": true, "isConst": true, @@ -11929,16 +12400,16 @@ "summary": [ { "kind": "text", - "text": " Standard_D48_v3 — 48 vCPUs — 192 GB RAM " + "text": " Standard_D48s_v3 — 48 vCPUs — 192 GB RAM — Premium SSD " } ] } }, { - "name": "StandardD4V3", + "name": "StandardD4sV3", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardDv3.StandardD4V3", + "signature": "public const static string StandardDSv3.StandardD4sV3", "returnType": "string", "isStatic": true, "isConst": true, @@ -11946,16 +12417,16 @@ "summary": [ { "kind": "text", - "text": " Standard_D4_v3 — 4 vCPUs — 16 GB RAM " + "text": " Standard_D4s_v3 — 4 vCPUs — 16 GB RAM — Premium SSD " } ] } }, { - "name": "StandardD64V3", + "name": "StandardD64sV3", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardDv3.StandardD64V3", + "signature": "public const static string StandardDSv3.StandardD64sV3", "returnType": "string", "isStatic": true, "isConst": true, @@ -11963,16 +12434,16 @@ "summary": [ { "kind": "text", - "text": " Standard_D64_v3 — 64 vCPUs — 256 GB RAM " + "text": " Standard_D64s_v3 — 64 vCPUs — 256 GB RAM — Premium SSD " } ] } }, { - "name": "StandardD8V3", + "name": "StandardD8sV3", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardDv3.StandardD8V3", + "signature": "public const static string StandardDSv3.StandardD8sV3", "returnType": "string", "isStatic": true, "isConst": true, @@ -11980,7 +12451,7 @@ "summary": [ { "kind": "text", - "text": " Standard_D8_v3 — 8 vCPUs — 32 GB RAM " + "text": " Standard_D8s_v3 — 8 vCPUs — 32 GB RAM — Premium SSD " } ] } @@ -11988,8 +12459,8 @@ ] }, { - "name": "StandardDv4", - "fullName": "Aspire.Hosting.Azure.Kubernetes.AksNodeVmSizes.StandardDv4", + "name": "StandardDSv4", + "fullName": "Aspire.Hosting.Azure.Kubernetes.AksNodeVmSizes.StandardDSv4", "namespace": "Aspire.Hosting.Azure.Kubernetes", "kind": "class", "accessibility": "public", @@ -11998,17 +12469,17 @@ "summary": [ { "kind": "text", - "text": " VM sizes in the standardDv4Family. " + "text": " VM sizes in the standardDSv4Family. " } ] }, "sourceFile": "src/Aspire.Hosting.Azure.Kubernetes/AksNodeVmSizes.cs", "members": [ { - "name": "StandardD16V4", + "name": "StandardD16sV4", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardDv4.StandardD16V4", + "signature": "public const static string StandardDSv4.StandardD16sV4", "returnType": "string", "isStatic": true, "isConst": true, @@ -12016,16 +12487,16 @@ "summary": [ { "kind": "text", - "text": " Standard_D16_v4 — 16 vCPUs — 64 GB RAM " + "text": " Standard_D16s_v4 — 16 vCPUs — 64 GB RAM — Premium SSD " } ] } }, { - "name": "StandardD2V4", + "name": "StandardD2sV4", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardDv4.StandardD2V4", + "signature": "public const static string StandardDSv4.StandardD2sV4", "returnType": "string", "isStatic": true, "isConst": true, @@ -12033,16 +12504,16 @@ "summary": [ { "kind": "text", - "text": " Standard_D2_v4 — 2 vCPUs — 8 GB RAM " + "text": " Standard_D2s_v4 — 2 vCPUs — 8 GB RAM — Premium SSD " } ] } }, { - "name": "StandardD32V4", + "name": "StandardD32sV4", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardDv4.StandardD32V4", + "signature": "public const static string StandardDSv4.StandardD32sV4", "returnType": "string", "isStatic": true, "isConst": true, @@ -12050,16 +12521,16 @@ "summary": [ { "kind": "text", - "text": " Standard_D32_v4 — 32 vCPUs — 128 GB RAM " + "text": " Standard_D32s_v4 — 32 vCPUs — 128 GB RAM — Premium SSD " } ] } }, { - "name": "StandardD48V4", + "name": "StandardD48sV4", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardDv4.StandardD48V4", + "signature": "public const static string StandardDSv4.StandardD48sV4", "returnType": "string", "isStatic": true, "isConst": true, @@ -12067,16 +12538,16 @@ "summary": [ { "kind": "text", - "text": " Standard_D48_v4 — 48 vCPUs — 192 GB RAM " + "text": " Standard_D48s_v4 — 48 vCPUs — 192 GB RAM — Premium SSD " } ] } }, { - "name": "StandardD4V4", + "name": "StandardD4sV4", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardDv4.StandardD4V4", + "signature": "public const static string StandardDSv4.StandardD4sV4", "returnType": "string", "isStatic": true, "isConst": true, @@ -12084,16 +12555,16 @@ "summary": [ { "kind": "text", - "text": " Standard_D4_v4 — 4 vCPUs — 16 GB RAM " + "text": " Standard_D4s_v4 — 4 vCPUs — 16 GB RAM — Premium SSD " } ] } }, { - "name": "StandardD64V4", + "name": "StandardD64sV4", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardDv4.StandardD64V4", + "signature": "public const static string StandardDSv4.StandardD64sV4", "returnType": "string", "isStatic": true, "isConst": true, @@ -12101,16 +12572,16 @@ "summary": [ { "kind": "text", - "text": " Standard_D64_v4 — 64 vCPUs — 256 GB RAM " + "text": " Standard_D64s_v4 — 64 vCPUs — 256 GB RAM — Premium SSD " } ] } }, { - "name": "StandardD8V4", + "name": "StandardD8sV4", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardDv4.StandardD8V4", + "signature": "public const static string StandardDSv4.StandardD8sV4", "returnType": "string", "isStatic": true, "isConst": true, @@ -12118,7 +12589,7 @@ "summary": [ { "kind": "text", - "text": " Standard_D8_v4 — 8 vCPUs — 32 GB RAM " + "text": " Standard_D8s_v4 — 8 vCPUs — 32 GB RAM — Premium SSD " } ] } @@ -12126,8 +12597,8 @@ ] }, { - "name": "StandardDv5", - "fullName": "Aspire.Hosting.Azure.Kubernetes.AksNodeVmSizes.StandardDv5", + "name": "StandardDSv5", + "fullName": "Aspire.Hosting.Azure.Kubernetes.AksNodeVmSizes.StandardDSv5", "namespace": "Aspire.Hosting.Azure.Kubernetes", "kind": "class", "accessibility": "public", @@ -12136,17 +12607,17 @@ "summary": [ { "kind": "text", - "text": " VM sizes in the standardDv5Family. " + "text": " VM sizes in the standardDSv5Family. " } ] }, "sourceFile": "src/Aspire.Hosting.Azure.Kubernetes/AksNodeVmSizes.cs", "members": [ { - "name": "StandardD16V5", + "name": "StandardD16sV5", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardDv5.StandardD16V5", + "signature": "public const static string StandardDSv5.StandardD16sV5", "returnType": "string", "isStatic": true, "isConst": true, @@ -12154,16 +12625,16 @@ "summary": [ { "kind": "text", - "text": " Standard_D16_v5 — 16 vCPUs — 64 GB RAM " + "text": " Standard_D16s_v5 — 16 vCPUs — 64 GB RAM — Premium SSD " } ] } }, { - "name": "StandardD2V5", + "name": "StandardD2sV5", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardDv5.StandardD2V5", + "signature": "public const static string StandardDSv5.StandardD2sV5", "returnType": "string", "isStatic": true, "isConst": true, @@ -12171,16 +12642,16 @@ "summary": [ { "kind": "text", - "text": " Standard_D2_v5 — 2 vCPUs — 8 GB RAM " + "text": " Standard_D2s_v5 — 2 vCPUs — 8 GB RAM — Premium SSD " } ] } }, { - "name": "StandardD32V5", + "name": "StandardD32sV5", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardDv5.StandardD32V5", + "signature": "public const static string StandardDSv5.StandardD32sV5", "returnType": "string", "isStatic": true, "isConst": true, @@ -12188,16 +12659,16 @@ "summary": [ { "kind": "text", - "text": " Standard_D32_v5 — 32 vCPUs — 128 GB RAM " + "text": " Standard_D32s_v5 — 32 vCPUs — 128 GB RAM — Premium SSD " } ] } }, { - "name": "StandardD48V5", + "name": "StandardD48sV5", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardDv5.StandardD48V5", + "signature": "public const static string StandardDSv5.StandardD48sV5", "returnType": "string", "isStatic": true, "isConst": true, @@ -12205,16 +12676,16 @@ "summary": [ { "kind": "text", - "text": " Standard_D48_v5 — 48 vCPUs — 192 GB RAM " + "text": " Standard_D48s_v5 — 48 vCPUs — 192 GB RAM — Premium SSD " } ] } }, { - "name": "StandardD4V5", + "name": "StandardD4sV5", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardDv5.StandardD4V5", + "signature": "public const static string StandardDSv5.StandardD4sV5", "returnType": "string", "isStatic": true, "isConst": true, @@ -12222,16 +12693,16 @@ "summary": [ { "kind": "text", - "text": " Standard_D4_v5 — 4 vCPUs — 16 GB RAM " + "text": " Standard_D4s_v5 — 4 vCPUs — 16 GB RAM — Premium SSD " } ] } }, { - "name": "StandardD64V5", + "name": "StandardD64sV5", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardDv5.StandardD64V5", + "signature": "public const static string StandardDSv5.StandardD64sV5", "returnType": "string", "isStatic": true, "isConst": true, @@ -12239,16 +12710,16 @@ "summary": [ { "kind": "text", - "text": " Standard_D64_v5 — 64 vCPUs — 256 GB RAM " + "text": " Standard_D64s_v5 — 64 vCPUs — 256 GB RAM — Premium SSD " } ] } }, { - "name": "StandardD8V5", + "name": "StandardD8sV5", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardDv5.StandardD8V5", + "signature": "public const static string StandardDSv5.StandardD8sV5", "returnType": "string", "isStatic": true, "isConst": true, @@ -12256,16 +12727,16 @@ "summary": [ { "kind": "text", - "text": " Standard_D8_v5 — 8 vCPUs — 32 GB RAM " + "text": " Standard_D8s_v5 — 8 vCPUs — 32 GB RAM — Premium SSD " } ] } }, { - "name": "StandardD96V5", + "name": "StandardD96sV5", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardDv5.StandardD96V5", + "signature": "public const static string StandardDSv5.StandardD96sV5", "returnType": "string", "isStatic": true, "isConst": true, @@ -12273,7 +12744,7 @@ "summary": [ { "kind": "text", - "text": " Standard_D96_v5 — 96 vCPUs — 384 GB RAM " + "text": " Standard_D96s_v5 — 96 vCPUs — 384 GB RAM — Premium SSD " } ] } @@ -12281,8 +12752,8 @@ ] }, { - "name": "StandardEADSv5", - "fullName": "Aspire.Hosting.Azure.Kubernetes.AksNodeVmSizes.StandardEADSv5", + "name": "StandardDsv6", + "fullName": "Aspire.Hosting.Azure.Kubernetes.AksNodeVmSizes.StandardDsv6", "namespace": "Aspire.Hosting.Azure.Kubernetes", "kind": "class", "accessibility": "public", @@ -12291,17 +12762,17 @@ "summary": [ { "kind": "text", - "text": " VM sizes in the standardEADSv5Family. " + "text": " VM sizes in the StandardDsv6Family. " } ] }, "sourceFile": "src/Aspire.Hosting.Azure.Kubernetes/AksNodeVmSizes.cs", "members": [ { - "name": "StandardE164adsV5", + "name": "StandardD128sV6", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardEADSv5.StandardE164adsV5", + "signature": "public const static string StandardDsv6.StandardD128sV6", "returnType": "string", "isStatic": true, "isConst": true, @@ -12309,16 +12780,16 @@ "summary": [ { "kind": "text", - "text": " Standard_E16-4ads_v5 — 16 vCPUs — 128 GB RAM — Premium SSD " + "text": " Standard_D128s_v6 — 128 vCPUs — 512 GB RAM — Premium SSD " } ] } }, { - "name": "StandardE168adsV5", + "name": "StandardD16sV6", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardEADSv5.StandardE168adsV5", + "signature": "public const static string StandardDsv6.StandardD16sV6", "returnType": "string", "isStatic": true, "isConst": true, @@ -12326,16 +12797,16 @@ "summary": [ { "kind": "text", - "text": " Standard_E16-8ads_v5 — 16 vCPUs — 128 GB RAM — Premium SSD " + "text": " Standard_D16s_v6 — 16 vCPUs — 64 GB RAM — Premium SSD " } ] } }, { - "name": "StandardE16adsV5", + "name": "StandardD192sV6", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardEADSv5.StandardE16adsV5", + "signature": "public const static string StandardDsv6.StandardD192sV6", "returnType": "string", "isStatic": true, "isConst": true, @@ -12343,16 +12814,16 @@ "summary": [ { "kind": "text", - "text": " Standard_E16ads_v5 — 16 vCPUs — 128 GB RAM — Premium SSD " + "text": " Standard_D192s_v6 — 192 vCPUs — 768 GB RAM — Premium SSD " } ] } }, { - "name": "StandardE20adsV5", + "name": "StandardD2sV6", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardEADSv5.StandardE20adsV5", + "signature": "public const static string StandardDsv6.StandardD2sV6", "returnType": "string", "isStatic": true, "isConst": true, @@ -12360,16 +12831,16 @@ "summary": [ { "kind": "text", - "text": " Standard_E20ads_v5 — 20 vCPUs — 160 GB RAM — Premium SSD " + "text": " Standard_D2s_v6 — 2 vCPUs — 8 GB RAM — Premium SSD " } ] } }, { - "name": "StandardE2adsV5", + "name": "StandardD32sV6", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardEADSv5.StandardE2adsV5", + "signature": "public const static string StandardDsv6.StandardD32sV6", "returnType": "string", "isStatic": true, "isConst": true, @@ -12377,16 +12848,16 @@ "summary": [ { "kind": "text", - "text": " Standard_E2ads_v5 — 2 vCPUs — 16 GB RAM — Premium SSD " + "text": " Standard_D32s_v6 — 32 vCPUs — 128 GB RAM — Premium SSD " } ] } }, { - "name": "StandardE3216adsV5", + "name": "StandardD48sV6", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardEADSv5.StandardE3216adsV5", + "signature": "public const static string StandardDsv6.StandardD48sV6", "returnType": "string", "isStatic": true, "isConst": true, @@ -12394,16 +12865,16 @@ "summary": [ { "kind": "text", - "text": " Standard_E32-16ads_v5 — 32 vCPUs — 256 GB RAM — Premium SSD " + "text": " Standard_D48s_v6 — 48 vCPUs — 192 GB RAM — Premium SSD " } ] } }, { - "name": "StandardE328adsV5", + "name": "StandardD4sV6", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardEADSv5.StandardE328adsV5", + "signature": "public const static string StandardDsv6.StandardD4sV6", "returnType": "string", "isStatic": true, "isConst": true, @@ -12411,16 +12882,16 @@ "summary": [ { "kind": "text", - "text": " Standard_E32-8ads_v5 — 32 vCPUs — 256 GB RAM — Premium SSD " + "text": " Standard_D4s_v6 — 4 vCPUs — 16 GB RAM — Premium SSD " } ] } }, { - "name": "StandardE32adsV5", + "name": "StandardD64sV6", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardEADSv5.StandardE32adsV5", + "signature": "public const static string StandardDsv6.StandardD64sV6", "returnType": "string", "isStatic": true, "isConst": true, @@ -12428,16 +12899,16 @@ "summary": [ { "kind": "text", - "text": " Standard_E32ads_v5 — 32 vCPUs — 256 GB RAM — Premium SSD " + "text": " Standard_D64s_v6 — 64 vCPUs — 256 GB RAM — Premium SSD " } ] } }, { - "name": "StandardE42adsV5", + "name": "StandardD8sV6", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardEADSv5.StandardE42adsV5", + "signature": "public const static string StandardDsv6.StandardD8sV6", "returnType": "string", "isStatic": true, "isConst": true, @@ -12445,16 +12916,16 @@ "summary": [ { "kind": "text", - "text": " Standard_E4-2ads_v5 — 4 vCPUs — 32 GB RAM — Premium SSD " + "text": " Standard_D8s_v6 — 8 vCPUs — 32 GB RAM — Premium SSD " } ] } }, { - "name": "StandardE48adsV5", + "name": "StandardD96sV6", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardEADSv5.StandardE48adsV5", + "signature": "public const static string StandardDsv6.StandardD96sV6", "returnType": "string", "isStatic": true, "isConst": true, @@ -12462,16 +12933,35 @@ "summary": [ { "kind": "text", - "text": " Standard_E48ads_v5 — 48 vCPUs — 384 GB RAM — Premium SSD " + "text": " Standard_D96s_v6 — 96 vCPUs — 384 GB RAM — Premium SSD " } ] } - }, + } + ] + }, + { + "name": "StandardDsv7", + "fullName": "Aspire.Hosting.Azure.Kubernetes.AksNodeVmSizes.StandardDsv7", + "namespace": "Aspire.Hosting.Azure.Kubernetes", + "kind": "class", + "accessibility": "public", + "isStatic": true, + "docs": { + "summary": [ + { + "kind": "text", + "text": " VM sizes in the StandardDsv7Family. " + } + ] + }, + "sourceFile": "src/Aspire.Hosting.Azure.Kubernetes/AksNodeVmSizes.cs", + "members": [ { - "name": "StandardE4adsV5", + "name": "StandardD128sV7", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardEADSv5.StandardE4adsV5", + "signature": "public const static string StandardDsv7.StandardD128sV7", "returnType": "string", "isStatic": true, "isConst": true, @@ -12479,16 +12969,16 @@ "summary": [ { "kind": "text", - "text": " Standard_E4ads_v5 — 4 vCPUs — 32 GB RAM — Premium SSD " + "text": " Standard_D128s_v7 — 128 vCPUs — 512 GB RAM — Premium SSD " } ] } }, { - "name": "StandardE6416adsV5", + "name": "StandardD16sV7", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardEADSv5.StandardE6416adsV5", + "signature": "public const static string StandardDsv7.StandardD16sV7", "returnType": "string", "isStatic": true, "isConst": true, @@ -12496,16 +12986,16 @@ "summary": [ { "kind": "text", - "text": " Standard_E64-16ads_v5 — 64 vCPUs — 512 GB RAM — Premium SSD " + "text": " Standard_D16s_v7 — 16 vCPUs — 64 GB RAM — Premium SSD " } ] } }, { - "name": "StandardE6432adsV5", + "name": "StandardD192sV7", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardEADSv5.StandardE6432adsV5", + "signature": "public const static string StandardDsv7.StandardD192sV7", "returnType": "string", "isStatic": true, "isConst": true, @@ -12513,16 +13003,16 @@ "summary": [ { "kind": "text", - "text": " Standard_E64-32ads_v5 — 64 vCPUs — 512 GB RAM — Premium SSD " + "text": " Standard_D192s_v7 — 192 vCPUs — 768 GB RAM — Premium SSD " } ] } }, { - "name": "StandardE64adsV5", + "name": "StandardD2sV7", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardEADSv5.StandardE64adsV5", + "signature": "public const static string StandardDsv7.StandardD2sV7", "returnType": "string", "isStatic": true, "isConst": true, @@ -12530,16 +13020,16 @@ "summary": [ { "kind": "text", - "text": " Standard_E64ads_v5 — 64 vCPUs — 512 GB RAM — Premium SSD " + "text": " Standard_D2s_v7 — 2 vCPUs — 8 GB RAM — Premium SSD " } ] } }, { - "name": "StandardE82adsV5", + "name": "StandardD32sV7", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardEADSv5.StandardE82adsV5", + "signature": "public const static string StandardDsv7.StandardD32sV7", "returnType": "string", "isStatic": true, "isConst": true, @@ -12547,16 +13037,16 @@ "summary": [ { "kind": "text", - "text": " Standard_E8-2ads_v5 — 8 vCPUs — 64 GB RAM — Premium SSD " + "text": " Standard_D32s_v7 — 32 vCPUs — 128 GB RAM — Premium SSD " } ] } }, { - "name": "StandardE84adsV5", + "name": "StandardD48sV7", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardEADSv5.StandardE84adsV5", + "signature": "public const static string StandardDsv7.StandardD48sV7", "returnType": "string", "isStatic": true, "isConst": true, @@ -12564,16 +13054,16 @@ "summary": [ { "kind": "text", - "text": " Standard_E8-4ads_v5 — 8 vCPUs — 64 GB RAM — Premium SSD " + "text": " Standard_D48s_v7 — 48 vCPUs — 192 GB RAM — Premium SSD " } ] } }, { - "name": "StandardE8adsV5", + "name": "StandardD4sV7", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardEADSv5.StandardE8adsV5", + "signature": "public const static string StandardDsv7.StandardD4sV7", "returnType": "string", "isStatic": true, "isConst": true, @@ -12581,16 +13071,16 @@ "summary": [ { "kind": "text", - "text": " Standard_E8ads_v5 — 8 vCPUs — 64 GB RAM — Premium SSD " + "text": " Standard_D4s_v7 — 4 vCPUs — 16 GB RAM — Premium SSD " } ] } }, { - "name": "StandardE9624adsV5", + "name": "StandardD64sV7", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardEADSv5.StandardE9624adsV5", + "signature": "public const static string StandardDsv7.StandardD64sV7", "returnType": "string", "isStatic": true, "isConst": true, @@ -12598,16 +13088,16 @@ "summary": [ { "kind": "text", - "text": " Standard_E96-24ads_v5 — 96 vCPUs — 672 GB RAM — Premium SSD " + "text": " Standard_D64s_v7 — 64 vCPUs — 256 GB RAM — Premium SSD " } ] } }, { - "name": "StandardE9648adsV5", + "name": "StandardD8sV7", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardEADSv5.StandardE9648adsV5", + "signature": "public const static string StandardDsv7.StandardD8sV7", "returnType": "string", "isStatic": true, "isConst": true, @@ -12615,16 +13105,16 @@ "summary": [ { "kind": "text", - "text": " Standard_E96-48ads_v5 — 96 vCPUs — 672 GB RAM — Premium SSD " + "text": " Standard_D8s_v7 — 8 vCPUs — 32 GB RAM — Premium SSD " } ] } }, { - "name": "StandardE96adsV5", + "name": "StandardD96sV7", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardEADSv5.StandardE96adsV5", + "signature": "public const static string StandardDsv7.StandardD96sV7", "returnType": "string", "isStatic": true, "isConst": true, @@ -12632,7 +13122,7 @@ "summary": [ { "kind": "text", - "text": " Standard_E96ads_v5 — 96 vCPUs — 672 GB RAM — Premium SSD " + "text": " Standard_D96s_v7 — 96 vCPUs — 384 GB RAM — Premium SSD " } ] } @@ -12640,8 +13130,8 @@ ] }, { - "name": "StandardEadsv7", - "fullName": "Aspire.Hosting.Azure.Kubernetes.AksNodeVmSizes.StandardEadsv7", + "name": "StandardDv2", + "fullName": "Aspire.Hosting.Azure.Kubernetes.AksNodeVmSizes.StandardDv2", "namespace": "Aspire.Hosting.Azure.Kubernetes", "kind": "class", "accessibility": "public", @@ -12650,34 +13140,17 @@ "summary": [ { "kind": "text", - "text": " VM sizes in the StandardEadsv7Family. " + "text": " VM sizes in the standardDv2Family. " } ] }, "sourceFile": "src/Aspire.Hosting.Azure.Kubernetes/AksNodeVmSizes.cs", "members": [ { - "name": "StandardE12832adsV7", - "kind": "field", - "accessibility": "public", - "signature": "public const static string StandardEadsv7.StandardE12832adsV7", - "returnType": "string", - "isStatic": true, - "isConst": true, - "docs": { - "summary": [ - { - "kind": "text", - "text": " Standard_E128-32ads_v7 — 128 vCPUs — 1024 GB RAM — Premium SSD " - } - ] - } - }, - { - "name": "StandardE12864adsV7", + "name": "StandardD11V2", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardEadsv7.StandardE12864adsV7", + "signature": "public const static string StandardDv2.StandardD11V2", "returnType": "string", "isStatic": true, "isConst": true, @@ -12685,16 +13158,16 @@ "summary": [ { "kind": "text", - "text": " Standard_E128-64ads_v7 — 128 vCPUs — 1024 GB RAM — Premium SSD " + "text": " Standard_D11_v2 — 2 vCPUs — 14 GB RAM " } ] } }, { - "name": "StandardE128adsV7", + "name": "StandardD12V2", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardEadsv7.StandardE128adsV7", + "signature": "public const static string StandardDv2.StandardD12V2", "returnType": "string", "isStatic": true, "isConst": true, @@ -12702,16 +13175,16 @@ "summary": [ { "kind": "text", - "text": " Standard_E128ads_v7 — 128 vCPUs — 1024 GB RAM — Premium SSD " + "text": " Standard_D12_v2 — 4 vCPUs — 28 GB RAM " } ] } }, { - "name": "StandardE160adsV7", + "name": "StandardD13V2", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardEadsv7.StandardE160adsV7", + "signature": "public const static string StandardDv2.StandardD13V2", "returnType": "string", "isStatic": true, "isConst": true, @@ -12719,16 +13192,16 @@ "summary": [ { "kind": "text", - "text": " Standard_E160ads_v7 — 160 vCPUs — 1280 GB RAM — Premium SSD " + "text": " Standard_D13_v2 — 8 vCPUs — 56 GB RAM " } ] } }, { - "name": "StandardE164adsV7", + "name": "StandardD14V2", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardEadsv7.StandardE164adsV7", + "signature": "public const static string StandardDv2.StandardD14V2", "returnType": "string", "isStatic": true, "isConst": true, @@ -12736,16 +13209,16 @@ "summary": [ { "kind": "text", - "text": " Standard_E16-4ads_v7 — 16 vCPUs — 128 GB RAM — Premium SSD " + "text": " Standard_D14_v2 — 16 vCPUs — 112 GB RAM " } ] } }, { - "name": "StandardE168adsV7", + "name": "StandardD15V2", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardEadsv7.StandardE168adsV7", + "signature": "public const static string StandardDv2.StandardD15V2", "returnType": "string", "isStatic": true, "isConst": true, @@ -12753,16 +13226,16 @@ "summary": [ { "kind": "text", - "text": " Standard_E16-8ads_v7 — 16 vCPUs — 128 GB RAM — Premium SSD " + "text": " Standard_D15_v2 — 20 vCPUs — 140 GB RAM " } ] } }, { - "name": "StandardE16adsV7", + "name": "StandardD2V2", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardEadsv7.StandardE16adsV7", + "signature": "public const static string StandardDv2.StandardD2V2", "returnType": "string", "isStatic": true, "isConst": true, @@ -12770,16 +13243,16 @@ "summary": [ { "kind": "text", - "text": " Standard_E16ads_v7 — 16 vCPUs — 128 GB RAM — Premium SSD " + "text": " Standard_D2_v2 — 2 vCPUs — 7 GB RAM " } ] } }, { - "name": "StandardE2adsV7", + "name": "StandardD3V2", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardEadsv7.StandardE2adsV7", + "signature": "public const static string StandardDv2.StandardD3V2", "returnType": "string", "isStatic": true, "isConst": true, @@ -12787,16 +13260,16 @@ "summary": [ { "kind": "text", - "text": " Standard_E2ads_v7 — 2 vCPUs — 16 GB RAM — Premium SSD " + "text": " Standard_D3_v2 — 4 vCPUs — 14 GB RAM " } ] } }, { - "name": "StandardE3216adsV7", + "name": "StandardD4V2", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardEadsv7.StandardE3216adsV7", + "signature": "public const static string StandardDv2.StandardD4V2", "returnType": "string", "isStatic": true, "isConst": true, @@ -12804,16 +13277,16 @@ "summary": [ { "kind": "text", - "text": " Standard_E32-16ads_v7 — 32 vCPUs — 256 GB RAM — Premium SSD " + "text": " Standard_D4_v2 — 8 vCPUs — 28 GB RAM " } ] } }, { - "name": "StandardE328adsV7", + "name": "StandardD5V2", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardEadsv7.StandardE328adsV7", + "signature": "public const static string StandardDv2.StandardD5V2", "returnType": "string", "isStatic": true, "isConst": true, @@ -12821,16 +13294,52 @@ "summary": [ { "kind": "text", - "text": " Standard_E32-8ads_v7 — 32 vCPUs — 256 GB RAM — Premium SSD " + "text": " Standard_D5_v2 — 16 vCPUs — 56 GB RAM " + } + ] + } + } + ] + }, + { + "name": "StandardDv2Promo", + "fullName": "Aspire.Hosting.Azure.Kubernetes.AksNodeVmSizes.StandardDv2Promo", + "namespace": "Aspire.Hosting.Azure.Kubernetes", + "kind": "class", + "accessibility": "public", + "isStatic": true, + "docs": { + "summary": [ + { + "kind": "text", + "text": " VM sizes in the standardDv2PromoFamily. " + } + ] + }, + "sourceFile": "src/Aspire.Hosting.Azure.Kubernetes/AksNodeVmSizes.cs", + "members": [ + { + "name": "StandardD11V2Promo", + "kind": "field", + "accessibility": "public", + "signature": "public const static string StandardDv2Promo.StandardD11V2Promo", + "returnType": "string", + "isStatic": true, + "isConst": true, + "docs": { + "summary": [ + { + "kind": "text", + "text": " Standard_D11_v2_Promo — 2 vCPUs — 14 GB RAM " } ] } }, { - "name": "StandardE32adsV7", + "name": "StandardD12V2Promo", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardEadsv7.StandardE32adsV7", + "signature": "public const static string StandardDv2Promo.StandardD12V2Promo", "returnType": "string", "isStatic": true, "isConst": true, @@ -12838,16 +13347,16 @@ "summary": [ { "kind": "text", - "text": " Standard_E32ads_v7 — 32 vCPUs — 256 GB RAM — Premium SSD " + "text": " Standard_D12_v2_Promo — 4 vCPUs — 28 GB RAM " } ] } }, { - "name": "StandardE42adsV7", + "name": "StandardD13V2Promo", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardEadsv7.StandardE42adsV7", + "signature": "public const static string StandardDv2Promo.StandardD13V2Promo", "returnType": "string", "isStatic": true, "isConst": true, @@ -12855,16 +13364,16 @@ "summary": [ { "kind": "text", - "text": " Standard_E4-2ads_v7 — 4 vCPUs — 32 GB RAM — Premium SSD " + "text": " Standard_D13_v2_Promo — 8 vCPUs — 56 GB RAM " } ] } }, { - "name": "StandardE48adsV7", + "name": "StandardD14V2Promo", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardEadsv7.StandardE48adsV7", + "signature": "public const static string StandardDv2Promo.StandardD14V2Promo", "returnType": "string", "isStatic": true, "isConst": true, @@ -12872,16 +13381,16 @@ "summary": [ { "kind": "text", - "text": " Standard_E48ads_v7 — 48 vCPUs — 384 GB RAM — Premium SSD " + "text": " Standard_D14_v2_Promo — 16 vCPUs — 112 GB RAM " } ] } }, { - "name": "StandardE4adsV7", + "name": "StandardD2V2Promo", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardEadsv7.StandardE4adsV7", + "signature": "public const static string StandardDv2Promo.StandardD2V2Promo", "returnType": "string", "isStatic": true, "isConst": true, @@ -12889,16 +13398,16 @@ "summary": [ { "kind": "text", - "text": " Standard_E4ads_v7 — 4 vCPUs — 32 GB RAM — Premium SSD " + "text": " Standard_D2_v2_Promo — 2 vCPUs — 7 GB RAM " } ] } }, { - "name": "StandardE6416adsV7", + "name": "StandardD3V2Promo", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardEadsv7.StandardE6416adsV7", + "signature": "public const static string StandardDv2Promo.StandardD3V2Promo", "returnType": "string", "isStatic": true, "isConst": true, @@ -12906,16 +13415,16 @@ "summary": [ { "kind": "text", - "text": " Standard_E64-16ads_v7 — 64 vCPUs — 512 GB RAM — Premium SSD " + "text": " Standard_D3_v2_Promo — 4 vCPUs — 14 GB RAM " } ] } }, { - "name": "StandardE6432adsV7", + "name": "StandardD4V2Promo", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardEadsv7.StandardE6432adsV7", + "signature": "public const static string StandardDv2Promo.StandardD4V2Promo", "returnType": "string", "isStatic": true, "isConst": true, @@ -12923,16 +13432,16 @@ "summary": [ { "kind": "text", - "text": " Standard_E64-32ads_v7 — 64 vCPUs — 512 GB RAM — Premium SSD " + "text": " Standard_D4_v2_Promo — 8 vCPUs — 28 GB RAM " } ] } }, { - "name": "StandardE64adsV7", + "name": "StandardD5V2Promo", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardEadsv7.StandardE64adsV7", + "signature": "public const static string StandardDv2Promo.StandardD5V2Promo", "returnType": "string", "isStatic": true, "isConst": true, @@ -12940,16 +13449,52 @@ "summary": [ { "kind": "text", - "text": " Standard_E64ads_v7 — 64 vCPUs — 512 GB RAM — Premium SSD " + "text": " Standard_D5_v2_Promo — 16 vCPUs — 56 GB RAM " + } + ] + } + } + ] + }, + { + "name": "StandardDv3", + "fullName": "Aspire.Hosting.Azure.Kubernetes.AksNodeVmSizes.StandardDv3", + "namespace": "Aspire.Hosting.Azure.Kubernetes", + "kind": "class", + "accessibility": "public", + "isStatic": true, + "docs": { + "summary": [ + { + "kind": "text", + "text": " VM sizes in the standardDv3Family. " + } + ] + }, + "sourceFile": "src/Aspire.Hosting.Azure.Kubernetes/AksNodeVmSizes.cs", + "members": [ + { + "name": "StandardD16V3", + "kind": "field", + "accessibility": "public", + "signature": "public const static string StandardDv3.StandardD16V3", + "returnType": "string", + "isStatic": true, + "isConst": true, + "docs": { + "summary": [ + { + "kind": "text", + "text": " Standard_D16_v3 — 16 vCPUs — 64 GB RAM " } ] } }, { - "name": "StandardE82adsV7", + "name": "StandardD2V3", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardEadsv7.StandardE82adsV7", + "signature": "public const static string StandardDv3.StandardD2V3", "returnType": "string", "isStatic": true, "isConst": true, @@ -12957,16 +13502,16 @@ "summary": [ { "kind": "text", - "text": " Standard_E8-2ads_v7 — 8 vCPUs — 64 GB RAM — Premium SSD " + "text": " Standard_D2_v3 — 2 vCPUs — 8 GB RAM " } ] } }, { - "name": "StandardE84adsV7", + "name": "StandardD32V3", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardEadsv7.StandardE84adsV7", + "signature": "public const static string StandardDv3.StandardD32V3", "returnType": "string", "isStatic": true, "isConst": true, @@ -12974,16 +13519,16 @@ "summary": [ { "kind": "text", - "text": " Standard_E8-4ads_v7 — 8 vCPUs — 64 GB RAM — Premium SSD " + "text": " Standard_D32_v3 — 32 vCPUs — 128 GB RAM " } ] } }, { - "name": "StandardE8adsV7", + "name": "StandardD48V3", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardEadsv7.StandardE8adsV7", + "signature": "public const static string StandardDv3.StandardD48V3", "returnType": "string", "isStatic": true, "isConst": true, @@ -12991,16 +13536,16 @@ "summary": [ { "kind": "text", - "text": " Standard_E8ads_v7 — 8 vCPUs — 64 GB RAM — Premium SSD " + "text": " Standard_D48_v3 — 48 vCPUs — 192 GB RAM " } ] } }, { - "name": "StandardE9624adsV7", + "name": "StandardD4V3", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardEadsv7.StandardE9624adsV7", + "signature": "public const static string StandardDv3.StandardD4V3", "returnType": "string", "isStatic": true, "isConst": true, @@ -13008,16 +13553,16 @@ "summary": [ { "kind": "text", - "text": " Standard_E96-24ads_v7 — 96 vCPUs — 768 GB RAM — Premium SSD " + "text": " Standard_D4_v3 — 4 vCPUs — 16 GB RAM " } ] } }, { - "name": "StandardE9648adsV7", + "name": "StandardD64V3", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardEadsv7.StandardE9648adsV7", + "signature": "public const static string StandardDv3.StandardD64V3", "returnType": "string", "isStatic": true, "isConst": true, @@ -13025,16 +13570,16 @@ "summary": [ { "kind": "text", - "text": " Standard_E96-48ads_v7 — 96 vCPUs — 768 GB RAM — Premium SSD " + "text": " Standard_D64_v3 — 64 vCPUs — 256 GB RAM " } ] } }, { - "name": "StandardE96adsV7", + "name": "StandardD8V3", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardEadsv7.StandardE96adsV7", + "signature": "public const static string StandardDv3.StandardD8V3", "returnType": "string", "isStatic": true, "isConst": true, @@ -13042,7 +13587,7 @@ "summary": [ { "kind": "text", - "text": " Standard_E96ads_v7 — 96 vCPUs — 768 GB RAM — Premium SSD " + "text": " Standard_D8_v3 — 8 vCPUs — 32 GB RAM " } ] } @@ -13050,8 +13595,8 @@ ] }, { - "name": "StandardEadv6", - "fullName": "Aspire.Hosting.Azure.Kubernetes.AksNodeVmSizes.StandardEadv6", + "name": "StandardDv4", + "fullName": "Aspire.Hosting.Azure.Kubernetes.AksNodeVmSizes.StandardDv4", "namespace": "Aspire.Hosting.Azure.Kubernetes", "kind": "class", "accessibility": "public", @@ -13060,17 +13605,17 @@ "summary": [ { "kind": "text", - "text": " VM sizes in the standardEadv6Family. " + "text": " VM sizes in the standardDv4Family. " } ] }, "sourceFile": "src/Aspire.Hosting.Azure.Kubernetes/AksNodeVmSizes.cs", "members": [ { - "name": "StandardE16adsV6", + "name": "StandardD16V4", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardEadv6.StandardE16adsV6", + "signature": "public const static string StandardDv4.StandardD16V4", "returnType": "string", "isStatic": true, "isConst": true, @@ -13078,16 +13623,16 @@ "summary": [ { "kind": "text", - "text": " Standard_E16ads_v6 — 16 vCPUs — 128 GB RAM — Premium SSD " + "text": " Standard_D16_v4 — 16 vCPUs — 64 GB RAM " } ] } }, { - "name": "StandardE20adsV6", + "name": "StandardD2V4", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardEadv6.StandardE20adsV6", + "signature": "public const static string StandardDv4.StandardD2V4", "returnType": "string", "isStatic": true, "isConst": true, @@ -13095,16 +13640,16 @@ "summary": [ { "kind": "text", - "text": " Standard_E20ads_v6 — 20 vCPUs — 160 GB RAM — Premium SSD " + "text": " Standard_D2_v4 — 2 vCPUs — 8 GB RAM " } ] } }, { - "name": "StandardE2adsV6", + "name": "StandardD32V4", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardEadv6.StandardE2adsV6", + "signature": "public const static string StandardDv4.StandardD32V4", "returnType": "string", "isStatic": true, "isConst": true, @@ -13112,16 +13657,16 @@ "summary": [ { "kind": "text", - "text": " Standard_E2ads_v6 — 2 vCPUs — 16 GB RAM — Premium SSD " + "text": " Standard_D32_v4 — 32 vCPUs — 128 GB RAM " } ] } }, { - "name": "StandardE32adsV6", + "name": "StandardD48V4", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardEadv6.StandardE32adsV6", + "signature": "public const static string StandardDv4.StandardD48V4", "returnType": "string", "isStatic": true, "isConst": true, @@ -13129,16 +13674,16 @@ "summary": [ { "kind": "text", - "text": " Standard_E32ads_v6 — 32 vCPUs — 256 GB RAM — Premium SSD " + "text": " Standard_D48_v4 — 48 vCPUs — 192 GB RAM " } ] } }, { - "name": "StandardE48adsV6", + "name": "StandardD4V4", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardEadv6.StandardE48adsV6", + "signature": "public const static string StandardDv4.StandardD4V4", "returnType": "string", "isStatic": true, "isConst": true, @@ -13146,16 +13691,16 @@ "summary": [ { "kind": "text", - "text": " Standard_E48ads_v6 — 48 vCPUs — 384 GB RAM — Premium SSD " + "text": " Standard_D4_v4 — 4 vCPUs — 16 GB RAM " } ] } }, { - "name": "StandardE4adsV6", + "name": "StandardD64V4", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardEadv6.StandardE4adsV6", + "signature": "public const static string StandardDv4.StandardD64V4", "returnType": "string", "isStatic": true, "isConst": true, @@ -13163,16 +13708,16 @@ "summary": [ { "kind": "text", - "text": " Standard_E4ads_v6 — 4 vCPUs — 32 GB RAM — Premium SSD " + "text": " Standard_D64_v4 — 64 vCPUs — 256 GB RAM " } ] } }, { - "name": "StandardE64adsV6", + "name": "StandardD8V4", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardEadv6.StandardE64adsV6", + "signature": "public const static string StandardDv4.StandardD8V4", "returnType": "string", "isStatic": true, "isConst": true, @@ -13180,16 +13725,35 @@ "summary": [ { "kind": "text", - "text": " Standard_E64ads_v6 — 64 vCPUs — 512 GB RAM — Premium SSD " + "text": " Standard_D8_v4 — 8 vCPUs — 32 GB RAM " } ] } - }, + } + ] + }, + { + "name": "StandardDv5", + "fullName": "Aspire.Hosting.Azure.Kubernetes.AksNodeVmSizes.StandardDv5", + "namespace": "Aspire.Hosting.Azure.Kubernetes", + "kind": "class", + "accessibility": "public", + "isStatic": true, + "docs": { + "summary": [ + { + "kind": "text", + "text": " VM sizes in the standardDv5Family. " + } + ] + }, + "sourceFile": "src/Aspire.Hosting.Azure.Kubernetes/AksNodeVmSizes.cs", + "members": [ { - "name": "StandardE8adsV6", + "name": "StandardD16V5", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardEadv6.StandardE8adsV6", + "signature": "public const static string StandardDv5.StandardD16V5", "returnType": "string", "isStatic": true, "isConst": true, @@ -13197,16 +13761,16 @@ "summary": [ { "kind": "text", - "text": " Standard_E8ads_v6 — 8 vCPUs — 64 GB RAM — Premium SSD " + "text": " Standard_D16_v5 — 16 vCPUs — 64 GB RAM " } ] } }, { - "name": "StandardE9624adsV6", + "name": "StandardD2V5", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardEadv6.StandardE9624adsV6", + "signature": "public const static string StandardDv5.StandardD2V5", "returnType": "string", "isStatic": true, "isConst": true, @@ -13214,16 +13778,16 @@ "summary": [ { "kind": "text", - "text": " Standard_E96-24ads_v6 — 96 vCPUs — 672 GB RAM — Premium SSD " + "text": " Standard_D2_v5 — 2 vCPUs — 8 GB RAM " } ] } }, { - "name": "StandardE9648adsV6", + "name": "StandardD32V5", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardEadv6.StandardE9648adsV6", + "signature": "public const static string StandardDv5.StandardD32V5", "returnType": "string", "isStatic": true, "isConst": true, @@ -13231,16 +13795,16 @@ "summary": [ { "kind": "text", - "text": " Standard_E96-48ads_v6 — 96 vCPUs — 672 GB RAM — Premium SSD " + "text": " Standard_D32_v5 — 32 vCPUs — 128 GB RAM " } ] } }, { - "name": "StandardE96adsV6", + "name": "StandardD48V5", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardEadv6.StandardE96adsV6", + "signature": "public const static string StandardDv5.StandardD48V5", "returnType": "string", "isStatic": true, "isConst": true, @@ -13248,35 +13812,16 @@ "summary": [ { "kind": "text", - "text": " Standard_E96ads_v6 — 96 vCPUs — 672 GB RAM — Premium SSD " + "text": " Standard_D48_v5 — 48 vCPUs — 192 GB RAM " } ] } - } - ] - }, - { - "name": "StandardEASv4", - "fullName": "Aspire.Hosting.Azure.Kubernetes.AksNodeVmSizes.StandardEASv4", - "namespace": "Aspire.Hosting.Azure.Kubernetes", - "kind": "class", - "accessibility": "public", - "isStatic": true, - "docs": { - "summary": [ - { - "kind": "text", - "text": " VM sizes in the standardEASv4Family. " - } - ] - }, - "sourceFile": "src/Aspire.Hosting.Azure.Kubernetes/AksNodeVmSizes.cs", - "members": [ + }, { - "name": "StandardE164asV4", + "name": "StandardD4V5", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardEASv4.StandardE164asV4", + "signature": "public const static string StandardDv5.StandardD4V5", "returnType": "string", "isStatic": true, "isConst": true, @@ -13284,16 +13829,16 @@ "summary": [ { "kind": "text", - "text": " Standard_E16-4as_v4 — 16 vCPUs — 128 GB RAM — Premium SSD " + "text": " Standard_D4_v5 — 4 vCPUs — 16 GB RAM " } ] } }, { - "name": "StandardE168asV4", + "name": "StandardD64V5", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardEASv4.StandardE168asV4", + "signature": "public const static string StandardDv5.StandardD64V5", "returnType": "string", "isStatic": true, "isConst": true, @@ -13301,16 +13846,16 @@ "summary": [ { "kind": "text", - "text": " Standard_E16-8as_v4 — 16 vCPUs — 128 GB RAM — Premium SSD " + "text": " Standard_D64_v5 — 64 vCPUs — 256 GB RAM " } ] } }, { - "name": "StandardE16asV4", + "name": "StandardD8V5", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardEASv4.StandardE16asV4", + "signature": "public const static string StandardDv5.StandardD8V5", "returnType": "string", "isStatic": true, "isConst": true, @@ -13318,16 +13863,16 @@ "summary": [ { "kind": "text", - "text": " Standard_E16as_v4 — 16 vCPUs — 128 GB RAM — Premium SSD " + "text": " Standard_D8_v5 — 8 vCPUs — 32 GB RAM " } ] } }, { - "name": "StandardE20asV4", + "name": "StandardD96V5", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardEASv4.StandardE20asV4", + "signature": "public const static string StandardDv5.StandardD96V5", "returnType": "string", "isStatic": true, "isConst": true, @@ -13335,16 +13880,35 @@ "summary": [ { "kind": "text", - "text": " Standard_E20as_v4 — 20 vCPUs — 160 GB RAM — Premium SSD " + "text": " Standard_D96_v5 — 96 vCPUs — 384 GB RAM " } ] } - }, + } + ] + }, + { + "name": "StandardEADSv5", + "fullName": "Aspire.Hosting.Azure.Kubernetes.AksNodeVmSizes.StandardEADSv5", + "namespace": "Aspire.Hosting.Azure.Kubernetes", + "kind": "class", + "accessibility": "public", + "isStatic": true, + "docs": { + "summary": [ + { + "kind": "text", + "text": " VM sizes in the standardEADSv5Family. " + } + ] + }, + "sourceFile": "src/Aspire.Hosting.Azure.Kubernetes/AksNodeVmSizes.cs", + "members": [ { - "name": "StandardE2asV4", + "name": "StandardE164adsV5", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardEASv4.StandardE2asV4", + "signature": "public const static string StandardEADSv5.StandardE164adsV5", "returnType": "string", "isStatic": true, "isConst": true, @@ -13352,16 +13916,16 @@ "summary": [ { "kind": "text", - "text": " Standard_E2as_v4 — 2 vCPUs — 16 GB RAM — Premium SSD " + "text": " Standard_E16-4ads_v5 — 16 vCPUs — 128 GB RAM — Premium SSD " } ] } }, { - "name": "StandardE3216asV4", + "name": "StandardE168adsV5", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardEASv4.StandardE3216asV4", + "signature": "public const static string StandardEADSv5.StandardE168adsV5", "returnType": "string", "isStatic": true, "isConst": true, @@ -13369,16 +13933,16 @@ "summary": [ { "kind": "text", - "text": " Standard_E32-16as_v4 — 32 vCPUs — 256 GB RAM — Premium SSD " + "text": " Standard_E16-8ads_v5 — 16 vCPUs — 128 GB RAM — Premium SSD " } ] } }, { - "name": "StandardE328asV4", + "name": "StandardE16adsV5", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardEASv4.StandardE328asV4", + "signature": "public const static string StandardEADSv5.StandardE16adsV5", "returnType": "string", "isStatic": true, "isConst": true, @@ -13386,16 +13950,16 @@ "summary": [ { "kind": "text", - "text": " Standard_E32-8as_v4 — 32 vCPUs — 256 GB RAM — Premium SSD " + "text": " Standard_E16ads_v5 — 16 vCPUs — 128 GB RAM — Premium SSD " } ] } }, { - "name": "StandardE32asV4", + "name": "StandardE20adsV5", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardEASv4.StandardE32asV4", + "signature": "public const static string StandardEADSv5.StandardE20adsV5", "returnType": "string", "isStatic": true, "isConst": true, @@ -13403,16 +13967,16 @@ "summary": [ { "kind": "text", - "text": " Standard_E32as_v4 — 32 vCPUs — 256 GB RAM — Premium SSD " + "text": " Standard_E20ads_v5 — 20 vCPUs — 160 GB RAM — Premium SSD " } ] } }, { - "name": "StandardE42asV4", + "name": "StandardE2adsV5", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardEASv4.StandardE42asV4", + "signature": "public const static string StandardEADSv5.StandardE2adsV5", "returnType": "string", "isStatic": true, "isConst": true, @@ -13420,16 +13984,16 @@ "summary": [ { "kind": "text", - "text": " Standard_E4-2as_v4 — 4 vCPUs — 32 GB RAM — Premium SSD " + "text": " Standard_E2ads_v5 — 2 vCPUs — 16 GB RAM — Premium SSD " } ] } }, { - "name": "StandardE48asV4", + "name": "StandardE3216adsV5", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardEASv4.StandardE48asV4", + "signature": "public const static string StandardEADSv5.StandardE3216adsV5", "returnType": "string", "isStatic": true, "isConst": true, @@ -13437,16 +14001,16 @@ "summary": [ { "kind": "text", - "text": " Standard_E48as_v4 — 48 vCPUs — 384 GB RAM — Premium SSD " + "text": " Standard_E32-16ads_v5 — 32 vCPUs — 256 GB RAM — Premium SSD " } ] } }, { - "name": "StandardE4asV4", + "name": "StandardE328adsV5", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardEASv4.StandardE4asV4", + "signature": "public const static string StandardEADSv5.StandardE328adsV5", "returnType": "string", "isStatic": true, "isConst": true, @@ -13454,16 +14018,16 @@ "summary": [ { "kind": "text", - "text": " Standard_E4as_v4 — 4 vCPUs — 32 GB RAM — Premium SSD " + "text": " Standard_E32-8ads_v5 — 32 vCPUs — 256 GB RAM — Premium SSD " } ] } }, { - "name": "StandardE6416asV4", + "name": "StandardE32adsV5", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardEASv4.StandardE6416asV4", + "signature": "public const static string StandardEADSv5.StandardE32adsV5", "returnType": "string", "isStatic": true, "isConst": true, @@ -13471,16 +14035,16 @@ "summary": [ { "kind": "text", - "text": " Standard_E64-16as_v4 — 64 vCPUs — 512 GB RAM — Premium SSD " + "text": " Standard_E32ads_v5 — 32 vCPUs — 256 GB RAM — Premium SSD " } ] } }, { - "name": "StandardE6432asV4", + "name": "StandardE42adsV5", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardEASv4.StandardE6432asV4", + "signature": "public const static string StandardEADSv5.StandardE42adsV5", "returnType": "string", "isStatic": true, "isConst": true, @@ -13488,16 +14052,16 @@ "summary": [ { "kind": "text", - "text": " Standard_E64-32as_v4 — 64 vCPUs — 512 GB RAM — Premium SSD " + "text": " Standard_E4-2ads_v5 — 4 vCPUs — 32 GB RAM — Premium SSD " } ] } }, { - "name": "StandardE64asV4", + "name": "StandardE48adsV5", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardEASv4.StandardE64asV4", + "signature": "public const static string StandardEADSv5.StandardE48adsV5", "returnType": "string", "isStatic": true, "isConst": true, @@ -13505,16 +14069,16 @@ "summary": [ { "kind": "text", - "text": " Standard_E64as_v4 — 64 vCPUs — 512 GB RAM — Premium SSD " + "text": " Standard_E48ads_v5 — 48 vCPUs — 384 GB RAM — Premium SSD " } ] } }, { - "name": "StandardE82asV4", + "name": "StandardE4adsV5", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardEASv4.StandardE82asV4", + "signature": "public const static string StandardEADSv5.StandardE4adsV5", "returnType": "string", "isStatic": true, "isConst": true, @@ -13522,16 +14086,16 @@ "summary": [ { "kind": "text", - "text": " Standard_E8-2as_v4 — 8 vCPUs — 64 GB RAM — Premium SSD " + "text": " Standard_E4ads_v5 — 4 vCPUs — 32 GB RAM — Premium SSD " } ] } }, { - "name": "StandardE84asV4", + "name": "StandardE6416adsV5", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardEASv4.StandardE84asV4", + "signature": "public const static string StandardEADSv5.StandardE6416adsV5", "returnType": "string", "isStatic": true, "isConst": true, @@ -13539,16 +14103,16 @@ "summary": [ { "kind": "text", - "text": " Standard_E8-4as_v4 — 8 vCPUs — 64 GB RAM — Premium SSD " + "text": " Standard_E64-16ads_v5 — 64 vCPUs — 512 GB RAM — Premium SSD " } ] } }, { - "name": "StandardE8asV4", + "name": "StandardE6432adsV5", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardEASv4.StandardE8asV4", + "signature": "public const static string StandardEADSv5.StandardE6432adsV5", "returnType": "string", "isStatic": true, "isConst": true, @@ -13556,16 +14120,16 @@ "summary": [ { "kind": "text", - "text": " Standard_E8as_v4 — 8 vCPUs — 64 GB RAM — Premium SSD " + "text": " Standard_E64-32ads_v5 — 64 vCPUs — 512 GB RAM — Premium SSD " } ] } }, { - "name": "StandardE9624asV4", + "name": "StandardE64adsV5", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardEASv4.StandardE9624asV4", + "signature": "public const static string StandardEADSv5.StandardE64adsV5", "returnType": "string", "isStatic": true, "isConst": true, @@ -13573,16 +14137,16 @@ "summary": [ { "kind": "text", - "text": " Standard_E96-24as_v4 — 96 vCPUs — 672 GB RAM — Premium SSD " + "text": " Standard_E64ads_v5 — 64 vCPUs — 512 GB RAM — Premium SSD " } ] } }, { - "name": "StandardE9648asV4", + "name": "StandardE82adsV5", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardEASv4.StandardE9648asV4", + "signature": "public const static string StandardEADSv5.StandardE82adsV5", "returnType": "string", "isStatic": true, "isConst": true, @@ -13590,16 +14154,16 @@ "summary": [ { "kind": "text", - "text": " Standard_E96-48as_v4 — 96 vCPUs — 672 GB RAM — Premium SSD " + "text": " Standard_E8-2ads_v5 — 8 vCPUs — 64 GB RAM — Premium SSD " } ] } }, { - "name": "StandardE96asV4", + "name": "StandardE84adsV5", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardEASv4.StandardE96asV4", + "signature": "public const static string StandardEADSv5.StandardE84adsV5", "returnType": "string", "isStatic": true, "isConst": true, @@ -13607,35 +14171,16 @@ "summary": [ { "kind": "text", - "text": " Standard_E96as_v4 — 96 vCPUs — 672 GB RAM — Premium SSD " + "text": " Standard_E8-4ads_v5 — 8 vCPUs — 64 GB RAM — Premium SSD " } ] } - } - ] - }, - { - "name": "StandardEASv5", - "fullName": "Aspire.Hosting.Azure.Kubernetes.AksNodeVmSizes.StandardEASv5", - "namespace": "Aspire.Hosting.Azure.Kubernetes", - "kind": "class", - "accessibility": "public", - "isStatic": true, - "docs": { - "summary": [ - { - "kind": "text", - "text": " VM sizes in the standardEASv5Family. " - } - ] - }, - "sourceFile": "src/Aspire.Hosting.Azure.Kubernetes/AksNodeVmSizes.cs", - "members": [ + }, { - "name": "StandardE164asV5", + "name": "StandardE8adsV5", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardEASv5.StandardE164asV5", + "signature": "public const static string StandardEADSv5.StandardE8adsV5", "returnType": "string", "isStatic": true, "isConst": true, @@ -13643,16 +14188,16 @@ "summary": [ { "kind": "text", - "text": " Standard_E16-4as_v5 — 16 vCPUs — 128 GB RAM — Premium SSD " + "text": " Standard_E8ads_v5 — 8 vCPUs — 64 GB RAM — Premium SSD " } ] } }, { - "name": "StandardE168asV5", + "name": "StandardE9624adsV5", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardEASv5.StandardE168asV5", + "signature": "public const static string StandardEADSv5.StandardE9624adsV5", "returnType": "string", "isStatic": true, "isConst": true, @@ -13660,16 +14205,16 @@ "summary": [ { "kind": "text", - "text": " Standard_E16-8as_v5 — 16 vCPUs — 128 GB RAM — Premium SSD " + "text": " Standard_E96-24ads_v5 — 96 vCPUs — 672 GB RAM — Premium SSD " } ] } }, { - "name": "StandardE16asV5", + "name": "StandardE9648adsV5", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardEASv5.StandardE16asV5", + "signature": "public const static string StandardEADSv5.StandardE9648adsV5", "returnType": "string", "isStatic": true, "isConst": true, @@ -13677,16 +14222,16 @@ "summary": [ { "kind": "text", - "text": " Standard_E16as_v5 — 16 vCPUs — 128 GB RAM — Premium SSD " + "text": " Standard_E96-48ads_v5 — 96 vCPUs — 672 GB RAM — Premium SSD " } ] } }, { - "name": "StandardE20asV5", + "name": "StandardE96adsV5", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardEASv5.StandardE20asV5", + "signature": "public const static string StandardEADSv5.StandardE96adsV5", "returnType": "string", "isStatic": true, "isConst": true, @@ -13694,16 +14239,35 @@ "summary": [ { "kind": "text", - "text": " Standard_E20as_v5 — 20 vCPUs — 160 GB RAM — Premium SSD " + "text": " Standard_E96ads_v5 — 96 vCPUs — 672 GB RAM — Premium SSD " } ] } - }, + } + ] + }, + { + "name": "StandardEadsv7", + "fullName": "Aspire.Hosting.Azure.Kubernetes.AksNodeVmSizes.StandardEadsv7", + "namespace": "Aspire.Hosting.Azure.Kubernetes", + "kind": "class", + "accessibility": "public", + "isStatic": true, + "docs": { + "summary": [ + { + "kind": "text", + "text": " VM sizes in the StandardEadsv7Family. " + } + ] + }, + "sourceFile": "src/Aspire.Hosting.Azure.Kubernetes/AksNodeVmSizes.cs", + "members": [ { - "name": "StandardE2asV5", + "name": "StandardE12832adsV7", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardEASv5.StandardE2asV5", + "signature": "public const static string StandardEadsv7.StandardE12832adsV7", "returnType": "string", "isStatic": true, "isConst": true, @@ -13711,16 +14275,16 @@ "summary": [ { "kind": "text", - "text": " Standard_E2as_v5 — 2 vCPUs — 16 GB RAM — Premium SSD " + "text": " Standard_E128-32ads_v7 — 128 vCPUs — 1024 GB RAM — Premium SSD " } ] } }, { - "name": "StandardE3216asV5", + "name": "StandardE12864adsV7", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardEASv5.StandardE3216asV5", + "signature": "public const static string StandardEadsv7.StandardE12864adsV7", "returnType": "string", "isStatic": true, "isConst": true, @@ -13728,16 +14292,16 @@ "summary": [ { "kind": "text", - "text": " Standard_E32-16as_v5 — 32 vCPUs — 256 GB RAM — Premium SSD " + "text": " Standard_E128-64ads_v7 — 128 vCPUs — 1024 GB RAM — Premium SSD " } ] } }, { - "name": "StandardE328asV5", + "name": "StandardE128adsV7", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardEASv5.StandardE328asV5", + "signature": "public const static string StandardEadsv7.StandardE128adsV7", "returnType": "string", "isStatic": true, "isConst": true, @@ -13745,16 +14309,16 @@ "summary": [ { "kind": "text", - "text": " Standard_E32-8as_v5 — 32 vCPUs — 256 GB RAM — Premium SSD " + "text": " Standard_E128ads_v7 — 128 vCPUs — 1024 GB RAM — Premium SSD " } ] } }, { - "name": "StandardE32asV5", + "name": "StandardE160adsV7", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardEASv5.StandardE32asV5", + "signature": "public const static string StandardEadsv7.StandardE160adsV7", "returnType": "string", "isStatic": true, "isConst": true, @@ -13762,16 +14326,16 @@ "summary": [ { "kind": "text", - "text": " Standard_E32as_v5 — 32 vCPUs — 256 GB RAM — Premium SSD " + "text": " Standard_E160ads_v7 — 160 vCPUs — 1280 GB RAM — Premium SSD " } ] } }, { - "name": "StandardE42asV5", + "name": "StandardE164adsV7", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardEASv5.StandardE42asV5", + "signature": "public const static string StandardEadsv7.StandardE164adsV7", "returnType": "string", "isStatic": true, "isConst": true, @@ -13779,16 +14343,16 @@ "summary": [ { "kind": "text", - "text": " Standard_E4-2as_v5 — 4 vCPUs — 32 GB RAM — Premium SSD " + "text": " Standard_E16-4ads_v7 — 16 vCPUs — 128 GB RAM — Premium SSD " } ] } }, { - "name": "StandardE48asV5", + "name": "StandardE168adsV7", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardEASv5.StandardE48asV5", + "signature": "public const static string StandardEadsv7.StandardE168adsV7", "returnType": "string", "isStatic": true, "isConst": true, @@ -13796,16 +14360,16 @@ "summary": [ { "kind": "text", - "text": " Standard_E48as_v5 — 48 vCPUs — 384 GB RAM — Premium SSD " + "text": " Standard_E16-8ads_v7 — 16 vCPUs — 128 GB RAM — Premium SSD " } ] } }, { - "name": "StandardE4asV5", + "name": "StandardE16adsV7", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardEASv5.StandardE4asV5", + "signature": "public const static string StandardEadsv7.StandardE16adsV7", "returnType": "string", "isStatic": true, "isConst": true, @@ -13813,16 +14377,16 @@ "summary": [ { "kind": "text", - "text": " Standard_E4as_v5 — 4 vCPUs — 32 GB RAM — Premium SSD " + "text": " Standard_E16ads_v7 — 16 vCPUs — 128 GB RAM — Premium SSD " } ] } }, { - "name": "StandardE6416asV5", + "name": "StandardE2adsV7", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardEASv5.StandardE6416asV5", + "signature": "public const static string StandardEadsv7.StandardE2adsV7", "returnType": "string", "isStatic": true, "isConst": true, @@ -13830,16 +14394,16 @@ "summary": [ { "kind": "text", - "text": " Standard_E64-16as_v5 — 64 vCPUs — 512 GB RAM — Premium SSD " + "text": " Standard_E2ads_v7 — 2 vCPUs — 16 GB RAM — Premium SSD " } ] } }, { - "name": "StandardE6432asV5", + "name": "StandardE3216adsV7", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardEASv5.StandardE6432asV5", + "signature": "public const static string StandardEadsv7.StandardE3216adsV7", "returnType": "string", "isStatic": true, "isConst": true, @@ -13847,16 +14411,16 @@ "summary": [ { "kind": "text", - "text": " Standard_E64-32as_v5 — 64 vCPUs — 512 GB RAM — Premium SSD " + "text": " Standard_E32-16ads_v7 — 32 vCPUs — 256 GB RAM — Premium SSD " } ] } }, { - "name": "StandardE64asV5", + "name": "StandardE328adsV7", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardEASv5.StandardE64asV5", + "signature": "public const static string StandardEadsv7.StandardE328adsV7", "returnType": "string", "isStatic": true, "isConst": true, @@ -13864,16 +14428,16 @@ "summary": [ { "kind": "text", - "text": " Standard_E64as_v5 — 64 vCPUs — 512 GB RAM — Premium SSD " + "text": " Standard_E32-8ads_v7 — 32 vCPUs — 256 GB RAM — Premium SSD " } ] } }, { - "name": "StandardE82asV5", + "name": "StandardE32adsV7", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardEASv5.StandardE82asV5", + "signature": "public const static string StandardEadsv7.StandardE32adsV7", "returnType": "string", "isStatic": true, "isConst": true, @@ -13881,16 +14445,16 @@ "summary": [ { "kind": "text", - "text": " Standard_E8-2as_v5 — 8 vCPUs — 64 GB RAM — Premium SSD " + "text": " Standard_E32ads_v7 — 32 vCPUs — 256 GB RAM — Premium SSD " } ] } }, { - "name": "StandardE84asV5", + "name": "StandardE42adsV7", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardEASv5.StandardE84asV5", + "signature": "public const static string StandardEadsv7.StandardE42adsV7", "returnType": "string", "isStatic": true, "isConst": true, @@ -13898,16 +14462,16 @@ "summary": [ { "kind": "text", - "text": " Standard_E8-4as_v5 — 8 vCPUs — 64 GB RAM — Premium SSD " + "text": " Standard_E4-2ads_v7 — 4 vCPUs — 32 GB RAM — Premium SSD " } ] } }, { - "name": "StandardE8asV5", + "name": "StandardE48adsV7", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardEASv5.StandardE8asV5", + "signature": "public const static string StandardEadsv7.StandardE48adsV7", "returnType": "string", "isStatic": true, "isConst": true, @@ -13915,16 +14479,16 @@ "summary": [ { "kind": "text", - "text": " Standard_E8as_v5 — 8 vCPUs — 64 GB RAM — Premium SSD " + "text": " Standard_E48ads_v7 — 48 vCPUs — 384 GB RAM — Premium SSD " } ] } }, { - "name": "StandardE9624asV5", + "name": "StandardE4adsV7", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardEASv5.StandardE9624asV5", + "signature": "public const static string StandardEadsv7.StandardE4adsV7", "returnType": "string", "isStatic": true, "isConst": true, @@ -13932,16 +14496,16 @@ "summary": [ { "kind": "text", - "text": " Standard_E96-24as_v5 — 96 vCPUs — 672 GB RAM — Premium SSD " + "text": " Standard_E4ads_v7 — 4 vCPUs — 32 GB RAM — Premium SSD " } ] } }, { - "name": "StandardE9648asV5", + "name": "StandardE6416adsV7", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardEASv5.StandardE9648asV5", + "signature": "public const static string StandardEadsv7.StandardE6416adsV7", "returnType": "string", "isStatic": true, "isConst": true, @@ -13949,16 +14513,16 @@ "summary": [ { "kind": "text", - "text": " Standard_E96-48as_v5 — 96 vCPUs — 672 GB RAM — Premium SSD " + "text": " Standard_E64-16ads_v7 — 64 vCPUs — 512 GB RAM — Premium SSD " } ] } }, { - "name": "StandardE96asV5", + "name": "StandardE6432adsV7", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardEASv5.StandardE96asV5", + "signature": "public const static string StandardEadsv7.StandardE6432adsV7", "returnType": "string", "isStatic": true, "isConst": true, @@ -13966,35 +14530,16 @@ "summary": [ { "kind": "text", - "text": " Standard_E96as_v5 — 96 vCPUs — 672 GB RAM — Premium SSD " + "text": " Standard_E64-32ads_v7 — 64 vCPUs — 512 GB RAM — Premium SSD " } ] } - } - ] - }, - { - "name": "StandardEasv7", - "fullName": "Aspire.Hosting.Azure.Kubernetes.AksNodeVmSizes.StandardEasv7", - "namespace": "Aspire.Hosting.Azure.Kubernetes", - "kind": "class", - "accessibility": "public", - "isStatic": true, - "docs": { - "summary": [ - { - "kind": "text", - "text": " VM sizes in the StandardEasv7Family. " - } - ] - }, - "sourceFile": "src/Aspire.Hosting.Azure.Kubernetes/AksNodeVmSizes.cs", - "members": [ + }, { - "name": "StandardE12832asV7", + "name": "StandardE64adsV7", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardEasv7.StandardE12832asV7", + "signature": "public const static string StandardEadsv7.StandardE64adsV7", "returnType": "string", "isStatic": true, "isConst": true, @@ -14002,16 +14547,16 @@ "summary": [ { "kind": "text", - "text": " Standard_E128-32as_v7 — 128 vCPUs — 1024 GB RAM — Premium SSD " + "text": " Standard_E64ads_v7 — 64 vCPUs — 512 GB RAM — Premium SSD " } ] } }, { - "name": "StandardE12864asV7", + "name": "StandardE82adsV7", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardEasv7.StandardE12864asV7", + "signature": "public const static string StandardEadsv7.StandardE82adsV7", "returnType": "string", "isStatic": true, "isConst": true, @@ -14019,16 +14564,16 @@ "summary": [ { "kind": "text", - "text": " Standard_E128-64as_v7 — 128 vCPUs — 1024 GB RAM — Premium SSD " + "text": " Standard_E8-2ads_v7 — 8 vCPUs — 64 GB RAM — Premium SSD " } ] } }, { - "name": "StandardE128asV7", + "name": "StandardE84adsV7", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardEasv7.StandardE128asV7", + "signature": "public const static string StandardEadsv7.StandardE84adsV7", "returnType": "string", "isStatic": true, "isConst": true, @@ -14036,16 +14581,16 @@ "summary": [ { "kind": "text", - "text": " Standard_E128as_v7 — 128 vCPUs — 1024 GB RAM — Premium SSD " + "text": " Standard_E8-4ads_v7 — 8 vCPUs — 64 GB RAM — Premium SSD " } ] } }, { - "name": "StandardE160asV7", + "name": "StandardE8adsV7", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardEasv7.StandardE160asV7", + "signature": "public const static string StandardEadsv7.StandardE8adsV7", "returnType": "string", "isStatic": true, "isConst": true, @@ -14053,16 +14598,16 @@ "summary": [ { "kind": "text", - "text": " Standard_E160as_v7 — 160 vCPUs — 1280 GB RAM — Premium SSD " + "text": " Standard_E8ads_v7 — 8 vCPUs — 64 GB RAM — Premium SSD " } ] } }, { - "name": "StandardE164asV7", + "name": "StandardE9624adsV7", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardEasv7.StandardE164asV7", + "signature": "public const static string StandardEadsv7.StandardE9624adsV7", "returnType": "string", "isStatic": true, "isConst": true, @@ -14070,16 +14615,16 @@ "summary": [ { "kind": "text", - "text": " Standard_E16-4as_v7 — 16 vCPUs — 128 GB RAM — Premium SSD " + "text": " Standard_E96-24ads_v7 — 96 vCPUs — 768 GB RAM — Premium SSD " } ] } }, { - "name": "StandardE168asV7", + "name": "StandardE9648adsV7", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardEasv7.StandardE168asV7", + "signature": "public const static string StandardEadsv7.StandardE9648adsV7", "returnType": "string", "isStatic": true, "isConst": true, @@ -14087,16 +14632,16 @@ "summary": [ { "kind": "text", - "text": " Standard_E16-8as_v7 — 16 vCPUs — 128 GB RAM — Premium SSD " + "text": " Standard_E96-48ads_v7 — 96 vCPUs — 768 GB RAM — Premium SSD " } ] } }, { - "name": "StandardE16asV7", + "name": "StandardE96adsV7", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardEasv7.StandardE16asV7", + "signature": "public const static string StandardEadsv7.StandardE96adsV7", "returnType": "string", "isStatic": true, "isConst": true, @@ -14104,16 +14649,35 @@ "summary": [ { "kind": "text", - "text": " Standard_E16as_v7 — 16 vCPUs — 128 GB RAM — Premium SSD " + "text": " Standard_E96ads_v7 — 96 vCPUs — 768 GB RAM — Premium SSD " } ] } - }, + } + ] + }, + { + "name": "StandardEadv6", + "fullName": "Aspire.Hosting.Azure.Kubernetes.AksNodeVmSizes.StandardEadv6", + "namespace": "Aspire.Hosting.Azure.Kubernetes", + "kind": "class", + "accessibility": "public", + "isStatic": true, + "docs": { + "summary": [ + { + "kind": "text", + "text": " VM sizes in the standardEadv6Family. " + } + ] + }, + "sourceFile": "src/Aspire.Hosting.Azure.Kubernetes/AksNodeVmSizes.cs", + "members": [ { - "name": "StandardE2asV7", + "name": "StandardE16adsV6", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardEasv7.StandardE2asV7", + "signature": "public const static string StandardEadv6.StandardE16adsV6", "returnType": "string", "isStatic": true, "isConst": true, @@ -14121,16 +14685,16 @@ "summary": [ { "kind": "text", - "text": " Standard_E2as_v7 — 2 vCPUs — 16 GB RAM — Premium SSD " + "text": " Standard_E16ads_v6 — 16 vCPUs — 128 GB RAM — Premium SSD " } ] } }, { - "name": "StandardE3216asV7", + "name": "StandardE20adsV6", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardEasv7.StandardE3216asV7", + "signature": "public const static string StandardEadv6.StandardE20adsV6", "returnType": "string", "isStatic": true, "isConst": true, @@ -14138,16 +14702,16 @@ "summary": [ { "kind": "text", - "text": " Standard_E32-16as_v7 — 32 vCPUs — 256 GB RAM — Premium SSD " + "text": " Standard_E20ads_v6 — 20 vCPUs — 160 GB RAM — Premium SSD " } ] } }, { - "name": "StandardE328asV7", + "name": "StandardE2adsV6", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardEasv7.StandardE328asV7", + "signature": "public const static string StandardEadv6.StandardE2adsV6", "returnType": "string", "isStatic": true, "isConst": true, @@ -14155,16 +14719,16 @@ "summary": [ { "kind": "text", - "text": " Standard_E32-8as_v7 — 32 vCPUs — 256 GB RAM — Premium SSD " + "text": " Standard_E2ads_v6 — 2 vCPUs — 16 GB RAM — Premium SSD " } ] } }, { - "name": "StandardE32asV7", + "name": "StandardE32adsV6", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardEasv7.StandardE32asV7", + "signature": "public const static string StandardEadv6.StandardE32adsV6", "returnType": "string", "isStatic": true, "isConst": true, @@ -14172,16 +14736,16 @@ "summary": [ { "kind": "text", - "text": " Standard_E32as_v7 — 32 vCPUs — 256 GB RAM — Premium SSD " + "text": " Standard_E32ads_v6 — 32 vCPUs — 256 GB RAM — Premium SSD " } ] } }, { - "name": "StandardE42asV7", + "name": "StandardE48adsV6", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardEasv7.StandardE42asV7", + "signature": "public const static string StandardEadv6.StandardE48adsV6", "returnType": "string", "isStatic": true, "isConst": true, @@ -14189,16 +14753,16 @@ "summary": [ { "kind": "text", - "text": " Standard_E4-2as_v7 — 4 vCPUs — 32 GB RAM — Premium SSD " + "text": " Standard_E48ads_v6 — 48 vCPUs — 384 GB RAM — Premium SSD " } ] } }, { - "name": "StandardE48asV7", + "name": "StandardE4adsV6", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardEasv7.StandardE48asV7", + "signature": "public const static string StandardEadv6.StandardE4adsV6", "returnType": "string", "isStatic": true, "isConst": true, @@ -14206,16 +14770,16 @@ "summary": [ { "kind": "text", - "text": " Standard_E48as_v7 — 48 vCPUs — 384 GB RAM — Premium SSD " + "text": " Standard_E4ads_v6 — 4 vCPUs — 32 GB RAM — Premium SSD " } ] } }, { - "name": "StandardE4asV7", + "name": "StandardE64adsV6", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardEasv7.StandardE4asV7", + "signature": "public const static string StandardEadv6.StandardE64adsV6", "returnType": "string", "isStatic": true, "isConst": true, @@ -14223,16 +14787,16 @@ "summary": [ { "kind": "text", - "text": " Standard_E4as_v7 — 4 vCPUs — 32 GB RAM — Premium SSD " + "text": " Standard_E64ads_v6 — 64 vCPUs — 512 GB RAM — Premium SSD " } ] } }, { - "name": "StandardE6416asV7", + "name": "StandardE8adsV6", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardEasv7.StandardE6416asV7", + "signature": "public const static string StandardEadv6.StandardE8adsV6", "returnType": "string", "isStatic": true, "isConst": true, @@ -14240,16 +14804,16 @@ "summary": [ { "kind": "text", - "text": " Standard_E64-16as_v7 — 64 vCPUs — 512 GB RAM — Premium SSD " + "text": " Standard_E8ads_v6 — 8 vCPUs — 64 GB RAM — Premium SSD " } ] } }, { - "name": "StandardE6432asV7", + "name": "StandardE9624adsV6", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardEasv7.StandardE6432asV7", + "signature": "public const static string StandardEadv6.StandardE9624adsV6", "returnType": "string", "isStatic": true, "isConst": true, @@ -14257,16 +14821,16 @@ "summary": [ { "kind": "text", - "text": " Standard_E64-32as_v7 — 64 vCPUs — 512 GB RAM — Premium SSD " + "text": " Standard_E96-24ads_v6 — 96 vCPUs — 672 GB RAM — Premium SSD " } ] } }, { - "name": "StandardE64asV7", + "name": "StandardE9648adsV6", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardEasv7.StandardE64asV7", + "signature": "public const static string StandardEadv6.StandardE9648adsV6", "returnType": "string", "isStatic": true, "isConst": true, @@ -14274,16 +14838,16 @@ "summary": [ { "kind": "text", - "text": " Standard_E64as_v7 — 64 vCPUs — 512 GB RAM — Premium SSD " + "text": " Standard_E96-48ads_v6 — 96 vCPUs — 672 GB RAM — Premium SSD " } ] } }, { - "name": "StandardE82asV7", + "name": "StandardE96adsV6", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardEasv7.StandardE82asV7", + "signature": "public const static string StandardEadv6.StandardE96adsV6", "returnType": "string", "isStatic": true, "isConst": true, @@ -14291,16 +14855,35 @@ "summary": [ { "kind": "text", - "text": " Standard_E8-2as_v7 — 8 vCPUs — 64 GB RAM — Premium SSD " + "text": " Standard_E96ads_v6 — 96 vCPUs — 672 GB RAM — Premium SSD " } ] } - }, + } + ] + }, + { + "name": "StandardEASv4", + "fullName": "Aspire.Hosting.Azure.Kubernetes.AksNodeVmSizes.StandardEASv4", + "namespace": "Aspire.Hosting.Azure.Kubernetes", + "kind": "class", + "accessibility": "public", + "isStatic": true, + "docs": { + "summary": [ + { + "kind": "text", + "text": " VM sizes in the standardEASv4Family. " + } + ] + }, + "sourceFile": "src/Aspire.Hosting.Azure.Kubernetes/AksNodeVmSizes.cs", + "members": [ { - "name": "StandardE84asV7", + "name": "StandardE164asV4", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardEasv7.StandardE84asV7", + "signature": "public const static string StandardEASv4.StandardE164asV4", "returnType": "string", "isStatic": true, "isConst": true, @@ -14308,16 +14891,16 @@ "summary": [ { "kind": "text", - "text": " Standard_E8-4as_v7 — 8 vCPUs — 64 GB RAM — Premium SSD " + "text": " Standard_E16-4as_v4 — 16 vCPUs — 128 GB RAM — Premium SSD " } ] } }, { - "name": "StandardE8asV7", + "name": "StandardE168asV4", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardEasv7.StandardE8asV7", + "signature": "public const static string StandardEASv4.StandardE168asV4", "returnType": "string", "isStatic": true, "isConst": true, @@ -14325,16 +14908,16 @@ "summary": [ { "kind": "text", - "text": " Standard_E8as_v7 — 8 vCPUs — 64 GB RAM — Premium SSD " + "text": " Standard_E16-8as_v4 — 16 vCPUs — 128 GB RAM — Premium SSD " } ] } }, { - "name": "StandardE9624asV7", + "name": "StandardE16asV4", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardEasv7.StandardE9624asV7", + "signature": "public const static string StandardEASv4.StandardE16asV4", "returnType": "string", "isStatic": true, "isConst": true, @@ -14342,16 +14925,16 @@ "summary": [ { "kind": "text", - "text": " Standard_E96-24as_v7 — 96 vCPUs — 768 GB RAM — Premium SSD " + "text": " Standard_E16as_v4 — 16 vCPUs — 128 GB RAM — Premium SSD " } ] } }, { - "name": "StandardE9648asV7", + "name": "StandardE20asV4", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardEasv7.StandardE9648asV7", + "signature": "public const static string StandardEASv4.StandardE20asV4", "returnType": "string", "isStatic": true, "isConst": true, @@ -14359,16 +14942,16 @@ "summary": [ { "kind": "text", - "text": " Standard_E96-48as_v7 — 96 vCPUs — 768 GB RAM — Premium SSD " + "text": " Standard_E20as_v4 — 20 vCPUs — 160 GB RAM — Premium SSD " } ] } }, { - "name": "StandardE96asV7", + "name": "StandardE2asV4", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardEasv7.StandardE96asV7", + "signature": "public const static string StandardEASv4.StandardE2asV4", "returnType": "string", "isStatic": true, "isConst": true, @@ -14376,35 +14959,16 @@ "summary": [ { "kind": "text", - "text": " Standard_E96as_v7 — 96 vCPUs — 768 GB RAM — Premium SSD " + "text": " Standard_E2as_v4 — 2 vCPUs — 16 GB RAM — Premium SSD " } ] } - } - ] - }, - { - "name": "StandardEAv4", - "fullName": "Aspire.Hosting.Azure.Kubernetes.AksNodeVmSizes.StandardEAv4", - "namespace": "Aspire.Hosting.Azure.Kubernetes", - "kind": "class", - "accessibility": "public", - "isStatic": true, - "docs": { - "summary": [ - { - "kind": "text", - "text": " VM sizes in the standardEAv4Family. " - } - ] - }, - "sourceFile": "src/Aspire.Hosting.Azure.Kubernetes/AksNodeVmSizes.cs", - "members": [ + }, { - "name": "StandardE16aV4", + "name": "StandardE3216asV4", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardEAv4.StandardE16aV4", + "signature": "public const static string StandardEASv4.StandardE3216asV4", "returnType": "string", "isStatic": true, "isConst": true, @@ -14412,16 +14976,16 @@ "summary": [ { "kind": "text", - "text": " Standard_E16a_v4 — 16 vCPUs — 128 GB RAM " + "text": " Standard_E32-16as_v4 — 32 vCPUs — 256 GB RAM — Premium SSD " } ] } }, { - "name": "StandardE20aV4", + "name": "StandardE328asV4", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardEAv4.StandardE20aV4", + "signature": "public const static string StandardEASv4.StandardE328asV4", "returnType": "string", "isStatic": true, "isConst": true, @@ -14429,16 +14993,16 @@ "summary": [ { "kind": "text", - "text": " Standard_E20a_v4 — 20 vCPUs — 160 GB RAM " + "text": " Standard_E32-8as_v4 — 32 vCPUs — 256 GB RAM — Premium SSD " } ] } }, { - "name": "StandardE2aV4", + "name": "StandardE32asV4", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardEAv4.StandardE2aV4", + "signature": "public const static string StandardEASv4.StandardE32asV4", "returnType": "string", "isStatic": true, "isConst": true, @@ -14446,16 +15010,16 @@ "summary": [ { "kind": "text", - "text": " Standard_E2a_v4 — 2 vCPUs — 16 GB RAM " + "text": " Standard_E32as_v4 — 32 vCPUs — 256 GB RAM — Premium SSD " } ] } }, { - "name": "StandardE32aV4", + "name": "StandardE42asV4", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardEAv4.StandardE32aV4", + "signature": "public const static string StandardEASv4.StandardE42asV4", "returnType": "string", "isStatic": true, "isConst": true, @@ -14463,16 +15027,16 @@ "summary": [ { "kind": "text", - "text": " Standard_E32a_v4 — 32 vCPUs — 256 GB RAM " + "text": " Standard_E4-2as_v4 — 4 vCPUs — 32 GB RAM — Premium SSD " } ] } }, { - "name": "StandardE48aV4", + "name": "StandardE48asV4", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardEAv4.StandardE48aV4", + "signature": "public const static string StandardEASv4.StandardE48asV4", "returnType": "string", "isStatic": true, "isConst": true, @@ -14480,16 +15044,16 @@ "summary": [ { "kind": "text", - "text": " Standard_E48a_v4 — 48 vCPUs — 384 GB RAM " + "text": " Standard_E48as_v4 — 48 vCPUs — 384 GB RAM — Premium SSD " } ] } }, { - "name": "StandardE4aV4", + "name": "StandardE4asV4", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardEAv4.StandardE4aV4", + "signature": "public const static string StandardEASv4.StandardE4asV4", "returnType": "string", "isStatic": true, "isConst": true, @@ -14497,16 +15061,16 @@ "summary": [ { "kind": "text", - "text": " Standard_E4a_v4 — 4 vCPUs — 32 GB RAM " + "text": " Standard_E4as_v4 — 4 vCPUs — 32 GB RAM — Premium SSD " } ] } }, { - "name": "StandardE64aV4", + "name": "StandardE6416asV4", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardEAv4.StandardE64aV4", + "signature": "public const static string StandardEASv4.StandardE6416asV4", "returnType": "string", "isStatic": true, "isConst": true, @@ -14514,16 +15078,16 @@ "summary": [ { "kind": "text", - "text": " Standard_E64a_v4 — 64 vCPUs — 512 GB RAM " + "text": " Standard_E64-16as_v4 — 64 vCPUs — 512 GB RAM — Premium SSD " } ] } }, { - "name": "StandardE8aV4", + "name": "StandardE6432asV4", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardEAv4.StandardE8aV4", + "signature": "public const static string StandardEASv4.StandardE6432asV4", "returnType": "string", "isStatic": true, "isConst": true, @@ -14531,16 +15095,16 @@ "summary": [ { "kind": "text", - "text": " Standard_E8a_v4 — 8 vCPUs — 64 GB RAM " + "text": " Standard_E64-32as_v4 — 64 vCPUs — 512 GB RAM — Premium SSD " } ] } }, { - "name": "StandardE96aV4", + "name": "StandardE64asV4", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardEAv4.StandardE96aV4", + "signature": "public const static string StandardEASv4.StandardE64asV4", "returnType": "string", "isStatic": true, "isConst": true, @@ -14548,35 +15112,16 @@ "summary": [ { "kind": "text", - "text": " Standard_E96a_v4 — 96 vCPUs — 672 GB RAM " + "text": " Standard_E64as_v4 — 64 vCPUs — 512 GB RAM — Premium SSD " } ] } - } - ] - }, - { - "name": "StandardEav6", - "fullName": "Aspire.Hosting.Azure.Kubernetes.AksNodeVmSizes.StandardEav6", - "namespace": "Aspire.Hosting.Azure.Kubernetes", - "kind": "class", - "accessibility": "public", - "isStatic": true, - "docs": { - "summary": [ - { - "kind": "text", - "text": " VM sizes in the standardEav6Family. " - } - ] - }, - "sourceFile": "src/Aspire.Hosting.Azure.Kubernetes/AksNodeVmSizes.cs", - "members": [ + }, { - "name": "StandardE16asV6", + "name": "StandardE82asV4", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardEav6.StandardE16asV6", + "signature": "public const static string StandardEASv4.StandardE82asV4", "returnType": "string", "isStatic": true, "isConst": true, @@ -14584,16 +15129,16 @@ "summary": [ { "kind": "text", - "text": " Standard_E16as_v6 — 16 vCPUs — 128 GB RAM — Premium SSD " + "text": " Standard_E8-2as_v4 — 8 vCPUs — 64 GB RAM — Premium SSD " } ] } }, { - "name": "StandardE20asV6", + "name": "StandardE84asV4", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardEav6.StandardE20asV6", + "signature": "public const static string StandardEASv4.StandardE84asV4", "returnType": "string", "isStatic": true, "isConst": true, @@ -14601,16 +15146,16 @@ "summary": [ { "kind": "text", - "text": " Standard_E20as_v6 — 20 vCPUs — 160 GB RAM — Premium SSD " + "text": " Standard_E8-4as_v4 — 8 vCPUs — 64 GB RAM — Premium SSD " } ] } }, { - "name": "StandardE2asV6", + "name": "StandardE8asV4", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardEav6.StandardE2asV6", + "signature": "public const static string StandardEASv4.StandardE8asV4", "returnType": "string", "isStatic": true, "isConst": true, @@ -14618,16 +15163,16 @@ "summary": [ { "kind": "text", - "text": " Standard_E2as_v6 — 2 vCPUs — 16 GB RAM — Premium SSD " + "text": " Standard_E8as_v4 — 8 vCPUs — 64 GB RAM — Premium SSD " } ] } }, { - "name": "StandardE32asV6", + "name": "StandardE9624asV4", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardEav6.StandardE32asV6", + "signature": "public const static string StandardEASv4.StandardE9624asV4", "returnType": "string", "isStatic": true, "isConst": true, @@ -14635,16 +15180,16 @@ "summary": [ { "kind": "text", - "text": " Standard_E32as_v6 — 32 vCPUs — 256 GB RAM — Premium SSD " + "text": " Standard_E96-24as_v4 — 96 vCPUs — 672 GB RAM — Premium SSD " } ] } }, { - "name": "StandardE48asV6", + "name": "StandardE9648asV4", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardEav6.StandardE48asV6", + "signature": "public const static string StandardEASv4.StandardE9648asV4", "returnType": "string", "isStatic": true, "isConst": true, @@ -14652,16 +15197,16 @@ "summary": [ { "kind": "text", - "text": " Standard_E48as_v6 — 48 vCPUs — 384 GB RAM — Premium SSD " + "text": " Standard_E96-48as_v4 — 96 vCPUs — 672 GB RAM — Premium SSD " } ] } }, { - "name": "StandardE4asV6", + "name": "StandardE96asV4", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardEav6.StandardE4asV6", + "signature": "public const static string StandardEASv4.StandardE96asV4", "returnType": "string", "isStatic": true, "isConst": true, @@ -14669,16 +15214,35 @@ "summary": [ { "kind": "text", - "text": " Standard_E4as_v6 — 4 vCPUs — 32 GB RAM — Premium SSD " + "text": " Standard_E96as_v4 — 96 vCPUs — 672 GB RAM — Premium SSD " } ] } - }, + } + ] + }, + { + "name": "StandardEASv5", + "fullName": "Aspire.Hosting.Azure.Kubernetes.AksNodeVmSizes.StandardEASv5", + "namespace": "Aspire.Hosting.Azure.Kubernetes", + "kind": "class", + "accessibility": "public", + "isStatic": true, + "docs": { + "summary": [ + { + "kind": "text", + "text": " VM sizes in the standardEASv5Family. " + } + ] + }, + "sourceFile": "src/Aspire.Hosting.Azure.Kubernetes/AksNodeVmSizes.cs", + "members": [ { - "name": "StandardE64asV6", + "name": "StandardE164asV5", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardEav6.StandardE64asV6", + "signature": "public const static string StandardEASv5.StandardE164asV5", "returnType": "string", "isStatic": true, "isConst": true, @@ -14686,16 +15250,16 @@ "summary": [ { "kind": "text", - "text": " Standard_E64as_v6 — 64 vCPUs — 512 GB RAM — Premium SSD " + "text": " Standard_E16-4as_v5 — 16 vCPUs — 128 GB RAM — Premium SSD " } ] } }, { - "name": "StandardE8asV6", + "name": "StandardE168asV5", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardEav6.StandardE8asV6", + "signature": "public const static string StandardEASv5.StandardE168asV5", "returnType": "string", "isStatic": true, "isConst": true, @@ -14703,16 +15267,16 @@ "summary": [ { "kind": "text", - "text": " Standard_E8as_v6 — 8 vCPUs — 64 GB RAM — Premium SSD " + "text": " Standard_E16-8as_v5 — 16 vCPUs — 128 GB RAM — Premium SSD " } ] } }, { - "name": "StandardE96asV6", + "name": "StandardE16asV5", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardEav6.StandardE96asV6", + "signature": "public const static string StandardEASv5.StandardE16asV5", "returnType": "string", "isStatic": true, "isConst": true, @@ -14720,35 +15284,33 @@ "summary": [ { "kind": "text", - "text": " Standard_E96as_v6 — 96 vCPUs — 672 GB RAM — Premium SSD " + "text": " Standard_E16as_v5 — 16 vCPUs — 128 GB RAM — Premium SSD " } ] } - } - ] - }, - { - "name": "StandardEBDSv5", - "fullName": "Aspire.Hosting.Azure.Kubernetes.AksNodeVmSizes.StandardEBDSv5", - "namespace": "Aspire.Hosting.Azure.Kubernetes", - "kind": "class", - "accessibility": "public", - "isStatic": true, - "docs": { - "summary": [ - { - "kind": "text", - "text": " VM sizes in the standardEBDSv5Family. " + }, + { + "name": "StandardE20asV5", + "kind": "field", + "accessibility": "public", + "signature": "public const static string StandardEASv5.StandardE20asV5", + "returnType": "string", + "isStatic": true, + "isConst": true, + "docs": { + "summary": [ + { + "kind": "text", + "text": " Standard_E20as_v5 — 20 vCPUs — 160 GB RAM — Premium SSD " + } + ] } - ] - }, - "sourceFile": "src/Aspire.Hosting.Azure.Kubernetes/AksNodeVmSizes.cs", - "members": [ + }, { - "name": "StandardE16bdsV5", + "name": "StandardE2asV5", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardEBDSv5.StandardE16bdsV5", + "signature": "public const static string StandardEASv5.StandardE2asV5", "returnType": "string", "isStatic": true, "isConst": true, @@ -14756,16 +15318,16 @@ "summary": [ { "kind": "text", - "text": " Standard_E16bds_v5 — 16 vCPUs — 128 GB RAM — Premium SSD " + "text": " Standard_E2as_v5 — 2 vCPUs — 16 GB RAM — Premium SSD " } ] } }, { - "name": "StandardE2bdsV5", + "name": "StandardE3216asV5", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardEBDSv5.StandardE2bdsV5", + "signature": "public const static string StandardEASv5.StandardE3216asV5", "returnType": "string", "isStatic": true, "isConst": true, @@ -14773,16 +15335,16 @@ "summary": [ { "kind": "text", - "text": " Standard_E2bds_v5 — 2 vCPUs — 16 GB RAM — Premium SSD " + "text": " Standard_E32-16as_v5 — 32 vCPUs — 256 GB RAM — Premium SSD " } ] } }, { - "name": "StandardE32bdsV5", + "name": "StandardE328asV5", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardEBDSv5.StandardE32bdsV5", + "signature": "public const static string StandardEASv5.StandardE328asV5", "returnType": "string", "isStatic": true, "isConst": true, @@ -14790,16 +15352,16 @@ "summary": [ { "kind": "text", - "text": " Standard_E32bds_v5 — 32 vCPUs — 256 GB RAM — Premium SSD " + "text": " Standard_E32-8as_v5 — 32 vCPUs — 256 GB RAM — Premium SSD " } ] } }, { - "name": "StandardE48bdsV5", + "name": "StandardE32asV5", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardEBDSv5.StandardE48bdsV5", + "signature": "public const static string StandardEASv5.StandardE32asV5", "returnType": "string", "isStatic": true, "isConst": true, @@ -14807,16 +15369,16 @@ "summary": [ { "kind": "text", - "text": " Standard_E48bds_v5 — 48 vCPUs — 384 GB RAM — Premium SSD " + "text": " Standard_E32as_v5 — 32 vCPUs — 256 GB RAM — Premium SSD " } ] } }, { - "name": "StandardE4bdsV5", + "name": "StandardE42asV5", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardEBDSv5.StandardE4bdsV5", + "signature": "public const static string StandardEASv5.StandardE42asV5", "returnType": "string", "isStatic": true, "isConst": true, @@ -14824,16 +15386,16 @@ "summary": [ { "kind": "text", - "text": " Standard_E4bds_v5 — 4 vCPUs — 32 GB RAM — Premium SSD " + "text": " Standard_E4-2as_v5 — 4 vCPUs — 32 GB RAM — Premium SSD " } ] } }, { - "name": "StandardE64bdsV5", + "name": "StandardE48asV5", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardEBDSv5.StandardE64bdsV5", + "signature": "public const static string StandardEASv5.StandardE48asV5", "returnType": "string", "isStatic": true, "isConst": true, @@ -14841,16 +15403,16 @@ "summary": [ { "kind": "text", - "text": " Standard_E64bds_v5 — 64 vCPUs — 512 GB RAM — Premium SSD " + "text": " Standard_E48as_v5 — 48 vCPUs — 384 GB RAM — Premium SSD " } ] } }, { - "name": "StandardE8bdsV5", + "name": "StandardE4asV5", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardEBDSv5.StandardE8bdsV5", + "signature": "public const static string StandardEASv5.StandardE4asV5", "returnType": "string", "isStatic": true, "isConst": true, @@ -14858,16 +15420,16 @@ "summary": [ { "kind": "text", - "text": " Standard_E8bds_v5 — 8 vCPUs — 64 GB RAM — Premium SSD " + "text": " Standard_E4as_v5 — 4 vCPUs — 32 GB RAM — Premium SSD " } ] } }, { - "name": "StandardE96bdsV5", + "name": "StandardE6416asV5", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardEBDSv5.StandardE96bdsV5", + "signature": "public const static string StandardEASv5.StandardE6416asV5", "returnType": "string", "isStatic": true, "isConst": true, @@ -14875,35 +15437,16 @@ "summary": [ { "kind": "text", - "text": " Standard_E96bds_v5 — 96 vCPUs — 672 GB RAM — Premium SSD " + "text": " Standard_E64-16as_v5 — 64 vCPUs — 512 GB RAM — Premium SSD " } ] } - } - ] - }, - { - "name": "StandardEBSv5", - "fullName": "Aspire.Hosting.Azure.Kubernetes.AksNodeVmSizes.StandardEBSv5", - "namespace": "Aspire.Hosting.Azure.Kubernetes", - "kind": "class", - "accessibility": "public", - "isStatic": true, - "docs": { - "summary": [ - { - "kind": "text", - "text": " VM sizes in the standardEBSv5Family. " - } - ] - }, - "sourceFile": "src/Aspire.Hosting.Azure.Kubernetes/AksNodeVmSizes.cs", - "members": [ + }, { - "name": "StandardE16bsV5", + "name": "StandardE6432asV5", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardEBSv5.StandardE16bsV5", + "signature": "public const static string StandardEASv5.StandardE6432asV5", "returnType": "string", "isStatic": true, "isConst": true, @@ -14911,16 +15454,16 @@ "summary": [ { "kind": "text", - "text": " Standard_E16bs_v5 — 16 vCPUs — 128 GB RAM — Premium SSD " + "text": " Standard_E64-32as_v5 — 64 vCPUs — 512 GB RAM — Premium SSD " } ] } }, { - "name": "StandardE2bsV5", + "name": "StandardE64asV5", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardEBSv5.StandardE2bsV5", + "signature": "public const static string StandardEASv5.StandardE64asV5", "returnType": "string", "isStatic": true, "isConst": true, @@ -14928,16 +15471,16 @@ "summary": [ { "kind": "text", - "text": " Standard_E2bs_v5 — 2 vCPUs — 16 GB RAM — Premium SSD " + "text": " Standard_E64as_v5 — 64 vCPUs — 512 GB RAM — Premium SSD " } ] } }, { - "name": "StandardE32bsV5", + "name": "StandardE82asV5", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardEBSv5.StandardE32bsV5", + "signature": "public const static string StandardEASv5.StandardE82asV5", "returnType": "string", "isStatic": true, "isConst": true, @@ -14945,16 +15488,16 @@ "summary": [ { "kind": "text", - "text": " Standard_E32bs_v5 — 32 vCPUs — 256 GB RAM — Premium SSD " + "text": " Standard_E8-2as_v5 — 8 vCPUs — 64 GB RAM — Premium SSD " } ] } }, { - "name": "StandardE48bsV5", + "name": "StandardE84asV5", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardEBSv5.StandardE48bsV5", + "signature": "public const static string StandardEASv5.StandardE84asV5", "returnType": "string", "isStatic": true, "isConst": true, @@ -14962,16 +15505,16 @@ "summary": [ { "kind": "text", - "text": " Standard_E48bs_v5 — 48 vCPUs — 384 GB RAM — Premium SSD " + "text": " Standard_E8-4as_v5 — 8 vCPUs — 64 GB RAM — Premium SSD " } ] } }, { - "name": "StandardE4bsV5", + "name": "StandardE8asV5", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardEBSv5.StandardE4bsV5", + "signature": "public const static string StandardEASv5.StandardE8asV5", "returnType": "string", "isStatic": true, "isConst": true, @@ -14979,16 +15522,16 @@ "summary": [ { "kind": "text", - "text": " Standard_E4bs_v5 — 4 vCPUs — 32 GB RAM — Premium SSD " + "text": " Standard_E8as_v5 — 8 vCPUs — 64 GB RAM — Premium SSD " } ] } }, { - "name": "StandardE64bsV5", + "name": "StandardE9624asV5", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardEBSv5.StandardE64bsV5", + "signature": "public const static string StandardEASv5.StandardE9624asV5", "returnType": "string", "isStatic": true, "isConst": true, @@ -14996,16 +15539,16 @@ "summary": [ { "kind": "text", - "text": " Standard_E64bs_v5 — 64 vCPUs — 512 GB RAM — Premium SSD " + "text": " Standard_E96-24as_v5 — 96 vCPUs — 672 GB RAM — Premium SSD " } ] } }, { - "name": "StandardE8bsV5", + "name": "StandardE9648asV5", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardEBSv5.StandardE8bsV5", + "signature": "public const static string StandardEASv5.StandardE9648asV5", "returnType": "string", "isStatic": true, "isConst": true, @@ -15013,16 +15556,16 @@ "summary": [ { "kind": "text", - "text": " Standard_E8bs_v5 — 8 vCPUs — 64 GB RAM — Premium SSD " + "text": " Standard_E96-48as_v5 — 96 vCPUs — 672 GB RAM — Premium SSD " } ] } }, { - "name": "StandardE96bsV5", + "name": "StandardE96asV5", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardEBSv5.StandardE96bsV5", + "signature": "public const static string StandardEASv5.StandardE96asV5", "returnType": "string", "isStatic": true, "isConst": true, @@ -15030,7 +15573,7 @@ "summary": [ { "kind": "text", - "text": " Standard_E96bs_v5 — 96 vCPUs — 672 GB RAM — Premium SSD " + "text": " Standard_E96as_v5 — 96 vCPUs — 672 GB RAM — Premium SSD " } ] } @@ -15038,8 +15581,8 @@ ] }, { - "name": "StandardECACCV5", - "fullName": "Aspire.Hosting.Azure.Kubernetes.AksNodeVmSizes.StandardECACCV5", + "name": "StandardEasv7", + "fullName": "Aspire.Hosting.Azure.Kubernetes.AksNodeVmSizes.StandardEasv7", "namespace": "Aspire.Hosting.Azure.Kubernetes", "kind": "class", "accessibility": "public", @@ -15048,17 +15591,17 @@ "summary": [ { "kind": "text", - "text": " VM sizes in the standardECACCV5Family. " + "text": " VM sizes in the StandardEasv7Family. " } ] }, "sourceFile": "src/Aspire.Hosting.Azure.Kubernetes/AksNodeVmSizes.cs", "members": [ { - "name": "StandardEC16asCcV5", + "name": "StandardE12832asV7", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardECACCV5.StandardEC16asCcV5", + "signature": "public const static string StandardEasv7.StandardE12832asV7", "returnType": "string", "isStatic": true, "isConst": true, @@ -15066,16 +15609,16 @@ "summary": [ { "kind": "text", - "text": " Standard_EC16as_cc_v5 — 16 vCPUs — 128 GB RAM — Premium SSD " + "text": " Standard_E128-32as_v7 — 128 vCPUs — 1024 GB RAM — Premium SSD " } ] } }, { - "name": "StandardEC20asCcV5", + "name": "StandardE12864asV7", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardECACCV5.StandardEC20asCcV5", + "signature": "public const static string StandardEasv7.StandardE12864asV7", "returnType": "string", "isStatic": true, "isConst": true, @@ -15083,16 +15626,16 @@ "summary": [ { "kind": "text", - "text": " Standard_EC20as_cc_v5 — 20 vCPUs — 160 GB RAM — Premium SSD " + "text": " Standard_E128-64as_v7 — 128 vCPUs — 1024 GB RAM — Premium SSD " } ] } }, { - "name": "StandardEC32asCcV5", + "name": "StandardE128asV7", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardECACCV5.StandardEC32asCcV5", + "signature": "public const static string StandardEasv7.StandardE128asV7", "returnType": "string", "isStatic": true, "isConst": true, @@ -15100,16 +15643,16 @@ "summary": [ { "kind": "text", - "text": " Standard_EC32as_cc_v5 — 32 vCPUs — 192 GB RAM — Premium SSD " + "text": " Standard_E128as_v7 — 128 vCPUs — 1024 GB RAM — Premium SSD " } ] } }, { - "name": "StandardEC48asCcV5", + "name": "StandardE160asV7", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardECACCV5.StandardEC48asCcV5", + "signature": "public const static string StandardEasv7.StandardE160asV7", "returnType": "string", "isStatic": true, "isConst": true, @@ -15117,16 +15660,16 @@ "summary": [ { "kind": "text", - "text": " Standard_EC48as_cc_v5 — 48 vCPUs — 384 GB RAM — Premium SSD " + "text": " Standard_E160as_v7 — 160 vCPUs — 1280 GB RAM — Premium SSD " } ] } }, { - "name": "StandardEC4asCcV5", + "name": "StandardE164asV7", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardECACCV5.StandardEC4asCcV5", + "signature": "public const static string StandardEasv7.StandardE164asV7", "returnType": "string", "isStatic": true, "isConst": true, @@ -15134,16 +15677,16 @@ "summary": [ { "kind": "text", - "text": " Standard_EC4as_cc_v5 — 4 vCPUs — 32 GB RAM — Premium SSD " + "text": " Standard_E16-4as_v7 — 16 vCPUs — 128 GB RAM — Premium SSD " } ] } }, { - "name": "StandardEC64asCcV5", + "name": "StandardE168asV7", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardECACCV5.StandardEC64asCcV5", + "signature": "public const static string StandardEasv7.StandardE168asV7", "returnType": "string", "isStatic": true, "isConst": true, @@ -15151,16 +15694,16 @@ "summary": [ { "kind": "text", - "text": " Standard_EC64as_cc_v5 — 64 vCPUs — 512 GB RAM — Premium SSD " + "text": " Standard_E16-8as_v7 — 16 vCPUs — 128 GB RAM — Premium SSD " } ] } }, { - "name": "StandardEC8asCcV5", + "name": "StandardE16asV7", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardECACCV5.StandardEC8asCcV5", + "signature": "public const static string StandardEasv7.StandardE16asV7", "returnType": "string", "isStatic": true, "isConst": true, @@ -15168,16 +15711,16 @@ "summary": [ { "kind": "text", - "text": " Standard_EC8as_cc_v5 — 8 vCPUs — 64 GB RAM — Premium SSD " + "text": " Standard_E16as_v7 — 16 vCPUs — 128 GB RAM — Premium SSD " } ] } }, { - "name": "StandardEC96asCcV5", + "name": "StandardE2asV7", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardECACCV5.StandardEC96asCcV5", + "signature": "public const static string StandardEasv7.StandardE2asV7", "returnType": "string", "isStatic": true, "isConst": true, @@ -15185,35 +15728,16 @@ "summary": [ { "kind": "text", - "text": " Standard_EC96as_cc_v5 — 96 vCPUs — 672 GB RAM — Premium SSD " + "text": " Standard_E2as_v7 — 2 vCPUs — 16 GB RAM — Premium SSD " } ] } - } - ] - }, - { - "name": "StandardECADCCV5", - "fullName": "Aspire.Hosting.Azure.Kubernetes.AksNodeVmSizes.StandardECADCCV5", - "namespace": "Aspire.Hosting.Azure.Kubernetes", - "kind": "class", - "accessibility": "public", - "isStatic": true, - "docs": { - "summary": [ - { - "kind": "text", - "text": " VM sizes in the standardECADCCV5Family. " - } - ] - }, - "sourceFile": "src/Aspire.Hosting.Azure.Kubernetes/AksNodeVmSizes.cs", - "members": [ + }, { - "name": "StandardEC16adsCcV5", + "name": "StandardE3216asV7", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardECADCCV5.StandardEC16adsCcV5", + "signature": "public const static string StandardEasv7.StandardE3216asV7", "returnType": "string", "isStatic": true, "isConst": true, @@ -15221,16 +15745,16 @@ "summary": [ { "kind": "text", - "text": " Standard_EC16ads_cc_v5 — 16 vCPUs — 128 GB RAM — Premium SSD " + "text": " Standard_E32-16as_v7 — 32 vCPUs — 256 GB RAM — Premium SSD " } ] } }, { - "name": "StandardEC20adsCcV5", + "name": "StandardE328asV7", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardECADCCV5.StandardEC20adsCcV5", + "signature": "public const static string StandardEasv7.StandardE328asV7", "returnType": "string", "isStatic": true, "isConst": true, @@ -15238,16 +15762,16 @@ "summary": [ { "kind": "text", - "text": " Standard_EC20ads_cc_v5 — 20 vCPUs — 160 GB RAM — Premium SSD " + "text": " Standard_E32-8as_v7 — 32 vCPUs — 256 GB RAM — Premium SSD " } ] } }, { - "name": "StandardEC32adsCcV5", + "name": "StandardE32asV7", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardECADCCV5.StandardEC32adsCcV5", + "signature": "public const static string StandardEasv7.StandardE32asV7", "returnType": "string", "isStatic": true, "isConst": true, @@ -15255,16 +15779,16 @@ "summary": [ { "kind": "text", - "text": " Standard_EC32ads_cc_v5 — 32 vCPUs — 192 GB RAM — Premium SSD " + "text": " Standard_E32as_v7 — 32 vCPUs — 256 GB RAM — Premium SSD " } ] } }, { - "name": "StandardEC48adsCcV5", + "name": "StandardE42asV7", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardECADCCV5.StandardEC48adsCcV5", + "signature": "public const static string StandardEasv7.StandardE42asV7", "returnType": "string", "isStatic": true, "isConst": true, @@ -15272,16 +15796,16 @@ "summary": [ { "kind": "text", - "text": " Standard_EC48ads_cc_v5 — 48 vCPUs — 384 GB RAM — Premium SSD " + "text": " Standard_E4-2as_v7 — 4 vCPUs — 32 GB RAM — Premium SSD " } ] } }, { - "name": "StandardEC4adsCcV5", + "name": "StandardE48asV7", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardECADCCV5.StandardEC4adsCcV5", + "signature": "public const static string StandardEasv7.StandardE48asV7", "returnType": "string", "isStatic": true, "isConst": true, @@ -15289,16 +15813,16 @@ "summary": [ { "kind": "text", - "text": " Standard_EC4ads_cc_v5 — 4 vCPUs — 32 GB RAM — Premium SSD " + "text": " Standard_E48as_v7 — 48 vCPUs — 384 GB RAM — Premium SSD " } ] } }, { - "name": "StandardEC64adsCcV5", + "name": "StandardE4asV7", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardECADCCV5.StandardEC64adsCcV5", + "signature": "public const static string StandardEasv7.StandardE4asV7", "returnType": "string", "isStatic": true, "isConst": true, @@ -15306,16 +15830,16 @@ "summary": [ { "kind": "text", - "text": " Standard_EC64ads_cc_v5 — 64 vCPUs — 512 GB RAM — Premium SSD " + "text": " Standard_E4as_v7 — 4 vCPUs — 32 GB RAM — Premium SSD " } ] } }, { - "name": "StandardEC8adsCcV5", + "name": "StandardE6416asV7", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardECADCCV5.StandardEC8adsCcV5", + "signature": "public const static string StandardEasv7.StandardE6416asV7", "returnType": "string", "isStatic": true, "isConst": true, @@ -15323,16 +15847,16 @@ "summary": [ { "kind": "text", - "text": " Standard_EC8ads_cc_v5 — 8 vCPUs — 64 GB RAM — Premium SSD " + "text": " Standard_E64-16as_v7 — 64 vCPUs — 512 GB RAM — Premium SSD " } ] } }, { - "name": "StandardEC96adsCcV5", + "name": "StandardE6432asV7", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardECADCCV5.StandardEC96adsCcV5", + "signature": "public const static string StandardEasv7.StandardE6432asV7", "returnType": "string", "isStatic": true, "isConst": true, @@ -15340,35 +15864,16 @@ "summary": [ { "kind": "text", - "text": " Standard_EC96ads_cc_v5 — 96 vCPUs — 672 GB RAM — Premium SSD " + "text": " Standard_E64-32as_v7 — 64 vCPUs — 512 GB RAM — Premium SSD " } ] } - } - ] - }, - { - "name": "StandardECADSv5", - "fullName": "Aspire.Hosting.Azure.Kubernetes.AksNodeVmSizes.StandardECADSv5", - "namespace": "Aspire.Hosting.Azure.Kubernetes", - "kind": "class", - "accessibility": "public", - "isStatic": true, - "docs": { - "summary": [ - { - "kind": "text", - "text": " VM sizes in the standardECADSv5Family. " - } - ] - }, - "sourceFile": "src/Aspire.Hosting.Azure.Kubernetes/AksNodeVmSizes.cs", - "members": [ + }, { - "name": "StandardEC16adsV5", + "name": "StandardE64asV7", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardECADSv5.StandardEC16adsV5", + "signature": "public const static string StandardEasv7.StandardE64asV7", "returnType": "string", "isStatic": true, "isConst": true, @@ -15376,16 +15881,16 @@ "summary": [ { "kind": "text", - "text": " Standard_EC16ads_v5 — 16 vCPUs — 128 GB RAM — Premium SSD " + "text": " Standard_E64as_v7 — 64 vCPUs — 512 GB RAM — Premium SSD " } ] } }, { - "name": "StandardEC20adsV5", + "name": "StandardE82asV7", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardECADSv5.StandardEC20adsV5", + "signature": "public const static string StandardEasv7.StandardE82asV7", "returnType": "string", "isStatic": true, "isConst": true, @@ -15393,16 +15898,16 @@ "summary": [ { "kind": "text", - "text": " Standard_EC20ads_v5 — 20 vCPUs — 160 GB RAM — Premium SSD " + "text": " Standard_E8-2as_v7 — 8 vCPUs — 64 GB RAM — Premium SSD " } ] } }, { - "name": "StandardEC2adsV5", + "name": "StandardE84asV7", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardECADSv5.StandardEC2adsV5", + "signature": "public const static string StandardEasv7.StandardE84asV7", "returnType": "string", "isStatic": true, "isConst": true, @@ -15410,16 +15915,16 @@ "summary": [ { "kind": "text", - "text": " Standard_EC2ads_v5 — 2 vCPUs — 16 GB RAM — Premium SSD " + "text": " Standard_E8-4as_v7 — 8 vCPUs — 64 GB RAM — Premium SSD " } ] } }, { - "name": "StandardEC32adsV5", + "name": "StandardE8asV7", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardECADSv5.StandardEC32adsV5", + "signature": "public const static string StandardEasv7.StandardE8asV7", "returnType": "string", "isStatic": true, "isConst": true, @@ -15427,16 +15932,16 @@ "summary": [ { "kind": "text", - "text": " Standard_EC32ads_v5 — 32 vCPUs — 192 GB RAM — Premium SSD " + "text": " Standard_E8as_v7 — 8 vCPUs — 64 GB RAM — Premium SSD " } ] } }, { - "name": "StandardEC48adsV5", + "name": "StandardE9624asV7", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardECADSv5.StandardEC48adsV5", + "signature": "public const static string StandardEasv7.StandardE9624asV7", "returnType": "string", "isStatic": true, "isConst": true, @@ -15444,16 +15949,16 @@ "summary": [ { "kind": "text", - "text": " Standard_EC48ads_v5 — 48 vCPUs — 384 GB RAM — Premium SSD " + "text": " Standard_E96-24as_v7 — 96 vCPUs — 768 GB RAM — Premium SSD " } ] } }, { - "name": "StandardEC4adsV5", + "name": "StandardE9648asV7", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardECADSv5.StandardEC4adsV5", + "signature": "public const static string StandardEasv7.StandardE9648asV7", "returnType": "string", "isStatic": true, "isConst": true, @@ -15461,16 +15966,16 @@ "summary": [ { "kind": "text", - "text": " Standard_EC4ads_v5 — 4 vCPUs — 32 GB RAM — Premium SSD " + "text": " Standard_E96-48as_v7 — 96 vCPUs — 768 GB RAM — Premium SSD " } ] } }, { - "name": "StandardEC64adsV5", + "name": "StandardE96asV7", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardECADSv5.StandardEC64adsV5", + "signature": "public const static string StandardEasv7.StandardE96asV7", "returnType": "string", "isStatic": true, "isConst": true, @@ -15478,41 +15983,7 @@ "summary": [ { "kind": "text", - "text": " Standard_EC64ads_v5 — 64 vCPUs — 512 GB RAM — Premium SSD " - } - ] - } - }, - { - "name": "StandardEC8adsV5", - "kind": "field", - "accessibility": "public", - "signature": "public const static string StandardECADSv5.StandardEC8adsV5", - "returnType": "string", - "isStatic": true, - "isConst": true, - "docs": { - "summary": [ - { - "kind": "text", - "text": " Standard_EC8ads_v5 — 8 vCPUs — 64 GB RAM — Premium SSD " - } - ] - } - }, - { - "name": "StandardEC96adsV5", - "kind": "field", - "accessibility": "public", - "signature": "public const static string StandardECADSv5.StandardEC96adsV5", - "returnType": "string", - "isStatic": true, - "isConst": true, - "docs": { - "summary": [ - { - "kind": "text", - "text": " Standard_EC96ads_v5 — 96 vCPUs — 672 GB RAM — Premium SSD " + "text": " Standard_E96as_v7 — 96 vCPUs — 768 GB RAM — Premium SSD " } ] } @@ -15520,8 +15991,8 @@ ] }, { - "name": "StandardECadsv6", - "fullName": "Aspire.Hosting.Azure.Kubernetes.AksNodeVmSizes.StandardECadsv6", + "name": "StandardEAv4", + "fullName": "Aspire.Hosting.Azure.Kubernetes.AksNodeVmSizes.StandardEAv4", "namespace": "Aspire.Hosting.Azure.Kubernetes", "kind": "class", "accessibility": "public", @@ -15530,17 +16001,17 @@ "summary": [ { "kind": "text", - "text": " VM sizes in the standardECadsv6Family. " + "text": " VM sizes in the standardEAv4Family. " } ] }, "sourceFile": "src/Aspire.Hosting.Azure.Kubernetes/AksNodeVmSizes.cs", "members": [ { - "name": "StandardEC16adsV6", + "name": "StandardE16aV4", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardECadsv6.StandardEC16adsV6", + "signature": "public const static string StandardEAv4.StandardE16aV4", "returnType": "string", "isStatic": true, "isConst": true, @@ -15548,16 +16019,16 @@ "summary": [ { "kind": "text", - "text": " Standard_EC16ads_v6 — 16 vCPUs — 128 GB RAM — Premium SSD " + "text": " Standard_E16a_v4 — 16 vCPUs — 128 GB RAM " } ] } }, { - "name": "StandardEC2adsV6", + "name": "StandardE20aV4", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardECadsv6.StandardEC2adsV6", + "signature": "public const static string StandardEAv4.StandardE20aV4", "returnType": "string", "isStatic": true, "isConst": true, @@ -15565,16 +16036,16 @@ "summary": [ { "kind": "text", - "text": " Standard_EC2ads_v6 — 2 vCPUs — 16 GB RAM — Premium SSD " + "text": " Standard_E20a_v4 — 20 vCPUs — 160 GB RAM " } ] } }, { - "name": "StandardEC32adsV6", + "name": "StandardE2aV4", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardECadsv6.StandardEC32adsV6", + "signature": "public const static string StandardEAv4.StandardE2aV4", "returnType": "string", "isStatic": true, "isConst": true, @@ -15582,16 +16053,16 @@ "summary": [ { "kind": "text", - "text": " Standard_EC32ads_v6 — 32 vCPUs — 256 GB RAM — Premium SSD " + "text": " Standard_E2a_v4 — 2 vCPUs — 16 GB RAM " } ] } }, { - "name": "StandardEC48adsV6", + "name": "StandardE32aV4", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardECadsv6.StandardEC48adsV6", + "signature": "public const static string StandardEAv4.StandardE32aV4", "returnType": "string", "isStatic": true, "isConst": true, @@ -15599,16 +16070,16 @@ "summary": [ { "kind": "text", - "text": " Standard_EC48ads_v6 — 48 vCPUs — 384 GB RAM — Premium SSD " + "text": " Standard_E32a_v4 — 32 vCPUs — 256 GB RAM " } ] } }, { - "name": "StandardEC4adsV6", + "name": "StandardE48aV4", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardECadsv6.StandardEC4adsV6", + "signature": "public const static string StandardEAv4.StandardE48aV4", "returnType": "string", "isStatic": true, "isConst": true, @@ -15616,16 +16087,16 @@ "summary": [ { "kind": "text", - "text": " Standard_EC4ads_v6 — 4 vCPUs — 32 GB RAM — Premium SSD " + "text": " Standard_E48a_v4 — 48 vCPUs — 384 GB RAM " } ] } }, { - "name": "StandardEC64adsV6", + "name": "StandardE4aV4", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardECadsv6.StandardEC64adsV6", + "signature": "public const static string StandardEAv4.StandardE4aV4", "returnType": "string", "isStatic": true, "isConst": true, @@ -15633,16 +16104,16 @@ "summary": [ { "kind": "text", - "text": " Standard_EC64ads_v6 — 64 vCPUs — 512 GB RAM — Premium SSD " + "text": " Standard_E4a_v4 — 4 vCPUs — 32 GB RAM " } ] } }, { - "name": "StandardEC8adsV6", + "name": "StandardE64aV4", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardECadsv6.StandardEC8adsV6", + "signature": "public const static string StandardEAv4.StandardE64aV4", "returnType": "string", "isStatic": true, "isConst": true, @@ -15650,16 +16121,16 @@ "summary": [ { "kind": "text", - "text": " Standard_EC8ads_v6 — 8 vCPUs — 64 GB RAM — Premium SSD " + "text": " Standard_E64a_v4 — 64 vCPUs — 512 GB RAM " } ] } }, { - "name": "StandardEC96adsV6", + "name": "StandardE8aV4", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardECadsv6.StandardEC96adsV6", + "signature": "public const static string StandardEAv4.StandardE8aV4", "returnType": "string", "isStatic": true, "isConst": true, @@ -15667,7 +16138,24 @@ "summary": [ { "kind": "text", - "text": " Standard_EC96ads_v6 — 96 vCPUs — 672 GB RAM — Premium SSD " + "text": " Standard_E8a_v4 — 8 vCPUs — 64 GB RAM " + } + ] + } + }, + { + "name": "StandardE96aV4", + "kind": "field", + "accessibility": "public", + "signature": "public const static string StandardEAv4.StandardE96aV4", + "returnType": "string", + "isStatic": true, + "isConst": true, + "docs": { + "summary": [ + { + "kind": "text", + "text": " Standard_E96a_v4 — 96 vCPUs — 672 GB RAM " } ] } @@ -15675,8 +16163,8 @@ ] }, { - "name": "StandardECASv5", - "fullName": "Aspire.Hosting.Azure.Kubernetes.AksNodeVmSizes.StandardECASv5", + "name": "StandardEav6", + "fullName": "Aspire.Hosting.Azure.Kubernetes.AksNodeVmSizes.StandardEav6", "namespace": "Aspire.Hosting.Azure.Kubernetes", "kind": "class", "accessibility": "public", @@ -15685,17 +16173,17 @@ "summary": [ { "kind": "text", - "text": " VM sizes in the standardECASv5Family. " + "text": " VM sizes in the standardEav6Family. " } ] }, "sourceFile": "src/Aspire.Hosting.Azure.Kubernetes/AksNodeVmSizes.cs", "members": [ { - "name": "StandardEC16asV5", + "name": "StandardE16asV6", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardECASv5.StandardEC16asV5", + "signature": "public const static string StandardEav6.StandardE16asV6", "returnType": "string", "isStatic": true, "isConst": true, @@ -15703,16 +16191,16 @@ "summary": [ { "kind": "text", - "text": " Standard_EC16as_v5 — 16 vCPUs — 128 GB RAM — Premium SSD " + "text": " Standard_E16as_v6 — 16 vCPUs — 128 GB RAM — Premium SSD " } ] } }, { - "name": "StandardEC20asV5", + "name": "StandardE20asV6", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardECASv5.StandardEC20asV5", + "signature": "public const static string StandardEav6.StandardE20asV6", "returnType": "string", "isStatic": true, "isConst": true, @@ -15720,16 +16208,16 @@ "summary": [ { "kind": "text", - "text": " Standard_EC20as_v5 — 20 vCPUs — 160 GB RAM — Premium SSD " + "text": " Standard_E20as_v6 — 20 vCPUs — 160 GB RAM — Premium SSD " } ] } }, { - "name": "StandardEC2asV5", + "name": "StandardE2asV6", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardECASv5.StandardEC2asV5", + "signature": "public const static string StandardEav6.StandardE2asV6", "returnType": "string", "isStatic": true, "isConst": true, @@ -15737,16 +16225,16 @@ "summary": [ { "kind": "text", - "text": " Standard_EC2as_v5 — 2 vCPUs — 16 GB RAM — Premium SSD " + "text": " Standard_E2as_v6 — 2 vCPUs — 16 GB RAM — Premium SSD " } ] } }, { - "name": "StandardEC32asV5", + "name": "StandardE32asV6", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardECASv5.StandardEC32asV5", + "signature": "public const static string StandardEav6.StandardE32asV6", "returnType": "string", "isStatic": true, "isConst": true, @@ -15754,16 +16242,16 @@ "summary": [ { "kind": "text", - "text": " Standard_EC32as_v5 — 32 vCPUs — 192 GB RAM — Premium SSD " + "text": " Standard_E32as_v6 — 32 vCPUs — 256 GB RAM — Premium SSD " } ] } }, { - "name": "StandardEC48asV5", + "name": "StandardE48asV6", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardECASv5.StandardEC48asV5", + "signature": "public const static string StandardEav6.StandardE48asV6", "returnType": "string", "isStatic": true, "isConst": true, @@ -15771,16 +16259,16 @@ "summary": [ { "kind": "text", - "text": " Standard_EC48as_v5 — 48 vCPUs — 384 GB RAM — Premium SSD " + "text": " Standard_E48as_v6 — 48 vCPUs — 384 GB RAM — Premium SSD " } ] } }, { - "name": "StandardEC4asV5", + "name": "StandardE4asV6", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardECASv5.StandardEC4asV5", + "signature": "public const static string StandardEav6.StandardE4asV6", "returnType": "string", "isStatic": true, "isConst": true, @@ -15788,16 +16276,16 @@ "summary": [ { "kind": "text", - "text": " Standard_EC4as_v5 — 4 vCPUs — 32 GB RAM — Premium SSD " + "text": " Standard_E4as_v6 — 4 vCPUs — 32 GB RAM — Premium SSD " } ] } }, { - "name": "StandardEC64asV5", + "name": "StandardE64asV6", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardECASv5.StandardEC64asV5", + "signature": "public const static string StandardEav6.StandardE64asV6", "returnType": "string", "isStatic": true, "isConst": true, @@ -15805,16 +16293,16 @@ "summary": [ { "kind": "text", - "text": " Standard_EC64as_v5 — 64 vCPUs — 512 GB RAM — Premium SSD " + "text": " Standard_E64as_v6 — 64 vCPUs — 512 GB RAM — Premium SSD " } ] } }, { - "name": "StandardEC8asV5", + "name": "StandardE8asV6", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardECASv5.StandardEC8asV5", + "signature": "public const static string StandardEav6.StandardE8asV6", "returnType": "string", "isStatic": true, "isConst": true, @@ -15822,16 +16310,16 @@ "summary": [ { "kind": "text", - "text": " Standard_EC8as_v5 — 8 vCPUs — 64 GB RAM — Premium SSD " + "text": " Standard_E8as_v6 — 8 vCPUs — 64 GB RAM — Premium SSD " } ] } }, { - "name": "StandardEC96asV5", + "name": "StandardE96asV6", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardECASv5.StandardEC96asV5", + "signature": "public const static string StandardEav6.StandardE96asV6", "returnType": "string", "isStatic": true, "isConst": true, @@ -15839,7 +16327,7 @@ "summary": [ { "kind": "text", - "text": " Standard_EC96as_v5 — 96 vCPUs — 672 GB RAM — Premium SSD " + "text": " Standard_E96as_v6 — 96 vCPUs — 672 GB RAM — Premium SSD " } ] } @@ -15847,8 +16335,8 @@ ] }, { - "name": "StandardECasv6", - "fullName": "Aspire.Hosting.Azure.Kubernetes.AksNodeVmSizes.StandardECasv6", + "name": "StandardEBDSv5", + "fullName": "Aspire.Hosting.Azure.Kubernetes.AksNodeVmSizes.StandardEBDSv5", "namespace": "Aspire.Hosting.Azure.Kubernetes", "kind": "class", "accessibility": "public", @@ -15857,17 +16345,17 @@ "summary": [ { "kind": "text", - "text": " VM sizes in the standardECasv6Family. " + "text": " VM sizes in the standardEBDSv5Family. " } ] }, "sourceFile": "src/Aspire.Hosting.Azure.Kubernetes/AksNodeVmSizes.cs", "members": [ { - "name": "StandardEC16asV6", + "name": "StandardE16bdsV5", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardECasv6.StandardEC16asV6", + "signature": "public const static string StandardEBDSv5.StandardE16bdsV5", "returnType": "string", "isStatic": true, "isConst": true, @@ -15875,16 +16363,16 @@ "summary": [ { "kind": "text", - "text": " Standard_EC16as_v6 — 16 vCPUs — 128 GB RAM — Premium SSD " + "text": " Standard_E16bds_v5 — 16 vCPUs — 128 GB RAM — Premium SSD " } ] } }, { - "name": "StandardEC2asV6", + "name": "StandardE2bdsV5", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardECasv6.StandardEC2asV6", + "signature": "public const static string StandardEBDSv5.StandardE2bdsV5", "returnType": "string", "isStatic": true, "isConst": true, @@ -15892,16 +16380,16 @@ "summary": [ { "kind": "text", - "text": " Standard_EC2as_v6 — 2 vCPUs — 16 GB RAM — Premium SSD " + "text": " Standard_E2bds_v5 — 2 vCPUs — 16 GB RAM — Premium SSD " } ] } }, { - "name": "StandardEC32asV6", + "name": "StandardE32bdsV5", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardECasv6.StandardEC32asV6", + "signature": "public const static string StandardEBDSv5.StandardE32bdsV5", "returnType": "string", "isStatic": true, "isConst": true, @@ -15909,16 +16397,16 @@ "summary": [ { "kind": "text", - "text": " Standard_EC32as_v6 — 32 vCPUs — 256 GB RAM — Premium SSD " + "text": " Standard_E32bds_v5 — 32 vCPUs — 256 GB RAM — Premium SSD " } ] } }, { - "name": "StandardEC48asV6", + "name": "StandardE48bdsV5", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardECasv6.StandardEC48asV6", + "signature": "public const static string StandardEBDSv5.StandardE48bdsV5", "returnType": "string", "isStatic": true, "isConst": true, @@ -15926,16 +16414,16 @@ "summary": [ { "kind": "text", - "text": " Standard_EC48as_v6 — 48 vCPUs — 384 GB RAM — Premium SSD " + "text": " Standard_E48bds_v5 — 48 vCPUs — 384 GB RAM — Premium SSD " } ] } }, { - "name": "StandardEC4asV6", + "name": "StandardE4bdsV5", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardECasv6.StandardEC4asV6", + "signature": "public const static string StandardEBDSv5.StandardE4bdsV5", "returnType": "string", "isStatic": true, "isConst": true, @@ -15943,16 +16431,16 @@ "summary": [ { "kind": "text", - "text": " Standard_EC4as_v6 — 4 vCPUs — 32 GB RAM — Premium SSD " + "text": " Standard_E4bds_v5 — 4 vCPUs — 32 GB RAM — Premium SSD " } ] } }, { - "name": "StandardEC64asV6", + "name": "StandardE64bdsV5", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardECasv6.StandardEC64asV6", + "signature": "public const static string StandardEBDSv5.StandardE64bdsV5", "returnType": "string", "isStatic": true, "isConst": true, @@ -15960,16 +16448,16 @@ "summary": [ { "kind": "text", - "text": " Standard_EC64as_v6 — 64 vCPUs — 512 GB RAM — Premium SSD " + "text": " Standard_E64bds_v5 — 64 vCPUs — 512 GB RAM — Premium SSD " } ] } }, { - "name": "StandardEC8asV6", + "name": "StandardE8bdsV5", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardECasv6.StandardEC8asV6", + "signature": "public const static string StandardEBDSv5.StandardE8bdsV5", "returnType": "string", "isStatic": true, "isConst": true, @@ -15977,16 +16465,16 @@ "summary": [ { "kind": "text", - "text": " Standard_EC8as_v6 — 8 vCPUs — 64 GB RAM — Premium SSD " + "text": " Standard_E8bds_v5 — 8 vCPUs — 64 GB RAM — Premium SSD " } ] } }, { - "name": "StandardEC96asV6", + "name": "StandardE96bdsV5", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardECasv6.StandardEC96asV6", + "signature": "public const static string StandardEBDSv5.StandardE96bdsV5", "returnType": "string", "isStatic": true, "isConst": true, @@ -15994,7 +16482,7 @@ "summary": [ { "kind": "text", - "text": " Standard_EC96as_v6 — 96 vCPUs — 672 GB RAM — Premium SSD " + "text": " Standard_E96bds_v5 — 96 vCPUs — 672 GB RAM — Premium SSD " } ] } @@ -16002,8 +16490,8 @@ ] }, { - "name": "StandardECEDV5", - "fullName": "Aspire.Hosting.Azure.Kubernetes.AksNodeVmSizes.StandardECEDV5", + "name": "StandardEBSv5", + "fullName": "Aspire.Hosting.Azure.Kubernetes.AksNodeVmSizes.StandardEBSv5", "namespace": "Aspire.Hosting.Azure.Kubernetes", "kind": "class", "accessibility": "public", @@ -16012,17 +16500,17 @@ "summary": [ { "kind": "text", - "text": " VM sizes in the standardECEDV5Family. " + "text": " VM sizes in the standardEBSv5Family. " } ] }, "sourceFile": "src/Aspire.Hosting.Azure.Kubernetes/AksNodeVmSizes.cs", "members": [ { - "name": "StandardEC128edsV5", + "name": "StandardE16bsV5", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardECEDV5.StandardEC128edsV5", + "signature": "public const static string StandardEBSv5.StandardE16bsV5", "returnType": "string", "isStatic": true, "isConst": true, @@ -16030,16 +16518,16 @@ "summary": [ { "kind": "text", - "text": " Standard_EC128eds_v5 — 128 vCPUs — 768 GB RAM — Premium SSD " + "text": " Standard_E16bs_v5 — 16 vCPUs — 128 GB RAM — Premium SSD " } ] } }, { - "name": "StandardEC16edsV5", + "name": "StandardE2bsV5", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardECEDV5.StandardEC16edsV5", + "signature": "public const static string StandardEBSv5.StandardE2bsV5", "returnType": "string", "isStatic": true, "isConst": true, @@ -16047,16 +16535,16 @@ "summary": [ { "kind": "text", - "text": " Standard_EC16eds_v5 — 16 vCPUs — 128 GB RAM — Premium SSD " + "text": " Standard_E2bs_v5 — 2 vCPUs — 16 GB RAM — Premium SSD " } ] } }, { - "name": "StandardEC2edsV5", + "name": "StandardE32bsV5", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardECEDV5.StandardEC2edsV5", + "signature": "public const static string StandardEBSv5.StandardE32bsV5", "returnType": "string", "isStatic": true, "isConst": true, @@ -16064,16 +16552,16 @@ "summary": [ { "kind": "text", - "text": " Standard_EC2eds_v5 — 2 vCPUs — 16 GB RAM — Premium SSD " + "text": " Standard_E32bs_v5 — 32 vCPUs — 256 GB RAM — Premium SSD " } ] } }, { - "name": "StandardEC32edsV5", + "name": "StandardE48bsV5", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardECEDV5.StandardEC32edsV5", + "signature": "public const static string StandardEBSv5.StandardE48bsV5", "returnType": "string", "isStatic": true, "isConst": true, @@ -16081,16 +16569,16 @@ "summary": [ { "kind": "text", - "text": " Standard_EC32eds_v5 — 32 vCPUs — 256 GB RAM — Premium SSD " + "text": " Standard_E48bs_v5 — 48 vCPUs — 384 GB RAM — Premium SSD " } ] } }, { - "name": "StandardEC48edsV5", + "name": "StandardE4bsV5", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardECEDV5.StandardEC48edsV5", + "signature": "public const static string StandardEBSv5.StandardE4bsV5", "returnType": "string", "isStatic": true, "isConst": true, @@ -16098,16 +16586,16 @@ "summary": [ { "kind": "text", - "text": " Standard_EC48eds_v5 — 48 vCPUs — 384 GB RAM — Premium SSD " + "text": " Standard_E4bs_v5 — 4 vCPUs — 32 GB RAM — Premium SSD " } ] } }, { - "name": "StandardEC4edsV5", + "name": "StandardE64bsV5", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardECEDV5.StandardEC4edsV5", + "signature": "public const static string StandardEBSv5.StandardE64bsV5", "returnType": "string", "isStatic": true, "isConst": true, @@ -16115,16 +16603,16 @@ "summary": [ { "kind": "text", - "text": " Standard_EC4eds_v5 — 4 vCPUs — 32 GB RAM — Premium SSD " + "text": " Standard_E64bs_v5 — 64 vCPUs — 512 GB RAM — Premium SSD " } ] } }, { - "name": "StandardEC64edsV5", + "name": "StandardE8bsV5", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardECEDV5.StandardEC64edsV5", + "signature": "public const static string StandardEBSv5.StandardE8bsV5", "returnType": "string", "isStatic": true, "isConst": true, @@ -16132,16 +16620,16 @@ "summary": [ { "kind": "text", - "text": " Standard_EC64eds_v5 — 64 vCPUs — 512 GB RAM — Premium SSD " + "text": " Standard_E8bs_v5 — 8 vCPUs — 64 GB RAM — Premium SSD " } ] } }, { - "name": "StandardEC8edsV5", + "name": "StandardE96bsV5", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardECEDV5.StandardEC8edsV5", + "signature": "public const static string StandardEBSv5.StandardE96bsV5", "returnType": "string", "isStatic": true, "isConst": true, @@ -16149,7 +16637,7 @@ "summary": [ { "kind": "text", - "text": " Standard_EC8eds_v5 — 8 vCPUs — 64 GB RAM — Premium SSD " + "text": " Standard_E96bs_v5 — 96 vCPUs — 672 GB RAM — Premium SSD " } ] } @@ -16157,8 +16645,8 @@ ] }, { - "name": "StandardECEDV6", - "fullName": "Aspire.Hosting.Azure.Kubernetes.AksNodeVmSizes.StandardECEDV6", + "name": "StandardECACCV5", + "fullName": "Aspire.Hosting.Azure.Kubernetes.AksNodeVmSizes.StandardECACCV5", "namespace": "Aspire.Hosting.Azure.Kubernetes", "kind": "class", "accessibility": "public", @@ -16167,17 +16655,17 @@ "summary": [ { "kind": "text", - "text": " VM sizes in the StandardECEDV6Family. " + "text": " VM sizes in the standardECACCV5Family. " } ] }, "sourceFile": "src/Aspire.Hosting.Azure.Kubernetes/AksNodeVmSizes.cs", "members": [ { - "name": "StandardEC16edsV6", + "name": "StandardEC16asCcV5", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardECEDV6.StandardEC16edsV6", + "signature": "public const static string StandardECACCV5.StandardEC16asCcV5", "returnType": "string", "isStatic": true, "isConst": true, @@ -16185,16 +16673,16 @@ "summary": [ { "kind": "text", - "text": " Standard_EC16eds_v6 — 16 vCPUs — 128 GB RAM — Premium SSD " + "text": " Standard_EC16as_cc_v5 — 16 vCPUs — 128 GB RAM — Premium SSD " } ] } }, { - "name": "StandardEC2edsV6", + "name": "StandardEC20asCcV5", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardECEDV6.StandardEC2edsV6", + "signature": "public const static string StandardECACCV5.StandardEC20asCcV5", "returnType": "string", "isStatic": true, "isConst": true, @@ -16202,16 +16690,16 @@ "summary": [ { "kind": "text", - "text": " Standard_EC2eds_v6 — 2 vCPUs — 16 GB RAM — Premium SSD " + "text": " Standard_EC20as_cc_v5 — 20 vCPUs — 160 GB RAM — Premium SSD " } ] } }, { - "name": "StandardEC32edsV6", + "name": "StandardEC32asCcV5", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardECEDV6.StandardEC32edsV6", + "signature": "public const static string StandardECACCV5.StandardEC32asCcV5", "returnType": "string", "isStatic": true, "isConst": true, @@ -16219,16 +16707,16 @@ "summary": [ { "kind": "text", - "text": " Standard_EC32eds_v6 — 32 vCPUs — 256 GB RAM — Premium SSD " + "text": " Standard_EC32as_cc_v5 — 32 vCPUs — 192 GB RAM — Premium SSD " } ] } }, { - "name": "StandardEC48edsV6", + "name": "StandardEC48asCcV5", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardECEDV6.StandardEC48edsV6", + "signature": "public const static string StandardECACCV5.StandardEC48asCcV5", "returnType": "string", "isStatic": true, "isConst": true, @@ -16236,16 +16724,16 @@ "summary": [ { "kind": "text", - "text": " Standard_EC48eds_v6 — 48 vCPUs — 384 GB RAM — Premium SSD " + "text": " Standard_EC48as_cc_v5 — 48 vCPUs — 384 GB RAM — Premium SSD " } ] } }, { - "name": "StandardEC4edsV6", + "name": "StandardEC4asCcV5", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardECEDV6.StandardEC4edsV6", + "signature": "public const static string StandardECACCV5.StandardEC4asCcV5", "returnType": "string", "isStatic": true, "isConst": true, @@ -16253,16 +16741,16 @@ "summary": [ { "kind": "text", - "text": " Standard_EC4eds_v6 — 4 vCPUs — 32 GB RAM — Premium SSD " + "text": " Standard_EC4as_cc_v5 — 4 vCPUs — 32 GB RAM — Premium SSD " } ] } }, { - "name": "StandardEC64edsV6", + "name": "StandardEC64asCcV5", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardECEDV6.StandardEC64edsV6", + "signature": "public const static string StandardECACCV5.StandardEC64asCcV5", "returnType": "string", "isStatic": true, "isConst": true, @@ -16270,16 +16758,16 @@ "summary": [ { "kind": "text", - "text": " Standard_EC64eds_v6 — 64 vCPUs — 512 GB RAM — Premium SSD " + "text": " Standard_EC64as_cc_v5 — 64 vCPUs — 512 GB RAM — Premium SSD " } ] } }, { - "name": "StandardEC8edsV6", + "name": "StandardEC8asCcV5", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardECEDV6.StandardEC8edsV6", + "signature": "public const static string StandardECACCV5.StandardEC8asCcV5", "returnType": "string", "isStatic": true, "isConst": true, @@ -16287,7 +16775,24 @@ "summary": [ { "kind": "text", - "text": " Standard_EC8eds_v6 — 8 vCPUs — 64 GB RAM — Premium SSD " + "text": " Standard_EC8as_cc_v5 — 8 vCPUs — 64 GB RAM — Premium SSD " + } + ] + } + }, + { + "name": "StandardEC96asCcV5", + "kind": "field", + "accessibility": "public", + "signature": "public const static string StandardECACCV5.StandardEC96asCcV5", + "returnType": "string", + "isStatic": true, + "isConst": true, + "docs": { + "summary": [ + { + "kind": "text", + "text": " Standard_EC96as_cc_v5 — 96 vCPUs — 672 GB RAM — Premium SSD " } ] } @@ -16295,8 +16800,8 @@ ] }, { - "name": "StandardECEV5", - "fullName": "Aspire.Hosting.Azure.Kubernetes.AksNodeVmSizes.StandardECEV5", + "name": "StandardECADCCV5", + "fullName": "Aspire.Hosting.Azure.Kubernetes.AksNodeVmSizes.StandardECADCCV5", "namespace": "Aspire.Hosting.Azure.Kubernetes", "kind": "class", "accessibility": "public", @@ -16305,17 +16810,17 @@ "summary": [ { "kind": "text", - "text": " VM sizes in the standardECEV5Family. " + "text": " VM sizes in the standardECADCCV5Family. " } ] }, "sourceFile": "src/Aspire.Hosting.Azure.Kubernetes/AksNodeVmSizes.cs", "members": [ { - "name": "StandardEC128esV5", + "name": "StandardEC16adsCcV5", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardECEV5.StandardEC128esV5", + "signature": "public const static string StandardECADCCV5.StandardEC16adsCcV5", "returnType": "string", "isStatic": true, "isConst": true, @@ -16323,16 +16828,16 @@ "summary": [ { "kind": "text", - "text": " Standard_EC128es_v5 — 128 vCPUs — 768 GB RAM — Premium SSD " + "text": " Standard_EC16ads_cc_v5 — 16 vCPUs — 128 GB RAM — Premium SSD " } ] } }, { - "name": "StandardEC16esV5", + "name": "StandardEC20adsCcV5", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardECEV5.StandardEC16esV5", + "signature": "public const static string StandardECADCCV5.StandardEC20adsCcV5", "returnType": "string", "isStatic": true, "isConst": true, @@ -16340,16 +16845,16 @@ "summary": [ { "kind": "text", - "text": " Standard_EC16es_v5 — 16 vCPUs — 128 GB RAM — Premium SSD " + "text": " Standard_EC20ads_cc_v5 — 20 vCPUs — 160 GB RAM — Premium SSD " } ] } }, { - "name": "StandardEC2esV5", + "name": "StandardEC32adsCcV5", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardECEV5.StandardEC2esV5", + "signature": "public const static string StandardECADCCV5.StandardEC32adsCcV5", "returnType": "string", "isStatic": true, "isConst": true, @@ -16357,16 +16862,16 @@ "summary": [ { "kind": "text", - "text": " Standard_EC2es_v5 — 2 vCPUs — 16 GB RAM — Premium SSD " + "text": " Standard_EC32ads_cc_v5 — 32 vCPUs — 192 GB RAM — Premium SSD " } ] } }, { - "name": "StandardEC32esV5", + "name": "StandardEC48adsCcV5", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardECEV5.StandardEC32esV5", + "signature": "public const static string StandardECADCCV5.StandardEC48adsCcV5", "returnType": "string", "isStatic": true, "isConst": true, @@ -16374,16 +16879,16 @@ "summary": [ { "kind": "text", - "text": " Standard_EC32es_v5 — 32 vCPUs — 256 GB RAM — Premium SSD " + "text": " Standard_EC48ads_cc_v5 — 48 vCPUs — 384 GB RAM — Premium SSD " } ] } }, { - "name": "StandardEC48esV5", + "name": "StandardEC4adsCcV5", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardECEV5.StandardEC48esV5", + "signature": "public const static string StandardECADCCV5.StandardEC4adsCcV5", "returnType": "string", "isStatic": true, "isConst": true, @@ -16391,16 +16896,16 @@ "summary": [ { "kind": "text", - "text": " Standard_EC48es_v5 — 48 vCPUs — 384 GB RAM — Premium SSD " + "text": " Standard_EC4ads_cc_v5 — 4 vCPUs — 32 GB RAM — Premium SSD " } ] } }, { - "name": "StandardEC4esV5", + "name": "StandardEC64adsCcV5", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardECEV5.StandardEC4esV5", + "signature": "public const static string StandardECADCCV5.StandardEC64adsCcV5", "returnType": "string", "isStatic": true, "isConst": true, @@ -16408,16 +16913,16 @@ "summary": [ { "kind": "text", - "text": " Standard_EC4es_v5 — 4 vCPUs — 32 GB RAM — Premium SSD " + "text": " Standard_EC64ads_cc_v5 — 64 vCPUs — 512 GB RAM — Premium SSD " } ] } }, { - "name": "StandardEC64esV5", + "name": "StandardEC8adsCcV5", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardECEV5.StandardEC64esV5", + "signature": "public const static string StandardECADCCV5.StandardEC8adsCcV5", "returnType": "string", "isStatic": true, "isConst": true, @@ -16425,16 +16930,16 @@ "summary": [ { "kind": "text", - "text": " Standard_EC64es_v5 — 64 vCPUs — 512 GB RAM — Premium SSD " + "text": " Standard_EC8ads_cc_v5 — 8 vCPUs — 64 GB RAM — Premium SSD " } ] } }, { - "name": "StandardEC8esV5", + "name": "StandardEC96adsCcV5", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardECEV5.StandardEC8esV5", + "signature": "public const static string StandardECADCCV5.StandardEC96adsCcV5", "returnType": "string", "isStatic": true, "isConst": true, @@ -16442,7 +16947,7 @@ "summary": [ { "kind": "text", - "text": " Standard_EC8es_v5 — 8 vCPUs — 64 GB RAM — Premium SSD " + "text": " Standard_EC96ads_cc_v5 — 96 vCPUs — 672 GB RAM — Premium SSD " } ] } @@ -16450,8 +16955,8 @@ ] }, { - "name": "StandardECEV6", - "fullName": "Aspire.Hosting.Azure.Kubernetes.AksNodeVmSizes.StandardECEV6", + "name": "StandardECADSv5", + "fullName": "Aspire.Hosting.Azure.Kubernetes.AksNodeVmSizes.StandardECADSv5", "namespace": "Aspire.Hosting.Azure.Kubernetes", "kind": "class", "accessibility": "public", @@ -16460,17 +16965,17 @@ "summary": [ { "kind": "text", - "text": " VM sizes in the StandardECEV6Family. " + "text": " VM sizes in the standardECADSv5Family. " } ] }, "sourceFile": "src/Aspire.Hosting.Azure.Kubernetes/AksNodeVmSizes.cs", "members": [ { - "name": "StandardEC16esV6", + "name": "StandardEC16adsV5", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardECEV6.StandardEC16esV6", + "signature": "public const static string StandardECADSv5.StandardEC16adsV5", "returnType": "string", "isStatic": true, "isConst": true, @@ -16478,16 +16983,16 @@ "summary": [ { "kind": "text", - "text": " Standard_EC16es_v6 — 16 vCPUs — 128 GB RAM — Premium SSD " + "text": " Standard_EC16ads_v5 — 16 vCPUs — 128 GB RAM — Premium SSD " } ] } }, { - "name": "StandardEC2esV6", + "name": "StandardEC20adsV5", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardECEV6.StandardEC2esV6", + "signature": "public const static string StandardECADSv5.StandardEC20adsV5", "returnType": "string", "isStatic": true, "isConst": true, @@ -16495,16 +17000,16 @@ "summary": [ { "kind": "text", - "text": " Standard_EC2es_v6 — 2 vCPUs — 16 GB RAM — Premium SSD " + "text": " Standard_EC20ads_v5 — 20 vCPUs — 160 GB RAM — Premium SSD " } ] } }, { - "name": "StandardEC32esV6", + "name": "StandardEC2adsV5", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardECEV6.StandardEC32esV6", + "signature": "public const static string StandardECADSv5.StandardEC2adsV5", "returnType": "string", "isStatic": true, "isConst": true, @@ -16512,16 +17017,16 @@ "summary": [ { "kind": "text", - "text": " Standard_EC32es_v6 — 32 vCPUs — 256 GB RAM — Premium SSD " + "text": " Standard_EC2ads_v5 — 2 vCPUs — 16 GB RAM — Premium SSD " } ] } }, { - "name": "StandardEC48esV6", + "name": "StandardEC32adsV5", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardECEV6.StandardEC48esV6", + "signature": "public const static string StandardECADSv5.StandardEC32adsV5", "returnType": "string", "isStatic": true, "isConst": true, @@ -16529,16 +17034,16 @@ "summary": [ { "kind": "text", - "text": " Standard_EC48es_v6 — 48 vCPUs — 384 GB RAM — Premium SSD " + "text": " Standard_EC32ads_v5 — 32 vCPUs — 192 GB RAM — Premium SSD " } ] } }, { - "name": "StandardEC4esV6", + "name": "StandardEC48adsV5", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardECEV6.StandardEC4esV6", + "signature": "public const static string StandardECADSv5.StandardEC48adsV5", "returnType": "string", "isStatic": true, "isConst": true, @@ -16546,16 +17051,16 @@ "summary": [ { "kind": "text", - "text": " Standard_EC4es_v6 — 4 vCPUs — 32 GB RAM — Premium SSD " + "text": " Standard_EC48ads_v5 — 48 vCPUs — 384 GB RAM — Premium SSD " } ] } }, { - "name": "StandardEC64esV6", + "name": "StandardEC4adsV5", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardECEV6.StandardEC64esV6", + "signature": "public const static string StandardECADSv5.StandardEC4adsV5", "returnType": "string", "isStatic": true, "isConst": true, @@ -16563,16 +17068,16 @@ "summary": [ { "kind": "text", - "text": " Standard_EC64es_v6 — 64 vCPUs — 512 GB RAM — Premium SSD " + "text": " Standard_EC4ads_v5 — 4 vCPUs — 32 GB RAM — Premium SSD " } ] } }, { - "name": "StandardEC8esV6", + "name": "StandardEC64adsV5", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardECEV6.StandardEC8esV6", + "signature": "public const static string StandardECADSv5.StandardEC64adsV5", "returnType": "string", "isStatic": true, "isConst": true, @@ -16580,35 +17085,16 @@ "summary": [ { "kind": "text", - "text": " Standard_EC8es_v6 — 8 vCPUs — 64 GB RAM — Premium SSD " + "text": " Standard_EC64ads_v5 — 64 vCPUs — 512 GB RAM — Premium SSD " } ] } - } - ] - }, - { - "name": "StandardECIADSv5", - "fullName": "Aspire.Hosting.Azure.Kubernetes.AksNodeVmSizes.StandardECIADSv5", - "namespace": "Aspire.Hosting.Azure.Kubernetes", - "kind": "class", - "accessibility": "public", - "isStatic": true, - "docs": { - "summary": [ - { - "kind": "text", - "text": " VM sizes in the standardECIADSv5Family. " - } - ] - }, - "sourceFile": "src/Aspire.Hosting.Azure.Kubernetes/AksNodeVmSizes.cs", - "members": [ + }, { - "name": "StandardEC96iadsV5", + "name": "StandardEC8adsV5", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardECIADSv5.StandardEC96iadsV5", + "signature": "public const static string StandardECADSv5.StandardEC8adsV5", "returnType": "string", "isStatic": true, "isConst": true, @@ -16616,35 +17102,16 @@ "summary": [ { "kind": "text", - "text": " Standard_EC96iads_v5 — 96 vCPUs — 672 GB RAM — Premium SSD " + "text": " Standard_EC8ads_v5 — 8 vCPUs — 64 GB RAM — Premium SSD " } ] } - } - ] - }, - { - "name": "StandardECIASv5", - "fullName": "Aspire.Hosting.Azure.Kubernetes.AksNodeVmSizes.StandardECIASv5", - "namespace": "Aspire.Hosting.Azure.Kubernetes", - "kind": "class", - "accessibility": "public", - "isStatic": true, - "docs": { - "summary": [ - { - "kind": "text", - "text": " VM sizes in the standardECIASv5Family. " - } - ] - }, - "sourceFile": "src/Aspire.Hosting.Azure.Kubernetes/AksNodeVmSizes.cs", - "members": [ + }, { - "name": "StandardEC96iasV5", + "name": "StandardEC96adsV5", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardECIASv5.StandardEC96iasV5", + "signature": "public const static string StandardECADSv5.StandardEC96adsV5", "returnType": "string", "isStatic": true, "isConst": true, @@ -16652,7 +17119,7 @@ "summary": [ { "kind": "text", - "text": " Standard_EC96ias_v5 — 96 vCPUs — 672 GB RAM — Premium SSD " + "text": " Standard_EC96ads_v5 — 96 vCPUs — 672 GB RAM — Premium SSD " } ] } @@ -16660,8 +17127,8 @@ ] }, { - "name": "StandardECIEDV5", - "fullName": "Aspire.Hosting.Azure.Kubernetes.AksNodeVmSizes.StandardECIEDV5", + "name": "StandardECadsv6", + "fullName": "Aspire.Hosting.Azure.Kubernetes.AksNodeVmSizes.StandardECadsv6", "namespace": "Aspire.Hosting.Azure.Kubernetes", "kind": "class", "accessibility": "public", @@ -16670,17 +17137,17 @@ "summary": [ { "kind": "text", - "text": " VM sizes in the standardECIEDV5Family. " + "text": " VM sizes in the standardECadsv6Family. " } ] }, "sourceFile": "src/Aspire.Hosting.Azure.Kubernetes/AksNodeVmSizes.cs", "members": [ { - "name": "StandardEC128iedsV5", + "name": "StandardEC16adsV6", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardECIEDV5.StandardEC128iedsV5", + "signature": "public const static string StandardECadsv6.StandardEC16adsV6", "returnType": "string", "isStatic": true, "isConst": true, @@ -16688,88 +17155,16 @@ "summary": [ { "kind": "text", - "text": " Standard_EC128ieds_v5 — 128 vCPUs — 768 GB RAM — Premium SSD " - } - ] - } - } - ] - }, - { - "name": "StandardECIEV5", - "fullName": "Aspire.Hosting.Azure.Kubernetes.AksNodeVmSizes.StandardECIEV5", - "namespace": "Aspire.Hosting.Azure.Kubernetes", - "kind": "class", - "accessibility": "public", - "isStatic": true, - "docs": { - "summary": [ - { - "kind": "text", - "text": " VM sizes in the standardECIEV5Family. " - } - ] - }, - "sourceFile": "src/Aspire.Hosting.Azure.Kubernetes/AksNodeVmSizes.cs", - "members": [ - { - "name": "StandardEC128iesV5", - "kind": "field", - "accessibility": "public", - "signature": "public const static string StandardECIEV5.StandardEC128iesV5", - "returnType": "string", - "isStatic": true, - "isConst": true, - "docs": { - "summary": [ - { - "kind": "text", - "text": " Standard_EC128ies_v5 — 128 vCPUs — 768 GB RAM — Premium SSD " - } - ] - } - } - ] - }, - { - "name": "StandardEDSv4", - "fullName": "Aspire.Hosting.Azure.Kubernetes.AksNodeVmSizes.StandardEDSv4", - "namespace": "Aspire.Hosting.Azure.Kubernetes", - "kind": "class", - "accessibility": "public", - "isStatic": true, - "docs": { - "summary": [ - { - "kind": "text", - "text": " VM sizes in the standardEDSv4Family. " - } - ] - }, - "sourceFile": "src/Aspire.Hosting.Azure.Kubernetes/AksNodeVmSizes.cs", - "members": [ - { - "name": "StandardE164dsV4", - "kind": "field", - "accessibility": "public", - "signature": "public const static string StandardEDSv4.StandardE164dsV4", - "returnType": "string", - "isStatic": true, - "isConst": true, - "docs": { - "summary": [ - { - "kind": "text", - "text": " Standard_E16-4ds_v4 — 16 vCPUs — 128 GB RAM — Premium SSD " + "text": " Standard_EC16ads_v6 — 16 vCPUs — 128 GB RAM — Premium SSD " } ] } }, { - "name": "StandardE168dsV4", + "name": "StandardEC2adsV6", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardEDSv4.StandardE168dsV4", + "signature": "public const static string StandardECadsv6.StandardEC2adsV6", "returnType": "string", "isStatic": true, "isConst": true, @@ -16777,16 +17172,16 @@ "summary": [ { "kind": "text", - "text": " Standard_E16-8ds_v4 — 16 vCPUs — 128 GB RAM — Premium SSD " + "text": " Standard_EC2ads_v6 — 2 vCPUs — 16 GB RAM — Premium SSD " } ] } }, { - "name": "StandardE16dsV4", + "name": "StandardEC32adsV6", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardEDSv4.StandardE16dsV4", + "signature": "public const static string StandardECadsv6.StandardEC32adsV6", "returnType": "string", "isStatic": true, "isConst": true, @@ -16794,16 +17189,16 @@ "summary": [ { "kind": "text", - "text": " Standard_E16ds_v4 — 16 vCPUs — 128 GB RAM — Premium SSD " + "text": " Standard_EC32ads_v6 — 32 vCPUs — 256 GB RAM — Premium SSD " } ] } }, { - "name": "StandardE20dsV4", + "name": "StandardEC48adsV6", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardEDSv4.StandardE20dsV4", + "signature": "public const static string StandardECadsv6.StandardEC48adsV6", "returnType": "string", "isStatic": true, "isConst": true, @@ -16811,16 +17206,16 @@ "summary": [ { "kind": "text", - "text": " Standard_E20ds_v4 — 20 vCPUs — 160 GB RAM — Premium SSD " + "text": " Standard_EC48ads_v6 — 48 vCPUs — 384 GB RAM — Premium SSD " } ] } }, { - "name": "StandardE2dsV4", + "name": "StandardEC4adsV6", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardEDSv4.StandardE2dsV4", + "signature": "public const static string StandardECadsv6.StandardEC4adsV6", "returnType": "string", "isStatic": true, "isConst": true, @@ -16828,16 +17223,16 @@ "summary": [ { "kind": "text", - "text": " Standard_E2ds_v4 — 2 vCPUs — 16 GB RAM — Premium SSD " + "text": " Standard_EC4ads_v6 — 4 vCPUs — 32 GB RAM — Premium SSD " } ] } }, { - "name": "StandardE3216dsV4", + "name": "StandardEC64adsV6", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardEDSv4.StandardE3216dsV4", + "signature": "public const static string StandardECadsv6.StandardEC64adsV6", "returnType": "string", "isStatic": true, "isConst": true, @@ -16845,16 +17240,16 @@ "summary": [ { "kind": "text", - "text": " Standard_E32-16ds_v4 — 32 vCPUs — 256 GB RAM — Premium SSD " + "text": " Standard_EC64ads_v6 — 64 vCPUs — 512 GB RAM — Premium SSD " } ] } }, { - "name": "StandardE328dsV4", + "name": "StandardEC8adsV6", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardEDSv4.StandardE328dsV4", + "signature": "public const static string StandardECadsv6.StandardEC8adsV6", "returnType": "string", "isStatic": true, "isConst": true, @@ -16862,16 +17257,16 @@ "summary": [ { "kind": "text", - "text": " Standard_E32-8ds_v4 — 32 vCPUs — 256 GB RAM — Premium SSD " + "text": " Standard_EC8ads_v6 — 8 vCPUs — 64 GB RAM — Premium SSD " } ] } }, { - "name": "StandardE32dsV4", + "name": "StandardEC96adsV6", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardEDSv4.StandardE32dsV4", + "signature": "public const static string StandardECadsv6.StandardEC96adsV6", "returnType": "string", "isStatic": true, "isConst": true, @@ -16879,16 +17274,35 @@ "summary": [ { "kind": "text", - "text": " Standard_E32ds_v4 — 32 vCPUs — 256 GB RAM — Premium SSD " + "text": " Standard_EC96ads_v6 — 96 vCPUs — 672 GB RAM — Premium SSD " } ] } - }, + } + ] + }, + { + "name": "StandardECASv5", + "fullName": "Aspire.Hosting.Azure.Kubernetes.AksNodeVmSizes.StandardECASv5", + "namespace": "Aspire.Hosting.Azure.Kubernetes", + "kind": "class", + "accessibility": "public", + "isStatic": true, + "docs": { + "summary": [ + { + "kind": "text", + "text": " VM sizes in the standardECASv5Family. " + } + ] + }, + "sourceFile": "src/Aspire.Hosting.Azure.Kubernetes/AksNodeVmSizes.cs", + "members": [ { - "name": "StandardE42dsV4", + "name": "StandardEC16asV5", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardEDSv4.StandardE42dsV4", + "signature": "public const static string StandardECASv5.StandardEC16asV5", "returnType": "string", "isStatic": true, "isConst": true, @@ -16896,16 +17310,16 @@ "summary": [ { "kind": "text", - "text": " Standard_E4-2ds_v4 — 4 vCPUs — 32 GB RAM — Premium SSD " + "text": " Standard_EC16as_v5 — 16 vCPUs — 128 GB RAM — Premium SSD " } ] } }, { - "name": "StandardE48dsV4", + "name": "StandardEC20asV5", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardEDSv4.StandardE48dsV4", + "signature": "public const static string StandardECASv5.StandardEC20asV5", "returnType": "string", "isStatic": true, "isConst": true, @@ -16913,16 +17327,16 @@ "summary": [ { "kind": "text", - "text": " Standard_E48ds_v4 — 48 vCPUs — 384 GB RAM — Premium SSD " + "text": " Standard_EC20as_v5 — 20 vCPUs — 160 GB RAM — Premium SSD " } ] } }, { - "name": "StandardE4dsV4", + "name": "StandardEC2asV5", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardEDSv4.StandardE4dsV4", + "signature": "public const static string StandardECASv5.StandardEC2asV5", "returnType": "string", "isStatic": true, "isConst": true, @@ -16930,16 +17344,16 @@ "summary": [ { "kind": "text", - "text": " Standard_E4ds_v4 — 4 vCPUs — 32 GB RAM — Premium SSD " + "text": " Standard_EC2as_v5 — 2 vCPUs — 16 GB RAM — Premium SSD " } ] } }, { - "name": "StandardE6416dsV4", + "name": "StandardEC32asV5", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardEDSv4.StandardE6416dsV4", + "signature": "public const static string StandardECASv5.StandardEC32asV5", "returnType": "string", "isStatic": true, "isConst": true, @@ -16947,16 +17361,16 @@ "summary": [ { "kind": "text", - "text": " Standard_E64-16ds_v4 — 64 vCPUs — 504 GB RAM — Premium SSD " + "text": " Standard_EC32as_v5 — 32 vCPUs — 192 GB RAM — Premium SSD " } ] } }, { - "name": "StandardE6432dsV4", + "name": "StandardEC48asV5", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardEDSv4.StandardE6432dsV4", + "signature": "public const static string StandardECASv5.StandardEC48asV5", "returnType": "string", "isStatic": true, "isConst": true, @@ -16964,16 +17378,16 @@ "summary": [ { "kind": "text", - "text": " Standard_E64-32ds_v4 — 64 vCPUs — 504 GB RAM — Premium SSD " + "text": " Standard_EC48as_v5 — 48 vCPUs — 384 GB RAM — Premium SSD " } ] } }, { - "name": "StandardE64dsV4", + "name": "StandardEC4asV5", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardEDSv4.StandardE64dsV4", + "signature": "public const static string StandardECASv5.StandardEC4asV5", "returnType": "string", "isStatic": true, "isConst": true, @@ -16981,16 +17395,16 @@ "summary": [ { "kind": "text", - "text": " Standard_E64ds_v4 — 64 vCPUs — 504 GB RAM — Premium SSD " + "text": " Standard_EC4as_v5 — 4 vCPUs — 32 GB RAM — Premium SSD " } ] } }, { - "name": "StandardE82dsV4", + "name": "StandardEC64asV5", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardEDSv4.StandardE82dsV4", + "signature": "public const static string StandardECASv5.StandardEC64asV5", "returnType": "string", "isStatic": true, "isConst": true, @@ -16998,16 +17412,16 @@ "summary": [ { "kind": "text", - "text": " Standard_E8-2ds_v4 — 8 vCPUs — 64 GB RAM — Premium SSD " + "text": " Standard_EC64as_v5 — 64 vCPUs — 512 GB RAM — Premium SSD " } ] } }, { - "name": "StandardE84dsV4", + "name": "StandardEC8asV5", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardEDSv4.StandardE84dsV4", + "signature": "public const static string StandardECASv5.StandardEC8asV5", "returnType": "string", "isStatic": true, "isConst": true, @@ -17015,16 +17429,16 @@ "summary": [ { "kind": "text", - "text": " Standard_E8-4ds_v4 — 8 vCPUs — 64 GB RAM — Premium SSD " + "text": " Standard_EC8as_v5 — 8 vCPUs — 64 GB RAM — Premium SSD " } ] } }, { - "name": "StandardE8dsV4", + "name": "StandardEC96asV5", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardEDSv4.StandardE8dsV4", + "signature": "public const static string StandardECASv5.StandardEC96asV5", "returnType": "string", "isStatic": true, "isConst": true, @@ -17032,7 +17446,7 @@ "summary": [ { "kind": "text", - "text": " Standard_E8ds_v4 — 8 vCPUs — 64 GB RAM — Premium SSD " + "text": " Standard_EC96as_v5 — 96 vCPUs — 672 GB RAM — Premium SSD " } ] } @@ -17040,8 +17454,8 @@ ] }, { - "name": "StandardEDSv5", - "fullName": "Aspire.Hosting.Azure.Kubernetes.AksNodeVmSizes.StandardEDSv5", + "name": "StandardECasv6", + "fullName": "Aspire.Hosting.Azure.Kubernetes.AksNodeVmSizes.StandardECasv6", "namespace": "Aspire.Hosting.Azure.Kubernetes", "kind": "class", "accessibility": "public", @@ -17050,17 +17464,17 @@ "summary": [ { "kind": "text", - "text": " VM sizes in the standardEDSv5Family. " + "text": " VM sizes in the standardECasv6Family. " } ] }, "sourceFile": "src/Aspire.Hosting.Azure.Kubernetes/AksNodeVmSizes.cs", "members": [ { - "name": "StandardE164dsV5", + "name": "StandardEC16asV6", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardEDSv5.StandardE164dsV5", + "signature": "public const static string StandardECasv6.StandardEC16asV6", "returnType": "string", "isStatic": true, "isConst": true, @@ -17068,16 +17482,16 @@ "summary": [ { "kind": "text", - "text": " Standard_E16-4ds_v5 — 16 vCPUs — 128 GB RAM — Premium SSD " + "text": " Standard_EC16as_v6 — 16 vCPUs — 128 GB RAM — Premium SSD " } ] } }, { - "name": "StandardE168dsV5", + "name": "StandardEC2asV6", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardEDSv5.StandardE168dsV5", + "signature": "public const static string StandardECasv6.StandardEC2asV6", "returnType": "string", "isStatic": true, "isConst": true, @@ -17085,16 +17499,16 @@ "summary": [ { "kind": "text", - "text": " Standard_E16-8ds_v5 — 16 vCPUs — 128 GB RAM — Premium SSD " + "text": " Standard_EC2as_v6 — 2 vCPUs — 16 GB RAM — Premium SSD " } ] } }, { - "name": "StandardE16dsV5", + "name": "StandardEC32asV6", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardEDSv5.StandardE16dsV5", + "signature": "public const static string StandardECasv6.StandardEC32asV6", "returnType": "string", "isStatic": true, "isConst": true, @@ -17102,16 +17516,16 @@ "summary": [ { "kind": "text", - "text": " Standard_E16ds_v5 — 16 vCPUs — 128 GB RAM — Premium SSD " + "text": " Standard_EC32as_v6 — 32 vCPUs — 256 GB RAM — Premium SSD " } ] } }, { - "name": "StandardE20dsV5", + "name": "StandardEC48asV6", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardEDSv5.StandardE20dsV5", + "signature": "public const static string StandardECasv6.StandardEC48asV6", "returnType": "string", "isStatic": true, "isConst": true, @@ -17119,16 +17533,16 @@ "summary": [ { "kind": "text", - "text": " Standard_E20ds_v5 — 20 vCPUs — 160 GB RAM — Premium SSD " + "text": " Standard_EC48as_v6 — 48 vCPUs — 384 GB RAM — Premium SSD " } ] } }, { - "name": "StandardE2dsV5", + "name": "StandardEC4asV6", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardEDSv5.StandardE2dsV5", + "signature": "public const static string StandardECasv6.StandardEC4asV6", "returnType": "string", "isStatic": true, "isConst": true, @@ -17136,16 +17550,16 @@ "summary": [ { "kind": "text", - "text": " Standard_E2ds_v5 — 2 vCPUs — 16 GB RAM — Premium SSD " + "text": " Standard_EC4as_v6 — 4 vCPUs — 32 GB RAM — Premium SSD " } ] } }, { - "name": "StandardE3216dsV5", + "name": "StandardEC64asV6", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardEDSv5.StandardE3216dsV5", + "signature": "public const static string StandardECasv6.StandardEC64asV6", "returnType": "string", "isStatic": true, "isConst": true, @@ -17153,16 +17567,16 @@ "summary": [ { "kind": "text", - "text": " Standard_E32-16ds_v5 — 32 vCPUs — 256 GB RAM — Premium SSD " + "text": " Standard_EC64as_v6 — 64 vCPUs — 512 GB RAM — Premium SSD " } ] } }, { - "name": "StandardE328dsV5", + "name": "StandardEC8asV6", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardEDSv5.StandardE328dsV5", + "signature": "public const static string StandardECasv6.StandardEC8asV6", "returnType": "string", "isStatic": true, "isConst": true, @@ -17170,16 +17584,16 @@ "summary": [ { "kind": "text", - "text": " Standard_E32-8ds_v5 — 32 vCPUs — 256 GB RAM — Premium SSD " + "text": " Standard_EC8as_v6 — 8 vCPUs — 64 GB RAM — Premium SSD " } ] } }, { - "name": "StandardE32dsV5", + "name": "StandardEC96asV6", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardEDSv5.StandardE32dsV5", + "signature": "public const static string StandardECasv6.StandardEC96asV6", "returnType": "string", "isStatic": true, "isConst": true, @@ -17187,16 +17601,35 @@ "summary": [ { "kind": "text", - "text": " Standard_E32ds_v5 — 32 vCPUs — 256 GB RAM — Premium SSD " + "text": " Standard_EC96as_v6 — 96 vCPUs — 672 GB RAM — Premium SSD " } ] } - }, + } + ] + }, + { + "name": "StandardECEDV5", + "fullName": "Aspire.Hosting.Azure.Kubernetes.AksNodeVmSizes.StandardECEDV5", + "namespace": "Aspire.Hosting.Azure.Kubernetes", + "kind": "class", + "accessibility": "public", + "isStatic": true, + "docs": { + "summary": [ + { + "kind": "text", + "text": " VM sizes in the standardECEDV5Family. " + } + ] + }, + "sourceFile": "src/Aspire.Hosting.Azure.Kubernetes/AksNodeVmSizes.cs", + "members": [ { - "name": "StandardE42dsV5", + "name": "StandardEC128edsV5", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardEDSv5.StandardE42dsV5", + "signature": "public const static string StandardECEDV5.StandardEC128edsV5", "returnType": "string", "isStatic": true, "isConst": true, @@ -17204,16 +17637,16 @@ "summary": [ { "kind": "text", - "text": " Standard_E4-2ds_v5 — 4 vCPUs — 32 GB RAM — Premium SSD " + "text": " Standard_EC128eds_v5 — 128 vCPUs — 768 GB RAM — Premium SSD " } ] } }, { - "name": "StandardE48dsV5", + "name": "StandardEC16edsV5", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardEDSv5.StandardE48dsV5", + "signature": "public const static string StandardECEDV5.StandardEC16edsV5", "returnType": "string", "isStatic": true, "isConst": true, @@ -17221,16 +17654,16 @@ "summary": [ { "kind": "text", - "text": " Standard_E48ds_v5 — 48 vCPUs — 384 GB RAM — Premium SSD " + "text": " Standard_EC16eds_v5 — 16 vCPUs — 128 GB RAM — Premium SSD " } ] } }, { - "name": "StandardE4dsV5", + "name": "StandardEC2edsV5", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardEDSv5.StandardE4dsV5", + "signature": "public const static string StandardECEDV5.StandardEC2edsV5", "returnType": "string", "isStatic": true, "isConst": true, @@ -17238,16 +17671,16 @@ "summary": [ { "kind": "text", - "text": " Standard_E4ds_v5 — 4 vCPUs — 32 GB RAM — Premium SSD " + "text": " Standard_EC2eds_v5 — 2 vCPUs — 16 GB RAM — Premium SSD " } ] } }, { - "name": "StandardE6416dsV5", + "name": "StandardEC32edsV5", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardEDSv5.StandardE6416dsV5", + "signature": "public const static string StandardECEDV5.StandardEC32edsV5", "returnType": "string", "isStatic": true, "isConst": true, @@ -17255,16 +17688,16 @@ "summary": [ { "kind": "text", - "text": " Standard_E64-16ds_v5 — 64 vCPUs — 512 GB RAM — Premium SSD " + "text": " Standard_EC32eds_v5 — 32 vCPUs — 256 GB RAM — Premium SSD " } ] } }, { - "name": "StandardE6432dsV5", + "name": "StandardEC48edsV5", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardEDSv5.StandardE6432dsV5", + "signature": "public const static string StandardECEDV5.StandardEC48edsV5", "returnType": "string", "isStatic": true, "isConst": true, @@ -17272,16 +17705,16 @@ "summary": [ { "kind": "text", - "text": " Standard_E64-32ds_v5 — 64 vCPUs — 512 GB RAM — Premium SSD " + "text": " Standard_EC48eds_v5 — 48 vCPUs — 384 GB RAM — Premium SSD " } ] } }, { - "name": "StandardE64dsV5", + "name": "StandardEC4edsV5", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardEDSv5.StandardE64dsV5", + "signature": "public const static string StandardECEDV5.StandardEC4edsV5", "returnType": "string", "isStatic": true, "isConst": true, @@ -17289,16 +17722,16 @@ "summary": [ { "kind": "text", - "text": " Standard_E64ds_v5 — 64 vCPUs — 512 GB RAM — Premium SSD " + "text": " Standard_EC4eds_v5 — 4 vCPUs — 32 GB RAM — Premium SSD " } ] } }, { - "name": "StandardE82dsV5", + "name": "StandardEC64edsV5", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardEDSv5.StandardE82dsV5", + "signature": "public const static string StandardECEDV5.StandardEC64edsV5", "returnType": "string", "isStatic": true, "isConst": true, @@ -17306,16 +17739,16 @@ "summary": [ { "kind": "text", - "text": " Standard_E8-2ds_v5 — 8 vCPUs — 64 GB RAM — Premium SSD " + "text": " Standard_EC64eds_v5 — 64 vCPUs — 512 GB RAM — Premium SSD " } ] } }, { - "name": "StandardE84dsV5", + "name": "StandardEC8edsV5", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardEDSv5.StandardE84dsV5", + "signature": "public const static string StandardECEDV5.StandardEC8edsV5", "returnType": "string", "isStatic": true, "isConst": true, @@ -17323,16 +17756,35 @@ "summary": [ { "kind": "text", - "text": " Standard_E8-4ds_v5 — 8 vCPUs — 64 GB RAM — Premium SSD " + "text": " Standard_EC8eds_v5 — 8 vCPUs — 64 GB RAM — Premium SSD " } ] } - }, + } + ] + }, + { + "name": "StandardECEDV6", + "fullName": "Aspire.Hosting.Azure.Kubernetes.AksNodeVmSizes.StandardECEDV6", + "namespace": "Aspire.Hosting.Azure.Kubernetes", + "kind": "class", + "accessibility": "public", + "isStatic": true, + "docs": { + "summary": [ + { + "kind": "text", + "text": " VM sizes in the StandardECEDV6Family. " + } + ] + }, + "sourceFile": "src/Aspire.Hosting.Azure.Kubernetes/AksNodeVmSizes.cs", + "members": [ { - "name": "StandardE8dsV5", + "name": "StandardEC16edsV6", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardEDSv5.StandardE8dsV5", + "signature": "public const static string StandardECEDV6.StandardEC16edsV6", "returnType": "string", "isStatic": true, "isConst": true, @@ -17340,16 +17792,16 @@ "summary": [ { "kind": "text", - "text": " Standard_E8ds_v5 — 8 vCPUs — 64 GB RAM — Premium SSD " + "text": " Standard_EC16eds_v6 — 16 vCPUs — 128 GB RAM — Premium SSD " } ] } }, { - "name": "StandardE9624dsV5", + "name": "StandardEC2edsV6", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardEDSv5.StandardE9624dsV5", + "signature": "public const static string StandardECEDV6.StandardEC2edsV6", "returnType": "string", "isStatic": true, "isConst": true, @@ -17357,16 +17809,16 @@ "summary": [ { "kind": "text", - "text": " Standard_E96-24ds_v5 — 96 vCPUs — 672 GB RAM — Premium SSD " + "text": " Standard_EC2eds_v6 — 2 vCPUs — 16 GB RAM — Premium SSD " } ] } }, { - "name": "StandardE9648dsV5", + "name": "StandardEC32edsV6", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardEDSv5.StandardE9648dsV5", + "signature": "public const static string StandardECEDV6.StandardEC32edsV6", "returnType": "string", "isStatic": true, "isConst": true, @@ -17374,16 +17826,16 @@ "summary": [ { "kind": "text", - "text": " Standard_E96-48ds_v5 — 96 vCPUs — 672 GB RAM — Premium SSD " + "text": " Standard_EC32eds_v6 — 32 vCPUs — 256 GB RAM — Premium SSD " } ] } }, { - "name": "StandardE96dsV5", + "name": "StandardEC48edsV6", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardEDSv5.StandardE96dsV5", + "signature": "public const static string StandardECEDV6.StandardEC48edsV6", "returnType": "string", "isStatic": true, "isConst": true, @@ -17391,35 +17843,16 @@ "summary": [ { "kind": "text", - "text": " Standard_E96ds_v5 — 96 vCPUs — 672 GB RAM — Premium SSD " + "text": " Standard_EC48eds_v6 — 48 vCPUs — 384 GB RAM — Premium SSD " } ] } - } - ] - }, - { - "name": "StandardEdsv6", - "fullName": "Aspire.Hosting.Azure.Kubernetes.AksNodeVmSizes.StandardEdsv6", - "namespace": "Aspire.Hosting.Azure.Kubernetes", - "kind": "class", - "accessibility": "public", - "isStatic": true, - "docs": { - "summary": [ - { - "kind": "text", - "text": " VM sizes in the StandardEdsv6Family. " - } - ] - }, - "sourceFile": "src/Aspire.Hosting.Azure.Kubernetes/AksNodeVmSizes.cs", - "members": [ + }, { - "name": "StandardE12832dsV6", + "name": "StandardEC4edsV6", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardEdsv6.StandardE12832dsV6", + "signature": "public const static string StandardECEDV6.StandardEC4edsV6", "returnType": "string", "isStatic": true, "isConst": true, @@ -17427,16 +17860,16 @@ "summary": [ { "kind": "text", - "text": " Standard_E128-32ds_v6 — 128 vCPUs — 1024 GB RAM — Premium SSD " + "text": " Standard_EC4eds_v6 — 4 vCPUs — 32 GB RAM — Premium SSD " } ] } }, { - "name": "StandardE12864dsV6", + "name": "StandardEC64edsV6", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardEdsv6.StandardE12864dsV6", + "signature": "public const static string StandardECEDV6.StandardEC64edsV6", "returnType": "string", "isStatic": true, "isConst": true, @@ -17444,16 +17877,16 @@ "summary": [ { "kind": "text", - "text": " Standard_E128-64ds_v6 — 128 vCPUs — 1024 GB RAM — Premium SSD " + "text": " Standard_EC64eds_v6 — 64 vCPUs — 512 GB RAM — Premium SSD " } ] } }, { - "name": "StandardE128dsV6", + "name": "StandardEC8edsV6", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardEdsv6.StandardE128dsV6", + "signature": "public const static string StandardECEDV6.StandardEC8edsV6", "returnType": "string", "isStatic": true, "isConst": true, @@ -17461,16 +17894,35 @@ "summary": [ { "kind": "text", - "text": " Standard_E128ds_v6 — 128 vCPUs — 1024 GB RAM — Premium SSD " + "text": " Standard_EC8eds_v6 — 8 vCPUs — 64 GB RAM — Premium SSD " } ] } - }, + } + ] + }, + { + "name": "StandardECEV5", + "fullName": "Aspire.Hosting.Azure.Kubernetes.AksNodeVmSizes.StandardECEV5", + "namespace": "Aspire.Hosting.Azure.Kubernetes", + "kind": "class", + "accessibility": "public", + "isStatic": true, + "docs": { + "summary": [ + { + "kind": "text", + "text": " VM sizes in the standardECEV5Family. " + } + ] + }, + "sourceFile": "src/Aspire.Hosting.Azure.Kubernetes/AksNodeVmSizes.cs", + "members": [ { - "name": "StandardE164dsV6", + "name": "StandardEC128esV5", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardEdsv6.StandardE164dsV6", + "signature": "public const static string StandardECEV5.StandardEC128esV5", "returnType": "string", "isStatic": true, "isConst": true, @@ -17478,16 +17930,16 @@ "summary": [ { "kind": "text", - "text": " Standard_E16-4ds_v6 — 16 vCPUs — 128 GB RAM — Premium SSD " + "text": " Standard_EC128es_v5 — 128 vCPUs — 768 GB RAM — Premium SSD " } ] } }, { - "name": "StandardE168dsV6", + "name": "StandardEC16esV5", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardEdsv6.StandardE168dsV6", + "signature": "public const static string StandardECEV5.StandardEC16esV5", "returnType": "string", "isStatic": true, "isConst": true, @@ -17495,16 +17947,16 @@ "summary": [ { "kind": "text", - "text": " Standard_E16-8ds_v6 — 16 vCPUs — 128 GB RAM — Premium SSD " + "text": " Standard_EC16es_v5 — 16 vCPUs — 128 GB RAM — Premium SSD " } ] } }, { - "name": "StandardE16dsV6", + "name": "StandardEC2esV5", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardEdsv6.StandardE16dsV6", + "signature": "public const static string StandardECEV5.StandardEC2esV5", "returnType": "string", "isStatic": true, "isConst": true, @@ -17512,16 +17964,16 @@ "summary": [ { "kind": "text", - "text": " Standard_E16ds_v6 — 16 vCPUs — 128 GB RAM — Premium SSD " + "text": " Standard_EC2es_v5 — 2 vCPUs — 16 GB RAM — Premium SSD " } ] } }, { - "name": "StandardE192idsV6", + "name": "StandardEC32esV5", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardEdsv6.StandardE192idsV6", + "signature": "public const static string StandardECEV5.StandardEC32esV5", "returnType": "string", "isStatic": true, "isConst": true, @@ -17529,16 +17981,16 @@ "summary": [ { "kind": "text", - "text": " Standard_E192ids_v6 — 192 vCPUs — 1832 GB RAM — Premium SSD " + "text": " Standard_EC32es_v5 — 32 vCPUs — 256 GB RAM — Premium SSD " } ] } }, { - "name": "StandardE20dsV6", + "name": "StandardEC48esV5", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardEdsv6.StandardE20dsV6", + "signature": "public const static string StandardECEV5.StandardEC48esV5", "returnType": "string", "isStatic": true, "isConst": true, @@ -17546,16 +17998,16 @@ "summary": [ { "kind": "text", - "text": " Standard_E20ds_v6 — 20 vCPUs — 160 GB RAM — Premium SSD " + "text": " Standard_EC48es_v5 — 48 vCPUs — 384 GB RAM — Premium SSD " } ] } }, { - "name": "StandardE2dsV6", + "name": "StandardEC4esV5", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardEdsv6.StandardE2dsV6", + "signature": "public const static string StandardECEV5.StandardEC4esV5", "returnType": "string", "isStatic": true, "isConst": true, @@ -17563,16 +18015,16 @@ "summary": [ { "kind": "text", - "text": " Standard_E2ds_v6 — 2 vCPUs — 16 GB RAM — Premium SSD " + "text": " Standard_EC4es_v5 — 4 vCPUs — 32 GB RAM — Premium SSD " } ] } }, { - "name": "StandardE3216dsV6", + "name": "StandardEC64esV5", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardEdsv6.StandardE3216dsV6", + "signature": "public const static string StandardECEV5.StandardEC64esV5", "returnType": "string", "isStatic": true, "isConst": true, @@ -17580,16 +18032,16 @@ "summary": [ { "kind": "text", - "text": " Standard_E32-16ds_v6 — 32 vCPUs — 256 GB RAM — Premium SSD " + "text": " Standard_EC64es_v5 — 64 vCPUs — 512 GB RAM — Premium SSD " } ] } }, { - "name": "StandardE328dsV6", + "name": "StandardEC8esV5", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardEdsv6.StandardE328dsV6", + "signature": "public const static string StandardECEV5.StandardEC8esV5", "returnType": "string", "isStatic": true, "isConst": true, @@ -17597,16 +18049,35 @@ "summary": [ { "kind": "text", - "text": " Standard_E32-8ds_v6 — 32 vCPUs — 256 GB RAM — Premium SSD " + "text": " Standard_EC8es_v5 — 8 vCPUs — 64 GB RAM — Premium SSD " } ] } - }, + } + ] + }, + { + "name": "StandardECEV6", + "fullName": "Aspire.Hosting.Azure.Kubernetes.AksNodeVmSizes.StandardECEV6", + "namespace": "Aspire.Hosting.Azure.Kubernetes", + "kind": "class", + "accessibility": "public", + "isStatic": true, + "docs": { + "summary": [ + { + "kind": "text", + "text": " VM sizes in the StandardECEV6Family. " + } + ] + }, + "sourceFile": "src/Aspire.Hosting.Azure.Kubernetes/AksNodeVmSizes.cs", + "members": [ { - "name": "StandardE32dsV6", + "name": "StandardEC16esV6", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardEdsv6.StandardE32dsV6", + "signature": "public const static string StandardECEV6.StandardEC16esV6", "returnType": "string", "isStatic": true, "isConst": true, @@ -17614,16 +18085,16 @@ "summary": [ { "kind": "text", - "text": " Standard_E32ds_v6 — 32 vCPUs — 256 GB RAM — Premium SSD " + "text": " Standard_EC16es_v6 — 16 vCPUs — 128 GB RAM — Premium SSD " } ] } }, { - "name": "StandardE42dsV6", + "name": "StandardEC2esV6", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardEdsv6.StandardE42dsV6", + "signature": "public const static string StandardECEV6.StandardEC2esV6", "returnType": "string", "isStatic": true, "isConst": true, @@ -17631,16 +18102,16 @@ "summary": [ { "kind": "text", - "text": " Standard_E4-2ds_v6 — 4 vCPUs — 32 GB RAM — Premium SSD " + "text": " Standard_EC2es_v6 — 2 vCPUs — 16 GB RAM — Premium SSD " } ] } }, { - "name": "StandardE48dsV6", + "name": "StandardEC32esV6", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardEdsv6.StandardE48dsV6", + "signature": "public const static string StandardECEV6.StandardEC32esV6", "returnType": "string", "isStatic": true, "isConst": true, @@ -17648,16 +18119,16 @@ "summary": [ { "kind": "text", - "text": " Standard_E48ds_v6 — 48 vCPUs — 384 GB RAM — Premium SSD " + "text": " Standard_EC32es_v6 — 32 vCPUs — 256 GB RAM — Premium SSD " } ] } }, { - "name": "StandardE4dsV6", + "name": "StandardEC48esV6", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardEdsv6.StandardE4dsV6", + "signature": "public const static string StandardECEV6.StandardEC48esV6", "returnType": "string", "isStatic": true, "isConst": true, @@ -17665,16 +18136,16 @@ "summary": [ { "kind": "text", - "text": " Standard_E4ds_v6 — 4 vCPUs — 32 GB RAM — Premium SSD " + "text": " Standard_EC48es_v6 — 48 vCPUs — 384 GB RAM — Premium SSD " } ] } }, { - "name": "StandardE6416dsV6", + "name": "StandardEC4esV6", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardEdsv6.StandardE6416dsV6", + "signature": "public const static string StandardECEV6.StandardEC4esV6", "returnType": "string", "isStatic": true, "isConst": true, @@ -17682,16 +18153,16 @@ "summary": [ { "kind": "text", - "text": " Standard_E64-16ds_v6 — 64 vCPUs — 512 GB RAM — Premium SSD " + "text": " Standard_EC4es_v6 — 4 vCPUs — 32 GB RAM — Premium SSD " } ] } }, { - "name": "StandardE6432dsV6", + "name": "StandardEC64esV6", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardEdsv6.StandardE6432dsV6", + "signature": "public const static string StandardECEV6.StandardEC64esV6", "returnType": "string", "isStatic": true, "isConst": true, @@ -17699,16 +18170,16 @@ "summary": [ { "kind": "text", - "text": " Standard_E64-32ds_v6 — 64 vCPUs — 512 GB RAM — Premium SSD " + "text": " Standard_EC64es_v6 — 64 vCPUs — 512 GB RAM — Premium SSD " } ] } }, { - "name": "StandardE64dsV6", + "name": "StandardEC8esV6", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardEdsv6.StandardE64dsV6", + "signature": "public const static string StandardECEV6.StandardEC8esV6", "returnType": "string", "isStatic": true, "isConst": true, @@ -17716,33 +18187,35 @@ "summary": [ { "kind": "text", - "text": " Standard_E64ds_v6 — 64 vCPUs — 512 GB RAM — Premium SSD " + "text": " Standard_EC8es_v6 — 8 vCPUs — 64 GB RAM — Premium SSD " } ] } - }, - { - "name": "StandardE82dsV6", - "kind": "field", - "accessibility": "public", - "signature": "public const static string StandardEdsv6.StandardE82dsV6", - "returnType": "string", - "isStatic": true, - "isConst": true, - "docs": { - "summary": [ - { - "kind": "text", - "text": " Standard_E8-2ds_v6 — 8 vCPUs — 64 GB RAM — Premium SSD " - } - ] + } + ] + }, + { + "name": "StandardECIADSv5", + "fullName": "Aspire.Hosting.Azure.Kubernetes.AksNodeVmSizes.StandardECIADSv5", + "namespace": "Aspire.Hosting.Azure.Kubernetes", + "kind": "class", + "accessibility": "public", + "isStatic": true, + "docs": { + "summary": [ + { + "kind": "text", + "text": " VM sizes in the standardECIADSv5Family. " } - }, + ] + }, + "sourceFile": "src/Aspire.Hosting.Azure.Kubernetes/AksNodeVmSizes.cs", + "members": [ { - "name": "StandardE84dsV6", + "name": "StandardEC96iadsV5", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardEdsv6.StandardE84dsV6", + "signature": "public const static string StandardECIADSv5.StandardEC96iadsV5", "returnType": "string", "isStatic": true, "isConst": true, @@ -17750,33 +18223,35 @@ "summary": [ { "kind": "text", - "text": " Standard_E8-4ds_v6 — 8 vCPUs — 64 GB RAM — Premium SSD " + "text": " Standard_EC96iads_v5 — 96 vCPUs — 672 GB RAM — Premium SSD " } ] } - }, - { - "name": "StandardE8dsV6", - "kind": "field", - "accessibility": "public", - "signature": "public const static string StandardEdsv6.StandardE8dsV6", - "returnType": "string", - "isStatic": true, - "isConst": true, - "docs": { - "summary": [ - { - "kind": "text", - "text": " Standard_E8ds_v6 — 8 vCPUs — 64 GB RAM — Premium SSD " - } - ] + } + ] + }, + { + "name": "StandardECIASv5", + "fullName": "Aspire.Hosting.Azure.Kubernetes.AksNodeVmSizes.StandardECIASv5", + "namespace": "Aspire.Hosting.Azure.Kubernetes", + "kind": "class", + "accessibility": "public", + "isStatic": true, + "docs": { + "summary": [ + { + "kind": "text", + "text": " VM sizes in the standardECIASv5Family. " } - }, + ] + }, + "sourceFile": "src/Aspire.Hosting.Azure.Kubernetes/AksNodeVmSizes.cs", + "members": [ { - "name": "StandardE9624dsV6", + "name": "StandardEC96iasV5", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardEdsv6.StandardE9624dsV6", + "signature": "public const static string StandardECIASv5.StandardEC96iasV5", "returnType": "string", "isStatic": true, "isConst": true, @@ -17784,16 +18259,35 @@ "summary": [ { "kind": "text", - "text": " Standard_E96-24ds_v6 — 96 vCPUs — 768 GB RAM — Premium SSD " + "text": " Standard_EC96ias_v5 — 96 vCPUs — 672 GB RAM — Premium SSD " } ] } - }, + } + ] + }, + { + "name": "StandardECIEDV5", + "fullName": "Aspire.Hosting.Azure.Kubernetes.AksNodeVmSizes.StandardECIEDV5", + "namespace": "Aspire.Hosting.Azure.Kubernetes", + "kind": "class", + "accessibility": "public", + "isStatic": true, + "docs": { + "summary": [ + { + "kind": "text", + "text": " VM sizes in the standardECIEDV5Family. " + } + ] + }, + "sourceFile": "src/Aspire.Hosting.Azure.Kubernetes/AksNodeVmSizes.cs", + "members": [ { - "name": "StandardE9648dsV6", + "name": "StandardEC128iedsV5", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardEdsv6.StandardE9648dsV6", + "signature": "public const static string StandardECIEDV5.StandardEC128iedsV5", "returnType": "string", "isStatic": true, "isConst": true, @@ -17801,16 +18295,35 @@ "summary": [ { "kind": "text", - "text": " Standard_E96-48ds_v6 — 96 vCPUs — 768 GB RAM — Premium SSD " + "text": " Standard_EC128ieds_v5 — 128 vCPUs — 768 GB RAM — Premium SSD " } ] } - }, + } + ] + }, + { + "name": "StandardECIEV5", + "fullName": "Aspire.Hosting.Azure.Kubernetes.AksNodeVmSizes.StandardECIEV5", + "namespace": "Aspire.Hosting.Azure.Kubernetes", + "kind": "class", + "accessibility": "public", + "isStatic": true, + "docs": { + "summary": [ + { + "kind": "text", + "text": " VM sizes in the standardECIEV5Family. " + } + ] + }, + "sourceFile": "src/Aspire.Hosting.Azure.Kubernetes/AksNodeVmSizes.cs", + "members": [ { - "name": "StandardE96dsV6", + "name": "StandardEC128iesV5", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardEdsv6.StandardE96dsV6", + "signature": "public const static string StandardECIEV5.StandardEC128iesV5", "returnType": "string", "isStatic": true, "isConst": true, @@ -17818,7 +18331,7 @@ "summary": [ { "kind": "text", - "text": " Standard_E96ds_v6 — 96 vCPUs — 768 GB RAM — Premium SSD " + "text": " Standard_EC128ies_v5 — 128 vCPUs — 768 GB RAM — Premium SSD " } ] } @@ -17826,8 +18339,8 @@ ] }, { - "name": "StandardEDv4", - "fullName": "Aspire.Hosting.Azure.Kubernetes.AksNodeVmSizes.StandardEDv4", + "name": "StandardEDSv4", + "fullName": "Aspire.Hosting.Azure.Kubernetes.AksNodeVmSizes.StandardEDSv4", "namespace": "Aspire.Hosting.Azure.Kubernetes", "kind": "class", "accessibility": "public", @@ -17836,17 +18349,17 @@ "summary": [ { "kind": "text", - "text": " VM sizes in the standardEDv4Family. " + "text": " VM sizes in the standardEDSv4Family. " } ] }, "sourceFile": "src/Aspire.Hosting.Azure.Kubernetes/AksNodeVmSizes.cs", "members": [ { - "name": "StandardE16dV4", + "name": "StandardE164dsV4", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardEDv4.StandardE16dV4", + "signature": "public const static string StandardEDSv4.StandardE164dsV4", "returnType": "string", "isStatic": true, "isConst": true, @@ -17854,16 +18367,16 @@ "summary": [ { "kind": "text", - "text": " Standard_E16d_v4 — 16 vCPUs — 128 GB RAM " + "text": " Standard_E16-4ds_v4 — 16 vCPUs — 128 GB RAM — Premium SSD " } ] } }, { - "name": "StandardE20dV4", + "name": "StandardE168dsV4", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardEDv4.StandardE20dV4", + "signature": "public const static string StandardEDSv4.StandardE168dsV4", "returnType": "string", "isStatic": true, "isConst": true, @@ -17871,16 +18384,16 @@ "summary": [ { "kind": "text", - "text": " Standard_E20d_v4 — 20 vCPUs — 160 GB RAM " + "text": " Standard_E16-8ds_v4 — 16 vCPUs — 128 GB RAM — Premium SSD " } ] } }, { - "name": "StandardE2dV4", + "name": "StandardE16dsV4", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardEDv4.StandardE2dV4", + "signature": "public const static string StandardEDSv4.StandardE16dsV4", "returnType": "string", "isStatic": true, "isConst": true, @@ -17888,16 +18401,16 @@ "summary": [ { "kind": "text", - "text": " Standard_E2d_v4 — 2 vCPUs — 16 GB RAM " + "text": " Standard_E16ds_v4 — 16 vCPUs — 128 GB RAM — Premium SSD " } ] } }, { - "name": "StandardE32dV4", + "name": "StandardE20dsV4", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardEDv4.StandardE32dV4", + "signature": "public const static string StandardEDSv4.StandardE20dsV4", "returnType": "string", "isStatic": true, "isConst": true, @@ -17905,16 +18418,16 @@ "summary": [ { "kind": "text", - "text": " Standard_E32d_v4 — 32 vCPUs — 256 GB RAM " + "text": " Standard_E20ds_v4 — 20 vCPUs — 160 GB RAM — Premium SSD " } ] } }, { - "name": "StandardE48dV4", + "name": "StandardE2dsV4", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardEDv4.StandardE48dV4", + "signature": "public const static string StandardEDSv4.StandardE2dsV4", "returnType": "string", "isStatic": true, "isConst": true, @@ -17922,16 +18435,16 @@ "summary": [ { "kind": "text", - "text": " Standard_E48d_v4 — 48 vCPUs — 384 GB RAM " + "text": " Standard_E2ds_v4 — 2 vCPUs — 16 GB RAM — Premium SSD " } ] } }, { - "name": "StandardE4dV4", + "name": "StandardE3216dsV4", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardEDv4.StandardE4dV4", + "signature": "public const static string StandardEDSv4.StandardE3216dsV4", "returnType": "string", "isStatic": true, "isConst": true, @@ -17939,16 +18452,16 @@ "summary": [ { "kind": "text", - "text": " Standard_E4d_v4 — 4 vCPUs — 32 GB RAM " + "text": " Standard_E32-16ds_v4 — 32 vCPUs — 256 GB RAM — Premium SSD " } ] } }, { - "name": "StandardE64dV4", + "name": "StandardE328dsV4", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardEDv4.StandardE64dV4", + "signature": "public const static string StandardEDSv4.StandardE328dsV4", "returnType": "string", "isStatic": true, "isConst": true, @@ -17956,16 +18469,16 @@ "summary": [ { "kind": "text", - "text": " Standard_E64d_v4 — 64 vCPUs — 504 GB RAM " + "text": " Standard_E32-8ds_v4 — 32 vCPUs — 256 GB RAM — Premium SSD " } ] } }, { - "name": "StandardE8dV4", + "name": "StandardE32dsV4", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardEDv4.StandardE8dV4", + "signature": "public const static string StandardEDSv4.StandardE32dsV4", "returnType": "string", "isStatic": true, "isConst": true, @@ -17973,35 +18486,16 @@ "summary": [ { "kind": "text", - "text": " Standard_E8d_v4 — 8 vCPUs — 64 GB RAM " + "text": " Standard_E32ds_v4 — 32 vCPUs — 256 GB RAM — Premium SSD " } ] } - } - ] - }, - { - "name": "StandardEDv5", - "fullName": "Aspire.Hosting.Azure.Kubernetes.AksNodeVmSizes.StandardEDv5", - "namespace": "Aspire.Hosting.Azure.Kubernetes", - "kind": "class", - "accessibility": "public", - "isStatic": true, - "docs": { - "summary": [ - { - "kind": "text", - "text": " VM sizes in the standardEDv5Family. " - } - ] - }, - "sourceFile": "src/Aspire.Hosting.Azure.Kubernetes/AksNodeVmSizes.cs", - "members": [ + }, { - "name": "StandardE16dV5", + "name": "StandardE42dsV4", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardEDv5.StandardE16dV5", + "signature": "public const static string StandardEDSv4.StandardE42dsV4", "returnType": "string", "isStatic": true, "isConst": true, @@ -18009,16 +18503,16 @@ "summary": [ { "kind": "text", - "text": " Standard_E16d_v5 — 16 vCPUs — 128 GB RAM " + "text": " Standard_E4-2ds_v4 — 4 vCPUs — 32 GB RAM — Premium SSD " } ] } }, { - "name": "StandardE20dV5", + "name": "StandardE48dsV4", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardEDv5.StandardE20dV5", + "signature": "public const static string StandardEDSv4.StandardE48dsV4", "returnType": "string", "isStatic": true, "isConst": true, @@ -18026,16 +18520,16 @@ "summary": [ { "kind": "text", - "text": " Standard_E20d_v5 — 20 vCPUs — 160 GB RAM " + "text": " Standard_E48ds_v4 — 48 vCPUs — 384 GB RAM — Premium SSD " } ] } }, { - "name": "StandardE2dV5", + "name": "StandardE4dsV4", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardEDv5.StandardE2dV5", + "signature": "public const static string StandardEDSv4.StandardE4dsV4", "returnType": "string", "isStatic": true, "isConst": true, @@ -18043,16 +18537,16 @@ "summary": [ { "kind": "text", - "text": " Standard_E2d_v5 — 2 vCPUs — 16 GB RAM " + "text": " Standard_E4ds_v4 — 4 vCPUs — 32 GB RAM — Premium SSD " } ] } }, { - "name": "StandardE32dV5", + "name": "StandardE6416dsV4", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardEDv5.StandardE32dV5", + "signature": "public const static string StandardEDSv4.StandardE6416dsV4", "returnType": "string", "isStatic": true, "isConst": true, @@ -18060,16 +18554,16 @@ "summary": [ { "kind": "text", - "text": " Standard_E32d_v5 — 32 vCPUs — 256 GB RAM " + "text": " Standard_E64-16ds_v4 — 64 vCPUs — 504 GB RAM — Premium SSD " } ] } }, { - "name": "StandardE48dV5", + "name": "StandardE6432dsV4", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardEDv5.StandardE48dV5", + "signature": "public const static string StandardEDSv4.StandardE6432dsV4", "returnType": "string", "isStatic": true, "isConst": true, @@ -18077,16 +18571,16 @@ "summary": [ { "kind": "text", - "text": " Standard_E48d_v5 — 48 vCPUs — 384 GB RAM " + "text": " Standard_E64-32ds_v4 — 64 vCPUs — 504 GB RAM — Premium SSD " } ] } }, { - "name": "StandardE4dV5", + "name": "StandardE64dsV4", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardEDv5.StandardE4dV5", + "signature": "public const static string StandardEDSv4.StandardE64dsV4", "returnType": "string", "isStatic": true, "isConst": true, @@ -18094,7 +18588,1326 @@ "summary": [ { "kind": "text", - "text": " Standard_E4d_v5 — 4 vCPUs — 32 GB RAM " + "text": " Standard_E64ds_v4 — 64 vCPUs — 504 GB RAM — Premium SSD " + } + ] + } + }, + { + "name": "StandardE82dsV4", + "kind": "field", + "accessibility": "public", + "signature": "public const static string StandardEDSv4.StandardE82dsV4", + "returnType": "string", + "isStatic": true, + "isConst": true, + "docs": { + "summary": [ + { + "kind": "text", + "text": " Standard_E8-2ds_v4 — 8 vCPUs — 64 GB RAM — Premium SSD " + } + ] + } + }, + { + "name": "StandardE84dsV4", + "kind": "field", + "accessibility": "public", + "signature": "public const static string StandardEDSv4.StandardE84dsV4", + "returnType": "string", + "isStatic": true, + "isConst": true, + "docs": { + "summary": [ + { + "kind": "text", + "text": " Standard_E8-4ds_v4 — 8 vCPUs — 64 GB RAM — Premium SSD " + } + ] + } + }, + { + "name": "StandardE8dsV4", + "kind": "field", + "accessibility": "public", + "signature": "public const static string StandardEDSv4.StandardE8dsV4", + "returnType": "string", + "isStatic": true, + "isConst": true, + "docs": { + "summary": [ + { + "kind": "text", + "text": " Standard_E8ds_v4 — 8 vCPUs — 64 GB RAM — Premium SSD " + } + ] + } + } + ] + }, + { + "name": "StandardEDSv5", + "fullName": "Aspire.Hosting.Azure.Kubernetes.AksNodeVmSizes.StandardEDSv5", + "namespace": "Aspire.Hosting.Azure.Kubernetes", + "kind": "class", + "accessibility": "public", + "isStatic": true, + "docs": { + "summary": [ + { + "kind": "text", + "text": " VM sizes in the standardEDSv5Family. " + } + ] + }, + "sourceFile": "src/Aspire.Hosting.Azure.Kubernetes/AksNodeVmSizes.cs", + "members": [ + { + "name": "StandardE164dsV5", + "kind": "field", + "accessibility": "public", + "signature": "public const static string StandardEDSv5.StandardE164dsV5", + "returnType": "string", + "isStatic": true, + "isConst": true, + "docs": { + "summary": [ + { + "kind": "text", + "text": " Standard_E16-4ds_v5 — 16 vCPUs — 128 GB RAM — Premium SSD " + } + ] + } + }, + { + "name": "StandardE168dsV5", + "kind": "field", + "accessibility": "public", + "signature": "public const static string StandardEDSv5.StandardE168dsV5", + "returnType": "string", + "isStatic": true, + "isConst": true, + "docs": { + "summary": [ + { + "kind": "text", + "text": " Standard_E16-8ds_v5 — 16 vCPUs — 128 GB RAM — Premium SSD " + } + ] + } + }, + { + "name": "StandardE16dsV5", + "kind": "field", + "accessibility": "public", + "signature": "public const static string StandardEDSv5.StandardE16dsV5", + "returnType": "string", + "isStatic": true, + "isConst": true, + "docs": { + "summary": [ + { + "kind": "text", + "text": " Standard_E16ds_v5 — 16 vCPUs — 128 GB RAM — Premium SSD " + } + ] + } + }, + { + "name": "StandardE20dsV5", + "kind": "field", + "accessibility": "public", + "signature": "public const static string StandardEDSv5.StandardE20dsV5", + "returnType": "string", + "isStatic": true, + "isConst": true, + "docs": { + "summary": [ + { + "kind": "text", + "text": " Standard_E20ds_v5 — 20 vCPUs — 160 GB RAM — Premium SSD " + } + ] + } + }, + { + "name": "StandardE2dsV5", + "kind": "field", + "accessibility": "public", + "signature": "public const static string StandardEDSv5.StandardE2dsV5", + "returnType": "string", + "isStatic": true, + "isConst": true, + "docs": { + "summary": [ + { + "kind": "text", + "text": " Standard_E2ds_v5 — 2 vCPUs — 16 GB RAM — Premium SSD " + } + ] + } + }, + { + "name": "StandardE3216dsV5", + "kind": "field", + "accessibility": "public", + "signature": "public const static string StandardEDSv5.StandardE3216dsV5", + "returnType": "string", + "isStatic": true, + "isConst": true, + "docs": { + "summary": [ + { + "kind": "text", + "text": " Standard_E32-16ds_v5 — 32 vCPUs — 256 GB RAM — Premium SSD " + } + ] + } + }, + { + "name": "StandardE328dsV5", + "kind": "field", + "accessibility": "public", + "signature": "public const static string StandardEDSv5.StandardE328dsV5", + "returnType": "string", + "isStatic": true, + "isConst": true, + "docs": { + "summary": [ + { + "kind": "text", + "text": " Standard_E32-8ds_v5 — 32 vCPUs — 256 GB RAM — Premium SSD " + } + ] + } + }, + { + "name": "StandardE32dsV5", + "kind": "field", + "accessibility": "public", + "signature": "public const static string StandardEDSv5.StandardE32dsV5", + "returnType": "string", + "isStatic": true, + "isConst": true, + "docs": { + "summary": [ + { + "kind": "text", + "text": " Standard_E32ds_v5 — 32 vCPUs — 256 GB RAM — Premium SSD " + } + ] + } + }, + { + "name": "StandardE42dsV5", + "kind": "field", + "accessibility": "public", + "signature": "public const static string StandardEDSv5.StandardE42dsV5", + "returnType": "string", + "isStatic": true, + "isConst": true, + "docs": { + "summary": [ + { + "kind": "text", + "text": " Standard_E4-2ds_v5 — 4 vCPUs — 32 GB RAM — Premium SSD " + } + ] + } + }, + { + "name": "StandardE48dsV5", + "kind": "field", + "accessibility": "public", + "signature": "public const static string StandardEDSv5.StandardE48dsV5", + "returnType": "string", + "isStatic": true, + "isConst": true, + "docs": { + "summary": [ + { + "kind": "text", + "text": " Standard_E48ds_v5 — 48 vCPUs — 384 GB RAM — Premium SSD " + } + ] + } + }, + { + "name": "StandardE4dsV5", + "kind": "field", + "accessibility": "public", + "signature": "public const static string StandardEDSv5.StandardE4dsV5", + "returnType": "string", + "isStatic": true, + "isConst": true, + "docs": { + "summary": [ + { + "kind": "text", + "text": " Standard_E4ds_v5 — 4 vCPUs — 32 GB RAM — Premium SSD " + } + ] + } + }, + { + "name": "StandardE6416dsV5", + "kind": "field", + "accessibility": "public", + "signature": "public const static string StandardEDSv5.StandardE6416dsV5", + "returnType": "string", + "isStatic": true, + "isConst": true, + "docs": { + "summary": [ + { + "kind": "text", + "text": " Standard_E64-16ds_v5 — 64 vCPUs — 512 GB RAM — Premium SSD " + } + ] + } + }, + { + "name": "StandardE6432dsV5", + "kind": "field", + "accessibility": "public", + "signature": "public const static string StandardEDSv5.StandardE6432dsV5", + "returnType": "string", + "isStatic": true, + "isConst": true, + "docs": { + "summary": [ + { + "kind": "text", + "text": " Standard_E64-32ds_v5 — 64 vCPUs — 512 GB RAM — Premium SSD " + } + ] + } + }, + { + "name": "StandardE64dsV5", + "kind": "field", + "accessibility": "public", + "signature": "public const static string StandardEDSv5.StandardE64dsV5", + "returnType": "string", + "isStatic": true, + "isConst": true, + "docs": { + "summary": [ + { + "kind": "text", + "text": " Standard_E64ds_v5 — 64 vCPUs — 512 GB RAM — Premium SSD " + } + ] + } + }, + { + "name": "StandardE82dsV5", + "kind": "field", + "accessibility": "public", + "signature": "public const static string StandardEDSv5.StandardE82dsV5", + "returnType": "string", + "isStatic": true, + "isConst": true, + "docs": { + "summary": [ + { + "kind": "text", + "text": " Standard_E8-2ds_v5 — 8 vCPUs — 64 GB RAM — Premium SSD " + } + ] + } + }, + { + "name": "StandardE84dsV5", + "kind": "field", + "accessibility": "public", + "signature": "public const static string StandardEDSv5.StandardE84dsV5", + "returnType": "string", + "isStatic": true, + "isConst": true, + "docs": { + "summary": [ + { + "kind": "text", + "text": " Standard_E8-4ds_v5 — 8 vCPUs — 64 GB RAM — Premium SSD " + } + ] + } + }, + { + "name": "StandardE8dsV5", + "kind": "field", + "accessibility": "public", + "signature": "public const static string StandardEDSv5.StandardE8dsV5", + "returnType": "string", + "isStatic": true, + "isConst": true, + "docs": { + "summary": [ + { + "kind": "text", + "text": " Standard_E8ds_v5 — 8 vCPUs — 64 GB RAM — Premium SSD " + } + ] + } + }, + { + "name": "StandardE9624dsV5", + "kind": "field", + "accessibility": "public", + "signature": "public const static string StandardEDSv5.StandardE9624dsV5", + "returnType": "string", + "isStatic": true, + "isConst": true, + "docs": { + "summary": [ + { + "kind": "text", + "text": " Standard_E96-24ds_v5 — 96 vCPUs — 672 GB RAM — Premium SSD " + } + ] + } + }, + { + "name": "StandardE9648dsV5", + "kind": "field", + "accessibility": "public", + "signature": "public const static string StandardEDSv5.StandardE9648dsV5", + "returnType": "string", + "isStatic": true, + "isConst": true, + "docs": { + "summary": [ + { + "kind": "text", + "text": " Standard_E96-48ds_v5 — 96 vCPUs — 672 GB RAM — Premium SSD " + } + ] + } + }, + { + "name": "StandardE96dsV5", + "kind": "field", + "accessibility": "public", + "signature": "public const static string StandardEDSv5.StandardE96dsV5", + "returnType": "string", + "isStatic": true, + "isConst": true, + "docs": { + "summary": [ + { + "kind": "text", + "text": " Standard_E96ds_v5 — 96 vCPUs — 672 GB RAM — Premium SSD " + } + ] + } + } + ] + }, + { + "name": "StandardEdsv6", + "fullName": "Aspire.Hosting.Azure.Kubernetes.AksNodeVmSizes.StandardEdsv6", + "namespace": "Aspire.Hosting.Azure.Kubernetes", + "kind": "class", + "accessibility": "public", + "isStatic": true, + "docs": { + "summary": [ + { + "kind": "text", + "text": " VM sizes in the StandardEdsv6Family. " + } + ] + }, + "sourceFile": "src/Aspire.Hosting.Azure.Kubernetes/AksNodeVmSizes.cs", + "members": [ + { + "name": "StandardE12832dsV6", + "kind": "field", + "accessibility": "public", + "signature": "public const static string StandardEdsv6.StandardE12832dsV6", + "returnType": "string", + "isStatic": true, + "isConst": true, + "docs": { + "summary": [ + { + "kind": "text", + "text": " Standard_E128-32ds_v6 — 128 vCPUs — 1024 GB RAM — Premium SSD " + } + ] + } + }, + { + "name": "StandardE12864dsV6", + "kind": "field", + "accessibility": "public", + "signature": "public const static string StandardEdsv6.StandardE12864dsV6", + "returnType": "string", + "isStatic": true, + "isConst": true, + "docs": { + "summary": [ + { + "kind": "text", + "text": " Standard_E128-64ds_v6 — 128 vCPUs — 1024 GB RAM — Premium SSD " + } + ] + } + }, + { + "name": "StandardE128dsV6", + "kind": "field", + "accessibility": "public", + "signature": "public const static string StandardEdsv6.StandardE128dsV6", + "returnType": "string", + "isStatic": true, + "isConst": true, + "docs": { + "summary": [ + { + "kind": "text", + "text": " Standard_E128ds_v6 — 128 vCPUs — 1024 GB RAM — Premium SSD " + } + ] + } + }, + { + "name": "StandardE164dsV6", + "kind": "field", + "accessibility": "public", + "signature": "public const static string StandardEdsv6.StandardE164dsV6", + "returnType": "string", + "isStatic": true, + "isConst": true, + "docs": { + "summary": [ + { + "kind": "text", + "text": " Standard_E16-4ds_v6 — 16 vCPUs — 128 GB RAM — Premium SSD " + } + ] + } + }, + { + "name": "StandardE168dsV6", + "kind": "field", + "accessibility": "public", + "signature": "public const static string StandardEdsv6.StandardE168dsV6", + "returnType": "string", + "isStatic": true, + "isConst": true, + "docs": { + "summary": [ + { + "kind": "text", + "text": " Standard_E16-8ds_v6 — 16 vCPUs — 128 GB RAM — Premium SSD " + } + ] + } + }, + { + "name": "StandardE16dsV6", + "kind": "field", + "accessibility": "public", + "signature": "public const static string StandardEdsv6.StandardE16dsV6", + "returnType": "string", + "isStatic": true, + "isConst": true, + "docs": { + "summary": [ + { + "kind": "text", + "text": " Standard_E16ds_v6 — 16 vCPUs — 128 GB RAM — Premium SSD " + } + ] + } + }, + { + "name": "StandardE192idsV6", + "kind": "field", + "accessibility": "public", + "signature": "public const static string StandardEdsv6.StandardE192idsV6", + "returnType": "string", + "isStatic": true, + "isConst": true, + "docs": { + "summary": [ + { + "kind": "text", + "text": " Standard_E192ids_v6 — 192 vCPUs — 1832 GB RAM — Premium SSD " + } + ] + } + }, + { + "name": "StandardE20dsV6", + "kind": "field", + "accessibility": "public", + "signature": "public const static string StandardEdsv6.StandardE20dsV6", + "returnType": "string", + "isStatic": true, + "isConst": true, + "docs": { + "summary": [ + { + "kind": "text", + "text": " Standard_E20ds_v6 — 20 vCPUs — 160 GB RAM — Premium SSD " + } + ] + } + }, + { + "name": "StandardE2dsV6", + "kind": "field", + "accessibility": "public", + "signature": "public const static string StandardEdsv6.StandardE2dsV6", + "returnType": "string", + "isStatic": true, + "isConst": true, + "docs": { + "summary": [ + { + "kind": "text", + "text": " Standard_E2ds_v6 — 2 vCPUs — 16 GB RAM — Premium SSD " + } + ] + } + }, + { + "name": "StandardE3216dsV6", + "kind": "field", + "accessibility": "public", + "signature": "public const static string StandardEdsv6.StandardE3216dsV6", + "returnType": "string", + "isStatic": true, + "isConst": true, + "docs": { + "summary": [ + { + "kind": "text", + "text": " Standard_E32-16ds_v6 — 32 vCPUs — 256 GB RAM — Premium SSD " + } + ] + } + }, + { + "name": "StandardE328dsV6", + "kind": "field", + "accessibility": "public", + "signature": "public const static string StandardEdsv6.StandardE328dsV6", + "returnType": "string", + "isStatic": true, + "isConst": true, + "docs": { + "summary": [ + { + "kind": "text", + "text": " Standard_E32-8ds_v6 — 32 vCPUs — 256 GB RAM — Premium SSD " + } + ] + } + }, + { + "name": "StandardE32dsV6", + "kind": "field", + "accessibility": "public", + "signature": "public const static string StandardEdsv6.StandardE32dsV6", + "returnType": "string", + "isStatic": true, + "isConst": true, + "docs": { + "summary": [ + { + "kind": "text", + "text": " Standard_E32ds_v6 — 32 vCPUs — 256 GB RAM — Premium SSD " + } + ] + } + }, + { + "name": "StandardE42dsV6", + "kind": "field", + "accessibility": "public", + "signature": "public const static string StandardEdsv6.StandardE42dsV6", + "returnType": "string", + "isStatic": true, + "isConst": true, + "docs": { + "summary": [ + { + "kind": "text", + "text": " Standard_E4-2ds_v6 — 4 vCPUs — 32 GB RAM — Premium SSD " + } + ] + } + }, + { + "name": "StandardE48dsV6", + "kind": "field", + "accessibility": "public", + "signature": "public const static string StandardEdsv6.StandardE48dsV6", + "returnType": "string", + "isStatic": true, + "isConst": true, + "docs": { + "summary": [ + { + "kind": "text", + "text": " Standard_E48ds_v6 — 48 vCPUs — 384 GB RAM — Premium SSD " + } + ] + } + }, + { + "name": "StandardE4dsV6", + "kind": "field", + "accessibility": "public", + "signature": "public const static string StandardEdsv6.StandardE4dsV6", + "returnType": "string", + "isStatic": true, + "isConst": true, + "docs": { + "summary": [ + { + "kind": "text", + "text": " Standard_E4ds_v6 — 4 vCPUs — 32 GB RAM — Premium SSD " + } + ] + } + }, + { + "name": "StandardE6416dsV6", + "kind": "field", + "accessibility": "public", + "signature": "public const static string StandardEdsv6.StandardE6416dsV6", + "returnType": "string", + "isStatic": true, + "isConst": true, + "docs": { + "summary": [ + { + "kind": "text", + "text": " Standard_E64-16ds_v6 — 64 vCPUs — 512 GB RAM — Premium SSD " + } + ] + } + }, + { + "name": "StandardE6432dsV6", + "kind": "field", + "accessibility": "public", + "signature": "public const static string StandardEdsv6.StandardE6432dsV6", + "returnType": "string", + "isStatic": true, + "isConst": true, + "docs": { + "summary": [ + { + "kind": "text", + "text": " Standard_E64-32ds_v6 — 64 vCPUs — 512 GB RAM — Premium SSD " + } + ] + } + }, + { + "name": "StandardE64dsV6", + "kind": "field", + "accessibility": "public", + "signature": "public const static string StandardEdsv6.StandardE64dsV6", + "returnType": "string", + "isStatic": true, + "isConst": true, + "docs": { + "summary": [ + { + "kind": "text", + "text": " Standard_E64ds_v6 — 64 vCPUs — 512 GB RAM — Premium SSD " + } + ] + } + }, + { + "name": "StandardE82dsV6", + "kind": "field", + "accessibility": "public", + "signature": "public const static string StandardEdsv6.StandardE82dsV6", + "returnType": "string", + "isStatic": true, + "isConst": true, + "docs": { + "summary": [ + { + "kind": "text", + "text": " Standard_E8-2ds_v6 — 8 vCPUs — 64 GB RAM — Premium SSD " + } + ] + } + }, + { + "name": "StandardE84dsV6", + "kind": "field", + "accessibility": "public", + "signature": "public const static string StandardEdsv6.StandardE84dsV6", + "returnType": "string", + "isStatic": true, + "isConst": true, + "docs": { + "summary": [ + { + "kind": "text", + "text": " Standard_E8-4ds_v6 — 8 vCPUs — 64 GB RAM — Premium SSD " + } + ] + } + }, + { + "name": "StandardE8dsV6", + "kind": "field", + "accessibility": "public", + "signature": "public const static string StandardEdsv6.StandardE8dsV6", + "returnType": "string", + "isStatic": true, + "isConst": true, + "docs": { + "summary": [ + { + "kind": "text", + "text": " Standard_E8ds_v6 — 8 vCPUs — 64 GB RAM — Premium SSD " + } + ] + } + }, + { + "name": "StandardE9624dsV6", + "kind": "field", + "accessibility": "public", + "signature": "public const static string StandardEdsv6.StandardE9624dsV6", + "returnType": "string", + "isStatic": true, + "isConst": true, + "docs": { + "summary": [ + { + "kind": "text", + "text": " Standard_E96-24ds_v6 — 96 vCPUs — 768 GB RAM — Premium SSD " + } + ] + } + }, + { + "name": "StandardE9648dsV6", + "kind": "field", + "accessibility": "public", + "signature": "public const static string StandardEdsv6.StandardE9648dsV6", + "returnType": "string", + "isStatic": true, + "isConst": true, + "docs": { + "summary": [ + { + "kind": "text", + "text": " Standard_E96-48ds_v6 — 96 vCPUs — 768 GB RAM — Premium SSD " + } + ] + } + }, + { + "name": "StandardE96dsV6", + "kind": "field", + "accessibility": "public", + "signature": "public const static string StandardEdsv6.StandardE96dsV6", + "returnType": "string", + "isStatic": true, + "isConst": true, + "docs": { + "summary": [ + { + "kind": "text", + "text": " Standard_E96ds_v6 — 96 vCPUs — 768 GB RAM — Premium SSD " + } + ] + } + } + ] + }, + { + "name": "StandardEdsv7", + "fullName": "Aspire.Hosting.Azure.Kubernetes.AksNodeVmSizes.StandardEdsv7", + "namespace": "Aspire.Hosting.Azure.Kubernetes", + "kind": "class", + "accessibility": "public", + "isStatic": true, + "docs": { + "summary": [ + { + "kind": "text", + "text": " VM sizes in the StandardEdsv7Family. " + } + ] + }, + "sourceFile": "src/Aspire.Hosting.Azure.Kubernetes/AksNodeVmSizes.cs", + "members": [ + { + "name": "StandardE128dsV7", + "kind": "field", + "accessibility": "public", + "signature": "public const static string StandardEdsv7.StandardE128dsV7", + "returnType": "string", + "isStatic": true, + "isConst": true, + "docs": { + "summary": [ + { + "kind": "text", + "text": " Standard_E128ds_v7 — 128 vCPUs — 1024 GB RAM — Premium SSD " + } + ] + } + }, + { + "name": "StandardE16dsV7", + "kind": "field", + "accessibility": "public", + "signature": "public const static string StandardEdsv7.StandardE16dsV7", + "returnType": "string", + "isStatic": true, + "isConst": true, + "docs": { + "summary": [ + { + "kind": "text", + "text": " Standard_E16ds_v7 — 16 vCPUs — 128 GB RAM — Premium SSD " + } + ] + } + }, + { + "name": "StandardE192dsV7", + "kind": "field", + "accessibility": "public", + "signature": "public const static string StandardEdsv7.StandardE192dsV7", + "returnType": "string", + "isStatic": true, + "isConst": true, + "docs": { + "summary": [ + { + "kind": "text", + "text": " Standard_E192ds_v7 — 192 vCPUs — 1536 GB RAM — Premium SSD " + } + ] + } + }, + { + "name": "StandardE20dsV7", + "kind": "field", + "accessibility": "public", + "signature": "public const static string StandardEdsv7.StandardE20dsV7", + "returnType": "string", + "isStatic": true, + "isConst": true, + "docs": { + "summary": [ + { + "kind": "text", + "text": " Standard_E20ds_v7 — 20 vCPUs — 160 GB RAM — Premium SSD " + } + ] + } + }, + { + "name": "StandardE2dsV7", + "kind": "field", + "accessibility": "public", + "signature": "public const static string StandardEdsv7.StandardE2dsV7", + "returnType": "string", + "isStatic": true, + "isConst": true, + "docs": { + "summary": [ + { + "kind": "text", + "text": " Standard_E2ds_v7 — 2 vCPUs — 16 GB RAM — Premium SSD " + } + ] + } + }, + { + "name": "StandardE32dsV7", + "kind": "field", + "accessibility": "public", + "signature": "public const static string StandardEdsv7.StandardE32dsV7", + "returnType": "string", + "isStatic": true, + "isConst": true, + "docs": { + "summary": [ + { + "kind": "text", + "text": " Standard_E32ds_v7 — 32 vCPUs — 256 GB RAM — Premium SSD " + } + ] + } + }, + { + "name": "StandardE48dsV7", + "kind": "field", + "accessibility": "public", + "signature": "public const static string StandardEdsv7.StandardE48dsV7", + "returnType": "string", + "isStatic": true, + "isConst": true, + "docs": { + "summary": [ + { + "kind": "text", + "text": " Standard_E48ds_v7 — 48 vCPUs — 384 GB RAM — Premium SSD " + } + ] + } + }, + { + "name": "StandardE4dsV7", + "kind": "field", + "accessibility": "public", + "signature": "public const static string StandardEdsv7.StandardE4dsV7", + "returnType": "string", + "isStatic": true, + "isConst": true, + "docs": { + "summary": [ + { + "kind": "text", + "text": " Standard_E4ds_v7 — 4 vCPUs — 32 GB RAM — Premium SSD " + } + ] + } + }, + { + "name": "StandardE64dsV7", + "kind": "field", + "accessibility": "public", + "signature": "public const static string StandardEdsv7.StandardE64dsV7", + "returnType": "string", + "isStatic": true, + "isConst": true, + "docs": { + "summary": [ + { + "kind": "text", + "text": " Standard_E64ds_v7 — 64 vCPUs — 512 GB RAM — Premium SSD " + } + ] + } + }, + { + "name": "StandardE8dsV7", + "kind": "field", + "accessibility": "public", + "signature": "public const static string StandardEdsv7.StandardE8dsV7", + "returnType": "string", + "isStatic": true, + "isConst": true, + "docs": { + "summary": [ + { + "kind": "text", + "text": " Standard_E8ds_v7 — 8 vCPUs — 64 GB RAM — Premium SSD " + } + ] + } + }, + { + "name": "StandardE96dsV7", + "kind": "field", + "accessibility": "public", + "signature": "public const static string StandardEdsv7.StandardE96dsV7", + "returnType": "string", + "isStatic": true, + "isConst": true, + "docs": { + "summary": [ + { + "kind": "text", + "text": " Standard_E96ds_v7 — 96 vCPUs — 768 GB RAM — Premium SSD " + } + ] + } + } + ] + }, + { + "name": "StandardEDv4", + "fullName": "Aspire.Hosting.Azure.Kubernetes.AksNodeVmSizes.StandardEDv4", + "namespace": "Aspire.Hosting.Azure.Kubernetes", + "kind": "class", + "accessibility": "public", + "isStatic": true, + "docs": { + "summary": [ + { + "kind": "text", + "text": " VM sizes in the standardEDv4Family. " + } + ] + }, + "sourceFile": "src/Aspire.Hosting.Azure.Kubernetes/AksNodeVmSizes.cs", + "members": [ + { + "name": "StandardE16dV4", + "kind": "field", + "accessibility": "public", + "signature": "public const static string StandardEDv4.StandardE16dV4", + "returnType": "string", + "isStatic": true, + "isConst": true, + "docs": { + "summary": [ + { + "kind": "text", + "text": " Standard_E16d_v4 — 16 vCPUs — 128 GB RAM " + } + ] + } + }, + { + "name": "StandardE20dV4", + "kind": "field", + "accessibility": "public", + "signature": "public const static string StandardEDv4.StandardE20dV4", + "returnType": "string", + "isStatic": true, + "isConst": true, + "docs": { + "summary": [ + { + "kind": "text", + "text": " Standard_E20d_v4 — 20 vCPUs — 160 GB RAM " + } + ] + } + }, + { + "name": "StandardE2dV4", + "kind": "field", + "accessibility": "public", + "signature": "public const static string StandardEDv4.StandardE2dV4", + "returnType": "string", + "isStatic": true, + "isConst": true, + "docs": { + "summary": [ + { + "kind": "text", + "text": " Standard_E2d_v4 — 2 vCPUs — 16 GB RAM " + } + ] + } + }, + { + "name": "StandardE32dV4", + "kind": "field", + "accessibility": "public", + "signature": "public const static string StandardEDv4.StandardE32dV4", + "returnType": "string", + "isStatic": true, + "isConst": true, + "docs": { + "summary": [ + { + "kind": "text", + "text": " Standard_E32d_v4 — 32 vCPUs — 256 GB RAM " + } + ] + } + }, + { + "name": "StandardE48dV4", + "kind": "field", + "accessibility": "public", + "signature": "public const static string StandardEDv4.StandardE48dV4", + "returnType": "string", + "isStatic": true, + "isConst": true, + "docs": { + "summary": [ + { + "kind": "text", + "text": " Standard_E48d_v4 — 48 vCPUs — 384 GB RAM " + } + ] + } + }, + { + "name": "StandardE4dV4", + "kind": "field", + "accessibility": "public", + "signature": "public const static string StandardEDv4.StandardE4dV4", + "returnType": "string", + "isStatic": true, + "isConst": true, + "docs": { + "summary": [ + { + "kind": "text", + "text": " Standard_E4d_v4 — 4 vCPUs — 32 GB RAM " + } + ] + } + }, + { + "name": "StandardE64dV4", + "kind": "field", + "accessibility": "public", + "signature": "public const static string StandardEDv4.StandardE64dV4", + "returnType": "string", + "isStatic": true, + "isConst": true, + "docs": { + "summary": [ + { + "kind": "text", + "text": " Standard_E64d_v4 — 64 vCPUs — 504 GB RAM " + } + ] + } + }, + { + "name": "StandardE8dV4", + "kind": "field", + "accessibility": "public", + "signature": "public const static string StandardEDv4.StandardE8dV4", + "returnType": "string", + "isStatic": true, + "isConst": true, + "docs": { + "summary": [ + { + "kind": "text", + "text": " Standard_E8d_v4 — 8 vCPUs — 64 GB RAM " + } + ] + } + } + ] + }, + { + "name": "StandardEDv5", + "fullName": "Aspire.Hosting.Azure.Kubernetes.AksNodeVmSizes.StandardEDv5", + "namespace": "Aspire.Hosting.Azure.Kubernetes", + "kind": "class", + "accessibility": "public", + "isStatic": true, + "docs": { + "summary": [ + { + "kind": "text", + "text": " VM sizes in the standardEDv5Family. " + } + ] + }, + "sourceFile": "src/Aspire.Hosting.Azure.Kubernetes/AksNodeVmSizes.cs", + "members": [ + { + "name": "StandardE16dV5", + "kind": "field", + "accessibility": "public", + "signature": "public const static string StandardEDv5.StandardE16dV5", + "returnType": "string", + "isStatic": true, + "isConst": true, + "docs": { + "summary": [ + { + "kind": "text", + "text": " Standard_E16d_v5 — 16 vCPUs — 128 GB RAM " + } + ] + } + }, + { + "name": "StandardE20dV5", + "kind": "field", + "accessibility": "public", + "signature": "public const static string StandardEDv5.StandardE20dV5", + "returnType": "string", + "isStatic": true, + "isConst": true, + "docs": { + "summary": [ + { + "kind": "text", + "text": " Standard_E20d_v5 — 20 vCPUs — 160 GB RAM " + } + ] + } + }, + { + "name": "StandardE2dV5", + "kind": "field", + "accessibility": "public", + "signature": "public const static string StandardEDv5.StandardE2dV5", + "returnType": "string", + "isStatic": true, + "isConst": true, + "docs": { + "summary": [ + { + "kind": "text", + "text": " Standard_E2d_v5 — 2 vCPUs — 16 GB RAM " + } + ] + } + }, + { + "name": "StandardE32dV5", + "kind": "field", + "accessibility": "public", + "signature": "public const static string StandardEDv5.StandardE32dV5", + "returnType": "string", + "isStatic": true, + "isConst": true, + "docs": { + "summary": [ + { + "kind": "text", + "text": " Standard_E32d_v5 — 32 vCPUs — 256 GB RAM " + } + ] + } + }, + { + "name": "StandardE48dV5", + "kind": "field", + "accessibility": "public", + "signature": "public const static string StandardEDv5.StandardE48dV5", + "returnType": "string", + "isStatic": true, + "isConst": true, + "docs": { + "summary": [ + { + "kind": "text", + "text": " Standard_E48d_v5 — 48 vCPUs — 384 GB RAM " + } + ] + } + }, + { + "name": "StandardE4dV5", + "kind": "field", + "accessibility": "public", + "signature": "public const static string StandardEDv5.StandardE4dV5", + "returnType": "string", + "isStatic": true, + "isConst": true, + "docs": { + "summary": [ + { + "kind": "text", + "text": " Standard_E4d_v5 — 4 vCPUs — 32 GB RAM " } ] } @@ -18189,8 +20002,116 @@ ] }, { - "name": "StandardEIASv4", - "fullName": "Aspire.Hosting.Azure.Kubernetes.AksNodeVmSizes.StandardEIASv4", + "name": "StandardEIASv4", + "fullName": "Aspire.Hosting.Azure.Kubernetes.AksNodeVmSizes.StandardEIASv4", + "namespace": "Aspire.Hosting.Azure.Kubernetes", + "kind": "class", + "accessibility": "public", + "isStatic": true, + "docs": { + "summary": [ + { + "kind": "text", + "text": " VM sizes in the standardEIASv4Family. " + } + ] + }, + "sourceFile": "src/Aspire.Hosting.Azure.Kubernetes/AksNodeVmSizes.cs", + "members": [ + { + "name": "StandardE96iasV4", + "kind": "field", + "accessibility": "public", + "signature": "public const static string StandardEIASv4.StandardE96iasV4", + "returnType": "string", + "isStatic": true, + "isConst": true, + "docs": { + "summary": [ + { + "kind": "text", + "text": " Standard_E96ias_v4 — 96 vCPUs — 672 GB RAM — Premium SSD " + } + ] + } + } + ] + }, + { + "name": "StandardEIASv5", + "fullName": "Aspire.Hosting.Azure.Kubernetes.AksNodeVmSizes.StandardEIASv5", + "namespace": "Aspire.Hosting.Azure.Kubernetes", + "kind": "class", + "accessibility": "public", + "isStatic": true, + "docs": { + "summary": [ + { + "kind": "text", + "text": " VM sizes in the standardEIASv5Family. " + } + ] + }, + "sourceFile": "src/Aspire.Hosting.Azure.Kubernetes/AksNodeVmSizes.cs", + "members": [ + { + "name": "StandardE112iasV5", + "kind": "field", + "accessibility": "public", + "signature": "public const static string StandardEIASv5.StandardE112iasV5", + "returnType": "string", + "isStatic": true, + "isConst": true, + "docs": { + "summary": [ + { + "kind": "text", + "text": " Standard_E112ias_v5 — 112 vCPUs — 672 GB RAM — Premium SSD " + } + ] + } + } + ] + }, + { + "name": "StandardEIBDSv5", + "fullName": "Aspire.Hosting.Azure.Kubernetes.AksNodeVmSizes.StandardEIBDSv5", + "namespace": "Aspire.Hosting.Azure.Kubernetes", + "kind": "class", + "accessibility": "public", + "isStatic": true, + "docs": { + "summary": [ + { + "kind": "text", + "text": " VM sizes in the standardEIBDSv5Family. " + } + ] + }, + "sourceFile": "src/Aspire.Hosting.Azure.Kubernetes/AksNodeVmSizes.cs", + "members": [ + { + "name": "StandardE112ibdsV5", + "kind": "field", + "accessibility": "public", + "signature": "public const static string StandardEIBDSv5.StandardE112ibdsV5", + "returnType": "string", + "isStatic": true, + "isConst": true, + "docs": { + "summary": [ + { + "kind": "text", + "text": " Standard_E112ibds_v5 — 112 vCPUs — 672 GB RAM — Premium SSD " + } + ] + } + } + ] + }, + { + "name": "StandardEIBSv5", + "fullName": "Aspire.Hosting.Azure.Kubernetes.AksNodeVmSizes.StandardEIBSv5", "namespace": "Aspire.Hosting.Azure.Kubernetes", "kind": "class", "accessibility": "public", @@ -18199,17 +20120,17 @@ "summary": [ { "kind": "text", - "text": " VM sizes in the standardEIASv4Family. " + "text": " VM sizes in the standardEIBSv5Family. " } ] }, "sourceFile": "src/Aspire.Hosting.Azure.Kubernetes/AksNodeVmSizes.cs", "members": [ { - "name": "StandardE96iasV4", + "name": "StandardE112ibsV5", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardEIASv4.StandardE96iasV4", + "signature": "public const static string StandardEIBSv5.StandardE112ibsV5", "returnType": "string", "isStatic": true, "isConst": true, @@ -18217,7 +20138,7 @@ "summary": [ { "kind": "text", - "text": " Standard_E96ias_v4 — 96 vCPUs — 672 GB RAM — Premium SSD " + "text": " Standard_E112ibs_v5 — 112 vCPUs — 672 GB RAM — Premium SSD " } ] } @@ -18225,8 +20146,8 @@ ] }, { - "name": "StandardEIASv5", - "fullName": "Aspire.Hosting.Azure.Kubernetes.AksNodeVmSizes.StandardEIASv5", + "name": "StandardEIDSv5", + "fullName": "Aspire.Hosting.Azure.Kubernetes.AksNodeVmSizes.StandardEIDSv5", "namespace": "Aspire.Hosting.Azure.Kubernetes", "kind": "class", "accessibility": "public", @@ -18235,17 +20156,17 @@ "summary": [ { "kind": "text", - "text": " VM sizes in the standardEIASv5Family. " + "text": " VM sizes in the standardEIDSv5Family. " } ] }, "sourceFile": "src/Aspire.Hosting.Azure.Kubernetes/AksNodeVmSizes.cs", "members": [ { - "name": "StandardE112iasV5", + "name": "StandardE104idsV5", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardEIASv5.StandardE112iasV5", + "signature": "public const static string StandardEIDSv5.StandardE104idsV5", "returnType": "string", "isStatic": true, "isConst": true, @@ -18253,7 +20174,7 @@ "summary": [ { "kind": "text", - "text": " Standard_E112ias_v5 — 112 vCPUs — 672 GB RAM — Premium SSD " + "text": " Standard_E104ids_v5 — 104 vCPUs — 672 GB RAM — Premium SSD " } ] } @@ -18261,8 +20182,8 @@ ] }, { - "name": "StandardEIBDSv5", - "fullName": "Aspire.Hosting.Azure.Kubernetes.AksNodeVmSizes.StandardEIBDSv5", + "name": "StandardEIDv5", + "fullName": "Aspire.Hosting.Azure.Kubernetes.AksNodeVmSizes.StandardEIDv5", "namespace": "Aspire.Hosting.Azure.Kubernetes", "kind": "class", "accessibility": "public", @@ -18271,17 +20192,17 @@ "summary": [ { "kind": "text", - "text": " VM sizes in the standardEIBDSv5Family. " + "text": " VM sizes in the standardEIDv5Family. " } ] }, "sourceFile": "src/Aspire.Hosting.Azure.Kubernetes/AksNodeVmSizes.cs", "members": [ { - "name": "StandardE112ibdsV5", + "name": "StandardE104idV5", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardEIBDSv5.StandardE112ibdsV5", + "signature": "public const static string StandardEIDv5.StandardE104idV5", "returnType": "string", "isStatic": true, "isConst": true, @@ -18289,7 +20210,7 @@ "summary": [ { "kind": "text", - "text": " Standard_E112ibds_v5 — 112 vCPUs — 672 GB RAM — Premium SSD " + "text": " Standard_E104id_v5 — 104 vCPUs — 672 GB RAM " } ] } @@ -18297,8 +20218,8 @@ ] }, { - "name": "StandardEIBSv5", - "fullName": "Aspire.Hosting.Azure.Kubernetes.AksNodeVmSizes.StandardEIBSv5", + "name": "StandardEISv5", + "fullName": "Aspire.Hosting.Azure.Kubernetes.AksNodeVmSizes.StandardEISv5", "namespace": "Aspire.Hosting.Azure.Kubernetes", "kind": "class", "accessibility": "public", @@ -18307,17 +20228,17 @@ "summary": [ { "kind": "text", - "text": " VM sizes in the standardEIBSv5Family. " + "text": " VM sizes in the standardEISv5Family. " } ] }, "sourceFile": "src/Aspire.Hosting.Azure.Kubernetes/AksNodeVmSizes.cs", "members": [ { - "name": "StandardE112ibsV5", + "name": "StandardE104isV5", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardEIBSv5.StandardE112ibsV5", + "signature": "public const static string StandardEISv5.StandardE104isV5", "returnType": "string", "isStatic": true, "isConst": true, @@ -18325,7 +20246,7 @@ "summary": [ { "kind": "text", - "text": " Standard_E112ibs_v5 — 112 vCPUs — 672 GB RAM — Premium SSD " + "text": " Standard_E104is_v5 — 104 vCPUs — 672 GB RAM — Premium SSD " } ] } @@ -18333,8 +20254,8 @@ ] }, { - "name": "StandardEIDSv5", - "fullName": "Aspire.Hosting.Azure.Kubernetes.AksNodeVmSizes.StandardEIDSv5", + "name": "StandardEIv5", + "fullName": "Aspire.Hosting.Azure.Kubernetes.AksNodeVmSizes.StandardEIv5", "namespace": "Aspire.Hosting.Azure.Kubernetes", "kind": "class", "accessibility": "public", @@ -18343,17 +20264,17 @@ "summary": [ { "kind": "text", - "text": " VM sizes in the standardEIDSv5Family. " + "text": " VM sizes in the standardEIv5Family. " } ] }, "sourceFile": "src/Aspire.Hosting.Azure.Kubernetes/AksNodeVmSizes.cs", "members": [ { - "name": "StandardE104idsV5", + "name": "StandardE104iV5", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardEIDSv5.StandardE104idsV5", + "signature": "public const static string StandardEIv5.StandardE104iV5", "returnType": "string", "isStatic": true, "isConst": true, @@ -18361,7 +20282,7 @@ "summary": [ { "kind": "text", - "text": " Standard_E104ids_v5 — 104 vCPUs — 672 GB RAM — Premium SSD " + "text": " Standard_E104i_v5 — 104 vCPUs — 672 GB RAM " } ] } @@ -18369,8 +20290,8 @@ ] }, { - "name": "StandardEIDv5", - "fullName": "Aspire.Hosting.Azure.Kubernetes.AksNodeVmSizes.StandardEIDv5", + "name": "StandardEndv6", + "fullName": "Aspire.Hosting.Azure.Kubernetes.AksNodeVmSizes.StandardEndv6", "namespace": "Aspire.Hosting.Azure.Kubernetes", "kind": "class", "accessibility": "public", @@ -18379,17 +20300,17 @@ "summary": [ { "kind": "text", - "text": " VM sizes in the standardEIDv5Family. " + "text": " VM sizes in the StandardEndv6Family. " } ] }, "sourceFile": "src/Aspire.Hosting.Azure.Kubernetes/AksNodeVmSizes.cs", "members": [ { - "name": "StandardE104idV5", + "name": "StandardE128ndsV6", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardEIDv5.StandardE104idV5", + "signature": "public const static string StandardEndv6.StandardE128ndsV6", "returnType": "string", "isStatic": true, "isConst": true, @@ -18397,7 +20318,143 @@ "summary": [ { "kind": "text", - "text": " Standard_E104id_v5 — 104 vCPUs — 672 GB RAM " + "text": " Standard_E128nds_v6 — 128 vCPUs — 1024 GB RAM — Premium SSD " + } + ] + } + }, + { + "name": "StandardE16ndsV6", + "kind": "field", + "accessibility": "public", + "signature": "public const static string StandardEndv6.StandardE16ndsV6", + "returnType": "string", + "isStatic": true, + "isConst": true, + "docs": { + "summary": [ + { + "kind": "text", + "text": " Standard_E16nds_v6 — 16 vCPUs — 128 GB RAM — Premium SSD " + } + ] + } + }, + { + "name": "StandardE2ndsV6", + "kind": "field", + "accessibility": "public", + "signature": "public const static string StandardEndv6.StandardE2ndsV6", + "returnType": "string", + "isStatic": true, + "isConst": true, + "docs": { + "summary": [ + { + "kind": "text", + "text": " Standard_E2nds_v6 — 2 vCPUs — 16 GB RAM — Premium SSD " + } + ] + } + }, + { + "name": "StandardE32ndsV6", + "kind": "field", + "accessibility": "public", + "signature": "public const static string StandardEndv6.StandardE32ndsV6", + "returnType": "string", + "isStatic": true, + "isConst": true, + "docs": { + "summary": [ + { + "kind": "text", + "text": " Standard_E32nds_v6 — 32 vCPUs — 256 GB RAM — Premium SSD " + } + ] + } + }, + { + "name": "StandardE48ndsV6", + "kind": "field", + "accessibility": "public", + "signature": "public const static string StandardEndv6.StandardE48ndsV6", + "returnType": "string", + "isStatic": true, + "isConst": true, + "docs": { + "summary": [ + { + "kind": "text", + "text": " Standard_E48nds_v6 — 48 vCPUs — 384 GB RAM — Premium SSD " + } + ] + } + }, + { + "name": "StandardE4ndsV6", + "kind": "field", + "accessibility": "public", + "signature": "public const static string StandardEndv6.StandardE4ndsV6", + "returnType": "string", + "isStatic": true, + "isConst": true, + "docs": { + "summary": [ + { + "kind": "text", + "text": " Standard_E4nds_v6 — 4 vCPUs — 32 GB RAM — Premium SSD " + } + ] + } + }, + { + "name": "StandardE64ndsV6", + "kind": "field", + "accessibility": "public", + "signature": "public const static string StandardEndv6.StandardE64ndsV6", + "returnType": "string", + "isStatic": true, + "isConst": true, + "docs": { + "summary": [ + { + "kind": "text", + "text": " Standard_E64nds_v6 — 64 vCPUs — 512 GB RAM — Premium SSD " + } + ] + } + }, + { + "name": "StandardE8ndsV6", + "kind": "field", + "accessibility": "public", + "signature": "public const static string StandardEndv6.StandardE8ndsV6", + "returnType": "string", + "isStatic": true, + "isConst": true, + "docs": { + "summary": [ + { + "kind": "text", + "text": " Standard_E8nds_v6 — 8 vCPUs — 64 GB RAM — Premium SSD " + } + ] + } + }, + { + "name": "StandardE96ndsV6", + "kind": "field", + "accessibility": "public", + "signature": "public const static string StandardEndv6.StandardE96ndsV6", + "returnType": "string", + "isStatic": true, + "isConst": true, + "docs": { + "summary": [ + { + "kind": "text", + "text": " Standard_E96nds_v6 — 96 vCPUs — 768 GB RAM — Premium SSD " } ] } @@ -18405,8 +20462,8 @@ ] }, { - "name": "StandardEISv3", - "fullName": "Aspire.Hosting.Azure.Kubernetes.AksNodeVmSizes.StandardEISv3", + "name": "StandardEnv6", + "fullName": "Aspire.Hosting.Azure.Kubernetes.AksNodeVmSizes.StandardEnv6", "namespace": "Aspire.Hosting.Azure.Kubernetes", "kind": "class", "accessibility": "public", @@ -18415,17 +20472,17 @@ "summary": [ { "kind": "text", - "text": " VM sizes in the standardEISv3Family. " + "text": " VM sizes in the StandardEnv6Family. " } ] }, "sourceFile": "src/Aspire.Hosting.Azure.Kubernetes/AksNodeVmSizes.cs", "members": [ { - "name": "StandardE64isV3", + "name": "StandardE128nsV6", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardEISv3.StandardE64isV3", + "signature": "public const static string StandardEnv6.StandardE128nsV6", "returnType": "string", "isStatic": true, "isConst": true, @@ -18433,35 +20490,101 @@ "summary": [ { "kind": "text", - "text": " Standard_E64is_v3 — 64 vCPUs — 432 GB RAM — Premium SSD " + "text": " Standard_E128ns_v6 — 128 vCPUs — 1024 GB RAM — Premium SSD " } ] } - } - ] - }, - { - "name": "StandardEISv5", - "fullName": "Aspire.Hosting.Azure.Kubernetes.AksNodeVmSizes.StandardEISv5", - "namespace": "Aspire.Hosting.Azure.Kubernetes", - "kind": "class", - "accessibility": "public", - "isStatic": true, - "docs": { - "summary": [ - { - "kind": "text", - "text": " VM sizes in the standardEISv5Family. " + }, + { + "name": "StandardE16nsV6", + "kind": "field", + "accessibility": "public", + "signature": "public const static string StandardEnv6.StandardE16nsV6", + "returnType": "string", + "isStatic": true, + "isConst": true, + "docs": { + "summary": [ + { + "kind": "text", + "text": " Standard_E16ns_v6 — 16 vCPUs — 128 GB RAM — Premium SSD " + } + ] + } + }, + { + "name": "StandardE2nsV6", + "kind": "field", + "accessibility": "public", + "signature": "public const static string StandardEnv6.StandardE2nsV6", + "returnType": "string", + "isStatic": true, + "isConst": true, + "docs": { + "summary": [ + { + "kind": "text", + "text": " Standard_E2ns_v6 — 2 vCPUs — 16 GB RAM — Premium SSD " + } + ] + } + }, + { + "name": "StandardE32nsV6", + "kind": "field", + "accessibility": "public", + "signature": "public const static string StandardEnv6.StandardE32nsV6", + "returnType": "string", + "isStatic": true, + "isConst": true, + "docs": { + "summary": [ + { + "kind": "text", + "text": " Standard_E32ns_v6 — 32 vCPUs — 256 GB RAM — Premium SSD " + } + ] + } + }, + { + "name": "StandardE48nsV6", + "kind": "field", + "accessibility": "public", + "signature": "public const static string StandardEnv6.StandardE48nsV6", + "returnType": "string", + "isStatic": true, + "isConst": true, + "docs": { + "summary": [ + { + "kind": "text", + "text": " Standard_E48ns_v6 — 48 vCPUs — 384 GB RAM — Premium SSD " + } + ] + } + }, + { + "name": "StandardE4nsV6", + "kind": "field", + "accessibility": "public", + "signature": "public const static string StandardEnv6.StandardE4nsV6", + "returnType": "string", + "isStatic": true, + "isConst": true, + "docs": { + "summary": [ + { + "kind": "text", + "text": " Standard_E4ns_v6 — 4 vCPUs — 32 GB RAM — Premium SSD " + } + ] } - ] - }, - "sourceFile": "src/Aspire.Hosting.Azure.Kubernetes/AksNodeVmSizes.cs", - "members": [ + }, { - "name": "StandardE104isV5", + "name": "StandardE64nsV6", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardEISv5.StandardE104isV5", + "signature": "public const static string StandardEnv6.StandardE64nsV6", "returnType": "string", "isStatic": true, "isConst": true, @@ -18469,35 +20592,16 @@ "summary": [ { "kind": "text", - "text": " Standard_E104is_v5 — 104 vCPUs — 672 GB RAM — Premium SSD " + "text": " Standard_E64ns_v6 — 64 vCPUs — 512 GB RAM — Premium SSD " } ] } - } - ] - }, - { - "name": "StandardEIv3", - "fullName": "Aspire.Hosting.Azure.Kubernetes.AksNodeVmSizes.StandardEIv3", - "namespace": "Aspire.Hosting.Azure.Kubernetes", - "kind": "class", - "accessibility": "public", - "isStatic": true, - "docs": { - "summary": [ - { - "kind": "text", - "text": " VM sizes in the standardEIv3Family. " - } - ] - }, - "sourceFile": "src/Aspire.Hosting.Azure.Kubernetes/AksNodeVmSizes.cs", - "members": [ + }, { - "name": "StandardE64iV3", + "name": "StandardE8nsV6", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardEIv3.StandardE64iV3", + "signature": "public const static string StandardEnv6.StandardE8nsV6", "returnType": "string", "isStatic": true, "isConst": true, @@ -18505,35 +20609,16 @@ "summary": [ { "kind": "text", - "text": " Standard_E64i_v3 — 64 vCPUs — 432 GB RAM " + "text": " Standard_E8ns_v6 — 8 vCPUs — 64 GB RAM — Premium SSD " } ] } - } - ] - }, - { - "name": "StandardEIv5", - "fullName": "Aspire.Hosting.Azure.Kubernetes.AksNodeVmSizes.StandardEIv5", - "namespace": "Aspire.Hosting.Azure.Kubernetes", - "kind": "class", - "accessibility": "public", - "isStatic": true, - "docs": { - "summary": [ - { - "kind": "text", - "text": " VM sizes in the standardEIv5Family. " - } - ] - }, - "sourceFile": "src/Aspire.Hosting.Azure.Kubernetes/AksNodeVmSizes.cs", - "members": [ + }, { - "name": "StandardE104iV5", + "name": "StandardE96nsV6", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardEIv5.StandardE104iV5", + "signature": "public const static string StandardEnv6.StandardE96nsV6", "returnType": "string", "isStatic": true, "isConst": true, @@ -18541,7 +20626,7 @@ "summary": [ { "kind": "text", - "text": " Standard_E104i_v5 — 104 vCPUs — 672 GB RAM " + "text": " Standard_E96ns_v6 — 96 vCPUs — 768 GB RAM — Premium SSD " } ] } @@ -20331,10 +22416,216 @@ } }, { - "name": "StandardE4sV6", + "name": "StandardE4sV6", + "kind": "field", + "accessibility": "public", + "signature": "public const static string StandardEsv6.StandardE4sV6", + "returnType": "string", + "isStatic": true, + "isConst": true, + "docs": { + "summary": [ + { + "kind": "text", + "text": " Standard_E4s_v6 — 4 vCPUs — 32 GB RAM — Premium SSD " + } + ] + } + }, + { + "name": "StandardE6416sV6", + "kind": "field", + "accessibility": "public", + "signature": "public const static string StandardEsv6.StandardE6416sV6", + "returnType": "string", + "isStatic": true, + "isConst": true, + "docs": { + "summary": [ + { + "kind": "text", + "text": " Standard_E64-16s_v6 — 64 vCPUs — 512 GB RAM — Premium SSD " + } + ] + } + }, + { + "name": "StandardE6432sV6", + "kind": "field", + "accessibility": "public", + "signature": "public const static string StandardEsv6.StandardE6432sV6", + "returnType": "string", + "isStatic": true, + "isConst": true, + "docs": { + "summary": [ + { + "kind": "text", + "text": " Standard_E64-32s_v6 — 64 vCPUs — 512 GB RAM — Premium SSD " + } + ] + } + }, + { + "name": "StandardE64sV6", + "kind": "field", + "accessibility": "public", + "signature": "public const static string StandardEsv6.StandardE64sV6", + "returnType": "string", + "isStatic": true, + "isConst": true, + "docs": { + "summary": [ + { + "kind": "text", + "text": " Standard_E64s_v6 — 64 vCPUs — 512 GB RAM — Premium SSD " + } + ] + } + }, + { + "name": "StandardE82sV6", + "kind": "field", + "accessibility": "public", + "signature": "public const static string StandardEsv6.StandardE82sV6", + "returnType": "string", + "isStatic": true, + "isConst": true, + "docs": { + "summary": [ + { + "kind": "text", + "text": " Standard_E8-2s_v6 — 8 vCPUs — 64 GB RAM — Premium SSD " + } + ] + } + }, + { + "name": "StandardE84sV6", + "kind": "field", + "accessibility": "public", + "signature": "public const static string StandardEsv6.StandardE84sV6", + "returnType": "string", + "isStatic": true, + "isConst": true, + "docs": { + "summary": [ + { + "kind": "text", + "text": " Standard_E8-4s_v6 — 8 vCPUs — 64 GB RAM — Premium SSD " + } + ] + } + }, + { + "name": "StandardE8sV6", + "kind": "field", + "accessibility": "public", + "signature": "public const static string StandardEsv6.StandardE8sV6", + "returnType": "string", + "isStatic": true, + "isConst": true, + "docs": { + "summary": [ + { + "kind": "text", + "text": " Standard_E8s_v6 — 8 vCPUs — 64 GB RAM — Premium SSD " + } + ] + } + }, + { + "name": "StandardE9624sV6", + "kind": "field", + "accessibility": "public", + "signature": "public const static string StandardEsv6.StandardE9624sV6", + "returnType": "string", + "isStatic": true, + "isConst": true, + "docs": { + "summary": [ + { + "kind": "text", + "text": " Standard_E96-24s_v6 — 96 vCPUs — 768 GB RAM — Premium SSD " + } + ] + } + }, + { + "name": "StandardE9648sV6", + "kind": "field", + "accessibility": "public", + "signature": "public const static string StandardEsv6.StandardE9648sV6", + "returnType": "string", + "isStatic": true, + "isConst": true, + "docs": { + "summary": [ + { + "kind": "text", + "text": " Standard_E96-48s_v6 — 96 vCPUs — 768 GB RAM — Premium SSD " + } + ] + } + }, + { + "name": "StandardE96sV6", + "kind": "field", + "accessibility": "public", + "signature": "public const static string StandardEsv6.StandardE96sV6", + "returnType": "string", + "isStatic": true, + "isConst": true, + "docs": { + "summary": [ + { + "kind": "text", + "text": " Standard_E96s_v6 — 96 vCPUs — 768 GB RAM — Premium SSD " + } + ] + } + } + ] + }, + { + "name": "StandardEsv7", + "fullName": "Aspire.Hosting.Azure.Kubernetes.AksNodeVmSizes.StandardEsv7", + "namespace": "Aspire.Hosting.Azure.Kubernetes", + "kind": "class", + "accessibility": "public", + "isStatic": true, + "docs": { + "summary": [ + { + "kind": "text", + "text": " VM sizes in the StandardEsv7Family. " + } + ] + }, + "sourceFile": "src/Aspire.Hosting.Azure.Kubernetes/AksNodeVmSizes.cs", + "members": [ + { + "name": "StandardE128sV7", + "kind": "field", + "accessibility": "public", + "signature": "public const static string StandardEsv7.StandardE128sV7", + "returnType": "string", + "isStatic": true, + "isConst": true, + "docs": { + "summary": [ + { + "kind": "text", + "text": " Standard_E128s_v7 — 128 vCPUs — 1024 GB RAM — Premium SSD " + } + ] + } + }, + { + "name": "StandardE16sV7", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardEsv6.StandardE4sV6", + "signature": "public const static string StandardEsv7.StandardE16sV7", "returnType": "string", "isStatic": true, "isConst": true, @@ -20342,16 +22633,16 @@ "summary": [ { "kind": "text", - "text": " Standard_E4s_v6 — 4 vCPUs — 32 GB RAM — Premium SSD " + "text": " Standard_E16s_v7 — 16 vCPUs — 128 GB RAM — Premium SSD " } ] } }, { - "name": "StandardE6416sV6", + "name": "StandardE192sV7", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardEsv6.StandardE6416sV6", + "signature": "public const static string StandardEsv7.StandardE192sV7", "returnType": "string", "isStatic": true, "isConst": true, @@ -20359,16 +22650,16 @@ "summary": [ { "kind": "text", - "text": " Standard_E64-16s_v6 — 64 vCPUs — 512 GB RAM — Premium SSD " + "text": " Standard_E192s_v7 — 192 vCPUs — 1536 GB RAM — Premium SSD " } ] } }, { - "name": "StandardE6432sV6", + "name": "StandardE20sV7", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardEsv6.StandardE6432sV6", + "signature": "public const static string StandardEsv7.StandardE20sV7", "returnType": "string", "isStatic": true, "isConst": true, @@ -20376,16 +22667,16 @@ "summary": [ { "kind": "text", - "text": " Standard_E64-32s_v6 — 64 vCPUs — 512 GB RAM — Premium SSD " + "text": " Standard_E20s_v7 — 20 vCPUs — 160 GB RAM — Premium SSD " } ] } }, { - "name": "StandardE64sV6", + "name": "StandardE2sV7", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardEsv6.StandardE64sV6", + "signature": "public const static string StandardEsv7.StandardE2sV7", "returnType": "string", "isStatic": true, "isConst": true, @@ -20393,16 +22684,16 @@ "summary": [ { "kind": "text", - "text": " Standard_E64s_v6 — 64 vCPUs — 512 GB RAM — Premium SSD " + "text": " Standard_E2s_v7 — 2 vCPUs — 16 GB RAM — Premium SSD " } ] } }, { - "name": "StandardE82sV6", + "name": "StandardE32sV7", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardEsv6.StandardE82sV6", + "signature": "public const static string StandardEsv7.StandardE32sV7", "returnType": "string", "isStatic": true, "isConst": true, @@ -20410,16 +22701,16 @@ "summary": [ { "kind": "text", - "text": " Standard_E8-2s_v6 — 8 vCPUs — 64 GB RAM — Premium SSD " + "text": " Standard_E32s_v7 — 32 vCPUs — 256 GB RAM — Premium SSD " } ] } }, { - "name": "StandardE84sV6", + "name": "StandardE48sV7", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardEsv6.StandardE84sV6", + "signature": "public const static string StandardEsv7.StandardE48sV7", "returnType": "string", "isStatic": true, "isConst": true, @@ -20427,16 +22718,16 @@ "summary": [ { "kind": "text", - "text": " Standard_E8-4s_v6 — 8 vCPUs — 64 GB RAM — Premium SSD " + "text": " Standard_E48s_v7 — 48 vCPUs — 384 GB RAM — Premium SSD " } ] } }, { - "name": "StandardE8sV6", + "name": "StandardE4sV7", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardEsv6.StandardE8sV6", + "signature": "public const static string StandardEsv7.StandardE4sV7", "returnType": "string", "isStatic": true, "isConst": true, @@ -20444,16 +22735,16 @@ "summary": [ { "kind": "text", - "text": " Standard_E8s_v6 — 8 vCPUs — 64 GB RAM — Premium SSD " + "text": " Standard_E4s_v7 — 4 vCPUs — 32 GB RAM — Premium SSD " } ] } }, { - "name": "StandardE9624sV6", + "name": "StandardE64sV7", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardEsv6.StandardE9624sV6", + "signature": "public const static string StandardEsv7.StandardE64sV7", "returnType": "string", "isStatic": true, "isConst": true, @@ -20461,16 +22752,16 @@ "summary": [ { "kind": "text", - "text": " Standard_E96-24s_v6 — 96 vCPUs — 768 GB RAM — Premium SSD " + "text": " Standard_E64s_v7 — 64 vCPUs — 512 GB RAM — Premium SSD " } ] } }, { - "name": "StandardE9648sV6", + "name": "StandardE8sV7", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardEsv6.StandardE9648sV6", + "signature": "public const static string StandardEsv7.StandardE8sV7", "returnType": "string", "isStatic": true, "isConst": true, @@ -20478,16 +22769,16 @@ "summary": [ { "kind": "text", - "text": " Standard_E96-48s_v6 — 96 vCPUs — 768 GB RAM — Premium SSD " + "text": " Standard_E8s_v7 — 8 vCPUs — 64 GB RAM — Premium SSD " } ] } }, { - "name": "StandardE96sV6", + "name": "StandardE96sV7", "kind": "field", "accessibility": "public", - "signature": "public const static string StandardEsv6.StandardE96sV6", + "signature": "public const static string StandardEsv7.StandardE96sV7", "returnType": "string", "isStatic": true, "isConst": true, @@ -20495,7 +22786,7 @@ "summary": [ { "kind": "text", - "text": " Standard_E96s_v6 — 96 vCPUs — 768 GB RAM — Premium SSD " + "text": " Standard_E96s_v7 — 96 vCPUs — 768 GB RAM — Premium SSD " } ] } @@ -26420,6 +28711,40 @@ }, "sourceFile": "src/Aspire.Hosting.Azure.Kubernetes/AksNodeVmSizes.cs", "members": [ + { + "name": "StandardM416ds10V3", + "kind": "field", + "accessibility": "public", + "signature": "public const static string StandardMDSHighMemoryv3.StandardM416ds10V3", + "returnType": "string", + "isStatic": true, + "isConst": true, + "docs": { + "summary": [ + { + "kind": "text", + "text": " Standard_M416ds_10_v3 — 416 vCPUs — 9496 GB RAM — Premium SSD " + } + ] + } + }, + { + "name": "StandardM416ds12V3", + "kind": "field", + "accessibility": "public", + "signature": "public const static string StandardMDSHighMemoryv3.StandardM416ds12V3", + "returnType": "string", + "isStatic": true, + "isConst": true, + "docs": { + "summary": [ + { + "kind": "text", + "text": " Standard_M416ds_12_v3 — 416 vCPUs — 11400 GB RAM — Premium SSD " + } + ] + } + }, { "name": "StandardM416ds6V3", "kind": "field", @@ -26454,6 +28779,23 @@ ] } }, + { + "name": "StandardM416ds9V3", + "kind": "field", + "accessibility": "public", + "signature": "public const static string StandardMDSHighMemoryv3.StandardM416ds9V3", + "returnType": "string", + "isStatic": true, + "isConst": true, + "docs": { + "summary": [ + { + "kind": "text", + "text": " Standard_M416ds_9_v3 — 416 vCPUs — 8568 GB RAM — Premium SSD " + } + ] + } + }, { "name": "StandardM624ds12V3", "kind": "field", @@ -27354,6 +29696,40 @@ }, "sourceFile": "src/Aspire.Hosting.Azure.Kubernetes/AksNodeVmSizes.cs", "members": [ + { + "name": "StandardM416s10V3", + "kind": "field", + "accessibility": "public", + "signature": "public const static string StandardMSHighMemoryv3.StandardM416s10V3", + "returnType": "string", + "isStatic": true, + "isConst": true, + "docs": { + "summary": [ + { + "kind": "text", + "text": " Standard_M416s_10_v3 — 416 vCPUs — 9496 GB RAM — Premium SSD " + } + ] + } + }, + { + "name": "StandardM416s12V3", + "kind": "field", + "accessibility": "public", + "signature": "public const static string StandardMSHighMemoryv3.StandardM416s12V3", + "returnType": "string", + "isStatic": true, + "isConst": true, + "docs": { + "summary": [ + { + "kind": "text", + "text": " Standard_M416s_12_v3 — 416 vCPUs — 11400 GB RAM — Premium SSD " + } + ] + } + }, { "name": "StandardM416s6V3", "kind": "field", @@ -27388,6 +29764,23 @@ ] } }, + { + "name": "StandardM416s9V3", + "kind": "field", + "accessibility": "public", + "signature": "public const static string StandardMSHighMemoryv3.StandardM416s9V3", + "returnType": "string", + "isStatic": true, + "isConst": true, + "docs": { + "summary": [ + { + "kind": "text", + "text": " Standard_M416s_9_v3 — 416 vCPUs — 8568 GB RAM — Premium SSD " + } + ] + } + }, { "name": "StandardM624s12V3", "kind": "field", @@ -28154,6 +30547,178 @@ } ] }, + { + "name": "StandardNCdsRTXPRO6000BSEv6XL", + "fullName": "Aspire.Hosting.Azure.Kubernetes.AksNodeVmSizes.StandardNCdsRTXPRO6000BSEv6XL", + "namespace": "Aspire.Hosting.Azure.Kubernetes", + "kind": "class", + "accessibility": "public", + "isStatic": true, + "docs": { + "summary": [ + { + "kind": "text", + "text": " VM sizes in the StandardNCdsRTXPRO6000BSEv6XLFamily. " + } + ] + }, + "sourceFile": "src/Aspire.Hosting.Azure.Kubernetes/AksNodeVmSizes.cs", + "members": [ + { + "name": "StandardNC144dsXlRTXPRO6000BSEV6", + "kind": "field", + "accessibility": "public", + "signature": "public const static string StandardNCdsRTXPRO6000BSEv6XL.StandardNC144dsXlRTXPRO6000BSEV6", + "returnType": "string", + "isStatic": true, + "isConst": true, + "docs": { + "summary": [ + { + "kind": "text", + "text": " Standard_NC144ds_xl_RTXPRO6000BSE_v6 — 144 vCPUs — 516 GB RAM — 1 GPU(s) — Premium SSD " + } + ] + } + }, + { + "name": "StandardNC144ldsXlRTXPRO6000BSEV6", + "kind": "field", + "accessibility": "public", + "signature": "public const static string StandardNCdsRTXPRO6000BSEv6XL.StandardNC144ldsXlRTXPRO6000BSEV6", + "returnType": "string", + "isStatic": true, + "isConst": true, + "docs": { + "summary": [ + { + "kind": "text", + "text": " Standard_NC144lds_xl_RTXPRO6000BSE_v6 — 144 vCPUs — 264 GB RAM — 1 GPU(s) — Premium SSD " + } + ] + } + }, + { + "name": "StandardNC24ldsXlRTXPRO6000BSEV6", + "kind": "field", + "accessibility": "public", + "signature": "public const static string StandardNCdsRTXPRO6000BSEv6XL.StandardNC24ldsXlRTXPRO6000BSEV6", + "returnType": "string", + "isStatic": true, + "isConst": true, + "docs": { + "summary": [ + { + "kind": "text", + "text": " Standard_NC24lds_xl_RTXPRO6000BSE_v6 — 24 vCPUs — 72 GB RAM — 1 GPU(s) — Premium SSD " + } + ] + } + }, + { + "name": "StandardNC288dsXlRTXPRO6000BSEV6", + "kind": "field", + "accessibility": "public", + "signature": "public const static string StandardNCdsRTXPRO6000BSEv6XL.StandardNC288dsXlRTXPRO6000BSEV6", + "returnType": "string", + "isStatic": true, + "isConst": true, + "docs": { + "summary": [ + { + "kind": "text", + "text": " Standard_NC288ds_xl_RTXPRO6000BSE_v6 — 288 vCPUs — 1032 GB RAM — 2 GPU(s) — Premium SSD " + } + ] + } + }, + { + "name": "StandardNC288ldsXlRTXPRO6000BSEV6", + "kind": "field", + "accessibility": "public", + "signature": "public const static string StandardNCdsRTXPRO6000BSEv6XL.StandardNC288ldsXlRTXPRO6000BSEV6", + "returnType": "string", + "isStatic": true, + "isConst": true, + "docs": { + "summary": [ + { + "kind": "text", + "text": " Standard_NC288lds_xl_RTXPRO6000BSE_v6 — 288 vCPUs — 516 GB RAM — 2 GPU(s) — Premium SSD " + } + ] + } + }, + { + "name": "StandardNC36dsXlRTXPRO6000BSEV6", + "kind": "field", + "accessibility": "public", + "signature": "public const static string StandardNCdsRTXPRO6000BSEv6XL.StandardNC36dsXlRTXPRO6000BSEV6", + "returnType": "string", + "isStatic": true, + "isConst": true, + "docs": { + "summary": [ + { + "kind": "text", + "text": " Standard_NC36ds_xl_RTXPRO6000BSE_v6 — 36 vCPUs — 132 GB RAM — 1 GPU(s) — Premium SSD " + } + ] + } + }, + { + "name": "StandardNC36ldsXlRTXPRO6000BSEV6", + "kind": "field", + "accessibility": "public", + "signature": "public const static string StandardNCdsRTXPRO6000BSEv6XL.StandardNC36ldsXlRTXPRO6000BSEV6", + "returnType": "string", + "isStatic": true, + "isConst": true, + "docs": { + "summary": [ + { + "kind": "text", + "text": " Standard_NC36lds_xl_RTXPRO6000BSE_v6 — 36 vCPUs — 72 GB RAM — 1 GPU(s) — Premium SSD " + } + ] + } + }, + { + "name": "StandardNC72dsXlRTXPRO6000BSEV6", + "kind": "field", + "accessibility": "public", + "signature": "public const static string StandardNCdsRTXPRO6000BSEv6XL.StandardNC72dsXlRTXPRO6000BSEV6", + "returnType": "string", + "isStatic": true, + "isConst": true, + "docs": { + "summary": [ + { + "kind": "text", + "text": " Standard_NC72ds_xl_RTXPRO6000BSE_v6 — 72 vCPUs — 264 GB RAM — 1 GPU(s) — Premium SSD " + } + ] + } + }, + { + "name": "StandardNC72ldsXlRTXPRO6000BSEV6", + "kind": "field", + "accessibility": "public", + "signature": "public const static string StandardNCdsRTXPRO6000BSEv6XL.StandardNC72ldsXlRTXPRO6000BSEV6", + "returnType": "string", + "isStatic": true, + "isConst": true, + "docs": { + "summary": [ + { + "kind": "text", + "text": " Standard_NC72lds_xl_RTXPRO6000BSE_v6 — 72 vCPUs — 132 GB RAM — 1 GPU(s) — Premium SSD " + } + ] + } + } + ] + }, { "name": "StandardNCSv3", "fullName": "Aspire.Hosting.Azure.Kubernetes.AksNodeVmSizes.StandardNCSv3", diff --git a/src/frontend/src/data/pkgs/Aspire.Hosting.Azure.Kusto.13.4.6-preview.1.26319.6.json b/src/frontend/src/data/pkgs/Aspire.Hosting.Azure.Kusto.13.5.0-preview.1.26417.7.json similarity index 99% rename from src/frontend/src/data/pkgs/Aspire.Hosting.Azure.Kusto.13.4.6-preview.1.26319.6.json rename to src/frontend/src/data/pkgs/Aspire.Hosting.Azure.Kusto.13.5.0-preview.1.26417.7.json index 898b1acd5..8bc9e899b 100644 --- a/src/frontend/src/data/pkgs/Aspire.Hosting.Azure.Kusto.13.4.6-preview.1.26319.6.json +++ b/src/frontend/src/data/pkgs/Aspire.Hosting.Azure.Kusto.13.5.0-preview.1.26417.7.json @@ -1,10 +1,10 @@ { "package": { "name": "Aspire.Hosting.Azure.Kusto", - "version": "13.4.6-preview.1.26319.6", + "version": "13.5.0-preview.1.26417.7", "targetFramework": "net10.0", "sourceRepository": "https://github.com/microsoft/aspire", - "sourceCommit": "87fe259e4fc244c599019a7b1304c85a1488f248" + "sourceCommit": "e076d8e427cb3afb528dbd605acd74c3aea69f94" }, "types": [ { @@ -23,7 +23,7 @@ ] }, "sourceFile": "src/Aspire.Hosting.Azure.Kusto/AzureKustoBuilderExtensions.cs", - "sourceLines": "23-23", + "sourceLines": "22-22", "members": [ { "name": "AddAzureKustoCluster", @@ -134,7 +134,7 @@ } }, "sourceFile": "src/Aspire.Hosting.Azure.Kusto/AzureKustoBuilderExtensions.cs", - "sourceLines": "49-98" + "sourceLines": "48-98" }, { "name": "AddReadWriteDatabase", @@ -217,7 +217,7 @@ } }, "sourceFile": "src/Aspire.Hosting.Azure.Kusto/AzureKustoBuilderExtensions.cs", - "sourceLines": "112-141" + "sourceLines": "112-142" }, { "name": "RunAsEmulator", @@ -295,7 +295,7 @@ } }, "sourceFile": "src/Aspire.Hosting.Azure.Kusto/AzureKustoBuilderExtensions.cs", - "sourceLines": "160-187" + "sourceLines": "161-188" }, { "name": "WithCreationScript", @@ -356,7 +356,7 @@ } }, "sourceFile": "src/Aspire.Hosting.Azure.Kusto/AzureKustoBuilderExtensions.cs", - "sourceLines": "203-209" + "sourceLines": "204-210" }, { "name": "WithHostPort", @@ -427,7 +427,7 @@ } }, "sourceFile": "src/Aspire.Hosting.Azure.Kusto/AzureKustoBuilderExtensions.cs", - "sourceLines": "222-227" + "sourceLines": "223-228" } ] }, diff --git a/src/frontend/src/data/pkgs/Aspire.Hosting.Azure.Network.13.4.6.json b/src/frontend/src/data/pkgs/Aspire.Hosting.Azure.Network.13.5.0.json similarity index 96% rename from src/frontend/src/data/pkgs/Aspire.Hosting.Azure.Network.13.4.6.json rename to src/frontend/src/data/pkgs/Aspire.Hosting.Azure.Network.13.5.0.json index 342333317..aea766025 100644 --- a/src/frontend/src/data/pkgs/Aspire.Hosting.Azure.Network.13.4.6.json +++ b/src/frontend/src/data/pkgs/Aspire.Hosting.Azure.Network.13.5.0.json @@ -1,10 +1,10 @@ { "package": { "name": "Aspire.Hosting.Azure.Network", - "version": "13.4.6", + "version": "13.5.0", "targetFramework": "net10.0", "sourceRepository": "https://github.com/microsoft/aspire", - "sourceCommit": "87fe259e4fc244c599019a7b1304c85a1488f248" + "sourceCommit": "e076d8e427cb3afb528dbd605acd74c3aea69f94" }, "types": [ { @@ -288,7 +288,7 @@ ] }, "sourceFile": "src/Aspire.Hosting.Azure.Network/AzureNetworkSecurityGroupExtensions.cs", - "sourceLines": "43-55" + "sourceLines": "43-56" }, { "name": "WithSecurityRule", @@ -363,7 +363,7 @@ ] }, "sourceFile": "src/Aspire.Hosting.Azure.Network/AzureNetworkSecurityGroupExtensions.cs", - "sourceLines": "94-106" + "sourceLines": "95-107" } ] }, @@ -1476,7 +1476,7 @@ ] }, "sourceFile": "src/Aspire.Hosting.Azure.Network/AzureVirtualNetworkExtensions.cs", - "sourceLines": "431-431" + "sourceLines": "514-514" }, { "name": "AllowOutbound", @@ -1615,7 +1615,7 @@ } }, "sourceFile": "src/Aspire.Hosting.Azure.Network/AzureVirtualNetworkExtensions.cs", - "sourceLines": "487-487" + "sourceLines": "570-570" }, { "name": "DenyInbound", @@ -1754,7 +1754,7 @@ } }, "sourceFile": "src/Aspire.Hosting.Azure.Network/AzureVirtualNetworkExtensions.cs", - "sourceLines": "459-459" + "sourceLines": "542-542" }, { "name": "DenyOutbound", @@ -1893,7 +1893,7 @@ } }, "sourceFile": "src/Aspire.Hosting.Azure.Network/AzureVirtualNetworkExtensions.cs", - "sourceLines": "515-515" + "sourceLines": "598-598" }, { "name": "WithDelegatedSubnet", @@ -1943,7 +1943,7 @@ "remarks": [ { "kind": "text", - "text": " This method automatically configures the subnet with the appropriate service delegation for the target resource type (e.g., \"Microsoft.App/environments\" for Azure Container Apps). " + "text": " This method automatically configures the subnet with the appropriate service delegation for the target resource type (for example, \"Microsoft.App/environments\" for Azure Container Apps and \"Microsoft.Web/serverFarms\" for Azure App Service). A resource can only be associated with one delegated subnet. Repeating the call with the same subnet is idempotent. " } ], "returns": [ @@ -1982,6 +1982,17 @@ } ] }, + "exceptions": [ + { + "type": "T:System.InvalidOperationException", + "description": [ + { + "kind": "text", + "text": "Thrown when the resource is already associated with a different delegated subnet or the subnet is delegated to a different service." + } + ] + } + ], "examples": [ { "code": "\n var vnet = builder.AddAzureVirtualNetwork(\"vnet\");\n var subnet = vnet.AddSubnet(\"aca-subnet\", \"10.0.0.0/23\");\n \n var env = builder.AddAzureContainerAppEnvironment(\"env\")\n .WithDelegatedSubnet(subnet);\n ", @@ -1996,7 +2007,7 @@ ] }, "sourceFile": "src/Aspire.Hosting.Azure.Network/AzureVirtualNetworkExtensions.cs", - "sourceLines": "308-322" + "sourceLines": "313-351" }, { "name": "WithNatGateway", @@ -2077,7 +2088,7 @@ ] }, "sourceFile": "src/Aspire.Hosting.Azure.Network/AzureVirtualNetworkExtensions.cs", - "sourceLines": "350-354" + "sourceLines": "433-437" }, { "name": "WithNetworkSecurityGroup", @@ -2195,7 +2206,128 @@ ] }, "sourceFile": "src/Aspire.Hosting.Azure.Network/AzureVirtualNetworkExtensions.cs", - "sourceLines": "383-395" + "sourceLines": "466-478" + }, + { + "name": "WithServiceDelegation", + "kind": "method", + "accessibility": "public", + "signature": "public static IResourceBuilder AzureVirtualNetworkExtensions.WithServiceDelegation(this IResourceBuilder builder, string serviceName, string? name = null)", + "returnType": "Aspire.Hosting.ApplicationModel.IResourceBuilder", + "isStatic": true, + "isExtension": true, + "parameters": [ + { + "name": "builder", + "type": "Aspire.Hosting.ApplicationModel.IResourceBuilder", + "modifier": "this" + }, + { + "name": "serviceName", + "type": "string" + }, + { + "name": "name", + "type": "string?", + "isNullable": true, + "isOptional": true + } + ], + "attributes": [ + { + "name": "Aspire.Hosting.AspireExportAttribute" + } + ], + "docs": { + "summary": [ + { + "kind": "text", + "text": " Delegates the subnet to the specified Azure service. " + } + ], + "remarks": [ + { + "kind": "text", + "text": " Service delegation grants the specified Azure service permission to create service-specific resources in the subnet. Azure subnets can carry more than one delegation, but Aspire models a subnet with a single delegation and emits only the most recent one. Calling this multiple times, or combining it with " + }, + { + "kind": "cref", + "value": "M:Aspire.Hosting.AzureVirtualNetworkExtensions.WithDelegatedSubnet``1(Aspire.Hosting.ApplicationModel.IResourceBuilder{``0},Aspire.Hosting.ApplicationModel.IResourceBuilder{Aspire.Hosting.Azure.AzureSubnetResource})" + }, + { + "kind": "text", + "text": ", therefore replaces any previously configured delegation with the latest value (last-write-wins). " + } + ], + "returns": [ + { + "kind": "text", + "text": "A reference to the " + }, + { + "kind": "cref", + "value": "T:Aspire.Hosting.ApplicationModel.IResourceBuilder`1" + }, + { + "kind": "text", + "text": " for chaining." + } + ], + "parameters": { + "builder": [ + { + "kind": "text", + "text": "The subnet resource builder." + } + ], + "name": [ + { + "kind": "text", + "text": "The name of the service delegation. If not specified, defaults to " + }, + { + "kind": "paramref", + "value": "serviceName" + }, + { + "kind": "text", + "text": "." + } + ], + "serviceName": [ + { + "kind": "text", + "text": "The service name to delegate the subnet to (e.g., \"Microsoft.App/environments\"). See " + }, + { + "kind": "cref", + "value": "T:Aspire.Hosting.Azure.AzureSubnetServiceDelegations" + }, + { + "kind": "text", + "text": " for well-known values." + } + ] + }, + "examples": [ + { + "code": "\n var vnet = builder.AddAzureVirtualNetwork(\"vnet\");\n var subnet = vnet.AddSubnet(\"aci-subnet\", \"10.0.0.0/23\")\n .WithServiceDelegation(AzureSubnetServiceDelegations.ContainerInstances);\n ", + "language": "csharp", + "description": [ + { + "kind": "text", + "text": "This example delegates a subnet to Azure Container Instances using a well-known value from" + }, + { + "kind": "text", + "text": ":" + } + ] + } + ] + }, + "sourceFile": "src/Aspire.Hosting.Azure.Network/AzureVirtualNetworkExtensions.cs", + "sourceLines": "384-405" } ] }, diff --git a/src/frontend/src/data/pkgs/Aspire.Hosting.Azure.OperationalInsights.13.4.6.json b/src/frontend/src/data/pkgs/Aspire.Hosting.Azure.OperationalInsights.13.5.0.json similarity index 99% rename from src/frontend/src/data/pkgs/Aspire.Hosting.Azure.OperationalInsights.13.4.6.json rename to src/frontend/src/data/pkgs/Aspire.Hosting.Azure.OperationalInsights.13.5.0.json index 129740cad..11eed30ba 100644 --- a/src/frontend/src/data/pkgs/Aspire.Hosting.Azure.OperationalInsights.13.4.6.json +++ b/src/frontend/src/data/pkgs/Aspire.Hosting.Azure.OperationalInsights.13.5.0.json @@ -1,10 +1,10 @@ { "package": { "name": "Aspire.Hosting.Azure.OperationalInsights", - "version": "13.4.6", + "version": "13.5.0", "targetFramework": "net10.0", "sourceRepository": "https://github.com/microsoft/aspire", - "sourceCommit": "87fe259e4fc244c599019a7b1304c85a1488f248" + "sourceCommit": "e076d8e427cb3afb528dbd605acd74c3aea69f94" }, "types": [ { @@ -94,7 +94,7 @@ } }, "sourceFile": "src/Aspire.Hosting.Azure.OperationalInsights/AzureLogAnalyticsWorkspaceExtensions.cs", - "sourceLines": "26-62" + "sourceLines": "26-63" } ] }, diff --git a/src/frontend/src/data/pkgs/Aspire.Hosting.Azure.PostgreSQL.13.4.6.json b/src/frontend/src/data/pkgs/Aspire.Hosting.Azure.PostgreSQL.13.5.0.json similarity index 99% rename from src/frontend/src/data/pkgs/Aspire.Hosting.Azure.PostgreSQL.13.4.6.json rename to src/frontend/src/data/pkgs/Aspire.Hosting.Azure.PostgreSQL.13.5.0.json index a83250606..6af44b544 100644 --- a/src/frontend/src/data/pkgs/Aspire.Hosting.Azure.PostgreSQL.13.4.6.json +++ b/src/frontend/src/data/pkgs/Aspire.Hosting.Azure.PostgreSQL.13.5.0.json @@ -1,10 +1,10 @@ { "package": { "name": "Aspire.Hosting.Azure.PostgreSQL", - "version": "13.4.6", + "version": "13.5.0", "targetFramework": "net10.0", "sourceRepository": "https://github.com/microsoft/aspire", - "sourceCommit": "87fe259e4fc244c599019a7b1304c85a1488f248" + "sourceCommit": "e076d8e427cb3afb528dbd605acd74c3aea69f94" }, "types": [ { diff --git a/src/frontend/src/data/pkgs/Aspire.Hosting.Azure.Redis.13.4.6.json b/src/frontend/src/data/pkgs/Aspire.Hosting.Azure.Redis.13.5.0.json similarity index 99% rename from src/frontend/src/data/pkgs/Aspire.Hosting.Azure.Redis.13.4.6.json rename to src/frontend/src/data/pkgs/Aspire.Hosting.Azure.Redis.13.5.0.json index 072d67c38..2269c770c 100644 --- a/src/frontend/src/data/pkgs/Aspire.Hosting.Azure.Redis.13.4.6.json +++ b/src/frontend/src/data/pkgs/Aspire.Hosting.Azure.Redis.13.5.0.json @@ -1,10 +1,10 @@ { "package": { "name": "Aspire.Hosting.Azure.Redis", - "version": "13.4.6", + "version": "13.5.0", "targetFramework": "net10.0", "sourceRepository": "https://github.com/microsoft/aspire", - "sourceCommit": "87fe259e4fc244c599019a7b1304c85a1488f248" + "sourceCommit": "e076d8e427cb3afb528dbd605acd74c3aea69f94" }, "types": [ { @@ -101,7 +101,7 @@ } }, "sourceFile": "src/Aspire.Hosting.Azure.Redis/AzureManagedRedisExtensions.cs", - "sourceLines": "53-60" + "sourceLines": "53-61" }, { "name": "RunAsContainer", @@ -180,7 +180,7 @@ } }, "sourceFile": "src/Aspire.Hosting.Azure.Redis/AzureManagedRedisExtensions.cs", - "sourceLines": "93-109" + "sourceLines": "94-110" }, { "name": "WithAccessKeyAuthentication", @@ -247,7 +247,7 @@ } }, "sourceFile": "src/Aspire.Hosting.Azure.Redis/AzureManagedRedisExtensions.cs", - "sourceLines": "136-155" + "sourceLines": "137-156" }, { "name": "WithAccessKeyAuthentication", @@ -313,7 +313,7 @@ } }, "sourceFile": "src/Aspire.Hosting.Azure.Redis/AzureManagedRedisExtensions.cs", - "sourceLines": "182-199" + "sourceLines": "183-200" } ] }, @@ -422,7 +422,7 @@ } }, "sourceFile": "src/Aspire.Hosting.Azure.Redis/AzureRedisExtensions.cs", - "sourceLines": "119-126" + "sourceLines": "119-127" }, { "name": "AsAzureRedis", @@ -629,7 +629,7 @@ } }, "sourceFile": "src/Aspire.Hosting.Azure.Redis/AzureRedisExtensions.cs", - "sourceLines": "157-173" + "sourceLines": "158-174" }, { "name": "WithAccessKeyAuthentication", @@ -696,7 +696,7 @@ } }, "sourceFile": "src/Aspire.Hosting.Azure.Redis/AzureRedisExtensions.cs", - "sourceLines": "200-219" + "sourceLines": "201-220" }, { "name": "WithAccessKeyAuthentication", @@ -762,7 +762,7 @@ } }, "sourceFile": "src/Aspire.Hosting.Azure.Redis/AzureRedisExtensions.cs", - "sourceLines": "231-246" + "sourceLines": "232-247" } ] }, diff --git a/src/frontend/src/data/pkgs/Aspire.Hosting.Azure.Search.13.4.6.json b/src/frontend/src/data/pkgs/Aspire.Hosting.Azure.Search.13.5.0.json similarity index 99% rename from src/frontend/src/data/pkgs/Aspire.Hosting.Azure.Search.13.4.6.json rename to src/frontend/src/data/pkgs/Aspire.Hosting.Azure.Search.13.5.0.json index db5a00c31..86b31480b 100644 --- a/src/frontend/src/data/pkgs/Aspire.Hosting.Azure.Search.13.4.6.json +++ b/src/frontend/src/data/pkgs/Aspire.Hosting.Azure.Search.13.5.0.json @@ -1,10 +1,10 @@ { "package": { "name": "Aspire.Hosting.Azure.Search", - "version": "13.4.6", + "version": "13.5.0", "targetFramework": "net10.0", "sourceRepository": "https://github.com/microsoft/aspire", - "sourceCommit": "87fe259e4fc244c599019a7b1304c85a1488f248" + "sourceCommit": "e076d8e427cb3afb528dbd605acd74c3aea69f94" }, "types": [ { @@ -116,7 +116,7 @@ } }, "sourceFile": "src/Aspire.Hosting.Azure.Search/AzureSearchExtensions.cs", - "sourceLines": "38-47" + "sourceLines": "38-48" }, { "name": "WithRoleAssignments", diff --git a/src/frontend/src/data/pkgs/Aspire.Hosting.Azure.ServiceBus.13.4.6.json b/src/frontend/src/data/pkgs/Aspire.Hosting.Azure.ServiceBus.13.5.0.json similarity index 99% rename from src/frontend/src/data/pkgs/Aspire.Hosting.Azure.ServiceBus.13.4.6.json rename to src/frontend/src/data/pkgs/Aspire.Hosting.Azure.ServiceBus.13.5.0.json index 5c8346ee1..a03abc071 100644 --- a/src/frontend/src/data/pkgs/Aspire.Hosting.Azure.ServiceBus.13.4.6.json +++ b/src/frontend/src/data/pkgs/Aspire.Hosting.Azure.ServiceBus.13.5.0.json @@ -1,10 +1,10 @@ { "package": { "name": "Aspire.Hosting.Azure.ServiceBus", - "version": "13.4.6", + "version": "13.5.0", "targetFramework": "net10.0", "sourceRepository": "https://github.com/microsoft/aspire", - "sourceCommit": "87fe259e4fc244c599019a7b1304c85a1488f248" + "sourceCommit": "e076d8e427cb3afb528dbd605acd74c3aea69f94" }, "types": [ { @@ -108,7 +108,7 @@ } }, "sourceFile": "src/Aspire.Hosting.Azure.ServiceBus/AzureServiceBusExtensions.cs", - "sourceLines": "46-143" + "sourceLines": "46-144" }, { "name": "AddQueue", @@ -194,7 +194,7 @@ } }, "sourceFile": "src/Aspire.Hosting.Azure.ServiceBus/AzureServiceBusExtensions.cs", - "sourceLines": "157-162" + "sourceLines": "158-163" }, { "name": "AddServiceBusQueue", @@ -277,7 +277,7 @@ } }, "sourceFile": "src/Aspire.Hosting.Azure.ServiceBus/AzureServiceBusExtensions.cs", - "sourceLines": "176-185" + "sourceLines": "177-187" }, { "name": "AddServiceBusSubscription", @@ -360,7 +360,7 @@ } }, "sourceFile": "src/Aspire.Hosting.Azure.ServiceBus/AzureServiceBusExtensions.cs", - "sourceLines": "333-342" + "sourceLines": "336-346" }, { "name": "AddServiceBusTopic", @@ -443,7 +443,7 @@ } }, "sourceFile": "src/Aspire.Hosting.Azure.ServiceBus/AzureServiceBusExtensions.cs", - "sourceLines": "261-270" + "sourceLines": "263-273" }, { "name": "AddSubscription", @@ -539,7 +539,7 @@ } }, "sourceFile": "src/Aspire.Hosting.Azure.ServiceBus/AzureServiceBusExtensions.cs", - "sourceLines": "303-319" + "sourceLines": "306-322" }, { "name": "AddTopic", @@ -611,7 +611,7 @@ } }, "sourceFile": "src/Aspire.Hosting.Azure.ServiceBus/AzureServiceBusExtensions.cs", - "sourceLines": "216-221" + "sourceLines": "218-223" }, { "name": "AddTopic", @@ -701,7 +701,7 @@ } }, "sourceFile": "src/Aspire.Hosting.Azure.ServiceBus/AzureServiceBusExtensions.cs", - "sourceLines": "235-247" + "sourceLines": "237-249" }, { "name": "RunAsEmulator", @@ -800,7 +800,7 @@ ] }, "sourceFile": "src/Aspire.Hosting.Azure.ServiceBus/AzureServiceBusExtensions.cs", - "sourceLines": "394-512" + "sourceLines": "398-516" }, { "name": "WithConfiguration", @@ -897,7 +897,7 @@ } }, "sourceFile": "src/Aspire.Hosting.Azure.ServiceBus/AzureServiceBusExtensions.cs", - "sourceLines": "557-562" + "sourceLines": "561-566" }, { "name": "WithConfigurationFile", @@ -968,7 +968,7 @@ } }, "sourceFile": "src/Aspire.Hosting.Azure.ServiceBus/AzureServiceBusExtensions.cs", - "sourceLines": "525-528" + "sourceLines": "529-532" }, { "name": "WithHostPort", @@ -1040,7 +1040,7 @@ } }, "sourceFile": "src/Aspire.Hosting.Azure.ServiceBus/AzureServiceBusExtensions.cs", - "sourceLines": "575-580" + "sourceLines": "579-584" }, { "name": "WithProperties", diff --git a/src/frontend/src/data/pkgs/Aspire.Hosting.Azure.SignalR.13.4.6.json b/src/frontend/src/data/pkgs/Aspire.Hosting.Azure.SignalR.13.5.0.json similarity index 99% rename from src/frontend/src/data/pkgs/Aspire.Hosting.Azure.SignalR.13.4.6.json rename to src/frontend/src/data/pkgs/Aspire.Hosting.Azure.SignalR.13.5.0.json index 16ba26f57..1aafa40e2 100644 --- a/src/frontend/src/data/pkgs/Aspire.Hosting.Azure.SignalR.13.4.6.json +++ b/src/frontend/src/data/pkgs/Aspire.Hosting.Azure.SignalR.13.5.0.json @@ -1,10 +1,10 @@ { "package": { "name": "Aspire.Hosting.Azure.SignalR", - "version": "13.4.6", + "version": "13.5.0", "targetFramework": "net10.0", "sourceRepository": "https://github.com/microsoft/aspire", - "sourceCommit": "87fe259e4fc244c599019a7b1304c85a1488f248" + "sourceCommit": "e076d8e427cb3afb528dbd605acd74c3aea69f94" }, "types": [ { @@ -241,7 +241,7 @@ } }, "sourceFile": "src/Aspire.Hosting.Azure.SignalR/AzureSignalRExtensions.cs", - "sourceLines": "59-127" + "sourceLines": "59-128" }, { "name": "RunAsEmulator", @@ -343,7 +343,7 @@ } }, "sourceFile": "src/Aspire.Hosting.Azure.SignalR/AzureSignalRExtensions.cs", - "sourceLines": "151-175" + "sourceLines": "152-176" }, { "name": "WithRoleAssignments", diff --git a/src/frontend/src/data/pkgs/Aspire.Hosting.Azure.Sql.13.4.6.json b/src/frontend/src/data/pkgs/Aspire.Hosting.Azure.Sql.13.5.0.json similarity index 98% rename from src/frontend/src/data/pkgs/Aspire.Hosting.Azure.Sql.13.4.6.json rename to src/frontend/src/data/pkgs/Aspire.Hosting.Azure.Sql.13.5.0.json index f4299fd07..f9d62b0b4 100644 --- a/src/frontend/src/data/pkgs/Aspire.Hosting.Azure.Sql.13.4.6.json +++ b/src/frontend/src/data/pkgs/Aspire.Hosting.Azure.Sql.13.5.0.json @@ -1,10 +1,10 @@ { "package": { "name": "Aspire.Hosting.Azure.Sql", - "version": "13.4.6", + "version": "13.5.0", "targetFramework": "net10.0", "sourceRepository": "https://github.com/microsoft/aspire", - "sourceCommit": "87fe259e4fc244c599019a7b1304c85a1488f248" + "sourceCommit": "e076d8e427cb3afb528dbd605acd74c3aea69f94" }, "types": [ { @@ -1024,7 +1024,7 @@ } }, "sourceFile": "src/Aspire.Hosting.Azure.Sql/AzureSqlServerResource.cs", - "sourceLines": "34-86" + "sourceLines": "32-84" }, { "name": ".ctor", @@ -1089,7 +1089,7 @@ } }, "sourceFile": "src/Aspire.Hosting.Azure.Sql/AzureSqlServerResource.cs", - "sourceLines": "34-86" + "sourceLines": "32-84" }, { "name": "AddAsExistingResource", @@ -1175,7 +1175,7 @@ } }, "sourceFile": "src/Aspire.Hosting.Azure.Sql/AzureSqlServerResource.cs", - "sourceLines": "194-217" + "sourceLines": "192-215" }, { "name": "AddRoleAssignments", @@ -1207,7 +1207,7 @@ } }, "sourceFile": "src/Aspire.Hosting.Azure.Sql/AzureSqlServerResource.cs", - "sourceLines": "223-386" + "sourceLines": "221-330" }, { "name": "Annotations", @@ -1237,7 +1237,7 @@ ] }, "sourceFile": "src/Aspire.Hosting.Azure.Sql/AzureSqlServerResource.cs", - "sourceLines": "160-160" + "sourceLines": "158-158" }, { "name": "AzureSqlDatabases", @@ -1255,7 +1255,7 @@ ] }, "sourceFile": "src/Aspire.Hosting.Azure.Sql/AzureSqlServerResource.cs", - "sourceLines": "165-165" + "sourceLines": "163-163" }, { "name": "ConnectionStringExpression", @@ -1273,7 +1273,7 @@ ] }, "sourceFile": "src/Aspire.Hosting.Azure.Sql/AzureSqlServerResource.cs", - "sourceLines": "133-140" + "sourceLines": "131-138" }, { "name": "Databases", @@ -1291,7 +1291,7 @@ ] }, "sourceFile": "src/Aspire.Hosting.Azure.Sql/AzureSqlServerResource.cs", - "sourceLines": "170-173" + "sourceLines": "168-171" }, { "name": "FullyQualifiedDomainName", @@ -1309,7 +1309,7 @@ ] }, "sourceFile": "src/Aspire.Hosting.Azure.Sql/AzureSqlServerResource.cs", - "sourceLines": "61-61" + "sourceLines": "59-59" }, { "name": "HostName", @@ -1333,7 +1333,7 @@ ] }, "sourceFile": "src/Aspire.Hosting.Azure.Sql/AzureSqlServerResource.cs", - "sourceLines": "96-98" + "sourceLines": "94-96" }, { "name": "Id", @@ -1351,7 +1351,7 @@ ] }, "sourceFile": "src/Aspire.Hosting.Azure.Sql/AzureSqlServerResource.cs", - "sourceLines": "71-71" + "sourceLines": "69-69" }, { "name": "IsContainer", @@ -1369,7 +1369,7 @@ ] }, "sourceFile": "src/Aspire.Hosting.Azure.Sql/AzureSqlServerResource.cs", - "sourceLines": "155-155" + "sourceLines": "153-153" }, { "name": "JdbcConnectionString", @@ -1401,7 +1401,7 @@ ] }, "sourceFile": "src/Aspire.Hosting.Azure.Sql/AzureSqlServerResource.cs", - "sourceLines": "411-413" + "sourceLines": "504-506" }, { "name": "NameOutputReference", @@ -1419,7 +1419,7 @@ ] }, "sourceFile": "src/Aspire.Hosting.Azure.Sql/AzureSqlServerResource.cs", - "sourceLines": "66-66" + "sourceLines": "64-64" }, { "name": "Port", @@ -1443,7 +1443,7 @@ ] }, "sourceFile": "src/Aspire.Hosting.Azure.Sql/AzureSqlServerResource.cs", - "sourceLines": "108-110" + "sourceLines": "106-108" }, { "name": "UriExpression", @@ -1475,7 +1475,7 @@ ] }, "sourceFile": "src/Aspire.Hosting.Azure.Sql/AzureSqlServerResource.cs", - "sourceLines": "119-121" + "sourceLines": "117-119" } ] } diff --git a/src/frontend/src/data/pkgs/Aspire.Hosting.Azure.Storage.13.4.6.json b/src/frontend/src/data/pkgs/Aspire.Hosting.Azure.Storage.13.5.0.json similarity index 99% rename from src/frontend/src/data/pkgs/Aspire.Hosting.Azure.Storage.13.4.6.json rename to src/frontend/src/data/pkgs/Aspire.Hosting.Azure.Storage.13.5.0.json index a8594bb06..a2c6a8230 100644 --- a/src/frontend/src/data/pkgs/Aspire.Hosting.Azure.Storage.13.4.6.json +++ b/src/frontend/src/data/pkgs/Aspire.Hosting.Azure.Storage.13.5.0.json @@ -1,10 +1,10 @@ { "package": { "name": "Aspire.Hosting.Azure.Storage", - "version": "13.4.6", + "version": "13.5.0", "targetFramework": "net10.0", "sourceRepository": "https://github.com/microsoft/aspire", - "sourceCommit": "87fe259e4fc244c599019a7b1304c85a1488f248" + "sourceCommit": "aab640cb6e4d05e1422b3ab723e78524aa1c5a22" }, "types": [ { @@ -110,7 +110,7 @@ } }, "sourceFile": "src/Aspire.Hosting.Azure.Storage/AzureStorageExtensions.cs", - "sourceLines": "43-166" + "sourceLines": "43-167" }, { "name": "AddBlobContainer", @@ -420,7 +420,7 @@ } }, "sourceFile": "src/Aspire.Hosting.Azure.Storage/AzureStorageExtensions.cs", - "sourceLines": "387-397" + "sourceLines": "388-398" }, { "name": "AddDataLake", @@ -515,7 +515,7 @@ } }, "sourceFile": "src/Aspire.Hosting.Azure.Storage/AzureStorageExtensions.cs", - "sourceLines": "411-422" + "sourceLines": "412-423" }, { "name": "AddDataLakeFileSystem", @@ -622,7 +622,7 @@ } }, "sourceFile": "src/Aspire.Hosting.Azure.Storage/AzureStorageExtensions.cs", - "sourceLines": "517-528" + "sourceLines": "519-531" }, { "name": "AddQueue", @@ -729,7 +729,7 @@ } }, "sourceFile": "src/Aspire.Hosting.Azure.Storage/AzureStorageExtensions.cs", - "sourceLines": "634-658" + "sourceLines": "637-662" }, { "name": "AddQueues", @@ -824,7 +824,7 @@ } }, "sourceFile": "src/Aspire.Hosting.Azure.Storage/AzureStorageExtensions.cs", - "sourceLines": "595-605" + "sourceLines": "598-608" }, { "name": "AddTables", @@ -919,7 +919,7 @@ } }, "sourceFile": "src/Aspire.Hosting.Azure.Storage/AzureStorageExtensions.cs", - "sourceLines": "578-581" + "sourceLines": "581-584" }, { "name": "RunAsEmulator", @@ -1013,7 +1013,7 @@ } }, "sourceFile": "src/Aspire.Hosting.Azure.Storage/AzureStorageExtensions.cs", - "sourceLines": "183-265" + "sourceLines": "184-266" }, { "name": "WithApiVersionCheck", @@ -1094,7 +1094,7 @@ } }, "sourceFile": "src/Aspire.Hosting.Azure.Storage/AzureStorageExtensions.cs", - "sourceLines": "360-373" + "sourceLines": "361-374" }, { "name": "WithBlobPort", @@ -1143,7 +1143,7 @@ } }, "sourceFile": "src/Aspire.Hosting.Azure.Storage/AzureStorageExtensions.cs", - "sourceLines": "307-312" + "sourceLines": "308-313" }, { "name": "WithDataBindMount", @@ -1228,7 +1228,7 @@ } }, "sourceFile": "src/Aspire.Hosting.Azure.Storage/AzureStorageExtensions.cs", - "sourceLines": "278-280" + "sourceLines": "279-281" }, { "name": "WithDataVolume", @@ -1313,7 +1313,7 @@ } }, "sourceFile": "src/Aspire.Hosting.Azure.Storage/AzureStorageExtensions.cs", - "sourceLines": "293-295" + "sourceLines": "294-296" }, { "name": "WithQueuePort", @@ -1362,7 +1362,7 @@ } }, "sourceFile": "src/Aspire.Hosting.Azure.Storage/AzureStorageExtensions.cs", - "sourceLines": "324-329" + "sourceLines": "325-330" }, { "name": "WithRoleAssignments", @@ -1528,7 +1528,7 @@ } }, "sourceFile": "src/Aspire.Hosting.Azure.Storage/AzureStorageExtensions.cs", - "sourceLines": "342-347" + "sourceLines": "343-348" } ] }, diff --git a/src/frontend/src/data/pkgs/Aspire.Hosting.Azure.WebPubSub.13.4.6.json b/src/frontend/src/data/pkgs/Aspire.Hosting.Azure.WebPubSub.13.5.0.json similarity index 99% rename from src/frontend/src/data/pkgs/Aspire.Hosting.Azure.WebPubSub.13.4.6.json rename to src/frontend/src/data/pkgs/Aspire.Hosting.Azure.WebPubSub.13.5.0.json index e090cf289..8dc35a1fb 100644 --- a/src/frontend/src/data/pkgs/Aspire.Hosting.Azure.WebPubSub.13.4.6.json +++ b/src/frontend/src/data/pkgs/Aspire.Hosting.Azure.WebPubSub.13.5.0.json @@ -1,10 +1,10 @@ { "package": { "name": "Aspire.Hosting.Azure.WebPubSub", - "version": "13.4.6", + "version": "13.5.0", "targetFramework": "net10.0", "sourceRepository": "https://github.com/microsoft/aspire", - "sourceCommit": "87fe259e4fc244c599019a7b1304c85a1488f248" + "sourceCommit": "e076d8e427cb3afb528dbd605acd74c3aea69f94" }, "types": [ { @@ -116,7 +116,7 @@ } }, "sourceFile": "src/Aspire.Hosting.Azure.WebPubSub/AzureWebPubSubExtensions.cs", - "sourceLines": "39-153" + "sourceLines": "39-154" }, { "name": "AddEventHandler", @@ -210,7 +210,7 @@ } }, "sourceFile": "src/Aspire.Hosting.Azure.WebPubSub/AzureWebPubSubExtensions.cs", - "sourceLines": "218-222" + "sourceLines": "219-223" }, { "name": "AddEventHandler", @@ -304,7 +304,7 @@ } }, "sourceFile": "src/Aspire.Hosting.Azure.WebPubSub/AzureWebPubSubExtensions.cs", - "sourceLines": "245-250" + "sourceLines": "246-251" }, { "name": "AddHub", @@ -362,7 +362,7 @@ } }, "sourceFile": "src/Aspire.Hosting.Azure.WebPubSub/AzureWebPubSubExtensions.cs", - "sourceLines": "166-166" + "sourceLines": "167-167" }, { "name": "AddHub", @@ -445,7 +445,7 @@ } }, "sourceFile": "src/Aspire.Hosting.Azure.WebPubSub/AzureWebPubSubExtensions.cs", - "sourceLines": "180-195" + "sourceLines": "181-196" }, { "name": "WithRoleAssignments", diff --git a/src/frontend/src/data/pkgs/Aspire.Hosting.Blazor.13.4.6-preview.1.26319.6.json b/src/frontend/src/data/pkgs/Aspire.Hosting.Blazor.13.5.0-preview.1.26417.7.json similarity index 69% rename from src/frontend/src/data/pkgs/Aspire.Hosting.Blazor.13.4.6-preview.1.26319.6.json rename to src/frontend/src/data/pkgs/Aspire.Hosting.Blazor.13.5.0-preview.1.26417.7.json index 5ec5c728d..933663b94 100644 --- a/src/frontend/src/data/pkgs/Aspire.Hosting.Blazor.13.4.6-preview.1.26319.6.json +++ b/src/frontend/src/data/pkgs/Aspire.Hosting.Blazor.13.5.0-preview.1.26417.7.json @@ -1,10 +1,10 @@ { "package": { "name": "Aspire.Hosting.Blazor", - "version": "13.4.6-preview.1.26319.6", + "version": "13.5.0-preview.1.26417.7", "targetFramework": "net10.0", "sourceRepository": "https://github.com/microsoft/aspire", - "sourceCommit": "87fe259e4fc244c599019a7b1304c85a1488f248" + "sourceCommit": "e076d8e427cb3afb528dbd605acd74c3aea69f94" }, "types": [ { @@ -34,7 +34,7 @@ } ], "sourceFile": "src/Aspire.Hosting.Blazor/BlazorGatewayExtensions.cs", - "sourceLines": "21-21", + "sourceLines": "23-23", "members": [ { "name": "AddBlazorGateway", @@ -77,7 +77,7 @@ ] }, "sourceFile": "src/Aspire.Hosting.Blazor/BlazorGatewayExtensions.cs", - "sourceLines": "37-70" + "sourceLines": "39-72" }, { "name": "AddBlazorWasmApp", @@ -119,7 +119,7 @@ ] }, "sourceFile": "src/Aspire.Hosting.Blazor/BlazorGatewayExtensions.cs", - "sourceLines": "110-121" + "sourceLines": "147-158" }, { "name": "AddBlazorWasmProject", @@ -166,7 +166,124 @@ ] }, "sourceFile": "src/Aspire.Hosting.Blazor/BlazorGatewayExtensions.cs", - "sourceLines": "85-97" + "sourceLines": "122-134" + }, + { + "name": "AddDotnetProjectBlazorGateway", + "kind": "method", + "accessibility": "public", + "signature": "public static IResourceBuilder BlazorGatewayExtensions.AddDotnetProjectBlazorGateway(this IDistributedApplicationBuilder builder, string name)", + "returnType": "Aspire.Hosting.ApplicationModel.IResourceBuilder", + "isStatic": true, + "isExtension": true, + "parameters": [ + { + "name": "builder", + "type": "Aspire.Hosting.IDistributedApplicationBuilder", + "modifier": "this" + }, + { + "name": "name", + "type": "string" + } + ], + "attributes": [ + { + "name": "System.Diagnostics.CodeAnalysis.ExperimentalAttribute", + "constructorArguments": [ + "ASPIREDOTNETPROJECT001" + ], + "arguments": { + "UrlFormat": "https://aka.ms/aspire/diagnostics/{0}" + } + }, + { + "name": "Aspire.Hosting.AspireExportIgnoreAttribute", + "arguments": { + "Reason": "The DotnetProjectResource-backed Blazor gateway is experimental and not yet stable for ATS export." + } + } + ], + "docs": { + "summary": [ + { + "kind": "text", + "text": " Registers the built-in Blazor Gateway backed by an experimental " + }, + { + "kind": "cref", + "value": "T:Aspire.Hosting.Dotnet.DotnetProjectResource" + }, + { + "kind": "text", + "text": " from " + }, + { + "kind": "code", + "text": "Aspire.Hosting.Dotnet" + }, + { + "kind": "text", + "text": " (the run/watch-capable .NET resource), rather than the " + }, + { + "kind": "cref", + "value": "T:Aspire.Hosting.ApplicationModel.ProjectResource" + }, + { + "kind": "text", + "text": " used by " + }, + { + "kind": "cref", + "value": "M:Aspire.Hosting.BlazorGatewayExtensions.AddBlazorGateway(Aspire.Hosting.IDistributedApplicationBuilder,System.String)" + }, + { + "kind": "text", + "text": ". The gateway is shipped as Gateway.cs alongside this library and launched via " + }, + { + "kind": "code", + "text": "AddDotnetProject" + }, + { + "kind": "text", + "text": ". No separate project is needed. " + } + ], + "remarks": [ + { + "kind": "text", + "text": " Publishing is not yet supported for the " + }, + { + "kind": "cref", + "value": "T:Aspire.Hosting.Dotnet.DotnetProjectResource" + }, + { + "kind": "text", + "text": "-backed gateway because the resource does not implement the container-files destination pipeline that the publish path relies on to merge each WASM client's static assets into the gateway image. Use " + }, + { + "kind": "cref", + "value": "M:Aspire.Hosting.BlazorGatewayExtensions.AddBlazorGateway(Aspire.Hosting.IDistributedApplicationBuilder,System.String)" + }, + { + "kind": "text", + "text": " for publish scenarios. This restriction is expected to be lifted once container execution lands for " + }, + { + "kind": "cref", + "value": "T:Aspire.Hosting.Dotnet.DotnetProjectResource" + }, + { + "kind": "text", + "text": ". " + } + ] + }, + "sourceFile": "src/Aspire.Hosting.Blazor/BlazorGatewayExtensions.cs", + "sourceLines": "94-107" }, { "name": "WithBlazorClientApp", @@ -278,8 +395,155 @@ ] } }, - "sourceFile": "src/Aspire.Hosting.Blazor/BlazorGatewayExtensions.cs", - "sourceLines": "144-174" + "sourceFile": "src/Aspire.Hosting.Blazor/BlazorGatewayExtensions.cs" + }, + { + "name": "WithBlazorClientApp", + "kind": "method", + "accessibility": "public", + "signature": "public static IResourceBuilder BlazorGatewayExtensions.WithBlazorClientApp(this IResourceBuilder gateway, IResourceBuilder wasmApp, string apiPrefix = \"_api\", string otlpPrefix = \"_otlp\", bool proxyTelemetry = true)", + "returnType": "Aspire.Hosting.ApplicationModel.IResourceBuilder", + "isStatic": true, + "isExtension": true, + "parameters": [ + { + "name": "gateway", + "type": "Aspire.Hosting.ApplicationModel.IResourceBuilder", + "modifier": "this" + }, + { + "name": "wasmApp", + "type": "Aspire.Hosting.ApplicationModel.IResourceBuilder" + }, + { + "name": "apiPrefix", + "type": "string", + "isOptional": true, + "defaultValue": "_api" + }, + { + "name": "otlpPrefix", + "type": "string", + "isOptional": true, + "defaultValue": "_otlp" + }, + { + "name": "proxyTelemetry", + "type": "bool", + "isOptional": true, + "defaultValue": "True" + } + ], + "attributes": [ + { + "name": "System.Diagnostics.CodeAnalysis.ExperimentalAttribute", + "constructorArguments": [ + "ASPIREDOTNETPROJECT001" + ], + "arguments": { + "UrlFormat": "https://aka.ms/aspire/diagnostics/{0}" + } + }, + { + "name": "Aspire.Hosting.AspireExportIgnoreAttribute", + "arguments": { + "Reason": "The DotnetProjectResource-backed Blazor gateway is experimental and not yet stable for ATS export." + } + } + ], + "docs": { + "summary": [ + { + "kind": "text", + "text": " Attaches a Blazor WebAssembly app to a " + }, + { + "kind": "cref", + "value": "T:Aspire.Hosting.Dotnet.DotnetProjectResource" + }, + { + "kind": "text", + "text": "-backed Gateway created via " + }, + { + "kind": "cref", + "value": "M:Aspire.Hosting.BlazorGatewayExtensions.AddDotnetProjectBlazorGateway(Aspire.Hosting.IDistributedApplicationBuilder,System.String)" + }, + { + "kind": "text", + "text": ". Behaves identically to " + }, + { + "kind": "cref", + "value": "M:Aspire.Hosting.BlazorGatewayExtensions.WithBlazorClientApp(Aspire.Hosting.ApplicationModel.IResourceBuilder{Aspire.Hosting.ApplicationModel.ProjectResource},Aspire.Hosting.ApplicationModel.IResourceBuilder{Aspire.Hosting.BlazorWasmAppResource},System.String,System.String,System.Boolean)" + }, + { + "kind": "text", + "text": ". " + } + ], + "parameters": { + "apiPrefix": [ + { + "kind": "text", + "text": "The URL path prefix for API proxy routes. Defaults to " + }, + { + "kind": "code", + "text": "\"_api\"" + }, + { + "kind": "text", + "text": "." + } + ], + "gateway": [ + { + "kind": "text", + "text": "The gateway resource builder." + } + ], + "otlpPrefix": [ + { + "kind": "text", + "text": "The URL path prefix for OTLP proxy routes. Defaults to " + }, + { + "kind": "code", + "text": "\"_otlp\"" + }, + { + "kind": "text", + "text": "." + } + ], + "proxyTelemetry": [ + { + "kind": "langword", + "value": "true" + }, + { + "kind": "text", + "text": " to expose the OTLP proxy for the client app; otherwise, " + }, + { + "kind": "langword", + "value": "false" + }, + { + "kind": "text", + "text": "." + } + ], + "wasmApp": [ + { + "kind": "text", + "text": "The Blazor WebAssembly app to attach to the gateway." + } + ] + } + }, + "sourceFile": "src/Aspire.Hosting.Blazor/BlazorGatewayExtensions.cs" } ] }, diff --git a/src/frontend/src/data/pkgs/Aspire.Hosting.Browsers.13.4.6-preview.1.26319.6.json b/src/frontend/src/data/pkgs/Aspire.Hosting.Browsers.13.5.0-preview.1.26417.7.json similarity index 98% rename from src/frontend/src/data/pkgs/Aspire.Hosting.Browsers.13.4.6-preview.1.26319.6.json rename to src/frontend/src/data/pkgs/Aspire.Hosting.Browsers.13.5.0-preview.1.26417.7.json index 2108ad356..96db82f75 100644 --- a/src/frontend/src/data/pkgs/Aspire.Hosting.Browsers.13.4.6-preview.1.26319.6.json +++ b/src/frontend/src/data/pkgs/Aspire.Hosting.Browsers.13.5.0-preview.1.26417.7.json @@ -1,10 +1,10 @@ { "package": { "name": "Aspire.Hosting.Browsers", - "version": "13.4.6-preview.1.26319.6", + "version": "13.5.0-preview.1.26417.7", "targetFramework": "net10.0", "sourceRepository": "https://github.com/microsoft/aspire", - "sourceCommit": "87fe259e4fc244c599019a7b1304c85a1488f248" + "sourceCommit": "e076d8e427cb3afb528dbd605acd74c3aea69f94" }, "types": [ { @@ -34,7 +34,7 @@ } ], "sourceFile": "src/Aspire.Hosting.Browsers/BrowserLogsBuilderExtensions.cs", - "sourceLines": "23-23", + "sourceLines": "22-22", "members": [ { "name": "WithBrowserLogs", @@ -375,7 +375,7 @@ ] }, "sourceFile": "src/Aspire.Hosting.Browsers/BrowserLogsBuilderExtensions.cs", - "sourceLines": "123-290" + "sourceLines": "122-289" } ] }, diff --git a/src/frontend/src/data/pkgs/Aspire.Hosting.DevTunnels.13.4.6.json b/src/frontend/src/data/pkgs/Aspire.Hosting.DevTunnels.13.5.0.json similarity index 92% rename from src/frontend/src/data/pkgs/Aspire.Hosting.DevTunnels.13.4.6.json rename to src/frontend/src/data/pkgs/Aspire.Hosting.DevTunnels.13.5.0.json index 40360c0c7..1797c2523 100644 --- a/src/frontend/src/data/pkgs/Aspire.Hosting.DevTunnels.13.4.6.json +++ b/src/frontend/src/data/pkgs/Aspire.Hosting.DevTunnels.13.5.0.json @@ -1,10 +1,10 @@ { "package": { "name": "Aspire.Hosting.DevTunnels", - "version": "13.4.6", + "version": "13.5.0", "targetFramework": "net10.0", "sourceRepository": "https://github.com/microsoft/aspire", - "sourceCommit": "87fe259e4fc244c599019a7b1304c85a1488f248" + "sourceCommit": "e076d8e427cb3afb528dbd605acd74c3aea69f94" }, "types": [ { @@ -115,7 +115,7 @@ ] }, "sourceFile": "src/Aspire.Hosting.DevTunnels/DevTunnelResourceBuilderExtensions.cs", - "sourceLines": "55-235" + "sourceLines": "55-233" }, { "name": "GetEndpoint", @@ -232,7 +232,7 @@ ] }, "sourceFile": "src/Aspire.Hosting.DevTunnels/DevTunnelResourceBuilderExtensions.cs", - "sourceLines": "387-391" + "sourceLines": "385-389" }, { "name": "GetEndpoint", @@ -322,7 +322,7 @@ } }, "sourceFile": "src/Aspire.Hosting.DevTunnels/DevTunnelResourceBuilderExtensions.cs", - "sourceLines": "407-419" + "sourceLines": "405-417" }, { "name": "GetEndpoint", @@ -391,7 +391,7 @@ } }, "sourceFile": "src/Aspire.Hosting.DevTunnels/DevTunnelResourceBuilderExtensions.cs", - "sourceLines": "431-443" + "sourceLines": "429-441" }, { "name": "WithAnonymousAccess", @@ -466,7 +466,7 @@ } }, "sourceFile": "src/Aspire.Hosting.DevTunnels/DevTunnelResourceBuilderExtensions.cs", - "sourceLines": "367-368" + "sourceLines": "365-366" }, { "name": "WithReference", @@ -545,7 +545,7 @@ } }, "sourceFile": "src/Aspire.Hosting.DevTunnels/DevTunnelResourceBuilderExtensions.cs", - "sourceLines": "270-273" + "sourceLines": "268-271" }, { "name": "WithReference", @@ -649,7 +649,7 @@ } }, "sourceFile": "src/Aspire.Hosting.DevTunnels/DevTunnelResourceBuilderExtensions.cs", - "sourceLines": "294-302" + "sourceLines": "292-300" }, { "name": "WithReference", @@ -710,7 +710,7 @@ } }, "sourceFile": "src/Aspire.Hosting.DevTunnels/DevTunnelResourceBuilderExtensions.cs", - "sourceLines": "316-316" + "sourceLines": "314-314" }, { "name": "WithReference", @@ -781,7 +781,7 @@ } }, "sourceFile": "src/Aspire.Hosting.DevTunnels/DevTunnelResourceBuilderExtensions.cs", - "sourceLines": "330-330" + "sourceLines": "328-328" }, { "name": "WithReference", @@ -872,7 +872,7 @@ } }, "sourceFile": "src/Aspire.Hosting.DevTunnels/DevTunnelResourceBuilderExtensions.cs", - "sourceLines": "348-353" + "sourceLines": "346-351" }, { "name": "WithReference", @@ -962,7 +962,7 @@ } }, "sourceFile": "src/Aspire.Hosting.DevTunnels/DevTunnelResourceBuilderExtensions.cs", - "sourceLines": "472-531" + "sourceLines": "470-529" } ] }, @@ -1062,6 +1062,40 @@ ] }, "sourceFile": "src/Aspire.Hosting.DevTunnels/DevTunnelOptions.cs" + }, + { + "name": "Region", + "kind": "property", + "accessibility": "public", + "signature": "public DevTunnelRegion? DevTunnelOptions.Region", + "returnType": "Aspire.Hosting.DevTunnels.DevTunnelRegion?", + "isReturnNullable": true, + "hasGet": true, + "hasSet": true, + "docs": { + "summary": [ + { + "kind": "text", + "text": " Optional region to create the dev tunnel in. If not specified, the region will be selected automatically based on the ping. " + } + ], + "remarks": [ + { + "kind": "text", + "text": " Set this value, for example to " + }, + { + "kind": "codeblock", + "text": "DevTunnelRegion.NorthEurope", + "language": "csharp" + }, + { + "kind": "text", + "text": ", when an existing tunnel must be reused in a specific service region. " + } + ] + }, + "sourceFile": "src/Aspire.Hosting.DevTunnels/DevTunnelOptions.cs" } ] }, @@ -1081,7 +1115,7 @@ ] }, "sourceFile": "src/Aspire.Hosting.DevTunnels/DevTunnelOptions.cs", - "sourceLines": "32-32", + "sourceLines": "61-61", "members": [ { "name": ".ctor", @@ -1207,7 +1241,7 @@ ] }, "sourceFile": "src/Aspire.Hosting.DevTunnels/DevTunnelResource.cs", - "sourceLines": "43-43", + "sourceLines": "48-48", "members": [ { "name": ".ctor", @@ -1286,7 +1320,7 @@ } }, "sourceFile": "src/Aspire.Hosting.DevTunnels/DevTunnelResource.cs", - "sourceLines": "61-73" + "sourceLines": "66-78" }, { "name": "DevTunnel", @@ -1304,7 +1338,7 @@ ] }, "sourceFile": "src/Aspire.Hosting.DevTunnels/DevTunnelResource.cs", - "sourceLines": "78-78" + "sourceLines": "83-83" }, { "name": "Options", @@ -1322,10 +1356,94 @@ ] }, "sourceFile": "src/Aspire.Hosting.DevTunnels/DevTunnelResource.cs", - "sourceLines": "83-83" + "sourceLines": "88-88" } ] }, + { + "name": "DevTunnelRegion", + "fullName": "Aspire.Hosting.DevTunnels.DevTunnelRegion", + "namespace": "Aspire.Hosting.DevTunnels", + "kind": "enum", + "accessibility": "public", + "docs": { + "summary": [ + { + "kind": "text", + "text": " Region options for dev tunnel creation. " + } + ] + }, + "enumMembers": [ + { + "name": "WestEurope", + "value": 0, + "description": "West Europe region." + }, + { + "name": "UKSouth", + "value": 1, + "description": "UK South region." + }, + { + "name": "NorthEurope", + "value": 2, + "description": "North Europe region." + }, + { + "name": "EastUs", + "value": 3, + "description": "East US region." + }, + { + "name": "EastUs2", + "value": 4, + "description": "East US 2 region." + }, + { + "name": "CentralIndia", + "value": 5, + "description": "Central India region." + }, + { + "name": "WestUs3", + "value": 6, + "description": "West US 3 region." + }, + { + "name": "WestUs2", + "value": 7, + "description": "West US 2 region." + }, + { + "name": "SoutheastAsia", + "value": 8, + "description": "Southeast Asia region." + }, + { + "name": "BrazilSouth", + "value": 9, + "description": "Brazil South region." + }, + { + "name": "AustraliaCentral", + "value": 10, + "description": "Australia Central region." + }, + { + "name": "AustraliaEast", + "value": 11, + "description": "Australia East region." + }, + { + "name": "JapanEast", + "value": 12, + "description": "Japan East region." + } + ], + "sourceFile": "src/Aspire.Hosting.DevTunnels/DevTunnelRegion.cs", + "members": [] + }, { "name": "DevTunnelResource", "fullName": "Aspire.Hosting.DevTunnels.DevTunnelResource", @@ -1384,7 +1502,7 @@ ] }, "sourceFile": "src/Aspire.Hosting.DevTunnels/DevTunnelResource.cs", - "sourceLines": "20-32" + "sourceLines": "20-37" }, { "name": "Options", diff --git a/src/frontend/src/data/pkgs/Aspire.Hosting.Docker.13.4.6.json b/src/frontend/src/data/pkgs/Aspire.Hosting.Docker.13.5.0.json similarity index 99% rename from src/frontend/src/data/pkgs/Aspire.Hosting.Docker.13.4.6.json rename to src/frontend/src/data/pkgs/Aspire.Hosting.Docker.13.5.0.json index aa6bc5b19..12a89958d 100644 --- a/src/frontend/src/data/pkgs/Aspire.Hosting.Docker.13.4.6.json +++ b/src/frontend/src/data/pkgs/Aspire.Hosting.Docker.13.5.0.json @@ -1,10 +1,10 @@ { "package": { "name": "Aspire.Hosting.Docker", - "version": "13.4.6", + "version": "13.5.0", "targetFramework": "net10.0", "sourceRepository": "https://github.com/microsoft/aspire", - "sourceCommit": "87fe259e4fc244c599019a7b1304c85a1488f248" + "sourceCommit": "e076d8e427cb3afb528dbd605acd74c3aea69f94" }, "types": [ { @@ -23,7 +23,7 @@ ] }, "sourceFile": "src/Aspire.Hosting.Docker/DockerComposeAspireDashboardResourceBuilderExtensions.cs", - "sourceLines": "12-12", + "sourceLines": "13-13", "members": [ { "name": "WithForwardedHeaders", @@ -142,7 +142,7 @@ } }, "sourceFile": "src/Aspire.Hosting.Docker/DockerComposeAspireDashboardResourceBuilderExtensions.cs", - "sourceLines": "85-87" + "sourceLines": "88-90" }, { "name": "WithHostPort", @@ -223,7 +223,7 @@ } }, "sourceFile": "src/Aspire.Hosting.Docker/DockerComposeAspireDashboardResourceBuilderExtensions.cs", - "sourceLines": "61-65" + "sourceLines": "64-68" } ] }, @@ -314,7 +314,7 @@ } }, "sourceFile": "src/Aspire.Hosting.Docker/DockerComposeEnvironmentExtensions.cs", - "sourceLines": "78-100" + "sourceLines": "78-101" }, { "name": "ConfigureComposeFile", @@ -399,7 +399,7 @@ } }, "sourceFile": "src/Aspire.Hosting.Docker/DockerComposeEnvironmentExtensions.cs", - "sourceLines": "135-139" + "sourceLines": "136-140" }, { "name": "ConfigureEnvFile", @@ -481,7 +481,7 @@ } }, "sourceFile": "src/Aspire.Hosting.Docker/DockerComposeEnvironmentExtensions.cs", - "sourceLines": "158-162" + "sourceLines": "159-163" }, { "name": "WithDashboard", @@ -546,7 +546,7 @@ } }, "sourceFile": "src/Aspire.Hosting.Docker/DockerComposeEnvironmentExtensions.cs", - "sourceLines": "175-179" + "sourceLines": "176-180" }, { "name": "WithDashboard", @@ -616,7 +616,7 @@ } }, "sourceFile": "src/Aspire.Hosting.Docker/DockerComposeEnvironmentExtensions.cs", - "sourceLines": "192-200" + "sourceLines": "193-201" }, { "name": "WithProperties", @@ -690,7 +690,7 @@ } }, "sourceFile": "src/Aspire.Hosting.Docker/DockerComposeEnvironmentExtensions.cs", - "sourceLines": "113-118" + "sourceLines": "114-119" } ] }, @@ -1376,7 +1376,7 @@ } ], "sourceFile": "src/Aspire.Hosting.Docker/DockerComposeEnvironmentResource.cs", - "sourceLines": "30-30", + "sourceLines": "29-29", "members": [ { "name": ".ctor", @@ -1401,7 +1401,7 @@ } }, "sourceFile": "src/Aspire.Hosting.Docker/DockerComposeEnvironmentResource.cs", - "sourceLines": "42-260" + "sourceLines": "41-259" }, { "name": "GetHostAddressExpression", @@ -1479,7 +1479,7 @@ } }, "sourceFile": "src/Aspire.Hosting.Docker/DockerComposeEnvironmentResource.cs", - "sourceLines": "266-270" + "sourceLines": "265-269" }, { "name": "DashboardEnabled", @@ -2787,7 +2787,7 @@ "signature": "public Service.Service()", "returnType": "void", "sourceFile": "src/Aspire.Hosting.Docker/Resources/ComposeNodes/Service.cs", - "sourceLines": "71-461" + "sourceLines": "71-470" }, { "name": "AddConfig", @@ -2832,7 +2832,7 @@ } }, "sourceFile": "src/Aspire.Hosting.Docker/Resources/ComposeNodes/Service.cs", - "sourceLines": "510-511" + "sourceLines": "519-520" }, { "name": "AddEnvironmentalVariable", @@ -2888,7 +2888,7 @@ } }, "sourceFile": "src/Aspire.Hosting.Docker/Resources/ComposeNodes/Service.cs", - "sourceLines": "496-498" + "sourceLines": "505-507" }, { "name": "AddVolume", @@ -2933,7 +2933,7 @@ } }, "sourceFile": "src/Aspire.Hosting.Docker/Resources/ComposeNodes/Service.cs", - "sourceLines": "471-472" + "sourceLines": "480-481" }, { "name": "AddVolumes", @@ -2978,7 +2978,7 @@ } }, "sourceFile": "src/Aspire.Hosting.Docker/Resources/ComposeNodes/Service.cs", - "sourceLines": "483-484" + "sourceLines": "492-493" }, { "name": "Build", @@ -3773,6 +3773,55 @@ }, "sourceFile": "src/Aspire.Hosting.Docker/Resources/ComposeNodes/Service.cs" }, + { + "name": "ShmSize", + "kind": "property", + "accessibility": "public", + "signature": "public string? Service.ShmSize", + "returnType": "string?", + "isReturnNullable": true, + "hasGet": true, + "hasSet": true, + "docs": { + "summary": [ + { + "kind": "text", + "text": " Gets or sets the size of the " + }, + { + "kind": "code", + "text": "/dev/shm" + }, + { + "kind": "text", + "text": " partition for the container. " + } + ], + "remarks": [ + { + "kind": "text", + "text": " The value is emitted as the Docker Compose " + }, + { + "kind": "code", + "text": "shm_size" + }, + { + "kind": "text", + "text": " service property, for example " + }, + { + "kind": "code", + "text": "128mb" + }, + { + "kind": "text", + "text": ". " + } + ] + }, + "sourceFile": "src/Aspire.Hosting.Docker/Resources/ComposeNodes/Service.cs" + }, { "name": "StdinOpen", "kind": "property", diff --git a/src/frontend/src/data/pkgs/Aspire.Hosting.Dotnet.13.5.0-preview.1.26417.7.json b/src/frontend/src/data/pkgs/Aspire.Hosting.Dotnet.13.5.0-preview.1.26417.7.json new file mode 100644 index 000000000..51140b335 --- /dev/null +++ b/src/frontend/src/data/pkgs/Aspire.Hosting.Dotnet.13.5.0-preview.1.26417.7.json @@ -0,0 +1,474 @@ +{ + "package": { + "name": "Aspire.Hosting.Dotnet", + "version": "13.5.0-preview.1.26417.7", + "targetFramework": "net10.0", + "sourceRepository": "https://github.com/microsoft/aspire", + "sourceCommit": "e076d8e427cb3afb528dbd605acd74c3aea69f94" + }, + "types": [ + { + "name": "DotnetProjectHostingExtensions", + "fullName": "Aspire.Hosting.DotnetProjectHostingExtensions", + "namespace": "Aspire.Hosting", + "kind": "class", + "accessibility": "public", + "isStatic": true, + "docs": { + "summary": [ + { + "kind": "text", + "text": " Provides extension methods for adding C# projects and file-based C# apps (by path) to an " + }, + { + "kind": "cref", + "value": "T:Aspire.Hosting.IDistributedApplicationBuilder" + }, + { + "kind": "text", + "text": ". " + } + ] + }, + "sourceFile": "src/Aspire.Hosting.Dotnet/DotnetProjectHostingExtensions.cs", + "sourceLines": "19-19", + "members": [ + { + "name": "AddDotnetProject", + "kind": "method", + "accessibility": "public", + "signature": "public static IResourceBuilder DotnetProjectHostingExtensions.AddDotnetProject(this IDistributedApplicationBuilder builder, string name, string path)", + "returnType": "Aspire.Hosting.ApplicationModel.IResourceBuilder", + "isStatic": true, + "isExtension": true, + "parameters": [ + { + "name": "builder", + "type": "Aspire.Hosting.IDistributedApplicationBuilder", + "modifier": "this" + }, + { + "name": "name", + "type": "string" + }, + { + "name": "path", + "type": "string" + } + ], + "attributes": [ + { + "name": "System.Diagnostics.CodeAnalysis.ExperimentalAttribute", + "constructorArguments": [ + "ASPIREDOTNETPROJECT001" + ], + "arguments": { + "UrlFormat": "https://aka.ms/aspire/diagnostics/{0}" + } + }, + { + "name": "Aspire.Hosting.AspireExportIgnoreAttribute", + "arguments": { + "Reason": "Polyglot AppHosts use the internal addDotnetProject dispatcher export." + } + } + ], + "docs": { + "summary": [ + { + "kind": "text", + "text": " Adds a C# project or file-based app to the application model. " + } + ], + "remarks": [ + { + "kind": "para", + "children": [ + { + "kind": "text", + "text": " This overload of the " + }, + { + "kind": "cref", + "value": "M:Aspire.Hosting.DotnetProjectHostingExtensions.AddDotnetProject(Aspire.Hosting.IDistributedApplicationBuilder,System.String,System.String)" + }, + { + "kind": "text", + "text": " method adds a C# project or file-based app to the application model using a path to the file-based app .cs file, project file (.csproj), or project directory. If the path is not an absolute path then it will be computed relative to the AppHost directory. " + } + ] + }, + { + "kind": "text", + "text": " Add a file-based app to the app model via a file path. " + }, + { + "kind": "codeblock", + "text": "\n var builder = DistributedApplication.CreateBuilder(args);\n \n builder.AddDotnetProject(\"inventoryservice\", @\"..\\InventoryService.cs\");\n \n builder.Build().Run();\n ", + "language": "csharp" + } + ], + "returns": [ + { + "kind": "text", + "text": "A reference to the " + }, + { + "kind": "cref", + "value": "T:Aspire.Hosting.ApplicationModel.IResourceBuilder`1" + }, + { + "kind": "text", + "text": "." + } + ], + "parameters": { + "builder": [ + { + "kind": "text", + "text": "The " + }, + { + "kind": "cref", + "value": "T:Aspire.Hosting.IDistributedApplicationBuilder" + }, + { + "kind": "text", + "text": "." + } + ], + "name": [ + { + "kind": "text", + "text": "The name of the resource. This name will be used for service discovery when referenced in a dependency." + } + ], + "path": [ + { + "kind": "text", + "text": "The path to the file-based app file, project file, or project directory." + } + ] + } + }, + "sourceFile": "src/Aspire.Hosting.Dotnet/DotnetProjectHostingExtensions.cs", + "sourceLines": "49-53" + }, + { + "name": "AddDotnetProject", + "kind": "method", + "accessibility": "public", + "signature": "public static IResourceBuilder DotnetProjectHostingExtensions.AddDotnetProject(this IDistributedApplicationBuilder builder, string name, string path, Action configure)", + "returnType": "Aspire.Hosting.ApplicationModel.IResourceBuilder", + "isStatic": true, + "isExtension": true, + "parameters": [ + { + "name": "builder", + "type": "Aspire.Hosting.IDistributedApplicationBuilder", + "modifier": "this" + }, + { + "name": "name", + "type": "string" + }, + { + "name": "path", + "type": "string" + }, + { + "name": "configure", + "type": "System.Action" + } + ], + "attributes": [ + { + "name": "System.Diagnostics.CodeAnalysis.ExperimentalAttribute", + "constructorArguments": [ + "ASPIREDOTNETPROJECT001" + ], + "arguments": { + "UrlFormat": "https://aka.ms/aspire/diagnostics/{0}" + } + }, + { + "name": "Aspire.Hosting.AspireExportIgnoreAttribute", + "arguments": { + "Reason": "Polyglot AppHosts use the internal addDotnetProject dispatcher export." + } + } + ], + "docs": { + "summary": [ + { + "kind": "text", + "text": " Adds a C# project or file-based app to the application model. " + } + ], + "remarks": [ + { + "kind": "para", + "children": [ + { + "kind": "text", + "text": " This overload of the " + }, + { + "kind": "cref", + "value": "M:Aspire.Hosting.DotnetProjectHostingExtensions.AddDotnetProject(Aspire.Hosting.IDistributedApplicationBuilder,System.String,System.String)" + }, + { + "kind": "text", + "text": " method adds a C# project or file-based app to the application model using a path to the file-based app .cs file, project file (.csproj), or project directory. If the path is not an absolute path then it will be computed relative to the AppHost directory. " + } + ] + }, + { + "kind": "text", + "text": " Add a file-based app to the app model via a file path. " + }, + { + "kind": "codeblock", + "text": "\n var builder = DistributedApplication.CreateBuilder(args);\n \n builder.AddDotnetProject(\"inventoryservice\", @\"..\\InventoryService.cs\", o => o.LaunchProfileName = \"https\");\n \n builder.Build().Run();\n ", + "language": "csharp" + } + ], + "returns": [ + { + "kind": "text", + "text": "A reference to the " + }, + { + "kind": "cref", + "value": "T:Aspire.Hosting.ApplicationModel.IResourceBuilder`1" + }, + { + "kind": "text", + "text": "." + } + ], + "parameters": { + "builder": [ + { + "kind": "text", + "text": "The " + }, + { + "kind": "cref", + "value": "T:Aspire.Hosting.IDistributedApplicationBuilder" + }, + { + "kind": "text", + "text": "." + } + ], + "configure": [ + { + "kind": "text", + "text": "An optional action to configure the C# app resource options." + } + ], + "name": [ + { + "kind": "text", + "text": "The name of the resource. This name will be used for service discovery when referenced in a dependency." + } + ], + "path": [ + { + "kind": "text", + "text": "The path to the file-based app file, project file, or project directory." + } + ] + } + }, + "sourceFile": "src/Aspire.Hosting.Dotnet/DotnetProjectHostingExtensions.cs", + "sourceLines": "101-220" + } + ] + }, + { + "name": "DotnetProjectResource", + "fullName": "Aspire.Hosting.Dotnet.DotnetProjectResource", + "namespace": "Aspire.Hosting.Dotnet", + "kind": "class", + "accessibility": "public", + "baseType": "Aspire.Hosting.ApplicationModel.ExecutableResource", + "interfaces": [ + "Aspire.Hosting.ApplicationModel.IResource", + "Aspire.Hosting.ApplicationModel.IResourceWithEndpoints", + "Aspire.Hosting.IResourceWithServiceDiscovery" + ], + "docs": { + "summary": [ + { + "kind": "text", + "text": " A resource that represents a specified C# project or file-based app added by path. " + } + ], + "remarks": [ + { + "kind": "para", + "children": [ + { + "kind": "text", + "text": " A " + }, + { + "kind": "cref", + "value": "T:Aspire.Hosting.Dotnet.DotnetProjectResource" + }, + { + "kind": "text", + "text": " is added by path and is launched as an executable: " + }, + { + "kind": "code", + "text": "dotnet run --project " + }, + { + "kind": "text", + "text": " for a project file, or " + }, + { + "kind": "code", + "text": "dotnet run --file " + }, + { + "kind": "text", + "text": " for a file-based app (a " + }, + { + "kind": "code", + "text": ".cs" + }, + { + "kind": "text", + "text": " file). " + } + ] + }, + { + "kind": "para", + "children": [ + { + "kind": "text", + "text": " Automatic publishing is not supported. Use " + }, + { + "kind": "code", + "text": "AddProject(...)" + }, + { + "kind": "text", + "text": " or " + }, + { + "kind": "code", + "text": "AddCSharpApp(...)" + }, + { + "kind": "text", + "text": " for standard .NET project publishing, explicitly configure container publishing with " + }, + { + "kind": "code", + "text": "PublishAsDockerFile(...)" + }, + { + "kind": "text", + "text": ", or exclude an intentionally run-only resource with " + }, + { + "kind": "code", + "text": "ExcludeFromManifest()" + }, + { + "kind": "text", + "text": ". " + } + ] + } + ] + }, + "attributes": [ + { + "name": "System.Diagnostics.CodeAnalysis.ExperimentalAttribute", + "constructorArguments": [ + "ASPIREDOTNETPROJECT001" + ], + "arguments": { + "UrlFormat": "https://aka.ms/aspire/diagnostics/{0}" + } + }, + { + "name": "Aspire.Hosting.AspireExportAttribute", + "arguments": { + "ExposeProperties": "True" + } + } + ], + "sourceFile": "src/Aspire.Hosting.Dotnet/DotnetProjectResource.cs", + "sourceLines": "33-33", + "members": [ + { + "name": ".ctor", + "kind": "constructor", + "accessibility": "public", + "signature": "public DotnetProjectResource.DotnetProjectResource(string name, string workingDirectory)", + "returnType": "void", + "parameters": [ + { + "name": "name", + "type": "string" + }, + { + "name": "workingDirectory", + "type": "string" + } + ], + "docs": { + "summary": [ + { + "kind": "text", + "text": " Initializes a new instance of the " + }, + { + "kind": "cref", + "value": "T:Aspire.Hosting.Dotnet.DotnetProjectResource" + }, + { + "kind": "text", + "text": " class. " + } + ], + "parameters": { + "name": [ + { + "kind": "text", + "text": "The name of the resource in the application model." + } + ], + "workingDirectory": [ + { + "kind": "text", + "text": "The working directory for the app, typically the directory containing the project or " + }, + { + "kind": "code", + "text": ".cs" + }, + { + "kind": "text", + "text": " file." + } + ] + } + }, + "sourceFile": "src/Aspire.Hosting.Dotnet/DotnetProjectResource.cs", + "sourceLines": "60-125" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/frontend/src/data/pkgs/Aspire.Hosting.EntityFrameworkCore.13.4.6-preview.1.26319.6.json b/src/frontend/src/data/pkgs/Aspire.Hosting.EntityFrameworkCore.13.5.0-preview.1.26417.7.json similarity index 99% rename from src/frontend/src/data/pkgs/Aspire.Hosting.EntityFrameworkCore.13.4.6-preview.1.26319.6.json rename to src/frontend/src/data/pkgs/Aspire.Hosting.EntityFrameworkCore.13.5.0-preview.1.26417.7.json index 8937dd17b..24e24f84d 100644 --- a/src/frontend/src/data/pkgs/Aspire.Hosting.EntityFrameworkCore.13.4.6-preview.1.26319.6.json +++ b/src/frontend/src/data/pkgs/Aspire.Hosting.EntityFrameworkCore.13.5.0-preview.1.26417.7.json @@ -1,10 +1,10 @@ { "package": { "name": "Aspire.Hosting.EntityFrameworkCore", - "version": "13.4.6-preview.1.26319.6", + "version": "13.5.0-preview.1.26417.7", "targetFramework": "net10.0", "sourceRepository": "https://github.com/microsoft/aspire", - "sourceCommit": "87fe259e4fc244c599019a7b1304c85a1488f248" + "sourceCommit": "e076d8e427cb3afb528dbd605acd74c3aea69f94" }, "types": [ { @@ -931,7 +931,7 @@ ] }, "sourceFile": "src/Aspire.Hosting.EntityFrameworkCore/EFResourceBuilderExtensions.cs", - "sourceLines": "21-21", + "sourceLines": "20-20", "members": [ { "name": "AddEFMigrations", @@ -1016,7 +1016,7 @@ ] }, "sourceFile": "src/Aspire.Hosting.EntityFrameworkCore/EFResourceBuilderExtensions.cs", - "sourceLines": "51-55" + "sourceLines": "50-54" }, { "name": "AddEFMigrations", @@ -1112,7 +1112,7 @@ ] }, "sourceFile": "src/Aspire.Hosting.EntityFrameworkCore/EFResourceBuilderExtensions.cs", - "sourceLines": "78-82" + "sourceLines": "77-81" }, { "name": "AddEFMigrations", @@ -1181,7 +1181,7 @@ ] }, "sourceFile": "src/Aspire.Hosting.EntityFrameworkCore/EFResourceBuilderExtensions.cs", - "sourceLines": "97-100" + "sourceLines": "96-99" }, { "name": "AddEFMigrations", @@ -1261,7 +1261,7 @@ ] }, "sourceFile": "src/Aspire.Hosting.EntityFrameworkCore/EFResourceBuilderExtensions.cs", - "sourceLines": "137-140" + "sourceLines": "136-139" } ] }, diff --git a/src/frontend/src/data/pkgs/Aspire.Hosting.Garnet.13.4.6.json b/src/frontend/src/data/pkgs/Aspire.Hosting.Garnet.13.5.0.json similarity index 99% rename from src/frontend/src/data/pkgs/Aspire.Hosting.Garnet.13.4.6.json rename to src/frontend/src/data/pkgs/Aspire.Hosting.Garnet.13.5.0.json index 8be66a91c..2bd6d588e 100644 --- a/src/frontend/src/data/pkgs/Aspire.Hosting.Garnet.13.4.6.json +++ b/src/frontend/src/data/pkgs/Aspire.Hosting.Garnet.13.5.0.json @@ -1,10 +1,10 @@ { "package": { "name": "Aspire.Hosting.Garnet", - "version": "13.4.6", + "version": "13.5.0", "targetFramework": "net10.0", "sourceRepository": "https://github.com/microsoft/aspire", - "sourceCommit": "87fe259e4fc244c599019a7b1304c85a1488f248" + "sourceCommit": "e076d8e427cb3afb528dbd605acd74c3aea69f94" }, "types": [ { @@ -286,7 +286,7 @@ } }, "sourceFile": "src/Aspire.Hosting.Garnet/GarnetBuilderExtensions.cs", - "sourceLines": "104-174" + "sourceLines": "104-175" }, { "name": "WithDataBindMount", @@ -400,7 +400,7 @@ } }, "sourceFile": "src/Aspire.Hosting.Garnet/GarnetBuilderExtensions.cs", - "sourceLines": "252-261" + "sourceLines": "253-262" }, { "name": "WithDataVolume", @@ -516,7 +516,7 @@ } }, "sourceFile": "src/Aspire.Hosting.Garnet/GarnetBuilderExtensions.cs", - "sourceLines": "214-223" + "sourceLines": "215-224" }, { "name": "WithPersistence", @@ -613,7 +613,7 @@ ] }, "sourceFile": "src/Aspire.Hosting.Garnet/GarnetBuilderExtensions.cs", - "sourceLines": "283-283" + "sourceLines": "284-284" }, { "name": "WithPersistence", @@ -705,7 +705,7 @@ } }, "sourceFile": "src/Aspire.Hosting.Garnet/GarnetBuilderExtensions.cs", - "sourceLines": "308-310" + "sourceLines": "309-311" } ] }, diff --git a/src/frontend/src/data/pkgs/Aspire.Hosting.GitHub.Models.13.4.6.json b/src/frontend/src/data/pkgs/Aspire.Hosting.GitHub.Models.13.5.0.json similarity index 96% rename from src/frontend/src/data/pkgs/Aspire.Hosting.GitHub.Models.13.4.6.json rename to src/frontend/src/data/pkgs/Aspire.Hosting.GitHub.Models.13.5.0.json index 02b63e945..beb9396d3 100644 --- a/src/frontend/src/data/pkgs/Aspire.Hosting.GitHub.Models.13.4.6.json +++ b/src/frontend/src/data/pkgs/Aspire.Hosting.GitHub.Models.13.5.0.json @@ -1,10 +1,10 @@ { "package": { "name": "Aspire.Hosting.GitHub.Models", - "version": "13.4.6", + "version": "13.5.0", "targetFramework": "net10.0", "sourceRepository": "https://github.com/microsoft/aspire", - "sourceCommit": "87fe259e4fc244c599019a7b1304c85a1488f248" + "sourceCommit": "e076d8e427cb3afb528dbd605acd74c3aea69f94" }, "types": [ { @@ -55,6 +55,12 @@ } ], "attributes": [ + { + "name": "System.ObsoleteAttribute", + "constructorArguments": [ + "GitHub Models is no longer available to new customers, so the Aspire GitHub Models integration is deprecated and will be removed in a future release. See https://github.com/microsoft/aspire/issues/18402 for details." + ] + }, { "name": "Aspire.Hosting.AspireExportIgnoreAttribute", "arguments": { @@ -150,6 +156,12 @@ } ], "attributes": [ + { + "name": "System.ObsoleteAttribute", + "constructorArguments": [ + "GitHub Models is no longer available to new customers, so the Aspire GitHub Models integration is deprecated and will be removed in a future release. See https://github.com/microsoft/aspire/issues/18402 for details." + ] + }, { "name": "Aspire.Hosting.AspireExportIgnoreAttribute", "arguments": { @@ -276,6 +288,12 @@ } ], "attributes": [ + { + "name": "System.ObsoleteAttribute", + "constructorArguments": [ + "GitHub Models is no longer available to new customers, so the Aspire GitHub Models integration is deprecated and will be removed in a future release. See https://github.com/microsoft/aspire/issues/18402 for details." + ] + }, { "name": "Aspire.Hosting.AspireExportAttribute" } @@ -320,7 +338,7 @@ ] }, "sourceFile": "src/Aspire.Hosting.GitHub.Models/GitHubModelsExtensions.cs", - "sourceLines": "151-167" + "sourceLines": "157-173" }, { "name": "WithHealthCheck", @@ -338,6 +356,12 @@ } ], "attributes": [ + { + "name": "System.ObsoleteAttribute", + "constructorArguments": [ + "GitHub Models is no longer available to new customers, so the Aspire GitHub Models integration is deprecated and will be removed in a future release. See https://github.com/microsoft/aspire/issues/18402 for details." + ] + }, { "name": "Aspire.Hosting.AspireExportAttribute", "constructorArguments": [ @@ -442,7 +466,7 @@ } }, "sourceFile": "src/Aspire.Hosting.GitHub.Models/GitHubModelsExtensions.cs", - "sourceLines": "195-229" + "sourceLines": "202-236" } ] }, @@ -772,8 +796,16 @@ } ] }, + "attributes": [ + { + "name": "System.ObsoleteAttribute", + "constructorArguments": [ + "GitHub Models is no longer available to new customers, so the Aspire GitHub Models integration is deprecated and will be removed in a future release. See https://github.com/microsoft/aspire/issues/18402 for details." + ] + } + ], "sourceFile": "src/Aspire.Hosting.GitHub.Models/GithubModel.cs", - "sourceLines": "9-9", + "sourceLines": "12-12", "members": [ { "name": ".ctor", @@ -1619,8 +1651,16 @@ } ] }, + "attributes": [ + { + "name": "System.ObsoleteAttribute", + "constructorArguments": [ + "GitHub Models is no longer available to new customers, so the Aspire GitHub Models integration is deprecated and will be removed in a future release. See https://github.com/microsoft/aspire/issues/18402 for details." + ] + } + ], "sourceFile": "src/Aspire.Hosting.GitHub.Models/GitHubModelResource.cs", - "sourceLines": "13-13", + "sourceLines": "14-14", "members": [ { "name": ".ctor", @@ -1690,7 +1730,7 @@ } }, "sourceFile": "src/Aspire.Hosting.GitHub.Models/GitHubModelResource.cs", - "sourceLines": "24-29" + "sourceLines": "25-30" }, { "name": "ConnectionStringExpression", @@ -1708,7 +1748,7 @@ ] }, "sourceFile": "src/Aspire.Hosting.GitHub.Models/GitHubModelResource.cs", - "sourceLines": "77-77" + "sourceLines": "78-78" }, { "name": "Key", @@ -1823,7 +1863,7 @@ ] }, "sourceFile": "src/Aspire.Hosting.GitHub.Models/GitHubModelResource.cs", - "sourceLines": "85-85" + "sourceLines": "86-86" } ] } diff --git a/src/frontend/src/data/pkgs/Aspire.Hosting.Go.13.4.6-preview.1.26319.6.json b/src/frontend/src/data/pkgs/Aspire.Hosting.Go.13.5.0-preview.1.26417.7.json similarity index 74% rename from src/frontend/src/data/pkgs/Aspire.Hosting.Go.13.4.6-preview.1.26319.6.json rename to src/frontend/src/data/pkgs/Aspire.Hosting.Go.13.5.0-preview.1.26417.7.json index 73574219c..8c166700f 100644 --- a/src/frontend/src/data/pkgs/Aspire.Hosting.Go.13.4.6-preview.1.26319.6.json +++ b/src/frontend/src/data/pkgs/Aspire.Hosting.Go.13.5.0-preview.1.26417.7.json @@ -1,10 +1,10 @@ { "package": { "name": "Aspire.Hosting.Go", - "version": "13.4.6-preview.1.26319.6", + "version": "13.5.0-preview.1.26417.7", "targetFramework": "net10.0", "sourceRepository": "https://github.com/microsoft/aspire", - "sourceCommit": "87fe259e4fc244c599019a7b1304c85a1488f248" + "sourceCommit": "e076d8e427cb3afb528dbd605acd74c3aea69f94" }, "types": [ { @@ -173,7 +173,7 @@ }, { "kind": "cref", - "value": "M:Aspire.Hosting.GoHostingExtensions.WithDelveServer``1(Aspire.Hosting.ApplicationModel.IResourceBuilder{``0},System.Int32)" + "value": "M:Aspire.Hosting.GoHostingExtensions.WithDelveServer``1(Aspire.Hosting.ApplicationModel.IResourceBuilder{``0},Aspire.Hosting.Go.DelveServerOptions)" }, { "kind": "text", @@ -554,7 +554,7 @@ "name": "WithDelveServer", "kind": "method", "accessibility": "public", - "signature": "public static IResourceBuilder GoHostingExtensions.WithDelveServer(this IResourceBuilder builder, int port = 2345)", + "signature": "public static IResourceBuilder GoHostingExtensions.WithDelveServer(this IResourceBuilder builder)", "returnType": "Aspire.Hosting.ApplicationModel.IResourceBuilder", "isStatic": true, "isExtension": true, @@ -563,12 +563,6 @@ "name": "builder", "type": "Aspire.Hosting.ApplicationModel.IResourceBuilder", "modifier": "this" - }, - { - "name": "port", - "type": "int", - "isOptional": true, - "defaultValue": "2345" } ], "genericParameters": [ @@ -581,18 +575,21 @@ ], "attributes": [ { - "name": "Aspire.Hosting.AspireExportAttribute" + "name": "Aspire.Hosting.AspireExportIgnoreAttribute", + "arguments": { + "Reason": "This C# convenience overload uses default options. Polyglot AppHosts use the DelveServerOptions overload." + } } ], "docs": { "summary": [ { "kind": "text", - "text": " Starts a headless Delve debug server so that any DAP-compatible client can attach remotely. The application is launched as " + "text": " Starts a headless Delve debug server so that a DAP-compatible client can attach remotely. The application is launched with " }, { "kind": "code", - "text": "dlv --headless=true --listen=127.0.0.1: --api-version=2 debug ." + "text": "dlv debug" }, { "kind": "text", @@ -600,7 +597,7 @@ }, { "kind": "code", - "text": "go run ." + "text": "go run" }, { "kind": "text", @@ -739,6 +736,118 @@ "text": " for chaining." } ], + "parameters": { + "builder": [ + { + "kind": "text", + "text": "The resource builder for the Go application." + } + ] + }, + "typeParameters": { + "T": [ + { + "kind": "text", + "text": "The type of the Go application resource." + } + ] + }, + "examples": [ + { + "code": "\n builder.AddGoApp(\"api\", \"../go-api\")\n .WithDelveServer();\n ", + "language": "csharp" + } + ] + }, + "sourceFile": "src/Aspire.Hosting.Go/GoHostingExtensions.cs", + "sourceLines": "640-640" + }, + { + "name": "WithDelveServer", + "kind": "method", + "accessibility": "public", + "signature": "public static IResourceBuilder GoHostingExtensions.WithDelveServer(this IResourceBuilder builder, int port = 2345)", + "returnType": "Aspire.Hosting.ApplicationModel.IResourceBuilder", + "isStatic": true, + "isExtension": true, + "parameters": [ + { + "name": "builder", + "type": "Aspire.Hosting.ApplicationModel.IResourceBuilder", + "modifier": "this" + }, + { + "name": "port", + "type": "int", + "isOptional": true, + "defaultValue": "2345" + } + ], + "genericParameters": [ + { + "name": "T", + "constraints": [ + "Aspire.Hosting.Go.GoAppResource" + ] + } + ], + "attributes": [ + { + "name": "System.ObsoleteAttribute", + "constructorArguments": [ + "Use WithDelveServer() or WithDelveServer(DelveServerOptions) instead." + ] + }, + { + "name": "Aspire.Hosting.AspireExportIgnoreAttribute", + "arguments": { + "Reason": "This obsolete compatibility overload is C#-only. Polyglot AppHosts use the DelveServerOptions overload." + } + } + ], + "docs": { + "summary": [ + { + "kind": "text", + "text": " Starts a headless Delve debug server on the specified port. " + } + ], + "remarks": [ + { + "kind": "text", + "text": " This overload is retained for binary compatibility. Use " + }, + { + "kind": "cref", + "value": "M:Aspire.Hosting.GoHostingExtensions.WithDelveServer``1(Aspire.Hosting.ApplicationModel.IResourceBuilder{``0})" + }, + { + "kind": "text", + "text": " for the default port or " + }, + { + "kind": "cref", + "value": "M:Aspire.Hosting.GoHostingExtensions.WithDelveServer``1(Aspire.Hosting.ApplicationModel.IResourceBuilder{``0},Aspire.Hosting.Go.DelveServerOptions)" + }, + { + "kind": "text", + "text": " to configure the port and other Delve server options. " + } + ], + "returns": [ + { + "kind": "text", + "text": "A reference to the " + }, + { + "kind": "cref", + "value": "T:Aspire.Hosting.ApplicationModel.IResourceBuilder`1" + }, + { + "kind": "text", + "text": " for chaining." + } + ], "parameters": { "builder": [ { @@ -771,13 +880,154 @@ }, "examples": [ { - "code": "\n builder.AddGoApp(\"api\", \"../go-api\")\n .WithDelveServer(port: 2345);\n ", + "code": "\n builder.AddGoApp(\"api\", \"../go-api\")\n .WithDelveServer(new DelveServerOptions { Port = 3456 });\n ", "language": "csharp" } ] }, "sourceFile": "src/Aspire.Hosting.Go/GoHostingExtensions.cs", - "sourceLines": "644-662" + "sourceLines": "664-664" + }, + { + "name": "WithDelveServer", + "kind": "method", + "accessibility": "public", + "signature": "public static IResourceBuilder GoHostingExtensions.WithDelveServer(this IResourceBuilder builder, DelveServerOptions? options = null)", + "returnType": "Aspire.Hosting.ApplicationModel.IResourceBuilder", + "isStatic": true, + "isExtension": true, + "parameters": [ + { + "name": "builder", + "type": "Aspire.Hosting.ApplicationModel.IResourceBuilder", + "modifier": "this" + }, + { + "name": "options", + "type": "Aspire.Hosting.Go.DelveServerOptions?", + "isNullable": true, + "isOptional": true + } + ], + "genericParameters": [ + { + "name": "T", + "constraints": [ + "Aspire.Hosting.Go.GoAppResource" + ] + } + ], + "attributes": [ + { + "name": "Aspire.Hosting.AspireExportAttribute" + } + ], + "docs": { + "summary": [ + { + "kind": "text", + "text": " Starts a configurable headless Delve debug server so that DAP-compatible clients can attach remotely. The application is launched with " + }, + { + "kind": "code", + "text": "dlv debug" + }, + { + "kind": "text", + "text": " instead of " + }, + { + "kind": "code", + "text": "go run" + }, + { + "kind": "text", + "text": ". Delve must be available on the PATH. " + } + ], + "remarks": [ + { + "kind": "text", + "text": " The server listens on " + }, + { + "kind": "code", + "text": "127.0.0.1" + }, + { + "kind": "text", + "text": " and accepts a single debugger client by default. Set " + }, + { + "kind": "cref", + "value": "P:Aspire.Hosting.Go.DelveServerOptions.AcceptMultiClient" + }, + { + "kind": "text", + "text": " to " + }, + { + "kind": "langword", + "value": "true" + }, + { + "kind": "text", + "text": " only when multiple clients or reconnections are required. " + } + ], + "returns": [ + { + "kind": "text", + "text": "A reference to the " + }, + { + "kind": "cref", + "value": "T:Aspire.Hosting.ApplicationModel.IResourceBuilder`1" + }, + { + "kind": "text", + "text": " for chaining." + } + ], + "parameters": { + "builder": [ + { + "kind": "text", + "text": "The resource builder for the Go application." + } + ], + "options": [ + { + "kind": "text", + "text": "The options that configure the Delve server. When " + }, + { + "kind": "langword", + "value": "null" + }, + { + "kind": "text", + "text": ", the default options are used." + } + ] + }, + "typeParameters": { + "T": [ + { + "kind": "text", + "text": "The type of the Go application resource." + } + ] + }, + "examples": [ + { + "code": "\n builder.AddGoApp(\"api\", \"../go-api\")\n .WithDelveServer(new DelveServerOptions\n {\n Port = 2345,\n ContinueOnStart = true,\n Log = true,\n LogOutput = \"rpc,dap,debugger\"\n });\n ", + "language": "csharp" + } + ] + }, + "sourceFile": "src/Aspire.Hosting.Go/GoHostingExtensions.cs", + "sourceLines": "699-726" }, { "name": "WithGoPrivate", @@ -1366,6 +1616,260 @@ } ] }, + { + "name": "DelveServerOptions", + "fullName": "Aspire.Hosting.Go.DelveServerOptions", + "namespace": "Aspire.Hosting.Go", + "kind": "class", + "accessibility": "public", + "isSealed": true, + "docs": { + "summary": [ + { + "kind": "text", + "text": " Configures the headless Delve debug server used for remote debugging of a Go application. " + } + ], + "remarks": [ + { + "kind": "para", + "children": [ + { + "kind": "text", + "text": " The server listens on the loopback interface. By default, it accepts a single debugger client and relies on Delve's default same-user connection policy. " + } + ] + }, + { + "kind": "para", + "children": [ + { + "kind": "text", + "text": " Set " + }, + { + "kind": "cref", + "value": "P:Aspire.Hosting.Go.DelveServerOptions.AcceptMultiClient" + }, + { + "kind": "text", + "text": " only when the server must remain available after a debugger disconnects or when multiple debugger clients need to attach. " + } + ] + } + ], + "examples": [ + { + "code": "\n builder.AddGoApp(\"api\", \"../go-api\")\n .WithDelveServer(new DelveServerOptions\n {\n AcceptMultiClient = true,\n ContinueOnStart = true\n });\n ", + "language": "csharp", + "description": [ + { + "kind": "text", + "text": "Configure a Delve server that continues the application immediately and accepts multiple debugger clients:" + } + ] + } + ] + }, + "attributes": [ + { + "name": "Aspire.Hosting.AspireDtoAttribute" + } + ], + "sourceFile": "src/Aspire.Hosting.Go/DelveServerOptions.cs", + "sourceLines": "31-31", + "members": [ + { + "name": ".ctor", + "kind": "constructor", + "accessibility": "public", + "signature": "public DelveServerOptions.DelveServerOptions()", + "returnType": "void", + "sourceFile": "src/Aspire.Hosting.Go/DelveServerOptions.cs", + "sourceLines": "36-36" + }, + { + "name": "AcceptMultiClient", + "kind": "property", + "accessibility": "public", + "signature": "public bool DelveServerOptions.AcceptMultiClient", + "returnType": "bool", + "hasGet": true, + "hasSet": true, + "isInitOnly": true, + "docs": { + "summary": [ + { + "kind": "text", + "text": " Gets a value indicating whether Delve accepts multiple debugger clients. The default is " + }, + { + "kind": "langword", + "value": "false" + }, + { + "kind": "text", + "text": ". " + } + ] + }, + "sourceFile": "src/Aspire.Hosting.Go/DelveServerOptions.cs" + }, + { + "name": "ContinueOnStart", + "kind": "property", + "accessibility": "public", + "signature": "public bool DelveServerOptions.ContinueOnStart", + "returnType": "bool", + "hasGet": true, + "hasSet": true, + "isInitOnly": true, + "docs": { + "summary": [ + { + "kind": "text", + "text": " Gets a value indicating whether Delve continues the application immediately after startup. The default is " + }, + { + "kind": "langword", + "value": "false" + }, + { + "kind": "text", + "text": ". " + } + ] + }, + "sourceFile": "src/Aspire.Hosting.Go/DelveServerOptions.cs" + }, + { + "name": "Log", + "kind": "property", + "accessibility": "public", + "signature": "public bool DelveServerOptions.Log", + "returnType": "bool", + "hasGet": true, + "hasSet": true, + "isInitOnly": true, + "docs": { + "summary": [ + { + "kind": "text", + "text": " Gets a value indicating whether Delve server logging is enabled. The default is " + }, + { + "kind": "langword", + "value": "false" + }, + { + "kind": "text", + "text": ". " + } + ] + }, + "sourceFile": "src/Aspire.Hosting.Go/DelveServerOptions.cs" + }, + { + "name": "LogOutput", + "kind": "property", + "accessibility": "public", + "signature": "public string? DelveServerOptions.LogOutput", + "returnType": "string?", + "isReturnNullable": true, + "hasGet": true, + "hasSet": true, + "isInitOnly": true, + "docs": { + "summary": [ + { + "kind": "text", + "text": " Gets the Delve logging components enabled when " + }, + { + "kind": "cref", + "value": "P:Aspire.Hosting.Go.DelveServerOptions.Log" + }, + { + "kind": "text", + "text": " is " + }, + { + "kind": "langword", + "value": "true" + }, + { + "kind": "text", + "text": ". When " + }, + { + "kind": "langword", + "value": "null" + }, + { + "kind": "text", + "text": " or empty, Delve uses its default logging components. " + } + ] + }, + "sourceFile": "src/Aspire.Hosting.Go/DelveServerOptions.cs" + }, + { + "name": "OnlySameUser", + "kind": "property", + "accessibility": "public", + "signature": "public bool? DelveServerOptions.OnlySameUser", + "returnType": "bool?", + "isReturnNullable": true, + "hasGet": true, + "hasSet": true, + "isInitOnly": true, + "docs": { + "summary": [ + { + "kind": "text", + "text": " Gets a value indicating whether Delve allows connections only from the same operating system user. When " + }, + { + "kind": "langword", + "value": "null" + }, + { + "kind": "text", + "text": ", Delve's default same-user policy is used. " + } + ] + }, + "sourceFile": "src/Aspire.Hosting.Go/DelveServerOptions.cs" + }, + { + "name": "Port", + "kind": "property", + "accessibility": "public", + "signature": "public int DelveServerOptions.Port", + "returnType": "int", + "hasGet": true, + "hasSet": true, + "isInitOnly": true, + "docs": { + "summary": [ + { + "kind": "text", + "text": " Gets the TCP port on which Delve listens. The default is " + }, + { + "kind": "code", + "text": "2345" + }, + { + "kind": "text", + "text": ". " + } + ] + }, + "sourceFile": "src/Aspire.Hosting.Go/DelveServerOptions.cs" + } + ] + }, { "name": "GoAppResource", "fullName": "Aspire.Hosting.Go.GoAppResource", diff --git a/src/frontend/src/data/pkgs/Aspire.Hosting.JavaScript.13.4.6.json b/src/frontend/src/data/pkgs/Aspire.Hosting.JavaScript.13.5.0.json similarity index 98% rename from src/frontend/src/data/pkgs/Aspire.Hosting.JavaScript.13.4.6.json rename to src/frontend/src/data/pkgs/Aspire.Hosting.JavaScript.13.5.0.json index d53224799..c2101d935 100644 --- a/src/frontend/src/data/pkgs/Aspire.Hosting.JavaScript.13.4.6.json +++ b/src/frontend/src/data/pkgs/Aspire.Hosting.JavaScript.13.5.0.json @@ -1,10 +1,10 @@ { "package": { "name": "Aspire.Hosting.JavaScript", - "version": "13.4.6", + "version": "13.5.0", "targetFramework": "net10.0", "sourceRepository": "https://github.com/microsoft/aspire", - "sourceCommit": "87fe259e4fc244c599019a7b1304c85a1488f248" + "sourceCommit": "e076d8e427cb3afb528dbd605acd74c3aea69f94" }, "types": [ { @@ -31,7 +31,7 @@ ] }, "sourceFile": "src/Aspire.Hosting.JavaScript/JavaScriptHostingExtensions.cs", - "sourceLines": "29-29", + "sourceLines": "31-31", "members": [ { "name": "AddBunApp", @@ -180,7 +180,7 @@ ] }, "sourceFile": "src/Aspire.Hosting.JavaScript/JavaScriptHostingExtensions.cs", - "sourceLines": "381-626" + "sourceLines": "484-731" }, { "name": "AddJavaScriptApp", @@ -263,7 +263,7 @@ } }, "sourceFile": "src/Aspire.Hosting.JavaScript/JavaScriptHostingExtensions.cs", - "sourceLines": "691-699" + "sourceLines": "796-804" }, { "name": "AddNextJsApp", @@ -442,7 +442,7 @@ } }, "sourceFile": "src/Aspire.Hosting.JavaScript/JavaScriptHostingExtensions.cs", - "sourceLines": "1540-1609" + "sourceLines": "1668-1737" }, { "name": "AddNodeApp", @@ -567,7 +567,7 @@ ] }, "sourceFile": "src/Aspire.Hosting.JavaScript/JavaScriptHostingExtensions.cs", - "sourceLines": "123-286" + "sourceLines": "141-304" }, { "name": "AddViteApp", @@ -671,7 +671,7 @@ } }, "sourceFile": "src/Aspire.Hosting.JavaScript/JavaScriptHostingExtensions.cs", - "sourceLines": "1362-1501" + "sourceLines": "1467-1629" }, { "name": "DisableBuildValidation", @@ -747,7 +747,7 @@ } }, "sourceFile": "src/Aspire.Hosting.JavaScript/JavaScriptHostingExtensions.cs", - "sourceLines": "1627-1627" + "sourceLines": "1755-1755" }, { "name": "PublishAsNodeServer", @@ -883,7 +883,7 @@ } }, "sourceFile": "src/Aspire.Hosting.JavaScript/JavaScriptHostingExtensions.cs", - "sourceLines": "908-935" + "sourceLines": "1013-1040" }, { "name": "PublishAsPackageScript", @@ -1134,7 +1134,7 @@ } }, "sourceFile": "src/Aspire.Hosting.JavaScript/JavaScriptHostingExtensions.cs", - "sourceLines": "973-998" + "sourceLines": "1078-1103" }, { "name": "PublishAsStaticWebsite", @@ -1254,7 +1254,7 @@ } }, "sourceFile": "src/Aspire.Hosting.JavaScript/JavaScriptHostingExtensions.cs", - "sourceLines": "722-724" + "sourceLines": "827-829" }, { "name": "PublishAsStaticWebsite", @@ -1394,7 +1394,7 @@ } }, "sourceFile": "src/Aspire.Hosting.JavaScript/JavaScriptHostingExtensions.cs", - "sourceLines": "759-762" + "sourceLines": "864-867" }, { "name": "WithBrowserDebugger", @@ -1545,7 +1545,7 @@ ] }, "sourceFile": "src/Aspire.Hosting.JavaScript/JavaScriptHostingExtensions.cs", - "sourceLines": "2046-2089" + "sourceLines": "2256-2299" }, { "name": "WithBuildScript", @@ -1634,7 +1634,7 @@ } }, "sourceFile": "src/Aspire.Hosting.JavaScript/JavaScriptHostingExtensions.cs", - "sourceLines": "1932-1932" + "sourceLines": "2134-2134" }, { "name": "WithBun", @@ -1793,7 +1793,7 @@ ] }, "sourceFile": "src/Aspire.Hosting.JavaScript/JavaScriptHostingExtensions.cs", - "sourceLines": "1720-1764" + "sourceLines": "1847-1890" }, { "name": "WithNpm", @@ -1890,7 +1890,7 @@ } }, "sourceFile": "src/Aspire.Hosting.JavaScript/JavaScriptHostingExtensions.cs", - "sourceLines": "1670-1686" + "sourceLines": "1798-1813" }, { "name": "WithPnpm", @@ -1972,10 +1972,29 @@ "text": "The NodeAppResource." } ] - } + }, + "exceptions": [ + { + "type": "T:System.InvalidOperationException", + "description": [ + { + "kind": "text", + "text": "Thrown when " + }, + { + "kind": "code", + "text": "package.json" + }, + { + "kind": "text", + "text": " declares an invalid pnpm package manager version or integrity." + } + ] + } + ] }, "sourceFile": "src/Aspire.Hosting.JavaScript/JavaScriptHostingExtensions.cs", - "sourceLines": "1868-1909" + "sourceLines": "1994-2042" }, { "name": "WithRunScript", @@ -2064,7 +2083,7 @@ } }, "sourceFile": "src/Aspire.Hosting.JavaScript/JavaScriptHostingExtensions.cs", - "sourceLines": "1951-1951" + "sourceLines": "2153-2153" }, { "name": "WithViteConfig", @@ -2137,7 +2156,7 @@ ] }, "sourceFile": "src/Aspire.Hosting.JavaScript/JavaScriptHostingExtensions.cs", - "sourceLines": "1650-1655" + "sourceLines": "1778-1783" }, { "name": "WithYarn", @@ -2222,7 +2241,7 @@ } }, "sourceFile": "src/Aspire.Hosting.JavaScript/JavaScriptHostingExtensions.cs", - "sourceLines": "1789-1832" + "sourceLines": "1915-1957" } ] }, diff --git a/src/frontend/src/data/pkgs/Aspire.Hosting.Kafka.13.4.6.json b/src/frontend/src/data/pkgs/Aspire.Hosting.Kafka.13.5.0.json similarity index 98% rename from src/frontend/src/data/pkgs/Aspire.Hosting.Kafka.13.4.6.json rename to src/frontend/src/data/pkgs/Aspire.Hosting.Kafka.13.5.0.json index 550d2f0b1..0de504bef 100644 --- a/src/frontend/src/data/pkgs/Aspire.Hosting.Kafka.13.4.6.json +++ b/src/frontend/src/data/pkgs/Aspire.Hosting.Kafka.13.5.0.json @@ -1,10 +1,10 @@ { "package": { "name": "Aspire.Hosting.Kafka", - "version": "13.4.6", + "version": "13.5.0", "targetFramework": "net10.0", "sourceRepository": "https://github.com/microsoft/aspire", - "sourceCommit": "87fe259e4fc244c599019a7b1304c85a1488f248" + "sourceCommit": "e076d8e427cb3afb528dbd605acd74c3aea69f94" }, "types": [ { @@ -120,7 +120,7 @@ } }, "sourceFile": "src/Aspire.Hosting.Kafka/KafkaBuilderExtensions.cs", - "sourceLines": "36-80" + "sourceLines": "36-81" }, { "name": "WithDataBindMount", @@ -195,7 +195,7 @@ } }, "sourceFile": "src/Aspire.Hosting.Kafka/KafkaBuilderExtensions.cs", - "sourceLines": "198-203" + "sourceLines": "200-205" }, { "name": "WithDataVolume", @@ -272,7 +272,7 @@ } }, "sourceFile": "src/Aspire.Hosting.Kafka/KafkaBuilderExtensions.cs", - "sourceLines": "180-184" + "sourceLines": "182-186" }, { "name": "WithHostPort", @@ -336,7 +336,7 @@ } }, "sourceFile": "src/Aspire.Hosting.Kafka/KafkaBuilderExtensions.cs", - "sourceLines": "161-166" + "sourceLines": "163-168" }, { "name": "WithKafkaUI", @@ -430,7 +430,7 @@ } }, "sourceFile": "src/Aspire.Hosting.Kafka/KafkaBuilderExtensions.cs", - "sourceLines": "97-135" + "sourceLines": "98-137" } ] }, diff --git a/src/frontend/src/data/pkgs/Aspire.Hosting.Keycloak.13.4.6-preview.1.26319.6.json b/src/frontend/src/data/pkgs/Aspire.Hosting.Keycloak.13.5.0-preview.1.26417.7.json similarity index 98% rename from src/frontend/src/data/pkgs/Aspire.Hosting.Keycloak.13.4.6-preview.1.26319.6.json rename to src/frontend/src/data/pkgs/Aspire.Hosting.Keycloak.13.5.0-preview.1.26417.7.json index 1ad5dc776..3dc72d6b0 100644 --- a/src/frontend/src/data/pkgs/Aspire.Hosting.Keycloak.13.4.6-preview.1.26319.6.json +++ b/src/frontend/src/data/pkgs/Aspire.Hosting.Keycloak.13.5.0-preview.1.26417.7.json @@ -1,10 +1,10 @@ { "package": { "name": "Aspire.Hosting.Keycloak", - "version": "13.4.6-preview.1.26319.6", + "version": "13.5.0-preview.1.26417.7", "targetFramework": "net10.0", "sourceRepository": "https://github.com/microsoft/aspire", - "sourceCommit": "87fe259e4fc244c599019a7b1304c85a1488f248" + "sourceCommit": "e076d8e427cb3afb528dbd605acd74c3aea69f94" }, "types": [ { @@ -181,7 +181,7 @@ } }, "sourceFile": "src/Aspire.Hosting.Keycloak/KeycloakResourceBuilderExtensions.cs", - "sourceLines": "61-141" + "sourceLines": "61-142" }, { "name": "WithDataBindMount", @@ -259,7 +259,7 @@ } }, "sourceFile": "src/Aspire.Hosting.Keycloak/KeycloakResourceBuilderExtensions.cs", - "sourceLines": "189-192" + "sourceLines": "190-193" }, { "name": "WithDataVolume", @@ -339,7 +339,7 @@ } }, "sourceFile": "src/Aspire.Hosting.Keycloak/KeycloakResourceBuilderExtensions.cs", - "sourceLines": "164-166" + "sourceLines": "165-167" }, { "name": "WithDisabledFeatures", @@ -403,7 +403,7 @@ } }, "sourceFile": "src/Aspire.Hosting.Keycloak/KeycloakResourceBuilderExtensions.cs", - "sourceLines": "292-299" + "sourceLines": "293-300" }, { "name": "WithEnabledFeatures", @@ -467,7 +467,7 @@ } }, "sourceFile": "src/Aspire.Hosting.Keycloak/KeycloakResourceBuilderExtensions.cs", - "sourceLines": "270-277" + "sourceLines": "271-278" }, { "name": "WithOtlpExporter", @@ -569,7 +569,7 @@ } }, "sourceFile": "src/Aspire.Hosting.Keycloak/KeycloakResourceBuilderExtensions.cs", - "sourceLines": "316-322" + "sourceLines": "317-323" }, { "name": "WithOtlpExporter", @@ -681,7 +681,7 @@ } }, "sourceFile": "src/Aspire.Hosting.Keycloak/KeycloakResourceBuilderExtensions.cs", - "sourceLines": "355-361" + "sourceLines": "356-362" }, { "name": "WithRealmImport", @@ -772,7 +772,7 @@ } }, "sourceFile": "src/Aspire.Hosting.Keycloak/KeycloakResourceBuilderExtensions.cs", - "sourceLines": "218-223" + "sourceLines": "219-224" }, { "name": "WithRealmImport", @@ -853,7 +853,7 @@ } }, "sourceFile": "src/Aspire.Hosting.Keycloak/KeycloakResourceBuilderExtensions.cs", - "sourceLines": "247-255" + "sourceLines": "248-256" } ] }, diff --git a/src/frontend/src/data/pkgs/Aspire.Hosting.Kubernetes.13.4.6-preview.1.26319.6.json b/src/frontend/src/data/pkgs/Aspire.Hosting.Kubernetes.13.5.0-preview.1.26417.7.json similarity index 92% rename from src/frontend/src/data/pkgs/Aspire.Hosting.Kubernetes.13.4.6-preview.1.26319.6.json rename to src/frontend/src/data/pkgs/Aspire.Hosting.Kubernetes.13.5.0-preview.1.26417.7.json index 26a5b84bc..57970db15 100644 --- a/src/frontend/src/data/pkgs/Aspire.Hosting.Kubernetes.13.4.6-preview.1.26319.6.json +++ b/src/frontend/src/data/pkgs/Aspire.Hosting.Kubernetes.13.5.0-preview.1.26417.7.json @@ -1,10 +1,10 @@ { "package": { "name": "Aspire.Hosting.Kubernetes", - "version": "13.4.6-preview.1.26319.6", + "version": "13.5.0-preview.1.26417.7", "targetFramework": "net10.0", "sourceRepository": "https://github.com/microsoft/aspire", - "sourceCommit": "87fe259e4fc244c599019a7b1304c85a1488f248" + "sourceCommit": "e076d8e427cb3afb528dbd605acd74c3aea69f94" }, "types": [ { @@ -1026,7 +1026,7 @@ ] }, "sourceFile": "src/Aspire.Hosting.Kubernetes/KubernetesAspireDashboardResourceBuilderExtensions.cs", - "sourceLines": "12-12", + "sourceLines": "13-13", "members": [ { "name": "WithForwardedHeaders", @@ -1129,7 +1129,7 @@ } }, "sourceFile": "src/Aspire.Hosting.Kubernetes/KubernetesAspireDashboardResourceBuilderExtensions.cs", - "sourceLines": "131-133" + "sourceLines": "135-137" }, { "name": "WithOtlpServicePort", @@ -1252,7 +1252,7 @@ } }, "sourceFile": "src/Aspire.Hosting.Kubernetes/KubernetesAspireDashboardResourceBuilderExtensions.cs", - "sourceLines": "99-111" + "sourceLines": "103-115" }, { "name": "WithServicePort", @@ -1387,7 +1387,7 @@ } }, "sourceFile": "src/Aspire.Hosting.Kubernetes/KubernetesAspireDashboardResourceBuilderExtensions.cs", - "sourceLines": "68-74" + "sourceLines": "72-78" } ] }, @@ -1478,7 +1478,7 @@ } }, "sourceFile": "src/Aspire.Hosting.Kubernetes/KubernetesEnvironmentExtensions.cs", - "sourceLines": "86-110" + "sourceLines": "86-111" }, { "name": "AddNodePool", @@ -1577,7 +1577,7 @@ ] }, "sourceFile": "src/Aspire.Hosting.Kubernetes/KubernetesEnvironmentExtensions.cs", - "sourceLines": "246-257" + "sourceLines": "247-259" }, { "name": "WithDashboard", @@ -1648,7 +1648,7 @@ } }, "sourceFile": "src/Aspire.Hosting.Kubernetes/KubernetesEnvironmentExtensions.cs", - "sourceLines": "187-191" + "sourceLines": "188-192" }, { "name": "WithDashboard", @@ -1724,7 +1724,7 @@ } }, "sourceFile": "src/Aspire.Hosting.Kubernetes/KubernetesEnvironmentExtensions.cs", - "sourceLines": "208-215" + "sourceLines": "209-216" }, { "name": "WithHelm", @@ -1810,7 +1810,7 @@ ] }, "sourceFile": "src/Aspire.Hosting.Kubernetes/KubernetesEnvironmentExtensions.cs", - "sourceLines": "140-151" + "sourceLines": "141-152" }, { "name": "WithNodePool", @@ -1909,7 +1909,7 @@ ] }, "sourceFile": "src/Aspire.Hosting.Kubernetes/KubernetesEnvironmentExtensions.cs", - "sourceLines": "286-290" + "sourceLines": "288-292" }, { "name": "WithProperties", @@ -1983,7 +1983,7 @@ } }, "sourceFile": "src/Aspire.Hosting.Kubernetes/KubernetesEnvironmentExtensions.cs", - "sourceLines": "164-169" + "sourceLines": "165-170" } ] }, @@ -2088,7 +2088,7 @@ ] }, "sourceFile": "src/Aspire.Hosting.Kubernetes/KubernetesGatewayExtensions.cs", - "sourceLines": "38-49" + "sourceLines": "38-50" }, { "name": "WithGatewayAnnotation", @@ -2715,7 +2715,7 @@ } }, "sourceFile": "src/Aspire.Hosting.Kubernetes/KubernetesGatewayExtensions.cs", - "sourceLines": "108-123" + "sourceLines": "109-124" }, { "name": "WithRoute", @@ -2853,7 +2853,7 @@ } }, "sourceFile": "src/Aspire.Hosting.Kubernetes/KubernetesGatewayExtensions.cs", - "sourceLines": "146-162" + "sourceLines": "147-163" }, { "name": "WithTls", @@ -3058,7 +3058,7 @@ } }, "sourceFile": "src/Aspire.Hosting.Kubernetes/KubernetesGatewayExtensions.cs", - "sourceLines": "261-268" + "sourceLines": "262-269" } ] }, @@ -3235,7 +3235,7 @@ ] }, "sourceFile": "src/Aspire.Hosting.Kubernetes/KubernetesHelmChartExtensions.cs", - "sourceLines": "65-129" + "sourceLines": "65-130" }, { "name": "WithDestroy", @@ -3316,7 +3316,7 @@ ] }, "sourceFile": "src/Aspire.Hosting.Kubernetes/KubernetesHelmChartExtensions.cs", - "sourceLines": "223-226" + "sourceLines": "224-227" }, { "name": "WithForceConflicts", @@ -3513,7 +3513,7 @@ ] }, "sourceFile": "src/Aspire.Hosting.Kubernetes/KubernetesHelmChartExtensions.cs", - "sourceLines": "279-282" + "sourceLines": "280-283" }, { "name": "WithHelmValue", @@ -3602,7 +3602,7 @@ } }, "sourceFile": "src/Aspire.Hosting.Kubernetes/KubernetesHelmChartExtensions.cs", - "sourceLines": "146-154" + "sourceLines": "147-155" }, { "name": "WithNamespace", @@ -3660,7 +3660,7 @@ } }, "sourceFile": "src/Aspire.Hosting.Kubernetes/KubernetesHelmChartExtensions.cs", - "sourceLines": "169-175" + "sourceLines": "170-176" }, { "name": "WithReleaseName", @@ -3718,7 +3718,7 @@ } }, "sourceFile": "src/Aspire.Hosting.Kubernetes/KubernetesHelmChartExtensions.cs", - "sourceLines": "190-196" + "sourceLines": "191-197" } ] }, @@ -3842,7 +3842,7 @@ ] }, "sourceFile": "src/Aspire.Hosting.Kubernetes/KubernetesIngressExtensions.cs", - "sourceLines": "46-57" + "sourceLines": "46-58" }, { "name": "WithDefaultBackend", @@ -3905,7 +3905,7 @@ } }, "sourceFile": "src/Aspire.Hosting.Kubernetes/KubernetesIngressExtensions.cs", - "sourceLines": "307-311" + "sourceLines": "308-312" }, { "name": "WithHostname", @@ -4512,7 +4512,7 @@ ] }, "sourceFile": "src/Aspire.Hosting.Kubernetes/KubernetesIngressExtensions.cs", - "sourceLines": "123-138" + "sourceLines": "124-139" }, { "name": "WithPath", @@ -4656,7 +4656,7 @@ ] }, "sourceFile": "src/Aspire.Hosting.Kubernetes/KubernetesIngressExtensions.cs", - "sourceLines": "166-182" + "sourceLines": "167-183" }, { "name": "WithTls", @@ -4861,13 +4861,13 @@ } }, "sourceFile": "src/Aspire.Hosting.Kubernetes/KubernetesIngressExtensions.cs", - "sourceLines": "284-291" + "sourceLines": "285-292" } ] }, { - "name": "KubernetesServiceExtensions", - "fullName": "Aspire.Hosting.KubernetesServiceExtensions", + "name": "KubernetesPersistentVolumeExtensions", + "fullName": "Aspire.Hosting.KubernetesPersistentVolumeExtensions", "namespace": "Aspire.Hosting", "kind": "class", "accessibility": "public", @@ -4876,38 +4876,49 @@ "summary": [ { "kind": "text", - "text": " Provides extension methods for customizing Kubernetes service resources. " + "text": " Provides extension methods for configuring Kubernetes " + }, + { + "kind": "cref", + "value": "T:Aspire.Hosting.Kubernetes.KubernetesPersistentVolumeResource" + }, + { + "kind": "text", + "text": " resources and binding workloads to them. " } ] }, - "sourceFile": "src/Aspire.Hosting.Kubernetes/KubernetesServiceExtensions.cs", - "sourceLines": "12-12", + "attributes": [ + { + "name": "System.Diagnostics.CodeAnalysis.ExperimentalAttribute", + "constructorArguments": [ + "ASPIRECOMPUTE002" + ], + "arguments": { + "UrlFormat": "https://aka.ms/aspire/diagnostics/{0}" + } + } + ], + "sourceFile": "src/Aspire.Hosting.Kubernetes/KubernetesPersistentVolumeExtensions.cs", + "sourceLines": "17-17", "members": [ { - "name": "PublishAsKubernetesService", + "name": "AddPersistentVolume", "kind": "method", "accessibility": "public", - "signature": "public static IResourceBuilder KubernetesServiceExtensions.PublishAsKubernetesService(this IResourceBuilder builder, Action configure)", - "returnType": "Aspire.Hosting.ApplicationModel.IResourceBuilder", + "signature": "public static IResourceBuilder KubernetesPersistentVolumeExtensions.AddPersistentVolume(this IResourceBuilder builder, string name)", + "returnType": "Aspire.Hosting.ApplicationModel.IResourceBuilder", "isStatic": true, "isExtension": true, "parameters": [ { "name": "builder", - "type": "Aspire.Hosting.ApplicationModel.IResourceBuilder", + "type": "Aspire.Hosting.ApplicationModel.IResourceBuilder", "modifier": "this" }, { - "name": "configure", - "type": "System.Action" - } - ], - "genericParameters": [ - { - "name": "T", - "constraints": [ - "Aspire.Hosting.ApplicationModel.IComputeResource" - ] + "name": "name", + "type": "string" } ], "attributes": [ @@ -4919,193 +4930,1172 @@ "summary": [ { "kind": "text", - "text": " Publishes the specified resource as a Kubernetes service. " - } - ], - "remarks": [ + "text": " Adds a Kubernetes PersistentVolumeClaim resource to the application model as a child of the specified Kubernetes environment. The resource generates a " + }, { - "kind": "text", - "text": " This method checks if the application is in publish mode. If it is, it adds a customization annotation that will be applied by the infrastructure when generating the Kubernetes service. " + "kind": "code", + "text": "v1.PersistentVolumeClaim" }, { - "kind": "codeblock", - "text": "\n builder.AddContainer(\"redis\", \"redis:alpine\").PublishAsKubernetesService((service) =>\n {\n service.Name = \"redis\";\n });\n ", - "language": "csharp" + "kind": "text", + "text": " manifest in the Helm chart output at publish time. " } ], "returns": [ { "kind": "text", - "text": "The updated resource builder." + "text": "A builder for the new " + }, + { + "kind": "cref", + "value": "T:Aspire.Hosting.Kubernetes.KubernetesPersistentVolumeResource" + }, + { + "kind": "text", + "text": "." } ], "parameters": { "builder": [ { "kind": "text", - "text": "The resource builder." + "text": "The Kubernetes environment resource builder." } ], - "configure": [ + "name": [ { "kind": "text", - "text": "The configuration action for the Kubernetes service." - } - ] - }, - "typeParameters": { - "T": [ + "text": "The name of the persistent volume resource. Used as the generated PVC's " + }, + { + "kind": "code", + "text": "metadata.name" + }, { "kind": "text", - "text": "The type of the resource." + "text": " after lower-casing. To bind a workload using the name-match overload of " + }, + { + "kind": "cref", + "value": "M:Aspire.Hosting.KubernetesPersistentVolumeExtensions.WithPersistentVolume``1(Aspire.Hosting.ApplicationModel.IResourceBuilder{``0},Aspire.Hosting.ApplicationModel.IResourceBuilder{Aspire.Hosting.Kubernetes.KubernetesPersistentVolumeResource})" + }, + { + "kind": "text", + "text": ", add a " + }, + { + "kind": "code", + "text": "WithVolume(\"name\", \"/path\")" + }, + { + "kind": "text", + "text": " on the workload using the same " + }, + { + "kind": "paramref", + "value": "name" + }, + { + "kind": "text", + "text": "." } ] - } - }, - "sourceFile": "src/Aspire.Hosting.Kubernetes/KubernetesServiceExtensions.cs", - "sourceLines": "37-47" - } - ] - }, - { - "name": "CertManagerIssuerResource", - "fullName": "Aspire.Hosting.Kubernetes.CertManagerIssuerResource", - "namespace": "Aspire.Hosting.Kubernetes", - "kind": "class", - "accessibility": "public", - "isSealed": true, - "baseType": "Aspire.Hosting.ApplicationModel.Resource", - "interfaces": [ - "Aspire.Hosting.ApplicationModel.IResource", - "Aspire.Hosting.ApplicationModel.IResourceWithParent", - "Aspire.Hosting.ApplicationModel.IResourceWithParent" - ], - "docs": { - "summary": [ - { - "kind": "text", - "text": " Represents a cert-manager " - }, - { - "kind": "code", - "text": "ClusterIssuer" - }, - { - "kind": "text", - "text": " resource in the Aspire application model. " - } - ], - "remarks": [ - { - "kind": "para", - "children": [ - { - "kind": "text", - "text": " At deploy time, an issuer is rendered to a " - }, - { - "kind": "code", - "text": "cert-manager.io/v1 ClusterIssuer" - }, - { - "kind": "text", - "text": " YAML document and applied to the cluster with " - }, - { - "kind": "code", - "text": "kubectl apply" - }, - { - "kind": "text", - "text": " after the cert-manager Helm chart is installed and its admission webhook is reachable. The manifest is not baked into the helm chart output; it is applied directly so the chart and its issuers can be managed and torn down independently. " - } - ] - }, - { - "kind": "para", - "children": [ + }, + "examples": [ { - "kind": "text", - "text": " Cluster-scoped issuers can be referenced by gateways and ingresses across all namespaces, which matches the typical multi-namespace deployment pattern for Aspire applications. " + "code": "\n var k8s = builder.AddKubernetesEnvironment(\"k8s\");\n var data = k8s.AddPersistentVolume(\"data\")\n .WithStorageClass(\"managed-csi\")\n .WithCapacity(\"20Gi\");\n ", + "language": "csharp" } ] }, - { - "kind": "para", - "children": [ + "sourceFile": "src/Aspire.Hosting.Kubernetes/KubernetesPersistentVolumeExtensions.cs", + "sourceLines": "47-60" + }, + { + "name": "WithAccessMode", + "kind": "method", + "accessibility": "public", + "signature": "public static IResourceBuilder KubernetesPersistentVolumeExtensions.WithAccessMode(this IResourceBuilder builder, PersistentVolumeAccessMode accessMode)", + "returnType": "Aspire.Hosting.ApplicationModel.IResourceBuilder", + "isStatic": true, + "isExtension": true, + "parameters": [ + { + "name": "builder", + "type": "Aspire.Hosting.ApplicationModel.IResourceBuilder", + "modifier": "this" + }, + { + "name": "accessMode", + "type": "Aspire.Hosting.Kubernetes.PersistentVolumeAccessMode" + } + ], + "attributes": [ + { + "name": "Aspire.Hosting.AspireExportAttribute" + } + ], + "docs": { + "summary": [ { "kind": "text", - "text": " Namespace-scoped " + "text": " Adds an access mode to the PVC's " }, { "kind": "code", - "text": "Issuer" + "text": "spec.accessModes" }, { "kind": "text", - "text": " resources are intentionally not modeled in the initial release. " + "text": ". Call multiple times to declare more than one mode. When unset, the environment's " }, { "kind": "cref", - "value": "M:Aspire.Hosting.CertManagerExtensions.AddIssuer(Aspire.Hosting.ApplicationModel.IResourceBuilder{Aspire.Hosting.Kubernetes.CertManagerResource},System.String)" + "value": "P:Aspire.Hosting.Kubernetes.KubernetesEnvironmentResource.DefaultStorageReadWritePolicy" }, { "kind": "text", - "text": " always produces a cluster-scoped " - }, - { - "kind": "code", - "text": "ClusterIssuer" - }, + "text": " is used. " + } + ], + "returns": [ { "kind": "text", - "text": ". " + "text": "The same builder for chaining." } - ] - } - ] - }, - "attributes": [ - { - "name": "Aspire.Hosting.AspireExportAttribute" - } - ], - "sourceFile": "src/Aspire.Hosting.Kubernetes/CertManagerIssuerResource.cs", - "sourceLines": "31-31", - "members": [ + ], + "parameters": { + "accessMode": [ + { + "kind": "text", + "text": "The access mode to add." + } + ], + "builder": [ + { + "kind": "text", + "text": "The persistent volume resource builder." + } + ] + } + }, + "sourceFile": "src/Aspire.Hosting.Kubernetes/KubernetesPersistentVolumeExtensions.cs", + "sourceLines": "162-169" + }, { - "name": ".ctor", - "kind": "constructor", + "name": "WithCapacity", + "kind": "method", "accessibility": "public", - "signature": "public CertManagerIssuerResource.CertManagerIssuerResource(string name, CertManagerResource parent)", - "returnType": "void", + "signature": "public static IResourceBuilder KubernetesPersistentVolumeExtensions.WithCapacity(this IResourceBuilder builder, string capacity)", + "returnType": "Aspire.Hosting.ApplicationModel.IResourceBuilder", + "isStatic": true, + "isExtension": true, "parameters": [ { - "name": "name", - "type": "string" + "name": "builder", + "type": "Aspire.Hosting.ApplicationModel.IResourceBuilder", + "modifier": "this" }, { - "name": "parent", - "type": "Aspire.Hosting.Kubernetes.CertManagerResource" + "name": "capacity", + "type": "string" + } + ], + "attributes": [ + { + "name": "Aspire.Hosting.AspireExportAttribute" } ], "docs": { "summary": [ { "kind": "text", - "text": " Initializes a new instance of " + "text": " Sets the requested storage capacity on the PVC's " }, { - "kind": "cref", - "value": "T:Aspire.Hosting.Kubernetes.CertManagerIssuerResource" + "kind": "code", + "text": "spec.resources.requests.storage" }, { "kind": "text", - "text": ". " + "text": " field. " + } + ], + "returns": [ + { + "kind": "text", + "text": "The same builder for chaining." } ], "parameters": { - "name": [ + "builder": [ + { + "kind": "text", + "text": "The persistent volume resource builder." + } + ], + "capacity": [ + { + "kind": "text", + "text": "A Kubernetes quantity string (e.g. " + }, + { + "kind": "code", + "text": "\"10Gi\"" + }, + { + "kind": "text", + "text": ", " + }, + { + "kind": "code", + "text": "\"500Mi\"" + }, + { + "kind": "text", + "text": ")." + } + ] + } + }, + "sourceFile": "src/Aspire.Hosting.Kubernetes/KubernetesPersistentVolumeExtensions.cs" + }, + { + "name": "WithCapacity", + "kind": "method", + "accessibility": "public", + "signature": "public static IResourceBuilder KubernetesPersistentVolumeExtensions.WithCapacity(this IResourceBuilder builder, IResourceBuilder capacity)", + "returnType": "Aspire.Hosting.ApplicationModel.IResourceBuilder", + "isStatic": true, + "isExtension": true, + "parameters": [ + { + "name": "builder", + "type": "Aspire.Hosting.ApplicationModel.IResourceBuilder", + "modifier": "this" + }, + { + "name": "capacity", + "type": "Aspire.Hosting.ApplicationModel.IResourceBuilder" + } + ], + "attributes": [ + { + "name": "Aspire.Hosting.AspireExportAttribute", + "constructorArguments": [ + "withCapacityParam" + ] + } + ], + "docs": { + "summary": [ + { + "kind": "text", + "text": " Sets the requested storage capacity using a parameter resolved at deploy time. " + } + ], + "returns": [ + { + "kind": "text", + "text": "The same builder for chaining." + } + ], + "parameters": { + "builder": [ + { + "kind": "text", + "text": "The persistent volume resource builder." + } + ], + "capacity": [ + { + "kind": "text", + "text": "A parameter resource builder for the capacity quantity string." + } + ] + } + }, + "sourceFile": "src/Aspire.Hosting.Kubernetes/KubernetesPersistentVolumeExtensions.cs" + }, + { + "name": "WithPersistentVolume", + "kind": "method", + "accessibility": "public", + "signature": "public static IResourceBuilder KubernetesPersistentVolumeExtensions.WithPersistentVolume(this IResourceBuilder builder, IResourceBuilder volume)", + "returnType": "Aspire.Hosting.ApplicationModel.IResourceBuilder", + "isStatic": true, + "isExtension": true, + "parameters": [ + { + "name": "builder", + "type": "Aspire.Hosting.ApplicationModel.IResourceBuilder", + "modifier": "this" + }, + { + "name": "volume", + "type": "Aspire.Hosting.ApplicationModel.IResourceBuilder" + } + ], + "genericParameters": [ + { + "name": "T", + "constraints": [ + "Aspire.Hosting.ApplicationModel.IComputeResource" + ] + } + ], + "attributes": [ + { + "name": "Aspire.Hosting.AspireExportAttribute", + "constructorArguments": [ + "withKubernetesPersistentVolume" + ] + } + ], + "docs": { + "summary": [ + { + "kind": "text", + "text": " Binds a workload to a Kubernetes " + }, + { + "kind": "cref", + "value": "T:Aspire.Hosting.Kubernetes.KubernetesPersistentVolumeResource" + }, + { + "kind": "text", + "text": " using name matching. The workload must already declare a volume with a matching " + }, + { + "kind": "code", + "text": "source" + }, + { + "kind": "text", + "text": " name (typically via " + }, + { + "kind": "code", + "text": "WithVolume(\"name\", \"/path\")" + }, + { + "kind": "text", + "text": " or an integration helper such as Postgres' " + }, + { + "kind": "code", + "text": "WithDataVolume()" + }, + { + "kind": "text", + "text": "). The publisher rewrites that volume's pod-spec entry to reference the generated PVC and promotes the workload to a " + }, + { + "kind": "code", + "text": "StatefulSet" + }, + { + "kind": "text", + "text": ". " + } + ], + "remarks": [ + { + "kind": "text", + "text": " To bind a workload that does not already have a matching named mount (for example a " + }, + { + "kind": "code", + "text": "ProjectResource" + }, + { + "kind": "text", + "text": "), use the overload that accepts a " + }, + { + "kind": "code", + "text": "mountPath" + }, + { + "kind": "text", + "text": " instead. The generated pod uses an Aspire-managed " + }, + { + "kind": "code", + "text": "fsGroup" + }, + { + "kind": "text", + "text": " of " + }, + { + "kind": "code", + "text": "2000" + }, + { + "kind": "text", + "text": " with an " + }, + { + "kind": "code", + "text": "OnRootMismatch" + }, + { + "kind": "text", + "text": " change policy so non-root containers can access supported volumes without matching the image's primary group. Use " + }, + { + "kind": "cref", + "value": "M:Aspire.Hosting.KubernetesServiceExtensions.PublishAsKubernetesService``1(Aspire.Hosting.ApplicationModel.IResourceBuilder{``0},System.Action{Aspire.Hosting.Kubernetes.KubernetesResource})" + }, + { + "kind": "text", + "text": " to customize the pod security context when a different group or policy is required. " + } + ], + "returns": [ + { + "kind": "text", + "text": "The same builder for chaining." + } + ], + "parameters": { + "builder": [ + { + "kind": "text", + "text": "The workload resource builder." + } + ], + "volume": [ + { + "kind": "text", + "text": "The persistent volume resource to bind to." + } + ] + }, + "typeParameters": { + "T": [ + { + "kind": "text", + "text": "A compute resource (container, project, executable)." + } + ] + }, + "examples": [ + { + "code": "\n var pgData = k8s.AddPersistentVolume(\"pg-data\")\n .WithStorageClass(\"managed-csi\")\n .WithCapacity(\"20Gi\");\n \n var pg = builder.AddPostgres(\"pg\")\n .WithDataVolume(\"pg-data\") // ContainerMountAnnotation source = \"pg-data\"\n .WithPersistentVolume(pgData); // matches by name \"pg-data\"\n ", + "language": "csharp" + } + ] + }, + "sourceFile": "src/Aspire.Hosting.Kubernetes/KubernetesPersistentVolumeExtensions.cs", + "sourceLines": "263-267" + }, + { + "name": "WithPersistentVolume", + "kind": "method", + "accessibility": "public", + "signature": "public static IResourceBuilder KubernetesPersistentVolumeExtensions.WithPersistentVolume(this IResourceBuilder builder, IResourceBuilder volume, string mountPath, bool isReadOnly = false)", + "returnType": "Aspire.Hosting.ApplicationModel.IResourceBuilder", + "isStatic": true, + "isExtension": true, + "parameters": [ + { + "name": "builder", + "type": "Aspire.Hosting.ApplicationModel.IResourceBuilder", + "modifier": "this" + }, + { + "name": "volume", + "type": "Aspire.Hosting.ApplicationModel.IResourceBuilder" + }, + { + "name": "mountPath", + "type": "string" + }, + { + "name": "isReadOnly", + "type": "bool", + "isOptional": true, + "defaultValue": "False" + } + ], + "genericParameters": [ + { + "name": "T", + "constraints": [ + "Aspire.Hosting.ApplicationModel.IComputeResource" + ] + } + ], + "attributes": [ + { + "name": "Aspire.Hosting.AspireExportAttribute", + "constructorArguments": [ + "withKubernetesPersistentVolumeMount" + ] + } + ], + "docs": { + "summary": [ + { + "kind": "text", + "text": " Binds a workload to a Kubernetes " + }, + { + "kind": "cref", + "value": "T:Aspire.Hosting.Kubernetes.KubernetesPersistentVolumeResource" + }, + { + "kind": "text", + "text": " and mounts it at the specified path inside the workload's container. Unlike the name-match overload this one creates the underlying mount itself, so it works for workloads that don't already declare a named volume — including " + }, + { + "kind": "cref", + "value": "T:Aspire.Hosting.ApplicationModel.ProjectResource" + }, + { + "kind": "text", + "text": ". " + } + ], + "remarks": [ + { + "kind": "text", + "text": " The generated pod uses an Aspire-managed " + }, + { + "kind": "code", + "text": "fsGroup" + }, + { + "kind": "text", + "text": " of " + }, + { + "kind": "code", + "text": "2000" + }, + { + "kind": "text", + "text": " with an " + }, + { + "kind": "code", + "text": "OnRootMismatch" + }, + { + "kind": "text", + "text": " change policy so non-root containers can access supported volumes without matching the image's primary group. Use " + }, + { + "kind": "cref", + "value": "M:Aspire.Hosting.KubernetesServiceExtensions.PublishAsKubernetesService``1(Aspire.Hosting.ApplicationModel.IResourceBuilder{``0},System.Action{Aspire.Hosting.Kubernetes.KubernetesResource})" + }, + { + "kind": "text", + "text": " to customize the pod security context when a different group or policy is required. " + } + ], + "returns": [ + { + "kind": "text", + "text": "The same builder for chaining." + } + ], + "parameters": { + "builder": [ + { + "kind": "text", + "text": "The workload resource builder." + } + ], + "isReadOnly": [ + { + "kind": "text", + "text": "When " + }, + { + "kind": "langword", + "value": "true" + }, + { + "kind": "text", + "text": ", mounts the volume read-only." + } + ], + "mountPath": [ + { + "kind": "text", + "text": "The path inside the container where the volume will be mounted (e.g. " + }, + { + "kind": "code", + "text": "\"/var/lib/postgresql/data\"" + }, + { + "kind": "text", + "text": ")." + } + ], + "volume": [ + { + "kind": "text", + "text": "The persistent volume resource to bind to." + } + ] + }, + "typeParameters": { + "T": [ + { + "kind": "text", + "text": "A compute resource (container, project, executable)." + } + ] + }, + "examples": [ + { + "code": "\n var media = k8s.AddPersistentVolume(\"media\")\n .WithStorageClass(\"azurefile-csi\")\n .WithCapacity(\"100Gi\")\n .WithAccessMode(PersistentVolumeAccessMode.ReadWriteMany);\n \n builder.AddProject(\"api\")\n .WithPersistentVolume(media, \"/srv/media\");\n ", + "language": "csharp" + } + ] + }, + "sourceFile": "src/Aspire.Hosting.Kubernetes/KubernetesPersistentVolumeExtensions.cs", + "sourceLines": "312-318" + }, + { + "name": "WithStorageClass", + "kind": "method", + "accessibility": "public", + "signature": "public static IResourceBuilder KubernetesPersistentVolumeExtensions.WithStorageClass(this IResourceBuilder builder, string storageClassName)", + "returnType": "Aspire.Hosting.ApplicationModel.IResourceBuilder", + "isStatic": true, + "isExtension": true, + "parameters": [ + { + "name": "builder", + "type": "Aspire.Hosting.ApplicationModel.IResourceBuilder", + "modifier": "this" + }, + { + "name": "storageClassName", + "type": "string" + } + ], + "attributes": [ + { + "name": "Aspire.Hosting.AspireExportAttribute" + } + ], + "docs": { + "summary": [ + { + "kind": "text", + "text": " Sets the Kubernetes storage class name on the PVC's " + }, + { + "kind": "code", + "text": "spec.storageClassName" + }, + { + "kind": "text", + "text": ". When unset, the cluster's default storage class is used. " + } + ], + "returns": [ + { + "kind": "text", + "text": "The same builder for chaining." + } + ], + "parameters": { + "builder": [ + { + "kind": "text", + "text": "The persistent volume resource builder." + } + ], + "storageClassName": [ + { + "kind": "text", + "text": "The storage class name (e.g. " + }, + { + "kind": "code", + "text": "\"managed-csi\"" + }, + { + "kind": "text", + "text": ", " + }, + { + "kind": "code", + "text": "\"gp3\"" + }, + { + "kind": "text", + "text": ")." + } + ] + } + }, + "sourceFile": "src/Aspire.Hosting.Kubernetes/KubernetesPersistentVolumeExtensions.cs" + }, + { + "name": "WithStorageClass", + "kind": "method", + "accessibility": "public", + "signature": "public static IResourceBuilder KubernetesPersistentVolumeExtensions.WithStorageClass(this IResourceBuilder builder, IResourceBuilder storageClassName)", + "returnType": "Aspire.Hosting.ApplicationModel.IResourceBuilder", + "isStatic": true, + "isExtension": true, + "parameters": [ + { + "name": "builder", + "type": "Aspire.Hosting.ApplicationModel.IResourceBuilder", + "modifier": "this" + }, + { + "name": "storageClassName", + "type": "Aspire.Hosting.ApplicationModel.IResourceBuilder" + } + ], + "attributes": [ + { + "name": "Aspire.Hosting.AspireExportAttribute", + "constructorArguments": [ + "withStorageClassParam" + ] + } + ], + "docs": { + "summary": [ + { + "kind": "text", + "text": " Sets the Kubernetes storage class name using a parameter resolved at deploy time. " + } + ], + "returns": [ + { + "kind": "text", + "text": "The same builder for chaining." + } + ], + "parameters": { + "builder": [ + { + "kind": "text", + "text": "The persistent volume resource builder." + } + ], + "storageClassName": [ + { + "kind": "text", + "text": "A parameter resource builder for the storage class name." + } + ] + } + }, + "sourceFile": "src/Aspire.Hosting.Kubernetes/KubernetesPersistentVolumeExtensions.cs" + }, + { + "name": "WithVolumeAnnotation", + "kind": "method", + "accessibility": "public", + "signature": "public static IResourceBuilder KubernetesPersistentVolumeExtensions.WithVolumeAnnotation(this IResourceBuilder builder, string key, string value)", + "returnType": "Aspire.Hosting.ApplicationModel.IResourceBuilder", + "isStatic": true, + "isExtension": true, + "parameters": [ + { + "name": "builder", + "type": "Aspire.Hosting.ApplicationModel.IResourceBuilder", + "modifier": "this" + }, + { + "name": "key", + "type": "string" + }, + { + "name": "value", + "type": "string" + } + ], + "attributes": [ + { + "name": "Aspire.Hosting.AspireExportAttribute" + } + ], + "docs": { + "summary": [ + { + "kind": "text", + "text": " Adds a Kubernetes metadata annotation to the generated PVC. These flush to " + }, + { + "kind": "code", + "text": "metadata.annotations" + }, + { + "kind": "text", + "text": " on the rendered Kubernetes resource — not Aspire " + }, + { + "kind": "cref", + "value": "T:Aspire.Hosting.ApplicationModel.IResourceAnnotation" + }, + { + "kind": "text", + "text": " instances. Common uses: CSI driver hints, dynamic provisioner parameters, external-secrets selectors, or backup tooling tags. " + } + ], + "returns": [ + { + "kind": "text", + "text": "The same builder for chaining." + } + ], + "parameters": { + "builder": [ + { + "kind": "text", + "text": "The persistent volume resource builder." + } + ], + "key": [ + { + "kind": "text", + "text": "The annotation key (e.g. " + }, + { + "kind": "code", + "text": "\"volume.beta.kubernetes.io/storage-provisioner\"" + }, + { + "kind": "text", + "text": ")." + } + ], + "value": [ + { + "kind": "text", + "text": "The annotation value." + } + ] + } + }, + "sourceFile": "src/Aspire.Hosting.Kubernetes/KubernetesPersistentVolumeExtensions.cs" + }, + { + "name": "WithVolumeAnnotation", + "kind": "method", + "accessibility": "public", + "signature": "public static IResourceBuilder KubernetesPersistentVolumeExtensions.WithVolumeAnnotation(this IResourceBuilder builder, string key, IResourceBuilder value)", + "returnType": "Aspire.Hosting.ApplicationModel.IResourceBuilder", + "isStatic": true, + "isExtension": true, + "parameters": [ + { + "name": "builder", + "type": "Aspire.Hosting.ApplicationModel.IResourceBuilder", + "modifier": "this" + }, + { + "name": "key", + "type": "string" + }, + { + "name": "value", + "type": "Aspire.Hosting.ApplicationModel.IResourceBuilder" + } + ], + "attributes": [ + { + "name": "Aspire.Hosting.AspireExportAttribute", + "constructorArguments": [ + "withVolumeAnnotationParam" + ] + } + ], + "docs": { + "summary": [ + { + "kind": "text", + "text": " Adds a Kubernetes metadata annotation with a parameter value resolved at deploy time. " + } + ], + "returns": [ + { + "kind": "text", + "text": "The same builder for chaining." + } + ], + "parameters": { + "builder": [ + { + "kind": "text", + "text": "The persistent volume resource builder." + } + ], + "key": [ + { + "kind": "text", + "text": "The annotation key." + } + ], + "value": [ + { + "kind": "text", + "text": "A parameter resource builder for the annotation value." + } + ] + } + }, + "sourceFile": "src/Aspire.Hosting.Kubernetes/KubernetesPersistentVolumeExtensions.cs" + } + ] + }, + { + "name": "KubernetesServiceExtensions", + "fullName": "Aspire.Hosting.KubernetesServiceExtensions", + "namespace": "Aspire.Hosting", + "kind": "class", + "accessibility": "public", + "isStatic": true, + "docs": { + "summary": [ + { + "kind": "text", + "text": " Provides extension methods for customizing Kubernetes service resources. " + } + ] + }, + "sourceFile": "src/Aspire.Hosting.Kubernetes/KubernetesServiceExtensions.cs", + "sourceLines": "12-12", + "members": [ + { + "name": "PublishAsKubernetesService", + "kind": "method", + "accessibility": "public", + "signature": "public static IResourceBuilder KubernetesServiceExtensions.PublishAsKubernetesService(this IResourceBuilder builder, Action configure)", + "returnType": "Aspire.Hosting.ApplicationModel.IResourceBuilder", + "isStatic": true, + "isExtension": true, + "parameters": [ + { + "name": "builder", + "type": "Aspire.Hosting.ApplicationModel.IResourceBuilder", + "modifier": "this" + }, + { + "name": "configure", + "type": "System.Action" + } + ], + "genericParameters": [ + { + "name": "T", + "constraints": [ + "Aspire.Hosting.ApplicationModel.IComputeResource" + ] + } + ], + "attributes": [ + { + "name": "Aspire.Hosting.AspireExportAttribute" + } + ], + "docs": { + "summary": [ + { + "kind": "text", + "text": " Publishes the specified resource as a Kubernetes service. " + } + ], + "remarks": [ + { + "kind": "text", + "text": " This method checks if the application is in publish mode. If it is, it adds a customization annotation that will be applied by the infrastructure when generating the Kubernetes service. " + }, + { + "kind": "codeblock", + "text": "\n builder.AddContainer(\"redis\", \"redis:alpine\").PublishAsKubernetesService((service) =>\n {\n service.Name = \"redis\";\n });\n ", + "language": "csharp" + } + ], + "returns": [ + { + "kind": "text", + "text": "The updated resource builder." + } + ], + "parameters": { + "builder": [ + { + "kind": "text", + "text": "The resource builder." + } + ], + "configure": [ + { + "kind": "text", + "text": "The configuration action for the Kubernetes service." + } + ] + }, + "typeParameters": { + "T": [ + { + "kind": "text", + "text": "The type of the resource." + } + ] + } + }, + "sourceFile": "src/Aspire.Hosting.Kubernetes/KubernetesServiceExtensions.cs", + "sourceLines": "37-47" + } + ] + }, + { + "name": "CertManagerIssuerResource", + "fullName": "Aspire.Hosting.Kubernetes.CertManagerIssuerResource", + "namespace": "Aspire.Hosting.Kubernetes", + "kind": "class", + "accessibility": "public", + "isSealed": true, + "baseType": "Aspire.Hosting.ApplicationModel.Resource", + "interfaces": [ + "Aspire.Hosting.ApplicationModel.IResource", + "Aspire.Hosting.ApplicationModel.IResourceWithParent", + "Aspire.Hosting.ApplicationModel.IResourceWithParent" + ], + "docs": { + "summary": [ + { + "kind": "text", + "text": " Represents a cert-manager " + }, + { + "kind": "code", + "text": "ClusterIssuer" + }, + { + "kind": "text", + "text": " resource in the Aspire application model. " + } + ], + "remarks": [ + { + "kind": "para", + "children": [ + { + "kind": "text", + "text": " At deploy time, an issuer is rendered to a " + }, + { + "kind": "code", + "text": "cert-manager.io/v1 ClusterIssuer" + }, + { + "kind": "text", + "text": " YAML document and applied to the cluster with " + }, + { + "kind": "code", + "text": "kubectl apply" + }, + { + "kind": "text", + "text": " after the cert-manager Helm chart is installed and its admission webhook is reachable. The manifest is not baked into the helm chart output; it is applied directly so the chart and its issuers can be managed and torn down independently. " + } + ] + }, + { + "kind": "para", + "children": [ + { + "kind": "text", + "text": " Cluster-scoped issuers can be referenced by gateways and ingresses across all namespaces, which matches the typical multi-namespace deployment pattern for Aspire applications. " + } + ] + }, + { + "kind": "para", + "children": [ + { + "kind": "text", + "text": " Namespace-scoped " + }, + { + "kind": "code", + "text": "Issuer" + }, + { + "kind": "text", + "text": " resources are intentionally not modeled in the initial release. " + }, + { + "kind": "cref", + "value": "M:Aspire.Hosting.CertManagerExtensions.AddIssuer(Aspire.Hosting.ApplicationModel.IResourceBuilder{Aspire.Hosting.Kubernetes.CertManagerResource},System.String)" + }, + { + "kind": "text", + "text": " always produces a cluster-scoped " + }, + { + "kind": "code", + "text": "ClusterIssuer" + }, + { + "kind": "text", + "text": ". " + } + ] + } + ] + }, + "attributes": [ + { + "name": "Aspire.Hosting.AspireExportAttribute" + } + ], + "sourceFile": "src/Aspire.Hosting.Kubernetes/CertManagerIssuerResource.cs", + "sourceLines": "31-31", + "members": [ + { + "name": ".ctor", + "kind": "constructor", + "accessibility": "public", + "signature": "public CertManagerIssuerResource.CertManagerIssuerResource(string name, CertManagerResource parent)", + "returnType": "void", + "parameters": [ + { + "name": "name", + "type": "string" + }, + { + "name": "parent", + "type": "Aspire.Hosting.Kubernetes.CertManagerResource" + } + ], + "docs": { + "summary": [ + { + "kind": "text", + "text": " Initializes a new instance of " + }, + { + "kind": "cref", + "value": "T:Aspire.Hosting.Kubernetes.CertManagerIssuerResource" + }, + { + "kind": "text", + "text": ". " + } + ], + "parameters": { + "name": [ { "kind": "text", "text": "The Aspire resource name. Also used as the " @@ -6852,7 +7842,7 @@ } ], "sourceFile": "src/Aspire.Hosting.Kubernetes/KubernetesEnvironmentResource.cs", - "sourceLines": "31-31", + "sourceLines": "33-33", "members": [ { "name": ".ctor", @@ -6891,7 +7881,7 @@ } }, "sourceFile": "src/Aspire.Hosting.Kubernetes/KubernetesEnvironmentResource.cs", - "sourceLines": "42-374" + "sourceLines": "44-391" }, { "name": "GetHostAddressExpression", @@ -6969,7 +7959,7 @@ } }, "sourceFile": "src/Aspire.Hosting.Kubernetes/KubernetesEnvironmentResource.cs", - "sourceLines": "380-382" + "sourceLines": "397-399" }, { "name": "DashboardEnabled", @@ -8013,13 +9003,135 @@ "accessibility": "public", "isSealed": true, "interfaces": [ - "Aspire.Hosting.ApplicationModel.IResourceAnnotation" + "Aspire.Hosting.ApplicationModel.IResourceAnnotation" + ], + "docs": { + "summary": [ + { + "kind": "text", + "text": " An annotation placed on a " + }, + { + "kind": "cref", + "value": "T:Aspire.Hosting.Kubernetes.KubernetesEnvironmentResource" + }, + { + "kind": "text", + "text": " that specifies the target Kubernetes namespace for deployment. " + } + ], + "parameters": { + "namespace": [ + { + "kind": "text", + "text": "A " + }, + { + "kind": "cref", + "value": "T:Aspire.Hosting.ApplicationModel.ReferenceExpression" + }, + { + "kind": "text", + "text": " representing the namespace value." + } + ] + } + }, + "sourceFile": "src/Aspire.Hosting.Kubernetes/Annotations/KubernetesNamespaceAnnotation.cs", + "sourceLines": "13-13", + "members": [ + { + "name": ".ctor", + "kind": "constructor", + "accessibility": "public", + "signature": "public KubernetesNamespaceAnnotation.KubernetesNamespaceAnnotation(ReferenceExpression @namespace)", + "returnType": "void", + "parameters": [ + { + "name": "namespace", + "type": "Aspire.Hosting.ApplicationModel.ReferenceExpression" + } + ], + "docs": { + "summary": [ + { + "kind": "text", + "text": " An annotation placed on a " + }, + { + "kind": "cref", + "value": "T:Aspire.Hosting.Kubernetes.KubernetesEnvironmentResource" + }, + { + "kind": "text", + "text": " that specifies the target Kubernetes namespace for deployment. " + } + ], + "parameters": { + "namespace": [ + { + "kind": "text", + "text": "A " + }, + { + "kind": "cref", + "value": "T:Aspire.Hosting.ApplicationModel.ReferenceExpression" + }, + { + "kind": "text", + "text": " representing the namespace value." + } + ] + } + }, + "sourceFile": "src/Aspire.Hosting.Kubernetes/Annotations/KubernetesNamespaceAnnotation.cs", + "sourceLines": "13-18" + }, + { + "name": "Namespace", + "kind": "property", + "accessibility": "public", + "signature": "public ReferenceExpression KubernetesNamespaceAnnotation.Namespace", + "returnType": "Aspire.Hosting.ApplicationModel.ReferenceExpression", + "hasGet": true, + "docs": { + "summary": [ + { + "kind": "text", + "text": " Gets the namespace value as a " + }, + { + "kind": "cref", + "value": "T:Aspire.Hosting.ApplicationModel.ReferenceExpression" + }, + { + "kind": "text", + "text": ". " + } + ] + }, + "sourceFile": "src/Aspire.Hosting.Kubernetes/Annotations/KubernetesNamespaceAnnotation.cs", + "sourceLines": "18-18" + } + ] + }, + { + "name": "KubernetesNodePoolResource", + "fullName": "Aspire.Hosting.Kubernetes.KubernetesNodePoolResource", + "namespace": "Aspire.Hosting.Kubernetes", + "kind": "class", + "accessibility": "public", + "baseType": "Aspire.Hosting.ApplicationModel.Resource", + "interfaces": [ + "Aspire.Hosting.ApplicationModel.IResource", + "Aspire.Hosting.ApplicationModel.IResourceWithParent", + "Aspire.Hosting.ApplicationModel.IResourceWithParent" ], "docs": { "summary": [ { "kind": "text", - "text": " An annotation placed on a " + "text": " Represents a Kubernetes node pool as a child resource of a " }, { "kind": "cref", @@ -8027,46 +9139,61 @@ }, { "kind": "text", - "text": " that specifies the target Kubernetes namespace for deployment. " + "text": ". Node pools can be referenced by compute resources to schedule workloads on specific node pools using " + }, + { + "kind": "cref", + "value": "M:Aspire.Hosting.KubernetesEnvironmentExtensions.WithNodePool``1(Aspire.Hosting.ApplicationModel.IResourceBuilder{``0},Aspire.Hosting.ApplicationModel.IResourceBuilder{Aspire.Hosting.Kubernetes.KubernetesNodePoolResource})" + }, + { + "kind": "text", + "text": ". " } ], "parameters": { - "namespace": [ + "environment": [ { "kind": "text", - "text": "A " - }, - { - "kind": "cref", - "value": "T:Aspire.Hosting.ApplicationModel.ReferenceExpression" - }, + "text": "The parent Kubernetes environment resource." + } + ], + "name": [ { "kind": "text", - "text": " representing the namespace value." + "text": "The name of the node pool resource." } ] } }, - "sourceFile": "src/Aspire.Hosting.Kubernetes/Annotations/KubernetesNamespaceAnnotation.cs", - "sourceLines": "13-13", + "attributes": [ + { + "name": "Aspire.Hosting.AspireExportAttribute" + } + ], + "sourceFile": "src/Aspire.Hosting.Kubernetes/KubernetesNodePoolResource.cs", + "sourceLines": "17-17", "members": [ { "name": ".ctor", "kind": "constructor", "accessibility": "public", - "signature": "public KubernetesNamespaceAnnotation.KubernetesNamespaceAnnotation(ReferenceExpression @namespace)", + "signature": "public KubernetesNodePoolResource.KubernetesNodePoolResource(string name, KubernetesEnvironmentResource environment)", "returnType": "void", "parameters": [ { - "name": "namespace", - "type": "Aspire.Hosting.ApplicationModel.ReferenceExpression" + "name": "name", + "type": "string" + }, + { + "name": "environment", + "type": "Aspire.Hosting.Kubernetes.KubernetesEnvironmentResource" } ], "docs": { "summary": [ { "kind": "text", - "text": " An annotation placed on a " + "text": " Represents a Kubernetes node pool as a child resource of a " }, { "kind": "cref", @@ -8074,63 +9201,89 @@ }, { "kind": "text", - "text": " that specifies the target Kubernetes namespace for deployment. " + "text": ". Node pools can be referenced by compute resources to schedule workloads on specific node pools using " + }, + { + "kind": "cref", + "value": "M:Aspire.Hosting.KubernetesEnvironmentExtensions.WithNodePool``1(Aspire.Hosting.ApplicationModel.IResourceBuilder{``0},Aspire.Hosting.ApplicationModel.IResourceBuilder{Aspire.Hosting.Kubernetes.KubernetesNodePoolResource})" + }, + { + "kind": "text", + "text": ". " } ], "parameters": { - "namespace": [ + "environment": [ { "kind": "text", - "text": "A " - }, - { - "kind": "cref", - "value": "T:Aspire.Hosting.ApplicationModel.ReferenceExpression" - }, + "text": "The parent Kubernetes environment resource." + } + ], + "name": [ { "kind": "text", - "text": " representing the namespace value." + "text": "The name of the node pool resource." } ] } }, - "sourceFile": "src/Aspire.Hosting.Kubernetes/Annotations/KubernetesNamespaceAnnotation.cs", - "sourceLines": "13-18" + "sourceFile": "src/Aspire.Hosting.Kubernetes/KubernetesNodePoolResource.cs", + "sourceLines": "19-30" }, { - "name": "Namespace", + "name": "NodeSelectorLabelKey", "kind": "property", "accessibility": "public", - "signature": "public ReferenceExpression KubernetesNamespaceAnnotation.Namespace", - "returnType": "Aspire.Hosting.ApplicationModel.ReferenceExpression", + "signature": "public string KubernetesNodePoolResource.NodeSelectorLabelKey", + "returnType": "string", "hasGet": true, + "hasSet": true, + "isInitOnly": true, "docs": { "summary": [ { "kind": "text", - "text": " Gets the namespace value as a " + "text": " Gets the label key used to identify the node pool in the Kubernetes cluster. Defaults to " }, { - "kind": "cref", - "value": "T:Aspire.Hosting.ApplicationModel.ReferenceExpression" + "kind": "code", + "text": "agentpool" }, { "kind": "text", - "text": ". " + "text": " which is the standard label used by AKS and many managed Kubernetes services. " } ] }, - "sourceFile": "src/Aspire.Hosting.Kubernetes/Annotations/KubernetesNamespaceAnnotation.cs", - "sourceLines": "18-18" + "sourceFile": "src/Aspire.Hosting.Kubernetes/KubernetesNodePoolResource.cs" + }, + { + "name": "Parent", + "kind": "property", + "accessibility": "public", + "signature": "public KubernetesEnvironmentResource KubernetesNodePoolResource.Parent", + "returnType": "Aspire.Hosting.Kubernetes.KubernetesEnvironmentResource", + "hasGet": true, + "docs": { + "summary": [ + { + "kind": "text", + "text": " Gets the parent Kubernetes environment resource. " + } + ] + }, + "sourceFile": "src/Aspire.Hosting.Kubernetes/KubernetesNodePoolResource.cs", + "sourceLines": "24-24" } ] }, { - "name": "KubernetesNodePoolResource", - "fullName": "Aspire.Hosting.Kubernetes.KubernetesNodePoolResource", + "name": "KubernetesPersistentVolumeResource", + "fullName": "Aspire.Hosting.Kubernetes.KubernetesPersistentVolumeResource", "namespace": "Aspire.Hosting.Kubernetes", "kind": "class", "accessibility": "public", + "isSealed": true, "baseType": "Aspire.Hosting.ApplicationModel.Resource", "interfaces": [ "Aspire.Hosting.ApplicationModel.IResource", @@ -8141,25 +9294,140 @@ "summary": [ { "kind": "text", - "text": " Represents a Kubernetes node pool as a child resource of a " + "text": " Represents a Kubernetes PersistentVolumeClaim as a first-class resource in the Aspire application model. A persistent volume resource carries the storage class, capacity, access modes, and metadata annotations needed to render a " }, { - "kind": "cref", - "value": "T:Aspire.Hosting.Kubernetes.KubernetesEnvironmentResource" + "kind": "code", + "text": "v1.PersistentVolumeClaim" }, { "kind": "text", - "text": ". Node pools can be referenced by compute resources to schedule workloads on specific node pools using " + "text": " at publish time. Workloads bind to it with " }, { "kind": "cref", - "value": "M:Aspire.Hosting.KubernetesEnvironmentExtensions.WithNodePool``1(Aspire.Hosting.ApplicationModel.IResourceBuilder{``0},Aspire.Hosting.ApplicationModel.IResourceBuilder{Aspire.Hosting.Kubernetes.KubernetesNodePoolResource})" + "value": "M:Aspire.Hosting.KubernetesPersistentVolumeExtensions.WithPersistentVolume``1(Aspire.Hosting.ApplicationModel.IResourceBuilder{``0},Aspire.Hosting.ApplicationModel.IResourceBuilder{Aspire.Hosting.Kubernetes.KubernetesPersistentVolumeResource})" }, { "kind": "text", "text": ". " } ], + "remarks": [ + { + "kind": "para", + "children": [ + { + "kind": "text", + "text": " Bind a workload to the volume by either: " + } + ] + }, + { + "kind": "list", + "style": "bullet", + "items": [ + { + "description": [ + { + "kind": "text", + "text": " Adding a matching " + }, + { + "kind": "code", + "text": "WithVolume(\"name\", \"/mount/path\")" + }, + { + "kind": "text", + "text": " on a container resource and then calling " + }, + { + "kind": "code", + "text": "WithPersistentVolume(volume)" + }, + { + "kind": "text", + "text": ". The publisher matches by volume name and routes the pod's " + }, + { + "kind": "code", + "text": "volumes[]" + }, + { + "kind": "text", + "text": " entry through this resource's generated PVC. " + } + ] + }, + { + "description": [ + { + "kind": "text", + "text": " Calling the " + }, + { + "kind": "cref", + "value": "M:Aspire.Hosting.KubernetesPersistentVolumeExtensions.WithPersistentVolume``1(Aspire.Hosting.ApplicationModel.IResourceBuilder{``0},Aspire.Hosting.ApplicationModel.IResourceBuilder{Aspire.Hosting.Kubernetes.KubernetesPersistentVolumeResource},System.String,System.Boolean)" + }, + { + "kind": "text", + "text": " overload that takes a mount path. Works for both " + }, + { + "kind": "code", + "text": "ContainerResource" + }, + { + "kind": "text", + "text": " and " + }, + { + "kind": "code", + "text": "ProjectResource" + }, + { + "kind": "text", + "text": ". " + } + ] + } + ] + }, + { + "kind": "para", + "children": [ + { + "kind": "text", + "text": " Any workload bound to a persistent volume is automatically rendered as a " + }, + { + "kind": "code", + "text": "StatefulSet" + }, + { + "kind": "text", + "text": " rather than a " + }, + { + "kind": "code", + "text": "Deployment" + }, + { + "kind": "text", + "text": " — Kubernetes requires stable identity and ordered rollout for pods that share named PVCs. " + } + ] + }, + { + "kind": "para", + "children": [ + { + "kind": "text", + "text": " This resource is publish-only. It has no run-mode behavior or dashboard surface. " + } + ] + } + ], "parameters": { "environment": [ { @@ -8170,24 +9438,47 @@ "name": [ { "kind": "text", - "text": "The name of the node pool resource." + "text": "The name of the persistent volume resource. Used as the generated " + }, + { + "kind": "code", + "text": "PersistentVolumeClaim.metadata.name" + }, + { + "kind": "text", + "text": " after lower-casing." } ] - } + }, + "examples": [ + { + "code": "\n var k8s = builder.AddKubernetesEnvironment(\"k8s\");\n \n var data = k8s.AddPersistentVolume(\"data\")\n .WithStorageClass(\"managed-csi\")\n .WithCapacity(\"20Gi\")\n .WithAccessMode(PersistentVolumeAccessMode.ReadWriteOnce)\n .WithVolumeAnnotation(\"volume.beta.kubernetes.io/storage-provisioner\", \"disk.csi.azure.com\");\n \n builder.AddContainer(\"postgres\", \"postgres:16\")\n .WithVolume(\"data\", \"/var/lib/postgresql/data\")\n .WithPersistentVolume(data);\n ", + "language": "csharp" + } + ] }, "attributes": [ + { + "name": "System.Diagnostics.CodeAnalysis.ExperimentalAttribute", + "constructorArguments": [ + "ASPIRECOMPUTE002" + ], + "arguments": { + "UrlFormat": "https://aka.ms/aspire/diagnostics/{0}" + } + }, { "name": "Aspire.Hosting.AspireExportAttribute" } ], - "sourceFile": "src/Aspire.Hosting.Kubernetes/KubernetesNodePoolResource.cs", - "sourceLines": "17-17", + "sourceFile": "src/Aspire.Hosting.Kubernetes/KubernetesPersistentVolumeResource.cs", + "sourceLines": "65-65", "members": [ { "name": ".ctor", "kind": "constructor", "accessibility": "public", - "signature": "public KubernetesNodePoolResource.KubernetesNodePoolResource(string name, KubernetesEnvironmentResource environment)", + "signature": "public KubernetesPersistentVolumeResource.KubernetesPersistentVolumeResource(string name, KubernetesEnvironmentResource environment)", "returnType": "void", "parameters": [ { @@ -8203,23 +9494,138 @@ "summary": [ { "kind": "text", - "text": " Represents a Kubernetes node pool as a child resource of a " + "text": " Represents a Kubernetes PersistentVolumeClaim as a first-class resource in the Aspire application model. A persistent volume resource carries the storage class, capacity, access modes, and metadata annotations needed to render a " + }, + { + "kind": "code", + "text": "v1.PersistentVolumeClaim" + }, + { + "kind": "text", + "text": " at publish time. Workloads bind to it with " + }, + { + "kind": "cref", + "value": "M:Aspire.Hosting.KubernetesPersistentVolumeExtensions.WithPersistentVolume``1(Aspire.Hosting.ApplicationModel.IResourceBuilder{``0},Aspire.Hosting.ApplicationModel.IResourceBuilder{Aspire.Hosting.Kubernetes.KubernetesPersistentVolumeResource})" }, { - "kind": "cref", - "value": "T:Aspire.Hosting.Kubernetes.KubernetesEnvironmentResource" + "kind": "text", + "text": ". " + } + ], + "remarks": [ + { + "kind": "para", + "children": [ + { + "kind": "text", + "text": " Bind a workload to the volume by either: " + } + ] }, { - "kind": "text", - "text": ". Node pools can be referenced by compute resources to schedule workloads on specific node pools using " + "kind": "list", + "style": "bullet", + "items": [ + { + "description": [ + { + "kind": "text", + "text": " Adding a matching " + }, + { + "kind": "code", + "text": "WithVolume(\"name\", \"/mount/path\")" + }, + { + "kind": "text", + "text": " on a container resource and then calling " + }, + { + "kind": "code", + "text": "WithPersistentVolume(volume)" + }, + { + "kind": "text", + "text": ". The publisher matches by volume name and routes the pod's " + }, + { + "kind": "code", + "text": "volumes[]" + }, + { + "kind": "text", + "text": " entry through this resource's generated PVC. " + } + ] + }, + { + "description": [ + { + "kind": "text", + "text": " Calling the " + }, + { + "kind": "cref", + "value": "M:Aspire.Hosting.KubernetesPersistentVolumeExtensions.WithPersistentVolume``1(Aspire.Hosting.ApplicationModel.IResourceBuilder{``0},Aspire.Hosting.ApplicationModel.IResourceBuilder{Aspire.Hosting.Kubernetes.KubernetesPersistentVolumeResource},System.String,System.Boolean)" + }, + { + "kind": "text", + "text": " overload that takes a mount path. Works for both " + }, + { + "kind": "code", + "text": "ContainerResource" + }, + { + "kind": "text", + "text": " and " + }, + { + "kind": "code", + "text": "ProjectResource" + }, + { + "kind": "text", + "text": ". " + } + ] + } + ] }, { - "kind": "cref", - "value": "M:Aspire.Hosting.KubernetesEnvironmentExtensions.WithNodePool``1(Aspire.Hosting.ApplicationModel.IResourceBuilder{``0},Aspire.Hosting.ApplicationModel.IResourceBuilder{Aspire.Hosting.Kubernetes.KubernetesNodePoolResource})" + "kind": "para", + "children": [ + { + "kind": "text", + "text": " Any workload bound to a persistent volume is automatically rendered as a " + }, + { + "kind": "code", + "text": "StatefulSet" + }, + { + "kind": "text", + "text": " rather than a " + }, + { + "kind": "code", + "text": "Deployment" + }, + { + "kind": "text", + "text": " — Kubernetes requires stable identity and ordered rollout for pods that share named PVCs. " + } + ] }, { - "kind": "text", - "text": ". " + "kind": "para", + "children": [ + { + "kind": "text", + "text": " This resource is publish-only. It has no run-mode behavior or dashboard surface. " + } + ] } ], "parameters": { @@ -8232,46 +9638,33 @@ "name": [ { "kind": "text", - "text": "The name of the node pool resource." + "text": "The name of the persistent volume resource. Used as the generated " + }, + { + "kind": "code", + "text": "PersistentVolumeClaim.metadata.name" + }, + { + "kind": "text", + "text": " after lower-casing." } ] - } - }, - "sourceFile": "src/Aspire.Hosting.Kubernetes/KubernetesNodePoolResource.cs", - "sourceLines": "19-30" - }, - { - "name": "NodeSelectorLabelKey", - "kind": "property", - "accessibility": "public", - "signature": "public string KubernetesNodePoolResource.NodeSelectorLabelKey", - "returnType": "string", - "hasGet": true, - "hasSet": true, - "isInitOnly": true, - "docs": { - "summary": [ - { - "kind": "text", - "text": " Gets the label key used to identify the node pool in the Kubernetes cluster. Defaults to " - }, - { - "kind": "code", - "text": "agentpool" - }, + }, + "examples": [ { - "kind": "text", - "text": " which is the standard label used by AKS and many managed Kubernetes services. " + "code": "\n var k8s = builder.AddKubernetesEnvironment(\"k8s\");\n \n var data = k8s.AddPersistentVolume(\"data\")\n .WithStorageClass(\"managed-csi\")\n .WithCapacity(\"20Gi\")\n .WithAccessMode(PersistentVolumeAccessMode.ReadWriteOnce)\n .WithVolumeAnnotation(\"volume.beta.kubernetes.io/storage-provisioner\", \"disk.csi.azure.com\");\n \n builder.AddContainer(\"postgres\", \"postgres:16\")\n .WithVolume(\"data\", \"/var/lib/postgresql/data\")\n .WithPersistentVolume(data);\n ", + "language": "csharp" } ] }, - "sourceFile": "src/Aspire.Hosting.Kubernetes/KubernetesNodePoolResource.cs" + "sourceFile": "src/Aspire.Hosting.Kubernetes/KubernetesPersistentVolumeResource.cs", + "sourceLines": "67-100" }, { "name": "Parent", "kind": "property", "accessibility": "public", - "signature": "public KubernetesEnvironmentResource KubernetesNodePoolResource.Parent", + "signature": "public KubernetesEnvironmentResource KubernetesPersistentVolumeResource.Parent", "returnType": "Aspire.Hosting.Kubernetes.KubernetesEnvironmentResource", "hasGet": true, "docs": { @@ -8282,8 +9675,8 @@ } ] }, - "sourceFile": "src/Aspire.Hosting.Kubernetes/KubernetesNodePoolResource.cs", - "sourceLines": "24-24" + "sourceFile": "src/Aspire.Hosting.Kubernetes/KubernetesPersistentVolumeResource.cs", + "sourceLines": "72-72" } ] }, @@ -8316,7 +9709,7 @@ } ], "sourceFile": "src/Aspire.Hosting.Kubernetes/KubernetesResource.cs", - "sourceLines": "19-19", + "sourceLines": "22-22", "members": [ { "name": ".ctor", @@ -8347,7 +9740,7 @@ ] }, "sourceFile": "src/Aspire.Hosting.Kubernetes/KubernetesResource.cs", - "sourceLines": "19-79" + "sourceLines": "22-84" }, { "name": "AdditionalResources", @@ -8373,7 +9766,7 @@ ] }, "sourceFile": "src/Aspire.Hosting.Kubernetes/KubernetesResource.cs", - "sourceLines": "79-79" + "sourceLines": "84-84" }, { "name": "ConfigMap", @@ -8418,7 +9811,7 @@ ] }, "sourceFile": "src/Aspire.Hosting.Kubernetes/KubernetesResource.cs", - "sourceLines": "22-22" + "sourceLines": "28-28" }, { "name": "Secret", @@ -8580,6 +9973,64 @@ } ] }, + { + "name": "PersistentVolumeAccessMode", + "fullName": "Aspire.Hosting.Kubernetes.PersistentVolumeAccessMode", + "namespace": "Aspire.Hosting.Kubernetes", + "kind": "enum", + "accessibility": "public", + "docs": { + "summary": [ + { + "kind": "text", + "text": " Specifies how a persistent volume may be mounted by pods. Maps directly to the Kubernetes " + }, + { + "kind": "code", + "text": "PersistentVolumeAccessMode" + }, + { + "kind": "text", + "text": " values. " + } + ] + }, + "enumMembers": [ + { + "name": "ReadWriteOnce", + "value": 0, + "description": "The volume can be mounted as read-write by a single node. Most common for block storage backed databases." + }, + { + "name": "ReadOnlyMany", + "value": 1, + "description": "The volume can be mounted as read-only by many nodes simultaneously." + }, + { + "name": "ReadWriteMany", + "value": 2, + "description": "The volume can be mounted as read-write by many nodes simultaneously. Typically used for shared file stores (e.g. Azure Files, NFS)." + }, + { + "name": "ReadWriteOncePod", + "value": 3, + "description": "The volume can be mounted as read-write by a single pod. Requires Kubernetes 1.27 or later (ReadWriteOncePod access mode)." + } + ], + "attributes": [ + { + "name": "System.Diagnostics.CodeAnalysis.ExperimentalAttribute", + "constructorArguments": [ + "ASPIRECOMPUTE002" + ], + "arguments": { + "UrlFormat": "https://aka.ms/aspire/diagnostics/{0}" + } + } + ], + "sourceFile": "src/Aspire.Hosting.Kubernetes/Annotations/PersistentVolumeAccessMode.cs", + "members": [] + }, { "name": "AffinityV1", "fullName": "Aspire.Hosting.Kubernetes.Resources.AffinityV1", @@ -9462,17 +10913,99 @@ "summary": [ { "kind": "text", - "text": " Gets or sets the name of the ConfigMap resource being referenced. " + "text": " Gets or sets the name of the ConfigMap resource being referenced. " + } + ] + }, + "sourceFile": "src/Aspire.Hosting.Kubernetes/Resources/ConfigMapEnvSourceV1.cs" + }, + { + "name": "Optional", + "kind": "property", + "accessibility": "public", + "signature": "public bool? ConfigMapEnvSourceV1.Optional", + "returnType": "bool?", + "isReturnNullable": true, + "hasGet": true, + "hasSet": true, + "docs": { + "summary": [ + { + "kind": "text", + "text": " Gets or sets a value indicating whether the ConfigMap is optional. If true, the ConfigMap reference is considered optional, and the application will continue running even if the ConfigMap is not found. If false or not set, the absence of the ConfigMap will result in an error. " + } + ] + }, + "sourceFile": "src/Aspire.Hosting.Kubernetes/Resources/ConfigMapEnvSourceV1.cs" + } + ] + }, + { + "name": "ConfigMapKeySelectorV1", + "fullName": "Aspire.Hosting.Kubernetes.Resources.ConfigMapKeySelectorV1", + "namespace": "Aspire.Hosting.Kubernetes.Resources", + "kind": "class", + "accessibility": "public", + "isSealed": true, + "docs": { + "summary": [ + { + "kind": "text", + "text": " ConfigMapKeySelectorV1 represents a selector for a specific key in a ConfigMap. It is used to select a named key from a ConfigMap, with an optional flag to indicate if the key or ConfigMap is optional. " + } + ] + }, + "sourceFile": "src/Aspire.Hosting.Kubernetes/Resources/ConfigMapKeySelectorV1.cs", + "sourceLines": "13-13", + "members": [ + { + "name": ".ctor", + "kind": "constructor", + "accessibility": "public", + "signature": "public ConfigMapKeySelectorV1.ConfigMapKeySelectorV1()", + "returnType": "void" + }, + { + "name": "Key", + "kind": "property", + "accessibility": "public", + "signature": "public string ConfigMapKeySelectorV1.Key", + "returnType": "string", + "hasGet": true, + "hasSet": true, + "docs": { + "summary": [ + { + "kind": "text", + "text": " Specifies the key to select from the referenced ConfigMap. This property identifies a specific entry within the ConfigMap that should be used. " + } + ] + }, + "sourceFile": "src/Aspire.Hosting.Kubernetes/Resources/ConfigMapKeySelectorV1.cs" + }, + { + "name": "Name", + "kind": "property", + "accessibility": "public", + "signature": "public string ConfigMapKeySelectorV1.Name", + "returnType": "string", + "hasGet": true, + "hasSet": true, + "docs": { + "summary": [ + { + "kind": "text", + "text": " Gets or sets the name of the ConfigMap whose key-value pair is to be selected. " } ] }, - "sourceFile": "src/Aspire.Hosting.Kubernetes/Resources/ConfigMapEnvSourceV1.cs" + "sourceFile": "src/Aspire.Hosting.Kubernetes/Resources/ConfigMapKeySelectorV1.cs" }, { "name": "Optional", "kind": "property", "accessibility": "public", - "signature": "public bool? ConfigMapEnvSourceV1.Optional", + "signature": "public bool? ConfigMapKeySelectorV1.Optional", "returnType": "bool?", "isReturnNullable": true, "hasGet": true, @@ -9481,17 +11014,17 @@ "summary": [ { "kind": "text", - "text": " Gets or sets a value indicating whether the ConfigMap is optional. If true, the ConfigMap reference is considered optional, and the application will continue running even if the ConfigMap is not found. If false or not set, the absence of the ConfigMap will result in an error. " + "text": " Indicates whether the specific key in the ConfigMap is optional. If set to true, the absence of the specified key will not raise an error. If set to false or null, the specified key must exist in the ConfigMap; otherwise, an error may be raised. " } ] }, - "sourceFile": "src/Aspire.Hosting.Kubernetes/Resources/ConfigMapEnvSourceV1.cs" + "sourceFile": "src/Aspire.Hosting.Kubernetes/Resources/ConfigMapKeySelectorV1.cs" } ] }, { - "name": "ConfigMapKeySelectorV1", - "fullName": "Aspire.Hosting.Kubernetes.Resources.ConfigMapKeySelectorV1", + "name": "ConfigMapProjectionV1", + "fullName": "Aspire.Hosting.Kubernetes.Resources.ConfigMapProjectionV1", "namespace": "Aspire.Hosting.Kubernetes.Resources", "kind": "class", "accessibility": "public", @@ -9500,43 +11033,45 @@ "summary": [ { "kind": "text", - "text": " ConfigMapKeySelectorV1 represents a selector for a specific key in a ConfigMap. It is used to select a named key from a ConfigMap, with an optional flag to indicate if the key or ConfigMap is optional. " + "text": " Represents a ConfigMap source within a projected volume. " } ] }, - "sourceFile": "src/Aspire.Hosting.Kubernetes/Resources/ConfigMapKeySelectorV1.cs", - "sourceLines": "13-13", + "sourceFile": "src/Aspire.Hosting.Kubernetes/Resources/ConfigMapProjectionV1.cs", + "sourceLines": "12-12", "members": [ { "name": ".ctor", "kind": "constructor", "accessibility": "public", - "signature": "public ConfigMapKeySelectorV1.ConfigMapKeySelectorV1()", - "returnType": "void" + "signature": "public ConfigMapProjectionV1.ConfigMapProjectionV1()", + "returnType": "void", + "sourceFile": "src/Aspire.Hosting.Kubernetes/Resources/ConfigMapProjectionV1.cs", + "sourceLines": "18-18" }, { - "name": "Key", + "name": "Items", "kind": "property", "accessibility": "public", - "signature": "public string ConfigMapKeySelectorV1.Key", - "returnType": "string", + "signature": "public List ConfigMapProjectionV1.Items", + "returnType": "System.Collections.Generic.List", "hasGet": true, - "hasSet": true, "docs": { "summary": [ { "kind": "text", - "text": " Specifies the key to select from the referenced ConfigMap. This property identifies a specific entry within the ConfigMap that should be used. " + "text": " Gets the key-to-path mappings to project from the ConfigMap. " } ] }, - "sourceFile": "src/Aspire.Hosting.Kubernetes/Resources/ConfigMapKeySelectorV1.cs" + "sourceFile": "src/Aspire.Hosting.Kubernetes/Resources/ConfigMapProjectionV1.cs", + "sourceLines": "18-18" }, { "name": "Name", "kind": "property", "accessibility": "public", - "signature": "public string ConfigMapKeySelectorV1.Name", + "signature": "public string ConfigMapProjectionV1.Name", "returnType": "string", "hasGet": true, "hasSet": true, @@ -9544,17 +11079,17 @@ "summary": [ { "kind": "text", - "text": " Gets or sets the name of the ConfigMap whose key-value pair is to be selected. " + "text": " Gets or sets the name of the ConfigMap to project. " } ] }, - "sourceFile": "src/Aspire.Hosting.Kubernetes/Resources/ConfigMapKeySelectorV1.cs" + "sourceFile": "src/Aspire.Hosting.Kubernetes/Resources/ConfigMapProjectionV1.cs" }, { "name": "Optional", "kind": "property", "accessibility": "public", - "signature": "public bool? ConfigMapKeySelectorV1.Optional", + "signature": "public bool? ConfigMapProjectionV1.Optional", "returnType": "bool?", "isReturnNullable": true, "hasGet": true, @@ -9563,11 +11098,11 @@ "summary": [ { "kind": "text", - "text": " Indicates whether the specific key in the ConfigMap is optional. If set to true, the absence of the specified key will not raise an error. If set to false or null, the specified key must exist in the ConfigMap; otherwise, an error may be raised. " + "text": " Gets or sets whether the ConfigMap or selected keys are optional. " } ] }, - "sourceFile": "src/Aspire.Hosting.Kubernetes/Resources/ConfigMapKeySelectorV1.cs" + "sourceFile": "src/Aspire.Hosting.Kubernetes/Resources/ConfigMapProjectionV1.cs" } ] }, @@ -10983,6 +12518,155 @@ } ] }, + { + "name": "DownwardApiProjectionV1", + "fullName": "Aspire.Hosting.Kubernetes.Resources.DownwardApiProjectionV1", + "namespace": "Aspire.Hosting.Kubernetes.Resources", + "kind": "class", + "accessibility": "public", + "isSealed": true, + "docs": { + "summary": [ + { + "kind": "text", + "text": " Represents a Downward API source within a projected volume. " + } + ] + }, + "sourceFile": "src/Aspire.Hosting.Kubernetes/Resources/DownwardApiProjectionV1.cs", + "sourceLines": "12-12", + "members": [ + { + "name": ".ctor", + "kind": "constructor", + "accessibility": "public", + "signature": "public DownwardApiProjectionV1.DownwardApiProjectionV1()", + "returnType": "void", + "sourceFile": "src/Aspire.Hosting.Kubernetes/Resources/DownwardApiProjectionV1.cs", + "sourceLines": "18-18" + }, + { + "name": "Items", + "kind": "property", + "accessibility": "public", + "signature": "public List DownwardApiProjectionV1.Items", + "returnType": "System.Collections.Generic.List", + "hasGet": true, + "docs": { + "summary": [ + { + "kind": "text", + "text": " Gets the files to project from pod and container fields. " + } + ] + }, + "sourceFile": "src/Aspire.Hosting.Kubernetes/Resources/DownwardApiProjectionV1.cs", + "sourceLines": "18-18" + } + ] + }, + { + "name": "DownwardApiVolumeFileV1", + "fullName": "Aspire.Hosting.Kubernetes.Resources.DownwardApiVolumeFileV1", + "namespace": "Aspire.Hosting.Kubernetes.Resources", + "kind": "class", + "accessibility": "public", + "isSealed": true, + "docs": { + "summary": [ + { + "kind": "text", + "text": " Represents a Downward API file projected into a volume. " + } + ] + }, + "sourceFile": "src/Aspire.Hosting.Kubernetes/Resources/DownwardApiVolumeFileV1.cs", + "sourceLines": "12-12", + "members": [ + { + "name": ".ctor", + "kind": "constructor", + "accessibility": "public", + "signature": "public DownwardApiVolumeFileV1.DownwardApiVolumeFileV1()", + "returnType": "void" + }, + { + "name": "FieldRef", + "kind": "property", + "accessibility": "public", + "signature": "public ObjectFieldSelectorV1? DownwardApiVolumeFileV1.FieldRef", + "returnType": "Aspire.Hosting.Kubernetes.Resources.ObjectFieldSelectorV1?", + "isReturnNullable": true, + "hasGet": true, + "hasSet": true, + "docs": { + "summary": [ + { + "kind": "text", + "text": " Gets or sets the pod field to project into the file. " + } + ] + }, + "sourceFile": "src/Aspire.Hosting.Kubernetes/Resources/DownwardApiVolumeFileV1.cs" + }, + { + "name": "Mode", + "kind": "property", + "accessibility": "public", + "signature": "public int? DownwardApiVolumeFileV1.Mode", + "returnType": "int?", + "isReturnNullable": true, + "hasGet": true, + "hasSet": true, + "docs": { + "summary": [ + { + "kind": "text", + "text": " Gets or sets the file mode for the projected file. " + } + ] + }, + "sourceFile": "src/Aspire.Hosting.Kubernetes/Resources/DownwardApiVolumeFileV1.cs" + }, + { + "name": "Path", + "kind": "property", + "accessibility": "public", + "signature": "public string DownwardApiVolumeFileV1.Path", + "returnType": "string", + "hasGet": true, + "hasSet": true, + "docs": { + "summary": [ + { + "kind": "text", + "text": " Gets or sets the relative path of the projected file. " + } + ] + }, + "sourceFile": "src/Aspire.Hosting.Kubernetes/Resources/DownwardApiVolumeFileV1.cs" + }, + { + "name": "ResourceFieldRef", + "kind": "property", + "accessibility": "public", + "signature": "public ResourceFieldSelectorV1? DownwardApiVolumeFileV1.ResourceFieldRef", + "returnType": "Aspire.Hosting.Kubernetes.Resources.ResourceFieldSelectorV1?", + "isReturnNullable": true, + "hasGet": true, + "hasSet": true, + "docs": { + "summary": [ + { + "kind": "text", + "text": " Gets or sets the container resource field to project into the file. " + } + ] + }, + "sourceFile": "src/Aspire.Hosting.Kubernetes/Resources/DownwardApiVolumeFileV1.cs" + } + ] + }, { "name": "EmptyDirVolumeSourceV1", "fullName": "Aspire.Hosting.Kubernetes.Resources.EmptyDirVolumeSourceV1", @@ -19541,7 +21225,7 @@ "signature": "public PersistentVolumeClaimSpecV1.PersistentVolumeClaimSpecV1()", "returnType": "void", "sourceFile": "src/Aspire.Hosting.Kubernetes/Resources/PersistentVolumeClaimSpecV1.cs", - "sourceLines": "28-124" + "sourceLines": "128-136" }, { "name": "AccessModes", @@ -19565,14 +21249,15 @@ ] }, "sourceFile": "src/Aspire.Hosting.Kubernetes/Resources/PersistentVolumeClaimSpecV1.cs", - "sourceLines": "116-116" + "sourceLines": "128-128" }, { "name": "DataSource", "kind": "property", "accessibility": "public", - "signature": "public TypedLocalObjectReferenceV1 PersistentVolumeClaimSpecV1.DataSource", - "returnType": "Aspire.Hosting.Kubernetes.Resources.TypedLocalObjectReferenceV1", + "signature": "public TypedLocalObjectReferenceV1? PersistentVolumeClaimSpecV1.DataSource", + "returnType": "Aspire.Hosting.Kubernetes.Resources.TypedLocalObjectReferenceV1?", + "isReturnNullable": true, "hasGet": true, "hasSet": true, "docs": { @@ -19585,7 +21270,31 @@ "remarks": [ { "kind": "text", - "text": " The DataSource property is used to specify the reference to an existing resource that serves as the source for the volume. This can be used, for example, to populate a PVC using data from an existing snapshot or another volume object. " + "text": " The DataSource property is used to specify the reference to an existing resource that serves as the source for the volume. This can be used, for example, to populate a PVC using data from an existing snapshot or another volume object. Defaults to " + }, + { + "kind": "langword", + "value": "null" + }, + { + "kind": "text", + "text": " so the property is omitted from the serialized YAML when no data source has been configured. Eagerly initializing this to " + }, + { + "kind": "code", + "text": "new()" + }, + { + "kind": "text", + "text": " would otherwise emit an invalid empty " + }, + { + "kind": "code", + "text": "dataSource: {}" + }, + { + "kind": "text", + "text": " mapping that Kubernetes rejects on apply. " } ] }, @@ -19595,8 +21304,9 @@ "name": "DataSourceRef", "kind": "property", "accessibility": "public", - "signature": "public TypedObjectReferenceV1 PersistentVolumeClaimSpecV1.DataSourceRef", - "returnType": "Aspire.Hosting.Kubernetes.Resources.TypedObjectReferenceV1", + "signature": "public TypedObjectReferenceV1? PersistentVolumeClaimSpecV1.DataSourceRef", + "returnType": "Aspire.Hosting.Kubernetes.Resources.TypedObjectReferenceV1?", + "isReturnNullable": true, "hasGet": true, "hasSet": true, "docs": { @@ -19609,7 +21319,31 @@ "remarks": [ { "kind": "text", - "text": " The referenced resource should match the type specified, and the reference includes details such as kind, name, namespace, and API group of the object. This enables integration with external or heterogeneous resources in a Kubernetes environment. " + "text": " The referenced resource should match the type specified, and the reference includes details such as kind, name, namespace, and API group of the object. This enables integration with external or heterogeneous resources in a Kubernetes environment. Defaults to " + }, + { + "kind": "langword", + "value": "null" + }, + { + "kind": "text", + "text": " so the property is omitted from the serialized YAML when no data source reference has been configured. Eagerly initializing this to " + }, + { + "kind": "code", + "text": "new()" + }, + { + "kind": "text", + "text": " would otherwise emit an invalid empty " + }, + { + "kind": "code", + "text": "dataSourceRef: {}" + }, + { + "kind": "text", + "text": " mapping that Kubernetes rejects on apply. " } ] }, @@ -19637,8 +21371,9 @@ "name": "Selector", "kind": "property", "accessibility": "public", - "signature": "public LabelSelectorV1 PersistentVolumeClaimSpecV1.Selector", - "returnType": "Aspire.Hosting.Kubernetes.Resources.LabelSelectorV1", + "signature": "public LabelSelectorV1? PersistentVolumeClaimSpecV1.Selector", + "returnType": "Aspire.Hosting.Kubernetes.Resources.LabelSelectorV1?", + "isReturnNullable": true, "hasGet": true, "hasSet": true, "docs": { @@ -19659,7 +21394,31 @@ }, { "kind": "text", - "text": " property allows the specification of a set of filtering criteria using labels. It supports exact matches with key-value pairs (MatchLabels) as well as more complex filtering rules using label selector requirements (MatchExpressions). This property is commonly used to dynamically select resources like pods or volumes in Kubernetes deployments. " + "text": " property allows the specification of a set of filtering criteria using labels. It supports exact matches with key-value pairs (MatchLabels) as well as more complex filtering rules using label selector requirements (MatchExpressions). This property is commonly used to dynamically select resources like pods or volumes in Kubernetes deployments. Defaults to " + }, + { + "kind": "langword", + "value": "null" + }, + { + "kind": "text", + "text": " so the property is omitted from the serialized YAML when no selector has been configured. Eagerly initializing this to " + }, + { + "kind": "code", + "text": "new()" + }, + { + "kind": "text", + "text": " would otherwise emit an invalid empty " + }, + { + "kind": "code", + "text": "selector: {}" + }, + { + "kind": "text", + "text": " mapping that Kubernetes rejects on apply. " } ] }, @@ -19929,7 +21688,7 @@ "signature": "public PersistentVolumeSpecV1.PersistentVolumeSpecV1()", "returnType": "void", "sourceFile": "src/Aspire.Hosting.Kubernetes/Resources/PersistentVolumeSpecV1.cs", - "sourceLines": "48-105" + "sourceLines": "93-109" }, { "name": "AccessModes", @@ -19947,7 +21706,7 @@ ] }, "sourceFile": "src/Aspire.Hosting.Kubernetes/Resources/PersistentVolumeSpecV1.cs", - "sourceLines": "77-77" + "sourceLines": "93-93" }, { "name": "Capacity", @@ -19971,8 +21730,9 @@ "name": "ClaimRef", "kind": "property", "accessibility": "public", - "signature": "public ObjectReferenceV1 PersistentVolumeSpecV1.ClaimRef", - "returnType": "Aspire.Hosting.Kubernetes.Resources.ObjectReferenceV1", + "signature": "public ObjectReferenceV1? PersistentVolumeSpecV1.ClaimRef", + "returnType": "Aspire.Hosting.Kubernetes.Resources.ObjectReferenceV1?", + "isReturnNullable": true, "hasGet": true, "hasSet": true, "docs": { @@ -19981,6 +21741,36 @@ "kind": "text", "text": " Gets or sets the reference to a claim within the Kubernetes cluster that is bound to the PersistentVolume. This property links the PersistentVolume to a specific PersistentVolumeClaim (PVC) via an object reference, allowing resources to be dynamically or statically provisioned as required. " } + ], + "remarks": [ + { + "kind": "text", + "text": " Defaults to " + }, + { + "kind": "langword", + "value": "null" + }, + { + "kind": "text", + "text": " so the property is omitted from the serialized YAML when no claim reference has been configured. Eagerly initializing this to " + }, + { + "kind": "code", + "text": "new()" + }, + { + "kind": "text", + "text": " would otherwise emit an invalid empty " + }, + { + "kind": "code", + "text": "claimRef: {}" + }, + { + "kind": "text", + "text": " mapping that Kubernetes rejects on apply. " + } ] }, "sourceFile": "src/Aspire.Hosting.Kubernetes/Resources/PersistentVolumeSpecV1.cs" @@ -19989,15 +21779,46 @@ "name": "HostPath", "kind": "property", "accessibility": "public", - "signature": "public HostPathVolumeSourceV1 PersistentVolumeSpecV1.HostPath", - "returnType": "Aspire.Hosting.Kubernetes.Resources.HostPathVolumeSourceV1", + "signature": "public HostPathVolumeSourceV1? PersistentVolumeSpecV1.HostPath", + "returnType": "Aspire.Hosting.Kubernetes.Resources.HostPathVolumeSourceV1?", + "isReturnNullable": true, "hasGet": true, "hasSet": true, "docs": { "summary": [ { "kind": "text", - "text": " Gets or sets the configuration for a HostPath volume in a Kubernetes PersistentVolume. This property specifies the details of a HostPath volume source, allowing a directory from the host node file system to be mounted into a pod's container. " + "text": " Gets or sets the configuration for a HostPath volume in a Kubernetes PersistentVolume. This property specifies the details of a HostPath volume source, allowing a directory from the host node file system to be mounted into a pod's container. " + } + ], + "remarks": [ + { + "kind": "text", + "text": " Defaults to " + }, + { + "kind": "langword", + "value": "null" + }, + { + "kind": "text", + "text": " so the property is omitted from the serialized YAML when no host path has been configured. Eagerly initializing this to " + }, + { + "kind": "code", + "text": "new()" + }, + { + "kind": "text", + "text": " would otherwise emit an invalid empty " + }, + { + "kind": "code", + "text": "hostPath: {}" + }, + { + "kind": "text", + "text": " mapping that Kubernetes rejects on apply. " } ] }, @@ -20007,8 +21828,9 @@ "name": "Local", "kind": "property", "accessibility": "public", - "signature": "public LocalVolumeSourceV1 PersistentVolumeSpecV1.Local", - "returnType": "Aspire.Hosting.Kubernetes.Resources.LocalVolumeSourceV1", + "signature": "public LocalVolumeSourceV1? PersistentVolumeSpecV1.Local", + "returnType": "Aspire.Hosting.Kubernetes.Resources.LocalVolumeSourceV1?", + "isReturnNullable": true, "hasGet": true, "hasSet": true, "docs": { @@ -20029,7 +21851,31 @@ }, { "kind": "text", - "text": " type. Local volumes are backed by a specific file or directory on the node where the volume is created. " + "text": " type. Local volumes are backed by a specific file or directory on the node where the volume is created. Defaults to " + }, + { + "kind": "langword", + "value": "null" + }, + { + "kind": "text", + "text": " so the property is omitted from the serialized YAML when no local volume source has been configured. Eagerly initializing this to " + }, + { + "kind": "code", + "text": "new()" + }, + { + "kind": "text", + "text": " would otherwise emit an invalid empty " + }, + { + "kind": "code", + "text": "local: {}" + }, + { + "kind": "text", + "text": " mapping that Kubernetes rejects on apply. " } ] }, @@ -20051,14 +21897,15 @@ ] }, "sourceFile": "src/Aspire.Hosting.Kubernetes/Resources/PersistentVolumeSpecV1.cs", - "sourceLines": "85-85" + "sourceLines": "101-101" }, { "name": "NodeAffinity", "kind": "property", "accessibility": "public", - "signature": "public VolumeNodeAffinityV1 PersistentVolumeSpecV1.NodeAffinity", - "returnType": "Aspire.Hosting.Kubernetes.Resources.VolumeNodeAffinityV1", + "signature": "public VolumeNodeAffinityV1? PersistentVolumeSpecV1.NodeAffinity", + "returnType": "Aspire.Hosting.Kubernetes.Resources.VolumeNodeAffinityV1?", + "isReturnNullable": true, "hasGet": true, "hasSet": true, "docs": { @@ -20071,7 +21918,31 @@ "remarks": [ { "kind": "text", - "text": " The NodeAffinity property defines the rules and requirements for associating a PersistentVolume with specific nodes in the Kubernetes cluster. It describes the node selection criteria, which help ensure proper placement of the volume based on node attributes and conditions. " + "text": " The NodeAffinity property defines the rules and requirements for associating a PersistentVolume with specific nodes in the Kubernetes cluster. It describes the node selection criteria, which help ensure proper placement of the volume based on node attributes and conditions. Defaults to " + }, + { + "kind": "langword", + "value": "null" + }, + { + "kind": "text", + "text": " so the property is omitted from the serialized YAML when no node affinity has been configured. Eagerly initializing this to " + }, + { + "kind": "code", + "text": "new()" + }, + { + "kind": "text", + "text": " would otherwise emit an invalid empty " + }, + { + "kind": "code", + "text": "nodeAffinity: { required: {} }" + }, + { + "kind": "text", + "text": " mapping that Kubernetes rejects on apply. " } ] }, @@ -22773,6 +24644,78 @@ } ] }, + { + "name": "ProjectedVolumeSourceV1", + "fullName": "Aspire.Hosting.Kubernetes.Resources.ProjectedVolumeSourceV1", + "namespace": "Aspire.Hosting.Kubernetes.Resources", + "kind": "class", + "accessibility": "public", + "isSealed": true, + "docs": { + "summary": [ + { + "kind": "text", + "text": " Represents a Kubernetes projected volume source. " + } + ], + "remarks": [ + { + "kind": "text", + "text": " A projected volume maps several supported volume sources into one directory. " + } + ] + }, + "sourceFile": "src/Aspire.Hosting.Kubernetes/Resources/ProjectedVolumeSourceV1.cs", + "sourceLines": "15-15", + "members": [ + { + "name": ".ctor", + "kind": "constructor", + "accessibility": "public", + "signature": "public ProjectedVolumeSourceV1.ProjectedVolumeSourceV1()", + "returnType": "void", + "sourceFile": "src/Aspire.Hosting.Kubernetes/Resources/ProjectedVolumeSourceV1.cs", + "sourceLines": "27-27" + }, + { + "name": "DefaultMode", + "kind": "property", + "accessibility": "public", + "signature": "public int? ProjectedVolumeSourceV1.DefaultMode", + "returnType": "int?", + "isReturnNullable": true, + "hasGet": true, + "hasSet": true, + "docs": { + "summary": [ + { + "kind": "text", + "text": " Gets or sets the default file mode for files created from projected sources. " + } + ] + }, + "sourceFile": "src/Aspire.Hosting.Kubernetes/Resources/ProjectedVolumeSourceV1.cs" + }, + { + "name": "Sources", + "kind": "property", + "accessibility": "public", + "signature": "public List ProjectedVolumeSourceV1.Sources", + "returnType": "System.Collections.Generic.List", + "hasGet": true, + "docs": { + "summary": [ + { + "kind": "text", + "text": " Gets the list of volume sources to project into the volume. " + } + ] + }, + "sourceFile": "src/Aspire.Hosting.Kubernetes/Resources/ProjectedVolumeSourceV1.cs", + "sourceLines": "27-27" + } + ] + }, { "name": "ReplicaSet", "fullName": "Aspire.Hosting.Kubernetes.Resources.ReplicaSet", @@ -24287,6 +26230,90 @@ } ] }, + { + "name": "SecretProjectionV1", + "fullName": "Aspire.Hosting.Kubernetes.Resources.SecretProjectionV1", + "namespace": "Aspire.Hosting.Kubernetes.Resources", + "kind": "class", + "accessibility": "public", + "isSealed": true, + "docs": { + "summary": [ + { + "kind": "text", + "text": " Represents a Secret source within a projected volume. " + } + ] + }, + "sourceFile": "src/Aspire.Hosting.Kubernetes/Resources/SecretProjectionV1.cs", + "sourceLines": "12-12", + "members": [ + { + "name": ".ctor", + "kind": "constructor", + "accessibility": "public", + "signature": "public SecretProjectionV1.SecretProjectionV1()", + "returnType": "void", + "sourceFile": "src/Aspire.Hosting.Kubernetes/Resources/SecretProjectionV1.cs", + "sourceLines": "18-18" + }, + { + "name": "Items", + "kind": "property", + "accessibility": "public", + "signature": "public List SecretProjectionV1.Items", + "returnType": "System.Collections.Generic.List", + "hasGet": true, + "docs": { + "summary": [ + { + "kind": "text", + "text": " Gets the key-to-path mappings to project from the Secret. " + } + ] + }, + "sourceFile": "src/Aspire.Hosting.Kubernetes/Resources/SecretProjectionV1.cs", + "sourceLines": "18-18" + }, + { + "name": "Name", + "kind": "property", + "accessibility": "public", + "signature": "public string SecretProjectionV1.Name", + "returnType": "string", + "hasGet": true, + "hasSet": true, + "docs": { + "summary": [ + { + "kind": "text", + "text": " Gets or sets the name of the Secret to project. " + } + ] + }, + "sourceFile": "src/Aspire.Hosting.Kubernetes/Resources/SecretProjectionV1.cs" + }, + { + "name": "Optional", + "kind": "property", + "accessibility": "public", + "signature": "public bool? SecretProjectionV1.Optional", + "returnType": "bool?", + "isReturnNullable": true, + "hasGet": true, + "hasSet": true, + "docs": { + "summary": [ + { + "kind": "text", + "text": " Gets or sets whether the Secret or selected keys are optional. " + } + ] + }, + "sourceFile": "src/Aspire.Hosting.Kubernetes/Resources/SecretProjectionV1.cs" + } + ] + }, { "name": "SecretVolumeSourceV1", "fullName": "Aspire.Hosting.Kubernetes.Resources.SecretVolumeSourceV1", @@ -24821,50 +26848,133 @@ "summary": [ { "kind": "text", - "text": " Represents a Kubernetes Service resource in the v1 API version. " - } - ], - "remarks": [ - { - "kind": "text", - "text": " The Service class is used to define and configure networking Services within a Kubernetes cluster. It inherits common Kubernetes resource attributes from the BaseKubernetesResource class and provides additional specific configurations through its Spec property, which describes the desired behavior of the Service. " + "text": " Represents a Kubernetes Service resource in the v1 API version. " + } + ], + "remarks": [ + { + "kind": "text", + "text": " The Service class is used to define and configure networking Services within a Kubernetes cluster. It inherits common Kubernetes resource attributes from the BaseKubernetesResource class and provides additional specific configurations through its Spec property, which describes the desired behavior of the Service. " + } + ] + }, + "sourceFile": "src/Aspire.Hosting.Kubernetes/Resources/ServiceV1.cs", + "sourceLines": "17-28" + }, + { + "name": "Spec", + "kind": "property", + "accessibility": "public", + "signature": "public ServiceSpecV1 Service.Spec", + "returnType": "Aspire.Hosting.Kubernetes.Resources.ServiceSpecV1", + "hasGet": true, + "hasSet": true, + "docs": { + "summary": [ + { + "kind": "text", + "text": " Represents the specification of the Kubernetes Service resource. " + } + ], + "remarks": [ + { + "kind": "text", + "text": " This property contains the configuration details of the Service, such as ClusterIP, LoadBalancerIP, type, selector, ports, and other service-specific settings. The values are represented by the " + }, + { + "kind": "cref", + "value": "T:Aspire.Hosting.Kubernetes.Resources.ServiceSpecV1" + }, + { + "kind": "text", + "text": " class. " + } + ] + }, + "sourceFile": "src/Aspire.Hosting.Kubernetes/Resources/ServiceV1.cs" + } + ] + }, + { + "name": "ServiceAccountTokenProjectionV1", + "fullName": "Aspire.Hosting.Kubernetes.Resources.ServiceAccountTokenProjectionV1", + "namespace": "Aspire.Hosting.Kubernetes.Resources", + "kind": "class", + "accessibility": "public", + "isSealed": true, + "docs": { + "summary": [ + { + "kind": "text", + "text": " Represents a service account token source within a projected volume. " + } + ] + }, + "sourceFile": "src/Aspire.Hosting.Kubernetes/Resources/ServiceAccountTokenProjectionV1.cs", + "sourceLines": "12-12", + "members": [ + { + "name": ".ctor", + "kind": "constructor", + "accessibility": "public", + "signature": "public ServiceAccountTokenProjectionV1.ServiceAccountTokenProjectionV1()", + "returnType": "void" + }, + { + "name": "Audience", + "kind": "property", + "accessibility": "public", + "signature": "public string? ServiceAccountTokenProjectionV1.Audience", + "returnType": "string?", + "isReturnNullable": true, + "hasGet": true, + "hasSet": true, + "docs": { + "summary": [ + { + "kind": "text", + "text": " Gets or sets the intended audience of the token. " } ] }, - "sourceFile": "src/Aspire.Hosting.Kubernetes/Resources/ServiceV1.cs", - "sourceLines": "17-28" + "sourceFile": "src/Aspire.Hosting.Kubernetes/Resources/ServiceAccountTokenProjectionV1.cs" }, { - "name": "Spec", + "name": "ExpirationSeconds", "kind": "property", "accessibility": "public", - "signature": "public ServiceSpecV1 Service.Spec", - "returnType": "Aspire.Hosting.Kubernetes.Resources.ServiceSpecV1", + "signature": "public long? ServiceAccountTokenProjectionV1.ExpirationSeconds", + "returnType": "long?", + "isReturnNullable": true, "hasGet": true, "hasSet": true, "docs": { "summary": [ { "kind": "text", - "text": " Represents the specification of the Kubernetes Service resource. " + "text": " Gets or sets the requested token expiration time in seconds. " } - ], - "remarks": [ - { - "kind": "text", - "text": " This property contains the configuration details of the Service, such as ClusterIP, LoadBalancerIP, type, selector, ports, and other service-specific settings. The values are represented by the " - }, - { - "kind": "cref", - "value": "T:Aspire.Hosting.Kubernetes.Resources.ServiceSpecV1" - }, + ] + }, + "sourceFile": "src/Aspire.Hosting.Kubernetes/Resources/ServiceAccountTokenProjectionV1.cs" + }, + { + "name": "Path", + "kind": "property", + "accessibility": "public", + "signature": "public string ServiceAccountTokenProjectionV1.Path", + "returnType": "string", + "hasGet": true, + "hasSet": true, + "docs": { + "summary": [ { "kind": "text", - "text": " class. " + "text": " Gets or sets the relative path where the token will be projected. " } ] }, - "sourceFile": "src/Aspire.Hosting.Kubernetes/Resources/ServiceV1.cs" + "sourceFile": "src/Aspire.Hosting.Kubernetes/Resources/ServiceAccountTokenProjectionV1.cs" } ] }, @@ -26045,7 +28155,7 @@ "signature": "public StatefulSetSpecV1.StatefulSetSpecV1()", "returnType": "void", "sourceFile": "src/Aspire.Hosting.Kubernetes/Resources/StatefulSetSpecV1.cs", - "sourceLines": "35-123" + "sourceLines": "35-90" }, { "name": "MinReadySeconds", @@ -26095,8 +28205,9 @@ "name": "PersistentVolumeClaimRetentionPolicy", "kind": "property", "accessibility": "public", - "signature": "public StatefulSetPersistentVolumeClaimRetentionPolicyV1 StatefulSetSpecV1.PersistentVolumeClaimRetentionPolicy", - "returnType": "Aspire.Hosting.Kubernetes.Resources.StatefulSetPersistentVolumeClaimRetentionPolicyV1", + "signature": "public StatefulSetPersistentVolumeClaimRetentionPolicyV1? StatefulSetSpecV1.PersistentVolumeClaimRetentionPolicy", + "returnType": "Aspire.Hosting.Kubernetes.Resources.StatefulSetPersistentVolumeClaimRetentionPolicyV1?", + "isReturnNullable": true, "hasGet": true, "hasSet": true, "docs": { @@ -26109,7 +28220,31 @@ "remarks": [ { "kind": "text", - "text": " Defines how PersistentVolumeClaims should be retained or deleted when the StatefulSet is deleted or scaled down. " + "text": " Defines how PersistentVolumeClaims should be retained or deleted when the StatefulSet is deleted or scaled down. Defaults to " + }, + { + "kind": "langword", + "value": "null" + }, + { + "kind": "text", + "text": " so the property is omitted from the serialized YAML when no retention policy has been configured. Eagerly initializing this to " + }, + { + "kind": "code", + "text": "new()" + }, + { + "kind": "text", + "text": " would otherwise emit an invalid empty " + }, + { + "kind": "code", + "text": "persistentVolumeClaimRetentionPolicy: {}" + }, + { + "kind": "text", + "text": " mapping that Kubernetes rejects on apply. " } ] }, @@ -26258,8 +28393,9 @@ "name": "UpdateStrategy", "kind": "property", "accessibility": "public", - "signature": "public StatefulSetUpdateStrategyV1 StatefulSetSpecV1.UpdateStrategy", - "returnType": "Aspire.Hosting.Kubernetes.Resources.StatefulSetUpdateStrategyV1", + "signature": "public StatefulSetUpdateStrategyV1? StatefulSetSpecV1.UpdateStrategy", + "returnType": "Aspire.Hosting.Kubernetes.Resources.StatefulSetUpdateStrategyV1?", + "isReturnNullable": true, "hasGet": true, "hasSet": true, "docs": { @@ -26268,6 +28404,36 @@ "kind": "text", "text": " Gets or sets the strategy used to update the stateful set's pods. This property specifies how updates to the StatefulSet should be performed. " } + ], + "remarks": [ + { + "kind": "text", + "text": " Defaults to " + }, + { + "kind": "langword", + "value": "null" + }, + { + "kind": "text", + "text": " so the property is omitted from the serialized YAML when no update strategy has been configured. Eagerly initializing this to " + }, + { + "kind": "code", + "text": "new()" + }, + { + "kind": "text", + "text": " would otherwise emit an invalid empty " + }, + { + "kind": "code", + "text": "updateStrategy: {}" + }, + { + "kind": "text", + "text": " mapping that Kubernetes rejects on apply. " + } ] }, "sourceFile": "src/Aspire.Hosting.Kubernetes/Resources/StatefulSetSpecV1.cs" @@ -26329,14 +28495,15 @@ "signature": "public StatefulSetUpdateStrategyV1.StatefulSetUpdateStrategyV1()", "returnType": "void", "sourceFile": "src/Aspire.Hosting.Kubernetes/Resources/StatefulSetUpdateStrategyV1.cs", - "sourceLines": "26-36" + "sourceLines": "40-40" }, { "name": "RollingUpdate", "kind": "property", "accessibility": "public", - "signature": "public RollingUpdateStatefulSetStrategyV1 StatefulSetUpdateStrategyV1.RollingUpdate", - "returnType": "Aspire.Hosting.Kubernetes.Resources.RollingUpdateStatefulSetStrategyV1", + "signature": "public RollingUpdateStatefulSetStrategyV1? StatefulSetUpdateStrategyV1.RollingUpdate", + "returnType": "Aspire.Hosting.Kubernetes.Resources.RollingUpdateStatefulSetStrategyV1?", + "isReturnNullable": true, "hasGet": true, "hasSet": true, "docs": { @@ -26349,7 +28516,31 @@ "remarks": [ { "kind": "text", - "text": " This property defines the parameters for the rolling update process, managing how Pods in a StatefulSet are updated with minimal downtime and service disruption. " + "text": " This property defines the parameters for the rolling update process, managing how Pods in a StatefulSet are updated with minimal downtime and service disruption. Defaults to " + }, + { + "kind": "langword", + "value": "null" + }, + { + "kind": "text", + "text": " so the property is omitted from the serialized YAML when no rolling-update parameters have been configured. Eagerly initializing this to " + }, + { + "kind": "code", + "text": "new()" + }, + { + "kind": "text", + "text": " would otherwise emit an invalid empty " + }, + { + "kind": "code", + "text": "rollingUpdate: {}" + }, + { + "kind": "text", + "text": " mapping that Kubernetes rejects on apply. " } ] }, @@ -27456,16 +29647,15 @@ "kind": "constructor", "accessibility": "public", "signature": "public VolumeNodeAffinityV1.VolumeNodeAffinityV1()", - "returnType": "void", - "sourceFile": "src/Aspire.Hosting.Kubernetes/Resources/VolumeNodeAffinityV1.cs", - "sourceLines": "26-26" + "returnType": "void" }, { "name": "Required", "kind": "property", "accessibility": "public", - "signature": "public NodeSelectorV1 VolumeNodeAffinityV1.Required", - "returnType": "Aspire.Hosting.Kubernetes.Resources.NodeSelectorV1", + "signature": "public NodeSelectorV1? VolumeNodeAffinityV1.Required", + "returnType": "Aspire.Hosting.Kubernetes.Resources.NodeSelectorV1?", + "isReturnNullable": true, "hasGet": true, "hasSet": true, "docs": { @@ -27486,7 +29676,31 @@ }, { "kind": "text", - "text": " object. The criteria are used to determine the nodes on which a Kubernetes volume can be scheduled. It enables the definition of strict scheduling constraints that must be met for a node to be eligible. " + "text": " object. The criteria are used to determine the nodes on which a Kubernetes volume can be scheduled. It enables the definition of strict scheduling constraints that must be met for a node to be eligible. Defaults to " + }, + { + "kind": "langword", + "value": "null" + }, + { + "kind": "text", + "text": " so the property is omitted from the serialized YAML when no required selector has been configured. Eagerly initializing this to " + }, + { + "kind": "code", + "text": "new()" + }, + { + "kind": "text", + "text": " would otherwise emit an invalid empty " + }, + { + "kind": "code", + "text": "required: {}" + }, + { + "kind": "text", + "text": " mapping that Kubernetes rejects on apply. " } ] }, @@ -27494,6 +29708,147 @@ } ] }, + { + "name": "VolumeProjectionV1", + "fullName": "Aspire.Hosting.Kubernetes.Resources.VolumeProjectionV1", + "namespace": "Aspire.Hosting.Kubernetes.Resources", + "kind": "class", + "accessibility": "public", + "isSealed": true, + "docs": { + "summary": [ + { + "kind": "text", + "text": " Represents one source within a Kubernetes projected volume. " + } + ], + "remarks": [ + { + "kind": "text", + "text": " Kubernetes requires exactly one of " + }, + { + "kind": "cref", + "value": "P:Aspire.Hosting.Kubernetes.Resources.VolumeProjectionV1.ConfigMap" + }, + { + "kind": "text", + "text": ", " + }, + { + "kind": "cref", + "value": "P:Aspire.Hosting.Kubernetes.Resources.VolumeProjectionV1.DownwardApi" + }, + { + "kind": "text", + "text": ", " + }, + { + "kind": "cref", + "value": "P:Aspire.Hosting.Kubernetes.Resources.VolumeProjectionV1.Secret" + }, + { + "kind": "text", + "text": ", or " + }, + { + "kind": "cref", + "value": "P:Aspire.Hosting.Kubernetes.Resources.VolumeProjectionV1.ServiceAccountToken" + }, + { + "kind": "text", + "text": " to be set for each projection. " + } + ] + }, + "sourceFile": "src/Aspire.Hosting.Kubernetes/Resources/VolumeProjectionV1.cs", + "sourceLines": "16-16", + "members": [ + { + "name": ".ctor", + "kind": "constructor", + "accessibility": "public", + "signature": "public VolumeProjectionV1.VolumeProjectionV1()", + "returnType": "void" + }, + { + "name": "ConfigMap", + "kind": "property", + "accessibility": "public", + "signature": "public ConfigMapProjectionV1? VolumeProjectionV1.ConfigMap", + "returnType": "Aspire.Hosting.Kubernetes.Resources.ConfigMapProjectionV1?", + "isReturnNullable": true, + "hasGet": true, + "hasSet": true, + "docs": { + "summary": [ + { + "kind": "text", + "text": " Gets or sets the ConfigMap source projected into the volume. " + } + ] + }, + "sourceFile": "src/Aspire.Hosting.Kubernetes/Resources/VolumeProjectionV1.cs" + }, + { + "name": "DownwardApi", + "kind": "property", + "accessibility": "public", + "signature": "public DownwardApiProjectionV1? VolumeProjectionV1.DownwardApi", + "returnType": "Aspire.Hosting.Kubernetes.Resources.DownwardApiProjectionV1?", + "isReturnNullable": true, + "hasGet": true, + "hasSet": true, + "docs": { + "summary": [ + { + "kind": "text", + "text": " Gets or sets the Downward API source projected into the volume. " + } + ] + }, + "sourceFile": "src/Aspire.Hosting.Kubernetes/Resources/VolumeProjectionV1.cs" + }, + { + "name": "Secret", + "kind": "property", + "accessibility": "public", + "signature": "public SecretProjectionV1? VolumeProjectionV1.Secret", + "returnType": "Aspire.Hosting.Kubernetes.Resources.SecretProjectionV1?", + "isReturnNullable": true, + "hasGet": true, + "hasSet": true, + "docs": { + "summary": [ + { + "kind": "text", + "text": " Gets or sets the Secret source projected into the volume. " + } + ] + }, + "sourceFile": "src/Aspire.Hosting.Kubernetes/Resources/VolumeProjectionV1.cs" + }, + { + "name": "ServiceAccountToken", + "kind": "property", + "accessibility": "public", + "signature": "public ServiceAccountTokenProjectionV1? VolumeProjectionV1.ServiceAccountToken", + "returnType": "Aspire.Hosting.Kubernetes.Resources.ServiceAccountTokenProjectionV1?", + "isReturnNullable": true, + "hasGet": true, + "hasSet": true, + "docs": { + "summary": [ + { + "kind": "text", + "text": " Gets or sets the service account token source projected into the volume. " + } + ] + }, + "sourceFile": "src/Aspire.Hosting.Kubernetes/Resources/VolumeProjectionV1.cs" + } + ] + }, { "name": "VolumeResourceRequirementsV1", "fullName": "Aspire.Hosting.Kubernetes.Resources.VolumeResourceRequirementsV1", @@ -27576,7 +29931,7 @@ "summary": [ { "kind": "text", - "text": " Represents a volume configuration definition within a Kubernetes pod. This class allows specifying different types of volume sources such as Image, HostPath, Persistent Volume Claim, ConfigMap, Secret, and others, enabling configuration of data storage in a pod. " + "text": " Represents a volume configuration definition within a Kubernetes pod. This class allows specifying different types of volume sources such as Image, HostPath, Persistent Volume Claim, ConfigMap, Secret, Projected, and others, enabling configuration of data storage in a pod. " } ] }, @@ -27734,6 +30089,31 @@ }, "sourceFile": "src/Aspire.Hosting.Kubernetes/Resources/VolumeV1.cs" }, + { + "name": "Projected", + "kind": "property", + "accessibility": "public", + "signature": "public ProjectedVolumeSourceV1? VolumeV1.Projected", + "returnType": "Aspire.Hosting.Kubernetes.Resources.ProjectedVolumeSourceV1?", + "isReturnNullable": true, + "hasGet": true, + "hasSet": true, + "docs": { + "summary": [ + { + "kind": "text", + "text": " Gets or sets the configuration for a projected volume source. " + } + ], + "remarks": [ + { + "kind": "text", + "text": " Projected volumes combine several volume sources, such as Secrets and ConfigMaps, into a single directory mounted into the pod. " + } + ] + }, + "sourceFile": "src/Aspire.Hosting.Kubernetes/Resources/VolumeV1.cs" + }, { "name": "Secret", "kind": "property", diff --git a/src/frontend/src/data/pkgs/Aspire.Hosting.Maui.13.4.6-preview.1.26319.6.json b/src/frontend/src/data/pkgs/Aspire.Hosting.Maui.13.5.0-preview.1.26417.7.json similarity index 93% rename from src/frontend/src/data/pkgs/Aspire.Hosting.Maui.13.4.6-preview.1.26319.6.json rename to src/frontend/src/data/pkgs/Aspire.Hosting.Maui.13.5.0-preview.1.26417.7.json index fe3ed18d6..0d14db119 100644 --- a/src/frontend/src/data/pkgs/Aspire.Hosting.Maui.13.4.6-preview.1.26319.6.json +++ b/src/frontend/src/data/pkgs/Aspire.Hosting.Maui.13.5.0-preview.1.26417.7.json @@ -1,10 +1,10 @@ { "package": { "name": "Aspire.Hosting.Maui", - "version": "13.4.6-preview.1.26319.6", + "version": "13.5.0-preview.1.26417.7", "targetFramework": "net10.0", "sourceRepository": "https://github.com/microsoft/aspire", - "sourceCommit": "87fe259e4fc244c599019a7b1304c85a1488f248" + "sourceCommit": "e076d8e427cb3afb528dbd605acd74c3aea69f94" }, "types": [ { @@ -136,7 +136,7 @@ }, "examples": [ { - "code": "\n var builder = DistributedApplication.CreateBuilder(args);\n \n var maui = builder.AddMauiProject(\"mauiapp\", \"../MyMauiApp/MyMauiApp.csproj\");\n var androidDevice = maui.AddAndroidDevice();\n \n builder.Build().Run();\n ", + "code": "\n var builder = DistributedApplication.CreateBuilder(args);\n \n var maui = builder.AddMauiProject(\"mauiapp\", \"../MyMauiApp/MyMauiApp.csproj\");\n var androidDevice = maui.AddAndroidDevice();\n \n builder.Build().Run();\n ", "language": "csharp", "description": [ { @@ -271,7 +271,7 @@ }, "examples": [ { - "code": "\n var builder = DistributedApplication.CreateBuilder(args);\n \n var maui = builder.AddMauiProject(\"mauiapp\", \"../MyMauiApp/MyMauiApp.csproj\");\n var device1 = maui.AddAndroidDevice(\"android-device-1\");\n var device2 = maui.AddAndroidDevice(\"android-device-2\");\n \n builder.Build().Run();\n ", + "code": "\n var builder = DistributedApplication.CreateBuilder(args);\n \n var maui = builder.AddMauiProject(\"mauiapp\", \"../MyMauiApp/MyMauiApp.csproj\");\n var device1 = maui.AddAndroidDevice(\"android-device-1\");\n var device2 = maui.AddAndroidDevice(\"android-device-2\");\n \n builder.Build().Run();\n ", "language": "csharp", "description": [ { @@ -415,7 +415,7 @@ }, "examples": [ { - "code": "\n var builder = DistributedApplication.CreateBuilder(args);\n \n var maui = builder.AddMauiProject(\"mauiapp\", \"../MyMauiApp/MyMauiApp.csproj\");\n \n // Default device (only one attached)\n var device1 = maui.AddAndroidDevice(\"android-device-default\");\n \n // Specific device by serial number\n var device2 = maui.AddAndroidDevice(\"android-device-pixel\", \"abc12345\");\n \n // WiFi debugging device\n var device3 = maui.AddAndroidDevice(\"android-device-wifi\", \"192.168.1.100:5555\");\n \n builder.Build().Run();\n ", + "code": "\n var builder = DistributedApplication.CreateBuilder(args);\n \n var maui = builder.AddMauiProject(\"mauiapp\", \"../MyMauiApp/MyMauiApp.csproj\");\n \n // Default device (only one attached)\n var device1 = maui.AddAndroidDevice(\"android-device-default\");\n \n // Specific device by serial number\n var device2 = maui.AddAndroidDevice(\"android-device-pixel\", \"abc12345\");\n \n // WiFi debugging device\n var device3 = maui.AddAndroidDevice(\"android-device-wifi\", \"192.168.1.100:5555\");\n \n builder.Build().Run();\n ", "language": "csharp", "description": [ { @@ -427,7 +427,7 @@ ] }, "sourceFile": "src/Aspire.Hosting.Maui/MauiAndroidExtensions.cs", - "sourceLines": "152-200" + "sourceLines": "152-210" }, { "name": "AddAndroidEmulator", @@ -557,7 +557,7 @@ }, "examples": [ { - "code": "\n var builder = DistributedApplication.CreateBuilder(args);\n \n var maui = builder.AddMauiProject(\"mauiapp\", \"../MyMauiApp/MyMauiApp.csproj\");\n \n // Uses default/running emulator\n var defaultEmulator = maui.AddAndroidEmulator();\n \n builder.Build().Run();\n ", + "code": "\n var builder = DistributedApplication.CreateBuilder(args);\n \n var maui = builder.AddMauiProject(\"mauiapp\", \"../MyMauiApp/MyMauiApp.csproj\");\n \n // Uses default/running emulator\n var defaultEmulator = maui.AddAndroidEmulator();\n \n builder.Build().Run();\n ", "language": "csharp", "description": [ { @@ -569,7 +569,7 @@ ] }, "sourceFile": "src/Aspire.Hosting.Maui/MauiAndroidExtensions.cs", - "sourceLines": "244-247" + "sourceLines": "254-257" }, { "name": "AddAndroidEmulator", @@ -709,7 +709,7 @@ }, "examples": [ { - "code": "\n var builder = DistributedApplication.CreateBuilder(args);\n \n var maui = builder.AddMauiProject(\"mauiapp\", \"../MyMauiApp/MyMauiApp.csproj\");\n var emulator1 = maui.AddAndroidEmulator(\"android-emulator-1\");\n var emulator2 = maui.AddAndroidEmulator(\"android-emulator-2\");\n \n builder.Build().Run();\n ", + "code": "\n var builder = DistributedApplication.CreateBuilder(args);\n \n var maui = builder.AddMauiProject(\"mauiapp\", \"../MyMauiApp/MyMauiApp.csproj\");\n var emulator1 = maui.AddAndroidEmulator(\"android-emulator-1\");\n var emulator2 = maui.AddAndroidEmulator(\"android-emulator-2\");\n \n builder.Build().Run();\n ", "language": "csharp", "description": [ { @@ -721,7 +721,7 @@ ] }, "sourceFile": "src/Aspire.Hosting.Maui/MauiAndroidExtensions.cs", - "sourceLines": "293-293" + "sourceLines": "303-303" }, { "name": "AddAndroidEmulator", @@ -861,7 +861,7 @@ }, "examples": [ { - "code": "\n var builder = DistributedApplication.CreateBuilder(args);\n \n var maui = builder.AddMauiProject(\"mauiapp\", \"../MyMauiApp/MyMauiApp.csproj\");\n \n // Default emulator\n var emulator1 = maui.AddAndroidEmulator(\"android-emulator-default\");\n \n // Specific Pixel 5 emulator\n var emulator2 = maui.AddAndroidEmulator(\"android-emulator-pixel5\", \"Pixel_5_API_33\");\n \n // Specific emulator by serial\n var emulator3 = maui.AddAndroidEmulator(\"android-emulator-5554\", \"emulator-5554\");\n \n builder.Build().Run();\n ", + "code": "\n var builder = DistributedApplication.CreateBuilder(args);\n \n var maui = builder.AddMauiProject(\"mauiapp\", \"../MyMauiApp/MyMauiApp.csproj\");\n \n // Default emulator\n var emulator1 = maui.AddAndroidEmulator(\"android-emulator-default\");\n \n // Specific Pixel 5 emulator\n var emulator2 = maui.AddAndroidEmulator(\"android-emulator-pixel5\", \"Pixel_5_API_33\");\n \n // Specific emulator by serial\n var emulator3 = maui.AddAndroidEmulator(\"android-emulator-5554\", \"emulator-5554\");\n \n builder.Build().Run();\n ", "language": "csharp", "description": [ { @@ -873,7 +873,7 @@ ] }, "sourceFile": "src/Aspire.Hosting.Maui/MauiAndroidExtensions.cs", - "sourceLines": "347-395" + "sourceLines": "357-415" } ] }, @@ -1007,7 +1007,7 @@ }, "examples": [ { - "code": "\n var builder = DistributedApplication.CreateBuilder(args);\n \n var maui = builder.AddMauiProject(\"mauiapp\", \"../MyMauiApp/MyMauiApp.csproj\");\n var iOSDevice = maui.AddiOSDevice();\n \n builder.Build().Run();\n ", + "code": "\n var builder = DistributedApplication.CreateBuilder(args);\n \n var maui = builder.AddMauiProject(\"mauiapp\", \"../MyMauiApp/MyMauiApp.csproj\");\n var iOSDevice = maui.AddiOSDevice();\n \n builder.Build().Run();\n ", "language": "csharp", "description": [ { @@ -1143,7 +1143,7 @@ }, "examples": [ { - "code": "\n var builder = DistributedApplication.CreateBuilder(args);\n \n var maui = builder.AddMauiProject(\"mauiapp\", \"../MyMauiApp/MyMauiApp.csproj\");\n var device1 = maui.AddiOSDevice(\"ios-device-1\");\n var device2 = maui.AddiOSDevice(\"ios-device-2\");\n \n builder.Build().Run();\n ", + "code": "\n var builder = DistributedApplication.CreateBuilder(args);\n \n var maui = builder.AddMauiProject(\"mauiapp\", \"../MyMauiApp/MyMauiApp.csproj\");\n var device1 = maui.AddiOSDevice(\"ios-device-1\");\n var device2 = maui.AddiOSDevice(\"ios-device-2\");\n \n builder.Build().Run();\n ", "language": "csharp", "description": [ { @@ -1271,7 +1271,7 @@ }, "examples": [ { - "code": "\n var builder = DistributedApplication.CreateBuilder(args);\n \n var maui = builder.AddMauiProject(\"mauiapp\", \"../MyMauiApp/MyMauiApp.csproj\");\n \n // Default device (only one attached)\n var device1 = maui.AddiOSDevice(\"ios-device-default\");\n \n // Specific device by UDID\n var device2 = maui.AddiOSDevice(\"ios-device-iphone13\", \"00008030-001234567890123A\");\n \n builder.Build().Run();\n ", + "code": "\n var builder = DistributedApplication.CreateBuilder(args);\n \n var maui = builder.AddMauiProject(\"mauiapp\", \"../MyMauiApp/MyMauiApp.csproj\");\n \n // Default device (only one attached)\n var device1 = maui.AddiOSDevice(\"ios-device-default\");\n \n // Specific device by UDID\n var device2 = maui.AddiOSDevice(\"ios-device-iphone13\", \"00008030-001234567890123A\");\n \n builder.Build().Run();\n ", "language": "csharp", "description": [ { @@ -1283,7 +1283,7 @@ ] }, "sourceFile": "src/Aspire.Hosting.Maui/MauiiOSExtensions.cs", - "sourceLines": "159-223" + "sourceLines": "159-238" }, { "name": "AddiOSSimulator", @@ -1388,7 +1388,7 @@ }, "examples": [ { - "code": "\n var builder = DistributedApplication.CreateBuilder(args);\n \n var maui = builder.AddMauiProject(\"mauiapp\", \"../MyMauiApp/MyMauiApp.csproj\");\n var iOSSimulator = maui.AddiOSSimulator();\n \n builder.Build().Run();\n ", + "code": "\n var builder = DistributedApplication.CreateBuilder(args);\n \n var maui = builder.AddMauiProject(\"mauiapp\", \"../MyMauiApp/MyMauiApp.csproj\");\n var iOSSimulator = maui.AddiOSSimulator();\n \n builder.Build().Run();\n ", "language": "csharp", "description": [ { @@ -1400,7 +1400,7 @@ ] }, "sourceFile": "src/Aspire.Hosting.Maui/MauiiOSExtensions.cs", - "sourceLines": "262-265" + "sourceLines": "277-280" }, { "name": "AddiOSSimulator", @@ -1515,7 +1515,7 @@ }, "examples": [ { - "code": "\n var builder = DistributedApplication.CreateBuilder(args);\n \n var maui = builder.AddMauiProject(\"mauiapp\", \"../MyMauiApp/MyMauiApp.csproj\");\n var simulator1 = maui.AddiOSSimulator(\"ios-simulator-1\");\n var simulator2 = maui.AddiOSSimulator(\"ios-simulator-2\");\n \n builder.Build().Run();\n ", + "code": "\n var builder = DistributedApplication.CreateBuilder(args);\n \n var maui = builder.AddMauiProject(\"mauiapp\", \"../MyMauiApp/MyMauiApp.csproj\");\n var simulator1 = maui.AddiOSSimulator(\"ios-simulator-1\");\n var simulator2 = maui.AddiOSSimulator(\"ios-simulator-2\");\n \n builder.Build().Run();\n ", "language": "csharp", "description": [ { @@ -1527,7 +1527,7 @@ ] }, "sourceFile": "src/Aspire.Hosting.Maui/MauiiOSExtensions.cs", - "sourceLines": "308-308" + "sourceLines": "323-323" }, { "name": "AddiOSSimulator", @@ -1634,7 +1634,7 @@ }, "examples": [ { - "code": "\n var builder = DistributedApplication.CreateBuilder(args);\n \n var maui = builder.AddMauiProject(\"mauiapp\", \"../MyMauiApp/MyMauiApp.csproj\");\n \n // Default simulator\n var simulator1 = maui.AddiOSSimulator(\"ios-simulator-default\");\n \n // Specific simulator by UDID\n var simulator2 = maui.AddiOSSimulator(\"ios-simulator-iphone15\", \"E25BBE37-69BA-4720-B6FD-D54C97791E79\");\n \n builder.Build().Run();\n ", + "code": "\n var builder = DistributedApplication.CreateBuilder(args);\n \n var maui = builder.AddMauiProject(\"mauiapp\", \"../MyMauiApp/MyMauiApp.csproj\");\n \n // Default simulator\n var simulator1 = maui.AddiOSSimulator(\"ios-simulator-default\");\n \n // Specific simulator by UDID\n var simulator2 = maui.AddiOSSimulator(\"ios-simulator-iphone15\", \"E25BBE37-69BA-4720-B6FD-D54C97791E79\");\n \n builder.Build().Run();\n ", "language": "csharp", "description": [ { @@ -1646,7 +1646,7 @@ ] }, "sourceFile": "src/Aspire.Hosting.Maui/MauiiOSExtensions.cs", - "sourceLines": "355-415" + "sourceLines": "370-440" } ] }, @@ -1762,7 +1762,7 @@ }, "examples": [ { - "code": "\n var builder = DistributedApplication.CreateBuilder(args);\n \n var maui = builder.AddMauiProject(\"mauiapp\", \"../MyMauiApp/MyMauiApp.csproj\");\n var macCatalystDevice = maui.AddMacCatalystDevice();\n \n builder.Build().Run();\n ", + "code": "\n var builder = DistributedApplication.CreateBuilder(args);\n \n var maui = builder.AddMauiProject(\"mauiapp\", \"../MyMauiApp/MyMauiApp.csproj\");\n var macCatalystDevice = maui.AddMacCatalystDevice();\n \n builder.Build().Run();\n ", "language": "csharp", "description": [ { @@ -1860,7 +1860,7 @@ }, "examples": [ { - "code": "\n var builder = DistributedApplication.CreateBuilder(args);\n \n var maui = builder.AddMauiProject(\"mauiapp\", \"../MyMauiApp/MyMauiApp.csproj\");\n var macCatalystDevice1 = maui.AddMacCatalystDevice(\"maccatalyst-device-1\");\n var macCatalystDevice2 = maui.AddMacCatalystDevice(\"maccatalyst-device-2\");\n \n builder.Build().Run();\n ", + "code": "\n var builder = DistributedApplication.CreateBuilder(args);\n \n var maui = builder.AddMauiProject(\"mauiapp\", \"../MyMauiApp/MyMauiApp.csproj\");\n var macCatalystDevice1 = maui.AddMacCatalystDevice(\"maccatalyst-device-1\");\n var macCatalystDevice2 = maui.AddMacCatalystDevice(\"maccatalyst-device-2\");\n \n builder.Build().Run();\n ", "language": "csharp", "description": [ { @@ -1872,7 +1872,7 @@ ] }, "sourceFile": "src/Aspire.Hosting.Maui/MauiMacCatalystExtensions.cs", - "sourceLines": "83-110" + "sourceLines": "83-120" } ] }, @@ -1892,7 +1892,7 @@ ] }, "sourceFile": "src/Aspire.Hosting.Maui/MauiOtlpExtensions.cs", - "sourceLines": "15-15", + "sourceLines": "17-17", "members": [ { "name": "WithOtlpDevTunnel", @@ -2016,7 +2016,7 @@ ] }, "sourceFile": "src/Aspire.Hosting.Maui/MauiOtlpExtensions.cs", - "sourceLines": "57-75" + "sourceLines": "59-77" } ] }, @@ -2036,7 +2036,7 @@ ] }, "sourceFile": "src/Aspire.Hosting.Maui/MauiProjectResourceExtensions.cs", - "sourceLines": "12-12", + "sourceLines": "13-13", "members": [ { "name": "AddMauiProject", @@ -2144,7 +2144,7 @@ ] }, "sourceFile": "src/Aspire.Hosting.Maui/MauiProjectResourceExtensions.cs", - "sourceLines": "52-64" + "sourceLines": "53-70" } ] }, @@ -2260,7 +2260,7 @@ }, "examples": [ { - "code": "\n var builder = DistributedApplication.CreateBuilder(args);\n \n var maui = builder.AddMauiProject(\"mauiapp\", \"../MyMauiApp/MyMauiApp.csproj\");\n var windowsDevice = maui.AddWindowsDevice();\n \n builder.Build().Run();\n ", + "code": "\n var builder = DistributedApplication.CreateBuilder(args);\n \n var maui = builder.AddMauiProject(\"mauiapp\", \"../MyMauiApp/MyMauiApp.csproj\");\n var windowsDevice = maui.AddWindowsDevice();\n \n builder.Build().Run();\n ", "language": "csharp", "description": [ { @@ -2358,7 +2358,7 @@ }, "examples": [ { - "code": "\n var builder = DistributedApplication.CreateBuilder(args);\n \n var maui = builder.AddMauiProject(\"mauiapp\", \"../MyMauiApp/MyMauiApp.csproj\");\n var windowsDevice1 = maui.AddWindowsDevice(\"windows-device-1\");\n var windowsDevice2 = maui.AddWindowsDevice(\"windows-device-2\");\n \n builder.Build().Run();\n ", + "code": "\n var builder = DistributedApplication.CreateBuilder(args);\n \n var maui = builder.AddMauiProject(\"mauiapp\", \"../MyMauiApp/MyMauiApp.csproj\");\n var windowsDevice1 = maui.AddWindowsDevice(\"windows-device-1\");\n var windowsDevice2 = maui.AddWindowsDevice(\"windows-device-2\");\n \n builder.Build().Run();\n ", "language": "csharp", "description": [ { @@ -2370,7 +2370,7 @@ ] }, "sourceFile": "src/Aspire.Hosting.Maui/MauiWindowsExtensions.cs", - "sourceLines": "83-109" + "sourceLines": "83-115" } ] }, diff --git a/src/frontend/src/data/pkgs/Aspire.Hosting.Milvus.13.4.6.json b/src/frontend/src/data/pkgs/Aspire.Hosting.Milvus.13.5.0.json similarity index 99% rename from src/frontend/src/data/pkgs/Aspire.Hosting.Milvus.13.4.6.json rename to src/frontend/src/data/pkgs/Aspire.Hosting.Milvus.13.5.0.json index e65786af4..0e9b4fc4b 100644 --- a/src/frontend/src/data/pkgs/Aspire.Hosting.Milvus.13.4.6.json +++ b/src/frontend/src/data/pkgs/Aspire.Hosting.Milvus.13.5.0.json @@ -1,10 +1,10 @@ { "package": { "name": "Aspire.Hosting.Milvus", - "version": "13.4.6", + "version": "13.5.0", "targetFramework": "net10.0", "sourceRepository": "https://github.com/microsoft/aspire", - "sourceCommit": "87fe259e4fc244c599019a7b1304c85a1488f248" + "sourceCommit": "e076d8e427cb3afb528dbd605acd74c3aea69f94" }, "types": [ { @@ -121,7 +121,7 @@ } }, "sourceFile": "src/Aspire.Hosting.Milvus/MilvusBuilderExtensions.cs", - "sourceLines": "103-111" + "sourceLines": "104-113" }, { "name": "AddMilvus", @@ -247,7 +247,7 @@ } }, "sourceFile": "src/Aspire.Hosting.Milvus/MilvusBuilderExtensions.cs", - "sourceLines": "49-72" + "sourceLines": "49-73" }, { "name": "WithAttu", @@ -358,7 +358,7 @@ } }, "sourceFile": "src/Aspire.Hosting.Milvus/MilvusBuilderExtensions.cs", - "sourceLines": "142-156" + "sourceLines": "144-159" }, { "name": "WithConfigurationBindMount", @@ -424,7 +424,7 @@ } }, "sourceFile": "src/Aspire.Hosting.Milvus/MilvusBuilderExtensions.cs", - "sourceLines": "201-204" + "sourceLines": "204-207" }, { "name": "WithConfigurationFile", @@ -487,7 +487,7 @@ } }, "sourceFile": "src/Aspire.Hosting.Milvus/MilvusBuilderExtensions.cs", - "sourceLines": "217-226" + "sourceLines": "220-229" }, { "name": "WithDataBindMount", @@ -562,7 +562,7 @@ } }, "sourceFile": "src/Aspire.Hosting.Milvus/MilvusBuilderExtensions.cs", - "sourceLines": "186-189" + "sourceLines": "189-192" }, { "name": "WithDataVolume", @@ -639,7 +639,7 @@ } }, "sourceFile": "src/Aspire.Hosting.Milvus/MilvusBuilderExtensions.cs", - "sourceLines": "170-172" + "sourceLines": "173-175" } ] }, diff --git a/src/frontend/src/data/pkgs/Aspire.Hosting.MongoDB.13.4.6.json b/src/frontend/src/data/pkgs/Aspire.Hosting.MongoDB.13.5.0.json similarity index 99% rename from src/frontend/src/data/pkgs/Aspire.Hosting.MongoDB.13.4.6.json rename to src/frontend/src/data/pkgs/Aspire.Hosting.MongoDB.13.5.0.json index 01b4e13ef..ea81fa038 100644 --- a/src/frontend/src/data/pkgs/Aspire.Hosting.MongoDB.13.4.6.json +++ b/src/frontend/src/data/pkgs/Aspire.Hosting.MongoDB.13.5.0.json @@ -1,10 +1,10 @@ { "package": { "name": "Aspire.Hosting.MongoDB", - "version": "13.4.6", + "version": "13.5.0", "targetFramework": "net10.0", "sourceRepository": "https://github.com/microsoft/aspire", - "sourceCommit": "87fe259e4fc244c599019a7b1304c85a1488f248" + "sourceCommit": "e076d8e427cb3afb528dbd605acd74c3aea69f94" }, "types": [ { @@ -114,7 +114,7 @@ } }, "sourceFile": "src/Aspire.Hosting.MongoDB/MongoDBBuilderExtensions.cs", - "sourceLines": "109-142" + "sourceLines": "110-144" }, { "name": "AddMongoDB", @@ -352,7 +352,7 @@ } }, "sourceFile": "src/Aspire.Hosting.MongoDB/MongoDBBuilderExtensions.cs", - "sourceLines": "58-95" + "sourceLines": "58-96" }, { "name": "WithDataBindMount", @@ -427,7 +427,7 @@ } }, "sourceFile": "src/Aspire.Hosting.MongoDB/MongoDBBuilderExtensions.cs", - "sourceLines": "223-226" + "sourceLines": "226-229" }, { "name": "WithDataVolume", @@ -504,7 +504,7 @@ } }, "sourceFile": "src/Aspire.Hosting.MongoDB/MongoDBBuilderExtensions.cs", - "sourceLines": "207-209" + "sourceLines": "210-212" }, { "name": "WithHostPort", @@ -576,7 +576,7 @@ } }, "sourceFile": "src/Aspire.Hosting.MongoDB/MongoDBBuilderExtensions.cs", - "sourceLines": "188-193" + "sourceLines": "191-196" }, { "name": "WithInitBindMount", @@ -674,7 +674,7 @@ } }, "sourceFile": "src/Aspire.Hosting.MongoDB/MongoDBBuilderExtensions.cs", - "sourceLines": "241-244" + "sourceLines": "244-247" }, { "name": "WithInitFiles", @@ -737,7 +737,7 @@ } }, "sourceFile": "src/Aspire.Hosting.MongoDB/MongoDBBuilderExtensions.cs", - "sourceLines": "257-264" + "sourceLines": "260-267" }, { "name": "WithMongoExpress", @@ -839,7 +839,7 @@ } }, "sourceFile": "src/Aspire.Hosting.MongoDB/MongoDBBuilderExtensions.cs", - "sourceLines": "160-175" + "sourceLines": "162-178" } ] }, diff --git a/src/frontend/src/data/pkgs/Aspire.Hosting.MySql.13.4.6.json b/src/frontend/src/data/pkgs/Aspire.Hosting.MySql.13.5.0.json similarity index 99% rename from src/frontend/src/data/pkgs/Aspire.Hosting.MySql.13.4.6.json rename to src/frontend/src/data/pkgs/Aspire.Hosting.MySql.13.5.0.json index 040e10dbf..eda5aac4b 100644 --- a/src/frontend/src/data/pkgs/Aspire.Hosting.MySql.13.4.6.json +++ b/src/frontend/src/data/pkgs/Aspire.Hosting.MySql.13.5.0.json @@ -1,10 +1,10 @@ { "package": { "name": "Aspire.Hosting.MySql", - "version": "13.4.6", + "version": "13.5.0", "targetFramework": "net10.0", "sourceRepository": "https://github.com/microsoft/aspire", - "sourceCommit": "87fe259e4fc244c599019a7b1304c85a1488f248" + "sourceCommit": "e076d8e427cb3afb528dbd605acd74c3aea69f94" }, "types": [ { @@ -158,7 +158,7 @@ } }, "sourceFile": "src/Aspire.Hosting.MySql/MySqlBuilderExtensions.cs", - "sourceLines": "118-145" + "sourceLines": "118-146" }, { "name": "AddMySql", @@ -357,7 +357,7 @@ } }, "sourceFile": "src/Aspire.Hosting.MySql/MySqlBuilderExtensions.cs", - "sourceLines": "193-198" + "sourceLines": "205-210" }, { "name": "WithDataBindMount", @@ -432,7 +432,7 @@ } }, "sourceFile": "src/Aspire.Hosting.MySql/MySqlBuilderExtensions.cs", - "sourceLines": "356-359" + "sourceLines": "368-371" }, { "name": "WithDataVolume", @@ -509,7 +509,7 @@ } }, "sourceFile": "src/Aspire.Hosting.MySql/MySqlBuilderExtensions.cs", - "sourceLines": "340-342" + "sourceLines": "352-354" }, { "name": "WithHostPort", @@ -573,7 +573,7 @@ } }, "sourceFile": "src/Aspire.Hosting.MySql/MySqlBuilderExtensions.cs", - "sourceLines": "321-326" + "sourceLines": "333-338" }, { "name": "WithInitBindMount", @@ -651,7 +651,7 @@ } }, "sourceFile": "src/Aspire.Hosting.MySql/MySqlBuilderExtensions.cs", - "sourceLines": "372-375" + "sourceLines": "384-387" }, { "name": "WithInitFiles", @@ -714,7 +714,7 @@ } }, "sourceFile": "src/Aspire.Hosting.MySql/MySqlBuilderExtensions.cs", - "sourceLines": "388-395" + "sourceLines": "400-407" }, { "name": "WithPassword", @@ -777,7 +777,7 @@ } }, "sourceFile": "src/Aspire.Hosting.MySql/MySqlBuilderExtensions.cs", - "sourceLines": "211-215" + "sourceLines": "223-227" }, { "name": "WithPhpMyAdmin", @@ -879,7 +879,7 @@ } }, "sourceFile": "src/Aspire.Hosting.MySql/MySqlBuilderExtensions.cs", - "sourceLines": "232-309" + "sourceLines": "244-321" } ] }, diff --git a/src/frontend/src/data/pkgs/Aspire.Hosting.Nats.13.4.6.json b/src/frontend/src/data/pkgs/Aspire.Hosting.Nats.13.5.0.json similarity index 99% rename from src/frontend/src/data/pkgs/Aspire.Hosting.Nats.13.4.6.json rename to src/frontend/src/data/pkgs/Aspire.Hosting.Nats.13.5.0.json index c35d8ff90..030b0eab5 100644 --- a/src/frontend/src/data/pkgs/Aspire.Hosting.Nats.13.4.6.json +++ b/src/frontend/src/data/pkgs/Aspire.Hosting.Nats.13.5.0.json @@ -1,10 +1,10 @@ { "package": { "name": "Aspire.Hosting.Nats", - "version": "13.4.6", + "version": "13.5.0", "targetFramework": "net10.0", "sourceRepository": "https://github.com/microsoft/aspire", - "sourceCommit": "87fe259e4fc244c599019a7b1304c85a1488f248" + "sourceCommit": "e076d8e427cb3afb528dbd605acd74c3aea69f94" }, "types": [ { @@ -262,7 +262,7 @@ } }, "sourceFile": "src/Aspire.Hosting.Nats/NatsBuilderExtensions.cs", - "sourceLines": "55-107" + "sourceLines": "55-108" }, { "name": "WithDataBindMount", @@ -337,7 +337,7 @@ } }, "sourceFile": "src/Aspire.Hosting.Nats/NatsBuilderExtensions.cs", - "sourceLines": "187-191" + "sourceLines": "188-192" }, { "name": "WithDataVolume", @@ -414,7 +414,7 @@ } }, "sourceFile": "src/Aspire.Hosting.Nats/NatsBuilderExtensions.cs", - "sourceLines": "169-173" + "sourceLines": "170-174" }, { "name": "WithJetStream", @@ -482,7 +482,7 @@ } }, "sourceFile": "src/Aspire.Hosting.Nats/NatsBuilderExtensions.cs", - "sourceLines": "131-141" + "sourceLines": "132-142" }, { "name": "WithJetStream", @@ -535,7 +535,7 @@ } }, "sourceFile": "src/Aspire.Hosting.Nats/NatsBuilderExtensions.cs", - "sourceLines": "153-155" + "sourceLines": "154-156" } ] }, diff --git a/src/frontend/src/data/pkgs/Aspire.Hosting.OpenAI.13.4.6.json b/src/frontend/src/data/pkgs/Aspire.Hosting.OpenAI.13.5.0.json similarity index 98% rename from src/frontend/src/data/pkgs/Aspire.Hosting.OpenAI.13.4.6.json rename to src/frontend/src/data/pkgs/Aspire.Hosting.OpenAI.13.5.0.json index fe39155bb..6d942573b 100644 --- a/src/frontend/src/data/pkgs/Aspire.Hosting.OpenAI.13.4.6.json +++ b/src/frontend/src/data/pkgs/Aspire.Hosting.OpenAI.13.5.0.json @@ -1,10 +1,10 @@ { "package": { "name": "Aspire.Hosting.OpenAI", - "version": "13.4.6", + "version": "13.5.0", "targetFramework": "net10.0", "sourceRepository": "https://github.com/microsoft/aspire", - "sourceCommit": "87fe259e4fc244c599019a7b1304c85a1488f248" + "sourceCommit": "e076d8e427cb3afb528dbd605acd74c3aea69f94" }, "types": [ { @@ -88,7 +88,7 @@ } }, "sourceFile": "src/Aspire.Hosting.OpenAI/OpenAIExtensions.cs", - "sourceLines": "106-136" + "sourceLines": "107-138" }, { "name": "AddOpenAI", @@ -151,7 +151,7 @@ } }, "sourceFile": "src/Aspire.Hosting.OpenAI/OpenAIExtensions.cs", - "sourceLines": "25-93" + "sourceLines": "25-94" }, { "name": "WithApiKey", @@ -186,7 +186,7 @@ ] }, "sourceFile": "src/Aspire.Hosting.OpenAI/OpenAIExtensions.cs", - "sourceLines": "160-176" + "sourceLines": "162-178" }, { "name": "WithEndpoint", @@ -235,7 +235,7 @@ } }, "sourceFile": "src/Aspire.Hosting.OpenAI/OpenAIExtensions.cs", - "sourceLines": "147-151" + "sourceLines": "149-153" }, { "name": "WithHealthCheck", @@ -354,7 +354,7 @@ } }, "sourceFile": "src/Aspire.Hosting.OpenAI/OpenAIExtensions.cs", - "sourceLines": "203-237" + "sourceLines": "205-239" } ] }, diff --git a/src/frontend/src/data/pkgs/Aspire.Hosting.Oracle.13.4.6.json b/src/frontend/src/data/pkgs/Aspire.Hosting.Oracle.13.5.0.json similarity index 99% rename from src/frontend/src/data/pkgs/Aspire.Hosting.Oracle.13.4.6.json rename to src/frontend/src/data/pkgs/Aspire.Hosting.Oracle.13.5.0.json index 486d87e40..b94ca3ed8 100644 --- a/src/frontend/src/data/pkgs/Aspire.Hosting.Oracle.13.4.6.json +++ b/src/frontend/src/data/pkgs/Aspire.Hosting.Oracle.13.5.0.json @@ -1,10 +1,10 @@ { "package": { "name": "Aspire.Hosting.Oracle", - "version": "13.4.6", + "version": "13.5.0", "targetFramework": "net10.0", "sourceRepository": "https://github.com/microsoft/aspire", - "sourceCommit": "87fe259e4fc244c599019a7b1304c85a1488f248" + "sourceCommit": "e076d8e427cb3afb528dbd605acd74c3aea69f94" }, "types": [ { @@ -114,7 +114,7 @@ } }, "sourceFile": "src/Aspire.Hosting.Oracle/OracleDatabaseBuilderExtensions.cs", - "sourceLines": "85-93" + "sourceLines": "85-94" }, { "name": "AddOracle", @@ -298,7 +298,7 @@ } }, "sourceFile": "src/Aspire.Hosting.Oracle/OracleDatabaseBuilderExtensions.cs", - "sourceLines": "121-124" + "sourceLines": "122-125" }, { "name": "WithDataVolume", @@ -363,7 +363,7 @@ } }, "sourceFile": "src/Aspire.Hosting.Oracle/OracleDatabaseBuilderExtensions.cs", - "sourceLines": "106-108" + "sourceLines": "107-109" }, { "name": "WithDbSetupBindMount", @@ -426,7 +426,7 @@ } }, "sourceFile": "src/Aspire.Hosting.Oracle/OracleDatabaseBuilderExtensions.cs", - "sourceLines": "172-175" + "sourceLines": "173-176" }, { "name": "WithInitBindMount", @@ -492,7 +492,7 @@ } }, "sourceFile": "src/Aspire.Hosting.Oracle/OracleDatabaseBuilderExtensions.cs", - "sourceLines": "136-139" + "sourceLines": "137-140" }, { "name": "WithInitFiles", @@ -555,7 +555,7 @@ } }, "sourceFile": "src/Aspire.Hosting.Oracle/OracleDatabaseBuilderExtensions.cs", - "sourceLines": "152-159" + "sourceLines": "153-160" } ] }, diff --git a/src/frontend/src/data/pkgs/Aspire.Hosting.Orleans.13.4.6.json b/src/frontend/src/data/pkgs/Aspire.Hosting.Orleans.13.5.0.json similarity index 94% rename from src/frontend/src/data/pkgs/Aspire.Hosting.Orleans.13.4.6.json rename to src/frontend/src/data/pkgs/Aspire.Hosting.Orleans.13.5.0.json index de42507e2..fdefb97af 100644 --- a/src/frontend/src/data/pkgs/Aspire.Hosting.Orleans.13.4.6.json +++ b/src/frontend/src/data/pkgs/Aspire.Hosting.Orleans.13.5.0.json @@ -1,10 +1,10 @@ { "package": { "name": "Aspire.Hosting.Orleans", - "version": "13.4.6", + "version": "13.5.0", "targetFramework": "net10.0", "sourceRepository": "https://github.com/microsoft/aspire", - "sourceCommit": "87fe259e4fc244c599019a7b1304c85a1488f248" + "sourceCommit": "e076d8e427cb3afb528dbd605acd74c3aea69f94" }, "types": [ { @@ -237,7 +237,7 @@ } }, "sourceFile": "src/Aspire.Hosting.Orleans/OrleansServiceExtensions.cs", - "sourceLines": "370-370" + "sourceLines": "403-403" }, { "name": "WithBroadcastChannel", @@ -1260,6 +1260,123 @@ "sourceFile": "src/Aspire.Hosting.Orleans/OrleansServiceExtensions.cs", "sourceLines": "244-244" }, + { + "name": "WithOrleansProviderType", + "kind": "method", + "accessibility": "public", + "signature": "public static IResourceBuilder OrleansServiceExtensions.WithOrleansProviderType(this IResourceBuilder builder, string providerType)", + "returnType": "Aspire.Hosting.ApplicationModel.IResourceBuilder", + "isStatic": true, + "isExtension": true, + "parameters": [ + { + "name": "builder", + "type": "Aspire.Hosting.ApplicationModel.IResourceBuilder", + "modifier": "this" + }, + { + "name": "providerType", + "type": "string" + } + ], + "genericParameters": [ + { + "name": "T", + "constraints": [ + "Aspire.Hosting.ApplicationModel.IResourceWithConnectionString" + ] + } + ], + "attributes": [ + { + "name": "Aspire.Hosting.AspireExportAttribute" + } + ], + "docs": { + "summary": [ + { + "kind": "text", + "text": " Configures a resource to use the specified Orleans provider type. " + } + ], + "remarks": [ + { + "kind": "text", + "text": " Use this when a resource can be used as a drop-in replacement for an Orleans provider type that is inferred from a different resource name. For example, Garnet can be used wherever Orleans expects a Redis provider. " + } + ], + "returns": [ + { + "kind": "text", + "text": "The resource builder." + } + ], + "parameters": { + "builder": [ + { + "kind": "text", + "text": "The connection-string resource builder." + } + ], + "providerType": [ + { + "kind": "text", + "text": "The Orleans provider type to use for the resource." + } + ] + }, + "exceptions": [ + { + "type": "T:System.ArgumentNullException", + "description": [ + { + "kind": "text", + "text": "Thrown when " + }, + { + "kind": "paramref", + "value": "builder" + }, + { + "kind": "text", + "text": " is null." + } + ] + }, + { + "type": "T:System.ArgumentException", + "description": [ + { + "kind": "text", + "text": "Thrown when " + }, + { + "kind": "paramref", + "value": "providerType" + }, + { + "kind": "text", + "text": " is null, empty, or consists only of white-space characters." + } + ] + } + ], + "examples": [ + { + "code": "\n var garnet = builder.AddGarnet(\"garnet\")\n .WithOrleansProviderType(\"Redis\");\n \n var orleans = builder.AddOrleans(\"orleans\")\n .WithClustering(garnet);\n ", + "language": "csharp", + "description": [ + { + "kind": "text", + "text": "Configure a Garnet resource as a Redis Orleans provider:" + } + ] + } + ] + }, + "sourceFile": "src/Aspire.Hosting.Orleans/OrleansServiceExtensions.cs", + "sourceLines": "389-392" + }, { "name": "WithReference", "kind": "method", @@ -1336,7 +1453,7 @@ ] }, "sourceFile": "src/Aspire.Hosting.Orleans/OrleansServiceExtensions.cs", - "sourceLines": "386-386" + "sourceLines": "419-419" }, { "name": "WithReminders", diff --git a/src/frontend/src/data/pkgs/Aspire.Hosting.PostgreSQL.13.4.6.json b/src/frontend/src/data/pkgs/Aspire.Hosting.PostgreSQL.13.5.0.json similarity index 99% rename from src/frontend/src/data/pkgs/Aspire.Hosting.PostgreSQL.13.4.6.json rename to src/frontend/src/data/pkgs/Aspire.Hosting.PostgreSQL.13.5.0.json index dc3f319b1..49857fbbd 100644 --- a/src/frontend/src/data/pkgs/Aspire.Hosting.PostgreSQL.13.4.6.json +++ b/src/frontend/src/data/pkgs/Aspire.Hosting.PostgreSQL.13.5.0.json @@ -1,10 +1,10 @@ { "package": { "name": "Aspire.Hosting.PostgreSQL", - "version": "13.4.6", + "version": "13.5.0", "targetFramework": "net10.0", "sourceRepository": "https://github.com/microsoft/aspire", - "sourceCommit": "87fe259e4fc244c599019a7b1304c85a1488f248" + "sourceCommit": "e076d8e427cb3afb528dbd605acd74c3aea69f94" }, "types": [ { @@ -150,7 +150,7 @@ } }, "sourceFile": "src/Aspire.Hosting.PostgreSQL/PostgresBuilderExtensions.cs", - "sourceLines": "150-177" + "sourceLines": "150-178" }, { "name": "AddPostgres", @@ -390,7 +390,7 @@ } }, "sourceFile": "src/Aspire.Hosting.PostgreSQL/PostgresBuilderExtensions.cs", - "sourceLines": "547-552" + "sourceLines": "550-555" }, { "name": "WithDataBindMount", @@ -515,7 +515,7 @@ } }, "sourceFile": "src/Aspire.Hosting.PostgreSQL/PostgresBuilderExtensions.cs", - "sourceLines": "486-491" + "sourceLines": "489-494" }, { "name": "WithDataVolume", @@ -642,7 +642,7 @@ } }, "sourceFile": "src/Aspire.Hosting.PostgreSQL/PostgresBuilderExtensions.cs", - "sourceLines": "455-460" + "sourceLines": "458-463" }, { "name": "WithHostPort", @@ -955,7 +955,7 @@ } }, "sourceFile": "src/Aspire.Hosting.PostgreSQL/PostgresBuilderExtensions.cs", - "sourceLines": "506-509" + "sourceLines": "509-512" }, { "name": "WithInitFiles", @@ -1018,7 +1018,7 @@ } }, "sourceFile": "src/Aspire.Hosting.PostgreSQL/PostgresBuilderExtensions.cs", - "sourceLines": "522-529" + "sourceLines": "525-532" }, { "name": "WithPassword", @@ -1081,7 +1081,7 @@ } }, "sourceFile": "src/Aspire.Hosting.PostgreSQL/PostgresBuilderExtensions.cs", - "sourceLines": "565-569" + "sourceLines": "568-572" }, { "name": "WithPgAdmin", @@ -1183,7 +1183,7 @@ } }, "sourceFile": "src/Aspire.Hosting.PostgreSQL/PostgresBuilderExtensions.cs", - "sourceLines": "195-236" + "sourceLines": "196-238" }, { "name": "WithPgWeb", @@ -1277,7 +1277,7 @@ } }, "sourceFile": "src/Aspire.Hosting.PostgreSQL/PostgresBuilderExtensions.cs", - "sourceLines": "305-355" + "sourceLines": "307-358" }, { "name": "WithPostgresMcp", @@ -1388,7 +1388,7 @@ } }, "sourceFile": "src/Aspire.Hosting.PostgreSQL/PostgresBuilderExtensions.cs", - "sourceLines": "378-408" + "sourceLines": "381-411" }, { "name": "WithUserName", @@ -1451,7 +1451,7 @@ } }, "sourceFile": "src/Aspire.Hosting.PostgreSQL/PostgresBuilderExtensions.cs", - "sourceLines": "582-586" + "sourceLines": "585-589" } ] }, diff --git a/src/frontend/src/data/pkgs/Aspire.Hosting.Python.13.4.6.json b/src/frontend/src/data/pkgs/Aspire.Hosting.Python.13.5.0.json similarity index 99% rename from src/frontend/src/data/pkgs/Aspire.Hosting.Python.13.4.6.json rename to src/frontend/src/data/pkgs/Aspire.Hosting.Python.13.5.0.json index 0491d7deb..9165153fb 100644 --- a/src/frontend/src/data/pkgs/Aspire.Hosting.Python.13.4.6.json +++ b/src/frontend/src/data/pkgs/Aspire.Hosting.Python.13.5.0.json @@ -1,10 +1,10 @@ { "package": { "name": "Aspire.Hosting.Python", - "version": "13.4.6", + "version": "13.5.0", "targetFramework": "net10.0", "sourceRepository": "https://github.com/microsoft/aspire", - "sourceCommit": "87fe259e4fc244c599019a7b1304c85a1488f248" + "sourceCommit": "e076d8e427cb3afb528dbd605acd74c3aea69f94" }, "types": [ { @@ -1161,7 +1161,7 @@ } }, "sourceFile": "src/Aspire.Hosting.Python/PythonAppResourceBuilderExtensions.cs", - "sourceLines": "927-1028" + "sourceLines": "927-1001" }, { "name": "WithEntrypoint", @@ -1336,7 +1336,7 @@ ] }, "sourceFile": "src/Aspire.Hosting.Python/PythonAppResourceBuilderExtensions.cs", - "sourceLines": "1066-1124" + "sourceLines": "1039-1099" }, { "name": "WithPip", @@ -1496,7 +1496,7 @@ ] }, "sourceFile": "src/Aspire.Hosting.Python/PythonAppResourceBuilderExtensions.cs", - "sourceLines": "1164-1207" + "sourceLines": "1139-1182" }, { "name": "WithUv", @@ -1683,7 +1683,7 @@ ] }, "sourceFile": "src/Aspire.Hosting.Python/PythonAppResourceBuilderExtensions.cs", - "sourceLines": "1262-1276" + "sourceLines": "1237-1251" }, { "name": "WithVirtualEnvironment", diff --git a/src/frontend/src/data/pkgs/Aspire.Hosting.Qdrant.13.4.6.json b/src/frontend/src/data/pkgs/Aspire.Hosting.Qdrant.13.5.0.json similarity index 99% rename from src/frontend/src/data/pkgs/Aspire.Hosting.Qdrant.13.4.6.json rename to src/frontend/src/data/pkgs/Aspire.Hosting.Qdrant.13.5.0.json index 6389e2587..a974a6eb7 100644 --- a/src/frontend/src/data/pkgs/Aspire.Hosting.Qdrant.13.4.6.json +++ b/src/frontend/src/data/pkgs/Aspire.Hosting.Qdrant.13.5.0.json @@ -1,10 +1,10 @@ { "package": { "name": "Aspire.Hosting.Qdrant", - "version": "13.4.6", + "version": "13.5.0", "targetFramework": "net10.0", "sourceRepository": "https://github.com/microsoft/aspire", - "sourceCommit": "87fe259e4fc244c599019a7b1304c85a1488f248" + "sourceCommit": "e076d8e427cb3afb528dbd605acd74c3aea69f94" }, "types": [ { @@ -152,7 +152,7 @@ } }, "sourceFile": "src/Aspire.Hosting.Qdrant/QdrantBuilderExtensions.cs", - "sourceLines": "45-99" + "sourceLines": "45-100" }, { "name": "WithDataBindMount", @@ -227,7 +227,7 @@ } }, "sourceFile": "src/Aspire.Hosting.Qdrant/QdrantBuilderExtensions.cs", - "sourceLines": "130-133" + "sourceLines": "131-134" }, { "name": "WithDataVolume", @@ -304,7 +304,7 @@ } }, "sourceFile": "src/Aspire.Hosting.Qdrant/QdrantBuilderExtensions.cs", - "sourceLines": "113-116" + "sourceLines": "114-117" }, { "name": "WithReference", @@ -384,7 +384,7 @@ } }, "sourceFile": "src/Aspire.Hosting.Qdrant/QdrantBuilderExtensions.cs", - "sourceLines": "149-149" + "sourceLines": "150-150" }, { "name": "WithReference", @@ -470,7 +470,7 @@ } }, "sourceFile": "src/Aspire.Hosting.Qdrant/QdrantBuilderExtensions.cs", - "sourceLines": "163-190" + "sourceLines": "164-191" } ] }, diff --git a/src/frontend/src/data/pkgs/Aspire.Hosting.RabbitMQ.13.4.6.json b/src/frontend/src/data/pkgs/Aspire.Hosting.RabbitMQ.13.5.0.json similarity index 99% rename from src/frontend/src/data/pkgs/Aspire.Hosting.RabbitMQ.13.4.6.json rename to src/frontend/src/data/pkgs/Aspire.Hosting.RabbitMQ.13.5.0.json index 0aac5bd97..0db3a0c64 100644 --- a/src/frontend/src/data/pkgs/Aspire.Hosting.RabbitMQ.13.4.6.json +++ b/src/frontend/src/data/pkgs/Aspire.Hosting.RabbitMQ.13.5.0.json @@ -1,10 +1,10 @@ { "package": { "name": "Aspire.Hosting.RabbitMQ", - "version": "13.4.6", + "version": "13.5.0", "targetFramework": "net10.0", "sourceRepository": "https://github.com/microsoft/aspire", - "sourceCommit": "87fe259e4fc244c599019a7b1304c85a1488f248" + "sourceCommit": "e076d8e427cb3afb528dbd605acd74c3aea69f94" }, "types": [ { @@ -168,7 +168,7 @@ } }, "sourceFile": "src/Aspire.Hosting.RabbitMQ/RabbitMQBuilderExtensions.cs", - "sourceLines": "37-87" + "sourceLines": "37-88" }, { "name": "WithDataBindMount", @@ -243,7 +243,7 @@ } }, "sourceFile": "src/Aspire.Hosting.RabbitMQ/RabbitMQBuilderExtensions.cs", - "sourceLines": "118-122" + "sourceLines": "119-123" }, { "name": "WithDataVolume", @@ -320,7 +320,7 @@ } }, "sourceFile": "src/Aspire.Hosting.RabbitMQ/RabbitMQBuilderExtensions.cs", - "sourceLines": "101-104" + "sourceLines": "102-105" }, { "name": "WithManagementPlugin", @@ -445,7 +445,7 @@ ] }, "sourceFile": "src/Aspire.Hosting.RabbitMQ/RabbitMQBuilderExtensions.cs", - "sourceLines": "139-141" + "sourceLines": "140-142" }, { "name": "WithManagementPlugin", @@ -550,7 +550,7 @@ ] }, "sourceFile": "src/Aspire.Hosting.RabbitMQ/RabbitMQBuilderExtensions.cs", - "sourceLines": "173-232" + "sourceLines": "174-233" } ] }, diff --git a/src/frontend/src/data/pkgs/Aspire.Hosting.Radius.13.5.0-preview.1.26417.7.json b/src/frontend/src/data/pkgs/Aspire.Hosting.Radius.13.5.0-preview.1.26417.7.json new file mode 100644 index 000000000..18038d9c7 --- /dev/null +++ b/src/frontend/src/data/pkgs/Aspire.Hosting.Radius.13.5.0-preview.1.26417.7.json @@ -0,0 +1,3660 @@ +{ + "package": { + "name": "Aspire.Hosting.Radius", + "version": "13.5.0-preview.1.26417.7", + "targetFramework": "net10.0", + "sourceRepository": "https://github.com/microsoft/aspire", + "sourceCommit": "e076d8e427cb3afb528dbd605acd74c3aea69f94" + }, + "types": [ + { + "name": "RadiusCloudProviderExtensions", + "fullName": "Aspire.Hosting.RadiusCloudProviderExtensions", + "namespace": "Aspire.Hosting", + "kind": "class", + "accessibility": "public", + "isStatic": true, + "docs": { + "summary": [ + { + "kind": "text", + "text": " Cloud-provider configuration entry points for " + }, + { + "kind": "cref", + "value": "T:Aspire.Hosting.Radius.RadiusEnvironmentResource" + }, + { + "kind": "text", + "text": ". These extensions attach a " + }, + { + "kind": "cref", + "value": "T:Aspire.Hosting.Radius.Annotations.RadiusCloudProvidersAnnotation" + }, + { + "kind": "text", + "text": " to the environment that the publisher consumes to emit " + }, + { + "kind": "code", + "text": "providers.azure" + }, + { + "kind": "text", + "text": "/" + }, + { + "kind": "code", + "text": "providers.aws" + }, + { + "kind": "text", + "text": " scope blocks and to schedule " + }, + { + "kind": "code", + "text": "rad credential register" + }, + { + "kind": "text", + "text": " invocations during deploy. " + } + ] + }, + "sourceFile": "src/Aspire.Hosting.Radius/CloudProviders/RadiusCloudProviderExtensions.cs", + "sourceLines": "20-20", + "members": [ + { + "name": "WithAwsProvider", + "kind": "method", + "accessibility": "public", + "signature": "public static IResourceBuilder RadiusCloudProviderExtensions.WithAwsProvider(this IResourceBuilder builder, string accountId, string region, Action configure)", + "returnType": "Aspire.Hosting.ApplicationModel.IResourceBuilder", + "isStatic": true, + "isExtension": true, + "parameters": [ + { + "name": "builder", + "type": "Aspire.Hosting.ApplicationModel.IResourceBuilder", + "modifier": "this" + }, + { + "name": "accountId", + "type": "string" + }, + { + "name": "region", + "type": "string" + }, + { + "name": "configure", + "type": "System.Action" + } + ], + "attributes": [ + { + "name": "Aspire.Hosting.AspireExportIgnoreAttribute" + }, + { + "name": "System.Diagnostics.CodeAnalysis.ExperimentalAttribute", + "constructorArguments": [ + "ASPIRERADIUS003" + ], + "arguments": { + "UrlFormat": "https://aka.ms/aspire/diagnostics/{0}" + } + } + ], + "docs": { + "summary": [ + { + "kind": "text", + "text": " Attaches an AWS cloud provider to the Radius environment. The " + }, + { + "kind": "paramref", + "value": "configure" + }, + { + "kind": "text", + "text": " callback selects exactly one credential mode (Access Key or IRSA); omitting a selection is an error. " + } + ], + "returns": [ + { + "kind": "text", + "text": "The same builder for chaining." + } + ], + "parameters": { + "accountId": [ + { + "kind": "text", + "text": "12-digit AWS account ID." + } + ], + "builder": [ + { + "kind": "text", + "text": "The Radius environment resource builder." + } + ], + "configure": [ + { + "kind": "text", + "text": "Callback that selects a credential mode." + } + ], + "region": [ + { + "kind": "text", + "text": "AWS region code (e.g. " + }, + { + "kind": "code", + "text": "us-west-2" + }, + { + "kind": "text", + "text": ")." + } + ] + }, + "exceptions": [ + { + "type": "T:System.ArgumentException", + "description": [ + { + "kind": "text", + "text": "Validation failed on inputs." + } + ] + }, + { + "type": "T:System.InvalidOperationException", + "description": [ + { + "kind": "text", + "text": "The callback did not select a credential (ASPIRERADIUS010)." + } + ] + } + ] + }, + "sourceFile": "src/Aspire.Hosting.Radius/CloudProviders/RadiusCloudProviderExtensions.cs", + "sourceLines": "88-106" + }, + { + "name": "WithAzureProvider", + "kind": "method", + "accessibility": "public", + "signature": "public static IResourceBuilder RadiusCloudProviderExtensions.WithAzureProvider(this IResourceBuilder builder, string subscriptionId, string resourceGroup, Action configure)", + "returnType": "Aspire.Hosting.ApplicationModel.IResourceBuilder", + "isStatic": true, + "isExtension": true, + "parameters": [ + { + "name": "builder", + "type": "Aspire.Hosting.ApplicationModel.IResourceBuilder", + "modifier": "this" + }, + { + "name": "subscriptionId", + "type": "string" + }, + { + "name": "resourceGroup", + "type": "string" + }, + { + "name": "configure", + "type": "System.Action" + } + ], + "attributes": [ + { + "name": "Aspire.Hosting.AspireExportIgnoreAttribute" + }, + { + "name": "System.Diagnostics.CodeAnalysis.ExperimentalAttribute", + "constructorArguments": [ + "ASPIRERADIUS003" + ], + "arguments": { + "UrlFormat": "https://aka.ms/aspire/diagnostics/{0}" + } + } + ], + "docs": { + "summary": [ + { + "kind": "text", + "text": " Attaches an Azure cloud provider to the Radius environment. The " + }, + { + "kind": "paramref", + "value": "configure" + }, + { + "kind": "text", + "text": " callback selects exactly one credential mode (Service Principal or Workload Identity); omitting a selection is an error. " + } + ], + "returns": [ + { + "kind": "text", + "text": "The same builder for chaining." + } + ], + "parameters": { + "builder": [ + { + "kind": "text", + "text": "The Radius environment resource builder." + } + ], + "configure": [ + { + "kind": "text", + "text": "Callback that selects a credential mode." + } + ], + "resourceGroup": [ + { + "kind": "text", + "text": "Resource-group name within the subscription." + } + ], + "subscriptionId": [ + { + "kind": "text", + "text": "Azure subscription GUID." + } + ] + }, + "exceptions": [ + { + "type": "T:System.ArgumentException", + "description": [ + { + "kind": "text", + "text": "Validation failed on inputs." + } + ] + }, + { + "type": "T:System.InvalidOperationException", + "description": [ + { + "kind": "text", + "text": "The callback did not select a credential (ASPIRERADIUS010)." + } + ] + } + ] + }, + "sourceFile": "src/Aspire.Hosting.Radius/CloudProviders/RadiusCloudProviderExtensions.cs", + "sourceLines": "47-65" + } + ] + }, + { + "name": "RadiusExtensions", + "fullName": "Aspire.Hosting.RadiusExtensions", + "namespace": "Aspire.Hosting", + "kind": "class", + "accessibility": "public", + "isStatic": true, + "docs": { + "summary": [ + { + "kind": "text", + "text": " Provides extension methods for adding and configuring Radius environment resources. " + } + ] + }, + "sourceFile": "src/Aspire.Hosting.Radius/RadiusExtensions.cs", + "sourceLines": "15-15", + "members": [ + { + "name": "AddRadiusEnvironment", + "kind": "method", + "accessibility": "public", + "signature": "public static IResourceBuilder RadiusExtensions.AddRadiusEnvironment(this IDistributedApplicationBuilder builder, string name)", + "returnType": "Aspire.Hosting.ApplicationModel.IResourceBuilder", + "isStatic": true, + "isExtension": true, + "parameters": [ + { + "name": "builder", + "type": "Aspire.Hosting.IDistributedApplicationBuilder", + "modifier": "this" + }, + { + "name": "name", + "type": "string" + } + ], + "attributes": [ + { + "name": "Aspire.Hosting.AspireExportAttribute" + } + ], + "docs": { + "summary": [ + { + "kind": "text", + "text": " Adds a Radius compute environment to the application model. " + } + ], + "remarks": [ + { + "kind": "text", + "text": " In " + }, + { + "kind": "cref", + "value": "F:Aspire.Hosting.DistributedApplicationOperation.Run" + }, + { + "kind": "text", + "text": " mode this returns an unregistered builder so the environment does not surface as a resource in the dashboard and no pipeline steps are wired up — matching " + }, + { + "kind": "code", + "text": "AddKubernetesEnvironment" + }, + { + "kind": "text", + "text": " and " + }, + { + "kind": "code", + "text": "AddDockerComposeEnvironment" + }, + { + "kind": "text", + "text": ". All deployment-target wiring runs in Publish mode only. " + } + ], + "returns": [ + { + "kind": "text", + "text": "A reference to the " + }, + { + "kind": "cref", + "value": "T:Aspire.Hosting.ApplicationModel.IResourceBuilder`1" + }, + { + "kind": "text", + "text": "." + } + ], + "parameters": { + "builder": [ + { + "kind": "text", + "text": "The " + }, + { + "kind": "cref", + "value": "T:Aspire.Hosting.IDistributedApplicationBuilder" + }, + { + "kind": "text", + "text": "." + } + ], + "name": [ + { + "kind": "text", + "text": "The name of the Radius environment resource." + } + ] + } + }, + "sourceFile": "src/Aspire.Hosting.Radius/RadiusExtensions.cs", + "sourceLines": "37-53" + }, + { + "name": "ConfigureRadiusInfrastructure", + "kind": "method", + "accessibility": "public", + "signature": "public static IResourceBuilder RadiusExtensions.ConfigureRadiusInfrastructure(this IResourceBuilder builder, Action configure)", + "returnType": "Aspire.Hosting.ApplicationModel.IResourceBuilder", + "isStatic": true, + "isExtension": true, + "parameters": [ + { + "name": "builder", + "type": "Aspire.Hosting.ApplicationModel.IResourceBuilder", + "modifier": "this" + }, + { + "name": "configure", + "type": "System.Action" + } + ], + "attributes": [ + { + "name": "System.Diagnostics.CodeAnalysis.ExperimentalAttribute", + "constructorArguments": [ + "ASPIRERADIUS004" + ], + "arguments": { + "UrlFormat": "https://aka.ms/aspire/diagnostics/{0}" + } + }, + { + "name": "Aspire.Hosting.AspireExportIgnoreAttribute", + "arguments": { + "Reason": "RadiusInfrastructureOptions customization callbacks are not ATS-compatible." + } + } + ], + "docs": { + "summary": [ + { + "kind": "text", + "text": " Registers a callback that can customize the generated Radius infrastructure before Bicep is emitted. " + } + ], + "returns": [ + { + "kind": "text", + "text": "The same " + }, + { + "kind": "cref", + "value": "T:Aspire.Hosting.ApplicationModel.IResourceBuilder`1" + }, + { + "kind": "text", + "text": " for chaining." + } + ], + "parameters": { + "builder": [ + { + "kind": "text", + "text": "The Radius environment resource builder." + } + ], + "configure": [ + { + "kind": "text", + "text": "The callback that mutates the generated infrastructure options." + } + ] + } + }, + "sourceFile": "src/Aspire.Hosting.Radius/RadiusExtensions.cs", + "sourceLines": "96-100" + }, + { + "name": "WithContainerImage", + "kind": "method", + "accessibility": "public", + "signature": "public static IResourceBuilder RadiusExtensions.WithContainerImage(this IResourceBuilder builder, string image)", + "returnType": "Aspire.Hosting.ApplicationModel.IResourceBuilder", + "isStatic": true, + "isExtension": true, + "parameters": [ + { + "name": "builder", + "type": "Aspire.Hosting.ApplicationModel.IResourceBuilder", + "modifier": "this" + }, + { + "name": "image", + "type": "string" + } + ], + "attributes": [ + { + "name": "System.Diagnostics.CodeAnalysis.ExperimentalAttribute", + "constructorArguments": [ + "ASPIRERADIUS057" + ], + "arguments": { + "UrlFormat": "https://aka.ms/aspire/diagnostics/{0}" + } + }, + { + "name": "Aspire.Hosting.AspireExportAttribute" + } + ], + "docs": { + "summary": [ + { + "kind": "text", + "text": " Associates a pre-built container image reference with a project resource so the Aspire.Hosting.Radius publisher can emit a valid Radius container manifest for it. " + } + ], + "remarks": [ + { + "kind": "text", + "text": " The Radius publisher does not yet build or push images for " + }, + { + "kind": "cref", + "value": "T:Aspire.Hosting.ApplicationModel.ProjectResource" + }, + { + "kind": "text", + "text": " (tracked at https://github.com/microsoft/aspire/issues/16844). Until that lands, callers must build and push the image themselves (for example with " + }, + { + "kind": "code", + "text": "dotnet publish /t:PublishContainer" + }, + { + "kind": "text", + "text": ") and then call this method to attach the resulting registry reference. Without it, " + }, + { + "kind": "code", + "text": "aspire publish" + }, + { + "kind": "text", + "text": " against a Radius environment fails with a clear remediation message — and " + }, + { + "kind": "code", + "text": "aspire deploy" + }, + { + "kind": "text", + "text": " against Radius would otherwise land pods that hit " + }, + { + "kind": "code", + "text": "ImagePullBackOff" + }, + { + "kind": "text", + "text": " against the publisher's " + }, + { + "kind": "code", + "text": ":latest" + }, + { + "kind": "text", + "text": " fallback. The reference is stored as a " + }, + { + "kind": "cref", + "value": "T:Aspire.Hosting.ApplicationModel.ContainerImageAnnotation" + }, + { + "kind": "text", + "text": ", which is also what container resources use, so the publisher's existing " + }, + { + "kind": "code", + "text": "Registry" + }, + { + "kind": "text", + "text": "/" + }, + { + "kind": "code", + "text": "Image" + }, + { + "kind": "text", + "text": "/" + }, + { + "kind": "code", + "text": "Tag" + }, + { + "kind": "text", + "text": " assembly path applies uniformly. " + } + ], + "returns": [ + { + "kind": "text", + "text": "The same " + }, + { + "kind": "cref", + "value": "T:Aspire.Hosting.ApplicationModel.IResourceBuilder`1" + }, + { + "kind": "text", + "text": " for chaining." + } + ], + "parameters": { + "builder": [ + { + "kind": "text", + "text": "The project resource builder." + } + ], + "image": [ + { + "kind": "text", + "text": " A fully-qualified image reference in " + }, + { + "kind": "code", + "text": "[registry/]image[:tag]" + }, + { + "kind": "text", + "text": " form (for example " + }, + { + "kind": "code", + "text": "localhost:5001/apiservice:latest" + }, + { + "kind": "text", + "text": "). When the tag is omitted " + }, + { + "kind": "code", + "text": "latest" + }, + { + "kind": "text", + "text": " is used. " + } + ] + } + }, + "sourceFile": "src/Aspire.Hosting.Radius/RadiusExtensions.cs", + "sourceLines": "137-157" + }, + { + "name": "WithNamespace", + "kind": "method", + "accessibility": "public", + "signature": "public static IResourceBuilder RadiusExtensions.WithNamespace(this IResourceBuilder builder, string kubernetesNamespace)", + "returnType": "Aspire.Hosting.ApplicationModel.IResourceBuilder", + "isStatic": true, + "isExtension": true, + "parameters": [ + { + "name": "builder", + "type": "Aspire.Hosting.ApplicationModel.IResourceBuilder", + "modifier": "this" + }, + { + "name": "kubernetesNamespace", + "type": "string" + } + ], + "attributes": [ + { + "name": "Aspire.Hosting.AspireExportAttribute" + } + ], + "docs": { + "summary": [ + { + "kind": "text", + "text": " Sets the Kubernetes namespace for the Radius environment. " + } + ], + "returns": [ + { + "kind": "text", + "text": "A reference to the " + }, + { + "kind": "cref", + "value": "T:Aspire.Hosting.ApplicationModel.IResourceBuilder`1" + }, + { + "kind": "text", + "text": "." + } + ], + "parameters": { + "builder": [ + { + "kind": "text", + "text": "The Radius environment resource builder." + } + ], + "kubernetesNamespace": [ + { + "kind": "text", + "text": "A valid RFC 1123 namespace name." + } + ] + }, + "exceptions": [ + { + "type": "T:System.ArgumentException", + "description": [ + { + "kind": "text", + "text": "Thrown when the namespace is not a valid RFC 1123 label." + } + ] + } + ] + }, + "sourceFile": "src/Aspire.Hosting.Radius/RadiusExtensions.cs", + "sourceLines": "68-81" + } + ] + }, + { + "name": "RadiusEnvironmentResource", + "fullName": "Aspire.Hosting.Radius.RadiusEnvironmentResource", + "namespace": "Aspire.Hosting.Radius", + "kind": "class", + "accessibility": "public", + "isSealed": true, + "baseType": "Aspire.Hosting.ApplicationModel.Resource", + "interfaces": [ + "Aspire.Hosting.ApplicationModel.IComputeEnvironmentResource", + "Aspire.Hosting.ApplicationModel.IResource" + ], + "docs": { + "summary": [ + { + "kind": "text", + "text": " Represents a Radius compute environment in the Aspire app model. " + } + ] + }, + "attributes": [ + { + "name": "Aspire.Hosting.AspireExportAttribute", + "arguments": { + "ExposeProperties": "True" + } + } + ], + "sourceFile": "src/Aspire.Hosting.Radius/RadiusEnvironmentResource.cs", + "sourceLines": "18-18", + "members": [ + { + "name": ".ctor", + "kind": "constructor", + "accessibility": "public", + "signature": "public RadiusEnvironmentResource.RadiusEnvironmentResource(string name)", + "returnType": "void", + "parameters": [ + { + "name": "name", + "type": "string" + } + ], + "docs": { + "summary": [ + { + "kind": "text", + "text": " Initializes a new instance of the " + }, + { + "kind": "cref", + "value": "T:Aspire.Hosting.Radius.RadiusEnvironmentResource" + }, + { + "kind": "text", + "text": " class. " + } + ], + "remarks": [ + { + "kind": "text", + "text": " Registers the publish/deploy pipeline steps as annotations on the resource so any caller that adds this resource to the application model gets a working environment. In Run mode the resource is normally not added to the model (see " + }, + { + "kind": "code", + "text": "AddRadiusEnvironment" + }, + { + "kind": "text", + "text": ") and the annotations are inert. Mirrors " + }, + { + "kind": "code", + "text": "KubernetesEnvironmentResource" + }, + { + "kind": "text", + "text": " / " + }, + { + "kind": "code", + "text": "DockerComposeEnvironmentResource" + }, + { + "kind": "text", + "text": ", which also keep their step factories on the resource itself rather than the extension method. " + } + ], + "parameters": { + "name": [ + { + "kind": "text", + "text": "The name of the Radius environment resource." + } + ] + } + }, + "sourceFile": "src/Aspire.Hosting.Radius/RadiusEnvironmentResource.cs", + "sourceLines": "32-76" + }, + { + "name": "GetHostAddressExpression", + "kind": "method", + "accessibility": "public", + "signature": "public ReferenceExpression RadiusEnvironmentResource.GetHostAddressExpression(EndpointReference endpointReference)", + "returnType": "Aspire.Hosting.ApplicationModel.ReferenceExpression", + "parameters": [ + { + "name": "endpointReference", + "type": "Aspire.Hosting.ApplicationModel.EndpointReference" + } + ], + "attributes": [ + { + "name": "System.Diagnostics.CodeAnalysis.ExperimentalAttribute", + "constructorArguments": [ + "ASPIRECOMPUTE002" + ], + "arguments": { + "UrlFormat": "https://aka.ms/aspire/diagnostics/{0}" + } + } + ], + "docs": { + "summary": [ + { + "kind": "text", + "text": " Gets a " + }, + { + "kind": "cref", + "value": "T:Aspire.Hosting.ApplicationModel.ReferenceExpression" + }, + { + "kind": "text", + "text": " representing the host address or host name for the specified " + }, + { + "kind": "cref", + "value": "T:Aspire.Hosting.ApplicationModel.EndpointReference" + }, + { + "kind": "text", + "text": ". " + } + ], + "remarks": [ + { + "kind": "text", + "text": " The returned value typically contains only the host name or address, without scheme, port, or path information. " + } + ], + "returns": [ + { + "kind": "text", + "text": "A " + }, + { + "kind": "cref", + "value": "T:Aspire.Hosting.ApplicationModel.ReferenceExpression" + }, + { + "kind": "text", + "text": " representing the host address or host name (not a full URL)." + } + ], + "parameters": { + "endpointReference": [ + { + "kind": "text", + "text": "The endpoint reference for which to retrieve the host address or host name." + } + ] + } + }, + "sourceFile": "src/Aspire.Hosting.Radius/RadiusEnvironmentResource.cs", + "sourceLines": "97-119" + }, + { + "name": "Namespace", + "kind": "property", + "accessibility": "public", + "signature": "public string RadiusEnvironmentResource.Namespace", + "returnType": "string", + "hasGet": true, + "hasSet": true, + "docs": { + "summary": [ + { + "kind": "text", + "text": " Gets or sets the Kubernetes namespace for resource deployment. " + } + ] + }, + "sourceFile": "src/Aspire.Hosting.Radius/RadiusEnvironmentResource.cs" + }, + { + "name": "OwningComputeEnvironment", + "kind": "property", + "accessibility": "public", + "signature": "public IComputeEnvironmentResource? RadiusEnvironmentResource.OwningComputeEnvironment", + "returnType": "Aspire.Hosting.ApplicationModel.IComputeEnvironmentResource?", + "isReturnNullable": true, + "hasGet": true, + "hasSet": true, + "docs": { + "summary": [ + { + "kind": "text", + "text": " Gets or sets the parent compute environment this Radius environment is hosted by, when the Radius env is itself a child of a higher-level compute environment (e.g. an Azure AKS environment that wraps both Kubernetes and Radius). When set, resources that target the parent environment are also adopted by this Radius environment during the prepare step. Defaults to " + }, + { + "kind": "langword", + "value": "null" + }, + { + "kind": "text", + "text": " (no parent). " + } + ], + "remarks": [ + { + "kind": "text", + "text": " Mirrors " + }, + { + "kind": "code", + "text": "KubernetesEnvironmentResource.OwningComputeEnvironment" + }, + { + "kind": "text", + "text": ". Today this is always " + }, + { + "kind": "langword", + "value": "null" + }, + { + "kind": "text", + "text": " for vanilla Radius; the property exists so an Azure hosting integration can wrap Radius the same way Azure Kubernetes wraps the K8s integration without needing a breaking change to this type. " + } + ] + }, + "sourceFile": "src/Aspire.Hosting.Radius/RadiusEnvironmentResource.cs" + } + ] + }, + { + "name": "IAwsRadiusProviderBuilder", + "fullName": "Aspire.Hosting.Radius.CloudProviders.IAwsRadiusProviderBuilder", + "namespace": "Aspire.Hosting.Radius.CloudProviders", + "kind": "interface", + "accessibility": "public", + "docs": { + "summary": [ + { + "kind": "text", + "text": " Builder surface exposed inside the " + }, + { + "kind": "code", + "text": "WithAwsProvider" + }, + { + "kind": "text", + "text": " callback for selecting an AWS credential mode. Exactly one " + }, + { + "kind": "code", + "text": "With*" + }, + { + "kind": "text", + "text": " method must be called; a repeat call replaces the previous selection. " + } + ] + }, + "sourceFile": "src/Aspire.Hosting.Radius/CloudProviders/IAwsRadiusProviderBuilder.cs", + "sourceLines": "13-13", + "members": [ + { + "name": "WithAccessKey", + "kind": "method", + "accessibility": "public", + "signature": "public abstract IAwsRadiusProviderBuilder IAwsRadiusProviderBuilder.WithAccessKey(IResourceBuilder accessKeyId, IResourceBuilder secretAccessKey)", + "returnType": "Aspire.Hosting.Radius.CloudProviders.IAwsRadiusProviderBuilder", + "isAbstract": true, + "parameters": [ + { + "name": "accessKeyId", + "type": "Aspire.Hosting.ApplicationModel.IResourceBuilder" + }, + { + "name": "secretAccessKey", + "type": "Aspire.Hosting.ApplicationModel.IResourceBuilder" + } + ], + "docs": { + "summary": [ + { + "kind": "text", + "text": " Configures an IAM access key credential. Both the access key id and secret access key values are provided via " + }, + { + "kind": "cref", + "value": "T:Aspire.Hosting.ApplicationModel.ParameterResource" + }, + { + "kind": "text", + "text": "s so plaintext never appears in the publish artifact. Reference them with " + }, + { + "kind": "code", + "text": "builder.AddParameter(\"awsAccessKeyId\", secret: true)" + }, + { + "kind": "text", + "text": " / " + }, + { + "kind": "code", + "text": "builder.AddParameter(\"awsSecretAccessKey\", secret: true)" + }, + { + "kind": "text", + "text": ". " + } + ], + "returns": [ + { + "kind": "text", + "text": "This builder for chaining." + } + ], + "parameters": { + "accessKeyId": [ + { + "kind": "text", + "text": "Parameter carrying the AWS access key id." + } + ], + "secretAccessKey": [ + { + "kind": "text", + "text": "Parameter carrying the AWS secret access key." + } + ] + } + } + }, + { + "name": "WithIrsa", + "kind": "method", + "accessibility": "public", + "signature": "public abstract IAwsRadiusProviderBuilder IAwsRadiusProviderBuilder.WithIrsa(string iamRoleArn)", + "returnType": "Aspire.Hosting.Radius.CloudProviders.IAwsRadiusProviderBuilder", + "isAbstract": true, + "parameters": [ + { + "name": "iamRoleArn", + "type": "string" + } + ], + "docs": { + "summary": [ + { + "kind": "text", + "text": " Configures an IAM Roles for Service Accounts (IRSA) credential. No long-lived secret is materialized; the role is assumed at deploy time via the hosting Kubernetes cluster's OIDC provider. " + } + ], + "returns": [ + { + "kind": "text", + "text": "This builder for chaining." + } + ], + "parameters": { + "iamRoleArn": [ + { + "kind": "text", + "text": "Fully-qualified IAM role ARN to assume." + } + ] + } + } + } + ] + }, + { + "name": "IAzureRadiusProviderBuilder", + "fullName": "Aspire.Hosting.Radius.CloudProviders.IAzureRadiusProviderBuilder", + "namespace": "Aspire.Hosting.Radius.CloudProviders", + "kind": "interface", + "accessibility": "public", + "docs": { + "summary": [ + { + "kind": "text", + "text": " Builder surface exposed inside the " + }, + { + "kind": "code", + "text": "WithAzureProvider" + }, + { + "kind": "text", + "text": " callback for selecting an Azure credential mode. Exactly one " + }, + { + "kind": "code", + "text": "With*" + }, + { + "kind": "text", + "text": " method must be called; a repeat call replaces the previous selection. " + } + ] + }, + "sourceFile": "src/Aspire.Hosting.Radius/CloudProviders/IAzureRadiusProviderBuilder.cs", + "sourceLines": "13-13", + "members": [ + { + "name": "WithServicePrincipal", + "kind": "method", + "accessibility": "public", + "signature": "public abstract IAzureRadiusProviderBuilder IAzureRadiusProviderBuilder.WithServicePrincipal(string tenantId, string clientId, IResourceBuilder clientSecret)", + "returnType": "Aspire.Hosting.Radius.CloudProviders.IAzureRadiusProviderBuilder", + "isAbstract": true, + "parameters": [ + { + "name": "tenantId", + "type": "string" + }, + { + "name": "clientId", + "type": "string" + }, + { + "name": "clientSecret", + "type": "Aspire.Hosting.ApplicationModel.IResourceBuilder" + } + ], + "docs": { + "summary": [ + { + "kind": "text", + "text": " Configures a Service Principal credential. The client secret value is provided via a " + }, + { + "kind": "cref", + "value": "T:Aspire.Hosting.ApplicationModel.ParameterResource" + }, + { + "kind": "text", + "text": " so its plaintext never appears in the publish artifact. Reference it with " + }, + { + "kind": "code", + "text": "builder.AddParameter(\"azureClientSecret\", secret: true)" + }, + { + "kind": "text", + "text": ". " + } + ], + "returns": [ + { + "kind": "text", + "text": "This builder for chaining." + } + ], + "parameters": { + "clientId": [ + { + "kind": "text", + "text": "Service principal client (application) GUID." + } + ], + "clientSecret": [ + { + "kind": "text", + "text": "Parameter carrying the client secret." + } + ], + "tenantId": [ + { + "kind": "text", + "text": "Azure tenant GUID." + } + ] + } + } + }, + { + "name": "WithWorkloadIdentity", + "kind": "method", + "accessibility": "public", + "signature": "public abstract IAzureRadiusProviderBuilder IAzureRadiusProviderBuilder.WithWorkloadIdentity(string tenantId, string clientId)", + "returnType": "Aspire.Hosting.Radius.CloudProviders.IAzureRadiusProviderBuilder", + "isAbstract": true, + "parameters": [ + { + "name": "tenantId", + "type": "string" + }, + { + "name": "clientId", + "type": "string" + } + ], + "docs": { + "summary": [ + { + "kind": "text", + "text": " Configures a Workload Identity (federated identity) credential. No long-lived secret is materialized; the identity is bound at deploy time by the hosting Kubernetes cluster's OIDC issuer. " + } + ], + "returns": [ + { + "kind": "text", + "text": "This builder for chaining." + } + ], + "parameters": { + "clientId": [ + { + "kind": "text", + "text": "Workload identity client (application) GUID." + } + ], + "tenantId": [ + { + "kind": "text", + "text": "Azure tenant GUID." + } + ] + } + } + } + ] + }, + { + "name": "RadiusInfrastructureOptions", + "fullName": "Aspire.Hosting.Radius.Publishing.RadiusInfrastructureOptions", + "namespace": "Aspire.Hosting.Radius.Publishing", + "kind": "class", + "accessibility": "public", + "isSealed": true, + "docs": { + "summary": [ + { + "kind": "text", + "text": " Exposes strongly-typed mutable collections of Radius construct classes for AST customization via the " + }, + { + "kind": "code", + "text": "ConfigureRadiusInfrastructure" + }, + { + "kind": "text", + "text": " callback. " + } + ], + "remarks": [ + { + "kind": "text", + "text": "Preview surface." + }, + { + "kind": "text", + "text": " The construct shapes exposed here mirror the still- evolving Radius preview schemas and are expected to change as those schemas stabilize. Treat " + }, + { + "kind": "code", + "text": "ConfigureRadiusInfrastructure" + }, + { + "kind": "text", + "text": " and the construct types referenced by this options bag as an advanced escape hatch that may shift shape across releases of " + }, + { + "kind": "code", + "text": "Aspire.Hosting.Radius" + }, + { + "kind": "text", + "text": ". " + } + ] + }, + "attributes": [ + { + "name": "System.Diagnostics.CodeAnalysis.ExperimentalAttribute", + "constructorArguments": [ + "ASPIRERADIUS004" + ], + "arguments": { + "UrlFormat": "https://aka.ms/aspire/diagnostics/{0}" + } + } + ], + "sourceFile": "src/Aspire.Hosting.Radius/Publishing/RadiusInfrastructureOptions.cs", + "sourceLines": "24-24", + "members": [ + { + "name": ".ctor", + "kind": "constructor", + "accessibility": "public", + "signature": "public RadiusInfrastructureOptions.RadiusInfrastructureOptions()", + "returnType": "void", + "sourceFile": "src/Aspire.Hosting.Radius/Publishing/RadiusInfrastructureOptions.cs", + "sourceLines": "29-70" + }, + { + "name": "Applications", + "kind": "property", + "accessibility": "public", + "signature": "public List RadiusInfrastructureOptions.Applications", + "returnType": "System.Collections.Generic.List", + "hasGet": true, + "docs": { + "summary": [ + { + "kind": "text", + "text": " Gets the list of " + }, + { + "kind": "code", + "text": "Radius.Core/applications" + }, + { + "kind": "text", + "text": " constructs. " + } + ] + }, + "sourceFile": "src/Aspire.Hosting.Radius/Publishing/RadiusInfrastructureOptions.cs", + "sourceLines": "34-34" + }, + { + "name": "Containers", + "kind": "property", + "accessibility": "public", + "signature": "public List RadiusInfrastructureOptions.Containers", + "returnType": "System.Collections.Generic.List", + "hasGet": true, + "docs": { + "summary": [ + { + "kind": "text", + "text": " Gets the list of " + }, + { + "kind": "code", + "text": "Radius.Compute/containers" + }, + { + "kind": "text", + "text": " workload constructs. " + } + ] + }, + "sourceFile": "src/Aspire.Hosting.Radius/Publishing/RadiusInfrastructureOptions.cs", + "sourceLines": "50-50" + }, + { + "name": "Environments", + "kind": "property", + "accessibility": "public", + "signature": "public List RadiusInfrastructureOptions.Environments", + "returnType": "System.Collections.Generic.List", + "hasGet": true, + "docs": { + "summary": [ + { + "kind": "text", + "text": " Gets the list of " + }, + { + "kind": "code", + "text": "Radius.Core/environments" + }, + { + "kind": "text", + "text": " constructs. " + } + ] + }, + "sourceFile": "src/Aspire.Hosting.Radius/Publishing/RadiusInfrastructureOptions.cs", + "sourceLines": "29-29" + }, + { + "name": "LegacyApplications", + "kind": "property", + "accessibility": "public", + "signature": "public List RadiusInfrastructureOptions.LegacyApplications", + "returnType": "System.Collections.Generic.List", + "hasGet": true, + "docs": { + "summary": [ + { + "kind": "text", + "text": " Gets the list of legacy " + }, + { + "kind": "code", + "text": "Applications.Core/applications" + }, + { + "kind": "text", + "text": " constructs paired with " + }, + { + "kind": "cref", + "value": "P:Aspire.Hosting.Radius.Publishing.RadiusInfrastructureOptions.LegacyEnvironments" + }, + { + "kind": "text", + "text": ". " + } + ] + }, + "sourceFile": "src/Aspire.Hosting.Radius/Publishing/RadiusInfrastructureOptions.cs", + "sourceLines": "63-63" + }, + { + "name": "LegacyEnvironments", + "kind": "property", + "accessibility": "public", + "signature": "public List RadiusInfrastructureOptions.LegacyEnvironments", + "returnType": "System.Collections.Generic.List", + "hasGet": true, + "docs": { + "summary": [ + { + "kind": "text", + "text": " Gets the list of legacy " + }, + { + "kind": "code", + "text": "Applications.Core/environments" + }, + { + "kind": "text", + "text": " constructs emitted when one or more targeted resources fall back to a legacy " + }, + { + "kind": "code", + "text": "Applications.*" + }, + { + "kind": "text", + "text": " type (e.g., Redis, Mongo, RabbitMQ, Dapr). " + } + ] + }, + "sourceFile": "src/Aspire.Hosting.Radius/Publishing/RadiusInfrastructureOptions.cs", + "sourceLines": "57-57" + }, + { + "name": "Parameters", + "kind": "property", + "accessibility": "public", + "signature": "public List RadiusInfrastructureOptions.Parameters", + "returnType": "System.Collections.Generic.List", + "hasGet": true, + "docs": { + "summary": [ + { + "kind": "text", + "text": " Gets the top-level Bicep parameters emitted for secret/parameter values referenced by container environment variables. Secret sources are declared " + }, + { + "kind": "code", + "text": "@secure()" + }, + { + "kind": "text", + "text": " so their values are supplied at deploy time via " + }, + { + "kind": "code", + "text": "rad deploy --parameters" + }, + { + "kind": "text", + "text": " rather than inlined. " + } + ] + }, + "sourceFile": "src/Aspire.Hosting.Radius/Publishing/RadiusInfrastructureOptions.cs", + "sourceLines": "70-70" + }, + { + "name": "RecipePacks", + "kind": "property", + "accessibility": "public", + "signature": "public List RadiusInfrastructureOptions.RecipePacks", + "returnType": "System.Collections.Generic.List", + "hasGet": true, + "docs": { + "summary": [ + { + "kind": "text", + "text": " Gets the list of " + }, + { + "kind": "code", + "text": "Radius.Core/recipePacks" + }, + { + "kind": "text", + "text": " constructs. " + } + ] + }, + "sourceFile": "src/Aspire.Hosting.Radius/Publishing/RadiusInfrastructureOptions.cs", + "sourceLines": "39-39" + }, + { + "name": "ResourceTypeInstances", + "kind": "property", + "accessibility": "public", + "signature": "public List RadiusInfrastructureOptions.ResourceTypeInstances", + "returnType": "System.Collections.Generic.List", + "hasGet": true, + "docs": { + "summary": [ + { + "kind": "text", + "text": " Gets the list of resource type instance constructs (e.g., " + }, + { + "kind": "code", + "text": "Radius.Data/redisCaches" + }, + { + "kind": "text", + "text": ", " + }, + { + "kind": "code", + "text": "Radius.Messaging/rabbitMQQueues" + }, + { + "kind": "text", + "text": "). " + } + ] + }, + "sourceFile": "src/Aspire.Hosting.Radius/Publishing/RadiusInfrastructureOptions.cs", + "sourceLines": "45-45" + } + ] + }, + { + "name": "ConnectionConstruct", + "fullName": "Aspire.Hosting.Radius.Publishing.Constructs.ConnectionConstruct", + "namespace": "Aspire.Hosting.Radius.Publishing.Constructs", + "kind": "class", + "accessibility": "public", + "isSealed": true, + "baseType": "Azure.Provisioning.Primitives.ProvisionableConstruct", + "docs": { + "summary": [ + { + "kind": "text", + "text": " Represents a connection entry in a container's connections block. " + } + ] + }, + "attributes": [ + { + "name": "System.Diagnostics.CodeAnalysis.ExperimentalAttribute", + "constructorArguments": [ + "ASPIRERADIUS004" + ], + "arguments": { + "UrlFormat": "https://aka.ms/aspire/diagnostics/{0}" + } + } + ], + "sourceFile": "src/Aspire.Hosting.Radius/Publishing/Constructs/ConnectionConstruct.cs", + "sourceLines": "16-16", + "members": [ + { + "name": ".ctor", + "kind": "constructor", + "accessibility": "public", + "signature": "public ConnectionConstruct.ConnectionConstruct()", + "returnType": "void" + }, + { + "name": "Source", + "kind": "property", + "accessibility": "public", + "signature": "public BicepValue ConnectionConstruct.Source", + "returnType": "Azure.Provisioning.BicepValue", + "hasGet": true, + "hasSet": true, + "docs": { + "summary": [ + { + "kind": "text", + "text": "Reference to the source resource ID." + } + ] + }, + "sourceFile": "src/Aspire.Hosting.Radius/Publishing/Constructs/ConnectionConstruct.cs" + } + ] + }, + { + "name": "ContainerEnvVarConstruct", + "fullName": "Aspire.Hosting.Radius.Publishing.Constructs.ContainerEnvVarConstruct", + "namespace": "Aspire.Hosting.Radius.Publishing.Constructs", + "kind": "class", + "accessibility": "public", + "isSealed": true, + "baseType": "Azure.Provisioning.Primitives.ProvisionableConstruct", + "docs": { + "summary": [ + { + "kind": "text", + "text": " Represents a single environment-variable entry in a container's " + }, + { + "kind": "code", + "text": "env" + }, + { + "kind": "text", + "text": " block. " + } + ], + "remarks": [ + { + "kind": "text", + "text": " The Radius container schema models " + }, + { + "kind": "code", + "text": "env" + }, + { + "kind": "text", + "text": " as a map keyed by the variable name, where each entry is an object carrying a " + }, + { + "kind": "code", + "text": "value" + }, + { + "kind": "text", + "text": " (or a " + }, + { + "kind": "code", + "text": "valueFrom" + }, + { + "kind": "text", + "text": " source). This construct emits the " + }, + { + "kind": "code", + "text": "value" + }, + { + "kind": "text", + "text": " form. A secret-bound value is assigned a Bicep " + }, + { + "kind": "code", + "text": "param" + }, + { + "kind": "text", + "text": " reference (to an " + }, + { + "kind": "code", + "text": "@secure()" + }, + { + "kind": "text", + "text": " parameter) so the literal secret never appears in the published artifact. See: https://github.com/radius-project/radius/blob/main/eng/design-notes/extensibility/2025-08-container-resource-type.md " + } + ] + }, + "attributes": [ + { + "name": "System.Diagnostics.CodeAnalysis.ExperimentalAttribute", + "constructorArguments": [ + "ASPIRERADIUS004" + ], + "arguments": { + "UrlFormat": "https://aka.ms/aspire/diagnostics/{0}" + } + } + ], + "sourceFile": "src/Aspire.Hosting.Radius/Publishing/Constructs/ContainerEnvVarConstruct.cs", + "sourceLines": "24-24", + "members": [ + { + "name": ".ctor", + "kind": "constructor", + "accessibility": "public", + "signature": "public ContainerEnvVarConstruct.ContainerEnvVarConstruct()", + "returnType": "void" + }, + { + "name": "Value", + "kind": "property", + "accessibility": "public", + "signature": "public BicepValue ContainerEnvVarConstruct.Value", + "returnType": "Azure.Provisioning.BicepValue", + "hasGet": true, + "hasSet": true, + "docs": { + "summary": [ + { + "kind": "text", + "text": "The environment variable value (a literal, or a reference to a Bicep parameter)." + } + ] + }, + "sourceFile": "src/Aspire.Hosting.Radius/Publishing/Constructs/ContainerEnvVarConstruct.cs" + } + ] + }, + { + "name": "ContainerPortConstruct", + "fullName": "Aspire.Hosting.Radius.Publishing.Constructs.ContainerPortConstruct", + "namespace": "Aspire.Hosting.Radius.Publishing.Constructs", + "kind": "class", + "accessibility": "public", + "isSealed": true, + "baseType": "Azure.Provisioning.Primitives.ProvisionableConstruct", + "docs": { + "summary": [ + { + "kind": "text", + "text": " Represents a single port entry in a container's " + }, + { + "kind": "code", + "text": "ports" + }, + { + "kind": "text", + "text": " block. " + } + ], + "remarks": [ + { + "kind": "text", + "text": " The Radius container schema models " + }, + { + "kind": "code", + "text": "ports" + }, + { + "kind": "text", + "text": " as a map keyed by the port name, where each entry exposes a " + }, + { + "kind": "code", + "text": "containerPort" + }, + { + "kind": "text", + "text": " (the port the application listens on inside the container) and an optional " + }, + { + "kind": "code", + "text": "protocol" + }, + { + "kind": "text", + "text": " (" + }, + { + "kind": "code", + "text": "TCP" + }, + { + "kind": "text", + "text": " or " + }, + { + "kind": "code", + "text": "UDP" + }, + { + "kind": "text", + "text": "). See: https://github.com/radius-project/radius/blob/main/eng/design-notes/extensibility/2025-08-container-resource-type.md " + } + ] + }, + "attributes": [ + { + "name": "System.Diagnostics.CodeAnalysis.ExperimentalAttribute", + "constructorArguments": [ + "ASPIRERADIUS004" + ], + "arguments": { + "UrlFormat": "https://aka.ms/aspire/diagnostics/{0}" + } + } + ], + "sourceFile": "src/Aspire.Hosting.Radius/Publishing/Constructs/ContainerPortConstruct.cs", + "sourceLines": "22-22", + "members": [ + { + "name": ".ctor", + "kind": "constructor", + "accessibility": "public", + "signature": "public ContainerPortConstruct.ContainerPortConstruct()", + "returnType": "void" + }, + { + "name": "ContainerPort", + "kind": "property", + "accessibility": "public", + "signature": "public BicepValue ContainerPortConstruct.ContainerPort", + "returnType": "Azure.Provisioning.BicepValue", + "hasGet": true, + "hasSet": true, + "docs": { + "summary": [ + { + "kind": "text", + "text": "The port the application listens on inside the container." + } + ] + }, + "sourceFile": "src/Aspire.Hosting.Radius/Publishing/Constructs/ContainerPortConstruct.cs" + }, + { + "name": "Protocol", + "kind": "property", + "accessibility": "public", + "signature": "public BicepValue ContainerPortConstruct.Protocol", + "returnType": "Azure.Provisioning.BicepValue", + "hasGet": true, + "hasSet": true, + "docs": { + "summary": [ + { + "kind": "text", + "text": "The transport protocol (" + }, + { + "kind": "code", + "text": "TCP" + }, + { + "kind": "text", + "text": " or " + }, + { + "kind": "code", + "text": "UDP" + }, + { + "kind": "text", + "text": ")." + } + ] + }, + "sourceFile": "src/Aspire.Hosting.Radius/Publishing/Constructs/ContainerPortConstruct.cs" + } + ] + }, + { + "name": "LegacyApplicationConstruct", + "fullName": "Aspire.Hosting.Radius.Publishing.Constructs.LegacyApplicationConstruct", + "namespace": "Aspire.Hosting.Radius.Publishing.Constructs", + "kind": "class", + "accessibility": "public", + "isSealed": true, + "baseType": "Azure.Provisioning.Primitives.ProvisionableResource", + "docs": { + "summary": [ + { + "kind": "text", + "text": " Represents a legacy " + }, + { + "kind": "code", + "text": "Applications.Core/applications@2023-10-01-preview" + }, + { + "kind": "text", + "text": " resource in the Bicep AST. Parent for " + }, + { + "kind": "code", + "text": "Applications.*" + }, + { + "kind": "text", + "text": " portable resources that still use the legacy fallback path. " + } + ] + }, + "attributes": [ + { + "name": "System.Diagnostics.CodeAnalysis.ExperimentalAttribute", + "constructorArguments": [ + "ASPIRERADIUS004" + ], + "arguments": { + "UrlFormat": "https://aka.ms/aspire/diagnostics/{0}" + } + } + ], + "sourceFile": "src/Aspire.Hosting.Radius/Publishing/Constructs/LegacyApplicationConstruct.cs", + "sourceLines": "19-19", + "members": [ + { + "name": ".ctor", + "kind": "constructor", + "accessibility": "public", + "signature": "public LegacyApplicationConstruct.LegacyApplicationConstruct(string bicepIdentifier)", + "returnType": "void", + "parameters": [ + { + "name": "bicepIdentifier", + "type": "string" + } + ], + "docs": { + "summary": [ + { + "kind": "text", + "text": "Initializes a new " + }, + { + "kind": "cref", + "value": "T:Aspire.Hosting.Radius.Publishing.Constructs.LegacyApplicationConstruct" + }, + { + "kind": "text", + "text": " with the given Bicep identifier." + } + ] + }, + "sourceFile": "src/Aspire.Hosting.Radius/Publishing/Constructs/LegacyApplicationConstruct.cs", + "sourceLines": "40-42" + }, + { + "name": "ApplicationName", + "kind": "property", + "accessibility": "public", + "signature": "public BicepValue LegacyApplicationConstruct.ApplicationName", + "returnType": "Azure.Provisioning.BicepValue", + "hasGet": true, + "hasSet": true, + "docs": { + "summary": [ + { + "kind": "text", + "text": "The resource name." + } + ] + }, + "sourceFile": "src/Aspire.Hosting.Radius/Publishing/Constructs/LegacyApplicationConstruct.cs" + }, + { + "name": "EnvironmentId", + "kind": "property", + "accessibility": "public", + "signature": "public BicepValue LegacyApplicationConstruct.EnvironmentId", + "returnType": "Azure.Provisioning.BicepValue", + "hasGet": true, + "hasSet": true, + "docs": { + "summary": [ + { + "kind": "text", + "text": "Reference to the legacy environment resource ID." + } + ] + }, + "sourceFile": "src/Aspire.Hosting.Radius/Publishing/Constructs/LegacyApplicationConstruct.cs" + } + ] + }, + { + "name": "LegacyApplicationEnvironmentConstruct", + "fullName": "Aspire.Hosting.Radius.Publishing.Constructs.LegacyApplicationEnvironmentConstruct", + "namespace": "Aspire.Hosting.Radius.Publishing.Constructs", + "kind": "class", + "accessibility": "public", + "isSealed": true, + "baseType": "Azure.Provisioning.Primitives.ProvisionableResource", + "docs": { + "summary": [ + { + "kind": "text", + "text": " Represents a legacy " + }, + { + "kind": "code", + "text": "Applications.Core/environments@2023-10-01-preview" + }, + { + "kind": "text", + "text": " resource in the Bicep AST. Used as a parent for " + }, + { + "kind": "code", + "text": "Applications.*" + }, + { + "kind": "text", + "text": " portable resources whose UDT counterparts are not yet GA (Redis, Mongo, RabbitMQ, Dapr state store, Dapr pubsub). " + } + ], + "remarks": [ + { + "kind": "text", + "text": " Legacy environments carry recipes inline under " + }, + { + "kind": "code", + "text": "properties.recipes" + }, + { + "kind": "text", + "text": " (nested " + }, + { + "kind": "code", + "text": "type → recipeName → { templateKind, templatePath }" + }, + { + "kind": "text", + "text": ") — the legacy schema keeps the original key names. The new " + }, + { + "kind": "code", + "text": "recipeKind" + }, + { + "kind": "text", + "text": " / " + }, + { + "kind": "code", + "text": "recipeLocation" + }, + { + "kind": "text", + "text": " keys are only used by " + }, + { + "kind": "code", + "text": "Radius.Core/recipePacks" + }, + { + "kind": "text", + "text": ". " + } + ] + }, + "attributes": [ + { + "name": "System.Diagnostics.CodeAnalysis.ExperimentalAttribute", + "constructorArguments": [ + "ASPIRERADIUS004" + ], + "arguments": { + "UrlFormat": "https://aka.ms/aspire/diagnostics/{0}" + } + } + ], + "sourceFile": "src/Aspire.Hosting.Radius/Publishing/Constructs/LegacyApplicationEnvironmentConstruct.cs", + "sourceLines": "26-26", + "members": [ + { + "name": ".ctor", + "kind": "constructor", + "accessibility": "public", + "signature": "public LegacyApplicationEnvironmentConstruct.LegacyApplicationEnvironmentConstruct(string bicepIdentifier)", + "returnType": "void", + "parameters": [ + { + "name": "bicepIdentifier", + "type": "string" + } + ], + "docs": { + "summary": [ + { + "kind": "text", + "text": "Initializes a new " + }, + { + "kind": "cref", + "value": "T:Aspire.Hosting.Radius.Publishing.Constructs.LegacyApplicationEnvironmentConstruct" + }, + { + "kind": "text", + "text": " with the given Bicep identifier." + } + ] + }, + "sourceFile": "src/Aspire.Hosting.Radius/Publishing/Constructs/LegacyApplicationEnvironmentConstruct.cs", + "sourceLines": "104-106" + }, + { + "name": "AwsScope", + "kind": "property", + "accessibility": "public", + "signature": "public BicepValue LegacyApplicationEnvironmentConstruct.AwsScope", + "returnType": "Azure.Provisioning.BicepValue", + "hasGet": true, + "hasSet": true, + "docs": { + "summary": [ + { + "kind": "text", + "text": " Scope path of the AWS cloud provider, emitted as " + }, + { + "kind": "code", + "text": "properties.providers.aws.scope" + }, + { + "kind": "text", + "text": ". Unset for environments that do not configure an AWS provider. " + } + ] + }, + "sourceFile": "src/Aspire.Hosting.Radius/Publishing/Constructs/LegacyApplicationEnvironmentConstruct.cs" + }, + { + "name": "AzureScope", + "kind": "property", + "accessibility": "public", + "signature": "public BicepValue LegacyApplicationEnvironmentConstruct.AzureScope", + "returnType": "Azure.Provisioning.BicepValue", + "hasGet": true, + "hasSet": true, + "docs": { + "summary": [ + { + "kind": "text", + "text": " Scope path of the Azure cloud provider, emitted as " + }, + { + "kind": "code", + "text": "properties.providers.azure.scope" + }, + { + "kind": "text", + "text": ". Unset for environments that do not configure an Azure provider. Required when a cloud-managed resource on this environment is materialized via a legacy " + }, + { + "kind": "code", + "text": "Applications.*" + }, + { + "kind": "text", + "text": " recipe so Radius can resolve the Azure provider during deployment. " + } + ] + }, + "sourceFile": "src/Aspire.Hosting.Radius/Publishing/Constructs/LegacyApplicationEnvironmentConstruct.cs" + }, + { + "name": "ComputeKind", + "kind": "property", + "accessibility": "public", + "signature": "public BicepValue LegacyApplicationEnvironmentConstruct.ComputeKind", + "returnType": "Azure.Provisioning.BicepValue", + "hasGet": true, + "hasSet": true, + "docs": { + "summary": [ + { + "kind": "text", + "text": "Compute kind (e.g., " + }, + { + "kind": "code", + "text": "kubernetes" + }, + { + "kind": "text", + "text": ")." + } + ] + }, + "sourceFile": "src/Aspire.Hosting.Radius/Publishing/Constructs/LegacyApplicationEnvironmentConstruct.cs" + }, + { + "name": "ComputeNamespace", + "kind": "property", + "accessibility": "public", + "signature": "public BicepValue LegacyApplicationEnvironmentConstruct.ComputeNamespace", + "returnType": "Azure.Provisioning.BicepValue", + "hasGet": true, + "hasSet": true, + "docs": { + "summary": [ + { + "kind": "text", + "text": "Compute namespace for Kubernetes." + } + ] + }, + "sourceFile": "src/Aspire.Hosting.Radius/Publishing/Constructs/LegacyApplicationEnvironmentConstruct.cs" + }, + { + "name": "EnvironmentName", + "kind": "property", + "accessibility": "public", + "signature": "public BicepValue LegacyApplicationEnvironmentConstruct.EnvironmentName", + "returnType": "Azure.Provisioning.BicepValue", + "hasGet": true, + "hasSet": true, + "docs": { + "summary": [ + { + "kind": "text", + "text": "The resource name." + } + ] + }, + "sourceFile": "src/Aspire.Hosting.Radius/Publishing/Constructs/LegacyApplicationEnvironmentConstruct.cs" + }, + { + "name": "RecipeConfig", + "kind": "property", + "accessibility": "public", + "signature": "public BicepDictionary LegacyApplicationEnvironmentConstruct.RecipeConfig", + "returnType": "Azure.Provisioning.BicepDictionary", + "hasGet": true, + "hasSet": true, + "docs": { + "summary": [ + { + "kind": "text", + "text": " The " + }, + { + "kind": "code", + "text": "recipeConfig" + }, + { + "kind": "text", + "text": " block (" + }, + { + "kind": "code", + "text": "properties.recipeConfig" + }, + { + "kind": "text", + "text": ") carrying secret-store references for private Bicep-registry auth, Terraform Git PAT auth, and " + }, + { + "kind": "code", + "text": "envSecrets" + }, + { + "kind": "text", + "text": ". Populated only when a secret store is consumed. " + } + ] + }, + "sourceFile": "src/Aspire.Hosting.Radius/Publishing/Constructs/LegacyApplicationEnvironmentConstruct.cs" + }, + { + "name": "Recipes", + "kind": "property", + "accessibility": "public", + "signature": "public BicepDictionary> LegacyApplicationEnvironmentConstruct.Recipes", + "returnType": "Azure.Provisioning.BicepDictionary>", + "hasGet": true, + "hasSet": true, + "docs": { + "summary": [ + { + "kind": "text", + "text": " Inline recipes keyed by resource type, with each value being a map of recipe name to recipe entry. " + } + ] + }, + "sourceFile": "src/Aspire.Hosting.Radius/Publishing/Constructs/LegacyApplicationEnvironmentConstruct.cs" + } + ] + }, + { + "name": "LegacyRecipeEntryConstruct", + "fullName": "Aspire.Hosting.Radius.Publishing.Constructs.LegacyRecipeEntryConstruct", + "namespace": "Aspire.Hosting.Radius.Publishing.Constructs", + "kind": "class", + "accessibility": "public", + "isSealed": true, + "baseType": "Azure.Provisioning.Primitives.ProvisionableConstruct", + "docs": { + "summary": [ + { + "kind": "text", + "text": " Represents an individual recipe entry nested inside a legacy " + }, + { + "kind": "code", + "text": "Applications.Core/environments" + }, + { + "kind": "code", + "text": "properties.recipes" + }, + { + "kind": "text", + "text": " block. Uses the original legacy schema keys " + }, + { + "kind": "code", + "text": "templateKind" + }, + { + "kind": "text", + "text": " / " + }, + { + "kind": "code", + "text": "templatePath" + }, + { + "kind": "text", + "text": " (the new " + }, + { + "kind": "code", + "text": "recipeKind" + }, + { + "kind": "text", + "text": " / " + }, + { + "kind": "code", + "text": "recipeLocation" + }, + { + "kind": "text", + "text": " keys are only valid on " + }, + { + "kind": "code", + "text": "Radius.Core/recipePacks" + }, + { + "kind": "text", + "text": "). " + } + ] + }, + "attributes": [ + { + "name": "System.Diagnostics.CodeAnalysis.ExperimentalAttribute", + "constructorArguments": [ + "ASPIRERADIUS004" + ], + "arguments": { + "UrlFormat": "https://aka.ms/aspire/diagnostics/{0}" + } + } + ], + "sourceFile": "src/Aspire.Hosting.Radius/Publishing/Constructs/LegacyRecipeEntryConstruct.cs", + "sourceLines": "20-20", + "members": [ + { + "name": ".ctor", + "kind": "constructor", + "accessibility": "public", + "signature": "public LegacyRecipeEntryConstruct.LegacyRecipeEntryConstruct()", + "returnType": "void" + }, + { + "name": "Parameters", + "kind": "property", + "accessibility": "public", + "signature": "public BicepDictionary LegacyRecipeEntryConstruct.Parameters", + "returnType": "Azure.Provisioning.BicepDictionary", + "hasGet": true, + "hasSet": true, + "docs": { + "summary": [ + { + "kind": "text", + "text": " Optional recipe parameters for this legacy entry. Populated only when the environment declares recipe parameters; left unassigned otherwise so the " + }, + { + "kind": "code", + "text": "parameters" + }, + { + "kind": "text", + "text": " key is omitted from the emitted Bicep. " + } + ] + }, + "sourceFile": "src/Aspire.Hosting.Radius/Publishing/Constructs/LegacyRecipeEntryConstruct.cs" + }, + { + "name": "TemplateKind", + "kind": "property", + "accessibility": "public", + "signature": "public BicepValue LegacyRecipeEntryConstruct.TemplateKind", + "returnType": "Azure.Provisioning.BicepValue", + "hasGet": true, + "hasSet": true, + "docs": { + "summary": [ + { + "kind": "text", + "text": "Recipe template kind (e.g., \"bicep\")." + } + ] + }, + "sourceFile": "src/Aspire.Hosting.Radius/Publishing/Constructs/LegacyRecipeEntryConstruct.cs" + }, + { + "name": "TemplatePath", + "kind": "property", + "accessibility": "public", + "signature": "public BicepValue LegacyRecipeEntryConstruct.TemplatePath", + "returnType": "Azure.Provisioning.BicepValue", + "hasGet": true, + "hasSet": true, + "docs": { + "summary": [ + { + "kind": "text", + "text": "Recipe template path / OCI registry URL." + } + ] + }, + "sourceFile": "src/Aspire.Hosting.Radius/Publishing/Constructs/LegacyRecipeEntryConstruct.cs" + } + ] + }, + { + "name": "RadiusApplicationConstruct", + "fullName": "Aspire.Hosting.Radius.Publishing.Constructs.RadiusApplicationConstruct", + "namespace": "Aspire.Hosting.Radius.Publishing.Constructs", + "kind": "class", + "accessibility": "public", + "isSealed": true, + "baseType": "Azure.Provisioning.Primitives.ProvisionableResource", + "docs": { + "summary": [ + { + "kind": "text", + "text": " Represents a " + }, + { + "kind": "code", + "text": "Radius.Core/applications" + }, + { + "kind": "text", + "text": " resource in the Bicep AST. " + } + ] + }, + "attributes": [ + { + "name": "System.Diagnostics.CodeAnalysis.ExperimentalAttribute", + "constructorArguments": [ + "ASPIRERADIUS004" + ], + "arguments": { + "UrlFormat": "https://aka.ms/aspire/diagnostics/{0}" + } + } + ], + "sourceFile": "src/Aspire.Hosting.Radius/Publishing/Constructs/RadiusApplicationConstruct.cs", + "sourceLines": "17-17", + "members": [ + { + "name": ".ctor", + "kind": "constructor", + "accessibility": "public", + "signature": "public RadiusApplicationConstruct.RadiusApplicationConstruct(string bicepIdentifier)", + "returnType": "void", + "parameters": [ + { + "name": "bicepIdentifier", + "type": "string" + } + ], + "docs": { + "summary": [ + { + "kind": "text", + "text": "Initializes a new " + }, + { + "kind": "cref", + "value": "T:Aspire.Hosting.Radius.Publishing.Constructs.RadiusApplicationConstruct" + }, + { + "kind": "text", + "text": " with the given Bicep identifier." + } + ] + }, + "sourceFile": "src/Aspire.Hosting.Radius/Publishing/Constructs/RadiusApplicationConstruct.cs", + "sourceLines": "38-40" + }, + { + "name": "ApplicationName", + "kind": "property", + "accessibility": "public", + "signature": "public BicepValue RadiusApplicationConstruct.ApplicationName", + "returnType": "Azure.Provisioning.BicepValue", + "hasGet": true, + "hasSet": true, + "docs": { + "summary": [ + { + "kind": "text", + "text": "The resource name." + } + ] + }, + "sourceFile": "src/Aspire.Hosting.Radius/Publishing/Constructs/RadiusApplicationConstruct.cs" + }, + { + "name": "EnvironmentId", + "kind": "property", + "accessibility": "public", + "signature": "public BicepValue RadiusApplicationConstruct.EnvironmentId", + "returnType": "Azure.Provisioning.BicepValue", + "hasGet": true, + "hasSet": true, + "docs": { + "summary": [ + { + "kind": "text", + "text": "Reference to the environment resource ID." + } + ] + }, + "sourceFile": "src/Aspire.Hosting.Radius/Publishing/Constructs/RadiusApplicationConstruct.cs" + } + ] + }, + { + "name": "RadiusContainerConstruct", + "fullName": "Aspire.Hosting.Radius.Publishing.Constructs.RadiusContainerConstruct", + "namespace": "Aspire.Hosting.Radius.Publishing.Constructs", + "kind": "class", + "accessibility": "public", + "isSealed": true, + "baseType": "Azure.Provisioning.Primitives.ProvisionableResource", + "docs": { + "summary": [ + { + "kind": "text", + "text": " Represents a " + }, + { + "kind": "code", + "text": "Radius.Compute/containers" + }, + { + "kind": "text", + "text": " resource in the Bicep AST. " + } + ], + "remarks": [ + { + "kind": "text", + "text": " Aligned with the Radius container v2 schema (" + }, + { + "kind": "code", + "text": "Radius.Compute/containers@2025-08-01-preview" + }, + { + "kind": "text", + "text": "). The " + }, + { + "kind": "code", + "text": "imagePullPolicy" + }, + { + "kind": "text", + "text": " property has been removed from the v2 schema. See: https://github.com/radius-project/radius/blob/main/eng/design-notes/extensibility/2025-08-container-resource-type.md " + } + ] + }, + "attributes": [ + { + "name": "System.Diagnostics.CodeAnalysis.ExperimentalAttribute", + "constructorArguments": [ + "ASPIRERADIUS004" + ], + "arguments": { + "UrlFormat": "https://aka.ms/aspire/diagnostics/{0}" + } + } + ], + "sourceFile": "src/Aspire.Hosting.Radius/Publishing/Constructs/RadiusContainerConstruct.cs", + "sourceLines": "22-22", + "members": [ + { + "name": ".ctor", + "kind": "constructor", + "accessibility": "public", + "signature": "public RadiusContainerConstruct.RadiusContainerConstruct(string bicepIdentifier, string containerName)", + "returnType": "void", + "parameters": [ + { + "name": "bicepIdentifier", + "type": "string" + }, + { + "name": "containerName", + "type": "string" + } + ], + "docs": { + "summary": [ + { + "kind": "text", + "text": " Initializes a new " + }, + { + "kind": "cref", + "value": "T:Aspire.Hosting.Radius.Publishing.Constructs.RadiusContainerConstruct" + }, + { + "kind": "text", + "text": " with the given Bicep identifier and Radius container resource name. " + } + ], + "parameters": { + "bicepIdentifier": [ + { + "kind": "text", + "text": " The Bicep identifier for this resource. May be sanitized (e.g., hyphens become underscores) so it remains a valid C#/Bicep identifier. " + } + ], + "containerName": [ + { + "kind": "text", + "text": " The Radius container resource name as it should appear in the deployed manifest. This value is used as the map key under " + }, + { + "kind": "code", + "text": "properties.containers" + }, + { + "kind": "text", + "text": ". The Radius v2 schema does not require this map key to equal the top-level " + }, + { + "kind": "code", + "text": "name:" + }, + { + "kind": "text", + "text": ", but Aspire keys both by the resource name and requires them to match so the service discovery it derives from that name resolves to the Service the recipe creates (see " + }, + { + "kind": "cref", + "value": "P:Aspire.Hosting.Radius.Publishing.Constructs.RadiusContainerConstruct.ContainerMapKey" + }, + { + "kind": "text", + "text": "). It must be the unsanitized resource name (hyphens preserved); using " + }, + { + "kind": "code", + "text": "BicepIdentifier" + }, + { + "kind": "text", + "text": " here would emit a key that does not match the " + }, + { + "kind": "code", + "text": "name" + }, + { + "kind": "text", + "text": " when the resource name contains characters that get sanitized. " + } + ] + } + }, + "sourceFile": "src/Aspire.Hosting.Radius/Publishing/Constructs/RadiusContainerConstruct.cs", + "sourceLines": "121-125" + }, + { + "name": "ApplicationId", + "kind": "property", + "accessibility": "public", + "signature": "public BicepValue RadiusContainerConstruct.ApplicationId", + "returnType": "Azure.Provisioning.BicepValue", + "hasGet": true, + "hasSet": true, + "docs": { + "summary": [ + { + "kind": "text", + "text": "Reference to the application resource ID." + } + ] + }, + "sourceFile": "src/Aspire.Hosting.Radius/Publishing/Constructs/RadiusContainerConstruct.cs" + }, + { + "name": "Connections", + "kind": "property", + "accessibility": "public", + "signature": "public BicepDictionary RadiusContainerConstruct.Connections", + "returnType": "Azure.Provisioning.BicepDictionary", + "hasGet": true, + "hasSet": true, + "docs": { + "summary": [ + { + "kind": "text", + "text": " Dictionary of named connections to other resources. Keys are connection names; values contain source resource ID references. " + } + ] + }, + "sourceFile": "src/Aspire.Hosting.Radius/Publishing/Constructs/RadiusContainerConstruct.cs" + }, + { + "name": "ContainerName", + "kind": "property", + "accessibility": "public", + "signature": "public BicepValue RadiusContainerConstruct.ContainerName", + "returnType": "Azure.Provisioning.BicepValue", + "hasGet": true, + "hasSet": true, + "docs": { + "summary": [ + { + "kind": "text", + "text": "The resource name." + } + ] + }, + "sourceFile": "src/Aspire.Hosting.Radius/Publishing/Constructs/RadiusContainerConstruct.cs" + }, + { + "name": "Env", + "kind": "property", + "accessibility": "public", + "signature": "public BicepDictionary RadiusContainerConstruct.Env", + "returnType": "Azure.Provisioning.BicepDictionary", + "hasGet": true, + "hasSet": true, + "docs": { + "summary": [ + { + "kind": "text", + "text": " Environment variables for the container, keyed by variable name. Each entry carries a " + }, + { + "kind": "code", + "text": "value" + }, + { + "kind": "text", + "text": " (a literal or a reference to a Bicep parameter for secret values). " + } + ] + }, + "sourceFile": "src/Aspire.Hosting.Radius/Publishing/Constructs/RadiusContainerConstruct.cs" + }, + { + "name": "EnvironmentId", + "kind": "property", + "accessibility": "public", + "signature": "public BicepValue RadiusContainerConstruct.EnvironmentId", + "returnType": "Azure.Provisioning.BicepValue", + "hasGet": true, + "hasSet": true, + "docs": { + "summary": [ + { + "kind": "text", + "text": "Reference to the environment resource ID." + } + ] + }, + "sourceFile": "src/Aspire.Hosting.Radius/Publishing/Constructs/RadiusContainerConstruct.cs" + }, + { + "name": "Image", + "kind": "property", + "accessibility": "public", + "signature": "public BicepValue RadiusContainerConstruct.Image", + "returnType": "Azure.Provisioning.BicepValue", + "hasGet": true, + "hasSet": true, + "docs": { + "summary": [ + { + "kind": "text", + "text": "Container image (e.g., \"nginx:latest\")." + } + ] + }, + "sourceFile": "src/Aspire.Hosting.Radius/Publishing/Constructs/RadiusContainerConstruct.cs" + }, + { + "name": "Ports", + "kind": "property", + "accessibility": "public", + "signature": "public BicepDictionary RadiusContainerConstruct.Ports", + "returnType": "Azure.Provisioning.BicepDictionary", + "hasGet": true, + "hasSet": true, + "docs": { + "summary": [ + { + "kind": "text", + "text": " Ports exposed by the container, keyed by port name. Each entry carries a " + }, + { + "kind": "code", + "text": "containerPort" + }, + { + "kind": "text", + "text": " and an optional " + }, + { + "kind": "code", + "text": "protocol" + }, + { + "kind": "text", + "text": ". " + } + ] + }, + "sourceFile": "src/Aspire.Hosting.Radius/Publishing/Constructs/RadiusContainerConstruct.cs" + } + ] + }, + { + "name": "RadiusEnvironmentConstruct", + "fullName": "Aspire.Hosting.Radius.Publishing.Constructs.RadiusEnvironmentConstruct", + "namespace": "Aspire.Hosting.Radius.Publishing.Constructs", + "kind": "class", + "accessibility": "public", + "isSealed": true, + "baseType": "Azure.Provisioning.Primitives.ProvisionableResource", + "docs": { + "summary": [ + { + "kind": "text", + "text": " Represents a " + }, + { + "kind": "code", + "text": "Radius.Core/environments" + }, + { + "kind": "text", + "text": " resource in the Bicep AST. " + } + ] + }, + "attributes": [ + { + "name": "System.Diagnostics.CodeAnalysis.ExperimentalAttribute", + "constructorArguments": [ + "ASPIRERADIUS004" + ], + "arguments": { + "UrlFormat": "https://aka.ms/aspire/diagnostics/{0}" + } + } + ], + "sourceFile": "src/Aspire.Hosting.Radius/Publishing/Constructs/RadiusEnvironmentConstruct.cs", + "sourceLines": "17-17", + "members": [ + { + "name": ".ctor", + "kind": "constructor", + "accessibility": "public", + "signature": "public RadiusEnvironmentConstruct.RadiusEnvironmentConstruct(string bicepIdentifier)", + "returnType": "void", + "parameters": [ + { + "name": "bicepIdentifier", + "type": "string" + } + ], + "docs": { + "summary": [ + { + "kind": "text", + "text": "Initializes a new " + }, + { + "kind": "cref", + "value": "T:Aspire.Hosting.Radius.Publishing.Constructs.RadiusEnvironmentConstruct" + }, + { + "kind": "text", + "text": " with the given Bicep identifier." + } + ] + }, + "sourceFile": "src/Aspire.Hosting.Radius/Publishing/Constructs/RadiusEnvironmentConstruct.cs", + "sourceLines": "105-107" + }, + { + "name": "AwsAccountId", + "kind": "property", + "accessibility": "public", + "signature": "public BicepValue RadiusEnvironmentConstruct.AwsAccountId", + "returnType": "Azure.Provisioning.BicepValue", + "hasGet": true, + "hasSet": true, + "docs": { + "summary": [ + { + "kind": "text", + "text": " 12-digit account ID of the AWS cloud provider. Emitted as " + }, + { + "kind": "code", + "text": "properties.providers.aws.accountId" + }, + { + "kind": "text", + "text": ". The native " + }, + { + "kind": "code", + "text": "Radius.Core/environments" + }, + { + "kind": "text", + "text": " schema models the AWS provider with discrete " + }, + { + "kind": "code", + "text": "accountId" + }, + { + "kind": "text", + "text": "/" + }, + { + "kind": "code", + "text": "region" + }, + { + "kind": "text", + "text": " fields (unlike the legacy " + }, + { + "kind": "code", + "text": "Applications.Core/environments" + }, + { + "kind": "text", + "text": " single " + }, + { + "kind": "code", + "text": "scope" + }, + { + "kind": "text", + "text": " path). Unset for environments that do not configure an AWS provider. " + } + ] + }, + "sourceFile": "src/Aspire.Hosting.Radius/Publishing/Constructs/RadiusEnvironmentConstruct.cs" + }, + { + "name": "AwsRegion", + "kind": "property", + "accessibility": "public", + "signature": "public BicepValue RadiusEnvironmentConstruct.AwsRegion", + "returnType": "Azure.Provisioning.BicepValue", + "hasGet": true, + "hasSet": true, + "docs": { + "summary": [ + { + "kind": "text", + "text": " Region code of the AWS cloud provider, e.g. " + }, + { + "kind": "code", + "text": "us-west-2" + }, + { + "kind": "text", + "text": ". Emitted as " + }, + { + "kind": "code", + "text": "properties.providers.aws.region" + }, + { + "kind": "text", + "text": ". Unset for environments that do not configure an AWS provider. " + } + ] + }, + "sourceFile": "src/Aspire.Hosting.Radius/Publishing/Constructs/RadiusEnvironmentConstruct.cs" + }, + { + "name": "AzureResourceGroupName", + "kind": "property", + "accessibility": "public", + "signature": "public BicepValue RadiusEnvironmentConstruct.AzureResourceGroupName", + "returnType": "Azure.Provisioning.BicepValue", + "hasGet": true, + "hasSet": true, + "docs": { + "summary": [ + { + "kind": "text", + "text": " Resource-group name of the Azure cloud provider. Emitted as " + }, + { + "kind": "code", + "text": "properties.providers.azure.resourceGroupName" + }, + { + "kind": "text", + "text": ". Unset for environments that do not configure an Azure provider. " + } + ] + }, + "sourceFile": "src/Aspire.Hosting.Radius/Publishing/Constructs/RadiusEnvironmentConstruct.cs" + }, + { + "name": "AzureSubscriptionId", + "kind": "property", + "accessibility": "public", + "signature": "public BicepValue RadiusEnvironmentConstruct.AzureSubscriptionId", + "returnType": "Azure.Provisioning.BicepValue", + "hasGet": true, + "hasSet": true, + "docs": { + "summary": [ + { + "kind": "text", + "text": " Subscription GUID of the Azure cloud provider. Emitted as " + }, + { + "kind": "code", + "text": "properties.providers.azure.subscriptionId" + }, + { + "kind": "text", + "text": ". The native " + }, + { + "kind": "code", + "text": "Radius.Core/environments" + }, + { + "kind": "text", + "text": " schema models the Azure provider with discrete " + }, + { + "kind": "code", + "text": "subscriptionId" + }, + { + "kind": "text", + "text": "/" + }, + { + "kind": "code", + "text": "resourceGroupName" + }, + { + "kind": "text", + "text": " fields (unlike the legacy " + }, + { + "kind": "code", + "text": "Applications.Core/environments" + }, + { + "kind": "text", + "text": " single " + }, + { + "kind": "code", + "text": "scope" + }, + { + "kind": "text", + "text": " path). Unset for environments that do not configure an Azure provider. " + } + ] + }, + "sourceFile": "src/Aspire.Hosting.Radius/Publishing/Constructs/RadiusEnvironmentConstruct.cs" + }, + { + "name": "EnvironmentName", + "kind": "property", + "accessibility": "public", + "signature": "public BicepValue RadiusEnvironmentConstruct.EnvironmentName", + "returnType": "Azure.Provisioning.BicepValue", + "hasGet": true, + "hasSet": true, + "docs": { + "summary": [ + { + "kind": "text", + "text": "The resource name." + } + ] + }, + "sourceFile": "src/Aspire.Hosting.Radius/Publishing/Constructs/RadiusEnvironmentConstruct.cs" + }, + { + "name": "KubernetesNamespace", + "kind": "property", + "accessibility": "public", + "signature": "public BicepValue RadiusEnvironmentConstruct.KubernetesNamespace", + "returnType": "Azure.Provisioning.BicepValue", + "hasGet": true, + "hasSet": true, + "docs": { + "summary": [ + { + "kind": "text", + "text": " Kubernetes namespace for the environment's Kubernetes provider. When set, emits " + }, + { + "kind": "code", + "text": "properties.providers.kubernetes.namespace" + }, + { + "kind": "text", + "text": ", which Radius requires to route built-in compute UDTs (e.g. " + }, + { + "kind": "code", + "text": "Radius.Compute/containers" + }, + { + "kind": "text", + "text": ") to a Kubernetes cluster instead of falling back to the Azure provider. " + } + ] + }, + "sourceFile": "src/Aspire.Hosting.Radius/Publishing/Constructs/RadiusEnvironmentConstruct.cs" + }, + { + "name": "RecipePacks", + "kind": "property", + "accessibility": "public", + "signature": "public BicepList RadiusEnvironmentConstruct.RecipePacks", + "returnType": "Azure.Provisioning.BicepList", + "hasGet": true, + "hasSet": true, + "docs": { + "summary": [ + { + "kind": "text", + "text": "List of recipe pack resource ID references (BicepExpressions)." + } + ] + }, + "sourceFile": "src/Aspire.Hosting.Radius/Publishing/Constructs/RadiusEnvironmentConstruct.cs" + } + ] + }, + { + "name": "RadiusRecipePackConstruct", + "fullName": "Aspire.Hosting.Radius.Publishing.Constructs.RadiusRecipePackConstruct", + "namespace": "Aspire.Hosting.Radius.Publishing.Constructs", + "kind": "class", + "accessibility": "public", + "isSealed": true, + "baseType": "Azure.Provisioning.Primitives.ProvisionableResource", + "docs": { + "summary": [ + { + "kind": "text", + "text": " Represents a " + }, + { + "kind": "code", + "text": "Radius.Core/recipePacks" + }, + { + "kind": "text", + "text": " resource in the Bicep AST. " + } + ] + }, + "attributes": [ + { + "name": "System.Diagnostics.CodeAnalysis.ExperimentalAttribute", + "constructorArguments": [ + "ASPIRERADIUS004" + ], + "arguments": { + "UrlFormat": "https://aka.ms/aspire/diagnostics/{0}" + } + } + ], + "sourceFile": "src/Aspire.Hosting.Radius/Publishing/Constructs/RadiusRecipePackConstruct.cs", + "sourceLines": "17-17", + "members": [ + { + "name": ".ctor", + "kind": "constructor", + "accessibility": "public", + "signature": "public RadiusRecipePackConstruct.RadiusRecipePackConstruct(string bicepIdentifier)", + "returnType": "void", + "parameters": [ + { + "name": "bicepIdentifier", + "type": "string" + } + ], + "docs": { + "summary": [ + { + "kind": "text", + "text": "Initializes a new " + }, + { + "kind": "cref", + "value": "T:Aspire.Hosting.Radius.Publishing.Constructs.RadiusRecipePackConstruct" + }, + { + "kind": "text", + "text": " with the given Bicep identifier." + } + ] + }, + "sourceFile": "src/Aspire.Hosting.Radius/Publishing/Constructs/RadiusRecipePackConstruct.cs", + "sourceLines": "41-43" + }, + { + "name": "PackName", + "kind": "property", + "accessibility": "public", + "signature": "public BicepValue RadiusRecipePackConstruct.PackName", + "returnType": "Azure.Provisioning.BicepValue", + "hasGet": true, + "hasSet": true, + "docs": { + "summary": [ + { + "kind": "text", + "text": "The resource name." + } + ] + }, + "sourceFile": "src/Aspire.Hosting.Radius/Publishing/Constructs/RadiusRecipePackConstruct.cs" + }, + { + "name": "Recipes", + "kind": "property", + "accessibility": "public", + "signature": "public BicepDictionary RadiusRecipePackConstruct.Recipes", + "returnType": "Azure.Provisioning.BicepDictionary", + "hasGet": true, + "hasSet": true, + "docs": { + "summary": [ + { + "kind": "text", + "text": " Dictionary mapping resource type strings to recipe entry constructs. Keys are Radius resource types (e.g., \"Radius.Data/redisCaches\"). " + } + ] + }, + "sourceFile": "src/Aspire.Hosting.Radius/Publishing/Constructs/RadiusRecipePackConstruct.cs" + } + ] + }, + { + "name": "RadiusResourceTypeConstruct", + "fullName": "Aspire.Hosting.Radius.Publishing.Constructs.RadiusResourceTypeConstruct", + "namespace": "Aspire.Hosting.Radius.Publishing.Constructs", + "kind": "class", + "accessibility": "public", + "isSealed": true, + "baseType": "Azure.Provisioning.Primitives.ProvisionableResource", + "docs": { + "summary": [ + { + "kind": "text", + "text": " Represents a Radius resource type instance (e.g., " + }, + { + "kind": "code", + "text": "Radius.Data/redisCaches" + }, + { + "kind": "text", + "text": ", " + }, + { + "kind": "code", + "text": "Radius.Messaging/rabbitMQQueues" + }, + { + "kind": "text", + "text": ") in the Bicep AST. The concrete resource type and API version are passed via the constructor since they vary per Aspire resource mapping. " + } + ] + }, + "attributes": [ + { + "name": "System.Diagnostics.CodeAnalysis.ExperimentalAttribute", + "constructorArguments": [ + "ASPIRERADIUS004" + ], + "arguments": { + "UrlFormat": "https://aka.ms/aspire/diagnostics/{0}" + } + } + ], + "sourceFile": "src/Aspire.Hosting.Radius/Publishing/Constructs/RadiusResourceTypeConstruct.cs", + "sourceLines": "19-19", + "members": [ + { + "name": ".ctor", + "kind": "constructor", + "accessibility": "public", + "signature": "public RadiusResourceTypeConstruct.RadiusResourceTypeConstruct(string bicepIdentifier, string resourceType, string apiVersion)", + "returnType": "void", + "parameters": [ + { + "name": "bicepIdentifier", + "type": "string" + }, + { + "name": "resourceType", + "type": "string" + }, + { + "name": "apiVersion", + "type": "string" + } + ], + "docs": { + "summary": [ + { + "kind": "text", + "text": "Initializes a new " + }, + { + "kind": "cref", + "value": "T:Aspire.Hosting.Radius.Publishing.Constructs.RadiusResourceTypeConstruct" + }, + { + "kind": "text", + "text": "." + } + ], + "parameters": { + "apiVersion": [ + { + "kind": "text", + "text": "The resource type API version." + } + ], + "bicepIdentifier": [ + { + "kind": "text", + "text": "The Bicep identifier for the resource." + } + ], + "resourceType": [ + { + "kind": "text", + "text": "The Radius resource type (e.g., " + }, + { + "kind": "code", + "text": "Radius.Data/redisCaches" + }, + { + "kind": "text", + "text": ")." + } + ] + } + }, + "sourceFile": "src/Aspire.Hosting.Radius/Publishing/Constructs/RadiusResourceTypeConstruct.cs", + "sourceLines": "72-75" + }, + { + "name": "ApplicationId", + "kind": "property", + "accessibility": "public", + "signature": "public BicepValue RadiusResourceTypeConstruct.ApplicationId", + "returnType": "Azure.Provisioning.BicepValue", + "hasGet": true, + "hasSet": true, + "docs": { + "summary": [ + { + "kind": "text", + "text": "Reference to the application resource ID." + } + ] + }, + "sourceFile": "src/Aspire.Hosting.Radius/Publishing/Constructs/RadiusResourceTypeConstruct.cs" + }, + { + "name": "EnvironmentId", + "kind": "property", + "accessibility": "public", + "signature": "public BicepValue RadiusResourceTypeConstruct.EnvironmentId", + "returnType": "Azure.Provisioning.BicepValue", + "hasGet": true, + "hasSet": true, + "docs": { + "summary": [ + { + "kind": "text", + "text": "Reference to the environment resource ID." + } + ] + }, + "sourceFile": "src/Aspire.Hosting.Radius/Publishing/Constructs/RadiusResourceTypeConstruct.cs" + }, + { + "name": "RecipeName", + "kind": "property", + "accessibility": "public", + "signature": "public BicepValue RadiusResourceTypeConstruct.RecipeName", + "returnType": "Azure.Provisioning.BicepValue", + "hasGet": true, + "hasSet": true, + "docs": { + "summary": [ + { + "kind": "text", + "text": "The recipe name (e.g., \"default\")." + } + ] + }, + "sourceFile": "src/Aspire.Hosting.Radius/Publishing/Constructs/RadiusResourceTypeConstruct.cs" + }, + { + "name": "RecipeParameters", + "kind": "property", + "accessibility": "public", + "signature": "public BicepDictionary RadiusResourceTypeConstruct.RecipeParameters", + "returnType": "Azure.Provisioning.BicepDictionary", + "hasGet": true, + "hasSet": true, + "docs": { + "summary": [ + { + "kind": "text", + "text": "Recipe parameters dictionary for typed parameter values." + } + ] + }, + "sourceFile": "src/Aspire.Hosting.Radius/Publishing/Constructs/RadiusResourceTypeConstruct.cs" + }, + { + "name": "ResourceName", + "kind": "property", + "accessibility": "public", + "signature": "public BicepValue RadiusResourceTypeConstruct.ResourceName", + "returnType": "Azure.Provisioning.BicepValue", + "hasGet": true, + "hasSet": true, + "docs": { + "summary": [ + { + "kind": "text", + "text": "The resource name." + } + ] + }, + "sourceFile": "src/Aspire.Hosting.Radius/Publishing/Constructs/RadiusResourceTypeConstruct.cs" + } + ] + }, + { + "name": "RecipeEntryConstruct", + "fullName": "Aspire.Hosting.Radius.Publishing.Constructs.RecipeEntryConstruct", + "namespace": "Aspire.Hosting.Radius.Publishing.Constructs", + "kind": "class", + "accessibility": "public", + "isSealed": true, + "baseType": "Azure.Provisioning.Primitives.ProvisionableConstruct", + "docs": { + "summary": [ + { + "kind": "text", + "text": " Represents a single recipe entry inside a recipe pack (recipeKind + recipeLocation). " + } + ] + }, + "attributes": [ + { + "name": "System.Diagnostics.CodeAnalysis.ExperimentalAttribute", + "constructorArguments": [ + "ASPIRERADIUS004" + ], + "arguments": { + "UrlFormat": "https://aka.ms/aspire/diagnostics/{0}" + } + } + ], + "sourceFile": "src/Aspire.Hosting.Radius/Publishing/Constructs/RecipeEntryConstruct.cs", + "sourceLines": "16-16", + "members": [ + { + "name": ".ctor", + "kind": "constructor", + "accessibility": "public", + "signature": "public RecipeEntryConstruct.RecipeEntryConstruct()", + "returnType": "void" + }, + { + "name": "Parameters", + "kind": "property", + "accessibility": "public", + "signature": "public BicepDictionary RecipeEntryConstruct.Parameters", + "returnType": "Azure.Provisioning.BicepDictionary", + "hasGet": true, + "hasSet": true, + "docs": { + "summary": [ + { + "kind": "text", + "text": " Optional recipe parameters for this entry. Populated only when the environment declares recipe parameters; left unassigned otherwise so the " + }, + { + "kind": "code", + "text": "parameters" + }, + { + "kind": "text", + "text": " key is omitted from the emitted Bicep. " + } + ] + }, + "sourceFile": "src/Aspire.Hosting.Radius/Publishing/Constructs/RecipeEntryConstruct.cs" + }, + { + "name": "RecipeKind", + "kind": "property", + "accessibility": "public", + "signature": "public BicepValue RecipeEntryConstruct.RecipeKind", + "returnType": "Azure.Provisioning.BicepValue", + "hasGet": true, + "hasSet": true, + "docs": { + "summary": [ + { + "kind": "text", + "text": "The recipe kind (e.g., \"bicep\")." + } + ] + }, + "sourceFile": "src/Aspire.Hosting.Radius/Publishing/Constructs/RecipeEntryConstruct.cs" + }, + { + "name": "RecipeLocation", + "kind": "property", + "accessibility": "public", + "signature": "public BicepValue RecipeEntryConstruct.RecipeLocation", + "returnType": "Azure.Provisioning.BicepValue", + "hasGet": true, + "hasSet": true, + "docs": { + "summary": [ + { + "kind": "text", + "text": "The recipe location (e.g., OCI registry path)." + } + ] + }, + "sourceFile": "src/Aspire.Hosting.Radius/Publishing/Constructs/RecipeEntryConstruct.cs" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/frontend/src/data/pkgs/Aspire.Hosting.Redis.13.4.6.json b/src/frontend/src/data/pkgs/Aspire.Hosting.Redis.13.5.0.json similarity index 87% rename from src/frontend/src/data/pkgs/Aspire.Hosting.Redis.13.4.6.json rename to src/frontend/src/data/pkgs/Aspire.Hosting.Redis.13.5.0.json index fa111c94a..693efa8ec 100644 --- a/src/frontend/src/data/pkgs/Aspire.Hosting.Redis.13.4.6.json +++ b/src/frontend/src/data/pkgs/Aspire.Hosting.Redis.13.5.0.json @@ -1,10 +1,10 @@ { "package": { "name": "Aspire.Hosting.Redis", - "version": "13.4.6", + "version": "13.5.0", "targetFramework": "net10.0", "sourceRepository": "https://github.com/microsoft/aspire", - "sourceCommit": "87fe259e4fc244c599019a7b1304c85a1488f248" + "sourceCommit": "aab640cb6e4d05e1422b3ab723e78524aa1c5a22" }, "types": [ { @@ -273,7 +273,7 @@ } }, "sourceFile": "src/Aspire.Hosting.Redis/RedisBuilderExtensions.cs", - "sourceLines": "70-201" + "sourceLines": "70-211" }, { "name": "WithDataBindMount", @@ -387,7 +387,7 @@ } }, "sourceFile": "src/Aspire.Hosting.Redis/RedisBuilderExtensions.cs", - "sourceLines": "479-487" + "sourceLines": "491-499" }, { "name": "WithDataBindMount", @@ -456,7 +456,7 @@ } }, "sourceFile": "src/Aspire.Hosting.Redis/RedisBuilderExtensions.cs", - "sourceLines": "549-552" + "sourceLines": "601-604" }, { "name": "WithDataVolume", @@ -572,7 +572,7 @@ } }, "sourceFile": "src/Aspire.Hosting.Redis/RedisBuilderExtensions.cs", - "sourceLines": "446-453" + "sourceLines": "458-465" }, { "name": "WithDataVolume", @@ -643,7 +643,7 @@ } }, "sourceFile": "src/Aspire.Hosting.Redis/RedisBuilderExtensions.cs", - "sourceLines": "534-536" + "sourceLines": "586-588" }, { "name": "WithHostPort", @@ -854,6 +854,116 @@ }, "sourceFile": "src/Aspire.Hosting.Redis/RedisBuilderExtensions.cs" }, + { + "name": "WithModule", + "kind": "method", + "accessibility": "public", + "signature": "public static IResourceBuilder RedisBuilderExtensions.WithModule(this IResourceBuilder builder, string path)", + "returnType": "Aspire.Hosting.ApplicationModel.IResourceBuilder", + "isStatic": true, + "isExtension": true, + "parameters": [ + { + "name": "builder", + "type": "Aspire.Hosting.ApplicationModel.IResourceBuilder", + "modifier": "this" + }, + { + "name": "path", + "type": "string" + } + ], + "attributes": [ + { + "name": "Aspire.Hosting.AspireExportAttribute" + } + ], + "docs": { + "summary": [ + { + "kind": "text", + "text": " Configures the Redis resource to use the specified Redis module by providing its path inside the container. " + } + ], + "remarks": [ + { + "kind": "text", + "text": " This method passes the module path to " + }, + { + "kind": "code", + "text": "redis-server" + }, + { + "kind": "text", + "text": " as a " + }, + { + "kind": "code", + "text": "--loadmodule" + }, + { + "kind": "text", + "text": " argument. Redis resolves the path inside the container, not on the host. To load a module built on the host machine, mount it into the Redis container first and then use the mounted container path. Use " + }, + { + "kind": "cref", + "value": "T:Aspire.Hosting.RedisModules" + }, + { + "kind": "text", + "text": " for well-known module paths that are included in the default Redis container image. " + }, + { + "kind": "codeblock", + "text": "\n var cache = builder.AddRedis(\"cache\")\n .WithModule(RedisModules.Json)\n .WithModule(RedisModules.Search);\n \n var customModuleCache = builder.AddRedis(\"custom-cache\")\n .WithBindMount(\"/host/redis/modules\", \"/redis/modules\", isReadOnly: true)\n .WithModule(\"/redis/modules/custom-module.so\");\n ", + "language": "csharp" + }, + { + "kind": "text", + "text": " For more information, see the Redis module loading documentation at " + }, + { + "kind": "href", + "value": "https://redis.io/docs/latest/develop/reference/modules/" + }, + { + "kind": "text", + "text": ". " + } + ], + "returns": [ + { + "kind": "text", + "text": "The " + }, + { + "kind": "cref", + "value": "T:Aspire.Hosting.ApplicationModel.IResourceBuilder`1" + }, + { + "kind": "text", + "text": "." + } + ], + "parameters": { + "builder": [ + { + "kind": "text", + "text": "The resource builder." + } + ], + "path": [ + { + "kind": "text", + "text": "The absolute path to the Redis module inside the Redis container." + } + ] + } + }, + "sourceFile": "src/Aspire.Hosting.Redis/RedisBuilderExtensions.cs", + "sourceLines": "561-568" + }, { "name": "WithPassword", "kind": "method", @@ -924,7 +1034,7 @@ } }, "sourceFile": "src/Aspire.Hosting.Redis/RedisBuilderExtensions.cs", - "sourceLines": "565-568" + "sourceLines": "617-620" }, { "name": "WithPersistence", @@ -1028,7 +1138,7 @@ } }, "sourceFile": "src/Aspire.Hosting.Redis/RedisBuilderExtensions.cs", - "sourceLines": "511-514" + "sourceLines": "523-526" }, { "name": "WithRedisCommander", @@ -1132,7 +1242,7 @@ } }, "sourceFile": "src/Aspire.Hosting.Redis/RedisBuilderExtensions.cs", - "sourceLines": "218-279" + "sourceLines": "228-290" }, { "name": "WithRedisInsight", @@ -1236,7 +1346,133 @@ } }, "sourceFile": "src/Aspire.Hosting.Redis/RedisBuilderExtensions.cs", - "sourceLines": "297-385" + "sourceLines": "308-397" + } + ] + }, + { + "name": "RedisModules", + "fullName": "Aspire.Hosting.RedisModules", + "namespace": "Aspire.Hosting", + "kind": "class", + "accessibility": "public", + "isStatic": true, + "docs": { + "summary": [ + { + "kind": "text", + "text": " Well-known Redis module paths that are included in the Redis container image from version 8 onward. " + } + ], + "remarks": [ + { + "kind": "text", + "text": " Redis 8 ships a " + }, + { + "kind": "code", + "text": "redis-full.conf" + }, + { + "kind": "text", + "text": " configuration file that loads the available Redis modules with " + }, + { + "kind": "code", + "text": "loadmodule" + }, + { + "kind": "text", + "text": " directives. For more information, see the Redis configuration documentation at " + }, + { + "kind": "href", + "value": "https://redis.io/docs/latest/operate/oss_and_stack/management/config/" + }, + { + "kind": "text", + "text": " and the Redis modules documentation at " + }, + { + "kind": "href", + "value": "https://redis.io/docs/latest/develop/reference/modules/" + }, + { + "kind": "text", + "text": ". " + } + ] + }, + "sourceFile": "src/Aspire.Hosting.Redis/RedisModules.cs", + "sourceLines": "15-15", + "members": [ + { + "name": "BloomFilter", + "kind": "field", + "accessibility": "public", + "signature": "public const static string RedisModules.BloomFilter", + "returnType": "string", + "isStatic": true, + "isConst": true, + "docs": { + "summary": [ + { + "kind": "text", + "text": " The Redis Bloom Filter module path for probabilistic data structures including Bloom filters, Cuckoo filters, Count-Min Sketches, and Top-K filters. " + } + ] + } + }, + { + "name": "Json", + "kind": "field", + "accessibility": "public", + "signature": "public const static string RedisModules.Json", + "returnType": "string", + "isStatic": true, + "isConst": true, + "docs": { + "summary": [ + { + "kind": "text", + "text": " The Redis JSON module path for storing, updating, and querying JSON documents in Redis. " + } + ] + } + }, + { + "name": "Search", + "kind": "field", + "accessibility": "public", + "signature": "public const static string RedisModules.Search", + "returnType": "string", + "isStatic": true, + "isConst": true, + "docs": { + "summary": [ + { + "kind": "text", + "text": " The Redis Search module path for secondary indexing and querying of data stored in Redis. " + } + ] + } + }, + { + "name": "TimeSeries", + "kind": "field", + "accessibility": "public", + "signature": "public const static string RedisModules.TimeSeries", + "returnType": "string", + "isStatic": true, + "isConst": true, + "docs": { + "summary": [ + { + "kind": "text", + "text": " The Redis TimeSeries module path for efficient storage and querying of time series data in Redis. " + } + ] + } } ] }, diff --git a/src/frontend/src/data/pkgs/Aspire.Hosting.Seq.13.4.6.json b/src/frontend/src/data/pkgs/Aspire.Hosting.Seq.13.5.0.json similarity index 98% rename from src/frontend/src/data/pkgs/Aspire.Hosting.Seq.13.4.6.json rename to src/frontend/src/data/pkgs/Aspire.Hosting.Seq.13.5.0.json index 46b02285d..63d2443fb 100644 --- a/src/frontend/src/data/pkgs/Aspire.Hosting.Seq.13.4.6.json +++ b/src/frontend/src/data/pkgs/Aspire.Hosting.Seq.13.5.0.json @@ -1,10 +1,10 @@ { "package": { "name": "Aspire.Hosting.Seq", - "version": "13.4.6", + "version": "13.5.0", "targetFramework": "net10.0", "sourceRepository": "https://github.com/microsoft/aspire", - "sourceCommit": "87fe259e4fc244c599019a7b1304c85a1488f248" + "sourceCommit": "e076d8e427cb3afb528dbd605acd74c3aea69f94" }, "types": [ { @@ -211,7 +211,7 @@ } }, "sourceFile": "src/Aspire.Hosting.Seq/SeqBuilderExtensions.cs", - "sourceLines": "52-72" + "sourceLines": "52-73" }, { "name": "WithDataBindMount", @@ -286,7 +286,7 @@ } }, "sourceFile": "src/Aspire.Hosting.Seq/SeqBuilderExtensions.cs", - "sourceLines": "102-105" + "sourceLines": "103-106" }, { "name": "WithDataVolume", @@ -363,7 +363,7 @@ } }, "sourceFile": "src/Aspire.Hosting.Seq/SeqBuilderExtensions.cs", - "sourceLines": "86-88" + "sourceLines": "87-89" } ] }, diff --git a/src/frontend/src/data/pkgs/Aspire.Hosting.SqlServer.13.4.6.json b/src/frontend/src/data/pkgs/Aspire.Hosting.SqlServer.13.5.0.json similarity index 99% rename from src/frontend/src/data/pkgs/Aspire.Hosting.SqlServer.13.4.6.json rename to src/frontend/src/data/pkgs/Aspire.Hosting.SqlServer.13.5.0.json index 1dc3911ab..ac1b656a6 100644 --- a/src/frontend/src/data/pkgs/Aspire.Hosting.SqlServer.13.4.6.json +++ b/src/frontend/src/data/pkgs/Aspire.Hosting.SqlServer.13.5.0.json @@ -1,10 +1,10 @@ { "package": { "name": "Aspire.Hosting.SqlServer", - "version": "13.4.6", + "version": "13.5.0", "targetFramework": "net10.0", "sourceRepository": "https://github.com/microsoft/aspire", - "sourceCommit": "87fe259e4fc244c599019a7b1304c85a1488f248" + "sourceCommit": "e076d8e427cb3afb528dbd605acd74c3aea69f94" }, "types": [ { @@ -158,7 +158,7 @@ } }, "sourceFile": "src/Aspire.Hosting.SqlServer/SqlServerBuilderExtensions.cs", - "sourceLines": "121-147" + "sourceLines": "121-148" }, { "name": "AddSqlServer", @@ -361,7 +361,7 @@ } }, "sourceFile": "src/Aspire.Hosting.SqlServer/SqlServerBuilderExtensions.cs", - "sourceLines": "218-223" + "sourceLines": "219-224" }, { "name": "WithDataBindMount", @@ -450,7 +450,7 @@ } }, "sourceFile": "src/Aspire.Hosting.SqlServer/SqlServerBuilderExtensions.cs", - "sourceLines": "181-201" + "sourceLines": "182-202" }, { "name": "WithDataVolume", @@ -527,7 +527,7 @@ } }, "sourceFile": "src/Aspire.Hosting.SqlServer/SqlServerBuilderExtensions.cs", - "sourceLines": "161-163" + "sourceLines": "162-164" }, { "name": "WithHostPort", @@ -599,7 +599,7 @@ } }, "sourceFile": "src/Aspire.Hosting.SqlServer/SqlServerBuilderExtensions.cs", - "sourceLines": "253-257" + "sourceLines": "254-258" }, { "name": "WithPassword", @@ -662,7 +662,7 @@ } }, "sourceFile": "src/Aspire.Hosting.SqlServer/SqlServerBuilderExtensions.cs", - "sourceLines": "236-240" + "sourceLines": "237-241" } ] }, diff --git a/src/frontend/src/data/pkgs/Aspire.Hosting.Valkey.13.4.6.json b/src/frontend/src/data/pkgs/Aspire.Hosting.Valkey.13.5.0.json similarity index 99% rename from src/frontend/src/data/pkgs/Aspire.Hosting.Valkey.13.4.6.json rename to src/frontend/src/data/pkgs/Aspire.Hosting.Valkey.13.5.0.json index 16ecac905..85c010659 100644 --- a/src/frontend/src/data/pkgs/Aspire.Hosting.Valkey.13.4.6.json +++ b/src/frontend/src/data/pkgs/Aspire.Hosting.Valkey.13.5.0.json @@ -1,10 +1,10 @@ { "package": { "name": "Aspire.Hosting.Valkey", - "version": "13.4.6", + "version": "13.5.0", "targetFramework": "net10.0", "sourceRepository": "https://github.com/microsoft/aspire", - "sourceCommit": "87fe259e4fc244c599019a7b1304c85a1488f248" + "sourceCommit": "e076d8e427cb3afb528dbd605acd74c3aea69f94" }, "types": [ { @@ -239,7 +239,7 @@ } }, "sourceFile": "src/Aspire.Hosting.Valkey/ValkeyBuilderExtensions.cs", - "sourceLines": "118-184" + "sourceLines": "118-185" }, { "name": "WithDataBindMount", @@ -353,7 +353,7 @@ } }, "sourceFile": "src/Aspire.Hosting.Valkey/ValkeyBuilderExtensions.cs", - "sourceLines": "255-264" + "sourceLines": "256-265" }, { "name": "WithDataVolume", @@ -469,7 +469,7 @@ } }, "sourceFile": "src/Aspire.Hosting.Valkey/ValkeyBuilderExtensions.cs", - "sourceLines": "215-224" + "sourceLines": "216-225" }, { "name": "WithPersistence", @@ -573,7 +573,7 @@ } }, "sourceFile": "src/Aspire.Hosting.Valkey/ValkeyBuilderExtensions.cs", - "sourceLines": "293-296" + "sourceLines": "294-297" } ] }, diff --git a/src/frontend/src/data/pkgs/Aspire.Hosting.Yarp.13.4.6.json b/src/frontend/src/data/pkgs/Aspire.Hosting.Yarp.13.5.0.json similarity index 99% rename from src/frontend/src/data/pkgs/Aspire.Hosting.Yarp.13.4.6.json rename to src/frontend/src/data/pkgs/Aspire.Hosting.Yarp.13.5.0.json index 383715dc7..62b385971 100644 --- a/src/frontend/src/data/pkgs/Aspire.Hosting.Yarp.13.4.6.json +++ b/src/frontend/src/data/pkgs/Aspire.Hosting.Yarp.13.5.0.json @@ -1,10 +1,10 @@ { "package": { "name": "Aspire.Hosting.Yarp", - "version": "13.4.6", + "version": "13.5.0", "targetFramework": "net10.0", "sourceRepository": "https://github.com/microsoft/aspire", - "sourceCommit": "87fe259e4fc244c599019a7b1304c85a1488f248" + "sourceCommit": "e076d8e427cb3afb528dbd605acd74c3aea69f94" }, "types": [ { @@ -955,7 +955,7 @@ } }, "sourceFile": "src/Aspire.Hosting.Yarp/YarpResourceExtensions.cs", - "sourceLines": "35-99" + "sourceLines": "35-100" }, { "name": "PublishWithStaticFiles", @@ -1010,7 +1010,7 @@ } }, "sourceFile": "src/Aspire.Hosting.Yarp/YarpResourceExtensions.cs", - "sourceLines": "228-237" + "sourceLines": "229-238" }, { "name": "WithConfiguration", @@ -1062,7 +1062,7 @@ } }, "sourceFile": "src/Aspire.Hosting.Yarp/YarpResourceExtensions.cs", - "sourceLines": "110-112" + "sourceLines": "111-113" }, { "name": "WithHostHttpsPort", @@ -1126,7 +1126,7 @@ } }, "sourceFile": "src/Aspire.Hosting.Yarp/YarpResourceExtensions.cs", - "sourceLines": "141-145" + "sourceLines": "142-146" }, { "name": "WithHostPort", @@ -1184,7 +1184,7 @@ } }, "sourceFile": "src/Aspire.Hosting.Yarp/YarpResourceExtensions.cs", - "sourceLines": "123-128" + "sourceLines": "124-129" }, { "name": "WithStaticFiles", @@ -1240,7 +1240,7 @@ } }, "sourceFile": "src/Aspire.Hosting.Yarp/YarpResourceExtensions.cs", - "sourceLines": "156-158" + "sourceLines": "157-159" }, { "name": "WithStaticFiles", @@ -1322,7 +1322,7 @@ } }, "sourceFile": "src/Aspire.Hosting.Yarp/YarpResourceExtensions.cs", - "sourceLines": "172-175" + "sourceLines": "173-176" } ] }, diff --git a/src/frontend/src/data/pkgs/Aspire.Keycloak.Authentication.13.4.6-preview.1.26319.6.json b/src/frontend/src/data/pkgs/Aspire.Keycloak.Authentication.13.5.0-preview.1.26417.7.json similarity index 99% rename from src/frontend/src/data/pkgs/Aspire.Keycloak.Authentication.13.4.6-preview.1.26319.6.json rename to src/frontend/src/data/pkgs/Aspire.Keycloak.Authentication.13.5.0-preview.1.26417.7.json index f9895eab2..8ca083160 100644 --- a/src/frontend/src/data/pkgs/Aspire.Keycloak.Authentication.13.4.6-preview.1.26319.6.json +++ b/src/frontend/src/data/pkgs/Aspire.Keycloak.Authentication.13.5.0-preview.1.26417.7.json @@ -1,10 +1,10 @@ { "package": { "name": "Aspire.Keycloak.Authentication", - "version": "13.4.6-preview.1.26319.6", + "version": "13.5.0-preview.1.26417.7", "targetFramework": "net10.0", "sourceRepository": "https://github.com/microsoft/aspire", - "sourceCommit": "87fe259e4fc244c599019a7b1304c85a1488f248" + "sourceCommit": "e076d8e427cb3afb528dbd605acd74c3aea69f94" }, "types": [ { diff --git a/src/frontend/src/data/pkgs/Aspire.Microsoft.Azure.Cosmos.13.4.6.json b/src/frontend/src/data/pkgs/Aspire.Microsoft.Azure.Cosmos.13.5.0.json similarity index 99% rename from src/frontend/src/data/pkgs/Aspire.Microsoft.Azure.Cosmos.13.4.6.json rename to src/frontend/src/data/pkgs/Aspire.Microsoft.Azure.Cosmos.13.5.0.json index 8d73e1992..f904c6e73 100644 --- a/src/frontend/src/data/pkgs/Aspire.Microsoft.Azure.Cosmos.13.4.6.json +++ b/src/frontend/src/data/pkgs/Aspire.Microsoft.Azure.Cosmos.13.5.0.json @@ -1,10 +1,10 @@ { "package": { "name": "Aspire.Microsoft.Azure.Cosmos", - "version": "13.4.6", + "version": "13.5.0", "targetFramework": "net10.0", "sourceRepository": "https://github.com/microsoft/aspire", - "sourceCommit": "87fe259e4fc244c599019a7b1304c85a1488f248" + "sourceCommit": "e076d8e427cb3afb528dbd605acd74c3aea69f94" }, "types": [ { diff --git a/src/frontend/src/data/pkgs/Aspire.Microsoft.Azure.StackExchangeRedis.13.4.6.json b/src/frontend/src/data/pkgs/Aspire.Microsoft.Azure.StackExchangeRedis.13.5.0.json similarity index 97% rename from src/frontend/src/data/pkgs/Aspire.Microsoft.Azure.StackExchangeRedis.13.4.6.json rename to src/frontend/src/data/pkgs/Aspire.Microsoft.Azure.StackExchangeRedis.13.5.0.json index e55c5758f..4da323633 100644 --- a/src/frontend/src/data/pkgs/Aspire.Microsoft.Azure.StackExchangeRedis.13.4.6.json +++ b/src/frontend/src/data/pkgs/Aspire.Microsoft.Azure.StackExchangeRedis.13.5.0.json @@ -1,10 +1,10 @@ { "package": { "name": "Aspire.Microsoft.Azure.StackExchangeRedis", - "version": "13.4.6", + "version": "13.5.0", "targetFramework": "net10.0", "sourceRepository": "https://github.com/microsoft/aspire", - "sourceCommit": "87fe259e4fc244c599019a7b1304c85a1488f248" + "sourceCommit": "e076d8e427cb3afb528dbd605acd74c3aea69f94" }, "types": [ { diff --git a/src/frontend/src/data/pkgs/Aspire.Microsoft.Data.SqlClient.13.4.6.json b/src/frontend/src/data/pkgs/Aspire.Microsoft.Data.SqlClient.13.5.0.json similarity index 99% rename from src/frontend/src/data/pkgs/Aspire.Microsoft.Data.SqlClient.13.4.6.json rename to src/frontend/src/data/pkgs/Aspire.Microsoft.Data.SqlClient.13.5.0.json index 19810c2e5..eba6ba202 100644 --- a/src/frontend/src/data/pkgs/Aspire.Microsoft.Data.SqlClient.13.4.6.json +++ b/src/frontend/src/data/pkgs/Aspire.Microsoft.Data.SqlClient.13.5.0.json @@ -1,10 +1,10 @@ { "package": { "name": "Aspire.Microsoft.Data.SqlClient", - "version": "13.4.6", + "version": "13.5.0", "targetFramework": "net10.0", "sourceRepository": "https://github.com/microsoft/aspire", - "sourceCommit": "87fe259e4fc244c599019a7b1304c85a1488f248" + "sourceCommit": "e076d8e427cb3afb528dbd605acd74c3aea69f94" }, "types": [ { diff --git a/src/frontend/src/data/pkgs/Aspire.Microsoft.EntityFrameworkCore.Cosmos.13.4.6.json b/src/frontend/src/data/pkgs/Aspire.Microsoft.EntityFrameworkCore.Cosmos.13.5.0.json similarity index 99% rename from src/frontend/src/data/pkgs/Aspire.Microsoft.EntityFrameworkCore.Cosmos.13.4.6.json rename to src/frontend/src/data/pkgs/Aspire.Microsoft.EntityFrameworkCore.Cosmos.13.5.0.json index dae321281..d8ee05a9d 100644 --- a/src/frontend/src/data/pkgs/Aspire.Microsoft.EntityFrameworkCore.Cosmos.13.4.6.json +++ b/src/frontend/src/data/pkgs/Aspire.Microsoft.EntityFrameworkCore.Cosmos.13.5.0.json @@ -1,10 +1,10 @@ { "package": { "name": "Aspire.Microsoft.EntityFrameworkCore.Cosmos", - "version": "13.4.6", + "version": "13.5.0", "targetFramework": "net10.0", "sourceRepository": "https://github.com/microsoft/aspire", - "sourceCommit": "87fe259e4fc244c599019a7b1304c85a1488f248" + "sourceCommit": "e076d8e427cb3afb528dbd605acd74c3aea69f94" }, "types": [ { diff --git a/src/frontend/src/data/pkgs/Aspire.Microsoft.EntityFrameworkCore.SqlServer.13.4.6.json b/src/frontend/src/data/pkgs/Aspire.Microsoft.EntityFrameworkCore.SqlServer.13.5.0.json similarity index 99% rename from src/frontend/src/data/pkgs/Aspire.Microsoft.EntityFrameworkCore.SqlServer.13.4.6.json rename to src/frontend/src/data/pkgs/Aspire.Microsoft.EntityFrameworkCore.SqlServer.13.5.0.json index b5ac3ea66..d46f9e66e 100644 --- a/src/frontend/src/data/pkgs/Aspire.Microsoft.EntityFrameworkCore.SqlServer.13.4.6.json +++ b/src/frontend/src/data/pkgs/Aspire.Microsoft.EntityFrameworkCore.SqlServer.13.5.0.json @@ -1,10 +1,10 @@ { "package": { "name": "Aspire.Microsoft.EntityFrameworkCore.SqlServer", - "version": "13.4.6", + "version": "13.5.0", "targetFramework": "net10.0", "sourceRepository": "https://github.com/microsoft/aspire", - "sourceCommit": "87fe259e4fc244c599019a7b1304c85a1488f248" + "sourceCommit": "e076d8e427cb3afb528dbd605acd74c3aea69f94" }, "types": [ { diff --git a/src/frontend/src/data/pkgs/Aspire.Microsoft.Extensions.Configuration.AzureAppConfiguration.13.4.6.json b/src/frontend/src/data/pkgs/Aspire.Microsoft.Extensions.Configuration.AzureAppConfiguration.13.5.0.json similarity index 99% rename from src/frontend/src/data/pkgs/Aspire.Microsoft.Extensions.Configuration.AzureAppConfiguration.13.4.6.json rename to src/frontend/src/data/pkgs/Aspire.Microsoft.Extensions.Configuration.AzureAppConfiguration.13.5.0.json index 4f5a18116..cd3be6469 100644 --- a/src/frontend/src/data/pkgs/Aspire.Microsoft.Extensions.Configuration.AzureAppConfiguration.13.4.6.json +++ b/src/frontend/src/data/pkgs/Aspire.Microsoft.Extensions.Configuration.AzureAppConfiguration.13.5.0.json @@ -1,10 +1,10 @@ { "package": { "name": "Aspire.Microsoft.Extensions.Configuration.AzureAppConfiguration", - "version": "13.4.6", + "version": "13.5.0", "targetFramework": "net10.0", "sourceRepository": "https://github.com/microsoft/aspire", - "sourceCommit": "87fe259e4fc244c599019a7b1304c85a1488f248" + "sourceCommit": "e076d8e427cb3afb528dbd605acd74c3aea69f94" }, "types": [ { diff --git a/src/frontend/src/data/pkgs/Aspire.Milvus.Client.13.4.6-preview.1.26319.6.json b/src/frontend/src/data/pkgs/Aspire.Milvus.Client.13.5.0-preview.1.26417.7.json similarity index 99% rename from src/frontend/src/data/pkgs/Aspire.Milvus.Client.13.4.6-preview.1.26319.6.json rename to src/frontend/src/data/pkgs/Aspire.Milvus.Client.13.5.0-preview.1.26417.7.json index 6b72f2ed9..05fd54a24 100644 --- a/src/frontend/src/data/pkgs/Aspire.Milvus.Client.13.4.6-preview.1.26319.6.json +++ b/src/frontend/src/data/pkgs/Aspire.Milvus.Client.13.5.0-preview.1.26417.7.json @@ -1,10 +1,10 @@ { "package": { "name": "Aspire.Milvus.Client", - "version": "13.4.6-preview.1.26319.6", + "version": "13.5.0-preview.1.26417.7", "targetFramework": "net10.0", "sourceRepository": "https://github.com/microsoft/aspire", - "sourceCommit": "87fe259e4fc244c599019a7b1304c85a1488f248" + "sourceCommit": "e076d8e427cb3afb528dbd605acd74c3aea69f94" }, "types": [ { diff --git a/src/frontend/src/data/pkgs/Aspire.MongoDB.Driver.13.4.6.json b/src/frontend/src/data/pkgs/Aspire.MongoDB.Driver.13.5.0.json similarity index 99% rename from src/frontend/src/data/pkgs/Aspire.MongoDB.Driver.13.4.6.json rename to src/frontend/src/data/pkgs/Aspire.MongoDB.Driver.13.5.0.json index 933e00070..62d132fdb 100644 --- a/src/frontend/src/data/pkgs/Aspire.MongoDB.Driver.13.4.6.json +++ b/src/frontend/src/data/pkgs/Aspire.MongoDB.Driver.13.5.0.json @@ -1,10 +1,10 @@ { "package": { "name": "Aspire.MongoDB.Driver", - "version": "13.4.6", + "version": "13.5.0", "targetFramework": "net10.0", "sourceRepository": "https://github.com/microsoft/aspire", - "sourceCommit": "87fe259e4fc244c599019a7b1304c85a1488f248" + "sourceCommit": "e076d8e427cb3afb528dbd605acd74c3aea69f94" }, "types": [ { diff --git a/src/frontend/src/data/pkgs/Aspire.MongoDB.Driver.v2.13.4.6.json b/src/frontend/src/data/pkgs/Aspire.MongoDB.Driver.v2.13.5.0.json similarity index 99% rename from src/frontend/src/data/pkgs/Aspire.MongoDB.Driver.v2.13.4.6.json rename to src/frontend/src/data/pkgs/Aspire.MongoDB.Driver.v2.13.5.0.json index e16f3177d..81daae88a 100644 --- a/src/frontend/src/data/pkgs/Aspire.MongoDB.Driver.v2.13.4.6.json +++ b/src/frontend/src/data/pkgs/Aspire.MongoDB.Driver.v2.13.5.0.json @@ -1,10 +1,10 @@ { "package": { "name": "Aspire.MongoDB.Driver.v2", - "version": "13.4.6", + "version": "13.5.0", "targetFramework": "net10.0", "sourceRepository": "https://github.com/microsoft/aspire", - "sourceCommit": "87fe259e4fc244c599019a7b1304c85a1488f248" + "sourceCommit": "e076d8e427cb3afb528dbd605acd74c3aea69f94" }, "types": [ { diff --git a/src/frontend/src/data/pkgs/Aspire.MongoDB.EntityFrameworkCore.13.4.6.json b/src/frontend/src/data/pkgs/Aspire.MongoDB.EntityFrameworkCore.13.5.0.json similarity index 99% rename from src/frontend/src/data/pkgs/Aspire.MongoDB.EntityFrameworkCore.13.4.6.json rename to src/frontend/src/data/pkgs/Aspire.MongoDB.EntityFrameworkCore.13.5.0.json index cc681ebb0..52103a59d 100644 --- a/src/frontend/src/data/pkgs/Aspire.MongoDB.EntityFrameworkCore.13.4.6.json +++ b/src/frontend/src/data/pkgs/Aspire.MongoDB.EntityFrameworkCore.13.5.0.json @@ -1,10 +1,10 @@ { "package": { "name": "Aspire.MongoDB.EntityFrameworkCore", - "version": "13.4.6", + "version": "13.5.0", "targetFramework": "net10.0", "sourceRepository": "https://github.com/microsoft/aspire", - "sourceCommit": "87fe259e4fc244c599019a7b1304c85a1488f248" + "sourceCommit": "e076d8e427cb3afb528dbd605acd74c3aea69f94" }, "types": [ { diff --git a/src/frontend/src/data/pkgs/Aspire.MySqlConnector.13.4.6.json b/src/frontend/src/data/pkgs/Aspire.MySqlConnector.13.5.0.json similarity index 99% rename from src/frontend/src/data/pkgs/Aspire.MySqlConnector.13.4.6.json rename to src/frontend/src/data/pkgs/Aspire.MySqlConnector.13.5.0.json index b3ba799e4..0ede82f90 100644 --- a/src/frontend/src/data/pkgs/Aspire.MySqlConnector.13.4.6.json +++ b/src/frontend/src/data/pkgs/Aspire.MySqlConnector.13.5.0.json @@ -1,10 +1,10 @@ { "package": { "name": "Aspire.MySqlConnector", - "version": "13.4.6", + "version": "13.5.0", "targetFramework": "net10.0", "sourceRepository": "https://github.com/microsoft/aspire", - "sourceCommit": "87fe259e4fc244c599019a7b1304c85a1488f248" + "sourceCommit": "e076d8e427cb3afb528dbd605acd74c3aea69f94" }, "types": [ { diff --git a/src/frontend/src/data/pkgs/Aspire.NATS.Net.13.4.6.json b/src/frontend/src/data/pkgs/Aspire.NATS.Net.13.5.0.json similarity index 99% rename from src/frontend/src/data/pkgs/Aspire.NATS.Net.13.4.6.json rename to src/frontend/src/data/pkgs/Aspire.NATS.Net.13.5.0.json index b81dcbbfd..473549e3b 100644 --- a/src/frontend/src/data/pkgs/Aspire.NATS.Net.13.4.6.json +++ b/src/frontend/src/data/pkgs/Aspire.NATS.Net.13.5.0.json @@ -1,10 +1,10 @@ { "package": { "name": "Aspire.NATS.Net", - "version": "13.4.6", + "version": "13.5.0", "targetFramework": "net10.0", "sourceRepository": "https://github.com/microsoft/aspire", - "sourceCommit": "87fe259e4fc244c599019a7b1304c85a1488f248" + "sourceCommit": "e076d8e427cb3afb528dbd605acd74c3aea69f94" }, "types": [ { diff --git a/src/frontend/src/data/pkgs/Aspire.Npgsql.13.4.6.json b/src/frontend/src/data/pkgs/Aspire.Npgsql.13.5.0.json similarity index 99% rename from src/frontend/src/data/pkgs/Aspire.Npgsql.13.4.6.json rename to src/frontend/src/data/pkgs/Aspire.Npgsql.13.5.0.json index 744b0ddb3..c0a139c13 100644 --- a/src/frontend/src/data/pkgs/Aspire.Npgsql.13.4.6.json +++ b/src/frontend/src/data/pkgs/Aspire.Npgsql.13.5.0.json @@ -1,10 +1,10 @@ { "package": { "name": "Aspire.Npgsql", - "version": "13.4.6", + "version": "13.5.0", "targetFramework": "net10.0", "sourceRepository": "https://github.com/microsoft/aspire", - "sourceCommit": "87fe259e4fc244c599019a7b1304c85a1488f248" + "sourceCommit": "e076d8e427cb3afb528dbd605acd74c3aea69f94" }, "types": [ { diff --git a/src/frontend/src/data/pkgs/Aspire.Npgsql.EntityFrameworkCore.PostgreSQL.13.4.6.json b/src/frontend/src/data/pkgs/Aspire.Npgsql.EntityFrameworkCore.PostgreSQL.13.5.0.json similarity index 99% rename from src/frontend/src/data/pkgs/Aspire.Npgsql.EntityFrameworkCore.PostgreSQL.13.4.6.json rename to src/frontend/src/data/pkgs/Aspire.Npgsql.EntityFrameworkCore.PostgreSQL.13.5.0.json index 040e4bdda..dc5bfed7f 100644 --- a/src/frontend/src/data/pkgs/Aspire.Npgsql.EntityFrameworkCore.PostgreSQL.13.4.6.json +++ b/src/frontend/src/data/pkgs/Aspire.Npgsql.EntityFrameworkCore.PostgreSQL.13.5.0.json @@ -1,10 +1,10 @@ { "package": { "name": "Aspire.Npgsql.EntityFrameworkCore.PostgreSQL", - "version": "13.4.6", + "version": "13.5.0", "targetFramework": "net10.0", "sourceRepository": "https://github.com/microsoft/aspire", - "sourceCommit": "87fe259e4fc244c599019a7b1304c85a1488f248" + "sourceCommit": "e076d8e427cb3afb528dbd605acd74c3aea69f94" }, "types": [ { diff --git a/src/frontend/src/data/pkgs/Aspire.OpenAI.13.4.6-preview.1.26319.6.json b/src/frontend/src/data/pkgs/Aspire.OpenAI.13.5.0-preview.1.26417.7.json similarity index 99% rename from src/frontend/src/data/pkgs/Aspire.OpenAI.13.4.6-preview.1.26319.6.json rename to src/frontend/src/data/pkgs/Aspire.OpenAI.13.5.0-preview.1.26417.7.json index 6f7e97d82..1251151f4 100644 --- a/src/frontend/src/data/pkgs/Aspire.OpenAI.13.4.6-preview.1.26319.6.json +++ b/src/frontend/src/data/pkgs/Aspire.OpenAI.13.5.0-preview.1.26417.7.json @@ -1,10 +1,10 @@ { "package": { "name": "Aspire.OpenAI", - "version": "13.4.6-preview.1.26319.6", + "version": "13.5.0-preview.1.26417.7", "targetFramework": "net10.0", "sourceRepository": "https://github.com/microsoft/aspire", - "sourceCommit": "87fe259e4fc244c599019a7b1304c85a1488f248" + "sourceCommit": "e076d8e427cb3afb528dbd605acd74c3aea69f94" }, "types": [ { diff --git a/src/frontend/src/data/pkgs/Aspire.Oracle.EntityFrameworkCore.13.4.6.json b/src/frontend/src/data/pkgs/Aspire.Oracle.EntityFrameworkCore.13.5.0.json similarity index 99% rename from src/frontend/src/data/pkgs/Aspire.Oracle.EntityFrameworkCore.13.4.6.json rename to src/frontend/src/data/pkgs/Aspire.Oracle.EntityFrameworkCore.13.5.0.json index 16fd62800..88e6478b9 100644 --- a/src/frontend/src/data/pkgs/Aspire.Oracle.EntityFrameworkCore.13.4.6.json +++ b/src/frontend/src/data/pkgs/Aspire.Oracle.EntityFrameworkCore.13.5.0.json @@ -1,10 +1,10 @@ { "package": { "name": "Aspire.Oracle.EntityFrameworkCore", - "version": "13.4.6", + "version": "13.5.0", "targetFramework": "net10.0", "sourceRepository": "https://github.com/microsoft/aspire", - "sourceCommit": "87fe259e4fc244c599019a7b1304c85a1488f248" + "sourceCommit": "e076d8e427cb3afb528dbd605acd74c3aea69f94" }, "types": [ { diff --git a/src/frontend/src/data/pkgs/Aspire.Pomelo.EntityFrameworkCore.MySql.13.4.6.json b/src/frontend/src/data/pkgs/Aspire.Pomelo.EntityFrameworkCore.MySql.13.5.0.json similarity index 99% rename from src/frontend/src/data/pkgs/Aspire.Pomelo.EntityFrameworkCore.MySql.13.4.6.json rename to src/frontend/src/data/pkgs/Aspire.Pomelo.EntityFrameworkCore.MySql.13.5.0.json index acc561052..6919364a4 100644 --- a/src/frontend/src/data/pkgs/Aspire.Pomelo.EntityFrameworkCore.MySql.13.4.6.json +++ b/src/frontend/src/data/pkgs/Aspire.Pomelo.EntityFrameworkCore.MySql.13.5.0.json @@ -1,10 +1,10 @@ { "package": { "name": "Aspire.Pomelo.EntityFrameworkCore.MySql", - "version": "13.4.6", + "version": "13.5.0", "targetFramework": "net10.0", "sourceRepository": "https://github.com/microsoft/aspire", - "sourceCommit": "87fe259e4fc244c599019a7b1304c85a1488f248" + "sourceCommit": "e076d8e427cb3afb528dbd605acd74c3aea69f94" }, "types": [ { diff --git a/src/frontend/src/data/pkgs/Aspire.Qdrant.Client.13.4.6.json b/src/frontend/src/data/pkgs/Aspire.Qdrant.Client.13.5.0.json similarity index 99% rename from src/frontend/src/data/pkgs/Aspire.Qdrant.Client.13.4.6.json rename to src/frontend/src/data/pkgs/Aspire.Qdrant.Client.13.5.0.json index 6cd064ed9..77b159537 100644 --- a/src/frontend/src/data/pkgs/Aspire.Qdrant.Client.13.4.6.json +++ b/src/frontend/src/data/pkgs/Aspire.Qdrant.Client.13.5.0.json @@ -1,10 +1,10 @@ { "package": { "name": "Aspire.Qdrant.Client", - "version": "13.4.6", + "version": "13.5.0", "targetFramework": "net10.0", "sourceRepository": "https://github.com/microsoft/aspire", - "sourceCommit": "87fe259e4fc244c599019a7b1304c85a1488f248" + "sourceCommit": "e076d8e427cb3afb528dbd605acd74c3aea69f94" }, "types": [ { diff --git a/src/frontend/src/data/pkgs/Aspire.RabbitMQ.Client.13.4.6.json b/src/frontend/src/data/pkgs/Aspire.RabbitMQ.Client.13.5.0.json similarity index 99% rename from src/frontend/src/data/pkgs/Aspire.RabbitMQ.Client.13.4.6.json rename to src/frontend/src/data/pkgs/Aspire.RabbitMQ.Client.13.5.0.json index 31fa7f22f..26f569253 100644 --- a/src/frontend/src/data/pkgs/Aspire.RabbitMQ.Client.13.4.6.json +++ b/src/frontend/src/data/pkgs/Aspire.RabbitMQ.Client.13.5.0.json @@ -1,10 +1,10 @@ { "package": { "name": "Aspire.RabbitMQ.Client", - "version": "13.4.6", + "version": "13.5.0", "targetFramework": "net10.0", "sourceRepository": "https://github.com/microsoft/aspire", - "sourceCommit": "87fe259e4fc244c599019a7b1304c85a1488f248" + "sourceCommit": "e076d8e427cb3afb528dbd605acd74c3aea69f94" }, "types": [ { diff --git a/src/frontend/src/data/pkgs/Aspire.RabbitMQ.Client.v6.13.4.6.json b/src/frontend/src/data/pkgs/Aspire.RabbitMQ.Client.v6.13.5.0.json similarity index 99% rename from src/frontend/src/data/pkgs/Aspire.RabbitMQ.Client.v6.13.4.6.json rename to src/frontend/src/data/pkgs/Aspire.RabbitMQ.Client.v6.13.5.0.json index 8daba1f89..a9b4144e1 100644 --- a/src/frontend/src/data/pkgs/Aspire.RabbitMQ.Client.v6.13.4.6.json +++ b/src/frontend/src/data/pkgs/Aspire.RabbitMQ.Client.v6.13.5.0.json @@ -1,10 +1,10 @@ { "package": { "name": "Aspire.RabbitMQ.Client.v6", - "version": "13.4.6", + "version": "13.5.0", "targetFramework": "net10.0", "sourceRepository": "https://github.com/microsoft/aspire", - "sourceCommit": "87fe259e4fc244c599019a7b1304c85a1488f248" + "sourceCommit": "e076d8e427cb3afb528dbd605acd74c3aea69f94" }, "types": [ { diff --git a/src/frontend/src/data/pkgs/Aspire.Seq.13.4.6.json b/src/frontend/src/data/pkgs/Aspire.Seq.13.5.0.json similarity index 98% rename from src/frontend/src/data/pkgs/Aspire.Seq.13.4.6.json rename to src/frontend/src/data/pkgs/Aspire.Seq.13.5.0.json index 514375f84..253345f29 100644 --- a/src/frontend/src/data/pkgs/Aspire.Seq.13.4.6.json +++ b/src/frontend/src/data/pkgs/Aspire.Seq.13.5.0.json @@ -1,10 +1,10 @@ { "package": { "name": "Aspire.Seq", - "version": "13.4.6", + "version": "13.5.0", "targetFramework": "net10.0", "sourceRepository": "https://github.com/microsoft/aspire", - "sourceCommit": "87fe259e4fc244c599019a7b1304c85a1488f248" + "sourceCommit": "e076d8e427cb3afb528dbd605acd74c3aea69f94" }, "types": [ { diff --git a/src/frontend/src/data/pkgs/Aspire.StackExchange.Redis.13.4.6.json b/src/frontend/src/data/pkgs/Aspire.StackExchange.Redis.13.5.0.json similarity index 99% rename from src/frontend/src/data/pkgs/Aspire.StackExchange.Redis.13.4.6.json rename to src/frontend/src/data/pkgs/Aspire.StackExchange.Redis.13.5.0.json index 58e8454ab..23aadbaa2 100644 --- a/src/frontend/src/data/pkgs/Aspire.StackExchange.Redis.13.4.6.json +++ b/src/frontend/src/data/pkgs/Aspire.StackExchange.Redis.13.5.0.json @@ -1,10 +1,10 @@ { "package": { "name": "Aspire.StackExchange.Redis", - "version": "13.4.6", + "version": "13.5.0", "targetFramework": "net10.0", "sourceRepository": "https://github.com/microsoft/aspire", - "sourceCommit": "87fe259e4fc244c599019a7b1304c85a1488f248" + "sourceCommit": "e076d8e427cb3afb528dbd605acd74c3aea69f94" }, "types": [ { diff --git a/src/frontend/src/data/pkgs/Aspire.StackExchange.Redis.DistributedCaching.13.4.6.json b/src/frontend/src/data/pkgs/Aspire.StackExchange.Redis.DistributedCaching.13.5.0.json similarity index 99% rename from src/frontend/src/data/pkgs/Aspire.StackExchange.Redis.DistributedCaching.13.4.6.json rename to src/frontend/src/data/pkgs/Aspire.StackExchange.Redis.DistributedCaching.13.5.0.json index 1acbca82a..5173a5005 100644 --- a/src/frontend/src/data/pkgs/Aspire.StackExchange.Redis.DistributedCaching.13.4.6.json +++ b/src/frontend/src/data/pkgs/Aspire.StackExchange.Redis.DistributedCaching.13.5.0.json @@ -1,10 +1,10 @@ { "package": { "name": "Aspire.StackExchange.Redis.DistributedCaching", - "version": "13.4.6", + "version": "13.5.0", "targetFramework": "net10.0", "sourceRepository": "https://github.com/microsoft/aspire", - "sourceCommit": "87fe259e4fc244c599019a7b1304c85a1488f248" + "sourceCommit": "e076d8e427cb3afb528dbd605acd74c3aea69f94" }, "types": [ { diff --git a/src/frontend/src/data/pkgs/Aspire.StackExchange.Redis.OutputCaching.13.4.6.json b/src/frontend/src/data/pkgs/Aspire.StackExchange.Redis.OutputCaching.13.5.0.json similarity index 99% rename from src/frontend/src/data/pkgs/Aspire.StackExchange.Redis.OutputCaching.13.4.6.json rename to src/frontend/src/data/pkgs/Aspire.StackExchange.Redis.OutputCaching.13.5.0.json index 4752f7cd8..0e60fe0be 100644 --- a/src/frontend/src/data/pkgs/Aspire.StackExchange.Redis.OutputCaching.13.4.6.json +++ b/src/frontend/src/data/pkgs/Aspire.StackExchange.Redis.OutputCaching.13.5.0.json @@ -1,10 +1,10 @@ { "package": { "name": "Aspire.StackExchange.Redis.OutputCaching", - "version": "13.4.6", + "version": "13.5.0", "targetFramework": "net10.0", "sourceRepository": "https://github.com/microsoft/aspire", - "sourceCommit": "87fe259e4fc244c599019a7b1304c85a1488f248" + "sourceCommit": "e076d8e427cb3afb528dbd605acd74c3aea69f94" }, "types": [ { diff --git a/src/frontend/src/data/pkgs/Aspire.TypeSystem.13.4.6.json b/src/frontend/src/data/pkgs/Aspire.TypeSystem.13.5.0.json similarity index 98% rename from src/frontend/src/data/pkgs/Aspire.TypeSystem.13.4.6.json rename to src/frontend/src/data/pkgs/Aspire.TypeSystem.13.5.0.json index 64da36388..f4813a4bb 100644 --- a/src/frontend/src/data/pkgs/Aspire.TypeSystem.13.4.6.json +++ b/src/frontend/src/data/pkgs/Aspire.TypeSystem.13.5.0.json @@ -1,10 +1,10 @@ { "package": { "name": "Aspire.TypeSystem", - "version": "13.4.6", + "version": "13.5.0", "targetFramework": "net10.0", "sourceRepository": "https://github.com/microsoft/aspire", - "sourceCommit": "87fe259e4fc244c599019a7b1304c85a1488f248" + "sourceCommit": "8ab6999850d96e0023670799edbd4bdc245ad63c" }, "types": [ { @@ -4948,7 +4948,7 @@ ] }, "sourceFile": "src/Aspire.TypeSystem/RuntimeSpec.cs", - "sourceLines": "81-81", + "sourceLines": "96-96", "members": [ { "name": ".ctor", @@ -5708,6 +5708,37 @@ } } }, + { + "name": "CertificateBundleEnvironmentVariable", + "kind": "property", + "accessibility": "public", + "signature": "public virtual string? ILanguageSupport.CertificateBundleEnvironmentVariable", + "returnType": "string?", + "isReturnNullable": true, + "isVirtual": true, + "hasGet": true, + "docs": { + "summary": [ + { + "kind": "text", + "text": " Gets the environment variable that accepts an additional PEM certificate bundle when running an AppHost for this language. " + } + ], + "remarks": [ + { + "kind": "text", + "text": " The CLI sets this environment variable only when running the AppHost, not when publishing it. Return the name of the runtime-specific environment variable, rather than a certificate path. The runtime uses the certificate bundle as additional trusted roots for the entire AppHost process, affecting all outbound TLS connections, including connections unrelated to Aspire-managed resources. Implementations should opt in only when this process-wide trust scope is appropriate. For example: " + }, + { + "kind": "codeblock", + "text": "\n public string? CertificateBundleEnvironmentVariable => \"NODE_EXTRA_CA_CERTS\";\n ", + "language": "csharp" + } + ] + }, + "sourceFile": "src/Aspire.TypeSystem/ILanguageSupport.cs", + "sourceLines": "31-31" + }, { "name": "Language", "kind": "property", @@ -5834,6 +5865,37 @@ "signature": "public RuntimeSpec.RuntimeSpec()", "returnType": "void" }, + { + "name": "CertificateBundleEnvironmentVariable", + "kind": "property", + "accessibility": "public", + "signature": "public string? RuntimeSpec.CertificateBundleEnvironmentVariable", + "returnType": "string?", + "isReturnNullable": true, + "hasGet": true, + "hasSet": true, + "isInitOnly": true, + "docs": { + "summary": [ + { + "kind": "text", + "text": " Gets the environment variable that accepts an additional PEM certificate bundle when running an AppHost for this language. " + } + ], + "remarks": [ + { + "kind": "text", + "text": " When set, the CLI assigns this environment variable a certificate bundle containing the ASP.NET Core development certificate before launching the AppHost in run mode. The variable is not set when publishing the AppHost. The runtime uses the bundle as additional trusted roots for the entire AppHost process, affecting all outbound TLS connections, including connections unrelated to Aspire-managed resources. For example: " + }, + { + "kind": "codeblock", + "text": "\n CertificateBundleEnvironmentVariable = \"NODE_EXTRA_CA_CERTS\";\n ", + "language": "csharp" + } + ] + }, + "sourceFile": "src/Aspire.TypeSystem/RuntimeSpec.cs" + }, { "name": "CodeGenLanguage", "kind": "property", diff --git a/src/frontend/src/data/pkgs/CommunityToolkit.Aspire.Bitwarden.SecretManager.13.4.1-beta.706.json b/src/frontend/src/data/pkgs/CommunityToolkit.Aspire.Bitwarden.SecretManager.13.4.1-beta.701.json similarity index 99% rename from src/frontend/src/data/pkgs/CommunityToolkit.Aspire.Bitwarden.SecretManager.13.4.1-beta.706.json rename to src/frontend/src/data/pkgs/CommunityToolkit.Aspire.Bitwarden.SecretManager.13.4.1-beta.701.json index 444fd6882..462b4469b 100644 --- a/src/frontend/src/data/pkgs/CommunityToolkit.Aspire.Bitwarden.SecretManager.13.4.1-beta.706.json +++ b/src/frontend/src/data/pkgs/CommunityToolkit.Aspire.Bitwarden.SecretManager.13.4.1-beta.701.json @@ -1,10 +1,10 @@ { "package": { "name": "CommunityToolkit.Aspire.Bitwarden.SecretManager", - "version": "13.4.1-beta.706", + "version": "13.4.1-beta.701", "targetFramework": "net10.0", "sourceRepository": "https://github.com/CommunityToolkit/Aspire", - "sourceCommit": "d479e13473b1d29d06b974f144a0049289a3cb5c" + "sourceCommit": "be6f2a5046ee6d8498e259118610efdf0f5889e5" }, "types": [ { diff --git a/src/frontend/src/data/pkgs/CommunityToolkit.Aspire.DuckDB.NET.Data.13.4.1-beta.706.json b/src/frontend/src/data/pkgs/CommunityToolkit.Aspire.DuckDB.NET.Data.13.4.1-beta.701.json similarity index 99% rename from src/frontend/src/data/pkgs/CommunityToolkit.Aspire.DuckDB.NET.Data.13.4.1-beta.706.json rename to src/frontend/src/data/pkgs/CommunityToolkit.Aspire.DuckDB.NET.Data.13.4.1-beta.701.json index 03cdaf0b8..c00c18ff5 100644 --- a/src/frontend/src/data/pkgs/CommunityToolkit.Aspire.DuckDB.NET.Data.13.4.1-beta.706.json +++ b/src/frontend/src/data/pkgs/CommunityToolkit.Aspire.DuckDB.NET.Data.13.4.1-beta.701.json @@ -1,10 +1,10 @@ { "package": { "name": "CommunityToolkit.Aspire.DuckDB.NET.Data", - "version": "13.4.1-beta.706", + "version": "13.4.1-beta.701", "targetFramework": "net10.0", "sourceRepository": "https://github.com/CommunityToolkit/Aspire", - "sourceCommit": "d479e13473b1d29d06b974f144a0049289a3cb5c" + "sourceCommit": "be6f2a5046ee6d8498e259118610efdf0f5889e5" }, "types": [ { diff --git a/src/frontend/src/data/pkgs/CommunityToolkit.Aspire.Hosting.Bitwarden.SecretManager.13.4.1-beta.706.json b/src/frontend/src/data/pkgs/CommunityToolkit.Aspire.Hosting.Bitwarden.SecretManager.13.4.1-beta.701.json similarity index 99% rename from src/frontend/src/data/pkgs/CommunityToolkit.Aspire.Hosting.Bitwarden.SecretManager.13.4.1-beta.706.json rename to src/frontend/src/data/pkgs/CommunityToolkit.Aspire.Hosting.Bitwarden.SecretManager.13.4.1-beta.701.json index 84d77c9d6..7b47f92a9 100644 --- a/src/frontend/src/data/pkgs/CommunityToolkit.Aspire.Hosting.Bitwarden.SecretManager.13.4.1-beta.706.json +++ b/src/frontend/src/data/pkgs/CommunityToolkit.Aspire.Hosting.Bitwarden.SecretManager.13.4.1-beta.701.json @@ -1,10 +1,10 @@ { "package": { "name": "CommunityToolkit.Aspire.Hosting.Bitwarden.SecretManager", - "version": "13.4.1-beta.706", + "version": "13.4.1-beta.701", "targetFramework": "net10.0", "sourceRepository": "https://github.com/CommunityToolkit/Aspire", - "sourceCommit": "d479e13473b1d29d06b974f144a0049289a3cb5c" + "sourceCommit": "be6f2a5046ee6d8498e259118610efdf0f5889e5" }, "types": [ { diff --git a/src/frontend/src/data/pkgs/CommunityToolkit.Aspire.Hosting.Dbx.13.4.1-beta.706.json b/src/frontend/src/data/pkgs/CommunityToolkit.Aspire.Hosting.Dbx.13.4.1-beta.701.json similarity index 99% rename from src/frontend/src/data/pkgs/CommunityToolkit.Aspire.Hosting.Dbx.13.4.1-beta.706.json rename to src/frontend/src/data/pkgs/CommunityToolkit.Aspire.Hosting.Dbx.13.4.1-beta.701.json index 465038e65..f47b426cb 100644 --- a/src/frontend/src/data/pkgs/CommunityToolkit.Aspire.Hosting.Dbx.13.4.1-beta.706.json +++ b/src/frontend/src/data/pkgs/CommunityToolkit.Aspire.Hosting.Dbx.13.4.1-beta.701.json @@ -1,10 +1,10 @@ { "package": { "name": "CommunityToolkit.Aspire.Hosting.Dbx", - "version": "13.4.1-beta.706", + "version": "13.4.1-beta.701", "targetFramework": "net10.0", "sourceRepository": "https://github.com/CommunityToolkit/Aspire", - "sourceCommit": "d479e13473b1d29d06b974f144a0049289a3cb5c" + "sourceCommit": "be6f2a5046ee6d8498e259118610efdf0f5889e5" }, "types": [ { diff --git a/src/frontend/src/data/pkgs/CommunityToolkit.Aspire.Hosting.DuckDB.13.4.1-beta.706.json b/src/frontend/src/data/pkgs/CommunityToolkit.Aspire.Hosting.DuckDB.13.4.1-beta.701.json similarity index 98% rename from src/frontend/src/data/pkgs/CommunityToolkit.Aspire.Hosting.DuckDB.13.4.1-beta.706.json rename to src/frontend/src/data/pkgs/CommunityToolkit.Aspire.Hosting.DuckDB.13.4.1-beta.701.json index 600216fbc..50963ef3f 100644 --- a/src/frontend/src/data/pkgs/CommunityToolkit.Aspire.Hosting.DuckDB.13.4.1-beta.706.json +++ b/src/frontend/src/data/pkgs/CommunityToolkit.Aspire.Hosting.DuckDB.13.4.1-beta.701.json @@ -1,10 +1,10 @@ { "package": { "name": "CommunityToolkit.Aspire.Hosting.DuckDB", - "version": "13.4.1-beta.706", + "version": "13.4.1-beta.701", "targetFramework": "net10.0", "sourceRepository": "https://github.com/CommunityToolkit/Aspire", - "sourceCommit": "d479e13473b1d29d06b974f144a0049289a3cb5c" + "sourceCommit": "be6f2a5046ee6d8498e259118610efdf0f5889e5" }, "types": [ { diff --git a/src/frontend/src/data/pkgs/CommunityToolkit.Aspire.Hosting.K3s.13.4.1-beta.706.json b/src/frontend/src/data/pkgs/CommunityToolkit.Aspire.Hosting.K3s.13.4.1-beta.701.json similarity index 99% rename from src/frontend/src/data/pkgs/CommunityToolkit.Aspire.Hosting.K3s.13.4.1-beta.706.json rename to src/frontend/src/data/pkgs/CommunityToolkit.Aspire.Hosting.K3s.13.4.1-beta.701.json index 67017489f..3fbf8e840 100644 --- a/src/frontend/src/data/pkgs/CommunityToolkit.Aspire.Hosting.K3s.13.4.1-beta.706.json +++ b/src/frontend/src/data/pkgs/CommunityToolkit.Aspire.Hosting.K3s.13.4.1-beta.701.json @@ -1,10 +1,10 @@ { "package": { "name": "CommunityToolkit.Aspire.Hosting.K3s", - "version": "13.4.1-beta.706", + "version": "13.4.1-beta.701", "targetFramework": "net10.0", "sourceRepository": "https://github.com/CommunityToolkit/Aspire", - "sourceCommit": "d479e13473b1d29d06b974f144a0049289a3cb5c" + "sourceCommit": "be6f2a5046ee6d8498e259118610efdf0f5889e5" }, "types": [ { diff --git a/src/frontend/src/data/pkgs/CommunityToolkit.Aspire.Hosting.Keycloak.Extensions.13.4.1-beta.706.json b/src/frontend/src/data/pkgs/CommunityToolkit.Aspire.Hosting.Keycloak.Extensions.13.4.1-beta.701.json similarity index 97% rename from src/frontend/src/data/pkgs/CommunityToolkit.Aspire.Hosting.Keycloak.Extensions.13.4.1-beta.706.json rename to src/frontend/src/data/pkgs/CommunityToolkit.Aspire.Hosting.Keycloak.Extensions.13.4.1-beta.701.json index 0641f5601..4a0745eb1 100644 --- a/src/frontend/src/data/pkgs/CommunityToolkit.Aspire.Hosting.Keycloak.Extensions.13.4.1-beta.706.json +++ b/src/frontend/src/data/pkgs/CommunityToolkit.Aspire.Hosting.Keycloak.Extensions.13.4.1-beta.701.json @@ -1,10 +1,10 @@ { "package": { "name": "CommunityToolkit.Aspire.Hosting.Keycloak.Extensions", - "version": "13.4.1-beta.706", + "version": "13.4.1-beta.701", "targetFramework": "net10.0", "sourceRepository": "https://github.com/CommunityToolkit/Aspire", - "sourceCommit": "d479e13473b1d29d06b974f144a0049289a3cb5c" + "sourceCommit": "be6f2a5046ee6d8498e259118610efdf0f5889e5" }, "types": [ { diff --git a/src/frontend/src/data/pkgs/CommunityToolkit.Aspire.Hosting.Kind.13.4.1-beta.706.json b/src/frontend/src/data/pkgs/CommunityToolkit.Aspire.Hosting.Kind.13.4.1-beta.701.json similarity index 99% rename from src/frontend/src/data/pkgs/CommunityToolkit.Aspire.Hosting.Kind.13.4.1-beta.706.json rename to src/frontend/src/data/pkgs/CommunityToolkit.Aspire.Hosting.Kind.13.4.1-beta.701.json index 15a53c82b..5920ec8aa 100644 --- a/src/frontend/src/data/pkgs/CommunityToolkit.Aspire.Hosting.Kind.13.4.1-beta.706.json +++ b/src/frontend/src/data/pkgs/CommunityToolkit.Aspire.Hosting.Kind.13.4.1-beta.701.json @@ -1,10 +1,10 @@ { "package": { "name": "CommunityToolkit.Aspire.Hosting.Kind", - "version": "13.4.1-beta.706", + "version": "13.4.1-beta.701", "targetFramework": "net10.0", "sourceRepository": "https://github.com/CommunityToolkit/Aspire", - "sourceCommit": "d479e13473b1d29d06b974f144a0049289a3cb5c" + "sourceCommit": "be6f2a5046ee6d8498e259118610efdf0f5889e5" }, "types": [ { diff --git a/src/frontend/src/data/pkgs/CommunityToolkit.Aspire.Hosting.Listmonk.13.4.1-beta.706.json b/src/frontend/src/data/pkgs/CommunityToolkit.Aspire.Hosting.Listmonk.13.4.1-beta.701.json similarity index 99% rename from src/frontend/src/data/pkgs/CommunityToolkit.Aspire.Hosting.Listmonk.13.4.1-beta.706.json rename to src/frontend/src/data/pkgs/CommunityToolkit.Aspire.Hosting.Listmonk.13.4.1-beta.701.json index fb158cd8c..38f0f31d3 100644 --- a/src/frontend/src/data/pkgs/CommunityToolkit.Aspire.Hosting.Listmonk.13.4.1-beta.706.json +++ b/src/frontend/src/data/pkgs/CommunityToolkit.Aspire.Hosting.Listmonk.13.4.1-beta.701.json @@ -1,10 +1,10 @@ { "package": { "name": "CommunityToolkit.Aspire.Hosting.Listmonk", - "version": "13.4.1-beta.706", + "version": "13.4.1-beta.701", "targetFramework": "net10.0", "sourceRepository": "https://github.com/CommunityToolkit/Aspire", - "sourceCommit": "d479e13473b1d29d06b974f144a0049289a3cb5c" + "sourceCommit": "be6f2a5046ee6d8498e259118610efdf0f5889e5" }, "types": [ { diff --git a/src/frontend/src/data/pkgs/CommunityToolkit.Aspire.Hosting.Logto.13.4.1-beta.706.json b/src/frontend/src/data/pkgs/CommunityToolkit.Aspire.Hosting.Logto.13.4.1-beta.701.json similarity index 99% rename from src/frontend/src/data/pkgs/CommunityToolkit.Aspire.Hosting.Logto.13.4.1-beta.706.json rename to src/frontend/src/data/pkgs/CommunityToolkit.Aspire.Hosting.Logto.13.4.1-beta.701.json index 4db56e9c9..8295822b4 100644 --- a/src/frontend/src/data/pkgs/CommunityToolkit.Aspire.Hosting.Logto.13.4.1-beta.706.json +++ b/src/frontend/src/data/pkgs/CommunityToolkit.Aspire.Hosting.Logto.13.4.1-beta.701.json @@ -1,10 +1,10 @@ { "package": { "name": "CommunityToolkit.Aspire.Hosting.Logto", - "version": "13.4.1-beta.706", + "version": "13.4.1-beta.701", "targetFramework": "net10.0", "sourceRepository": "https://github.com/CommunityToolkit/Aspire", - "sourceCommit": "d479e13473b1d29d06b974f144a0049289a3cb5c" + "sourceCommit": "be6f2a5046ee6d8498e259118610efdf0f5889e5" }, "types": [ { diff --git a/src/frontend/src/data/pkgs/CommunityToolkit.Aspire.Hosting.RustFs.13.4.1-beta.706.json b/src/frontend/src/data/pkgs/CommunityToolkit.Aspire.Hosting.RustFs.13.4.1-beta.701.json similarity index 99% rename from src/frontend/src/data/pkgs/CommunityToolkit.Aspire.Hosting.RustFs.13.4.1-beta.706.json rename to src/frontend/src/data/pkgs/CommunityToolkit.Aspire.Hosting.RustFs.13.4.1-beta.701.json index 4275823f9..93960662c 100644 --- a/src/frontend/src/data/pkgs/CommunityToolkit.Aspire.Hosting.RustFs.13.4.1-beta.706.json +++ b/src/frontend/src/data/pkgs/CommunityToolkit.Aspire.Hosting.RustFs.13.4.1-beta.701.json @@ -1,10 +1,10 @@ { "package": { "name": "CommunityToolkit.Aspire.Hosting.RustFs", - "version": "13.4.1-beta.706", + "version": "13.4.1-beta.701", "targetFramework": "net10.0", "sourceRepository": "https://github.com/CommunityToolkit/Aspire", - "sourceCommit": "d479e13473b1d29d06b974f144a0049289a3cb5c" + "sourceCommit": "be6f2a5046ee6d8498e259118610efdf0f5889e5" }, "types": [ { diff --git a/src/frontend/src/data/pkgs/CommunityToolkit.Aspire.Hosting.SeaweedFS.13.4.1-beta.706.json b/src/frontend/src/data/pkgs/CommunityToolkit.Aspire.Hosting.SeaweedFS.13.4.1-beta.701.json similarity index 99% rename from src/frontend/src/data/pkgs/CommunityToolkit.Aspire.Hosting.SeaweedFS.13.4.1-beta.706.json rename to src/frontend/src/data/pkgs/CommunityToolkit.Aspire.Hosting.SeaweedFS.13.4.1-beta.701.json index a77f14584..e4d34d2fb 100644 --- a/src/frontend/src/data/pkgs/CommunityToolkit.Aspire.Hosting.SeaweedFS.13.4.1-beta.706.json +++ b/src/frontend/src/data/pkgs/CommunityToolkit.Aspire.Hosting.SeaweedFS.13.4.1-beta.701.json @@ -1,10 +1,10 @@ { "package": { "name": "CommunityToolkit.Aspire.Hosting.SeaweedFS", - "version": "13.4.1-beta.706", + "version": "13.4.1-beta.701", "targetFramework": "net10.0", "sourceRepository": "https://github.com/CommunityToolkit/Aspire", - "sourceCommit": "d479e13473b1d29d06b974f144a0049289a3cb5c" + "sourceCommit": "be6f2a5046ee6d8498e259118610efdf0f5889e5" }, "types": [ { diff --git a/src/frontend/src/data/pkgs/CommunityToolkit.Aspire.Hosting.Squad.13.4.1-beta.706.json b/src/frontend/src/data/pkgs/CommunityToolkit.Aspire.Hosting.Squad.13.4.1-beta.701.json similarity index 99% rename from src/frontend/src/data/pkgs/CommunityToolkit.Aspire.Hosting.Squad.13.4.1-beta.706.json rename to src/frontend/src/data/pkgs/CommunityToolkit.Aspire.Hosting.Squad.13.4.1-beta.701.json index 7961db189..ea471e778 100644 --- a/src/frontend/src/data/pkgs/CommunityToolkit.Aspire.Hosting.Squad.13.4.1-beta.706.json +++ b/src/frontend/src/data/pkgs/CommunityToolkit.Aspire.Hosting.Squad.13.4.1-beta.701.json @@ -1,10 +1,10 @@ { "package": { "name": "CommunityToolkit.Aspire.Hosting.Squad", - "version": "13.4.1-beta.706", + "version": "13.4.1-beta.701", "targetFramework": "net10.0", "sourceRepository": "https://github.com/CommunityToolkit/Aspire", - "sourceCommit": "d479e13473b1d29d06b974f144a0049289a3cb5c" + "sourceCommit": "be6f2a5046ee6d8498e259118610efdf0f5889e5" }, "types": [ { diff --git a/src/frontend/src/data/pkgs/CommunityToolkit.Aspire.Logto.Client.13.4.1-beta.706.json b/src/frontend/src/data/pkgs/CommunityToolkit.Aspire.Logto.Client.13.4.1-beta.701.json similarity index 99% rename from src/frontend/src/data/pkgs/CommunityToolkit.Aspire.Logto.Client.13.4.1-beta.706.json rename to src/frontend/src/data/pkgs/CommunityToolkit.Aspire.Logto.Client.13.4.1-beta.701.json index 3b7bb3b6e..bae63f3f8 100644 --- a/src/frontend/src/data/pkgs/CommunityToolkit.Aspire.Logto.Client.13.4.1-beta.706.json +++ b/src/frontend/src/data/pkgs/CommunityToolkit.Aspire.Logto.Client.13.4.1-beta.701.json @@ -1,10 +1,10 @@ { "package": { "name": "CommunityToolkit.Aspire.Logto.Client", - "version": "13.4.1-beta.706", + "version": "13.4.1-beta.701", "targetFramework": "net10.0", "sourceRepository": "https://github.com/CommunityToolkit/Aspire", - "sourceCommit": "d479e13473b1d29d06b974f144a0049289a3cb5c" + "sourceCommit": "be6f2a5046ee6d8498e259118610efdf0f5889e5" }, "types": [ { diff --git a/src/frontend/src/data/pkgs/CommunityToolkit.Aspire.SeaweedFS.Client.13.4.1-beta.706.json b/src/frontend/src/data/pkgs/CommunityToolkit.Aspire.SeaweedFS.Client.13.4.1-beta.701.json similarity index 99% rename from src/frontend/src/data/pkgs/CommunityToolkit.Aspire.SeaweedFS.Client.13.4.1-beta.706.json rename to src/frontend/src/data/pkgs/CommunityToolkit.Aspire.SeaweedFS.Client.13.4.1-beta.701.json index e340b6dea..aead76505 100644 --- a/src/frontend/src/data/pkgs/CommunityToolkit.Aspire.SeaweedFS.Client.13.4.1-beta.706.json +++ b/src/frontend/src/data/pkgs/CommunityToolkit.Aspire.SeaweedFS.Client.13.4.1-beta.701.json @@ -1,10 +1,10 @@ { "package": { "name": "CommunityToolkit.Aspire.SeaweedFS.Client", - "version": "13.4.1-beta.706", + "version": "13.4.1-beta.701", "targetFramework": "net10.0", "sourceRepository": "https://github.com/CommunityToolkit/Aspire", - "sourceCommit": "d479e13473b1d29d06b974f144a0049289a3cb5c" + "sourceCommit": "be6f2a5046ee6d8498e259118610efdf0f5889e5" }, "types": [ { diff --git a/src/frontend/src/data/ts-modules/Aspire.Hosting.13.4.6.json b/src/frontend/src/data/ts-modules/Aspire.Hosting.13.5.0.json similarity index 80% rename from src/frontend/src/data/ts-modules/Aspire.Hosting.13.4.6.json rename to src/frontend/src/data/ts-modules/Aspire.Hosting.13.5.0.json index 6cc0d47da..7235c0db4 100644 --- a/src/frontend/src/data/ts-modules/Aspire.Hosting.13.4.6.json +++ b/src/frontend/src/data/ts-modules/Aspire.Hosting.13.5.0.json @@ -1,10 +1,10 @@ { "package": { "name": "Aspire.Hosting", - "version": "13.4.6", + "version": "13.5.0", "language": "typescript", "sourceRepository": "https://github.com/microsoft/aspire", - "sourceCommit": "87fe259e4fc244c599019a7b1304c85a1488f248" + "sourceCommit": "8ab6999850d96e0023670799edbd4bdc245ad63c" }, "functions": [ { @@ -401,6 +401,33 @@ "Aspire.Hosting.IDistributedApplicationBuilder" ] }, + { + "name": "addHealthCheck", + "capabilityId": "Aspire.Hosting/addHealthCheck", + "qualifiedName": "addHealthCheck", + "description": "Adds a custom health check callback to the distributed-application builder.", + "kind": "Method", + "signature": "addHealthCheck(name: string, check: () => Promise): void", + "parameters": [ + { + "name": "name", + "type": "string", + "description": "The health check registration name." + }, + { + "name": "check", + "type": "callback", + "isCallback": true, + "callbackSignature": "() => Promise", + "description": "The callback that evaluates the health check." + } + ], + "returnType": "void", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.IDistributedApplicationBuilder", + "expandedTargetTypes": [ + "Aspire.Hosting.IDistributedApplicationBuilder" + ] + }, { "name": "addMarkdown", "capabilityId": "Aspire.Hosting/addMarkdown", @@ -1182,6 +1209,303 @@ "Aspire.Hosting.ApplicationModel.ConnectionStringAvailableEvent" ] }, + { + "name": "cancellationToken", + "capabilityId": "Aspire.Hosting.ApplicationModel/ContainerBuildOptionsCallbackContext.cancellationToken", + "qualifiedName": "ContainerBuildOptionsCallbackContext.cancellationToken", + "description": "Gets the cancellation token.", + "kind": "PropertyGetter", + "signature": "cancellationToken(): cancellationToken", + "parameters": [], + "returnType": "cancellationToken", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.ContainerBuildOptionsCallbackContext", + "expandedTargetTypes": [ + "Aspire.Hosting.ApplicationModel.ContainerBuildOptionsCallbackContext" + ] + }, + { + "name": "destination", + "capabilityId": "Aspire.Hosting.ApplicationModel/ContainerBuildOptionsCallbackContext.destination", + "qualifiedName": "ContainerBuildOptionsCallbackContext.destination", + "description": "Gets or sets the destination for the container image.", + "kind": "PropertyGetter", + "signature": "destination(): ContainerImageDestination", + "parameters": [], + "returnType": "ContainerImageDestination", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.ContainerBuildOptionsCallbackContext", + "expandedTargetTypes": [ + "Aspire.Hosting.ApplicationModel.ContainerBuildOptionsCallbackContext" + ] + }, + { + "name": "executionContext", + "capabilityId": "Aspire.Hosting.ApplicationModel/ContainerBuildOptionsCallbackContext.executionContext", + "qualifiedName": "ContainerBuildOptionsCallbackContext.executionContext", + "description": "Gets the distributed application execution context.", + "remarks": "Use `IsPublishMode` or\n`IsRunMode` to vary build options\n(for example `TargetPlatform`) between local run and publish operations.", + "kind": "PropertyGetter", + "signature": "executionContext(): DistributedApplicationExecutionContext", + "parameters": [], + "returnType": "DistributedApplicationExecutionContext", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.ContainerBuildOptionsCallbackContext", + "expandedTargetTypes": [ + "Aspire.Hosting.ApplicationModel.ContainerBuildOptionsCallbackContext" + ] + }, + { + "name": "imageFormat", + "capabilityId": "Aspire.Hosting.ApplicationModel/ContainerBuildOptionsCallbackContext.imageFormat", + "qualifiedName": "ContainerBuildOptionsCallbackContext.imageFormat", + "description": "Gets or sets the container image format.", + "kind": "PropertyGetter", + "signature": "imageFormat(): ContainerImageFormat", + "parameters": [], + "returnType": "ContainerImageFormat", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.ContainerBuildOptionsCallbackContext", + "expandedTargetTypes": [ + "Aspire.Hosting.ApplicationModel.ContainerBuildOptionsCallbackContext" + ] + }, + { + "name": "localImageName", + "capabilityId": "Aspire.Hosting.ApplicationModel/ContainerBuildOptionsCallbackContext.localImageName", + "qualifiedName": "ContainerBuildOptionsCallbackContext.localImageName", + "description": "Gets or sets the local image name for the built container.", + "kind": "PropertyGetter", + "signature": "localImageName(): string", + "parameters": [], + "returnType": "string", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.ContainerBuildOptionsCallbackContext", + "expandedTargetTypes": [ + "Aspire.Hosting.ApplicationModel.ContainerBuildOptionsCallbackContext" + ] + }, + { + "name": "localImageTag", + "capabilityId": "Aspire.Hosting.ApplicationModel/ContainerBuildOptionsCallbackContext.localImageTag", + "qualifiedName": "ContainerBuildOptionsCallbackContext.localImageTag", + "description": "Gets or sets the local image tag for the built container.", + "kind": "PropertyGetter", + "signature": "localImageTag(): string", + "parameters": [], + "returnType": "string", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.ContainerBuildOptionsCallbackContext", + "expandedTargetTypes": [ + "Aspire.Hosting.ApplicationModel.ContainerBuildOptionsCallbackContext" + ] + }, + { + "name": "logger", + "capabilityId": "Aspire.Hosting.ApplicationModel/ContainerBuildOptionsCallbackContext.logger", + "qualifiedName": "ContainerBuildOptionsCallbackContext.logger", + "description": "Gets the logger instance.", + "kind": "PropertyGetter", + "signature": "logger(): ILogger", + "parameters": [], + "returnType": "ILogger", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.ContainerBuildOptionsCallbackContext", + "expandedTargetTypes": [ + "Aspire.Hosting.ApplicationModel.ContainerBuildOptionsCallbackContext" + ] + }, + { + "name": "outputPath", + "capabilityId": "Aspire.Hosting.ApplicationModel/ContainerBuildOptionsCallbackContext.outputPath", + "qualifiedName": "ContainerBuildOptionsCallbackContext.outputPath", + "description": "Gets or sets the output path for the container archive.", + "kind": "PropertyGetter", + "signature": "outputPath(): string", + "parameters": [], + "returnType": "string", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.ContainerBuildOptionsCallbackContext", + "expandedTargetTypes": [ + "Aspire.Hosting.ApplicationModel.ContainerBuildOptionsCallbackContext" + ] + }, + { + "name": "resource", + "capabilityId": "Aspire.Hosting.ApplicationModel/ContainerBuildOptionsCallbackContext.resource", + "qualifiedName": "ContainerBuildOptionsCallbackContext.resource", + "description": "Gets the resource being built.", + "kind": "PropertyGetter", + "signature": "resource(): IResource", + "parameters": [], + "returnType": "IResource", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.ContainerBuildOptionsCallbackContext", + "expandedTargetTypes": [ + "Aspire.Hosting.ApplicationModel.ContainerBuildOptionsCallbackContext" + ] + }, + { + "name": "services", + "capabilityId": "Aspire.Hosting.ApplicationModel/ContainerBuildOptionsCallbackContext.services", + "qualifiedName": "ContainerBuildOptionsCallbackContext.services", + "description": "Gets the service provider.", + "kind": "PropertyGetter", + "signature": "services(): IServiceProvider", + "parameters": [], + "returnType": "IServiceProvider", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.ContainerBuildOptionsCallbackContext", + "expandedTargetTypes": [ + "Aspire.Hosting.ApplicationModel.ContainerBuildOptionsCallbackContext" + ] + }, + { + "name": "setDestination", + "capabilityId": "Aspire.Hosting.ApplicationModel/ContainerBuildOptionsCallbackContext.setDestination", + "qualifiedName": "ContainerBuildOptionsCallbackContext.setDestination", + "description": "Gets or sets the destination for the container image.", + "kind": "PropertySetter", + "signature": "setDestination(value: ContainerImageDestination): ContainerBuildOptionsCallbackContext", + "parameters": [ + { + "name": "value", + "type": "ContainerImageDestination" + } + ], + "returnType": "ContainerBuildOptionsCallbackContext", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.ContainerBuildOptionsCallbackContext", + "expandedTargetTypes": [ + "Aspire.Hosting.ApplicationModel.ContainerBuildOptionsCallbackContext" + ] + }, + { + "name": "setImageFormat", + "capabilityId": "Aspire.Hosting.ApplicationModel/ContainerBuildOptionsCallbackContext.setImageFormat", + "qualifiedName": "ContainerBuildOptionsCallbackContext.setImageFormat", + "description": "Gets or sets the container image format.", + "kind": "PropertySetter", + "signature": "setImageFormat(value: ContainerImageFormat): ContainerBuildOptionsCallbackContext", + "parameters": [ + { + "name": "value", + "type": "ContainerImageFormat" + } + ], + "returnType": "ContainerBuildOptionsCallbackContext", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.ContainerBuildOptionsCallbackContext", + "expandedTargetTypes": [ + "Aspire.Hosting.ApplicationModel.ContainerBuildOptionsCallbackContext" + ] + }, + { + "name": "setLocalImageName", + "capabilityId": "Aspire.Hosting.ApplicationModel/ContainerBuildOptionsCallbackContext.setLocalImageName", + "qualifiedName": "ContainerBuildOptionsCallbackContext.setLocalImageName", + "description": "Gets or sets the local image name for the built container.", + "kind": "PropertySetter", + "signature": "setLocalImageName(value: string): ContainerBuildOptionsCallbackContext", + "parameters": [ + { + "name": "value", + "type": "string" + } + ], + "returnType": "ContainerBuildOptionsCallbackContext", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.ContainerBuildOptionsCallbackContext", + "expandedTargetTypes": [ + "Aspire.Hosting.ApplicationModel.ContainerBuildOptionsCallbackContext" + ] + }, + { + "name": "setLocalImageTag", + "capabilityId": "Aspire.Hosting.ApplicationModel/ContainerBuildOptionsCallbackContext.setLocalImageTag", + "qualifiedName": "ContainerBuildOptionsCallbackContext.setLocalImageTag", + "description": "Gets or sets the local image tag for the built container.", + "kind": "PropertySetter", + "signature": "setLocalImageTag(value: string): ContainerBuildOptionsCallbackContext", + "parameters": [ + { + "name": "value", + "type": "string" + } + ], + "returnType": "ContainerBuildOptionsCallbackContext", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.ContainerBuildOptionsCallbackContext", + "expandedTargetTypes": [ + "Aspire.Hosting.ApplicationModel.ContainerBuildOptionsCallbackContext" + ] + }, + { + "name": "setOutputPath", + "capabilityId": "Aspire.Hosting.ApplicationModel/ContainerBuildOptionsCallbackContext.setOutputPath", + "qualifiedName": "ContainerBuildOptionsCallbackContext.setOutputPath", + "description": "Gets or sets the output path for the container archive.", + "kind": "PropertySetter", + "signature": "setOutputPath(value: string): ContainerBuildOptionsCallbackContext", + "parameters": [ + { + "name": "value", + "type": "string" + } + ], + "returnType": "ContainerBuildOptionsCallbackContext", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.ContainerBuildOptionsCallbackContext", + "expandedTargetTypes": [ + "Aspire.Hosting.ApplicationModel.ContainerBuildOptionsCallbackContext" + ] + }, + { + "name": "setTargetPlatform", + "capabilityId": "Aspire.Hosting.ApplicationModel/ContainerBuildOptionsCallbackContext.setTargetPlatform", + "qualifiedName": "ContainerBuildOptionsCallbackContext.setTargetPlatform", + "description": "Gets or sets the target platform for the container.", + "kind": "PropertySetter", + "signature": "setTargetPlatform(value: ContainerTargetPlatform): ContainerBuildOptionsCallbackContext", + "parameters": [ + { + "name": "value", + "type": "ContainerTargetPlatform" + } + ], + "returnType": "ContainerBuildOptionsCallbackContext", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.ContainerBuildOptionsCallbackContext", + "expandedTargetTypes": [ + "Aspire.Hosting.ApplicationModel.ContainerBuildOptionsCallbackContext" + ] + }, + { + "name": "targetPlatform", + "capabilityId": "Aspire.Hosting.ApplicationModel/ContainerBuildOptionsCallbackContext.targetPlatform", + "qualifiedName": "ContainerBuildOptionsCallbackContext.targetPlatform", + "description": "Gets or sets the target platform for the container.", + "kind": "PropertyGetter", + "signature": "targetPlatform(): ContainerTargetPlatform", + "parameters": [], + "returnType": "ContainerTargetPlatform", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.ContainerBuildOptionsCallbackContext", + "expandedTargetTypes": [ + "Aspire.Hosting.ApplicationModel.ContainerBuildOptionsCallbackContext" + ] + }, + { + "name": "model", + "capabilityId": "Aspire.Hosting.ApplicationModel/ContainerFileSystemCallbackContext.model", + "qualifiedName": "ContainerFileSystemCallbackContext.model", + "description": "The app model resource the callback is associated with.", + "kind": "PropertyGetter", + "signature": "model(): IResource", + "parameters": [], + "returnType": "IResource", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.ContainerFileSystemCallbackContext", + "expandedTargetTypes": [ + "Aspire.Hosting.ApplicationModel.ContainerFileSystemCallbackContext" + ] + }, + { + "name": "services", + "capabilityId": "Aspire.Hosting.ApplicationModel/ContainerFileSystemCallbackContext.services", + "qualifiedName": "ContainerFileSystemCallbackContext.services", + "description": "A `IServiceProvider` that can be used to resolve services in the callback.", + "kind": "PropertyGetter", + "signature": "services(): IServiceProvider", + "parameters": [], + "returnType": "IServiceProvider", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.ContainerFileSystemCallbackContext", + "expandedTargetTypes": [ + "Aspire.Hosting.ApplicationModel.ContainerFileSystemCallbackContext" + ] + }, { "name": "remoteImageName", "capabilityId": "Aspire.Hosting.ApplicationModel/ContainerImagePushOptions.remoteImageName", @@ -1462,6 +1786,30 @@ "Aspire.Hosting.ApplicationModel.Docker.DockerfileStage" ] }, + { + "name": "createBooleanInput", + "capabilityId": "Aspire.Hosting/createBooleanInput", + "qualifiedName": "createBooleanInput", + "description": "Creates a boolean (checkbox) input.", + "kind": "Method", + "signature": "createBooleanInput(name: string, options?: CreateInteractionInputOptions): InteractionInputBuilder", + "parameters": [ + { + "name": "name", + "type": "string" + }, + { + "name": "options", + "type": "CreateInteractionInputOptions", + "isOptional": true + } + ], + "returnType": "InteractionInputBuilder", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.IInteractionService", + "expandedTargetTypes": [ + "Aspire.Hosting.IInteractionService" + ] + }, { "name": "createBuilder", "capabilityId": "Aspire.Hosting/createBuilder", @@ -1477,35 +1825,260 @@ ] }, { - "name": "createExecutionConfiguration", - "capabilityId": "Aspire.Hosting/createExecutionConfiguration", - "qualifiedName": "createExecutionConfiguration", - "description": "Creates an execution configuration builder for the specified resource.", - "returns": "The execution configuration builder.", + "name": "createCertificateFile", + "capabilityId": "Aspire.Hosting/createCertificateFile", + "qualifiedName": "createCertificateFile", + "description": "Creates a PEM container certificate file entry with the OpenSSL subject-hash symlink.", + "returns": "The created certificate file entry.", "kind": "Method", - "signature": "createExecutionConfiguration(): IExecutionConfigurationBuilder", - "parameters": [], - "returnType": "IExecutionConfigurationBuilder", - "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.IResource", + "signature": "createCertificateFile(name: string, contents?: string, sourcePath?: string, owner?: number, group?: number, mode?: number, continueOnError?: boolean): ContainerFileSystemItem", + "parameters": [ + { + "name": "name", + "type": "string", + "description": "The simple file name (no path separators)." + }, + { + "name": "contents", + "type": "string", + "isOptional": true, + "description": "The inline PEM-encoded contents of the certificate. Mutually exclusive with `sourcePath`." + }, + { + "name": "sourcePath", + "type": "string", + "isOptional": true, + "description": "An absolute path to a PEM file on the host to copy. Mutually exclusive with `contents`." + }, + { + "name": "owner", + "type": "number", + "isOptional": true, + "isNullable": true, + "description": "The owner UID, or `null` to inherit." + }, + { + "name": "group", + "type": "number", + "isOptional": true, + "isNullable": true, + "description": "The group GID, or `null` to inherit." + }, + { + "name": "mode", + "type": "number", + "isOptional": true, + "isNullable": true, + "description": "The Unix file mode as an integer (for example `0o644`), or `null` to inherit." + }, + { + "name": "continueOnError", + "type": "boolean", + "isOptional": true, + "isNullable": true, + "description": "Whether to ignore errors creating this file." + } + ], + "returnType": "ContainerFileSystemItem", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.ContainerFileSystemCallbackContext", "expandedTargetTypes": [ - "Aspire.Hosting.ApplicationModel.ContainerResource", - "Aspire.Hosting.ApplicationModel.ExecutableResource", - "Aspire.Hosting.ApplicationModel.ProjectResource", - "Aspire.Hosting.ApplicationModel.ParameterResource", - "Aspire.Hosting.ApplicationModel.ContainerRegistryResource", - "Aspire.Hosting.ApplicationModel.DotnetToolResource", - "Aspire.Hosting.ExternalServiceResource", - "Aspire.Hosting.ApplicationModel.CSharpAppResource" + "Aspire.Hosting.ApplicationModel.ContainerFileSystemCallbackContext" ] }, { - "name": "createLogger", - "capabilityId": "Aspire.Hosting/createLogger", - "qualifiedName": "createLogger", - "description": "Creates a logger for the specified category name.", - "returns": "A logger handle.", + "name": "createChoiceInput", + "capabilityId": "Aspire.Hosting/createChoiceInput", + "qualifiedName": "createChoiceInput", + "description": "Creates a choice input that selects from a list of options.", "kind": "Method", - "signature": "createLogger(categoryName: string): ILogger", + "signature": "createChoiceInput(name: string, choices?: InteractionChoiceOption[], options?: CreateInteractionInputOptions): InteractionInputBuilder", + "parameters": [ + { + "name": "name", + "type": "string", + "description": "The name of the input." + }, + { + "name": "choices", + "type": "InteractionChoiceOption[]", + "isOptional": true, + "description": "The available choices, in display order. Each option pairs a submitted value with a display label." + }, + { + "name": "options", + "type": "CreateInteractionInputOptions", + "isOptional": true, + "description": "Optional configuration for the input." + } + ], + "returnType": "InteractionInputBuilder", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.IInteractionService", + "expandedTargetTypes": [ + "Aspire.Hosting.IInteractionService" + ] + }, + { + "name": "createDirectory", + "capabilityId": "Aspire.Hosting/createDirectory", + "qualifiedName": "createDirectory", + "description": "Creates a container directory entry containing the specified child entries.", + "returns": "The created directory entry.", + "kind": "Method", + "signature": "createDirectory(name: string, entries: ContainerFileSystemItem[], owner?: number, group?: number, mode?: number): ContainerFileSystemItem", + "parameters": [ + { + "name": "name", + "type": "string", + "description": "The simple directory name (no path separators)." + }, + { + "name": "entries", + "type": "ContainerFileSystemItem[]", + "description": "The child entries (files and/or directories) created via this context." + }, + { + "name": "owner", + "type": "number", + "isOptional": true, + "isNullable": true, + "description": "The owner UID, or `null` to inherit." + }, + { + "name": "group", + "type": "number", + "isOptional": true, + "isNullable": true, + "description": "The group GID, or `null` to inherit." + }, + { + "name": "mode", + "type": "number", + "isOptional": true, + "isNullable": true, + "description": "The Unix file mode as an integer (for example `0o755`), or `null` to inherit." + } + ], + "returnType": "ContainerFileSystemItem", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.ContainerFileSystemCallbackContext", + "expandedTargetTypes": [ + "Aspire.Hosting.ApplicationModel.ContainerFileSystemCallbackContext" + ] + }, + { + "name": "createExecutionConfiguration", + "capabilityId": "Aspire.Hosting/createExecutionConfiguration", + "qualifiedName": "createExecutionConfiguration", + "description": "Creates an execution configuration builder for the specified resource.", + "returns": "The execution configuration builder.", + "kind": "Method", + "signature": "createExecutionConfiguration(): IExecutionConfigurationBuilder", + "parameters": [], + "returnType": "IExecutionConfigurationBuilder", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.IResource", + "expandedTargetTypes": [ + "Aspire.Hosting.ApplicationModel.ContainerResource", + "Aspire.Hosting.ApplicationModel.ExecutableResource", + "Aspire.Hosting.ApplicationModel.ProjectResource", + "Aspire.Hosting.ApplicationModel.ParameterResource", + "Aspire.Hosting.ApplicationModel.ContainerRegistryResource", + "Aspire.Hosting.ApplicationModel.DotnetToolResource", + "Aspire.Hosting.ExternalServiceResource", + "Aspire.Hosting.ApplicationModel.CSharpAppResource" + ] + }, + { + "name": "createFile", + "capabilityId": "Aspire.Hosting/createFile", + "qualifiedName": "createFile", + "description": "Creates a container file entry with inline contents or a host source path.", + "returns": "The created file entry.", + "kind": "Method", + "signature": "createFile(name: string, contents?: string, sourcePath?: string, owner?: number, group?: number, mode?: number, continueOnError?: boolean): ContainerFileSystemItem", + "parameters": [ + { + "name": "name", + "type": "string", + "description": "The simple file name (no path separators)." + }, + { + "name": "contents", + "type": "string", + "isOptional": true, + "description": "The inline UTF-8 contents of the file. Mutually exclusive with `sourcePath`." + }, + { + "name": "sourcePath", + "type": "string", + "isOptional": true, + "description": "An absolute path to a file on the host to copy. Mutually exclusive with `contents`." + }, + { + "name": "owner", + "type": "number", + "isOptional": true, + "isNullable": true, + "description": "The owner UID, or `null` to inherit." + }, + { + "name": "group", + "type": "number", + "isOptional": true, + "isNullable": true, + "description": "The group GID, or `null` to inherit." + }, + { + "name": "mode", + "type": "number", + "isOptional": true, + "isNullable": true, + "description": "The Unix file mode as an integer (for example `0o644`), or `null` to inherit." + }, + { + "name": "continueOnError", + "type": "boolean", + "isOptional": true, + "isNullable": true, + "description": "Whether to ignore errors creating this file." + } + ], + "returnType": "ContainerFileSystemItem", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.ContainerFileSystemCallbackContext", + "expandedTargetTypes": [ + "Aspire.Hosting.ApplicationModel.ContainerFileSystemCallbackContext" + ] + }, + { + "name": "createFileInput", + "capabilityId": "Aspire.Hosting/createFileInput", + "qualifiedName": "createFileInput", + "description": "Creates a file input.", + "kind": "Method", + "signature": "createFileInput(name: string, options?: CreateInteractionInputOptions): InteractionInputBuilder", + "parameters": [ + { + "name": "name", + "type": "string" + }, + { + "name": "options", + "type": "CreateInteractionInputOptions", + "isOptional": true + } + ], + "returnType": "InteractionInputBuilder", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.IInteractionService", + "expandedTargetTypes": [ + "Aspire.Hosting.IInteractionService" + ] + }, + { + "name": "createLogger", + "capabilityId": "Aspire.Hosting/createLogger", + "qualifiedName": "createLogger", + "description": "Creates a logger for the specified category name.", + "returns": "A logger handle.", + "kind": "Method", + "signature": "createLogger(categoryName: string): ILogger", "parameters": [ { "name": "categoryName", @@ -1543,6 +2116,54 @@ "Aspire.Hosting.Pipelines.IReportingStep" ] }, + { + "name": "createNumberInput", + "capabilityId": "Aspire.Hosting/createNumberInput", + "qualifiedName": "createNumberInput", + "description": "Creates a numeric input.", + "kind": "Method", + "signature": "createNumberInput(name: string, options?: CreateInteractionInputOptions): InteractionInputBuilder", + "parameters": [ + { + "name": "name", + "type": "string" + }, + { + "name": "options", + "type": "CreateInteractionInputOptions", + "isOptional": true + } + ], + "returnType": "InteractionInputBuilder", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.IInteractionService", + "expandedTargetTypes": [ + "Aspire.Hosting.IInteractionService" + ] + }, + { + "name": "createSecretInput", + "capabilityId": "Aspire.Hosting/createSecretInput", + "qualifiedName": "createSecretInput", + "description": "Creates a secret (masked) text input.", + "kind": "Method", + "signature": "createSecretInput(name: string, options?: CreateInteractionInputOptions): InteractionInputBuilder", + "parameters": [ + { + "name": "name", + "type": "string" + }, + { + "name": "options", + "type": "CreateInteractionInputOptions", + "isOptional": true + } + ], + "returnType": "InteractionInputBuilder", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.IInteractionService", + "expandedTargetTypes": [ + "Aspire.Hosting.IInteractionService" + ] + }, { "name": "createTask", "capabilityId": "Aspire.Hosting/createTask", @@ -1567,6 +2188,30 @@ "Aspire.Hosting.Pipelines.IReportingStep" ] }, + { + "name": "createTextInput", + "capabilityId": "Aspire.Hosting/createTextInput", + "qualifiedName": "createTextInput", + "description": "Creates a single-line text input.", + "kind": "Method", + "signature": "createTextInput(name: string, options?: CreateInteractionInputOptions): InteractionInputBuilder", + "parameters": [ + { + "name": "name", + "type": "string" + }, + { + "name": "options", + "type": "CreateInteractionInputOptions", + "isOptional": true + } + ], + "returnType": "InteractionInputBuilder", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.IInteractionService", + "expandedTargetTypes": [ + "Aspire.Hosting.IInteractionService" + ] + }, { "name": "Dict.clear", "capabilityId": "Aspire.Hosting/Dict.clear", @@ -1841,6 +2486,20 @@ "Aspire.Hosting.DistributedApplicationExecutionContext" ] }, + { + "name": "runConfiguration", + "capabilityId": "Aspire.Hosting/DistributedApplicationExecutionContext.runConfiguration", + "qualifiedName": "DistributedApplicationExecutionContext.runConfiguration", + "description": "Describes how the AppHost is being run. Only meaningful when `Operation` is `Run`; otherwise every aspect holds its default value.", + "kind": "PropertyGetter", + "signature": "runConfiguration(): RunConfiguration", + "parameters": [], + "returnType": "RunConfiguration", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.DistributedApplicationExecutionContext", + "expandedTargetTypes": [ + "Aspire.Hosting.DistributedApplicationExecutionContext" + ] + }, { "name": "serviceProvider", "capabilityId": "Aspire.Hosting/DistributedApplicationExecutionContext.serviceProvider", @@ -1855,6 +2514,20 @@ "Aspire.Hosting.DistributedApplicationExecutionContext" ] }, + { + "name": "services", + "capabilityId": "Aspire.Hosting/DistributedApplicationExecutionContext.services", + "qualifiedName": "DistributedApplicationExecutionContext.services", + "description": "The `IServiceProvider` for the AppHost.", + "kind": "PropertyGetter", + "signature": "services(): IServiceProvider", + "parameters": [], + "returnType": "IServiceProvider", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.DistributedApplicationExecutionContext", + "expandedTargetTypes": [ + "Aspire.Hosting.DistributedApplicationExecutionContext" + ] + }, { "name": "setPublisherName", "capabilityId": "Aspire.Hosting/DistributedApplicationExecutionContext.setPublisherName", @@ -2919,6 +3592,20 @@ "Aspire.Hosting.ApplicationModel.ExecuteCommandContext" ] }, + { + "name": "services", + "capabilityId": "Aspire.Hosting.ApplicationModel/ExecuteCommandContext.services", + "qualifiedName": "ExecuteCommandContext.services", + "description": "The service provider.", + "kind": "PropertyGetter", + "signature": "services(): IServiceProvider", + "parameters": [], + "returnType": "IServiceProvider", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.ExecuteCommandContext", + "expandedTargetTypes": [ + "Aspire.Hosting.ApplicationModel.ExecuteCommandContext" + ] + }, { "name": "exists", "capabilityId": "Aspire.Hosting/exists", @@ -3224,6 +3911,21 @@ "Aspire.Hosting.ApplicationModel.IExecutionConfigurationResult" ] }, + { + "name": "getInteractionService", + "capabilityId": "Aspire.Hosting/getInteractionService", + "qualifiedName": "getInteractionService", + "description": "Gets the interaction service from the service provider.", + "returns": "An interaction service handle.", + "kind": "Method", + "signature": "getInteractionService(): IInteractionService", + "parameters": [], + "returnType": "IInteractionService", + "targetTypeId": "System.ComponentModel/System.IServiceProvider", + "expandedTargetTypes": [ + "System.IServiceProvider" + ] + }, { "name": "getLoggerFactory", "capabilityId": "Aspire.Hosting/getLoggerFactory", @@ -3389,54 +4091,292 @@ ] }, { - "name": "basePath", - "capabilityId": "Aspire.Hosting.ApplicationModel/IAspireStore.basePath", - "qualifiedName": "IAspireStore.basePath", - "description": "Gets the base path of this store.", + "name": "arguments", + "capabilityId": "Aspire.Hosting.ApplicationModel/HttpCommandPrepareRequestContext.arguments", + "qualifiedName": "HttpCommandPrepareRequestContext.arguments", + "description": "Gets the invocation arguments supplied by the client when the command is executed.", "kind": "PropertyGetter", - "signature": "basePath(): string", + "signature": "arguments(): InteractionInputCollection", "parameters": [], - "returnType": "string", - "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.IAspireStore", + "returnType": "InteractionInputCollection", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.HttpCommandPrepareRequestContext", "expandedTargetTypes": [ - "Aspire.Hosting.ApplicationModel.IAspireStore" + "Aspire.Hosting.ApplicationModel.HttpCommandPrepareRequestContext" ] }, { - "name": "appHostDirectory", - "capabilityId": "Aspire.Hosting/IDistributedApplicationBuilder.appHostDirectory", - "qualifiedName": "IDistributedApplicationBuilder.appHostDirectory", - "description": "Directory of the project where the AppHost is located. Defaults to the content root if there's no project.", + "name": "cancellationToken", + "capabilityId": "Aspire.Hosting.ApplicationModel/HttpCommandPrepareRequestContext.cancellationToken", + "qualifiedName": "HttpCommandPrepareRequestContext.cancellationToken", + "description": "The cancellation token.", "kind": "PropertyGetter", - "signature": "appHostDirectory(): string", + "signature": "cancellationToken(): cancellationToken", "parameters": [], - "returnType": "string", - "targetTypeId": "Aspire.Hosting/Aspire.Hosting.IDistributedApplicationBuilder", + "returnType": "cancellationToken", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.HttpCommandPrepareRequestContext", "expandedTargetTypes": [ - "Aspire.Hosting.IDistributedApplicationBuilder" + "Aspire.Hosting.ApplicationModel.HttpCommandPrepareRequestContext" ] }, { - "name": "build", - "capabilityId": "Aspire.Hosting/build", - "qualifiedName": "IDistributedApplicationBuilder.build", - "description": "Builds the distributed application", - "remarks": "Callers of the `Build` method should only call it once. are responsible for the lifecycle of the\n`DistributedApplication` instance that is returned. Note that the `DistributedApplication`\ntype implements `IDisposable` and should be disposed of when it is no longer needed. Note that in\nmany templates and samples Dispose is omitted for brevity because in those cases the instance is destroyed\nwhen the process exists.", - "returns": "A new `DistributedApplication` instance.", - "kind": "InstanceMethod", - "signature": "build(): DistributedApplication", + "name": "endpoint", + "capabilityId": "Aspire.Hosting.ApplicationModel/HttpCommandPrepareRequestContext.endpoint", + "qualifiedName": "HttpCommandPrepareRequestContext.endpoint", + "description": "The endpoint the request is targeting.", + "kind": "PropertyGetter", + "signature": "endpoint(): EndpointReference", "parameters": [], - "returnType": "DistributedApplication", - "targetTypeId": "Aspire.Hosting/Aspire.Hosting.IDistributedApplicationBuilder", + "returnType": "EndpointReference", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.HttpCommandPrepareRequestContext", "expandedTargetTypes": [ - "Aspire.Hosting.IDistributedApplicationBuilder" + "Aspire.Hosting.ApplicationModel.HttpCommandPrepareRequestContext" ] }, { - "name": "environment", - "capabilityId": "Aspire.Hosting/IDistributedApplicationBuilder.environment", - "qualifiedName": "IDistributedApplicationBuilder.environment", - "description": "Gets the Environment property", + "name": "resourceName", + "capabilityId": "Aspire.Hosting.ApplicationModel/HttpCommandPrepareRequestContext.resourceName", + "qualifiedName": "HttpCommandPrepareRequestContext.resourceName", + "description": "The name of the resource the command was configured on.", + "kind": "PropertyGetter", + "signature": "resourceName(): string", + "parameters": [], + "returnType": "string", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.HttpCommandPrepareRequestContext", + "expandedTargetTypes": [ + "Aspire.Hosting.ApplicationModel.HttpCommandPrepareRequestContext" + ] + }, + { + "name": "arguments", + "capabilityId": "Aspire.Hosting.ApplicationModel/HttpsCertificateConfigurationCallbackAnnotationContext.arguments", + "qualifiedName": "HttpsCertificateConfigurationCallbackAnnotationContext.arguments", + "description": "Gets the editor used to manipulate the command-line arguments in polyglot callbacks.", + "kind": "PropertyGetter", + "signature": "arguments(): CommandLineArgsEditor", + "parameters": [], + "returnType": "CommandLineArgsEditor", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.HttpsCertificateConfigurationCallbackAnnotationContext", + "expandedTargetTypes": [ + "Aspire.Hosting.ApplicationModel.HttpsCertificateConfigurationCallbackAnnotationContext" + ] + }, + { + "name": "cancellationToken", + "capabilityId": "Aspire.Hosting.ApplicationModel/HttpsCertificateConfigurationCallbackAnnotationContext.cancellationToken", + "qualifiedName": "HttpsCertificateConfigurationCallbackAnnotationContext.cancellationToken", + "description": "Gets the `CancellationToken` that can be used to cancel the operation.", + "kind": "PropertyGetter", + "signature": "cancellationToken(): cancellationToken", + "parameters": [], + "returnType": "cancellationToken", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.HttpsCertificateConfigurationCallbackAnnotationContext", + "expandedTargetTypes": [ + "Aspire.Hosting.ApplicationModel.HttpsCertificateConfigurationCallbackAnnotationContext" + ] + }, + { + "name": "certificatePath", + "capabilityId": "Aspire.Hosting.ApplicationModel/HttpsCertificateConfigurationCallbackAnnotationContext.certificatePath", + "qualifiedName": "HttpsCertificateConfigurationCallbackAnnotationContext.certificatePath", + "description": "A value provider that will resolve to a path to the certificate file.", + "kind": "PropertyGetter", + "signature": "certificatePath(): ReferenceExpression", + "parameters": [], + "returnType": "ReferenceExpression", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.HttpsCertificateConfigurationCallbackAnnotationContext", + "expandedTargetTypes": [ + "Aspire.Hosting.ApplicationModel.HttpsCertificateConfigurationCallbackAnnotationContext" + ] + }, + { + "name": "certificateWithKeyPath", + "capabilityId": "Aspire.Hosting.ApplicationModel/HttpsCertificateConfigurationCallbackAnnotationContext.certificateWithKeyPath", + "qualifiedName": "HttpsCertificateConfigurationCallbackAnnotationContext.certificateWithKeyPath", + "description": "A value provider that will resolve to a path to the certificate and key concatenated together in PEM format.", + "kind": "PropertyGetter", + "signature": "certificateWithKeyPath(): ReferenceExpression", + "parameters": [], + "returnType": "ReferenceExpression", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.HttpsCertificateConfigurationCallbackAnnotationContext", + "expandedTargetTypes": [ + "Aspire.Hosting.ApplicationModel.HttpsCertificateConfigurationCallbackAnnotationContext" + ] + }, + { + "name": "environment", + "capabilityId": "Aspire.Hosting.ApplicationModel/HttpsCertificateConfigurationCallbackAnnotationContext.environment", + "qualifiedName": "HttpsCertificateConfigurationCallbackAnnotationContext.environment", + "description": "Gets the editor used to set environment variables in polyglot callbacks.", + "kind": "PropertyGetter", + "signature": "environment(): EnvironmentEditor", + "parameters": [], + "returnType": "EnvironmentEditor", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.HttpsCertificateConfigurationCallbackAnnotationContext", + "expandedTargetTypes": [ + "Aspire.Hosting.ApplicationModel.HttpsCertificateConfigurationCallbackAnnotationContext" + ] + }, + { + "name": "executionContext", + "capabilityId": "Aspire.Hosting.ApplicationModel/HttpsCertificateConfigurationCallbackAnnotationContext.executionContext", + "qualifiedName": "HttpsCertificateConfigurationCallbackAnnotationContext.executionContext", + "description": "Gets the `DistributedApplicationExecutionContext` for this session.", + "kind": "PropertyGetter", + "signature": "executionContext(): DistributedApplicationExecutionContext", + "parameters": [], + "returnType": "DistributedApplicationExecutionContext", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.HttpsCertificateConfigurationCallbackAnnotationContext", + "expandedTargetTypes": [ + "Aspire.Hosting.ApplicationModel.HttpsCertificateConfigurationCallbackAnnotationContext" + ] + }, + { + "name": "keyPath", + "capabilityId": "Aspire.Hosting.ApplicationModel/HttpsCertificateConfigurationCallbackAnnotationContext.keyPath", + "qualifiedName": "HttpsCertificateConfigurationCallbackAnnotationContext.keyPath", + "description": "A value provider that will resolve to a path to the private key for the certificate.", + "kind": "PropertyGetter", + "signature": "keyPath(): ReferenceExpression", + "parameters": [], + "returnType": "ReferenceExpression", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.HttpsCertificateConfigurationCallbackAnnotationContext", + "expandedTargetTypes": [ + "Aspire.Hosting.ApplicationModel.HttpsCertificateConfigurationCallbackAnnotationContext" + ] + }, + { + "name": "pfxPath", + "capabilityId": "Aspire.Hosting.ApplicationModel/HttpsCertificateConfigurationCallbackAnnotationContext.pfxPath", + "qualifiedName": "HttpsCertificateConfigurationCallbackAnnotationContext.pfxPath", + "description": "A value provider that will resolve to a path to a PFX file for the key pair.", + "kind": "PropertyGetter", + "signature": "pfxPath(): ReferenceExpression", + "parameters": [], + "returnType": "ReferenceExpression", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.HttpsCertificateConfigurationCallbackAnnotationContext", + "expandedTargetTypes": [ + "Aspire.Hosting.ApplicationModel.HttpsCertificateConfigurationCallbackAnnotationContext" + ] + }, + { + "name": "resource", + "capabilityId": "Aspire.Hosting.ApplicationModel/HttpsCertificateConfigurationCallbackAnnotationContext.resource", + "qualifiedName": "HttpsCertificateConfigurationCallbackAnnotationContext.resource", + "description": "Gets the resource to which the annotation is applied.", + "kind": "PropertyGetter", + "signature": "resource(): IResource", + "parameters": [], + "returnType": "IResource", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.HttpsCertificateConfigurationCallbackAnnotationContext", + "expandedTargetTypes": [ + "Aspire.Hosting.ApplicationModel.HttpsCertificateConfigurationCallbackAnnotationContext" + ] + }, + { + "name": "cancellationToken", + "capabilityId": "Aspire.Hosting.ApplicationModel/HttpsEndpointUpdateCallbackContext.cancellationToken", + "qualifiedName": "HttpsEndpointUpdateCallbackContext.cancellationToken", + "description": "Gets the `CancellationToken` for the operation.", + "kind": "PropertyGetter", + "signature": "cancellationToken(): cancellationToken", + "parameters": [], + "returnType": "cancellationToken", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.HttpsEndpointUpdateCallbackContext", + "expandedTargetTypes": [ + "Aspire.Hosting.ApplicationModel.HttpsEndpointUpdateCallbackContext" + ] + }, + { + "name": "model", + "capabilityId": "Aspire.Hosting.ApplicationModel/HttpsEndpointUpdateCallbackContext.model", + "qualifiedName": "HttpsEndpointUpdateCallbackContext.model", + "description": "Gets the `DistributedApplicationModel` instance.", + "kind": "PropertyGetter", + "signature": "model(): DistributedApplicationModel", + "parameters": [], + "returnType": "DistributedApplicationModel", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.HttpsEndpointUpdateCallbackContext", + "expandedTargetTypes": [ + "Aspire.Hosting.ApplicationModel.HttpsEndpointUpdateCallbackContext" + ] + }, + { + "name": "resource", + "capabilityId": "Aspire.Hosting.ApplicationModel/HttpsEndpointUpdateCallbackContext.resource", + "qualifiedName": "HttpsEndpointUpdateCallbackContext.resource", + "description": "Gets the `IResource` that is being configured for HTTPS.", + "kind": "PropertyGetter", + "signature": "resource(): IResource", + "parameters": [], + "returnType": "IResource", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.HttpsEndpointUpdateCallbackContext", + "expandedTargetTypes": [ + "Aspire.Hosting.ApplicationModel.HttpsEndpointUpdateCallbackContext" + ] + }, + { + "name": "services", + "capabilityId": "Aspire.Hosting.ApplicationModel/HttpsEndpointUpdateCallbackContext.services", + "qualifiedName": "HttpsEndpointUpdateCallbackContext.services", + "description": "Gets the `IServiceProvider` instance from the application.", + "kind": "PropertyGetter", + "signature": "services(): IServiceProvider", + "parameters": [], + "returnType": "IServiceProvider", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.HttpsEndpointUpdateCallbackContext", + "expandedTargetTypes": [ + "Aspire.Hosting.ApplicationModel.HttpsEndpointUpdateCallbackContext" + ] + }, + { + "name": "basePath", + "capabilityId": "Aspire.Hosting.ApplicationModel/IAspireStore.basePath", + "qualifiedName": "IAspireStore.basePath", + "description": "Gets the base path of this store.", + "kind": "PropertyGetter", + "signature": "basePath(): string", + "parameters": [], + "returnType": "string", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.IAspireStore", + "expandedTargetTypes": [ + "Aspire.Hosting.ApplicationModel.IAspireStore" + ] + }, + { + "name": "appHostDirectory", + "capabilityId": "Aspire.Hosting/IDistributedApplicationBuilder.appHostDirectory", + "qualifiedName": "IDistributedApplicationBuilder.appHostDirectory", + "description": "Directory of the project where the AppHost is located. Defaults to the content root if there's no project.", + "kind": "PropertyGetter", + "signature": "appHostDirectory(): string", + "parameters": [], + "returnType": "string", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.IDistributedApplicationBuilder", + "expandedTargetTypes": [ + "Aspire.Hosting.IDistributedApplicationBuilder" + ] + }, + { + "name": "build", + "capabilityId": "Aspire.Hosting/build", + "qualifiedName": "IDistributedApplicationBuilder.build", + "description": "Builds the distributed application", + "remarks": "Callers of the `Build` method should only call it once. are responsible for the lifecycle of the\n`DistributedApplication` instance that is returned. Note that the `DistributedApplication`\ntype implements `IDisposable` and should be disposed of when it is no longer needed. Note that in\nmany templates and samples Dispose is omitted for brevity because in those cases the instance is destroyed\nwhen the process exists.", + "returns": "A new `DistributedApplication` instance.", + "kind": "InstanceMethod", + "signature": "build(): DistributedApplication", + "parameters": [], + "returnType": "DistributedApplication", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.IDistributedApplicationBuilder", + "expandedTargetTypes": [ + "Aspire.Hosting.IDistributedApplicationBuilder" + ] + }, + { + "name": "environment", + "capabilityId": "Aspire.Hosting/IDistributedApplicationBuilder.environment", + "qualifiedName": "IDistributedApplicationBuilder.environment", + "description": "Gets the Environment property", "kind": "PropertyGetter", "signature": "environment(): IHostEnvironment", "parameters": [], @@ -3649,84 +4589,298 @@ ] }, { - "name": "toArray", - "capabilityId": "Aspire.Hosting/InteractionInputCollection.toArray", - "qualifiedName": "InteractionInputCollection.toArray", - "description": "Gets all inputs in declaration order.", - "returns": "A copy of the inputs in declaration order.", - "kind": "InstanceMethod", - "signature": "toArray(): InteractionInput[]", + "name": "services", + "capabilityId": "Aspire.Hosting/InputsDialogValidationContext.services", + "qualifiedName": "InputsDialogValidationContext.services", + "description": "Gets the service provider for resolving services during validation.", + "kind": "PropertyGetter", + "signature": "services(): IServiceProvider", "parameters": [], - "returnType": "InteractionInput[]", - "targetTypeId": "Aspire.Hosting/Aspire.Hosting.InteractionInputCollection", + "returnType": "IServiceProvider", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.InputsDialogValidationContext", "expandedTargetTypes": [ - "Aspire.Hosting.InteractionInputCollection" + "Aspire.Hosting.InputsDialogValidationContext" ] }, { - "name": "isDevelopment", - "capabilityId": "Aspire.Hosting/isDevelopment", - "qualifiedName": "isDevelopment", - "description": "Checks if the environment is Development.", - "returns": "True if running in Development environment.", - "kind": "Method", - "signature": "isDevelopment(): boolean", + "name": "canceled", + "capabilityId": "Aspire.Hosting.Ats/InputsInteractionResult.canceled", + "qualifiedName": "InputsInteractionResult.canceled", + "description": "Gets a value indicating whether the interaction was canceled by the user.", + "kind": "PropertyGetter", + "signature": "canceled(): boolean", "parameters": [], "returnType": "boolean", - "targetTypeId": "Microsoft.Extensions.Hosting.Abstractions/Microsoft.Extensions.Hosting.IHostEnvironment", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.Ats.InputsInteractionResult", "expandedTargetTypes": [ - "Microsoft.Extensions.Hosting.IHostEnvironment" + "Aspire.Hosting.Ats.InputsInteractionResult" ] }, { - "name": "isEnvironment", - "capabilityId": "Aspire.Hosting/isEnvironment", - "qualifiedName": "isEnvironment", - "description": "Checks if the environment matches the specified name.", - "returns": "True if the environment matches the specified name.", - "kind": "Method", - "signature": "isEnvironment(environmentName: string): boolean", + "name": "inputs", + "capabilityId": "Aspire.Hosting.Ats/InputsInteractionResult.inputs", + "qualifiedName": "InputsInteractionResult.inputs", + "description": "Gets the inputs returned from the interaction. Empty when `Canceled` is `true`.", + "kind": "PropertyGetter", + "signature": "inputs(): InteractionInputCollection", + "parameters": [], + "returnType": "InteractionInputCollection", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.Ats.InputsInteractionResult", + "expandedTargetTypes": [ + "Aspire.Hosting.Ats.InputsInteractionResult" + ] + }, + { + "name": "withChoiceOptions", + "capabilityId": "Aspire.Hosting.Ats/withChoiceOptions", + "qualifiedName": "InteractionInputBuilder.withChoiceOptions", + "description": "Sets the choice options for the input.", + "returns": "The same builder handle.", + "kind": "InstanceMethod", + "signature": "withChoiceOptions(choices: InteractionChoiceOption[]): InteractionInputBuilder", "parameters": [ { - "name": "environmentName", - "type": "string", - "description": "The environment name to compare against." + "name": "choices", + "type": "InteractionChoiceOption[]", + "description": "The available choices, in display order. Each option pairs a submitted value with a display label." } ], - "returnType": "boolean", - "targetTypeId": "Microsoft.Extensions.Hosting.Abstractions/Microsoft.Extensions.Hosting.IHostEnvironment", + "returnType": "InteractionInputBuilder", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.Ats.InteractionInputBuilder", "expandedTargetTypes": [ - "Microsoft.Extensions.Hosting.IHostEnvironment" + "Aspire.Hosting.Ats.InteractionInputBuilder" ] }, { - "name": "isProduction", - "capabilityId": "Aspire.Hosting/isProduction", - "qualifiedName": "isProduction", - "description": "Checks if the environment is Production.", - "returns": "True if running in Production environment.", - "kind": "Method", - "signature": "isProduction(): boolean", - "parameters": [], - "returnType": "boolean", - "targetTypeId": "Microsoft.Extensions.Hosting.Abstractions/Microsoft.Extensions.Hosting.IHostEnvironment", + "name": "withDynamicLoading", + "capabilityId": "Aspire.Hosting.Ats/withDynamicLoading", + "qualifiedName": "InteractionInputBuilder.withDynamicLoading", + "description": "Attaches a callback that dynamically loads or updates the input after the prompt starts.", + "returns": "The same builder handle.", + "kind": "InstanceMethod", + "signature": "withDynamicLoading(callback: (arg: InteractionInputLoadContext) => Promise, options?: DynamicLoadingOptions): InteractionInputBuilder", + "parameters": [ + { + "name": "callback", + "type": "callback", + "isCallback": true, + "callbackSignature": "(arg: InteractionInputLoadContext) => Promise", + "description": "The callback invoked to load the input. Use the supplied context to read other inputs and update this input." + }, + { + "name": "options", + "type": "DynamicLoadingOptions", + "isOptional": true, + "description": "Optional configuration that controls when the callback runs." + } + ], + "returnType": "InteractionInputBuilder", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.Ats.InteractionInputBuilder", "expandedTargetTypes": [ - "Microsoft.Extensions.Hosting.IHostEnvironment" + "Aspire.Hosting.Ats.InteractionInputBuilder" ] }, { - "name": "isStaging", - "capabilityId": "Aspire.Hosting/isStaging", - "qualifiedName": "isStaging", - "description": "Checks if the environment is Staging.", - "returns": "True if running in Staging environment.", - "kind": "Method", - "signature": "isStaging(): boolean", - "parameters": [], - "returnType": "boolean", - "targetTypeId": "Microsoft.Extensions.Hosting.Abstractions/Microsoft.Extensions.Hosting.IHostEnvironment", + "name": "withValue", + "capabilityId": "Aspire.Hosting.Ats/withValue", + "qualifiedName": "InteractionInputBuilder.withValue", + "description": "Sets the value of the input.", + "returns": "The same builder handle.", + "kind": "InstanceMethod", + "signature": "withValue(value: string): InteractionInputBuilder", + "parameters": [ + { + "name": "value", + "type": "string", + "description": "The value to assign." + } + ], + "returnType": "InteractionInputBuilder", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.Ats.InteractionInputBuilder", "expandedTargetTypes": [ - "Microsoft.Extensions.Hosting.IHostEnvironment" + "Aspire.Hosting.Ats.InteractionInputBuilder" + ] + }, + { + "name": "toArray", + "capabilityId": "Aspire.Hosting/InteractionInputCollection.toArray", + "qualifiedName": "InteractionInputCollection.toArray", + "description": "Gets all inputs in declaration order.", + "returns": "A copy of the inputs in declaration order.", + "kind": "InstanceMethod", + "signature": "toArray(): InteractionInput[]", + "parameters": [], + "returnType": "InteractionInput[]", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.InteractionInputCollection", + "expandedTargetTypes": [ + "Aspire.Hosting.InteractionInputCollection" + ] + }, + { + "name": "input", + "capabilityId": "Aspire.Hosting.Ats/input", + "qualifiedName": "InteractionInputLoadContext.input", + "description": "Gets a handle to the input that is loading. Mutate the input through this handle.", + "remarks": "Mirrors the native `LoadInputContext.Input`: the callback updates the live input it is loading, rather than\nthe context itself. The input is a handle (not a by-value DTO) so guarded setters route back to the server-side\ninput across the ATS boundary.", + "returns": "A handle to the loading input.", + "kind": "InstanceMethod", + "signature": "input(): InteractionLoadingInput", + "parameters": [], + "returnType": "InteractionLoadingInput", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.Ats.InteractionInputLoadContext", + "expandedTargetTypes": [ + "Aspire.Hosting.Ats.InteractionInputLoadContext" + ] + }, + { + "name": "inputs", + "capabilityId": "Aspire.Hosting.Ats/InteractionInputLoadContext.inputs", + "qualifiedName": "InteractionInputLoadContext.inputs", + "description": "Gets all inputs in the prompt, including the one currently loading.", + "remarks": "Mirrors the native `LoadInputContext.AllInputs`. Use the collection's by-name accessors (for example\n`value` or `requiredValue`) to read the dependency inputs declared via\n`DependsOnInputs`. This is the same `InteractionInputCollection`\nidiom used by the validation callback and prompt results, so reading inputs by name is consistent across every\ncallback context. This is exposed as a property (rather than a method) so it routes through the generated\ncollection accessor, matching the other contexts that surface an `InteractionInputCollection`.", + "kind": "PropertyGetter", + "signature": "inputs(): InteractionInputCollection", + "parameters": [], + "returnType": "InteractionInputCollection", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.Ats.InteractionInputLoadContext", + "expandedTargetTypes": [ + "Aspire.Hosting.Ats.InteractionInputLoadContext" + ] + }, + { + "name": "getName", + "capabilityId": "Aspire.Hosting.Ats/getName", + "qualifiedName": "InteractionLoadingInput.getName", + "description": "Gets the name of the input.", + "returns": "The input name.", + "kind": "InstanceMethod", + "signature": "getName(): string", + "parameters": [], + "returnType": "string", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.Ats.InteractionLoadingInput", + "expandedTargetTypes": [ + "Aspire.Hosting.Ats.InteractionLoadingInput" + ] + }, + { + "name": "setChoiceOptions", + "capabilityId": "Aspire.Hosting.Ats/setChoiceOptions", + "qualifiedName": "InteractionLoadingInput.setChoiceOptions", + "description": "Sets the choice options for the input.", + "kind": "InstanceMethod", + "signature": "setChoiceOptions(choices: InteractionChoiceOption[]): void", + "parameters": [ + { + "name": "choices", + "type": "InteractionChoiceOption[]", + "description": "The available choices, in display order. Each option pairs a submitted value with a display label." + } + ], + "returnType": "void", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.Ats.InteractionLoadingInput", + "expandedTargetTypes": [ + "Aspire.Hosting.Ats.InteractionLoadingInput" + ] + }, + { + "name": "setValue", + "capabilityId": "Aspire.Hosting.Ats/setValue", + "qualifiedName": "InteractionLoadingInput.setValue", + "description": "Sets the value of the input.", + "kind": "InstanceMethod", + "signature": "setValue(value: string): void", + "parameters": [ + { + "name": "value", + "type": "string", + "description": "The value to assign." + } + ], + "returnType": "void", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.Ats.InteractionLoadingInput", + "expandedTargetTypes": [ + "Aspire.Hosting.Ats.InteractionLoadingInput" + ] + }, + { + "name": "isAvailable", + "capabilityId": "Aspire.Hosting/isAvailable", + "qualifiedName": "isAvailable", + "description": "Gets a value indicating whether the interaction service is available to prompt the user.", + "returns": "`true` when the service can prompt the user; otherwise `false`.", + "kind": "Method", + "signature": "isAvailable(): boolean", + "parameters": [], + "returnType": "boolean", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.IInteractionService", + "expandedTargetTypes": [ + "Aspire.Hosting.IInteractionService" + ] + }, + { + "name": "isDevelopment", + "capabilityId": "Aspire.Hosting/isDevelopment", + "qualifiedName": "isDevelopment", + "description": "Checks if the environment is Development.", + "returns": "True if running in Development environment.", + "kind": "Method", + "signature": "isDevelopment(): boolean", + "parameters": [], + "returnType": "boolean", + "targetTypeId": "Microsoft.Extensions.Hosting.Abstractions/Microsoft.Extensions.Hosting.IHostEnvironment", + "expandedTargetTypes": [ + "Microsoft.Extensions.Hosting.IHostEnvironment" + ] + }, + { + "name": "isEnvironment", + "capabilityId": "Aspire.Hosting/isEnvironment", + "qualifiedName": "isEnvironment", + "description": "Checks if the environment matches the specified name.", + "returns": "True if the environment matches the specified name.", + "kind": "Method", + "signature": "isEnvironment(environmentName: string): boolean", + "parameters": [ + { + "name": "environmentName", + "type": "string", + "description": "The environment name to compare against." + } + ], + "returnType": "boolean", + "targetTypeId": "Microsoft.Extensions.Hosting.Abstractions/Microsoft.Extensions.Hosting.IHostEnvironment", + "expandedTargetTypes": [ + "Microsoft.Extensions.Hosting.IHostEnvironment" + ] + }, + { + "name": "isProduction", + "capabilityId": "Aspire.Hosting/isProduction", + "qualifiedName": "isProduction", + "description": "Checks if the environment is Production.", + "returns": "True if running in Production environment.", + "kind": "Method", + "signature": "isProduction(): boolean", + "parameters": [], + "returnType": "boolean", + "targetTypeId": "Microsoft.Extensions.Hosting.Abstractions/Microsoft.Extensions.Hosting.IHostEnvironment", + "expandedTargetTypes": [ + "Microsoft.Extensions.Hosting.IHostEnvironment" + ] + }, + { + "name": "isStaging", + "capabilityId": "Aspire.Hosting/isStaging", + "qualifiedName": "isStaging", + "description": "Checks if the environment is Staging.", + "returns": "True if running in Staging environment.", + "kind": "Method", + "signature": "isStaging(): boolean", + "parameters": [], + "returnType": "boolean", + "targetTypeId": "Microsoft.Extensions.Hosting.Abstractions/Microsoft.Extensions.Hosting.IHostEnvironment", + "expandedTargetTypes": [ + "Microsoft.Extensions.Hosting.IHostEnvironment" ] }, { @@ -4962,6 +6116,20 @@ "Aspire.Hosting.Pipelines.PipelineSummary" ] }, + { + "name": "cancellationToken", + "capabilityId": "Aspire.Hosting/ProgressContext.cancellationToken", + "qualifiedName": "ProgressContext.cancellationToken", + "description": "Gets the `CancellationToken` that is triggered when the user clicks the cancel button or the operation is externally canceled.", + "kind": "PropertyGetter", + "signature": "cancellationToken(): cancellationToken", + "parameters": [], + "returnType": "cancellationToken", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ProgressContext", + "expandedTargetTypes": [ + "Aspire.Hosting.ProgressContext" + ] + }, { "name": "excludeKestrelEndpoints", "capabilityId": "Aspire.Hosting/ProjectResourceOptions.excludeKestrelEndpoints", @@ -5062,121 +6230,329 @@ ] }, { - "name": "publishAsConnectionString", - "capabilityId": "Aspire.Hosting/publishAsConnectionString", - "qualifiedName": "publishAsConnectionString", - "description": "Changes the resource to be published as a connection string reference in the manifest.", - "returns": "The resource builder.", - "kind": "Method", - "signature": "publishAsConnectionString(): ContainerResource", - "parameters": [], - "returnType": "ContainerResource", - "returnsBuilder": true, - "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.ContainerResource", - "expandedTargetTypes": [ - "Aspire.Hosting.ApplicationModel.ContainerResource" - ] - }, - { - "name": "publishAsContainer", - "capabilityId": "Aspire.Hosting/publishAsContainer", - "qualifiedName": "publishAsContainer", - "description": "Changes the resource to be published as a container in the manifest.", - "returns": "The resource builder.", - "kind": "Method", - "signature": "publishAsContainer(): ContainerResource", - "parameters": [], - "returnType": "ContainerResource", - "returnsBuilder": true, - "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.ContainerResource", - "expandedTargetTypes": [ - "Aspire.Hosting.ApplicationModel.ContainerResource" - ] - }, - { - "name": "publishAsDockerFile", - "capabilityId": "Aspire.Hosting/publishAsDockerFile", - "qualifiedName": "publishAsDockerFile", - "description": "Publishes an executable as a Docker file", - "remarks": "When the executable resource is converted to a container resource, the arguments to the executable\nare not used. This is because arguments to the executable often contain physical paths that are not valid\nin the container. The container can be set up with the correct arguments using the `configure` action.", - "returns": "The resource builder.", + "name": "promptConfirmation", + "capabilityId": "Aspire.Hosting/promptConfirmation", + "qualifiedName": "promptConfirmation", + "description": "Prompts the user for confirmation with an OK/Cancel dialog.", "kind": "Method", - "signature": "publishAsDockerFile(configure: (obj: ContainerResource) => Promise): ExecutableResource", + "signature": "promptConfirmation(title: string, message: string, options?: InteractionMessageBoxOptions, cancellationToken?: cancellationToken): BoolInteractionResult", "parameters": [ { - "name": "configure", - "type": "callback", - "isCallback": true, - "callbackSignature": "(obj: ContainerResource) => Promise", - "description": "Optional action to configure the container resource" - } - ], - "returnType": "ExecutableResource", - "returnsBuilder": true, - "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.ExecutableResource", - "expandedTargetTypes": [ - "Aspire.Hosting.ApplicationModel.ExecutableResource", - "Aspire.Hosting.ApplicationModel.DotnetToolResource" - ] - }, - { - "name": "publishAsDockerFile", - "capabilityId": "Aspire.Hosting/publishProjectAsDockerFileWithConfigure", - "qualifiedName": "publishAsDockerFile", - "description": "Publishes a project as a Docker file with optional container configuration", - "remarks": "When the executable resource is converted to a container resource, the arguments to the executable\nare not used. This is because arguments to the project often contain physical paths that are not valid\nin the container. The container can be set up with the correct arguments using the `configure` action.", - "returns": "The resource builder.", - "kind": "Method", - "signature": "publishAsDockerFile(configure?: (obj: ContainerResource) => Promise): ProjectResource", - "parameters": [ + "name": "title", + "type": "string" + }, { - "name": "configure", - "type": "callback", - "isOptional": true, - "isCallback": true, - "callbackSignature": "(obj: ContainerResource) => Promise", - "description": "Optional action to configure the container resource" + "name": "message", + "type": "string" + }, + { + "name": "options", + "type": "InteractionMessageBoxOptions", + "isOptional": true + }, + { + "name": "cancellationToken", + "type": "cancellationToken", + "isOptional": true } ], - "returnType": "ProjectResource", - "returnsBuilder": true, - "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.ProjectResource", + "returnType": "BoolInteractionResult", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.IInteractionService", "expandedTargetTypes": [ - "Aspire.Hosting.ApplicationModel.ProjectResource", - "Aspire.Hosting.ApplicationModel.CSharpAppResource" + "Aspire.Hosting.IInteractionService" ] }, { - "name": "publishResourceUpdate", - "capabilityId": "Aspire.Hosting/publishResourceUpdate", - "qualifiedName": "publishResourceUpdate", - "description": "Publishes an update for a resource's state.", + "name": "promptInput", + "capabilityId": "Aspire.Hosting/promptInput", + "qualifiedName": "promptInput", + "description": "Prompts the user for a single input.", "kind": "Method", - "signature": "publishResourceUpdate(resource: IResource, state?: string, stateStyle?: string): void", + "signature": "promptInput(title: string, message: string, input: InteractionInputBuilder, options?: InteractionInputsDialogOptions, cancellationToken?: cancellationToken): InputInteractionResult", "parameters": [ { - "name": "resource", - "type": "IResource" + "name": "title", + "type": "string" }, { - "name": "state", - "type": "string", + "name": "message", + "type": "string" + }, + { + "name": "input", + "type": "InteractionInputBuilder" + }, + { + "name": "options", + "type": "InteractionInputsDialogOptions", "isOptional": true }, { - "name": "stateStyle", - "type": "string", + "name": "cancellationToken", + "type": "cancellationToken", "isOptional": true } ], - "returnType": "void", - "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.ResourceNotificationService", + "returnType": "InputInteractionResult", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.IInteractionService", "expandedTargetTypes": [ - "Aspire.Hosting.ApplicationModel.ResourceNotificationService" + "Aspire.Hosting.IInteractionService" ] }, { - "name": "publishWithContainerFiles", + "name": "promptInputs", + "capabilityId": "Aspire.Hosting/promptInputs", + "qualifiedName": "promptInputs", + "description": "Prompts the user for multiple inputs.", + "kind": "Method", + "signature": "promptInputs(title: string, message: string, inputs: InteractionInputBuilder[], options?: InteractionInputsDialogOptions, cancellationToken?: cancellationToken): InputsInteractionResult", + "parameters": [ + { + "name": "title", + "type": "string" + }, + { + "name": "message", + "type": "string" + }, + { + "name": "inputs", + "type": "InteractionInputBuilder[]" + }, + { + "name": "options", + "type": "InteractionInputsDialogOptions", + "isOptional": true + }, + { + "name": "cancellationToken", + "type": "cancellationToken", + "isOptional": true + } + ], + "returnType": "InputsInteractionResult", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.IInteractionService", + "expandedTargetTypes": [ + "Aspire.Hosting.IInteractionService" + ] + }, + { + "name": "promptMessageBox", + "capabilityId": "Aspire.Hosting/promptMessageBox", + "qualifiedName": "promptMessageBox", + "description": "Prompts the user with a message box dialog.", + "kind": "Method", + "signature": "promptMessageBox(title: string, message: string, options?: InteractionMessageBoxOptions, cancellationToken?: cancellationToken): BoolInteractionResult", + "parameters": [ + { + "name": "title", + "type": "string" + }, + { + "name": "message", + "type": "string" + }, + { + "name": "options", + "type": "InteractionMessageBoxOptions", + "isOptional": true + }, + { + "name": "cancellationToken", + "type": "cancellationToken", + "isOptional": true + } + ], + "returnType": "BoolInteractionResult", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.IInteractionService", + "expandedTargetTypes": [ + "Aspire.Hosting.IInteractionService" + ] + }, + { + "name": "promptNotification", + "capabilityId": "Aspire.Hosting/promptNotification", + "qualifiedName": "promptNotification", + "description": "Prompts the user with a notification.", + "kind": "Method", + "signature": "promptNotification(title: string, message: string, options?: InteractionNotificationOptions, cancellationToken?: cancellationToken): BoolInteractionResult", + "parameters": [ + { + "name": "title", + "type": "string" + }, + { + "name": "message", + "type": "string" + }, + { + "name": "options", + "type": "InteractionNotificationOptions", + "isOptional": true + }, + { + "name": "cancellationToken", + "type": "cancellationToken", + "isOptional": true + } + ], + "returnType": "BoolInteractionResult", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.IInteractionService", + "expandedTargetTypes": [ + "Aspire.Hosting.IInteractionService" + ] + }, + { + "name": "promptProgress", + "capabilityId": "Aspire.Hosting/promptProgress", + "qualifiedName": "promptProgress", + "description": "Displays a progress dialog with an indeterminate progress indicator.", + "kind": "Method", + "signature": "promptProgress(message: string, title?: string, options?: InteractionProgressOptions, cancellationToken?: cancellationToken): BoolInteractionResult", + "parameters": [ + { + "name": "message", + "type": "string" + }, + { + "name": "title", + "type": "string", + "isOptional": true + }, + { + "name": "options", + "type": "InteractionProgressOptions", + "isOptional": true + }, + { + "name": "cancellationToken", + "type": "cancellationToken", + "isOptional": true + } + ], + "returnType": "BoolInteractionResult", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.IInteractionService", + "expandedTargetTypes": [ + "Aspire.Hosting.IInteractionService" + ] + }, + { + "name": "publishAsConnectionString", + "capabilityId": "Aspire.Hosting/publishAsConnectionString", + "qualifiedName": "publishAsConnectionString", + "description": "Changes the resource to be published as a connection string reference in the manifest.", + "remarks": "This API only changes the manifest representation; it does not change the resource model used by other publishers.", + "returns": "The resource builder.", + "kind": "Method", + "signature": "publishAsConnectionString(): ContainerResource", + "parameters": [], + "returnType": "ContainerResource", + "returnsBuilder": true, + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.ContainerResource", + "expandedTargetTypes": [ + "Aspire.Hosting.ApplicationModel.ContainerResource" + ] + }, + { + "name": "publishAsContainer", + "capabilityId": "Aspire.Hosting/publishAsContainer", + "qualifiedName": "publishAsContainer", + "description": "Changes the resource to be published as a container in the manifest.", + "returns": "The resource builder.", + "kind": "Method", + "signature": "publishAsContainer(): ContainerResource", + "parameters": [], + "returnType": "ContainerResource", + "returnsBuilder": true, + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.ContainerResource", + "expandedTargetTypes": [ + "Aspire.Hosting.ApplicationModel.ContainerResource" + ] + }, + { + "name": "publishAsDockerFile", + "capabilityId": "Aspire.Hosting/publishAsDockerFile", + "qualifiedName": "publishAsDockerFile", + "description": "Publishes an executable as a Docker file", + "remarks": "When the executable resource is converted to a container resource, the arguments to the executable\nare not used. This is because arguments to the executable often contain physical paths that are not valid\nin the container. The container can be set up with the correct arguments using the `configure` action.", + "returns": "The resource builder.", + "kind": "Method", + "signature": "publishAsDockerFile(configure: (obj: ContainerResource) => Promise): ExecutableResource", + "parameters": [ + { + "name": "configure", + "type": "callback", + "isCallback": true, + "callbackSignature": "(obj: ContainerResource) => Promise", + "description": "Optional action to configure the container resource" + } + ], + "returnType": "ExecutableResource", + "returnsBuilder": true, + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.ExecutableResource", + "expandedTargetTypes": [ + "Aspire.Hosting.ApplicationModel.ExecutableResource", + "Aspire.Hosting.ApplicationModel.DotnetToolResource" + ] + }, + { + "name": "publishAsDockerFile", + "capabilityId": "Aspire.Hosting/publishProjectAsDockerFileWithConfigure", + "qualifiedName": "publishAsDockerFile", + "description": "Publishes a project as a Docker file with optional container configuration", + "remarks": "When the executable resource is converted to a container resource, the arguments to the executable\nare not used. This is because arguments to the project often contain physical paths that are not valid\nin the container. The container can be set up with the correct arguments using the `configure` action.", + "returns": "The resource builder.", + "kind": "Method", + "signature": "publishAsDockerFile(configure?: (obj: ContainerResource) => Promise): ProjectResource", + "parameters": [ + { + "name": "configure", + "type": "callback", + "isOptional": true, + "isCallback": true, + "callbackSignature": "(obj: ContainerResource) => Promise", + "description": "Optional action to configure the container resource" + } + ], + "returnType": "ProjectResource", + "returnsBuilder": true, + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.ProjectResource", + "expandedTargetTypes": [ + "Aspire.Hosting.ApplicationModel.ProjectResource", + "Aspire.Hosting.ApplicationModel.CSharpAppResource" + ] + }, + { + "name": "publishResourceUpdate", + "capabilityId": "Aspire.Hosting/publishResourceUpdate", + "qualifiedName": "publishResourceUpdate", + "description": "Publishes an update for a resource's state.", + "kind": "Method", + "signature": "publishResourceUpdate(resource: IResource, state?: string, stateStyle?: string): void", + "parameters": [ + { + "name": "resource", + "type": "IResource" + }, + { + "name": "state", + "type": "string", + "isOptional": true + }, + { + "name": "stateStyle", + "type": "string", + "isOptional": true + } + ], + "returnType": "void", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.ResourceNotificationService", + "expandedTargetTypes": [ + "Aspire.Hosting.ApplicationModel.ResourceNotificationService" + ] + }, + { + "name": "publishWithContainerFiles", "capabilityId": "Aspire.Hosting/publishWithContainerFilesFromResource", "qualifiedName": "publishWithContainerFiles", "description": "Configures the resource to copy container files from the specified source resource during publishing.", @@ -5323,66 +6699,172 @@ ] }, { - "name": "resource", - "capabilityId": "Aspire.Hosting.ApplicationModel/ResourceEndpointsAllocatedEvent.resource", - "qualifiedName": "ResourceEndpointsAllocatedEvent.resource", - "description": "Gets the Resource property", + "name": "cancellationToken", + "capabilityId": "Aspire.Hosting.ApplicationModel/RequiredCommandValidationContext.cancellationToken", + "qualifiedName": "RequiredCommandValidationContext.cancellationToken", + "description": "Gets a cancellation token that can be used to cancel the validation.", "kind": "PropertyGetter", - "signature": "resource(): IResource", + "signature": "cancellationToken(): cancellationToken", "parameters": [], - "returnType": "IResource", - "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.ResourceEndpointsAllocatedEvent", + "returnType": "cancellationToken", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.RequiredCommandValidationContext", "expandedTargetTypes": [ - "Aspire.Hosting.ApplicationModel.ResourceEndpointsAllocatedEvent" + "Aspire.Hosting.ApplicationModel.RequiredCommandValidationContext" ] }, { - "name": "services", - "capabilityId": "Aspire.Hosting.ApplicationModel/ResourceEndpointsAllocatedEvent.services", - "qualifiedName": "ResourceEndpointsAllocatedEvent.services", - "description": "Gets the Services property", - "kind": "PropertyGetter", - "signature": "services(): IServiceProvider", - "parameters": [], - "returnType": "IServiceProvider", - "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.ResourceEndpointsAllocatedEvent", + "name": "failure", + "capabilityId": "Aspire.Hosting.ApplicationModel/RequiredCommandValidationContext.failure", + "qualifiedName": "RequiredCommandValidationContext.failure", + "description": "Creates a failed validation result with the specified message.", + "returns": "A `RequiredCommandValidationResult` indicating the command is invalid.", + "kind": "InstanceMethod", + "signature": "failure(validationMessage: string): RequiredCommandValidationResult", + "parameters": [ + { + "name": "validationMessage", + "type": "string", + "description": "A message describing why validation failed." + } + ], + "returnType": "RequiredCommandValidationResult", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.RequiredCommandValidationContext", "expandedTargetTypes": [ - "Aspire.Hosting.ApplicationModel.ResourceEndpointsAllocatedEvent" + "Aspire.Hosting.ApplicationModel.RequiredCommandValidationContext" ] }, { - "name": "resource", - "capabilityId": "Aspire.Hosting.ApplicationModel/ResourceReadyEvent.resource", - "qualifiedName": "ResourceReadyEvent.resource", - "description": "The resource that is in a healthy state.", + "name": "resolvedPath", + "capabilityId": "Aspire.Hosting.ApplicationModel/RequiredCommandValidationContext.resolvedPath", + "qualifiedName": "RequiredCommandValidationContext.resolvedPath", + "description": "Gets the resolved full path to the command executable.", "kind": "PropertyGetter", - "signature": "resource(): IResource", + "signature": "resolvedPath(): string", "parameters": [], - "returnType": "IResource", - "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.ResourceReadyEvent", + "returnType": "string", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.RequiredCommandValidationContext", "expandedTargetTypes": [ - "Aspire.Hosting.ApplicationModel.ResourceReadyEvent" + "Aspire.Hosting.ApplicationModel.RequiredCommandValidationContext" ] }, { "name": "services", - "capabilityId": "Aspire.Hosting.ApplicationModel/ResourceReadyEvent.services", - "qualifiedName": "ResourceReadyEvent.services", - "description": "Gets the Services property", + "capabilityId": "Aspire.Hosting.ApplicationModel/RequiredCommandValidationContext.services", + "qualifiedName": "RequiredCommandValidationContext.services", + "description": "Gets the service provider for accessing application services.", "kind": "PropertyGetter", "signature": "services(): IServiceProvider", "parameters": [], "returnType": "IServiceProvider", - "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.ResourceReadyEvent", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.RequiredCommandValidationContext", "expandedTargetTypes": [ - "Aspire.Hosting.ApplicationModel.ResourceReadyEvent" + "Aspire.Hosting.ApplicationModel.RequiredCommandValidationContext" ] }, { - "name": "resource", - "capabilityId": "Aspire.Hosting.ApplicationModel/ResourceStoppedEvent.resource", - "qualifiedName": "ResourceStoppedEvent.resource", - "description": "Gets the Resource property", + "name": "success", + "capabilityId": "Aspire.Hosting.ApplicationModel/RequiredCommandValidationContext.success", + "qualifiedName": "RequiredCommandValidationContext.success", + "description": "Creates a successful validation result.", + "returns": "A `RequiredCommandValidationResult` indicating the command is valid.", + "kind": "InstanceMethod", + "signature": "success(): RequiredCommandValidationResult", + "parameters": [], + "returnType": "RequiredCommandValidationResult", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.RequiredCommandValidationContext", + "expandedTargetTypes": [ + "Aspire.Hosting.ApplicationModel.RequiredCommandValidationContext" + ] + }, + { + "name": "isValid", + "capabilityId": "Aspire.Hosting.ApplicationModel/RequiredCommandValidationResult.isValid", + "qualifiedName": "RequiredCommandValidationResult.isValid", + "description": "Gets a value indicating whether the command validation succeeded.", + "kind": "PropertyGetter", + "signature": "isValid(): boolean", + "parameters": [], + "returnType": "boolean", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.RequiredCommandValidationResult", + "expandedTargetTypes": [ + "Aspire.Hosting.ApplicationModel.RequiredCommandValidationResult" + ] + }, + { + "name": "validationMessage", + "capabilityId": "Aspire.Hosting.ApplicationModel/RequiredCommandValidationResult.validationMessage", + "qualifiedName": "RequiredCommandValidationResult.validationMessage", + "description": "Gets an optional validation message describing why validation failed.", + "kind": "PropertyGetter", + "signature": "validationMessage(): string", + "parameters": [], + "returnType": "string", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.RequiredCommandValidationResult", + "expandedTargetTypes": [ + "Aspire.Hosting.ApplicationModel.RequiredCommandValidationResult" + ] + }, + { + "name": "resource", + "capabilityId": "Aspire.Hosting.ApplicationModel/ResourceEndpointsAllocatedEvent.resource", + "qualifiedName": "ResourceEndpointsAllocatedEvent.resource", + "description": "Gets the Resource property", + "kind": "PropertyGetter", + "signature": "resource(): IResource", + "parameters": [], + "returnType": "IResource", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.ResourceEndpointsAllocatedEvent", + "expandedTargetTypes": [ + "Aspire.Hosting.ApplicationModel.ResourceEndpointsAllocatedEvent" + ] + }, + { + "name": "services", + "capabilityId": "Aspire.Hosting.ApplicationModel/ResourceEndpointsAllocatedEvent.services", + "qualifiedName": "ResourceEndpointsAllocatedEvent.services", + "description": "Gets the Services property", + "kind": "PropertyGetter", + "signature": "services(): IServiceProvider", + "parameters": [], + "returnType": "IServiceProvider", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.ResourceEndpointsAllocatedEvent", + "expandedTargetTypes": [ + "Aspire.Hosting.ApplicationModel.ResourceEndpointsAllocatedEvent" + ] + }, + { + "name": "resource", + "capabilityId": "Aspire.Hosting.ApplicationModel/ResourceReadyEvent.resource", + "qualifiedName": "ResourceReadyEvent.resource", + "description": "The resource that is in a healthy state.", + "kind": "PropertyGetter", + "signature": "resource(): IResource", + "parameters": [], + "returnType": "IResource", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.ResourceReadyEvent", + "expandedTargetTypes": [ + "Aspire.Hosting.ApplicationModel.ResourceReadyEvent" + ] + }, + { + "name": "services", + "capabilityId": "Aspire.Hosting.ApplicationModel/ResourceReadyEvent.services", + "qualifiedName": "ResourceReadyEvent.services", + "description": "Gets the Services property", + "kind": "PropertyGetter", + "signature": "services(): IServiceProvider", + "parameters": [], + "returnType": "IServiceProvider", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.ResourceReadyEvent", + "expandedTargetTypes": [ + "Aspire.Hosting.ApplicationModel.ResourceReadyEvent" + ] + }, + { + "name": "resource", + "capabilityId": "Aspire.Hosting.ApplicationModel/ResourceStoppedEvent.resource", + "qualifiedName": "ResourceStoppedEvent.resource", + "description": "Gets the Resource property", "kind": "PropertyGetter", "signature": "resource(): IResource", "parameters": [], @@ -5718,6 +7200,38 @@ "Aspire.Hosting.IDistributedApplicationBuilder" ] }, + { + "name": "subscribeHttpsEndpointsUpdate", + "capabilityId": "Aspire.Hosting/subscribeHttpsEndpointsUpdate", + "qualifiedName": "subscribeHttpsEndpointsUpdate", + "description": "Subscribes to the `BeforeStartEvent` and invokes the specified callback when an HTTPS certificate is determined to be available for the resource. This is used to conditionally update endpoint URI schemes or perform other HTTPS-related configuration at startup.", + "remarks": "The callback is invoked when either:\n-\n-\nSwitch an endpoint to HTTPS when a certificate is available:\n```\nbuilder.SubscribeHttpsEndpointsUpdate(ctx =>\n{\nbuilder.WithEndpoint(\"http\", ep => ep.UriScheme = \"https\");\n});\n```", + "returns": "The updated resource builder.", + "kind": "Method", + "signature": "subscribeHttpsEndpointsUpdate(callback: (obj: HttpsEndpointUpdateCallbackContext) => Promise): IResource", + "parameters": [ + { + "name": "callback", + "type": "callback", + "isCallback": true, + "callbackSignature": "(obj: HttpsEndpointUpdateCallbackContext) => Promise", + "description": "The callback to invoke when HTTPS is enabled. Receives an `HttpsEndpointUpdateCallbackContext` providing access to the service provider, resource, and application model." + } + ], + "returnType": "IResource", + "returnsBuilder": true, + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.IResource", + "expandedTargetTypes": [ + "Aspire.Hosting.ApplicationModel.ContainerResource", + "Aspire.Hosting.ApplicationModel.ExecutableResource", + "Aspire.Hosting.ApplicationModel.ProjectResource", + "Aspire.Hosting.ApplicationModel.ParameterResource", + "Aspire.Hosting.ApplicationModel.ContainerRegistryResource", + "Aspire.Hosting.ApplicationModel.DotnetToolResource", + "Aspire.Hosting.ExternalServiceResource", + "Aspire.Hosting.ApplicationModel.CSharpAppResource" + ] + }, { "name": "tryAddEventingSubscriber", "capabilityId": "Aspire.Hosting/tryAddEventingSubscriber", @@ -5773,6 +7287,20 @@ "Aspire.Hosting.ApplicationModel.UpdateCommandStateContext" ] }, + { + "name": "services", + "capabilityId": "Aspire.Hosting.ApplicationModel/UpdateCommandStateContext.services", + "qualifiedName": "UpdateCommandStateContext.services", + "description": "The service provider.", + "kind": "PropertyGetter", + "signature": "services(): IServiceProvider", + "parameters": [], + "returnType": "IServiceProvider", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.UpdateCommandStateContext", + "expandedTargetTypes": [ + "Aspire.Hosting.ApplicationModel.UpdateCommandStateContext" + ] + }, { "name": "updateTask", "capabilityId": "Aspire.Hosting/updateTask", @@ -6356,6 +7884,37 @@ "Aspire.Hosting.ApplicationModel.IResourceWithConnectionString" ] }, + { + "name": "withContainerBuildOptions", + "capabilityId": "Aspire.Hosting/withContainerBuildOptions", + "qualifiedName": "withContainerBuildOptions", + "description": "Configures container build options for a compute resource using an async callback.", + "returns": "A reference to the `IResourceBuilder`1`.", + "kind": "Method", + "signature": "withContainerBuildOptions(callback: (arg: ContainerBuildOptionsCallbackContext) => Promise): IResource", + "parameters": [ + { + "name": "callback", + "type": "callback", + "isCallback": true, + "callbackSignature": "(arg: ContainerBuildOptionsCallbackContext) => Promise", + "description": "An async callback to configure container build options." + } + ], + "returnType": "IResource", + "returnsBuilder": true, + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.IResource", + "expandedTargetTypes": [ + "Aspire.Hosting.ApplicationModel.ContainerResource", + "Aspire.Hosting.ApplicationModel.ExecutableResource", + "Aspire.Hosting.ApplicationModel.ProjectResource", + "Aspire.Hosting.ApplicationModel.ParameterResource", + "Aspire.Hosting.ApplicationModel.ContainerRegistryResource", + "Aspire.Hosting.ApplicationModel.DotnetToolResource", + "Aspire.Hosting.ExternalServiceResource", + "Aspire.Hosting.ApplicationModel.CSharpAppResource" + ] + }, { "name": "withContainerCertificatePaths", "capabilityId": "Aspire.Hosting/withContainerCertificatePaths", @@ -6391,6 +7950,75 @@ "Aspire.Hosting.ApplicationModel.ContainerResource" ] }, + { + "name": "withContainerFiles", + "capabilityId": "Aspire.Hosting/withContainerFiles", + "qualifiedName": "withContainerFiles", + "description": "Creates or updates files and folders in a container by copying them from a source path on the host.", + "remarks": "In run mode, Aspire copies the files into the container and applies owner, group, and umask options.\nIn publish mode, Aspire creates a read-only bind mount and ignores those options.\nTo produce entries dynamically (including inline file contents and OpenSSL certificate files), polyglot AppHosts\nuse the `withContainerFilesCallback` overload and build the entries via the factory methods on\n`ContainerFileSystemCallbackContext`. Passing a pre-built `ContainerFileSystemItem` collection\nremains .NET-only.", + "returns": "The resource builder.", + "kind": "Method", + "signature": "withContainerFiles(destinationPath: string, sourcePath: string, options?: ContainerFilesOptions): ContainerResource", + "parameters": [ + { + "name": "destinationPath", + "type": "string", + "description": "The destination absolute path in the container." + }, + { + "name": "sourcePath", + "type": "string", + "description": "The source path on the host to copy files from." + }, + { + "name": "options", + "type": "ContainerFilesOptions", + "isOptional": true, + "description": "Options for the created or updated file system entries." + } + ], + "returnType": "ContainerResource", + "returnsBuilder": true, + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.ContainerResource", + "expandedTargetTypes": [ + "Aspire.Hosting.ApplicationModel.ContainerResource" + ] + }, + { + "name": "withContainerFilesCallback", + "capabilityId": "Aspire.Hosting/withContainerFilesCallback", + "qualifiedName": "withContainerFilesCallback", + "description": "Creates or updates files and/or folders at the destination path in the container using entries produced by a callback.", + "returns": "The resource builder.", + "kind": "Method", + "signature": "withContainerFilesCallback(destinationPath: string, callback: (arg1: ContainerFileSystemCallbackContext, arg2: cancellationToken) => Promise, options?: ContainerFilesOptions): ContainerResource", + "parameters": [ + { + "name": "destinationPath", + "type": "string", + "description": "The destination absolute path in the container." + }, + { + "name": "callback", + "type": "callback", + "isCallback": true, + "callbackSignature": "(arg1: ContainerFileSystemCallbackContext, arg2: cancellationToken) => Promise", + "description": "A callback that returns the file system entries to create or update. Use the factory methods on `ContainerFileSystemCallbackContext` (createFile, createDirectory, createCertificateFile) to build the entries." + }, + { + "name": "options", + "type": "ContainerFilesOptions", + "isOptional": true, + "description": "Options for the created or updated file system entries." + } + ], + "returnType": "ContainerResource", + "returnsBuilder": true, + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.ContainerResource", + "expandedTargetTypes": [ + "Aspire.Hosting.ApplicationModel.ContainerResource" + ] + }, { "name": "withContainerFilesSource", "capabilityId": "Aspire.Hosting/withContainerFilesSource", @@ -6869,6 +8497,29 @@ "Aspire.Hosting.ApplicationModel.CSharpAppResource" ] }, + { + "name": "withEndpointsInEnvironment", + "capabilityId": "Aspire.Hosting/withEndpointsInEnvironment", + "qualifiedName": "withEndpointsInEnvironment", + "description": "Includes only the specified project endpoint names in environment-variable injection.", + "returns": "The same project resource builder handle for chaining.", + "kind": "Method", + "signature": "withEndpointsInEnvironment(endpointNames: string[]): ProjectResource", + "parameters": [ + { + "name": "endpointNames", + "type": "string[]", + "description": "The endpoint names to include in environment variables." + } + ], + "returnType": "ProjectResource", + "returnsBuilder": true, + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.ProjectResource", + "expandedTargetTypes": [ + "Aspire.Hosting.ApplicationModel.ProjectResource", + "Aspire.Hosting.ApplicationModel.CSharpAppResource" + ] + }, { "name": "withEntrypoint", "capabilityId": "Aspire.Hosting/withEntrypoint", @@ -7403,6 +9054,35 @@ "Aspire.Hosting.ApplicationModel.IExecutionConfigurationBuilder" ] }, + { + "name": "withHttpsCertificateConfiguration", + "capabilityId": "Aspire.Hosting/withHttpsCertificateConfiguration", + "qualifiedName": "withHttpsCertificateConfiguration", + "description": "Adds a callback that allows configuring the resource to use a specific HTTPS/TLS certificate key pair for server authentication.", + "remarks": "Pass the path to the PFX certificate file to the container arguments.\n```\nbuilder.AddContainer(\"my-service\", \"my-image\")\n.WithHttpsCertificateConfiguration(ctx =>\n{\nctx.Arguments.Add(\"--https-certificate-path\");\nctx.Arguments.Add(ctx.PfxPath);\nreturn Task.CompletedTask;\n});\n```", + "returns": "The updated resource builder.", + "kind": "Method", + "signature": "withHttpsCertificateConfiguration(callback: (arg: HttpsCertificateConfigurationCallbackAnnotationContext) => Promise): IResourceWithEnvironment", + "parameters": [ + { + "name": "callback", + "type": "callback", + "isCallback": true, + "callbackSignature": "(arg: HttpsCertificateConfigurationCallbackAnnotationContext) => Promise", + "description": "The callback to configure the resource to use a certificate key pair." + } + ], + "returnType": "IResourceWithEnvironment", + "returnsBuilder": true, + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.IResourceWithEnvironment", + "expandedTargetTypes": [ + "Aspire.Hosting.ApplicationModel.ContainerResource", + "Aspire.Hosting.ApplicationModel.ExecutableResource", + "Aspire.Hosting.ApplicationModel.ProjectResource", + "Aspire.Hosting.ApplicationModel.DotnetToolResource", + "Aspire.Hosting.ApplicationModel.CSharpAppResource" + ] + }, { "name": "withHttpsDeveloperCertificate", "capabilityId": "Aspire.Hosting/withParameterHttpsDeveloperCertificate", @@ -8301,6 +9981,49 @@ "Aspire.Hosting.ApplicationModel.CSharpAppResource" ] }, + { + "name": "withRequiredCommandValidation", + "capabilityId": "Aspire.Hosting/withRequiredCommandValidation", + "qualifiedName": "withRequiredCommandValidation", + "description": "Declares that a resource requires a specific command/executable to be available on the local machine PATH before it can start, with custom validation logic.", + "remarks": "The command is first resolved to a full path. If found, the validation callback is invoked with the context containing the resolved path and service provider.\nThe callback should return a `RequiredCommandValidationResult` indicating whether the command is valid,\nwhich can be created via `Success` or `Failure`.\nIf the command is not found or fails validation, a warning message will be logged but the resource will be allowed to attempt to start.", + "returns": "The resource builder.", + "kind": "Method", + "signature": "withRequiredCommandValidation(command: string, validationCallback: (arg: RequiredCommandValidationContext) => Promise, helpLink?: string): IResource", + "parameters": [ + { + "name": "command", + "type": "string", + "description": "The command string (file name or path) that should be validated." + }, + { + "name": "validationCallback", + "type": "callback", + "isCallback": true, + "callbackSignature": "(arg: RequiredCommandValidationContext) => Promise", + "description": "A callback that validates the resolved command path. Receives a `RequiredCommandValidationContext` and returns a `RequiredCommandValidationResult`." + }, + { + "name": "helpLink", + "type": "string", + "isOptional": true, + "description": "An optional help link URL to guide users when the command is missing or fails validation." + } + ], + "returnType": "IResource", + "returnsBuilder": true, + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.IResource", + "expandedTargetTypes": [ + "Aspire.Hosting.ApplicationModel.ContainerResource", + "Aspire.Hosting.ApplicationModel.ExecutableResource", + "Aspire.Hosting.ApplicationModel.ProjectResource", + "Aspire.Hosting.ApplicationModel.ParameterResource", + "Aspire.Hosting.ApplicationModel.ContainerRegistryResource", + "Aspire.Hosting.ApplicationModel.DotnetToolResource", + "Aspire.Hosting.ExternalServiceResource", + "Aspire.Hosting.ApplicationModel.CSharpAppResource" + ] + }, { "name": "withSessionLifetime", "capabilityId": "Aspire.Hosting/withSessionLifetime", @@ -8324,6 +10047,28 @@ "Aspire.Hosting.ApplicationModel.CSharpAppResource" ] }, + { + "name": "withTerminal", + "capabilityId": "Aspire.Hosting/withTerminal", + "qualifiedName": "withTerminal", + "description": "Adds an interactive terminal session to a resource using the default terminal options.", + "kind": "Method", + "signature": "withTerminal(): IResource", + "parameters": [], + "returnType": "IResource", + "returnsBuilder": true, + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.IResource", + "expandedTargetTypes": [ + "Aspire.Hosting.ApplicationModel.ContainerResource", + "Aspire.Hosting.ApplicationModel.ExecutableResource", + "Aspire.Hosting.ApplicationModel.ProjectResource", + "Aspire.Hosting.ApplicationModel.ParameterResource", + "Aspire.Hosting.ApplicationModel.ContainerRegistryResource", + "Aspire.Hosting.ApplicationModel.DotnetToolResource", + "Aspire.Hosting.ExternalServiceResource", + "Aspire.Hosting.ApplicationModel.CSharpAppResource" + ] + }, { "name": "withToolIgnoreExistingFeeds", "capabilityId": "Aspire.Hosting/withToolIgnoreExistingFeeds", @@ -8884,694 +10629,829 @@ ] }, { - "name": "ContainerImagePushOptions", - "fullName": "Aspire.Hosting.ApplicationModel.ContainerImagePushOptions", + "name": "ContainerBuildOptionsCallbackContext", + "fullName": "Aspire.Hosting.ApplicationModel.ContainerBuildOptionsCallbackContext", "kind": "handle", "exposeProperties": true, - "description": "Represents options for pushing container images to a registry.", - "remarks": "This class allows customization of how container images are named and tagged when pushed to a container registry.\nThe `RemoteImageName` specifies the repository path (without registry endpoint or tag),\nand `RemoteImageTag` specifies the tag to apply. Use `GetFullRemoteImageNameAsync`\nto construct the complete image reference including registry endpoint and tag.", + "description": "Context for configuring container build options via a callback.", "implementedInterfaces": [], "baseTypeHierarchy": [], "capabilities": [ { - "name": "remoteImageName", - "capabilityId": "Aspire.Hosting.ApplicationModel/ContainerImagePushOptions.remoteImageName", - "qualifiedName": "ContainerImagePushOptions.remoteImageName", - "description": "Gets or sets the remote image name (repository path without registry endpoint or tag).", + "name": "cancellationToken", + "capabilityId": "Aspire.Hosting.ApplicationModel/ContainerBuildOptionsCallbackContext.cancellationToken", + "qualifiedName": "ContainerBuildOptionsCallbackContext.cancellationToken", + "description": "Gets the cancellation token.", "kind": "PropertyGetter", - "signature": "remoteImageName(): string", + "signature": "cancellationToken(): cancellationToken", + "parameters": [], + "returnType": "cancellationToken", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.ContainerBuildOptionsCallbackContext", + "expandedTargetTypes": [ + "Aspire.Hosting.ApplicationModel.ContainerBuildOptionsCallbackContext" + ] + }, + { + "name": "destination", + "capabilityId": "Aspire.Hosting.ApplicationModel/ContainerBuildOptionsCallbackContext.destination", + "qualifiedName": "ContainerBuildOptionsCallbackContext.destination", + "description": "Gets or sets the destination for the container image.", + "kind": "PropertyGetter", + "signature": "destination(): ContainerImageDestination", + "parameters": [], + "returnType": "ContainerImageDestination", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.ContainerBuildOptionsCallbackContext", + "expandedTargetTypes": [ + "Aspire.Hosting.ApplicationModel.ContainerBuildOptionsCallbackContext" + ] + }, + { + "name": "executionContext", + "capabilityId": "Aspire.Hosting.ApplicationModel/ContainerBuildOptionsCallbackContext.executionContext", + "qualifiedName": "ContainerBuildOptionsCallbackContext.executionContext", + "description": "Gets the distributed application execution context.", + "remarks": "Use `IsPublishMode` or\n`IsRunMode` to vary build options\n(for example `TargetPlatform`) between local run and publish operations.", + "kind": "PropertyGetter", + "signature": "executionContext(): DistributedApplicationExecutionContext", + "parameters": [], + "returnType": "DistributedApplicationExecutionContext", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.ContainerBuildOptionsCallbackContext", + "expandedTargetTypes": [ + "Aspire.Hosting.ApplicationModel.ContainerBuildOptionsCallbackContext" + ] + }, + { + "name": "imageFormat", + "capabilityId": "Aspire.Hosting.ApplicationModel/ContainerBuildOptionsCallbackContext.imageFormat", + "qualifiedName": "ContainerBuildOptionsCallbackContext.imageFormat", + "description": "Gets or sets the container image format.", + "kind": "PropertyGetter", + "signature": "imageFormat(): ContainerImageFormat", + "parameters": [], + "returnType": "ContainerImageFormat", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.ContainerBuildOptionsCallbackContext", + "expandedTargetTypes": [ + "Aspire.Hosting.ApplicationModel.ContainerBuildOptionsCallbackContext" + ] + }, + { + "name": "localImageName", + "capabilityId": "Aspire.Hosting.ApplicationModel/ContainerBuildOptionsCallbackContext.localImageName", + "qualifiedName": "ContainerBuildOptionsCallbackContext.localImageName", + "description": "Gets or sets the local image name for the built container.", + "kind": "PropertyGetter", + "signature": "localImageName(): string", "parameters": [], "returnType": "string", - "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.ContainerImagePushOptions", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.ContainerBuildOptionsCallbackContext", "expandedTargetTypes": [ - "Aspire.Hosting.ApplicationModel.ContainerImagePushOptions" + "Aspire.Hosting.ApplicationModel.ContainerBuildOptionsCallbackContext" ] }, { - "name": "remoteImageTag", - "capabilityId": "Aspire.Hosting.ApplicationModel/ContainerImagePushOptions.remoteImageTag", - "qualifiedName": "ContainerImagePushOptions.remoteImageTag", - "description": "Gets or sets the remote image tag.", + "name": "localImageTag", + "capabilityId": "Aspire.Hosting.ApplicationModel/ContainerBuildOptionsCallbackContext.localImageTag", + "qualifiedName": "ContainerBuildOptionsCallbackContext.localImageTag", + "description": "Gets or sets the local image tag for the built container.", "kind": "PropertyGetter", - "signature": "remoteImageTag(): string", + "signature": "localImageTag(): string", "parameters": [], "returnType": "string", - "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.ContainerImagePushOptions", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.ContainerBuildOptionsCallbackContext", "expandedTargetTypes": [ - "Aspire.Hosting.ApplicationModel.ContainerImagePushOptions" + "Aspire.Hosting.ApplicationModel.ContainerBuildOptionsCallbackContext" ] }, { - "name": "setRemoteImageName", - "capabilityId": "Aspire.Hosting.ApplicationModel/ContainerImagePushOptions.setRemoteImageName", - "qualifiedName": "ContainerImagePushOptions.setRemoteImageName", - "description": "Gets or sets the remote image name (repository path without registry endpoint or tag).", + "name": "logger", + "capabilityId": "Aspire.Hosting.ApplicationModel/ContainerBuildOptionsCallbackContext.logger", + "qualifiedName": "ContainerBuildOptionsCallbackContext.logger", + "description": "Gets the logger instance.", + "kind": "PropertyGetter", + "signature": "logger(): ILogger", + "parameters": [], + "returnType": "ILogger", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.ContainerBuildOptionsCallbackContext", + "expandedTargetTypes": [ + "Aspire.Hosting.ApplicationModel.ContainerBuildOptionsCallbackContext" + ] + }, + { + "name": "outputPath", + "capabilityId": "Aspire.Hosting.ApplicationModel/ContainerBuildOptionsCallbackContext.outputPath", + "qualifiedName": "ContainerBuildOptionsCallbackContext.outputPath", + "description": "Gets or sets the output path for the container archive.", + "kind": "PropertyGetter", + "signature": "outputPath(): string", + "parameters": [], + "returnType": "string", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.ContainerBuildOptionsCallbackContext", + "expandedTargetTypes": [ + "Aspire.Hosting.ApplicationModel.ContainerBuildOptionsCallbackContext" + ] + }, + { + "name": "resource", + "capabilityId": "Aspire.Hosting.ApplicationModel/ContainerBuildOptionsCallbackContext.resource", + "qualifiedName": "ContainerBuildOptionsCallbackContext.resource", + "description": "Gets the resource being built.", + "kind": "PropertyGetter", + "signature": "resource(): IResource", + "parameters": [], + "returnType": "IResource", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.ContainerBuildOptionsCallbackContext", + "expandedTargetTypes": [ + "Aspire.Hosting.ApplicationModel.ContainerBuildOptionsCallbackContext" + ] + }, + { + "name": "services", + "capabilityId": "Aspire.Hosting.ApplicationModel/ContainerBuildOptionsCallbackContext.services", + "qualifiedName": "ContainerBuildOptionsCallbackContext.services", + "description": "Gets the service provider.", + "kind": "PropertyGetter", + "signature": "services(): IServiceProvider", + "parameters": [], + "returnType": "IServiceProvider", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.ContainerBuildOptionsCallbackContext", + "expandedTargetTypes": [ + "Aspire.Hosting.ApplicationModel.ContainerBuildOptionsCallbackContext" + ] + }, + { + "name": "setDestination", + "capabilityId": "Aspire.Hosting.ApplicationModel/ContainerBuildOptionsCallbackContext.setDestination", + "qualifiedName": "ContainerBuildOptionsCallbackContext.setDestination", + "description": "Gets or sets the destination for the container image.", "kind": "PropertySetter", - "signature": "setRemoteImageName(value: string): ContainerImagePushOptions", + "signature": "setDestination(value: ContainerImageDestination): ContainerBuildOptionsCallbackContext", "parameters": [ { "name": "value", - "type": "string" + "type": "ContainerImageDestination" } ], - "returnType": "ContainerImagePushOptions", - "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.ContainerImagePushOptions", + "returnType": "ContainerBuildOptionsCallbackContext", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.ContainerBuildOptionsCallbackContext", "expandedTargetTypes": [ - "Aspire.Hosting.ApplicationModel.ContainerImagePushOptions" + "Aspire.Hosting.ApplicationModel.ContainerBuildOptionsCallbackContext" ] }, { - "name": "setRemoteImageTag", - "capabilityId": "Aspire.Hosting.ApplicationModel/ContainerImagePushOptions.setRemoteImageTag", - "qualifiedName": "ContainerImagePushOptions.setRemoteImageTag", - "description": "Gets or sets the remote image tag.", + "name": "setImageFormat", + "capabilityId": "Aspire.Hosting.ApplicationModel/ContainerBuildOptionsCallbackContext.setImageFormat", + "qualifiedName": "ContainerBuildOptionsCallbackContext.setImageFormat", + "description": "Gets or sets the container image format.", "kind": "PropertySetter", - "signature": "setRemoteImageTag(value: string): ContainerImagePushOptions", + "signature": "setImageFormat(value: ContainerImageFormat): ContainerBuildOptionsCallbackContext", "parameters": [ { "name": "value", - "type": "string" + "type": "ContainerImageFormat" } ], - "returnType": "ContainerImagePushOptions", - "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.ContainerImagePushOptions", + "returnType": "ContainerBuildOptionsCallbackContext", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.ContainerBuildOptionsCallbackContext", "expandedTargetTypes": [ - "Aspire.Hosting.ApplicationModel.ContainerImagePushOptions" + "Aspire.Hosting.ApplicationModel.ContainerBuildOptionsCallbackContext" ] - } - ] - }, - { - "name": "ContainerImagePushOptionsCallbackContext", - "fullName": "Aspire.Hosting.ApplicationModel.ContainerImagePushOptionsCallbackContext", - "kind": "handle", - "exposeProperties": true, - "description": "Provides context information for container image push options callbacks.", - "implementedInterfaces": [], - "baseTypeHierarchy": [], - "capabilities": [ + }, { - "name": "cancellationToken", - "capabilityId": "Aspire.Hosting.ApplicationModel/ContainerImagePushOptionsCallbackContext.cancellationToken", - "qualifiedName": "ContainerImagePushOptionsCallbackContext.cancellationToken", - "description": "Gets the cancellation token to observe while configuring image push options.", - "kind": "PropertyGetter", - "signature": "cancellationToken(): cancellationToken", - "parameters": [], - "returnType": "cancellationToken", - "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.ContainerImagePushOptionsCallbackContext", + "name": "setLocalImageName", + "capabilityId": "Aspire.Hosting.ApplicationModel/ContainerBuildOptionsCallbackContext.setLocalImageName", + "qualifiedName": "ContainerBuildOptionsCallbackContext.setLocalImageName", + "description": "Gets or sets the local image name for the built container.", + "kind": "PropertySetter", + "signature": "setLocalImageName(value: string): ContainerBuildOptionsCallbackContext", + "parameters": [ + { + "name": "value", + "type": "string" + } + ], + "returnType": "ContainerBuildOptionsCallbackContext", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.ContainerBuildOptionsCallbackContext", "expandedTargetTypes": [ - "Aspire.Hosting.ApplicationModel.ContainerImagePushOptionsCallbackContext" + "Aspire.Hosting.ApplicationModel.ContainerBuildOptionsCallbackContext" ] }, { - "name": "options", - "capabilityId": "Aspire.Hosting.ApplicationModel/ContainerImagePushOptionsCallbackContext.options", - "qualifiedName": "ContainerImagePushOptionsCallbackContext.options", - "description": "Gets the container image push options that can be modified by the callback.", - "kind": "PropertyGetter", - "signature": "options(): ContainerImagePushOptions", - "parameters": [], - "returnType": "ContainerImagePushOptions", - "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.ContainerImagePushOptionsCallbackContext", + "name": "setLocalImageTag", + "capabilityId": "Aspire.Hosting.ApplicationModel/ContainerBuildOptionsCallbackContext.setLocalImageTag", + "qualifiedName": "ContainerBuildOptionsCallbackContext.setLocalImageTag", + "description": "Gets or sets the local image tag for the built container.", + "kind": "PropertySetter", + "signature": "setLocalImageTag(value: string): ContainerBuildOptionsCallbackContext", + "parameters": [ + { + "name": "value", + "type": "string" + } + ], + "returnType": "ContainerBuildOptionsCallbackContext", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.ContainerBuildOptionsCallbackContext", "expandedTargetTypes": [ - "Aspire.Hosting.ApplicationModel.ContainerImagePushOptionsCallbackContext" + "Aspire.Hosting.ApplicationModel.ContainerBuildOptionsCallbackContext" ] }, { - "name": "resource", - "capabilityId": "Aspire.Hosting.ApplicationModel/ContainerImagePushOptionsCallbackContext.resource", - "qualifiedName": "ContainerImagePushOptionsCallbackContext.resource", - "description": "Gets the resource being configured for container image push operations.", - "kind": "PropertyGetter", - "signature": "resource(): IResource", - "parameters": [], - "returnType": "IResource", - "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.ContainerImagePushOptionsCallbackContext", + "name": "setOutputPath", + "capabilityId": "Aspire.Hosting.ApplicationModel/ContainerBuildOptionsCallbackContext.setOutputPath", + "qualifiedName": "ContainerBuildOptionsCallbackContext.setOutputPath", + "description": "Gets or sets the output path for the container archive.", + "kind": "PropertySetter", + "signature": "setOutputPath(value: string): ContainerBuildOptionsCallbackContext", + "parameters": [ + { + "name": "value", + "type": "string" + } + ], + "returnType": "ContainerBuildOptionsCallbackContext", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.ContainerBuildOptionsCallbackContext", "expandedTargetTypes": [ - "Aspire.Hosting.ApplicationModel.ContainerImagePushOptionsCallbackContext" + "Aspire.Hosting.ApplicationModel.ContainerBuildOptionsCallbackContext" ] - } - ] - }, - { - "name": "ContainerImageReference", - "fullName": "Aspire.Hosting.ApplicationModel.ContainerImageReference", - "kind": "handle", - "exposeProperties": true, - "description": "Represents the fully‑qualified container image reference that should be deployed.", - "implementedInterfaces": [ - "Aspire.Hosting.ApplicationModel.IManifestExpressionProvider", - "Aspire.Hosting.ApplicationModel.IValueProvider", - "Aspire.Hosting.ApplicationModel.IValueWithReferences" - ], - "baseTypeHierarchy": [], - "capabilities": [ + }, { - "name": "resource", - "capabilityId": "Aspire.Hosting.ApplicationModel/ContainerImageReference.resource", - "qualifiedName": "ContainerImageReference.resource", - "description": "Gets the resource that this container image is associated with.", - "kind": "PropertyGetter", - "signature": "resource(): IResource", - "parameters": [], - "returnType": "IResource", - "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.ContainerImageReference", + "name": "setTargetPlatform", + "capabilityId": "Aspire.Hosting.ApplicationModel/ContainerBuildOptionsCallbackContext.setTargetPlatform", + "qualifiedName": "ContainerBuildOptionsCallbackContext.setTargetPlatform", + "description": "Gets or sets the target platform for the container.", + "kind": "PropertySetter", + "signature": "setTargetPlatform(value: ContainerTargetPlatform): ContainerBuildOptionsCallbackContext", + "parameters": [ + { + "name": "value", + "type": "ContainerTargetPlatform" + } + ], + "returnType": "ContainerBuildOptionsCallbackContext", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.ContainerBuildOptionsCallbackContext", "expandedTargetTypes": [ - "Aspire.Hosting.ApplicationModel.ContainerImageReference" + "Aspire.Hosting.ApplicationModel.ContainerBuildOptionsCallbackContext" ] }, { - "name": "valueExpression", - "capabilityId": "Aspire.Hosting.ApplicationModel/ContainerImageReference.valueExpression", - "qualifiedName": "ContainerImageReference.valueExpression", - "description": "Gets the ValueExpression property", + "name": "targetPlatform", + "capabilityId": "Aspire.Hosting.ApplicationModel/ContainerBuildOptionsCallbackContext.targetPlatform", + "qualifiedName": "ContainerBuildOptionsCallbackContext.targetPlatform", + "description": "Gets or sets the target platform for the container.", "kind": "PropertyGetter", - "signature": "valueExpression(): string", + "signature": "targetPlatform(): ContainerTargetPlatform", "parameters": [], - "returnType": "string", - "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.ContainerImageReference", + "returnType": "ContainerTargetPlatform", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.ContainerBuildOptionsCallbackContext", "expandedTargetTypes": [ - "Aspire.Hosting.ApplicationModel.ContainerImageReference" + "Aspire.Hosting.ApplicationModel.ContainerBuildOptionsCallbackContext" ] } ] }, { - "name": "ContainerMountAnnotation", - "fullName": "Aspire.Hosting.ApplicationModel.ContainerMountAnnotation", + "name": "ContainerFileSystemCallbackContext", + "fullName": "Aspire.Hosting.ApplicationModel.ContainerFileSystemCallbackContext", "kind": "handle", - "exposeProperties": true, - "description": "Represents a mount annotation for a container resource.", - "implementedInterfaces": [ - "Aspire.Hosting.ApplicationModel.IResourceAnnotation" - ], + "description": "Represents the context for a `ContainerFileSystemCallbackAnnotation` callback.", + "implementedInterfaces": [], "baseTypeHierarchy": [], "capabilities": [ { - "name": "isReadOnly", - "capabilityId": "Aspire.Hosting.ApplicationModel/ContainerMountAnnotation.isReadOnly", - "qualifiedName": "ContainerMountAnnotation.isReadOnly", - "description": "Gets a value indicating whether the volume mount is read-only.", + "name": "model", + "capabilityId": "Aspire.Hosting.ApplicationModel/ContainerFileSystemCallbackContext.model", + "qualifiedName": "ContainerFileSystemCallbackContext.model", + "description": "The app model resource the callback is associated with.", "kind": "PropertyGetter", - "signature": "isReadOnly(): boolean", + "signature": "model(): IResource", "parameters": [], - "returnType": "boolean", - "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.ContainerMountAnnotation", + "returnType": "IResource", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.ContainerFileSystemCallbackContext", "expandedTargetTypes": [ - "Aspire.Hosting.ApplicationModel.ContainerMountAnnotation" + "Aspire.Hosting.ApplicationModel.ContainerFileSystemCallbackContext" ] }, { - "name": "source", - "capabilityId": "Aspire.Hosting.ApplicationModel/ContainerMountAnnotation.source", - "qualifiedName": "ContainerMountAnnotation.source", - "description": "Gets the source of the bind mount or name if a volume. Can be `null` if the mount is an anonymous volume.", + "name": "services", + "capabilityId": "Aspire.Hosting.ApplicationModel/ContainerFileSystemCallbackContext.services", + "qualifiedName": "ContainerFileSystemCallbackContext.services", + "description": "A `IServiceProvider` that can be used to resolve services in the callback.", "kind": "PropertyGetter", - "signature": "source(): string", + "signature": "services(): IServiceProvider", "parameters": [], - "returnType": "string", - "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.ContainerMountAnnotation", + "returnType": "IServiceProvider", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.ContainerFileSystemCallbackContext", "expandedTargetTypes": [ - "Aspire.Hosting.ApplicationModel.ContainerMountAnnotation" + "Aspire.Hosting.ApplicationModel.ContainerFileSystemCallbackContext" ] }, { - "name": "target", - "capabilityId": "Aspire.Hosting.ApplicationModel/ContainerMountAnnotation.target", - "qualifiedName": "ContainerMountAnnotation.target", - "description": "Gets the target of the mount.", - "kind": "PropertyGetter", - "signature": "target(): string", - "parameters": [], - "returnType": "string", - "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.ContainerMountAnnotation", - "expandedTargetTypes": [ - "Aspire.Hosting.ApplicationModel.ContainerMountAnnotation" - ] - }, - { - "name": "type", - "capabilityId": "Aspire.Hosting.ApplicationModel/ContainerMountAnnotation.type", - "qualifiedName": "ContainerMountAnnotation.type", - "description": "Gets the type of the mount.", - "kind": "PropertyGetter", - "signature": "type(): ContainerMountType", - "parameters": [], - "returnType": "ContainerMountType", - "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.ContainerMountAnnotation", - "expandedTargetTypes": [ - "Aspire.Hosting.ApplicationModel.ContainerMountAnnotation" - ] - } - ] - }, - { - "name": "ContainerPortReference", - "fullName": "Aspire.Hosting.ApplicationModel.ContainerPortReference", - "kind": "handle", - "exposeProperties": true, - "description": "Represents a TCP/UDP port that a container can expose.", - "implementedInterfaces": [ - "Aspire.Hosting.ApplicationModel.IManifestExpressionProvider", - "Aspire.Hosting.ApplicationModel.IValueProvider", - "Aspire.Hosting.ApplicationModel.IValueWithReferences" - ], - "baseTypeHierarchy": [], - "capabilities": [ - { - "name": "resource", - "capabilityId": "Aspire.Hosting.ApplicationModel/ContainerPortReference.resource", - "qualifiedName": "ContainerPortReference.resource", - "description": "Gets the resource that this container port is associated with.", - "kind": "PropertyGetter", - "signature": "resource(): IResource", - "parameters": [], - "returnType": "IResource", - "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.ContainerPortReference", - "expandedTargetTypes": [ - "Aspire.Hosting.ApplicationModel.ContainerPortReference" - ] - }, - { - "name": "valueExpression", - "capabilityId": "Aspire.Hosting.ApplicationModel/ContainerPortReference.valueExpression", - "qualifiedName": "ContainerPortReference.valueExpression", - "description": "Gets the ValueExpression property", - "kind": "PropertyGetter", - "signature": "valueExpression(): string", - "parameters": [], - "returnType": "string", - "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.ContainerPortReference", - "expandedTargetTypes": [ - "Aspire.Hosting.ApplicationModel.ContainerPortReference" - ] - } - ] - }, - { - "name": "ContainerRegistryResource", - "fullName": "Aspire.Hosting.ApplicationModel.ContainerRegistryResource", - "kind": "handle", - "implementedInterfaces": [ - "Aspire.Hosting.ApplicationModel.IContainerRegistry", - "Aspire.Hosting.ApplicationModel.IResource" - ], - "baseTypeHierarchy": [ - "Aspire.Hosting.ApplicationModel.Resource" - ], - "capabilities": [] - }, - { - "name": "ContainerResource", - "fullName": "Aspire.Hosting.ApplicationModel.ContainerResource", - "kind": "handle", - "description": "A resource that represents a specified container.", - "implementedInterfaces": [ - "Aspire.Hosting.ApplicationModel.IComputeResource", - "Aspire.Hosting.ApplicationModel.IResource", - "Aspire.Hosting.ApplicationModel.IResourceWithArgs", - "Aspire.Hosting.ApplicationModel.IResourceWithEndpoints", - "Aspire.Hosting.ApplicationModel.IResourceWithEnvironment", - "Aspire.Hosting.ApplicationModel.IResourceWithProbes", - "Aspire.Hosting.ApplicationModel.IResourceWithWaitSupport" - ], - "baseTypeHierarchy": [ - "Aspire.Hosting.ApplicationModel.Resource" - ], - "capabilities": [ - { - "name": "publishAsConnectionString", - "capabilityId": "Aspire.Hosting/publishAsConnectionString", - "qualifiedName": "publishAsConnectionString", - "description": "Changes the resource to be published as a connection string reference in the manifest.", - "returns": "The resource builder.", - "kind": "Method", - "signature": "publishAsConnectionString(): ContainerResource", - "parameters": [], - "returnType": "ContainerResource", - "returnsBuilder": true, - "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.ContainerResource", - "expandedTargetTypes": [ - "Aspire.Hosting.ApplicationModel.ContainerResource" - ] - }, - { - "name": "publishAsContainer", - "capabilityId": "Aspire.Hosting/publishAsContainer", - "qualifiedName": "publishAsContainer", - "description": "Changes the resource to be published as a container in the manifest.", - "returns": "The resource builder.", - "kind": "Method", - "signature": "publishAsContainer(): ContainerResource", - "parameters": [], - "returnType": "ContainerResource", - "returnsBuilder": true, - "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.ContainerResource", - "expandedTargetTypes": [ - "Aspire.Hosting.ApplicationModel.ContainerResource" - ] - }, - { - "name": "withBindMount", - "capabilityId": "Aspire.Hosting/withBindMount", - "qualifiedName": "withBindMount", - "description": "Adds a bind mount to a container resource.", - "returns": "The resource builder.", + "name": "createCertificateFile", + "capabilityId": "Aspire.Hosting/createCertificateFile", + "qualifiedName": "createCertificateFile", + "description": "Creates a PEM container certificate file entry with the OpenSSL subject-hash symlink.", + "returns": "The created certificate file entry.", "kind": "Method", - "signature": "withBindMount(source: string, target: string, isReadOnly?: boolean): ContainerResource", + "signature": "createCertificateFile(name: string, contents?: string, sourcePath?: string, owner?: number, group?: number, mode?: number, continueOnError?: boolean): ContainerFileSystemItem", "parameters": [ { - "name": "source", + "name": "name", "type": "string", - "description": "The source path of the mount. This is the path to the file or directory on the host, relative to the AppHost project directory." + "description": "The simple file name (no path separators)." }, { - "name": "target", + "name": "contents", "type": "string", - "description": "The target path where the file or directory is mounted in the container." + "isOptional": true, + "description": "The inline PEM-encoded contents of the certificate. Mutually exclusive with `sourcePath`." }, { - "name": "isReadOnly", + "name": "sourcePath", + "type": "string", + "isOptional": true, + "description": "An absolute path to a PEM file on the host to copy. Mutually exclusive with `contents`." + }, + { + "name": "owner", + "type": "number", + "isOptional": true, + "isNullable": true, + "description": "The owner UID, or `null` to inherit." + }, + { + "name": "group", + "type": "number", + "isOptional": true, + "isNullable": true, + "description": "The group GID, or `null` to inherit." + }, + { + "name": "mode", + "type": "number", + "isOptional": true, + "isNullable": true, + "description": "The Unix file mode as an integer (for example `0o644`), or `null` to inherit." + }, + { + "name": "continueOnError", "type": "boolean", "isOptional": true, - "defaultValue": "False", - "description": "A flag that indicates if this is a read-only mount." + "isNullable": true, + "description": "Whether to ignore errors creating this file." } ], - "returnType": "ContainerResource", - "returnsBuilder": true, - "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.ContainerResource", + "returnType": "ContainerFileSystemItem", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.ContainerFileSystemCallbackContext", "expandedTargetTypes": [ - "Aspire.Hosting.ApplicationModel.ContainerResource" + "Aspire.Hosting.ApplicationModel.ContainerFileSystemCallbackContext" ] }, { - "name": "withBuildArg", - "capabilityId": "Aspire.Hosting/withBuildArg", - "qualifiedName": "withBuildArg", - "description": "Adds a build argument when the container is built from a Dockerfile.", - "returns": "The resource builder.", + "name": "createDirectory", + "capabilityId": "Aspire.Hosting/createDirectory", + "qualifiedName": "createDirectory", + "description": "Creates a container directory entry containing the specified child entries.", + "returns": "The created directory entry.", "kind": "Method", - "signature": "withBuildArg(name: string, value: ParameterResource): ContainerResource", + "signature": "createDirectory(name: string, entries: ContainerFileSystemItem[], owner?: number, group?: number, mode?: number): ContainerFileSystemItem", "parameters": [ { "name": "name", "type": "string", - "description": "The name of the build argument." + "description": "The simple directory name (no path separators)." }, { - "name": "value", - "type": "ParameterResource", - "description": "The build argument value, either a string or a parameter resource." + "name": "entries", + "type": "ContainerFileSystemItem[]", + "description": "The child entries (files and/or directories) created via this context." + }, + { + "name": "owner", + "type": "number", + "isOptional": true, + "isNullable": true, + "description": "The owner UID, or `null` to inherit." + }, + { + "name": "group", + "type": "number", + "isOptional": true, + "isNullable": true, + "description": "The group GID, or `null` to inherit." + }, + { + "name": "mode", + "type": "number", + "isOptional": true, + "isNullable": true, + "description": "The Unix file mode as an integer (for example `0o755`), or `null` to inherit." } ], - "returnType": "ContainerResource", - "returnsBuilder": true, - "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.ContainerResource", + "returnType": "ContainerFileSystemItem", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.ContainerFileSystemCallbackContext", "expandedTargetTypes": [ - "Aspire.Hosting.ApplicationModel.ContainerResource" + "Aspire.Hosting.ApplicationModel.ContainerFileSystemCallbackContext" ] }, { - "name": "withBuildSecret", - "capabilityId": "Aspire.Hosting/withParameterBuildSecret", - "qualifiedName": "withBuildSecret", - "description": "Adds a secret build argument when the container is built from a Dockerfile.", - "returns": "The resource builder.", + "name": "createFile", + "capabilityId": "Aspire.Hosting/createFile", + "qualifiedName": "createFile", + "description": "Creates a container file entry with inline contents or a host source path.", + "returns": "The created file entry.", "kind": "Method", - "signature": "withBuildSecret(name: string, value: ParameterResource): ContainerResource", + "signature": "createFile(name: string, contents?: string, sourcePath?: string, owner?: number, group?: number, mode?: number, continueOnError?: boolean): ContainerFileSystemItem", "parameters": [ { "name": "name", "type": "string", - "description": "The name of the secret build argument." + "description": "The simple file name (no path separators)." }, { - "name": "value", - "type": "ParameterResource", - "description": "The resource builder for a parameter resource." - } - ], - "returnType": "ContainerResource", - "returnsBuilder": true, - "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.ContainerResource", - "expandedTargetTypes": [ - "Aspire.Hosting.ApplicationModel.ContainerResource" - ] - }, - { - "name": "withContainerCertificatePaths", - "capabilityId": "Aspire.Hosting/withContainerCertificatePaths", - "qualifiedName": "withContainerCertificatePaths", - "description": "Adds container certificate path overrides used for certificate trust at run time.", - "returns": "The updated resource builder.", - "kind": "Method", - "signature": "withContainerCertificatePaths(customCertificatesDestination?: string, defaultCertificateBundlePaths?: string[], defaultCertificateDirectoryPaths?: string[]): ContainerResource", - "parameters": [ + "name": "contents", + "type": "string", + "isOptional": true, + "description": "The inline UTF-8 contents of the file. Mutually exclusive with `sourcePath`." + }, { - "name": "customCertificatesDestination", + "name": "sourcePath", "type": "string", "isOptional": true, - "description": "The destination path in the container where custom certificates will be copied." + "description": "An absolute path to a file on the host to copy. Mutually exclusive with `contents`." }, { - "name": "defaultCertificateBundlePaths", - "type": "string[]", + "name": "owner", + "type": "number", "isOptional": true, - "description": "Default certificate bundle paths in the container that will be replaced." + "isNullable": true, + "description": "The owner UID, or `null` to inherit." }, { - "name": "defaultCertificateDirectoryPaths", - "type": "string[]", + "name": "group", + "type": "number", "isOptional": true, - "description": "Default certificate directory paths in the container that may be appended." + "isNullable": true, + "description": "The group GID, or `null` to inherit." + }, + { + "name": "mode", + "type": "number", + "isOptional": true, + "isNullable": true, + "description": "The Unix file mode as an integer (for example `0o644`), or `null` to inherit." + }, + { + "name": "continueOnError", + "type": "boolean", + "isOptional": true, + "isNullable": true, + "description": "Whether to ignore errors creating this file." } ], - "returnType": "ContainerResource", - "returnsBuilder": true, - "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.ContainerResource", + "returnType": "ContainerFileSystemItem", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.ContainerFileSystemCallbackContext", "expandedTargetTypes": [ - "Aspire.Hosting.ApplicationModel.ContainerResource" + "Aspire.Hosting.ApplicationModel.ContainerFileSystemCallbackContext" ] - }, + } + ] + }, + { + "name": "ContainerFileSystemItem", + "fullName": "Aspire.Hosting.ApplicationModel.ContainerFileSystemItem", + "kind": "handle", + "description": "Represents a base class for file system entries in a container.", + "remarks": "Exported to ATS as an opaque handle type. Polyglot AppHosts never construct or inspect these\ndirectly; they create concrete entries through the factory methods on\n`ContainerFileSystemCallbackContext` and pass the resulting handles back via the callback.", + "implementedInterfaces": [], + "baseTypeHierarchy": [], + "capabilities": [] + }, + { + "name": "ContainerImagePushOptions", + "fullName": "Aspire.Hosting.ApplicationModel.ContainerImagePushOptions", + "kind": "handle", + "exposeProperties": true, + "description": "Represents options for pushing container images to a registry.", + "remarks": "This class allows customization of how container images are named and tagged when pushed to a container registry.\nThe `RemoteImageName` specifies the repository path (without registry endpoint or tag),\nand `RemoteImageTag` specifies the tag to apply. Use `GetFullRemoteImageNameAsync`\nto construct the complete image reference including registry endpoint and tag.", + "implementedInterfaces": [], + "baseTypeHierarchy": [], + "capabilities": [ { - "name": "withContainerName", - "capabilityId": "Aspire.Hosting/withContainerName", - "qualifiedName": "withContainerName", - "description": "Overrides the default container name for this resource. By default Aspire generates a unique container name based on the resource name and a random postfix (or a postfix based on a hash of the AppHost project path for persistent container resources). This method allows you to override that behavior with a custom name, but could lead to naming conflicts if the specified name is not unique.", - "remarks": "Combining this with `Persistent` will allow Aspire to re-use an existing container that was not\ncreated by an Aspire AppHost.", - "returns": "The resource builder.", - "kind": "Method", - "signature": "withContainerName(name: string): ContainerResource", - "parameters": [ - { - "name": "name", - "type": "string", - "description": "The desired container name. Must be a valid container name or your runtime will report an error." - } - ], - "returnType": "ContainerResource", - "returnsBuilder": true, - "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.ContainerResource", + "name": "remoteImageName", + "capabilityId": "Aspire.Hosting.ApplicationModel/ContainerImagePushOptions.remoteImageName", + "qualifiedName": "ContainerImagePushOptions.remoteImageName", + "description": "Gets or sets the remote image name (repository path without registry endpoint or tag).", + "kind": "PropertyGetter", + "signature": "remoteImageName(): string", + "parameters": [], + "returnType": "string", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.ContainerImagePushOptions", "expandedTargetTypes": [ - "Aspire.Hosting.ApplicationModel.ContainerResource" + "Aspire.Hosting.ApplicationModel.ContainerImagePushOptions" ] }, { - "name": "withContainerNetworkAlias", - "capabilityId": "Aspire.Hosting/withContainerNetworkAlias", - "qualifiedName": "withContainerNetworkAlias", - "description": "Adds a network alias to container resource.", - "remarks": "Network aliases enable DNS resolution of the container on the network by custom names.\nBy default, containers are accessible on the network using their resource name as a DNS alias.\nThis method allows adding additional aliases for the same container.\nMultiple aliases can be added by calling this method multiple times.", - "returns": "The resource builder.", - "kind": "Method", - "signature": "withContainerNetworkAlias(alias: string): ContainerResource", - "parameters": [ - { - "name": "alias", - "type": "string", - "description": "The network alias for the container." - } - ], - "returnType": "ContainerResource", - "returnsBuilder": true, - "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.ContainerResource", + "name": "remoteImageTag", + "capabilityId": "Aspire.Hosting.ApplicationModel/ContainerImagePushOptions.remoteImageTag", + "qualifiedName": "ContainerImagePushOptions.remoteImageTag", + "description": "Gets or sets the remote image tag.", + "kind": "PropertyGetter", + "signature": "remoteImageTag(): string", + "parameters": [], + "returnType": "string", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.ContainerImagePushOptions", "expandedTargetTypes": [ - "Aspire.Hosting.ApplicationModel.ContainerResource" + "Aspire.Hosting.ApplicationModel.ContainerImagePushOptions" ] }, { - "name": "withContainerRuntimeArgs", - "capabilityId": "Aspire.Hosting/withContainerRuntimeArgs", - "qualifiedName": "withContainerRuntimeArgs", - "description": "Adds a callback to be executed with a list of arguments to add to the container runtime run command when a container resource is started.", - "returns": "The resource builder.", - "kind": "Method", - "signature": "withContainerRuntimeArgs(args: string[]): ContainerResource", + "name": "setRemoteImageName", + "capabilityId": "Aspire.Hosting.ApplicationModel/ContainerImagePushOptions.setRemoteImageName", + "qualifiedName": "ContainerImagePushOptions.setRemoteImageName", + "description": "Gets or sets the remote image name (repository path without registry endpoint or tag).", + "kind": "PropertySetter", + "signature": "setRemoteImageName(value: string): ContainerImagePushOptions", "parameters": [ { - "name": "args", - "type": "string[]", - "description": "The arguments to be passed to the container runtime run command when the container resource is started." + "name": "value", + "type": "string" } ], - "returnType": "ContainerResource", - "returnsBuilder": true, - "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.ContainerResource", + "returnType": "ContainerImagePushOptions", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.ContainerImagePushOptions", "expandedTargetTypes": [ - "Aspire.Hosting.ApplicationModel.ContainerResource" + "Aspire.Hosting.ApplicationModel.ContainerImagePushOptions" ] }, { - "name": "withDockerfile", - "capabilityId": "Aspire.Hosting/withDockerfile", - "qualifiedName": "withDockerfile", - "description": "Causes Aspire to build the specified container image from a Dockerfile.", - "returns": "The resource builder.", - "kind": "Method", - "signature": "withDockerfile(contextPath: string, dockerfilePath?: string, stage?: string): ContainerResource", + "name": "setRemoteImageTag", + "capabilityId": "Aspire.Hosting.ApplicationModel/ContainerImagePushOptions.setRemoteImageTag", + "qualifiedName": "ContainerImagePushOptions.setRemoteImageTag", + "description": "Gets or sets the remote image tag.", + "kind": "PropertySetter", + "signature": "setRemoteImageTag(value: string): ContainerImagePushOptions", "parameters": [ { - "name": "contextPath", - "type": "string", - "description": "Path to be used as the context for the container image build." - }, - { - "name": "dockerfilePath", - "type": "string", - "isOptional": true, - "description": "Path to the Dockerfile relative to the `contextPath`. Defaults to \"Dockerfile\" if not specified." - }, - { - "name": "stage", - "type": "string", - "isOptional": true, - "description": "The stage representing the image to be published in a multi-stage Dockerfile." + "name": "value", + "type": "string" } ], - "returnType": "ContainerResource", - "returnsBuilder": true, - "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.ContainerResource", + "returnType": "ContainerImagePushOptions", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.ContainerImagePushOptions", "expandedTargetTypes": [ - "Aspire.Hosting.ApplicationModel.ContainerResource" + "Aspire.Hosting.ApplicationModel.ContainerImagePushOptions" ] - }, + } + ] + }, + { + "name": "ContainerImagePushOptionsCallbackContext", + "fullName": "Aspire.Hosting.ApplicationModel.ContainerImagePushOptionsCallbackContext", + "kind": "handle", + "exposeProperties": true, + "description": "Provides context information for container image push options callbacks.", + "implementedInterfaces": [], + "baseTypeHierarchy": [], + "capabilities": [ { - "name": "withDockerfileBuilder", - "capabilityId": "Aspire.Hosting/withDockerfileBuilder", - "qualifiedName": "withDockerfileBuilder", - "description": "Configures the resource to use a programmatically generated Dockerfile", - "remarks": "This method provides a programmatic way to build Dockerfiles using the `DockerfileBuilder` API\ninstead of string manipulation. Callbacks can be composed by calling this method multiple times - each callback will be invoked\nin order to build up the final Dockerfile.\nThe `contextPath` is relative to the AppHost directory unless it is fully qualified.\nCreates a container with a programmatically built Dockerfile using fluent API:\n```\nvar builder = DistributedApplication.CreateBuilder(args);\nbuilder.AddContainer(\"mycontainer\", \"myimage\")\n.WithDockerfileBuilder(\"path/to/context\", context =>\n{\ncontext.Builder.From(\"alpine:latest\")\n.WorkDir(\"/app\")\n.Run(\"apk add curl\")\n.Copy(\".\", \".\")\n.Cmd([\"./myapp\"]);\nreturn Task.CompletedTask;\n});\nbuilder.Build().Run();\n```", - "returns": "The resource builder.", - "kind": "Method", - "signature": "withDockerfileBuilder(contextPath: string, callback: (arg: DockerfileBuilderCallbackContext) => Promise, stage?: string): ContainerResource", - "parameters": [ - { - "name": "contextPath", - "type": "string", - "description": "Path to be used as the context for the container image build." - }, - { - "name": "callback", - "type": "callback", - "isCallback": true, - "callbackSignature": "(arg: DockerfileBuilderCallbackContext) => Promise", - "description": "A callback that uses the `DockerfileBuilder` API to construct the Dockerfile." - }, - { - "name": "stage", - "type": "string", - "isOptional": true, - "description": "The stage representing the image to be published in a multi-stage Dockerfile." - } - ], - "returnType": "ContainerResource", - "returnsBuilder": true, - "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.ContainerResource", + "name": "cancellationToken", + "capabilityId": "Aspire.Hosting.ApplicationModel/ContainerImagePushOptionsCallbackContext.cancellationToken", + "qualifiedName": "ContainerImagePushOptionsCallbackContext.cancellationToken", + "description": "Gets the cancellation token to observe while configuring image push options.", + "kind": "PropertyGetter", + "signature": "cancellationToken(): cancellationToken", + "parameters": [], + "returnType": "cancellationToken", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.ContainerImagePushOptionsCallbackContext", "expandedTargetTypes": [ - "Aspire.Hosting.ApplicationModel.ContainerResource" + "Aspire.Hosting.ApplicationModel.ContainerImagePushOptionsCallbackContext" ] }, { - "name": "withDockerfileFactory", - "capabilityId": "Aspire.Hosting/withDockerfileFactory", - "qualifiedName": "withDockerfileFactory", - "description": "Builds the specified container image from a Dockerfile generated by an asynchronous factory function.", - "remarks": "When this method is called, an annotation is added to the `ContainerResource` that specifies the context path\nand a factory function that generates Dockerfile content. The factory is invoked at build time to produce the Dockerfile,\nwhich is then written to a temporary file and used by the orchestrator to build the container image.\nThe `contextPath` is relative to the AppHost directory unless it is fully qualified.\nThe factory function is invoked once during the build process to generate the Dockerfile content.\nThe output is trusted and not validated.\nCreates a container called `mycontainer` with a dynamically generated Dockerfile.\n```\nvar builder = DistributedApplication.CreateBuilder(args);\nbuilder.AddContainer(\"mycontainer\", \"myimage\")\n.WithDockerfileFactory(\"path/to/context\", async context =>\n{\nvar template = await File.ReadAllTextAsync(\"template.dockerfile\", context.CancellationToken);\nreturn template.Replace(\"{{VERSION}}\", \"1.0\");\n});\nbuilder.Build().Run();\n```", - "returns": "The resource builder.", - "kind": "Method", - "signature": "withDockerfileFactory(contextPath: string, dockerfileFactory: (arg: DockerfileFactoryContext) => Promise, stage?: string): ContainerResource", - "parameters": [ - { - "name": "contextPath", - "type": "string", - "description": "Path to be used as the context for the container image build." - }, - { - "name": "dockerfileFactory", - "type": "callback", - "isCallback": true, - "callbackSignature": "(arg: DockerfileFactoryContext) => Promise", - "description": "An asynchronous function that returns the Dockerfile content as a string." - }, - { - "name": "stage", - "type": "string", - "isOptional": true, - "description": "The stage representing the image to be published in a multi-stage Dockerfile." - } - ], - "returnType": "ContainerResource", - "returnsBuilder": true, - "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.ContainerResource", + "name": "options", + "capabilityId": "Aspire.Hosting.ApplicationModel/ContainerImagePushOptionsCallbackContext.options", + "qualifiedName": "ContainerImagePushOptionsCallbackContext.options", + "description": "Gets the container image push options that can be modified by the callback.", + "kind": "PropertyGetter", + "signature": "options(): ContainerImagePushOptions", + "parameters": [], + "returnType": "ContainerImagePushOptions", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.ContainerImagePushOptionsCallbackContext", "expandedTargetTypes": [ - "Aspire.Hosting.ApplicationModel.ContainerResource" + "Aspire.Hosting.ApplicationModel.ContainerImagePushOptionsCallbackContext" ] }, { - "name": "withEntrypoint", - "capabilityId": "Aspire.Hosting/withEntrypoint", - "qualifiedName": "withEntrypoint", - "description": "Sets the Entrypoint for the container.", - "returns": "The resource builder.", - "kind": "Method", - "signature": "withEntrypoint(entrypoint: string): ContainerResource", - "parameters": [ - { - "name": "entrypoint", - "type": "string", - "description": "The new entrypoint for the container." - } - ], - "returnType": "ContainerResource", - "returnsBuilder": true, - "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.ContainerResource", + "name": "resource", + "capabilityId": "Aspire.Hosting.ApplicationModel/ContainerImagePushOptionsCallbackContext.resource", + "qualifiedName": "ContainerImagePushOptionsCallbackContext.resource", + "description": "Gets the resource being configured for container image push operations.", + "kind": "PropertyGetter", + "signature": "resource(): IResource", + "parameters": [], + "returnType": "IResource", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.ContainerImagePushOptionsCallbackContext", "expandedTargetTypes": [ - "Aspire.Hosting.ApplicationModel.ContainerResource" + "Aspire.Hosting.ApplicationModel.ContainerImagePushOptionsCallbackContext" + ] + } + ] + }, + { + "name": "ContainerImageReference", + "fullName": "Aspire.Hosting.ApplicationModel.ContainerImageReference", + "kind": "handle", + "exposeProperties": true, + "description": "Represents the fully‑qualified container image reference that should be deployed.", + "implementedInterfaces": [ + "Aspire.Hosting.ApplicationModel.IManifestExpressionProvider", + "Aspire.Hosting.ApplicationModel.IValueProvider", + "Aspire.Hosting.ApplicationModel.IValueWithReferences" + ], + "baseTypeHierarchy": [], + "capabilities": [ + { + "name": "resource", + "capabilityId": "Aspire.Hosting.ApplicationModel/ContainerImageReference.resource", + "qualifiedName": "ContainerImageReference.resource", + "description": "Gets the resource that this container image is associated with.", + "kind": "PropertyGetter", + "signature": "resource(): IResource", + "parameters": [], + "returnType": "IResource", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.ContainerImageReference", + "expandedTargetTypes": [ + "Aspire.Hosting.ApplicationModel.ContainerImageReference" ] }, { - "name": "withImage", - "capabilityId": "Aspire.Hosting/withImage", - "qualifiedName": "withImage", - "description": "Allows overriding the image on a container.", + "name": "valueExpression", + "capabilityId": "Aspire.Hosting.ApplicationModel/ContainerImageReference.valueExpression", + "qualifiedName": "ContainerImageReference.valueExpression", + "description": "Gets the ValueExpression property", + "kind": "PropertyGetter", + "signature": "valueExpression(): string", + "parameters": [], + "returnType": "string", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.ContainerImageReference", + "expandedTargetTypes": [ + "Aspire.Hosting.ApplicationModel.ContainerImageReference" + ] + } + ] + }, + { + "name": "ContainerMountAnnotation", + "fullName": "Aspire.Hosting.ApplicationModel.ContainerMountAnnotation", + "kind": "handle", + "exposeProperties": true, + "description": "Represents a mount annotation for a container resource.", + "implementedInterfaces": [ + "Aspire.Hosting.ApplicationModel.IResourceAnnotation" + ], + "baseTypeHierarchy": [], + "capabilities": [ + { + "name": "isReadOnly", + "capabilityId": "Aspire.Hosting.ApplicationModel/ContainerMountAnnotation.isReadOnly", + "qualifiedName": "ContainerMountAnnotation.isReadOnly", + "description": "Gets a value indicating whether the volume mount is read-only.", + "kind": "PropertyGetter", + "signature": "isReadOnly(): boolean", + "parameters": [], + "returnType": "boolean", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.ContainerMountAnnotation", + "expandedTargetTypes": [ + "Aspire.Hosting.ApplicationModel.ContainerMountAnnotation" + ] + }, + { + "name": "source", + "capabilityId": "Aspire.Hosting.ApplicationModel/ContainerMountAnnotation.source", + "qualifiedName": "ContainerMountAnnotation.source", + "description": "Gets the source of the bind mount or name if a volume. Can be `null` if the mount is an anonymous volume.", + "kind": "PropertyGetter", + "signature": "source(): string", + "parameters": [], + "returnType": "string", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.ContainerMountAnnotation", + "expandedTargetTypes": [ + "Aspire.Hosting.ApplicationModel.ContainerMountAnnotation" + ] + }, + { + "name": "target", + "capabilityId": "Aspire.Hosting.ApplicationModel/ContainerMountAnnotation.target", + "qualifiedName": "ContainerMountAnnotation.target", + "description": "Gets the target of the mount.", + "kind": "PropertyGetter", + "signature": "target(): string", + "parameters": [], + "returnType": "string", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.ContainerMountAnnotation", + "expandedTargetTypes": [ + "Aspire.Hosting.ApplicationModel.ContainerMountAnnotation" + ] + }, + { + "name": "type", + "capabilityId": "Aspire.Hosting.ApplicationModel/ContainerMountAnnotation.type", + "qualifiedName": "ContainerMountAnnotation.type", + "description": "Gets the type of the mount.", + "kind": "PropertyGetter", + "signature": "type(): ContainerMountType", + "parameters": [], + "returnType": "ContainerMountType", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.ContainerMountAnnotation", + "expandedTargetTypes": [ + "Aspire.Hosting.ApplicationModel.ContainerMountAnnotation" + ] + } + ] + }, + { + "name": "ContainerPortReference", + "fullName": "Aspire.Hosting.ApplicationModel.ContainerPortReference", + "kind": "handle", + "exposeProperties": true, + "description": "Represents a TCP/UDP port that a container can expose.", + "implementedInterfaces": [ + "Aspire.Hosting.ApplicationModel.IManifestExpressionProvider", + "Aspire.Hosting.ApplicationModel.IValueProvider", + "Aspire.Hosting.ApplicationModel.IValueWithReferences" + ], + "baseTypeHierarchy": [], + "capabilities": [ + { + "name": "resource", + "capabilityId": "Aspire.Hosting.ApplicationModel/ContainerPortReference.resource", + "qualifiedName": "ContainerPortReference.resource", + "description": "Gets the resource that this container port is associated with.", + "kind": "PropertyGetter", + "signature": "resource(): IResource", + "parameters": [], + "returnType": "IResource", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.ContainerPortReference", + "expandedTargetTypes": [ + "Aspire.Hosting.ApplicationModel.ContainerPortReference" + ] + }, + { + "name": "valueExpression", + "capabilityId": "Aspire.Hosting.ApplicationModel/ContainerPortReference.valueExpression", + "qualifiedName": "ContainerPortReference.valueExpression", + "description": "Gets the ValueExpression property", + "kind": "PropertyGetter", + "signature": "valueExpression(): string", + "parameters": [], + "returnType": "string", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.ContainerPortReference", + "expandedTargetTypes": [ + "Aspire.Hosting.ApplicationModel.ContainerPortReference" + ] + } + ] + }, + { + "name": "ContainerRegistryResource", + "fullName": "Aspire.Hosting.ApplicationModel.ContainerRegistryResource", + "kind": "handle", + "implementedInterfaces": [ + "Aspire.Hosting.ApplicationModel.IContainerRegistry", + "Aspire.Hosting.ApplicationModel.IResource" + ], + "baseTypeHierarchy": [ + "Aspire.Hosting.ApplicationModel.Resource" + ], + "capabilities": [] + }, + { + "name": "ContainerResource", + "fullName": "Aspire.Hosting.ApplicationModel.ContainerResource", + "kind": "handle", + "description": "A resource that represents a specified container.", + "implementedInterfaces": [ + "Aspire.Hosting.ApplicationModel.IComputeResource", + "Aspire.Hosting.ApplicationModel.IResource", + "Aspire.Hosting.ApplicationModel.IResourceWithArgs", + "Aspire.Hosting.ApplicationModel.IResourceWithEndpoints", + "Aspire.Hosting.ApplicationModel.IResourceWithEnvironment", + "Aspire.Hosting.ApplicationModel.IResourceWithProbes", + "Aspire.Hosting.ApplicationModel.IResourceWithWaitSupport" + ], + "baseTypeHierarchy": [ + "Aspire.Hosting.ApplicationModel.Resource" + ], + "capabilities": [ + { + "name": "publishAsConnectionString", + "capabilityId": "Aspire.Hosting/publishAsConnectionString", + "qualifiedName": "publishAsConnectionString", + "description": "Changes the resource to be published as a connection string reference in the manifest.", + "remarks": "This API only changes the manifest representation; it does not change the resource model used by other publishers.", "returns": "The resource builder.", "kind": "Method", - "signature": "withImage(image: string, tag?: string): ContainerResource", - "parameters": [ - { - "name": "image", - "type": "string", - "description": "Image value." - }, - { - "name": "tag", - "type": "string", - "isOptional": true, - "description": "Tag value." - } - ], + "signature": "publishAsConnectionString(): ContainerResource", + "parameters": [], "returnType": "ContainerResource", "returnsBuilder": true, "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.ContainerResource", @@ -9580,20 +11460,14 @@ ] }, { - "name": "withImagePullPolicy", - "capabilityId": "Aspire.Hosting/withImagePullPolicy", - "qualifiedName": "withImagePullPolicy", - "description": "Sets the pull policy for the container resource.", + "name": "publishAsContainer", + "capabilityId": "Aspire.Hosting/publishAsContainer", + "qualifiedName": "publishAsContainer", + "description": "Changes the resource to be published as a container in the manifest.", "returns": "The resource builder.", "kind": "Method", - "signature": "withImagePullPolicy(pullPolicy: ImagePullPolicy): ContainerResource", - "parameters": [ - { - "name": "pullPolicy", - "type": "ImagePullPolicy", - "description": "The pull policy behavior for the container resource." - } - ], + "signature": "publishAsContainer(): ContainerResource", + "parameters": [], "returnType": "ContainerResource", "returnsBuilder": true, "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.ContainerResource", @@ -9602,18 +11476,30 @@ ] }, { - "name": "withImageRegistry", - "capabilityId": "Aspire.Hosting/withImageRegistry", - "qualifiedName": "withImageRegistry", - "description": "Allows overriding the image registry on a container.", + "name": "withBindMount", + "capabilityId": "Aspire.Hosting/withBindMount", + "qualifiedName": "withBindMount", + "description": "Adds a bind mount to a container resource.", "returns": "The resource builder.", "kind": "Method", - "signature": "withImageRegistry(registry: string): ContainerResource", + "signature": "withBindMount(source: string, target: string, isReadOnly?: boolean): ContainerResource", "parameters": [ { - "name": "registry", + "name": "source", "type": "string", - "description": "Registry value." + "description": "The source path of the mount. This is the path to the file or directory on the host, relative to the AppHost project directory." + }, + { + "name": "target", + "type": "string", + "description": "The target path where the file or directory is mounted in the container." + }, + { + "name": "isReadOnly", + "type": "boolean", + "isOptional": true, + "defaultValue": "False", + "description": "A flag that indicates if this is a read-only mount." } ], "returnType": "ContainerResource", @@ -9624,18 +11510,23 @@ ] }, { - "name": "withImageSHA256", - "capabilityId": "Aspire.Hosting/withImageSHA256", - "qualifiedName": "withImageSHA256", - "description": "Allows setting the image to a specific sha256 on a container.", + "name": "withBuildArg", + "capabilityId": "Aspire.Hosting/withBuildArg", + "qualifiedName": "withBuildArg", + "description": "Adds a build argument when the container is built from a Dockerfile.", "returns": "The resource builder.", "kind": "Method", - "signature": "withImageSHA256(sha256: string): ContainerResource", + "signature": "withBuildArg(name: string, value: ParameterResource): ContainerResource", "parameters": [ { - "name": "sha256", + "name": "name", "type": "string", - "description": "Registry value." + "description": "The name of the build argument." + }, + { + "name": "value", + "type": "ParameterResource", + "description": "The build argument value, either a string or a parameter resource." } ], "returnType": "ContainerResource", @@ -9646,18 +11537,23 @@ ] }, { - "name": "withImageTag", - "capabilityId": "Aspire.Hosting/withImageTag", - "qualifiedName": "withImageTag", - "description": "Allows overriding the image tag on a container.", + "name": "withBuildSecret", + "capabilityId": "Aspire.Hosting/withParameterBuildSecret", + "qualifiedName": "withBuildSecret", + "description": "Adds a secret build argument when the container is built from a Dockerfile.", "returns": "The resource builder.", "kind": "Method", - "signature": "withImageTag(tag: string): ContainerResource", + "signature": "withBuildSecret(name: string, value: ParameterResource): ContainerResource", "parameters": [ { - "name": "tag", + "name": "name", "type": "string", - "description": "Tag value." + "description": "The name of the secret build argument." + }, + { + "name": "value", + "type": "ParameterResource", + "description": "The resource builder for a parameter resource." } ], "returnType": "ContainerResource", @@ -9668,19 +11564,31 @@ ] }, { - "name": "withLifetime", - "capabilityId": "Aspire.Hosting/withLifetime", - "qualifiedName": "withLifetime", - "description": "Sets the lifetime behavior of the container resource.", - "remarks": "Prefer `WithPersistentLifetime``1` or\n`WithSessionLifetime``1` for new code.\nMarking a container resource to have a `Persistent` lifetime.\n```\nvar builder = DistributedApplication.CreateBuilder(args);\nbuilder.AddContainer(\"mycontainer\", \"myimage\")\n.WithPersistentLifetime();\nbuilder.Build().Run();\n```", - "returns": "The resource builder.", + "name": "withContainerCertificatePaths", + "capabilityId": "Aspire.Hosting/withContainerCertificatePaths", + "qualifiedName": "withContainerCertificatePaths", + "description": "Adds container certificate path overrides used for certificate trust at run time.", + "returns": "The updated resource builder.", "kind": "Method", - "signature": "withLifetime(lifetime: ContainerLifetime): ContainerResource", + "signature": "withContainerCertificatePaths(customCertificatesDestination?: string, defaultCertificateBundlePaths?: string[], defaultCertificateDirectoryPaths?: string[]): ContainerResource", "parameters": [ { - "name": "lifetime", - "type": "ContainerLifetime", - "description": "The lifetime behavior of the container resource. The default behavior is `Session`." + "name": "customCertificatesDestination", + "type": "string", + "isOptional": true, + "description": "The destination path in the container where custom certificates will be copied." + }, + { + "name": "defaultCertificateBundlePaths", + "type": "string[]", + "isOptional": true, + "description": "Default certificate bundle paths in the container that will be replaced." + }, + { + "name": "defaultCertificateDirectoryPaths", + "type": "string[]", + "isOptional": true, + "description": "Default certificate directory paths in the container that may be appended." } ], "returnType": "ContainerResource", @@ -9691,32 +11599,30 @@ ] }, { - "name": "withVolume", - "capabilityId": "Aspire.Hosting/withVolume", - "qualifiedName": "withVolume", - "description": "Adds a volume to a container resource.", - "remarks": "Volumes persist data across container restarts. Named volumes are managed\nby Docker/Podman and stored in a system-managed location.\nWhy this wrapper exists: The original `ContainerResourceBuilderExtensions.WithVolume`\nhas parameter order `(name?, target, isReadOnly)` where the optional `name` comes first.\nThis wrapper reorders parameters to `(target, name?, isReadOnly)` so the required `target`\nparameter comes first, providing a better API for polyglot consumers.", - "returns": "The same resource builder handle for chaining.", + "name": "withContainerFiles", + "capabilityId": "Aspire.Hosting/withContainerFiles", + "qualifiedName": "withContainerFiles", + "description": "Creates or updates files and folders in a container by copying them from a source path on the host.", + "remarks": "In run mode, Aspire copies the files into the container and applies owner, group, and umask options.\nIn publish mode, Aspire creates a read-only bind mount and ignores those options.\nTo produce entries dynamically (including inline file contents and OpenSSL certificate files), polyglot AppHosts\nuse the `withContainerFilesCallback` overload and build the entries via the factory methods on\n`ContainerFileSystemCallbackContext`. Passing a pre-built `ContainerFileSystemItem` collection\nremains .NET-only.", + "returns": "The resource builder.", "kind": "Method", - "signature": "withVolume(target: string, name?: string, isReadOnly?: boolean): ContainerResource", + "signature": "withContainerFiles(destinationPath: string, sourcePath: string, options?: ContainerFilesOptions): ContainerResource", "parameters": [ { - "name": "target", + "name": "destinationPath", "type": "string", - "description": "The mount path inside the container." + "description": "The destination absolute path in the container." }, { - "name": "name", + "name": "sourcePath", "type": "string", - "isOptional": true, - "description": "The volume name. If null, an anonymous volume is created." + "description": "The source path on the host to copy files from." }, { - "name": "isReadOnly", - "type": "boolean", + "name": "options", + "type": "ContainerFilesOptions", "isOptional": true, - "defaultValue": "False", - "description": "Whether the volume is read-only." + "description": "Options for the created or updated file system entries." } ], "returnType": "ContainerResource", @@ -9725,8342 +11631,10540 @@ "expandedTargetTypes": [ "Aspire.Hosting.ApplicationModel.ContainerResource" ] - } - ] - }, - { - "name": "CSharpAppResource", - "fullName": "Aspire.Hosting.ApplicationModel.CSharpAppResource", - "kind": "handle", - "implementedInterfaces": [ - "Aspire.Hosting.ApplicationModel.IComputeResource", - "Aspire.Hosting.ApplicationModel.IContainerFilesDestinationResource", - "Aspire.Hosting.ApplicationModel.IResource", - "Aspire.Hosting.ApplicationModel.IResourceWithArgs", - "Aspire.Hosting.ApplicationModel.IResourceWithEndpoints", - "Aspire.Hosting.ApplicationModel.IResourceWithEnvironment", - "Aspire.Hosting.ApplicationModel.IResourceWithProbes", - "Aspire.Hosting.ApplicationModel.IResourceWithWaitSupport", - "Aspire.Hosting.IResourceWithServiceDiscovery" - ], - "baseTypeHierarchy": [ - "Aspire.Hosting.ApplicationModel.ProjectResource", - "Aspire.Hosting.ApplicationModel.Resource" - ], - "capabilities": [] - }, - { - "name": "DistributedApplicationModel", - "fullName": "Aspire.Hosting.ApplicationModel.DistributedApplicationModel", - "kind": "handle", - "description": "Represents a distributed application.", - "implementedInterfaces": [], - "baseTypeHierarchy": [], - "capabilities": [ + }, { - "name": "findResourceByName", - "capabilityId": "Aspire.Hosting/findResourceByName", - "qualifiedName": "findResourceByName", - "description": "Finds a resource by name.", - "returns": "The matching resource, or `null` when not found.", + "name": "withContainerFilesCallback", + "capabilityId": "Aspire.Hosting/withContainerFilesCallback", + "qualifiedName": "withContainerFilesCallback", + "description": "Creates or updates files and/or folders at the destination path in the container using entries produced by a callback.", + "returns": "The resource builder.", "kind": "Method", - "signature": "findResourceByName(name: string): IResource", + "signature": "withContainerFilesCallback(destinationPath: string, callback: (arg1: ContainerFileSystemCallbackContext, arg2: cancellationToken) => Promise, options?: ContainerFilesOptions): ContainerResource", "parameters": [ { - "name": "name", + "name": "destinationPath", "type": "string", - "description": "The resource name." - } - ], - "returnType": "IResource", - "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.DistributedApplicationModel", - "expandedTargetTypes": [ - "Aspire.Hosting.ApplicationModel.DistributedApplicationModel" - ] - }, - { - "name": "getResources", - "capabilityId": "Aspire.Hosting/getResources", - "qualifiedName": "getResources", - "description": "Gets all resources in the distributed application model.", - "returns": "The resources in the model.", - "kind": "Method", - "signature": "getResources(): IResource[]", - "parameters": [], - "returnType": "IResource[]", - "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.DistributedApplicationModel", - "expandedTargetTypes": [ - "Aspire.Hosting.ApplicationModel.DistributedApplicationModel" - ] - } - ] - }, - { - "name": "DockerfileBuilder", - "fullName": "Aspire.Hosting.ApplicationModel.Docker.DockerfileBuilder", - "kind": "handle", - "description": "Builder for creating Dockerfiles programmatically.", - "implementedInterfaces": [], - "baseTypeHierarchy": [], - "capabilities": [ - { - "name": "addContainerFilesStages", - "capabilityId": "Aspire.Hosting/dockerfileBuilderAddContainerFilesStages", - "qualifiedName": "addContainerFilesStages", - "description": "Adds Dockerfile stages for published container files", - "kind": "Method", - "signature": "addContainerFilesStages(resource: IResource, logger?: ILogger): DockerfileBuilder", - "parameters": [ + "description": "The destination absolute path in the container." + }, { - "name": "resource", - "type": "IResource" + "name": "callback", + "type": "callback", + "isCallback": true, + "callbackSignature": "(arg1: ContainerFileSystemCallbackContext, arg2: cancellationToken) => Promise", + "description": "A callback that returns the file system entries to create or update. Use the factory methods on `ContainerFileSystemCallbackContext` (createFile, createDirectory, createCertificateFile) to build the entries." }, { - "name": "logger", - "type": "ILogger", - "isOptional": true + "name": "options", + "type": "ContainerFilesOptions", + "isOptional": true, + "description": "Options for the created or updated file system entries." } ], - "returnType": "DockerfileBuilder", - "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.Docker.DockerfileBuilder", + "returnType": "ContainerResource", + "returnsBuilder": true, + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.ContainerResource", "expandedTargetTypes": [ - "Aspire.Hosting.ApplicationModel.Docker.DockerfileBuilder" + "Aspire.Hosting.ApplicationModel.ContainerResource" ] }, { - "name": "arg", - "capabilityId": "Aspire.Hosting/dockerfileBuilderArg", - "qualifiedName": "arg", - "description": "Adds a global ARG statement to the Dockerfile", + "name": "withContainerName", + "capabilityId": "Aspire.Hosting/withContainerName", + "qualifiedName": "withContainerName", + "description": "Overrides the default container name for this resource. By default Aspire generates a unique container name based on the resource name and a random postfix (or a postfix based on a hash of the AppHost project path for persistent container resources). This method allows you to override that behavior with a custom name, but could lead to naming conflicts if the specified name is not unique.", + "remarks": "Combining this with `Persistent` will allow Aspire to re-use an existing container that was not\ncreated by an Aspire AppHost.", + "returns": "The resource builder.", "kind": "Method", - "signature": "arg(name: string, defaultValue?: string): DockerfileBuilder", + "signature": "withContainerName(name: string): ContainerResource", "parameters": [ { "name": "name", - "type": "string" - }, - { - "name": "defaultValue", "type": "string", - "isOptional": true + "description": "The desired container name. Must be a valid container name or your runtime will report an error." } ], - "returnType": "DockerfileBuilder", - "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.Docker.DockerfileBuilder", + "returnType": "ContainerResource", + "returnsBuilder": true, + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.ContainerResource", "expandedTargetTypes": [ - "Aspire.Hosting.ApplicationModel.Docker.DockerfileBuilder" + "Aspire.Hosting.ApplicationModel.ContainerResource" ] }, { - "name": "from", - "capabilityId": "Aspire.Hosting/dockerfileBuilderFrom", - "qualifiedName": "from", - "description": "Adds a FROM statement to start a Dockerfile stage", + "name": "withContainerNetworkAlias", + "capabilityId": "Aspire.Hosting/withContainerNetworkAlias", + "qualifiedName": "withContainerNetworkAlias", + "description": "Adds a network alias to container resource.", + "remarks": "Network aliases enable DNS resolution of the container on the network by custom names.\nBy default, containers are accessible on the network using their resource name as a DNS alias.\nThis method allows adding additional aliases for the same container.\nMultiple aliases can be added by calling this method multiple times.", + "returns": "The resource builder.", "kind": "Method", - "signature": "from(image: string, stageName?: string): DockerfileStage", + "signature": "withContainerNetworkAlias(alias: string): ContainerResource", "parameters": [ { - "name": "image", - "type": "string" - }, - { - "name": "stageName", + "name": "alias", "type": "string", - "isOptional": true + "description": "The network alias for the container." } ], - "returnType": "DockerfileStage", - "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.Docker.DockerfileBuilder", + "returnType": "ContainerResource", + "returnsBuilder": true, + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.ContainerResource", "expandedTargetTypes": [ - "Aspire.Hosting.ApplicationModel.Docker.DockerfileBuilder" + "Aspire.Hosting.ApplicationModel.ContainerResource" ] - } - ] - }, - { - "name": "DockerfileStage", - "fullName": "Aspire.Hosting.ApplicationModel.Docker.DockerfileStage", - "kind": "handle", - "description": "Represents a stage within a multi-stage Dockerfile.", - "implementedInterfaces": [], - "baseTypeHierarchy": [ - "Aspire.Hosting.ApplicationModel.Docker.DockerfileStatement" - ], - "capabilities": [ + }, { - "name": "addContainerFiles", - "capabilityId": "Aspire.Hosting/dockerfileStageAddContainerFiles", - "qualifiedName": "addContainerFiles", - "description": "Adds COPY --from statements for published container files", + "name": "withContainerRuntimeArgs", + "capabilityId": "Aspire.Hosting/withContainerRuntimeArgs", + "qualifiedName": "withContainerRuntimeArgs", + "description": "Adds a callback to be executed with a list of arguments to add to the container runtime run command when a container resource is started.", + "returns": "The resource builder.", "kind": "Method", - "signature": "addContainerFiles(resource: IResource, rootDestinationPath: string, logger?: ILogger): DockerfileStage", + "signature": "withContainerRuntimeArgs(args: string[]): ContainerResource", "parameters": [ { - "name": "resource", - "type": "IResource" - }, - { - "name": "rootDestinationPath", - "type": "string" - }, - { - "name": "logger", - "type": "ILogger", - "isOptional": true + "name": "args", + "type": "string[]", + "description": "The arguments to be passed to the container runtime run command when the container resource is started." } ], - "returnType": "DockerfileStage", - "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.Docker.DockerfileStage", + "returnType": "ContainerResource", + "returnsBuilder": true, + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.ContainerResource", "expandedTargetTypes": [ - "Aspire.Hosting.ApplicationModel.Docker.DockerfileStage" + "Aspire.Hosting.ApplicationModel.ContainerResource" ] }, { - "name": "arg", - "capabilityId": "Aspire.Hosting/dockerfileStageArg", - "qualifiedName": "arg", - "description": "Adds an ARG statement to a Dockerfile stage", + "name": "withDockerfile", + "capabilityId": "Aspire.Hosting/withDockerfile", + "qualifiedName": "withDockerfile", + "description": "Causes Aspire to build the specified container image from a Dockerfile.", + "returns": "The resource builder.", "kind": "Method", - "signature": "arg(name: string, defaultValue?: string): DockerfileStage", + "signature": "withDockerfile(contextPath: string, dockerfilePath?: string, stage?: string): ContainerResource", "parameters": [ { - "name": "name", - "type": "string" + "name": "contextPath", + "type": "string", + "description": "Path to be used as the context for the container image build." }, { - "name": "defaultValue", + "name": "dockerfilePath", "type": "string", - "isOptional": true + "isOptional": true, + "description": "Path to the Dockerfile relative to the `contextPath`. Defaults to \"Dockerfile\" if not specified." + }, + { + "name": "stage", + "type": "string", + "isOptional": true, + "description": "The stage representing the image to be published in a multi-stage Dockerfile." } ], - "returnType": "DockerfileStage", - "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.Docker.DockerfileStage", + "returnType": "ContainerResource", + "returnsBuilder": true, + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.ContainerResource", "expandedTargetTypes": [ - "Aspire.Hosting.ApplicationModel.Docker.DockerfileStage" + "Aspire.Hosting.ApplicationModel.ContainerResource" ] }, { - "name": "cmd", - "capabilityId": "Aspire.Hosting/cmd", - "qualifiedName": "cmd", - "description": "Adds a CMD statement to a Dockerfile stage", + "name": "withDockerfileBuilder", + "capabilityId": "Aspire.Hosting/withDockerfileBuilder", + "qualifiedName": "withDockerfileBuilder", + "description": "Configures the resource to use a programmatically generated Dockerfile", + "remarks": "This method provides a programmatic way to build Dockerfiles using the `DockerfileBuilder` API\ninstead of string manipulation. Callbacks can be composed by calling this method multiple times - each callback will be invoked\nin order to build up the final Dockerfile.\nThe `contextPath` is relative to the AppHost directory unless it is fully qualified.\nCreates a container with a programmatically built Dockerfile using fluent API:\n```\nvar builder = DistributedApplication.CreateBuilder(args);\nbuilder.AddContainer(\"mycontainer\", \"myimage\")\n.WithDockerfileBuilder(\"path/to/context\", context =>\n{\ncontext.Builder.From(\"alpine:latest\")\n.WorkDir(\"/app\")\n.Run(\"apk add curl\")\n.Copy(\".\", \".\")\n.Cmd([\"./myapp\"]);\nreturn Task.CompletedTask;\n});\nbuilder.Build().Run();\n```", + "returns": "The resource builder.", "kind": "Method", - "signature": "cmd(command: string[]): DockerfileStage", + "signature": "withDockerfileBuilder(contextPath: string, callback: (arg: DockerfileBuilderCallbackContext) => Promise, stage?: string): ContainerResource", "parameters": [ { - "name": "command", - "type": "string[]" + "name": "contextPath", + "type": "string", + "description": "Path to be used as the context for the container image build." + }, + { + "name": "callback", + "type": "callback", + "isCallback": true, + "callbackSignature": "(arg: DockerfileBuilderCallbackContext) => Promise", + "description": "A callback that uses the `DockerfileBuilder` API to construct the Dockerfile." + }, + { + "name": "stage", + "type": "string", + "isOptional": true, + "description": "The stage representing the image to be published in a multi-stage Dockerfile." } ], - "returnType": "DockerfileStage", - "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.Docker.DockerfileStage", + "returnType": "ContainerResource", + "returnsBuilder": true, + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.ContainerResource", "expandedTargetTypes": [ - "Aspire.Hosting.ApplicationModel.Docker.DockerfileStage" + "Aspire.Hosting.ApplicationModel.ContainerResource" ] }, { - "name": "comment", - "capabilityId": "Aspire.Hosting/comment", - "qualifiedName": "comment", - "description": "Adds a comment to a Dockerfile stage", + "name": "withDockerfileFactory", + "capabilityId": "Aspire.Hosting/withDockerfileFactory", + "qualifiedName": "withDockerfileFactory", + "description": "Builds the specified container image from a Dockerfile generated by an asynchronous factory function.", + "remarks": "When this method is called, an annotation is added to the `ContainerResource` that specifies the context path\nand a factory function that generates Dockerfile content. The factory is invoked at build time to produce the Dockerfile,\nwhich is then written to a temporary file and used by the orchestrator to build the container image.\nThe `contextPath` is relative to the AppHost directory unless it is fully qualified.\nThe factory function is invoked once during the build process to generate the Dockerfile content.\nThe output is trusted and not validated.\nCreates a container called `mycontainer` with a dynamically generated Dockerfile.\n```\nvar builder = DistributedApplication.CreateBuilder(args);\nbuilder.AddContainer(\"mycontainer\", \"myimage\")\n.WithDockerfileFactory(\"path/to/context\", async context =>\n{\nvar template = await File.ReadAllTextAsync(\"template.dockerfile\", context.CancellationToken);\nreturn template.Replace(\"{{VERSION}}\", \"1.0\");\n});\nbuilder.Build().Run();\n```", + "returns": "The resource builder.", "kind": "Method", - "signature": "comment(comment: string): DockerfileStage", + "signature": "withDockerfileFactory(contextPath: string, dockerfileFactory: (arg: DockerfileFactoryContext) => Promise, stage?: string): ContainerResource", "parameters": [ { - "name": "comment", - "type": "string" + "name": "contextPath", + "type": "string", + "description": "Path to be used as the context for the container image build." + }, + { + "name": "dockerfileFactory", + "type": "callback", + "isCallback": true, + "callbackSignature": "(arg: DockerfileFactoryContext) => Promise", + "description": "An asynchronous function that returns the Dockerfile content as a string." + }, + { + "name": "stage", + "type": "string", + "isOptional": true, + "description": "The stage representing the image to be published in a multi-stage Dockerfile." } ], - "returnType": "DockerfileStage", - "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.Docker.DockerfileStage", + "returnType": "ContainerResource", + "returnsBuilder": true, + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.ContainerResource", "expandedTargetTypes": [ - "Aspire.Hosting.ApplicationModel.Docker.DockerfileStage" + "Aspire.Hosting.ApplicationModel.ContainerResource" ] }, { - "name": "copy", - "capabilityId": "Aspire.Hosting/dockerfileStageCopy", - "qualifiedName": "copy", - "description": "Adds a COPY statement to a Dockerfile stage", + "name": "withEntrypoint", + "capabilityId": "Aspire.Hosting/withEntrypoint", + "qualifiedName": "withEntrypoint", + "description": "Sets the Entrypoint for the container.", + "returns": "The resource builder.", "kind": "Method", - "signature": "copy(source: string, destination: string, chown?: string): DockerfileStage", + "signature": "withEntrypoint(entrypoint: string): ContainerResource", "parameters": [ { - "name": "source", - "type": "string" - }, - { - "name": "destination", - "type": "string" - }, - { - "name": "chown", + "name": "entrypoint", "type": "string", - "isOptional": true + "description": "The new entrypoint for the container." } ], - "returnType": "DockerfileStage", - "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.Docker.DockerfileStage", + "returnType": "ContainerResource", + "returnsBuilder": true, + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.ContainerResource", "expandedTargetTypes": [ - "Aspire.Hosting.ApplicationModel.Docker.DockerfileStage" + "Aspire.Hosting.ApplicationModel.ContainerResource" ] }, { - "name": "copyFrom", - "capabilityId": "Aspire.Hosting/dockerfileStageCopyFrom", - "qualifiedName": "copyFrom", - "description": "Adds a COPY --from statement to a Dockerfile stage", + "name": "withImage", + "capabilityId": "Aspire.Hosting/withImage", + "qualifiedName": "withImage", + "description": "Allows overriding the image on a container.", + "returns": "The resource builder.", "kind": "Method", - "signature": "copyFrom(from: string, source: string, destination: string, chown?: string): DockerfileStage", + "signature": "withImage(image: string, tag?: string): ContainerResource", "parameters": [ { - "name": "from", - "type": "string" - }, - { - "name": "source", - "type": "string" - }, - { - "name": "destination", - "type": "string" + "name": "image", + "type": "string", + "description": "Image value." }, { - "name": "chown", + "name": "tag", "type": "string", - "isOptional": true + "isOptional": true, + "description": "Tag value." } ], - "returnType": "DockerfileStage", - "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.Docker.DockerfileStage", - "expandedTargetTypes": [ - "Aspire.Hosting.ApplicationModel.Docker.DockerfileStage" - ] - }, - { - "name": "emptyLine", - "capabilityId": "Aspire.Hosting/emptyLine", - "qualifiedName": "emptyLine", - "description": "Adds an empty line to a Dockerfile stage", - "kind": "Method", - "signature": "emptyLine(): DockerfileStage", - "parameters": [], - "returnType": "DockerfileStage", - "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.Docker.DockerfileStage", + "returnType": "ContainerResource", + "returnsBuilder": true, + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.ContainerResource", "expandedTargetTypes": [ - "Aspire.Hosting.ApplicationModel.Docker.DockerfileStage" + "Aspire.Hosting.ApplicationModel.ContainerResource" ] }, { - "name": "entrypoint", - "capabilityId": "Aspire.Hosting/entrypoint", - "qualifiedName": "entrypoint", - "description": "Adds an ENTRYPOINT statement to a Dockerfile stage", + "name": "withImagePullPolicy", + "capabilityId": "Aspire.Hosting/withImagePullPolicy", + "qualifiedName": "withImagePullPolicy", + "description": "Sets the pull policy for the container resource.", + "returns": "The resource builder.", "kind": "Method", - "signature": "entrypoint(command: string[]): DockerfileStage", + "signature": "withImagePullPolicy(pullPolicy: ImagePullPolicy): ContainerResource", "parameters": [ { - "name": "command", - "type": "string[]" + "name": "pullPolicy", + "type": "ImagePullPolicy", + "description": "The pull policy behavior for the container resource." } ], - "returnType": "DockerfileStage", - "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.Docker.DockerfileStage", + "returnType": "ContainerResource", + "returnsBuilder": true, + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.ContainerResource", "expandedTargetTypes": [ - "Aspire.Hosting.ApplicationModel.Docker.DockerfileStage" + "Aspire.Hosting.ApplicationModel.ContainerResource" ] }, { - "name": "env", - "capabilityId": "Aspire.Hosting/env", - "qualifiedName": "env", - "description": "Adds an ENV statement to a Dockerfile stage", + "name": "withImageRegistry", + "capabilityId": "Aspire.Hosting/withImageRegistry", + "qualifiedName": "withImageRegistry", + "description": "Allows overriding the image registry on a container.", + "returns": "The resource builder.", "kind": "Method", - "signature": "env(name: string, value: string): DockerfileStage", + "signature": "withImageRegistry(registry: string): ContainerResource", "parameters": [ { - "name": "name", - "type": "string" - }, - { - "name": "value", - "type": "string" + "name": "registry", + "type": "string", + "description": "Registry value." } ], - "returnType": "DockerfileStage", - "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.Docker.DockerfileStage", + "returnType": "ContainerResource", + "returnsBuilder": true, + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.ContainerResource", "expandedTargetTypes": [ - "Aspire.Hosting.ApplicationModel.Docker.DockerfileStage" + "Aspire.Hosting.ApplicationModel.ContainerResource" ] }, { - "name": "expose", - "capabilityId": "Aspire.Hosting/expose", - "qualifiedName": "expose", - "description": "Adds an EXPOSE statement to a Dockerfile stage", + "name": "withImageSHA256", + "capabilityId": "Aspire.Hosting/withImageSHA256", + "qualifiedName": "withImageSHA256", + "description": "Allows setting the image to a specific sha256 on a container.", + "returns": "The resource builder.", "kind": "Method", - "signature": "expose(port: number): DockerfileStage", + "signature": "withImageSHA256(sha256: string): ContainerResource", "parameters": [ { - "name": "port", - "type": "number" + "name": "sha256", + "type": "string", + "description": "Registry value." } ], - "returnType": "DockerfileStage", - "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.Docker.DockerfileStage", + "returnType": "ContainerResource", + "returnsBuilder": true, + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.ContainerResource", "expandedTargetTypes": [ - "Aspire.Hosting.ApplicationModel.Docker.DockerfileStage" + "Aspire.Hosting.ApplicationModel.ContainerResource" ] }, { - "name": "run", - "capabilityId": "Aspire.Hosting/dockerfileStageRun", - "qualifiedName": "run", - "description": "Adds a RUN statement to a Dockerfile stage", + "name": "withImageTag", + "capabilityId": "Aspire.Hosting/withImageTag", + "qualifiedName": "withImageTag", + "description": "Allows overriding the image tag on a container.", + "returns": "The resource builder.", "kind": "Method", - "signature": "run(command: string): DockerfileStage", + "signature": "withImageTag(tag: string): ContainerResource", "parameters": [ { - "name": "command", - "type": "string" + "name": "tag", + "type": "string", + "description": "Tag value." } ], - "returnType": "DockerfileStage", - "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.Docker.DockerfileStage", + "returnType": "ContainerResource", + "returnsBuilder": true, + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.ContainerResource", "expandedTargetTypes": [ - "Aspire.Hosting.ApplicationModel.Docker.DockerfileStage" + "Aspire.Hosting.ApplicationModel.ContainerResource" ] }, { - "name": "runWithMounts", - "capabilityId": "Aspire.Hosting/runWithMounts", - "qualifiedName": "runWithMounts", - "description": "Adds a RUN statement with mounts to a Dockerfile stage", + "name": "withLifetime", + "capabilityId": "Aspire.Hosting/withLifetime", + "qualifiedName": "withLifetime", + "description": "Sets the lifetime behavior of the container resource.", + "remarks": "Prefer `WithPersistentLifetime``1` or\n`WithSessionLifetime``1` for new code.\nMarking a container resource to have a `Persistent` lifetime.\n```\nvar builder = DistributedApplication.CreateBuilder(args);\nbuilder.AddContainer(\"mycontainer\", \"myimage\")\n.WithPersistentLifetime();\nbuilder.Build().Run();\n```", + "returns": "The resource builder.", "kind": "Method", - "signature": "runWithMounts(command: string, mounts: string[]): DockerfileStage", + "signature": "withLifetime(lifetime: ContainerLifetime): ContainerResource", "parameters": [ { - "name": "command", - "type": "string" - }, - { - "name": "mounts", - "type": "string[]" + "name": "lifetime", + "type": "ContainerLifetime", + "description": "The lifetime behavior of the container resource. The default behavior is `Session`." } ], - "returnType": "DockerfileStage", - "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.Docker.DockerfileStage", + "returnType": "ContainerResource", + "returnsBuilder": true, + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.ContainerResource", "expandedTargetTypes": [ - "Aspire.Hosting.ApplicationModel.Docker.DockerfileStage" + "Aspire.Hosting.ApplicationModel.ContainerResource" ] }, { - "name": "user", - "capabilityId": "Aspire.Hosting/user", - "qualifiedName": "user", - "description": "Adds a USER statement to a Dockerfile stage", + "name": "withVolume", + "capabilityId": "Aspire.Hosting/withVolume", + "qualifiedName": "withVolume", + "description": "Adds a volume to a container resource.", + "remarks": "Volumes persist data across container restarts. Named volumes are managed\nby Docker/Podman and stored in a system-managed location.\nWhy this wrapper exists: The original `ContainerResourceBuilderExtensions.WithVolume`\nhas parameter order `(name?, target, isReadOnly)` where the optional `name` comes first.\nThis wrapper reorders parameters to `(target, name?, isReadOnly)` so the required `target`\nparameter comes first, providing a better API for polyglot consumers.", + "returns": "The same resource builder handle for chaining.", "kind": "Method", - "signature": "user(user: string): DockerfileStage", + "signature": "withVolume(target: string, name?: string, isReadOnly?: boolean): ContainerResource", "parameters": [ { - "name": "user", - "type": "string" - } - ], - "returnType": "DockerfileStage", - "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.Docker.DockerfileStage", - "expandedTargetTypes": [ - "Aspire.Hosting.ApplicationModel.Docker.DockerfileStage" - ] - }, - { - "name": "workDir", - "capabilityId": "Aspire.Hosting/workDir", - "qualifiedName": "workDir", - "description": "Adds a WORKDIR statement to a Dockerfile stage", - "kind": "Method", - "signature": "workDir(path: string): DockerfileStage", - "parameters": [ + "name": "target", + "type": "string", + "description": "The mount path inside the container." + }, { - "name": "path", - "type": "string" + "name": "name", + "type": "string", + "isOptional": true, + "description": "The volume name. If null, an anonymous volume is created." + }, + { + "name": "isReadOnly", + "type": "boolean", + "isOptional": true, + "defaultValue": "False", + "description": "Whether the volume is read-only." } ], - "returnType": "DockerfileStage", - "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.Docker.DockerfileStage", + "returnType": "ContainerResource", + "returnsBuilder": true, + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.ContainerResource", "expandedTargetTypes": [ - "Aspire.Hosting.ApplicationModel.Docker.DockerfileStage" + "Aspire.Hosting.ApplicationModel.ContainerResource" ] } ] }, { - "name": "DockerfileBuilderCallbackContext", - "fullName": "Aspire.Hosting.ApplicationModel.DockerfileBuilderCallbackContext", + "name": "CSharpAppResource", + "fullName": "Aspire.Hosting.ApplicationModel.CSharpAppResource", "kind": "handle", - "exposeProperties": true, - "description": "Provides context information for Dockerfile build callbacks.", + "implementedInterfaces": [ + "Aspire.Hosting.ApplicationModel.IComputeResource", + "Aspire.Hosting.ApplicationModel.IContainerFilesDestinationResource", + "Aspire.Hosting.ApplicationModel.IResource", + "Aspire.Hosting.ApplicationModel.IResourceWithArgs", + "Aspire.Hosting.ApplicationModel.IResourceWithEndpoints", + "Aspire.Hosting.ApplicationModel.IResourceWithEnvironment", + "Aspire.Hosting.ApplicationModel.IResourceWithProbes", + "Aspire.Hosting.ApplicationModel.IResourceWithWaitSupport", + "Aspire.Hosting.IResourceWithServiceDiscovery" + ], + "baseTypeHierarchy": [ + "Aspire.Hosting.ApplicationModel.ProjectResource", + "Aspire.Hosting.ApplicationModel.Resource" + ], + "capabilities": [] + }, + { + "name": "DistributedApplicationModel", + "fullName": "Aspire.Hosting.ApplicationModel.DistributedApplicationModel", + "kind": "handle", + "description": "Represents a distributed application.", "implementedInterfaces": [], "baseTypeHierarchy": [], "capabilities": [ { - "name": "builder", - "capabilityId": "Aspire.Hosting.ApplicationModel/DockerfileBuilderCallbackContext.builder", - "qualifiedName": "DockerfileBuilderCallbackContext.builder", - "description": "Gets the Dockerfile builder instance.", - "kind": "PropertyGetter", - "signature": "builder(): DockerfileBuilder", - "parameters": [], - "returnType": "DockerfileBuilder", - "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.DockerfileBuilderCallbackContext", - "expandedTargetTypes": [ - "Aspire.Hosting.ApplicationModel.DockerfileBuilderCallbackContext" - ] - }, - { - "name": "cancellationToken", - "capabilityId": "Aspire.Hosting.ApplicationModel/DockerfileBuilderCallbackContext.cancellationToken", - "qualifiedName": "DockerfileBuilderCallbackContext.cancellationToken", - "description": "Gets the cancellation token to observe while waiting for the task to complete.", - "kind": "PropertyGetter", - "signature": "cancellationToken(): cancellationToken", - "parameters": [], - "returnType": "cancellationToken", - "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.DockerfileBuilderCallbackContext", - "expandedTargetTypes": [ - "Aspire.Hosting.ApplicationModel.DockerfileBuilderCallbackContext" - ] - }, - { - "name": "resource", - "capabilityId": "Aspire.Hosting.ApplicationModel/DockerfileBuilderCallbackContext.resource", - "qualifiedName": "DockerfileBuilderCallbackContext.resource", - "description": "Gets the resource being built.", - "kind": "PropertyGetter", - "signature": "resource(): IResource", - "parameters": [], + "name": "findResourceByName", + "capabilityId": "Aspire.Hosting/findResourceByName", + "qualifiedName": "findResourceByName", + "description": "Finds a resource by name.", + "returns": "The matching resource, or `null` when not found.", + "kind": "Method", + "signature": "findResourceByName(name: string): IResource", + "parameters": [ + { + "name": "name", + "type": "string", + "description": "The resource name." + } + ], "returnType": "IResource", - "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.DockerfileBuilderCallbackContext", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.DistributedApplicationModel", "expandedTargetTypes": [ - "Aspire.Hosting.ApplicationModel.DockerfileBuilderCallbackContext" + "Aspire.Hosting.ApplicationModel.DistributedApplicationModel" ] }, { - "name": "services", - "capabilityId": "Aspire.Hosting.ApplicationModel/DockerfileBuilderCallbackContext.services", - "qualifiedName": "DockerfileBuilderCallbackContext.services", - "description": "Gets the service provider for dependency injection.", - "kind": "PropertyGetter", - "signature": "services(): IServiceProvider", + "name": "getResources", + "capabilityId": "Aspire.Hosting/getResources", + "qualifiedName": "getResources", + "description": "Gets all resources in the distributed application model.", + "returns": "The resources in the model.", + "kind": "Method", + "signature": "getResources(): IResource[]", "parameters": [], - "returnType": "IServiceProvider", - "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.DockerfileBuilderCallbackContext", + "returnType": "IResource[]", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.DistributedApplicationModel", "expandedTargetTypes": [ - "Aspire.Hosting.ApplicationModel.DockerfileBuilderCallbackContext" + "Aspire.Hosting.ApplicationModel.DistributedApplicationModel" ] } ] }, { - "name": "DockerfileFactoryContext", - "fullName": "Aspire.Hosting.ApplicationModel.DockerfileFactoryContext", + "name": "DockerfileBuilder", + "fullName": "Aspire.Hosting.ApplicationModel.Docker.DockerfileBuilder", "kind": "handle", - "description": "Provides context for Dockerfile factory functions.", + "description": "Builder for creating Dockerfiles programmatically.", "implementedInterfaces": [], "baseTypeHierarchy": [], "capabilities": [ { - "name": "resource", - "capabilityId": "Aspire.Hosting.ApplicationModel/DockerfileFactoryContext.resource", - "qualifiedName": "DockerfileFactoryContext.resource", - "description": "Gets the resource for which the Dockerfile is being generated. This allows factory functions to query resource annotations and properties to customize the generated Dockerfile. ``` var containerAnnotation = context.Resource.Annotations.OfType().FirstOrDefault(); var baseImage = containerAnnotation?.Image ?? \"alpine:latest\"; ```", - "kind": "PropertyGetter", - "signature": "resource(): IResource", - "parameters": [], - "returnType": "IResource", - "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.DockerfileFactoryContext", + "name": "addContainerFilesStages", + "capabilityId": "Aspire.Hosting/dockerfileBuilderAddContainerFilesStages", + "qualifiedName": "addContainerFilesStages", + "description": "Adds Dockerfile stages for published container files", + "kind": "Method", + "signature": "addContainerFilesStages(resource: IResource, logger?: ILogger): DockerfileBuilder", + "parameters": [ + { + "name": "resource", + "type": "IResource" + }, + { + "name": "logger", + "type": "ILogger", + "isOptional": true + } + ], + "returnType": "DockerfileBuilder", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.Docker.DockerfileBuilder", "expandedTargetTypes": [ - "Aspire.Hosting.ApplicationModel.DockerfileFactoryContext" + "Aspire.Hosting.ApplicationModel.Docker.DockerfileBuilder" + ] + }, + { + "name": "arg", + "capabilityId": "Aspire.Hosting/dockerfileBuilderArg", + "qualifiedName": "arg", + "description": "Adds a global ARG statement to the Dockerfile", + "kind": "Method", + "signature": "arg(name: string, defaultValue?: string): DockerfileBuilder", + "parameters": [ + { + "name": "name", + "type": "string" + }, + { + "name": "defaultValue", + "type": "string", + "isOptional": true + } + ], + "returnType": "DockerfileBuilder", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.Docker.DockerfileBuilder", + "expandedTargetTypes": [ + "Aspire.Hosting.ApplicationModel.Docker.DockerfileBuilder" + ] + }, + { + "name": "from", + "capabilityId": "Aspire.Hosting/dockerfileBuilderFrom", + "qualifiedName": "from", + "description": "Adds a FROM statement to start a Dockerfile stage", + "kind": "Method", + "signature": "from(image: string, stageName?: string): DockerfileStage", + "parameters": [ + { + "name": "image", + "type": "string" + }, + { + "name": "stageName", + "type": "string", + "isOptional": true + } + ], + "returnType": "DockerfileStage", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.Docker.DockerfileBuilder", + "expandedTargetTypes": [ + "Aspire.Hosting.ApplicationModel.Docker.DockerfileBuilder" ] } ] }, { - "name": "DotnetToolResource", - "fullName": "Aspire.Hosting.ApplicationModel.DotnetToolResource", + "name": "DockerfileStage", + "fullName": "Aspire.Hosting.ApplicationModel.Docker.DockerfileStage", "kind": "handle", - "implementedInterfaces": [ - "Aspire.Hosting.ApplicationModel.IComputeResource", - "Aspire.Hosting.ApplicationModel.IResource", - "Aspire.Hosting.ApplicationModel.IResourceWithArgs", - "Aspire.Hosting.ApplicationModel.IResourceWithEndpoints", - "Aspire.Hosting.ApplicationModel.IResourceWithEnvironment", - "Aspire.Hosting.ApplicationModel.IResourceWithProbes", - "Aspire.Hosting.ApplicationModel.IResourceWithWaitSupport" - ], + "description": "Represents a stage within a multi-stage Dockerfile.", + "implementedInterfaces": [], "baseTypeHierarchy": [ - "Aspire.Hosting.ApplicationModel.ExecutableResource", - "Aspire.Hosting.ApplicationModel.Resource" + "Aspire.Hosting.ApplicationModel.Docker.DockerfileStatement" ], "capabilities": [ { - "name": "withToolIgnoreExistingFeeds", - "capabilityId": "Aspire.Hosting/withToolIgnoreExistingFeeds", - "qualifiedName": "withToolIgnoreExistingFeeds", - "description": "Configures the tool to use only the specified package sources, ignoring existing NuGet configuration.", - "returns": "The resource builder.", + "name": "addContainerFiles", + "capabilityId": "Aspire.Hosting/dockerfileStageAddContainerFiles", + "qualifiedName": "addContainerFiles", + "description": "Adds COPY --from statements for published container files", "kind": "Method", - "signature": "withToolIgnoreExistingFeeds(): DotnetToolResource", - "parameters": [], - "returnType": "DotnetToolResource", - "returnsBuilder": true, - "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.DotnetToolResource", + "signature": "addContainerFiles(resource: IResource, rootDestinationPath: string, logger?: ILogger): DockerfileStage", + "parameters": [ + { + "name": "resource", + "type": "IResource" + }, + { + "name": "rootDestinationPath", + "type": "string" + }, + { + "name": "logger", + "type": "ILogger", + "isOptional": true + } + ], + "returnType": "DockerfileStage", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.Docker.DockerfileStage", "expandedTargetTypes": [ - "Aspire.Hosting.ApplicationModel.DotnetToolResource" + "Aspire.Hosting.ApplicationModel.Docker.DockerfileStage" ] }, { - "name": "withToolIgnoreFailedSources", - "capabilityId": "Aspire.Hosting/withToolIgnoreFailedSources", - "qualifiedName": "withToolIgnoreFailedSources", - "description": "Configures the resource to treat package source failures as warnings.", - "returns": "The resource builder.", + "name": "arg", + "capabilityId": "Aspire.Hosting/dockerfileStageArg", + "qualifiedName": "arg", + "description": "Adds an ARG statement to a Dockerfile stage", "kind": "Method", - "signature": "withToolIgnoreFailedSources(): DotnetToolResource", - "parameters": [], - "returnType": "DotnetToolResource", - "returnsBuilder": true, - "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.DotnetToolResource", + "signature": "arg(name: string, defaultValue?: string): DockerfileStage", + "parameters": [ + { + "name": "name", + "type": "string" + }, + { + "name": "defaultValue", + "type": "string", + "isOptional": true + } + ], + "returnType": "DockerfileStage", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.Docker.DockerfileStage", "expandedTargetTypes": [ - "Aspire.Hosting.ApplicationModel.DotnetToolResource" + "Aspire.Hosting.ApplicationModel.Docker.DockerfileStage" ] }, { - "name": "withToolPackage", - "capabilityId": "Aspire.Hosting/withToolPackage", - "qualifiedName": "withToolPackage", - "description": "Sets the package identifier for the tool configuration associated with the resource builder.", - "returns": "The resource builder.", + "name": "cmd", + "capabilityId": "Aspire.Hosting/cmd", + "qualifiedName": "cmd", + "description": "Adds a CMD statement to a Dockerfile stage", "kind": "Method", - "signature": "withToolPackage(packageId: string): DotnetToolResource", + "signature": "cmd(command: string[]): DockerfileStage", "parameters": [ { - "name": "packageId", - "type": "string", - "description": "The package identifier to assign to the tool configuration. Cannot be null." + "name": "command", + "type": "string[]" } ], - "returnType": "DotnetToolResource", - "returnsBuilder": true, - "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.DotnetToolResource", + "returnType": "DockerfileStage", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.Docker.DockerfileStage", "expandedTargetTypes": [ - "Aspire.Hosting.ApplicationModel.DotnetToolResource" + "Aspire.Hosting.ApplicationModel.Docker.DockerfileStage" ] }, { - "name": "withToolPrerelease", - "capabilityId": "Aspire.Hosting/withToolPrerelease", - "qualifiedName": "withToolPrerelease", - "description": "Allows prerelease versions of the tool to be used", - "returns": "The resource builder.", + "name": "comment", + "capabilityId": "Aspire.Hosting/comment", + "qualifiedName": "comment", + "description": "Adds a comment to a Dockerfile stage", "kind": "Method", - "signature": "withToolPrerelease(): DotnetToolResource", - "parameters": [], - "returnType": "DotnetToolResource", - "returnsBuilder": true, - "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.DotnetToolResource", + "signature": "comment(comment: string): DockerfileStage", + "parameters": [ + { + "name": "comment", + "type": "string" + } + ], + "returnType": "DockerfileStage", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.Docker.DockerfileStage", "expandedTargetTypes": [ - "Aspire.Hosting.ApplicationModel.DotnetToolResource" + "Aspire.Hosting.ApplicationModel.Docker.DockerfileStage" ] }, { - "name": "withToolSource", - "capabilityId": "Aspire.Hosting/withToolSource", - "qualifiedName": "withToolSource", - "description": "Adds a NuGet package source for tool acquisition.", - "returns": "The resource builder.", + "name": "copy", + "capabilityId": "Aspire.Hosting/dockerfileStageCopy", + "qualifiedName": "copy", + "description": "Adds a COPY statement to a Dockerfile stage", "kind": "Method", - "signature": "withToolSource(source: string): DotnetToolResource", + "signature": "copy(source: string, destination: string, chown?: string): DockerfileStage", "parameters": [ { "name": "source", + "type": "string" + }, + { + "name": "destination", + "type": "string" + }, + { + "name": "chown", "type": "string", - "description": "The source to add." + "isOptional": true } ], - "returnType": "DotnetToolResource", - "returnsBuilder": true, - "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.DotnetToolResource", + "returnType": "DockerfileStage", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.Docker.DockerfileStage", "expandedTargetTypes": [ - "Aspire.Hosting.ApplicationModel.DotnetToolResource" + "Aspire.Hosting.ApplicationModel.Docker.DockerfileStage" ] }, { - "name": "withToolVersion", - "capabilityId": "Aspire.Hosting/withToolVersion", - "qualifiedName": "withToolVersion", - "description": "Sets the package version for a tool to use.", - "returns": "The resource builder.", + "name": "copyFrom", + "capabilityId": "Aspire.Hosting/dockerfileStageCopyFrom", + "qualifiedName": "copyFrom", + "description": "Adds a COPY --from statement to a Dockerfile stage", "kind": "Method", - "signature": "withToolVersion(version: string): DotnetToolResource", + "signature": "copyFrom(from: string, source: string, destination: string, chown?: string): DockerfileStage", "parameters": [ { - "name": "version", - "type": "string", - "description": "The package version to use" - } + "name": "from", + "type": "string" + }, + { + "name": "source", + "type": "string" + }, + { + "name": "destination", + "type": "string" + }, + { + "name": "chown", + "type": "string", + "isOptional": true + } ], - "returnType": "DotnetToolResource", - "returnsBuilder": true, - "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.DotnetToolResource", - "expandedTargetTypes": [ - "Aspire.Hosting.ApplicationModel.DotnetToolResource" - ] - } - ] - }, - { - "name": "EndpointReference", - "fullName": "Aspire.Hosting.ApplicationModel.EndpointReference", - "kind": "handle", - "description": "Represents an endpoint reference for a resource with endpoints.", - "implementedInterfaces": [ - "Aspire.Hosting.ApplicationModel.IExpressionValue", - "Aspire.Hosting.ApplicationModel.IManifestExpressionProvider", - "Aspire.Hosting.ApplicationModel.IValueProvider", - "Aspire.Hosting.ApplicationModel.IValueWithReferences" - ], - "baseTypeHierarchy": [], - "capabilities": [ - { - "name": "endpointName", - "capabilityId": "Aspire.Hosting.ApplicationModel/EndpointReference.endpointName", - "qualifiedName": "EndpointReference.endpointName", - "description": "Gets the name of the endpoint associated with the endpoint reference.", - "kind": "PropertyGetter", - "signature": "endpointName(): string", - "parameters": [], - "returnType": "string", - "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.EndpointReference", - "expandedTargetTypes": [ - "Aspire.Hosting.ApplicationModel.EndpointReference" - ] - }, - { - "name": "errorMessage", - "capabilityId": "Aspire.Hosting.ApplicationModel/EndpointReference.errorMessage", - "qualifiedName": "EndpointReference.errorMessage", - "description": "Gets or sets a custom error message to be thrown when the endpoint annotation is not found.", - "kind": "PropertyGetter", - "signature": "errorMessage(): string", - "parameters": [], - "returnType": "string", - "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.EndpointReference", + "returnType": "DockerfileStage", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.Docker.DockerfileStage", "expandedTargetTypes": [ - "Aspire.Hosting.ApplicationModel.EndpointReference" + "Aspire.Hosting.ApplicationModel.Docker.DockerfileStage" ] }, { - "name": "excludeReferenceEndpoint", - "capabilityId": "Aspire.Hosting.ApplicationModel/EndpointReference.excludeReferenceEndpoint", - "qualifiedName": "EndpointReference.excludeReferenceEndpoint", - "description": "Gets a value indicating whether this endpoint is excluded from the default set when referencing the resource's endpoints.", - "remarks": "Returns `false` if the endpoint annotation has not been added to the resource yet.\nOnce the annotation exists, this property delegates to `ExcludeReferenceEndpoint`.", - "kind": "PropertyGetter", - "signature": "excludeReferenceEndpoint(): boolean", + "name": "emptyLine", + "capabilityId": "Aspire.Hosting/emptyLine", + "qualifiedName": "emptyLine", + "description": "Adds an empty line to a Dockerfile stage", + "kind": "Method", + "signature": "emptyLine(): DockerfileStage", "parameters": [], - "returnType": "boolean", - "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.EndpointReference", + "returnType": "DockerfileStage", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.Docker.DockerfileStage", "expandedTargetTypes": [ - "Aspire.Hosting.ApplicationModel.EndpointReference" + "Aspire.Hosting.ApplicationModel.Docker.DockerfileStage" ] }, { - "name": "exists", - "capabilityId": "Aspire.Hosting.ApplicationModel/EndpointReference.exists", - "qualifiedName": "EndpointReference.exists", - "description": "Gets a value indicating whether the endpoint exists.", - "kind": "PropertyGetter", - "signature": "exists(): boolean", - "parameters": [], - "returnType": "boolean", - "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.EndpointReference", + "name": "entrypoint", + "capabilityId": "Aspire.Hosting/entrypoint", + "qualifiedName": "entrypoint", + "description": "Adds an ENTRYPOINT statement to a Dockerfile stage", + "kind": "Method", + "signature": "entrypoint(command: string[]): DockerfileStage", + "parameters": [ + { + "name": "command", + "type": "string[]" + } + ], + "returnType": "DockerfileStage", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.Docker.DockerfileStage", "expandedTargetTypes": [ - "Aspire.Hosting.ApplicationModel.EndpointReference" + "Aspire.Hosting.ApplicationModel.Docker.DockerfileStage" ] }, { - "name": "getTlsValue", - "capabilityId": "Aspire.Hosting.ApplicationModel/EndpointReference.getTlsValue", - "qualifiedName": "EndpointReference.getTlsValue", - "description": "Gets a conditional expression that resolves to the enabledValue when TLS is enabled on the endpoint, or to the disabledValue otherwise.", - "remarks": "The returned expression evaluates the TLS state lazily each time its value is resolved, making it\nsafe to embed in a `ReferenceExpression` that is built before TLS is configured\n(e.g., before `BeforeStartEvent` fires). Because the condition and branches are declarative,\npolyglot code generators can translate this into native conditional constructs in any target language.", - "returns": "A conditional `ReferenceExpression` whose value tracks the TLS state of this endpoint.", - "kind": "InstanceMethod", - "signature": "getTlsValue(enabledValue: ReferenceExpression, disabledValue: ReferenceExpression): ReferenceExpression", + "name": "env", + "capabilityId": "Aspire.Hosting/env", + "qualifiedName": "env", + "description": "Adds an ENV statement to a Dockerfile stage", + "kind": "Method", + "signature": "env(name: string, value: string): DockerfileStage", "parameters": [ { - "name": "enabledValue", - "type": "ReferenceExpression", - "description": "The expression to evaluate when TLS is enabled (e.g., `\",ssl=true\"`)." + "name": "name", + "type": "string" }, { - "name": "disabledValue", - "type": "ReferenceExpression", - "description": "The expression to evaluate when TLS is not enabled." + "name": "value", + "type": "string" } ], - "returnType": "ReferenceExpression", - "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.EndpointReference", + "returnType": "DockerfileStage", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.Docker.DockerfileStage", "expandedTargetTypes": [ - "Aspire.Hosting.ApplicationModel.EndpointReference" + "Aspire.Hosting.ApplicationModel.Docker.DockerfileStage" ] }, { - "name": "getValueAsync", - "capabilityId": "Aspire.Hosting.ApplicationModel/EndpointReference.getValueAsync", - "qualifiedName": "EndpointReference.getValueAsync", - "description": "Gets the URL of the endpoint asynchronously. Waits for the endpoint to be allocated if necessary.", - "returns": "The URL of the endpoint.", - "kind": "InstanceMethod", - "signature": "getValueAsync(cancellationToken?: cancellationToken): string", + "name": "expose", + "capabilityId": "Aspire.Hosting/expose", + "qualifiedName": "expose", + "description": "Adds an EXPOSE statement to a Dockerfile stage", + "kind": "Method", + "signature": "expose(port: number): DockerfileStage", "parameters": [ { - "name": "cancellationToken", - "type": "cancellationToken", - "isOptional": true, - "description": "The cancellation token." + "name": "port", + "type": "number" } ], - "returnType": "string", - "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.EndpointReference", + "returnType": "DockerfileStage", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.Docker.DockerfileStage", "expandedTargetTypes": [ - "Aspire.Hosting.ApplicationModel.EndpointReference" + "Aspire.Hosting.ApplicationModel.Docker.DockerfileStage" ] }, { - "name": "host", - "capabilityId": "Aspire.Hosting.ApplicationModel/EndpointReference.host", - "qualifiedName": "EndpointReference.host", - "description": "Gets the host for this endpoint.", - "kind": "PropertyGetter", - "signature": "host(): string", - "parameters": [], - "returnType": "string", - "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.EndpointReference", + "name": "run", + "capabilityId": "Aspire.Hosting/dockerfileStageRun", + "qualifiedName": "run", + "description": "Adds a RUN statement to a Dockerfile stage", + "kind": "Method", + "signature": "run(command: string): DockerfileStage", + "parameters": [ + { + "name": "command", + "type": "string" + } + ], + "returnType": "DockerfileStage", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.Docker.DockerfileStage", "expandedTargetTypes": [ - "Aspire.Hosting.ApplicationModel.EndpointReference" + "Aspire.Hosting.ApplicationModel.Docker.DockerfileStage" ] }, { - "name": "isAllocated", - "capabilityId": "Aspire.Hosting.ApplicationModel/EndpointReference.isAllocated", - "qualifiedName": "EndpointReference.isAllocated", - "description": "Gets a value indicating whether the endpoint is allocated.", - "kind": "PropertyGetter", - "signature": "isAllocated(): boolean", - "parameters": [], - "returnType": "boolean", - "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.EndpointReference", + "name": "runWithMounts", + "capabilityId": "Aspire.Hosting/runWithMounts", + "qualifiedName": "runWithMounts", + "description": "Adds a RUN statement with mounts to a Dockerfile stage", + "kind": "Method", + "signature": "runWithMounts(command: string, mounts: string[]): DockerfileStage", + "parameters": [ + { + "name": "command", + "type": "string" + }, + { + "name": "mounts", + "type": "string[]" + } + ], + "returnType": "DockerfileStage", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.Docker.DockerfileStage", "expandedTargetTypes": [ - "Aspire.Hosting.ApplicationModel.EndpointReference" + "Aspire.Hosting.ApplicationModel.Docker.DockerfileStage" ] }, { - "name": "isHttp", - "capabilityId": "Aspire.Hosting.ApplicationModel/EndpointReference.isHttp", - "qualifiedName": "EndpointReference.isHttp", - "description": "Gets a value indicating whether the endpoint uses HTTP scheme.", - "kind": "PropertyGetter", - "signature": "isHttp(): boolean", - "parameters": [], - "returnType": "boolean", - "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.EndpointReference", + "name": "user", + "capabilityId": "Aspire.Hosting/user", + "qualifiedName": "user", + "description": "Adds a USER statement to a Dockerfile stage", + "kind": "Method", + "signature": "user(user: string): DockerfileStage", + "parameters": [ + { + "name": "user", + "type": "string" + } + ], + "returnType": "DockerfileStage", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.Docker.DockerfileStage", "expandedTargetTypes": [ - "Aspire.Hosting.ApplicationModel.EndpointReference" + "Aspire.Hosting.ApplicationModel.Docker.DockerfileStage" ] }, { - "name": "isHttps", - "capabilityId": "Aspire.Hosting.ApplicationModel/EndpointReference.isHttps", - "qualifiedName": "EndpointReference.isHttps", - "description": "Gets a value indicating whether the endpoint uses HTTPS scheme.", - "kind": "PropertyGetter", - "signature": "isHttps(): boolean", - "parameters": [], - "returnType": "boolean", - "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.EndpointReference", - "expandedTargetTypes": [ - "Aspire.Hosting.ApplicationModel.EndpointReference" - ] - }, - { - "name": "isHttpSchemeNamedEndpoint", - "capabilityId": "Aspire.Hosting.ApplicationModel/EndpointReference.isHttpSchemeNamedEndpoint", - "qualifiedName": "EndpointReference.isHttpSchemeNamedEndpoint", - "description": "Gets a value indicating whether the endpoint name is \"http\" or \"https\", ignoring case. This is a convention used to identify endpoints that will be resolved based on the scheme of the endpoint in service discovery rather than by the specific endpoint name. This is done to allow http endpoints that are dynamically updated to https to be mapped correctly despite the endpoint name no longer matching the scheme.", - "kind": "PropertyGetter", - "signature": "isHttpSchemeNamedEndpoint(): boolean", - "parameters": [], - "returnType": "boolean", - "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.EndpointReference", - "expandedTargetTypes": [ - "Aspire.Hosting.ApplicationModel.EndpointReference" - ] - }, - { - "name": "port", - "capabilityId": "Aspire.Hosting.ApplicationModel/EndpointReference.port", - "qualifiedName": "EndpointReference.port", - "description": "Gets the port for this endpoint.", - "kind": "PropertyGetter", - "signature": "port(): number", - "parameters": [], - "returnType": "number", - "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.EndpointReference", - "expandedTargetTypes": [ - "Aspire.Hosting.ApplicationModel.EndpointReference" - ] - }, - { - "name": "property", - "capabilityId": "Aspire.Hosting.ApplicationModel/EndpointReference.property", - "qualifiedName": "EndpointReference.property", - "description": "Gets the specified property expression of the endpoint.", - "returns": "An `EndpointReferenceExpression` representing the specified `EndpointProperty`.", - "kind": "InstanceMethod", - "signature": "property(property: EndpointProperty): EndpointReferenceExpression", + "name": "workDir", + "capabilityId": "Aspire.Hosting/workDir", + "qualifiedName": "workDir", + "description": "Adds a WORKDIR statement to a Dockerfile stage", + "kind": "Method", + "signature": "workDir(path: string): DockerfileStage", "parameters": [ { - "name": "property", - "type": "EndpointProperty", - "description": "The `EndpointProperty` enum value to use in the reference." + "name": "path", + "type": "string" } ], - "returnType": "EndpointReferenceExpression", - "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.EndpointReference", + "returnType": "DockerfileStage", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.Docker.DockerfileStage", "expandedTargetTypes": [ - "Aspire.Hosting.ApplicationModel.EndpointReference" + "Aspire.Hosting.ApplicationModel.Docker.DockerfileStage" ] - }, + } + ] + }, + { + "name": "DockerfileBuilderCallbackContext", + "fullName": "Aspire.Hosting.ApplicationModel.DockerfileBuilderCallbackContext", + "kind": "handle", + "exposeProperties": true, + "description": "Provides context information for Dockerfile build callbacks.", + "implementedInterfaces": [], + "baseTypeHierarchy": [], + "capabilities": [ { - "name": "resource", - "capabilityId": "Aspire.Hosting.ApplicationModel/EndpointReference.resource", - "qualifiedName": "EndpointReference.resource", - "description": "Gets the resource owner of the endpoint reference.", + "name": "builder", + "capabilityId": "Aspire.Hosting.ApplicationModel/DockerfileBuilderCallbackContext.builder", + "qualifiedName": "DockerfileBuilderCallbackContext.builder", + "description": "Gets the Dockerfile builder instance.", "kind": "PropertyGetter", - "signature": "resource(): IResourceWithEndpoints", + "signature": "builder(): DockerfileBuilder", "parameters": [], - "returnType": "IResourceWithEndpoints", - "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.EndpointReference", + "returnType": "DockerfileBuilder", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.DockerfileBuilderCallbackContext", "expandedTargetTypes": [ - "Aspire.Hosting.ApplicationModel.EndpointReference" + "Aspire.Hosting.ApplicationModel.DockerfileBuilderCallbackContext" ] }, { - "name": "scheme", - "capabilityId": "Aspire.Hosting.ApplicationModel/EndpointReference.scheme", - "qualifiedName": "EndpointReference.scheme", - "description": "Gets the scheme for this endpoint.", + "name": "cancellationToken", + "capabilityId": "Aspire.Hosting.ApplicationModel/DockerfileBuilderCallbackContext.cancellationToken", + "qualifiedName": "DockerfileBuilderCallbackContext.cancellationToken", + "description": "Gets the cancellation token to observe while waiting for the task to complete.", "kind": "PropertyGetter", - "signature": "scheme(): string", + "signature": "cancellationToken(): cancellationToken", "parameters": [], - "returnType": "string", - "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.EndpointReference", + "returnType": "cancellationToken", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.DockerfileBuilderCallbackContext", "expandedTargetTypes": [ - "Aspire.Hosting.ApplicationModel.EndpointReference" + "Aspire.Hosting.ApplicationModel.DockerfileBuilderCallbackContext" ] }, { - "name": "targetPort", - "capabilityId": "Aspire.Hosting.ApplicationModel/EndpointReference.targetPort", - "qualifiedName": "EndpointReference.targetPort", - "description": "Gets the target port for this endpoint. If the port is dynamically allocated, this will return `null`.", + "name": "resource", + "capabilityId": "Aspire.Hosting.ApplicationModel/DockerfileBuilderCallbackContext.resource", + "qualifiedName": "DockerfileBuilderCallbackContext.resource", + "description": "Gets the resource being built.", "kind": "PropertyGetter", - "signature": "targetPort(): number", + "signature": "resource(): IResource", "parameters": [], - "returnType": "number", - "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.EndpointReference", + "returnType": "IResource", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.DockerfileBuilderCallbackContext", "expandedTargetTypes": [ - "Aspire.Hosting.ApplicationModel.EndpointReference" + "Aspire.Hosting.ApplicationModel.DockerfileBuilderCallbackContext" ] }, { - "name": "tlsEnabled", - "capabilityId": "Aspire.Hosting.ApplicationModel/EndpointReference.tlsEnabled", - "qualifiedName": "EndpointReference.tlsEnabled", - "description": "Gets a value indicating whether TLS is enabled for this endpoint.", - "remarks": "Returns `false` if the endpoint annotation has not been added to the resource yet.\nOnce the annotation exists, this property delegates to `TlsEnabled`.", + "name": "services", + "capabilityId": "Aspire.Hosting.ApplicationModel/DockerfileBuilderCallbackContext.services", + "qualifiedName": "DockerfileBuilderCallbackContext.services", + "description": "Gets the service provider for dependency injection.", "kind": "PropertyGetter", - "signature": "tlsEnabled(): boolean", + "signature": "services(): IServiceProvider", "parameters": [], - "returnType": "boolean", - "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.EndpointReference", + "returnType": "IServiceProvider", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.DockerfileBuilderCallbackContext", "expandedTargetTypes": [ - "Aspire.Hosting.ApplicationModel.EndpointReference" + "Aspire.Hosting.ApplicationModel.DockerfileBuilderCallbackContext" ] - }, + } + ] + }, + { + "name": "DockerfileFactoryContext", + "fullName": "Aspire.Hosting.ApplicationModel.DockerfileFactoryContext", + "kind": "handle", + "description": "Provides context for Dockerfile factory functions.", + "implementedInterfaces": [], + "baseTypeHierarchy": [], + "capabilities": [ { - "name": "url", - "capabilityId": "Aspire.Hosting.ApplicationModel/EndpointReference.url", - "qualifiedName": "EndpointReference.url", - "description": "Gets the URL for this endpoint.", + "name": "resource", + "capabilityId": "Aspire.Hosting.ApplicationModel/DockerfileFactoryContext.resource", + "qualifiedName": "DockerfileFactoryContext.resource", + "description": "Gets the resource for which the Dockerfile is being generated. This allows factory functions to query resource annotations and properties to customize the generated Dockerfile. ``` var containerAnnotation = context.Resource.Annotations.OfType().FirstOrDefault(); var baseImage = containerAnnotation?.Image ?? \"alpine:latest\"; ```", "kind": "PropertyGetter", - "signature": "url(): string", + "signature": "resource(): IResource", "parameters": [], - "returnType": "string", - "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.EndpointReference", + "returnType": "IResource", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.DockerfileFactoryContext", "expandedTargetTypes": [ - "Aspire.Hosting.ApplicationModel.EndpointReference" + "Aspire.Hosting.ApplicationModel.DockerfileFactoryContext" ] } ] }, { - "name": "EndpointReferenceExpression", - "fullName": "Aspire.Hosting.ApplicationModel.EndpointReferenceExpression", + "name": "DotnetToolResource", + "fullName": "Aspire.Hosting.ApplicationModel.DotnetToolResource", "kind": "handle", - "exposeProperties": true, - "description": "Represents a property expression for an endpoint reference.", "implementedInterfaces": [ - "Aspire.Hosting.ApplicationModel.IExpressionValue", - "Aspire.Hosting.ApplicationModel.IManifestExpressionProvider", - "Aspire.Hosting.ApplicationModel.IValueProvider", - "Aspire.Hosting.ApplicationModel.IValueWithReferences" + "Aspire.Hosting.ApplicationModel.IComputeResource", + "Aspire.Hosting.ApplicationModel.IResource", + "Aspire.Hosting.ApplicationModel.IResourceWithArgs", + "Aspire.Hosting.ApplicationModel.IResourceWithEndpoints", + "Aspire.Hosting.ApplicationModel.IResourceWithEnvironment", + "Aspire.Hosting.ApplicationModel.IResourceWithProbes", + "Aspire.Hosting.ApplicationModel.IResourceWithWaitSupport" + ], + "baseTypeHierarchy": [ + "Aspire.Hosting.ApplicationModel.ExecutableResource", + "Aspire.Hosting.ApplicationModel.Resource" ], - "baseTypeHierarchy": [], "capabilities": [ { - "name": "endpoint", - "capabilityId": "Aspire.Hosting.ApplicationModel/EndpointReferenceExpression.endpoint", - "qualifiedName": "EndpointReferenceExpression.endpoint", - "description": "Gets the `EndpointReference`.", - "kind": "PropertyGetter", - "signature": "endpoint(): EndpointReference", + "name": "withToolIgnoreExistingFeeds", + "capabilityId": "Aspire.Hosting/withToolIgnoreExistingFeeds", + "qualifiedName": "withToolIgnoreExistingFeeds", + "description": "Configures the tool to use only the specified package sources, ignoring existing NuGet configuration.", + "returns": "The resource builder.", + "kind": "Method", + "signature": "withToolIgnoreExistingFeeds(): DotnetToolResource", "parameters": [], - "returnType": "EndpointReference", - "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.EndpointReferenceExpression", + "returnType": "DotnetToolResource", + "returnsBuilder": true, + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.DotnetToolResource", "expandedTargetTypes": [ - "Aspire.Hosting.ApplicationModel.EndpointReferenceExpression" + "Aspire.Hosting.ApplicationModel.DotnetToolResource" ] }, { - "name": "property", - "capabilityId": "Aspire.Hosting.ApplicationModel/EndpointReferenceExpression.property", - "qualifiedName": "EndpointReferenceExpression.property", - "description": "Gets the `EndpointProperty` for the property expression.", - "kind": "PropertyGetter", - "signature": "property(): EndpointProperty", + "name": "withToolIgnoreFailedSources", + "capabilityId": "Aspire.Hosting/withToolIgnoreFailedSources", + "qualifiedName": "withToolIgnoreFailedSources", + "description": "Configures the resource to treat package source failures as warnings.", + "returns": "The resource builder.", + "kind": "Method", + "signature": "withToolIgnoreFailedSources(): DotnetToolResource", "parameters": [], - "returnType": "EndpointProperty", - "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.EndpointReferenceExpression", + "returnType": "DotnetToolResource", + "returnsBuilder": true, + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.DotnetToolResource", "expandedTargetTypes": [ - "Aspire.Hosting.ApplicationModel.EndpointReferenceExpression" + "Aspire.Hosting.ApplicationModel.DotnetToolResource" ] }, { - "name": "valueExpression", - "capabilityId": "Aspire.Hosting.ApplicationModel/EndpointReferenceExpression.valueExpression", - "qualifiedName": "EndpointReferenceExpression.valueExpression", - "description": "Gets the expression of the property of the endpoint.", - "kind": "PropertyGetter", - "signature": "valueExpression(): string", - "parameters": [], - "returnType": "string", - "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.EndpointReferenceExpression", + "name": "withToolPackage", + "capabilityId": "Aspire.Hosting/withToolPackage", + "qualifiedName": "withToolPackage", + "description": "Sets the package identifier for the tool configuration associated with the resource builder.", + "returns": "The resource builder.", + "kind": "Method", + "signature": "withToolPackage(packageId: string): DotnetToolResource", + "parameters": [ + { + "name": "packageId", + "type": "string", + "description": "The package identifier to assign to the tool configuration. Cannot be null." + } + ], + "returnType": "DotnetToolResource", + "returnsBuilder": true, + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.DotnetToolResource", "expandedTargetTypes": [ - "Aspire.Hosting.ApplicationModel.EndpointReferenceExpression" + "Aspire.Hosting.ApplicationModel.DotnetToolResource" ] - } - ] - }, - { - "name": "EndpointUpdateContext", - "fullName": "Aspire.Hosting.ApplicationModel.EndpointUpdateContext", - "kind": "handle", - "exposeProperties": true, - "description": "Provides a mutable callback context for updating an endpoint in polyglot AppHosts.", - "implementedInterfaces": [], - "baseTypeHierarchy": [], - "capabilities": [ + }, { - "name": "excludeReferenceEndpoint", - "capabilityId": "Aspire.Hosting.ApplicationModel/EndpointUpdateContext.excludeReferenceEndpoint", - "qualifiedName": "EndpointUpdateContext.excludeReferenceEndpoint", - "description": "Gets or sets a value indicating whether the endpoint is excluded from the default reference set.", - "kind": "PropertyGetter", - "signature": "excludeReferenceEndpoint(): boolean", + "name": "withToolPrerelease", + "capabilityId": "Aspire.Hosting/withToolPrerelease", + "qualifiedName": "withToolPrerelease", + "description": "Allows prerelease versions of the tool to be used", + "returns": "The resource builder.", + "kind": "Method", + "signature": "withToolPrerelease(): DotnetToolResource", "parameters": [], - "returnType": "boolean", - "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.EndpointUpdateContext", + "returnType": "DotnetToolResource", + "returnsBuilder": true, + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.DotnetToolResource", "expandedTargetTypes": [ - "Aspire.Hosting.ApplicationModel.EndpointUpdateContext" + "Aspire.Hosting.ApplicationModel.DotnetToolResource" ] }, { - "name": "isExternal", - "capabilityId": "Aspire.Hosting.ApplicationModel/EndpointUpdateContext.isExternal", - "qualifiedName": "EndpointUpdateContext.isExternal", - "description": "Gets or sets a value indicating whether the endpoint is external.", - "kind": "PropertyGetter", - "signature": "isExternal(): boolean", - "parameters": [], - "returnType": "boolean", - "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.EndpointUpdateContext", + "name": "withToolSource", + "capabilityId": "Aspire.Hosting/withToolSource", + "qualifiedName": "withToolSource", + "description": "Adds a NuGet package source for tool acquisition.", + "returns": "The resource builder.", + "kind": "Method", + "signature": "withToolSource(source: string): DotnetToolResource", + "parameters": [ + { + "name": "source", + "type": "string", + "description": "The source to add." + } + ], + "returnType": "DotnetToolResource", + "returnsBuilder": true, + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.DotnetToolResource", "expandedTargetTypes": [ - "Aspire.Hosting.ApplicationModel.EndpointUpdateContext" + "Aspire.Hosting.ApplicationModel.DotnetToolResource" ] }, { - "name": "isProxied", - "capabilityId": "Aspire.Hosting.ApplicationModel/EndpointUpdateContext.isProxied", - "qualifiedName": "EndpointUpdateContext.isProxied", - "description": "Gets or sets a value indicating whether the endpoint is proxied.", - "kind": "PropertyGetter", - "signature": "isProxied(): boolean", - "parameters": [], - "returnType": "boolean", - "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.EndpointUpdateContext", + "name": "withToolVersion", + "capabilityId": "Aspire.Hosting/withToolVersion", + "qualifiedName": "withToolVersion", + "description": "Sets the package version for a tool to use.", + "returns": "The resource builder.", + "kind": "Method", + "signature": "withToolVersion(version: string): DotnetToolResource", + "parameters": [ + { + "name": "version", + "type": "string", + "description": "The package version to use" + } + ], + "returnType": "DotnetToolResource", + "returnsBuilder": true, + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.DotnetToolResource", "expandedTargetTypes": [ - "Aspire.Hosting.ApplicationModel.EndpointUpdateContext" + "Aspire.Hosting.ApplicationModel.DotnetToolResource" ] - }, + } + ] + }, + { + "name": "EndpointReference", + "fullName": "Aspire.Hosting.ApplicationModel.EndpointReference", + "kind": "handle", + "description": "Represents an endpoint reference for a resource with endpoints.", + "implementedInterfaces": [ + "Aspire.Hosting.ApplicationModel.IExpressionValue", + "Aspire.Hosting.ApplicationModel.IManifestExpressionProvider", + "Aspire.Hosting.ApplicationModel.IValueProvider", + "Aspire.Hosting.ApplicationModel.IValueWithReferences" + ], + "baseTypeHierarchy": [], + "capabilities": [ { - "name": "name", - "capabilityId": "Aspire.Hosting.ApplicationModel/EndpointUpdateContext.name", - "qualifiedName": "EndpointUpdateContext.name", - "description": "Gets the endpoint name.", + "name": "endpointName", + "capabilityId": "Aspire.Hosting.ApplicationModel/EndpointReference.endpointName", + "qualifiedName": "EndpointReference.endpointName", + "description": "Gets the name of the endpoint associated with the endpoint reference.", "kind": "PropertyGetter", - "signature": "name(): string", + "signature": "endpointName(): string", "parameters": [], "returnType": "string", - "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.EndpointUpdateContext", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.EndpointReference", "expandedTargetTypes": [ - "Aspire.Hosting.ApplicationModel.EndpointUpdateContext" + "Aspire.Hosting.ApplicationModel.EndpointReference" ] }, { - "name": "port", - "capabilityId": "Aspire.Hosting.ApplicationModel/EndpointUpdateContext.port", - "qualifiedName": "EndpointUpdateContext.port", - "description": "Gets or sets the desired host port.", + "name": "errorMessage", + "capabilityId": "Aspire.Hosting.ApplicationModel/EndpointReference.errorMessage", + "qualifiedName": "EndpointReference.errorMessage", + "description": "Gets or sets a custom error message to be thrown when the endpoint annotation is not found.", "kind": "PropertyGetter", - "signature": "port(): number", + "signature": "errorMessage(): string", "parameters": [], - "returnType": "number", - "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.EndpointUpdateContext", + "returnType": "string", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.EndpointReference", "expandedTargetTypes": [ - "Aspire.Hosting.ApplicationModel.EndpointUpdateContext" + "Aspire.Hosting.ApplicationModel.EndpointReference" ] }, { - "name": "protocol", - "capabilityId": "Aspire.Hosting.ApplicationModel/EndpointUpdateContext.protocol", - "qualifiedName": "EndpointUpdateContext.protocol", - "description": "Gets or sets the network protocol.", + "name": "excludeReferenceEndpoint", + "capabilityId": "Aspire.Hosting.ApplicationModel/EndpointReference.excludeReferenceEndpoint", + "qualifiedName": "EndpointReference.excludeReferenceEndpoint", + "description": "Gets a value indicating whether this endpoint is excluded from the default set when referencing the resource's endpoints.", + "remarks": "Returns `false` if the endpoint annotation has not been added to the resource yet.\nOnce the annotation exists, this property delegates to `ExcludeReferenceEndpoint`.", "kind": "PropertyGetter", - "signature": "protocol(): ProtocolType", + "signature": "excludeReferenceEndpoint(): boolean", "parameters": [], - "returnType": "ProtocolType", - "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.EndpointUpdateContext", + "returnType": "boolean", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.EndpointReference", "expandedTargetTypes": [ - "Aspire.Hosting.ApplicationModel.EndpointUpdateContext" + "Aspire.Hosting.ApplicationModel.EndpointReference" ] }, { - "name": "setExcludeReferenceEndpoint", - "capabilityId": "Aspire.Hosting.ApplicationModel/EndpointUpdateContext.setExcludeReferenceEndpoint", - "qualifiedName": "EndpointUpdateContext.setExcludeReferenceEndpoint", - "description": "Gets or sets a value indicating whether the endpoint is excluded from the default reference set.", - "kind": "PropertySetter", - "signature": "setExcludeReferenceEndpoint(value: boolean): EndpointUpdateContext", - "parameters": [ - { - "name": "value", - "type": "boolean" - } - ], - "returnType": "EndpointUpdateContext", - "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.EndpointUpdateContext", + "name": "exists", + "capabilityId": "Aspire.Hosting.ApplicationModel/EndpointReference.exists", + "qualifiedName": "EndpointReference.exists", + "description": "Gets a value indicating whether the endpoint exists.", + "kind": "PropertyGetter", + "signature": "exists(): boolean", + "parameters": [], + "returnType": "boolean", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.EndpointReference", "expandedTargetTypes": [ - "Aspire.Hosting.ApplicationModel.EndpointUpdateContext" + "Aspire.Hosting.ApplicationModel.EndpointReference" ] }, { - "name": "setIsExternal", - "capabilityId": "Aspire.Hosting.ApplicationModel/EndpointUpdateContext.setIsExternal", - "qualifiedName": "EndpointUpdateContext.setIsExternal", - "description": "Gets or sets a value indicating whether the endpoint is external.", - "kind": "PropertySetter", - "signature": "setIsExternal(value: boolean): EndpointUpdateContext", + "name": "getTlsValue", + "capabilityId": "Aspire.Hosting.ApplicationModel/EndpointReference.getTlsValue", + "qualifiedName": "EndpointReference.getTlsValue", + "description": "Gets a conditional expression that resolves to the enabledValue when TLS is enabled on the endpoint, or to the disabledValue otherwise.", + "remarks": "The returned expression evaluates the TLS state lazily each time its value is resolved, making it\nsafe to embed in a `ReferenceExpression` that is built before TLS is configured\n(e.g., before `BeforeStartEvent` fires). Because the condition and branches are declarative,\npolyglot code generators can translate this into native conditional constructs in any target language.", + "returns": "A conditional `ReferenceExpression` whose value tracks the TLS state of this endpoint.", + "kind": "InstanceMethod", + "signature": "getTlsValue(enabledValue: ReferenceExpression, disabledValue: ReferenceExpression): ReferenceExpression", "parameters": [ { - "name": "value", - "type": "boolean" + "name": "enabledValue", + "type": "ReferenceExpression", + "description": "The expression to evaluate when TLS is enabled (e.g., `\",ssl=true\"`)." + }, + { + "name": "disabledValue", + "type": "ReferenceExpression", + "description": "The expression to evaluate when TLS is not enabled." } ], - "returnType": "EndpointUpdateContext", - "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.EndpointUpdateContext", + "returnType": "ReferenceExpression", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.EndpointReference", "expandedTargetTypes": [ - "Aspire.Hosting.ApplicationModel.EndpointUpdateContext" + "Aspire.Hosting.ApplicationModel.EndpointReference" ] }, { - "name": "setIsProxied", - "capabilityId": "Aspire.Hosting.ApplicationModel/EndpointUpdateContext.setIsProxied", - "qualifiedName": "EndpointUpdateContext.setIsProxied", - "description": "Gets or sets a value indicating whether the endpoint is proxied.", - "kind": "PropertySetter", - "signature": "setIsProxied(value: boolean): EndpointUpdateContext", + "name": "getValueAsync", + "capabilityId": "Aspire.Hosting.ApplicationModel/EndpointReference.getValueAsync", + "qualifiedName": "EndpointReference.getValueAsync", + "description": "Gets the URL of the endpoint asynchronously. Waits for the endpoint to be allocated if necessary.", + "returns": "The URL of the endpoint.", + "kind": "InstanceMethod", + "signature": "getValueAsync(cancellationToken?: cancellationToken): string", "parameters": [ { - "name": "value", - "type": "boolean" + "name": "cancellationToken", + "type": "cancellationToken", + "isOptional": true, + "description": "The cancellation token." } ], - "returnType": "EndpointUpdateContext", - "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.EndpointUpdateContext", + "returnType": "string", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.EndpointReference", "expandedTargetTypes": [ - "Aspire.Hosting.ApplicationModel.EndpointUpdateContext" + "Aspire.Hosting.ApplicationModel.EndpointReference" ] }, { - "name": "setPort", - "capabilityId": "Aspire.Hosting.ApplicationModel/EndpointUpdateContext.setPort", - "qualifiedName": "EndpointUpdateContext.setPort", - "description": "Gets or sets the desired host port.", - "kind": "PropertySetter", - "signature": "setPort(value: number): EndpointUpdateContext", - "parameters": [ - { - "name": "value", - "type": "number" - } - ], - "returnType": "EndpointUpdateContext", - "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.EndpointUpdateContext", + "name": "host", + "capabilityId": "Aspire.Hosting.ApplicationModel/EndpointReference.host", + "qualifiedName": "EndpointReference.host", + "description": "Gets the host for this endpoint.", + "kind": "PropertyGetter", + "signature": "host(): string", + "parameters": [], + "returnType": "string", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.EndpointReference", "expandedTargetTypes": [ - "Aspire.Hosting.ApplicationModel.EndpointUpdateContext" + "Aspire.Hosting.ApplicationModel.EndpointReference" ] }, { - "name": "setProtocol", - "capabilityId": "Aspire.Hosting.ApplicationModel/EndpointUpdateContext.setProtocol", - "qualifiedName": "EndpointUpdateContext.setProtocol", - "description": "Gets or sets the network protocol.", - "kind": "PropertySetter", - "signature": "setProtocol(value: ProtocolType): EndpointUpdateContext", - "parameters": [ - { - "name": "value", - "type": "ProtocolType" - } - ], - "returnType": "EndpointUpdateContext", - "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.EndpointUpdateContext", + "name": "isAllocated", + "capabilityId": "Aspire.Hosting.ApplicationModel/EndpointReference.isAllocated", + "qualifiedName": "EndpointReference.isAllocated", + "description": "Gets a value indicating whether the endpoint is allocated.", + "kind": "PropertyGetter", + "signature": "isAllocated(): boolean", + "parameters": [], + "returnType": "boolean", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.EndpointReference", "expandedTargetTypes": [ - "Aspire.Hosting.ApplicationModel.EndpointUpdateContext" + "Aspire.Hosting.ApplicationModel.EndpointReference" ] }, { - "name": "setTargetHost", - "capabilityId": "Aspire.Hosting.ApplicationModel/EndpointUpdateContext.setTargetHost", - "qualifiedName": "EndpointUpdateContext.setTargetHost", - "description": "Gets or sets the target host.", - "kind": "PropertySetter", - "signature": "setTargetHost(value: string): EndpointUpdateContext", - "parameters": [ - { - "name": "value", - "type": "string" - } - ], - "returnType": "EndpointUpdateContext", - "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.EndpointUpdateContext", + "name": "isHttp", + "capabilityId": "Aspire.Hosting.ApplicationModel/EndpointReference.isHttp", + "qualifiedName": "EndpointReference.isHttp", + "description": "Gets a value indicating whether the endpoint uses HTTP scheme.", + "kind": "PropertyGetter", + "signature": "isHttp(): boolean", + "parameters": [], + "returnType": "boolean", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.EndpointReference", "expandedTargetTypes": [ - "Aspire.Hosting.ApplicationModel.EndpointUpdateContext" + "Aspire.Hosting.ApplicationModel.EndpointReference" ] }, { - "name": "setTargetPort", - "capabilityId": "Aspire.Hosting.ApplicationModel/EndpointUpdateContext.setTargetPort", - "qualifiedName": "EndpointUpdateContext.setTargetPort", - "description": "Gets or sets the target port.", - "kind": "PropertySetter", - "signature": "setTargetPort(value: number): EndpointUpdateContext", - "parameters": [ - { - "name": "value", - "type": "number" - } - ], - "returnType": "EndpointUpdateContext", - "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.EndpointUpdateContext", + "name": "isHttps", + "capabilityId": "Aspire.Hosting.ApplicationModel/EndpointReference.isHttps", + "qualifiedName": "EndpointReference.isHttps", + "description": "Gets a value indicating whether the endpoint uses HTTPS scheme.", + "kind": "PropertyGetter", + "signature": "isHttps(): boolean", + "parameters": [], + "returnType": "boolean", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.EndpointReference", "expandedTargetTypes": [ - "Aspire.Hosting.ApplicationModel.EndpointUpdateContext" + "Aspire.Hosting.ApplicationModel.EndpointReference" ] }, { - "name": "setTlsEnabled", - "capabilityId": "Aspire.Hosting.ApplicationModel/EndpointUpdateContext.setTlsEnabled", - "qualifiedName": "EndpointUpdateContext.setTlsEnabled", - "description": "Gets or sets a value indicating whether TLS is enabled.", - "kind": "PropertySetter", - "signature": "setTlsEnabled(value: boolean): EndpointUpdateContext", - "parameters": [ - { - "name": "value", - "type": "boolean" - } - ], - "returnType": "EndpointUpdateContext", - "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.EndpointUpdateContext", + "name": "isHttpSchemeNamedEndpoint", + "capabilityId": "Aspire.Hosting.ApplicationModel/EndpointReference.isHttpSchemeNamedEndpoint", + "qualifiedName": "EndpointReference.isHttpSchemeNamedEndpoint", + "description": "Gets a value indicating whether the endpoint name is \"http\" or \"https\", ignoring case. This is a convention used to identify endpoints that will be resolved based on the scheme of the endpoint in service discovery rather than by the specific endpoint name. This is done to allow http endpoints that are dynamically updated to https to be mapped correctly despite the endpoint name no longer matching the scheme.", + "kind": "PropertyGetter", + "signature": "isHttpSchemeNamedEndpoint(): boolean", + "parameters": [], + "returnType": "boolean", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.EndpointReference", "expandedTargetTypes": [ - "Aspire.Hosting.ApplicationModel.EndpointUpdateContext" + "Aspire.Hosting.ApplicationModel.EndpointReference" ] }, { - "name": "setTransport", - "capabilityId": "Aspire.Hosting.ApplicationModel/EndpointUpdateContext.setTransport", - "qualifiedName": "EndpointUpdateContext.setTransport", - "description": "Gets or sets the transport.", - "kind": "PropertySetter", - "signature": "setTransport(value: string): EndpointUpdateContext", - "parameters": [ - { - "name": "value", - "type": "string" - } - ], - "returnType": "EndpointUpdateContext", - "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.EndpointUpdateContext", + "name": "port", + "capabilityId": "Aspire.Hosting.ApplicationModel/EndpointReference.port", + "qualifiedName": "EndpointReference.port", + "description": "Gets the port for this endpoint.", + "kind": "PropertyGetter", + "signature": "port(): number", + "parameters": [], + "returnType": "number", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.EndpointReference", "expandedTargetTypes": [ - "Aspire.Hosting.ApplicationModel.EndpointUpdateContext" + "Aspire.Hosting.ApplicationModel.EndpointReference" ] }, { - "name": "setUriScheme", - "capabilityId": "Aspire.Hosting.ApplicationModel/EndpointUpdateContext.setUriScheme", - "qualifiedName": "EndpointUpdateContext.setUriScheme", - "description": "Gets or sets the URI scheme.", - "kind": "PropertySetter", - "signature": "setUriScheme(value: string): EndpointUpdateContext", + "name": "property", + "capabilityId": "Aspire.Hosting.ApplicationModel/EndpointReference.property", + "qualifiedName": "EndpointReference.property", + "description": "Gets the specified property expression of the endpoint.", + "returns": "An `EndpointReferenceExpression` representing the specified `EndpointProperty`.", + "kind": "InstanceMethod", + "signature": "property(property: EndpointProperty): EndpointReferenceExpression", "parameters": [ { - "name": "value", - "type": "string" + "name": "property", + "type": "EndpointProperty", + "description": "The `EndpointProperty` enum value to use in the reference." } ], - "returnType": "EndpointUpdateContext", - "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.EndpointUpdateContext", + "returnType": "EndpointReferenceExpression", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.EndpointReference", "expandedTargetTypes": [ - "Aspire.Hosting.ApplicationModel.EndpointUpdateContext" + "Aspire.Hosting.ApplicationModel.EndpointReference" ] }, { - "name": "targetHost", - "capabilityId": "Aspire.Hosting.ApplicationModel/EndpointUpdateContext.targetHost", - "qualifiedName": "EndpointUpdateContext.targetHost", - "description": "Gets or sets the target host.", + "name": "resource", + "capabilityId": "Aspire.Hosting.ApplicationModel/EndpointReference.resource", + "qualifiedName": "EndpointReference.resource", + "description": "Gets the resource owner of the endpoint reference.", "kind": "PropertyGetter", - "signature": "targetHost(): string", + "signature": "resource(): IResourceWithEndpoints", + "parameters": [], + "returnType": "IResourceWithEndpoints", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.EndpointReference", + "expandedTargetTypes": [ + "Aspire.Hosting.ApplicationModel.EndpointReference" + ] + }, + { + "name": "scheme", + "capabilityId": "Aspire.Hosting.ApplicationModel/EndpointReference.scheme", + "qualifiedName": "EndpointReference.scheme", + "description": "Gets the scheme for this endpoint.", + "kind": "PropertyGetter", + "signature": "scheme(): string", "parameters": [], "returnType": "string", - "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.EndpointUpdateContext", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.EndpointReference", "expandedTargetTypes": [ - "Aspire.Hosting.ApplicationModel.EndpointUpdateContext" + "Aspire.Hosting.ApplicationModel.EndpointReference" ] }, { "name": "targetPort", - "capabilityId": "Aspire.Hosting.ApplicationModel/EndpointUpdateContext.targetPort", - "qualifiedName": "EndpointUpdateContext.targetPort", - "description": "Gets or sets the target port.", + "capabilityId": "Aspire.Hosting.ApplicationModel/EndpointReference.targetPort", + "qualifiedName": "EndpointReference.targetPort", + "description": "Gets the target port for this endpoint. If the port is dynamically allocated, this will return `null`.", "kind": "PropertyGetter", "signature": "targetPort(): number", "parameters": [], "returnType": "number", - "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.EndpointUpdateContext", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.EndpointReference", "expandedTargetTypes": [ - "Aspire.Hosting.ApplicationModel.EndpointUpdateContext" + "Aspire.Hosting.ApplicationModel.EndpointReference" ] }, { "name": "tlsEnabled", - "capabilityId": "Aspire.Hosting.ApplicationModel/EndpointUpdateContext.tlsEnabled", - "qualifiedName": "EndpointUpdateContext.tlsEnabled", - "description": "Gets or sets a value indicating whether TLS is enabled.", + "capabilityId": "Aspire.Hosting.ApplicationModel/EndpointReference.tlsEnabled", + "qualifiedName": "EndpointReference.tlsEnabled", + "description": "Gets a value indicating whether TLS is enabled for this endpoint.", + "remarks": "Returns `false` if the endpoint annotation has not been added to the resource yet.\nOnce the annotation exists, this property delegates to `TlsEnabled`.", "kind": "PropertyGetter", "signature": "tlsEnabled(): boolean", "parameters": [], "returnType": "boolean", - "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.EndpointUpdateContext", - "expandedTargetTypes": [ - "Aspire.Hosting.ApplicationModel.EndpointUpdateContext" - ] - }, - { - "name": "transport", - "capabilityId": "Aspire.Hosting.ApplicationModel/EndpointUpdateContext.transport", - "qualifiedName": "EndpointUpdateContext.transport", - "description": "Gets or sets the transport.", - "kind": "PropertyGetter", - "signature": "transport(): string", - "parameters": [], - "returnType": "string", - "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.EndpointUpdateContext", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.EndpointReference", "expandedTargetTypes": [ - "Aspire.Hosting.ApplicationModel.EndpointUpdateContext" + "Aspire.Hosting.ApplicationModel.EndpointReference" ] }, { - "name": "uriScheme", - "capabilityId": "Aspire.Hosting.ApplicationModel/EndpointUpdateContext.uriScheme", - "qualifiedName": "EndpointUpdateContext.uriScheme", - "description": "Gets or sets the URI scheme.", + "name": "url", + "capabilityId": "Aspire.Hosting.ApplicationModel/EndpointReference.url", + "qualifiedName": "EndpointReference.url", + "description": "Gets the URL for this endpoint.", "kind": "PropertyGetter", - "signature": "uriScheme(): string", + "signature": "url(): string", "parameters": [], "returnType": "string", - "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.EndpointUpdateContext", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.EndpointReference", "expandedTargetTypes": [ - "Aspire.Hosting.ApplicationModel.EndpointUpdateContext" + "Aspire.Hosting.ApplicationModel.EndpointReference" ] } ] }, { - "name": "EnvironmentCallbackContext", - "fullName": "Aspire.Hosting.ApplicationModel.EnvironmentCallbackContext", + "name": "EndpointReferenceExpression", + "fullName": "Aspire.Hosting.ApplicationModel.EndpointReferenceExpression", "kind": "handle", - "description": "Represents a callback context for environment variables associated with a publisher.", - "implementedInterfaces": [], + "exposeProperties": true, + "description": "Represents a property expression for an endpoint reference.", + "implementedInterfaces": [ + "Aspire.Hosting.ApplicationModel.IExpressionValue", + "Aspire.Hosting.ApplicationModel.IManifestExpressionProvider", + "Aspire.Hosting.ApplicationModel.IValueProvider", + "Aspire.Hosting.ApplicationModel.IValueWithReferences" + ], "baseTypeHierarchy": [], "capabilities": [ { - "name": "environment", - "capabilityId": "Aspire.Hosting.ApplicationModel/EnvironmentCallbackContext.environment", - "qualifiedName": "EnvironmentCallbackContext.environment", - "description": "Gets the editor used to set environment variables in polyglot callbacks.", + "name": "endpoint", + "capabilityId": "Aspire.Hosting.ApplicationModel/EndpointReferenceExpression.endpoint", + "qualifiedName": "EndpointReferenceExpression.endpoint", + "description": "Gets the `EndpointReference`.", "kind": "PropertyGetter", - "signature": "environment(): EnvironmentEditor", + "signature": "endpoint(): EndpointReference", "parameters": [], - "returnType": "EnvironmentEditor", - "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.EnvironmentCallbackContext", + "returnType": "EndpointReference", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.EndpointReferenceExpression", "expandedTargetTypes": [ - "Aspire.Hosting.ApplicationModel.EnvironmentCallbackContext" + "Aspire.Hosting.ApplicationModel.EndpointReferenceExpression" ] }, { - "name": "executionContext", - "capabilityId": "Aspire.Hosting.ApplicationModel/EnvironmentCallbackContext.executionContext", - "qualifiedName": "EnvironmentCallbackContext.executionContext", - "description": "Gets the execution context associated with this invocation of the AppHost.", - "kind": "PropertyGetter", - "signature": "executionContext(): DistributedApplicationExecutionContext", - "parameters": [], - "returnType": "DistributedApplicationExecutionContext", - "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.EnvironmentCallbackContext", - "expandedTargetTypes": [ - "Aspire.Hosting.ApplicationModel.EnvironmentCallbackContext" - ] - }, - { - "name": "log", - "capabilityId": "Aspire.Hosting.ApplicationModel/EnvironmentCallbackContext.log", - "qualifiedName": "EnvironmentCallbackContext.log", - "description": "Gets the logger facade used by polyglot callbacks.", + "name": "property", + "capabilityId": "Aspire.Hosting.ApplicationModel/EndpointReferenceExpression.property", + "qualifiedName": "EndpointReferenceExpression.property", + "description": "Gets the `EndpointProperty` for the property expression.", "kind": "PropertyGetter", - "signature": "log(): LogFacade", + "signature": "property(): EndpointProperty", "parameters": [], - "returnType": "LogFacade", - "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.EnvironmentCallbackContext", + "returnType": "EndpointProperty", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.EndpointReferenceExpression", "expandedTargetTypes": [ - "Aspire.Hosting.ApplicationModel.EnvironmentCallbackContext" + "Aspire.Hosting.ApplicationModel.EndpointReferenceExpression" ] }, { - "name": "resource", - "capabilityId": "Aspire.Hosting.ApplicationModel/EnvironmentCallbackContext.resource", - "qualifiedName": "EnvironmentCallbackContext.resource", - "description": "The resource associated with this callback context.", - "remarks": "This will be set to the resource in all cases where Aspire invokes the callback.", + "name": "valueExpression", + "capabilityId": "Aspire.Hosting.ApplicationModel/EndpointReferenceExpression.valueExpression", + "qualifiedName": "EndpointReferenceExpression.valueExpression", + "description": "Gets the expression of the property of the endpoint.", "kind": "PropertyGetter", - "signature": "resource(): IResource", + "signature": "valueExpression(): string", "parameters": [], - "returnType": "IResource", - "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.EnvironmentCallbackContext", + "returnType": "string", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.EndpointReferenceExpression", "expandedTargetTypes": [ - "Aspire.Hosting.ApplicationModel.EnvironmentCallbackContext" + "Aspire.Hosting.ApplicationModel.EndpointReferenceExpression" ] } ] }, { - "name": "EnvironmentEditor", - "fullName": "Aspire.Hosting.ApplicationModel.EnvironmentEditor", + "name": "EndpointUpdateContext", + "fullName": "Aspire.Hosting.ApplicationModel.EndpointUpdateContext", "kind": "handle", - "description": "Provides an ATS-first editor for environment variables within polyglot callbacks.", + "exposeProperties": true, + "description": "Provides a mutable callback context for updating an endpoint in polyglot AppHosts.", "implementedInterfaces": [], "baseTypeHierarchy": [], "capabilities": [ { - "name": "set", - "capabilityId": "Aspire.Hosting.ApplicationModel/set", - "qualifiedName": "EnvironmentEditor.set", - "description": "Sets an environment variable.", - "kind": "InstanceMethod", - "signature": "set(name: string, value: IExpressionValue): void", - "parameters": [ - { - "name": "name", - "type": "string", - "description": "The name of the environment variable." - }, - { - "name": "value", - "type": "IExpressionValue", - "description": "The value to assign to the environment variable." - } - ], - "returnType": "void", - "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.EnvironmentEditor", - "expandedTargetTypes": [ - "Aspire.Hosting.ApplicationModel.EnvironmentEditor" - ] - } - ] - }, - { - "name": "ExecutableResource", - "fullName": "Aspire.Hosting.ApplicationModel.ExecutableResource", - "kind": "handle", - "description": "A resource that represents a specified executable process.", - "remarks": "You can run any executable command using its full path.\nAs a security feature, Aspire doesn't run executable unless the command is located in a path listed in the PATH environment variable.\nTo run an executable file that's in the current directory, specify the full path or use the relative path `./` to represent the current directory.", - "implementedInterfaces": [ - "Aspire.Hosting.ApplicationModel.IComputeResource", - "Aspire.Hosting.ApplicationModel.IResource", - "Aspire.Hosting.ApplicationModel.IResourceWithArgs", - "Aspire.Hosting.ApplicationModel.IResourceWithEndpoints", - "Aspire.Hosting.ApplicationModel.IResourceWithEnvironment", - "Aspire.Hosting.ApplicationModel.IResourceWithProbes", - "Aspire.Hosting.ApplicationModel.IResourceWithWaitSupport" - ], - "baseTypeHierarchy": [ - "Aspire.Hosting.ApplicationModel.Resource" - ], - "capabilities": [ - { - "name": "publishAsDockerFile", - "capabilityId": "Aspire.Hosting/publishAsDockerFile", - "qualifiedName": "publishAsDockerFile", - "description": "Publishes an executable as a Docker file", - "remarks": "When the executable resource is converted to a container resource, the arguments to the executable\nare not used. This is because arguments to the executable often contain physical paths that are not valid\nin the container. The container can be set up with the correct arguments using the `configure` action.", - "returns": "The resource builder.", - "kind": "Method", - "signature": "publishAsDockerFile(configure: (obj: ContainerResource) => Promise): ExecutableResource", - "parameters": [ - { - "name": "configure", - "type": "callback", - "isCallback": true, - "callbackSignature": "(obj: ContainerResource) => Promise", - "description": "Optional action to configure the container resource" - } - ], - "returnType": "ExecutableResource", - "returnsBuilder": true, - "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.ExecutableResource", + "name": "excludeReferenceEndpoint", + "capabilityId": "Aspire.Hosting.ApplicationModel/EndpointUpdateContext.excludeReferenceEndpoint", + "qualifiedName": "EndpointUpdateContext.excludeReferenceEndpoint", + "description": "Gets or sets a value indicating whether the endpoint is excluded from the default reference set.", + "kind": "PropertyGetter", + "signature": "excludeReferenceEndpoint(): boolean", + "parameters": [], + "returnType": "boolean", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.EndpointUpdateContext", "expandedTargetTypes": [ - "Aspire.Hosting.ApplicationModel.ExecutableResource", - "Aspire.Hosting.ApplicationModel.DotnetToolResource" + "Aspire.Hosting.ApplicationModel.EndpointUpdateContext" ] }, { - "name": "withExecutableCommand", - "capabilityId": "Aspire.Hosting/withExecutableCommand", - "qualifiedName": "withExecutableCommand", - "description": "Sets the command for the executable resource.", - "returns": "The resource builder.", - "kind": "Method", - "signature": "withExecutableCommand(command: string): ExecutableResource", - "parameters": [ - { - "name": "command", - "type": "string", - "description": "Command." - } - ], - "returnType": "ExecutableResource", - "returnsBuilder": true, - "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.ExecutableResource", + "name": "isExternal", + "capabilityId": "Aspire.Hosting.ApplicationModel/EndpointUpdateContext.isExternal", + "qualifiedName": "EndpointUpdateContext.isExternal", + "description": "Gets or sets a value indicating whether the endpoint is external.", + "kind": "PropertyGetter", + "signature": "isExternal(): boolean", + "parameters": [], + "returnType": "boolean", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.EndpointUpdateContext", "expandedTargetTypes": [ - "Aspire.Hosting.ApplicationModel.ExecutableResource", - "Aspire.Hosting.ApplicationModel.DotnetToolResource" + "Aspire.Hosting.ApplicationModel.EndpointUpdateContext" ] }, { - "name": "withWorkingDirectory", - "capabilityId": "Aspire.Hosting/withWorkingDirectory", - "qualifiedName": "withWorkingDirectory", - "description": "Sets the working directory for the executable resource.", - "returns": "The resource builder.", - "kind": "Method", - "signature": "withWorkingDirectory(workingDirectory: string): ExecutableResource", - "parameters": [ - { - "name": "workingDirectory", - "type": "string", - "description": "Working directory." - } - ], - "returnType": "ExecutableResource", - "returnsBuilder": true, - "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.ExecutableResource", - "expandedTargetTypes": [ - "Aspire.Hosting.ApplicationModel.ExecutableResource", - "Aspire.Hosting.ApplicationModel.DotnetToolResource" - ] - } - ] - }, - { - "name": "ExecuteCommandContext", - "fullName": "Aspire.Hosting.ApplicationModel.ExecuteCommandContext", - "kind": "handle", - "exposeProperties": true, - "description": "Context for {@ats-ref method:ResourceCommandAnnotation.ExecuteCommand}.", - "implementedInterfaces": [], - "baseTypeHierarchy": [], - "capabilities": [ - { - "name": "arguments", - "capabilityId": "Aspire.Hosting.ApplicationModel/ExecuteCommandContext.arguments", - "qualifiedName": "ExecuteCommandContext.arguments", - "description": "Gets the invocation arguments supplied by the client when the command is executed.", - "remarks": "The collection contains the arguments described by `Arguments` with their\nsubmitted values populated. CLI positional arguments are mapped by declaration order. Dashboard, MCP, and other\nnamed-payload clients are mapped by `Name`.", + "name": "isProxied", + "capabilityId": "Aspire.Hosting.ApplicationModel/EndpointUpdateContext.isProxied", + "qualifiedName": "EndpointUpdateContext.isProxied", + "description": "Gets or sets a value indicating whether the endpoint is proxied.", "kind": "PropertyGetter", - "signature": "arguments(): InteractionInputCollection", + "signature": "isProxied(): boolean", "parameters": [], - "returnType": "InteractionInputCollection", - "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.ExecuteCommandContext", + "returnType": "boolean", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.EndpointUpdateContext", "expandedTargetTypes": [ - "Aspire.Hosting.ApplicationModel.ExecuteCommandContext" + "Aspire.Hosting.ApplicationModel.EndpointUpdateContext" ] }, { - "name": "cancellationToken", - "capabilityId": "Aspire.Hosting.ApplicationModel/ExecuteCommandContext.cancellationToken", - "qualifiedName": "ExecuteCommandContext.cancellationToken", - "description": "The cancellation token.", + "name": "name", + "capabilityId": "Aspire.Hosting.ApplicationModel/EndpointUpdateContext.name", + "qualifiedName": "EndpointUpdateContext.name", + "description": "Gets the endpoint name.", "kind": "PropertyGetter", - "signature": "cancellationToken(): cancellationToken", + "signature": "name(): string", "parameters": [], - "returnType": "cancellationToken", - "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.ExecuteCommandContext", + "returnType": "string", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.EndpointUpdateContext", "expandedTargetTypes": [ - "Aspire.Hosting.ApplicationModel.ExecuteCommandContext" + "Aspire.Hosting.ApplicationModel.EndpointUpdateContext" ] }, { - "name": "logger", - "capabilityId": "Aspire.Hosting.ApplicationModel/ExecuteCommandContext.logger", - "qualifiedName": "ExecuteCommandContext.logger", - "description": "The logger for the resource.", + "name": "port", + "capabilityId": "Aspire.Hosting.ApplicationModel/EndpointUpdateContext.port", + "qualifiedName": "EndpointUpdateContext.port", + "description": "Gets or sets the desired host port.", "kind": "PropertyGetter", - "signature": "logger(): ILogger", + "signature": "port(): number", "parameters": [], - "returnType": "ILogger", - "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.ExecuteCommandContext", + "returnType": "number", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.EndpointUpdateContext", "expandedTargetTypes": [ - "Aspire.Hosting.ApplicationModel.ExecuteCommandContext" + "Aspire.Hosting.ApplicationModel.EndpointUpdateContext" ] }, { - "name": "resourceName", - "capabilityId": "Aspire.Hosting.ApplicationModel/ExecuteCommandContext.resourceName", - "qualifiedName": "ExecuteCommandContext.resourceName", - "description": "The resource name.", + "name": "protocol", + "capabilityId": "Aspire.Hosting.ApplicationModel/EndpointUpdateContext.protocol", + "qualifiedName": "EndpointUpdateContext.protocol", + "description": "Gets or sets the network protocol.", "kind": "PropertyGetter", - "signature": "resourceName(): string", + "signature": "protocol(): ProtocolType", "parameters": [], - "returnType": "string", - "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.ExecuteCommandContext", + "returnType": "ProtocolType", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.EndpointUpdateContext", "expandedTargetTypes": [ - "Aspire.Hosting.ApplicationModel.ExecuteCommandContext" + "Aspire.Hosting.ApplicationModel.EndpointUpdateContext" ] - } - ] - }, - { - "name": "IAspireStore", - "fullName": "Aspire.Hosting.ApplicationModel.IAspireStore", - "kind": "handle", - "isInterface": true, - "exposeProperties": true, - "description": "Represents a store for managing files in the Aspire hosting environment that can be reused across runs.", - "remarks": "The store is created under the AppHost obj folder, or under the path specified by the\nASPIRE__STORE__PATH environment variable. Each application gets its own store so files\ndo not conflict with unrelated applications.", - "implementedInterfaces": [], - "baseTypeHierarchy": [], - "capabilities": [ + }, { - "name": "getFileNameWithContent", - "capabilityId": "Aspire.Hosting/getFileNameWithContent", - "qualifiedName": "getFileNameWithContent", - "description": "Gets a deterministic file path that is a copy of the `sourceFilename`. The resulting file name will depend on the content of the file.", - "returns": "A deterministic file path with the same content as `sourceFilename`.", - "kind": "Method", - "signature": "getFileNameWithContent(filenameTemplate: string, sourceFilename: string): string", + "name": "setExcludeReferenceEndpoint", + "capabilityId": "Aspire.Hosting.ApplicationModel/EndpointUpdateContext.setExcludeReferenceEndpoint", + "qualifiedName": "EndpointUpdateContext.setExcludeReferenceEndpoint", + "description": "Gets or sets a value indicating whether the endpoint is excluded from the default reference set.", + "kind": "PropertySetter", + "signature": "setExcludeReferenceEndpoint(value: boolean): EndpointUpdateContext", "parameters": [ { - "name": "filenameTemplate", - "type": "string", - "description": "A file name to base the result on." - }, - { - "name": "sourceFilename", - "type": "string", - "description": "An existing file." + "name": "value", + "type": "boolean" } ], - "returnType": "string", - "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.IAspireStore", + "returnType": "EndpointUpdateContext", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.EndpointUpdateContext", "expandedTargetTypes": [ - "Aspire.Hosting.ApplicationModel.IAspireStore" + "Aspire.Hosting.ApplicationModel.EndpointUpdateContext" ] }, { - "name": "basePath", - "capabilityId": "Aspire.Hosting.ApplicationModel/IAspireStore.basePath", - "qualifiedName": "IAspireStore.basePath", - "description": "Gets the base path of this store.", - "kind": "PropertyGetter", - "signature": "basePath(): string", - "parameters": [], - "returnType": "string", - "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.IAspireStore", + "name": "setIsExternal", + "capabilityId": "Aspire.Hosting.ApplicationModel/EndpointUpdateContext.setIsExternal", + "qualifiedName": "EndpointUpdateContext.setIsExternal", + "description": "Gets or sets a value indicating whether the endpoint is external.", + "kind": "PropertySetter", + "signature": "setIsExternal(value: boolean): EndpointUpdateContext", + "parameters": [ + { + "name": "value", + "type": "boolean" + } + ], + "returnType": "EndpointUpdateContext", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.EndpointUpdateContext", "expandedTargetTypes": [ - "Aspire.Hosting.ApplicationModel.IAspireStore" + "Aspire.Hosting.ApplicationModel.EndpointUpdateContext" ] - } - ] - }, - { - "name": "IComputeEnvironmentResource", - "fullName": "Aspire.Hosting.ApplicationModel.IComputeEnvironmentResource", - "kind": "handle", - "isInterface": true, - "implementedInterfaces": [], - "baseTypeHierarchy": [], - "capabilities": [] - }, - { - "name": "IExecutionConfigurationBuilder", - "fullName": "Aspire.Hosting.ApplicationModel.IExecutionConfigurationBuilder", - "kind": "handle", - "isInterface": true, - "description": "Builder for gathering and resolving the execution configuration (arguments and environment variables) for a specific resource.", - "implementedInterfaces": [], - "baseTypeHierarchy": [], - "capabilities": [ + }, { - "name": "build", - "capabilityId": "Aspire.Hosting/buildExecutionConfiguration", - "qualifiedName": "build", - "description": "Builds the execution configuration for the specified builder.", - "returns": "The resolved execution configuration.", - "kind": "Method", - "signature": "build(executionContext: DistributedApplicationExecutionContext, resourceLogger?: ILogger, cancellationToken?: cancellationToken): IExecutionConfigurationResult", + "name": "setIsProxied", + "capabilityId": "Aspire.Hosting.ApplicationModel/EndpointUpdateContext.setIsProxied", + "qualifiedName": "EndpointUpdateContext.setIsProxied", + "description": "Gets or sets a value indicating whether the endpoint is proxied.", + "kind": "PropertySetter", + "signature": "setIsProxied(value: boolean): EndpointUpdateContext", "parameters": [ { - "name": "executionContext", - "type": "DistributedApplicationExecutionContext", - "description": "The execution context used while building the configuration." - }, - { - "name": "resourceLogger", - "type": "ILogger", - "isOptional": true, - "description": "The logger used while resolving values." - }, - { - "name": "cancellationToken", - "type": "cancellationToken", - "isOptional": true, - "description": "A cancellation token." + "name": "value", + "type": "boolean" } ], - "returnType": "IExecutionConfigurationResult", - "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.IExecutionConfigurationBuilder", + "returnType": "EndpointUpdateContext", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.EndpointUpdateContext", "expandedTargetTypes": [ - "Aspire.Hosting.ApplicationModel.IExecutionConfigurationBuilder" + "Aspire.Hosting.ApplicationModel.EndpointUpdateContext" ] }, { - "name": "withArgumentsConfig", - "capabilityId": "Aspire.Hosting/withArgumentsConfig", - "qualifiedName": "withArgumentsConfig", - "description": "Adds a command line arguments configuration gatherer to the builder.", - "returns": "The builder with the configuration gatherer added.", - "kind": "Method", - "signature": "withArgumentsConfig(): IExecutionConfigurationBuilder", - "parameters": [], - "returnType": "IExecutionConfigurationBuilder", - "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.IExecutionConfigurationBuilder", + "name": "setPort", + "capabilityId": "Aspire.Hosting.ApplicationModel/EndpointUpdateContext.setPort", + "qualifiedName": "EndpointUpdateContext.setPort", + "description": "Gets or sets the desired host port.", + "kind": "PropertySetter", + "signature": "setPort(value: number): EndpointUpdateContext", + "parameters": [ + { + "name": "value", + "type": "number" + } + ], + "returnType": "EndpointUpdateContext", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.EndpointUpdateContext", "expandedTargetTypes": [ - "Aspire.Hosting.ApplicationModel.IExecutionConfigurationBuilder" + "Aspire.Hosting.ApplicationModel.EndpointUpdateContext" ] }, { - "name": "withCertificateTrustConfig", - "capabilityId": "Aspire.Hosting/withCertificateTrustConfig", - "qualifiedName": "withCertificateTrustConfig", - "description": "Adds a certificate trust configuration gatherer to the builder.", - "returns": "The builder with the configuration gatherer added.", - "kind": "Method", - "signature": "withCertificateTrustConfig(configContextFactory: (arg: CertificateTrustScope) => Promise): IExecutionConfigurationBuilder", + "name": "setProtocol", + "capabilityId": "Aspire.Hosting.ApplicationModel/EndpointUpdateContext.setProtocol", + "qualifiedName": "EndpointUpdateContext.setProtocol", + "description": "Gets or sets the network protocol.", + "kind": "PropertySetter", + "signature": "setProtocol(value: ProtocolType): EndpointUpdateContext", "parameters": [ { - "name": "configContextFactory", - "type": "callback", - "isCallback": true, - "callbackSignature": "(arg: CertificateTrustScope) => Promise", - "description": "A factory function to create the configuration context." + "name": "value", + "type": "ProtocolType" } ], - "returnType": "IExecutionConfigurationBuilder", - "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.IExecutionConfigurationBuilder", + "returnType": "EndpointUpdateContext", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.EndpointUpdateContext", "expandedTargetTypes": [ - "Aspire.Hosting.ApplicationModel.IExecutionConfigurationBuilder" + "Aspire.Hosting.ApplicationModel.EndpointUpdateContext" ] }, { - "name": "withEnvironmentVariablesConfig", - "capabilityId": "Aspire.Hosting/withEnvironmentVariablesConfig", - "qualifiedName": "withEnvironmentVariablesConfig", - "description": "Adds an environment variables configuration gatherer to the builder.", - "returns": "The builder with the configuration gatherer added.", - "kind": "Method", - "signature": "withEnvironmentVariablesConfig(): IExecutionConfigurationBuilder", - "parameters": [], - "returnType": "IExecutionConfigurationBuilder", - "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.IExecutionConfigurationBuilder", + "name": "setTargetHost", + "capabilityId": "Aspire.Hosting.ApplicationModel/EndpointUpdateContext.setTargetHost", + "qualifiedName": "EndpointUpdateContext.setTargetHost", + "description": "Gets or sets the target host.", + "kind": "PropertySetter", + "signature": "setTargetHost(value: string): EndpointUpdateContext", + "parameters": [ + { + "name": "value", + "type": "string" + } + ], + "returnType": "EndpointUpdateContext", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.EndpointUpdateContext", "expandedTargetTypes": [ - "Aspire.Hosting.ApplicationModel.IExecutionConfigurationBuilder" + "Aspire.Hosting.ApplicationModel.EndpointUpdateContext" ] }, { - "name": "withHttpsCertificateConfig", - "capabilityId": "Aspire.Hosting/withHttpsCertificateConfigExport", - "qualifiedName": "withHttpsCertificateConfig", - "description": "Adds an HTTPS certificate configuration gatherer using certificate metadata instead of a raw X509 certificate.", - "returns": "The execution configuration builder.", - "kind": "Method", - "signature": "withHttpsCertificateConfig(configContextFactory: (arg: HttpsCertificateInfo) => Promise): IExecutionConfigurationBuilder", + "name": "setTargetPort", + "capabilityId": "Aspire.Hosting.ApplicationModel/EndpointUpdateContext.setTargetPort", + "qualifiedName": "EndpointUpdateContext.setTargetPort", + "description": "Gets or sets the target port.", + "kind": "PropertySetter", + "signature": "setTargetPort(value: number): EndpointUpdateContext", "parameters": [ { - "name": "configContextFactory", - "type": "callback", - "isCallback": true, - "callbackSignature": "(arg: HttpsCertificateInfo) => Promise", - "description": "The factory that creates the HTTPS certificate configuration context." + "name": "value", + "type": "number" } ], - "returnType": "IExecutionConfigurationBuilder", - "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.IExecutionConfigurationBuilder", + "returnType": "EndpointUpdateContext", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.EndpointUpdateContext", "expandedTargetTypes": [ - "Aspire.Hosting.ApplicationModel.IExecutionConfigurationBuilder" + "Aspire.Hosting.ApplicationModel.EndpointUpdateContext" ] - } - ] - }, - { - "name": "IExecutionConfigurationResult", - "fullName": "Aspire.Hosting.ApplicationModel.IExecutionConfigurationResult", - "kind": "handle", - "isInterface": true, - "description": "Configuration (arguments and environment variables) to apply to a specific resource.", - "implementedInterfaces": [], - "baseTypeHierarchy": [], - "capabilities": [ + }, { - "name": "getCertificateTrustData", - "capabilityId": "Aspire.Hosting/getCertificateTrustData", - "qualifiedName": "getCertificateTrustData", - "description": "Gets certificate trust execution-configuration data when present.", - "returns": "The certificate trust data. When no additional data is present, an empty DTO is returned.", - "kind": "Method", - "signature": "getCertificateTrustData(): CertificateTrustExecutionConfigurationExportData", - "parameters": [], - "returnType": "CertificateTrustExecutionConfigurationExportData", - "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.IExecutionConfigurationResult", - "expandedTargetTypes": [ - "Aspire.Hosting.ApplicationModel.IExecutionConfigurationResult" + "name": "setTlsEnabled", + "capabilityId": "Aspire.Hosting.ApplicationModel/EndpointUpdateContext.setTlsEnabled", + "qualifiedName": "EndpointUpdateContext.setTlsEnabled", + "description": "Gets or sets a value indicating whether TLS is enabled.", + "kind": "PropertySetter", + "signature": "setTlsEnabled(value: boolean): EndpointUpdateContext", + "parameters": [ + { + "name": "value", + "type": "boolean" + } + ], + "returnType": "EndpointUpdateContext", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.EndpointUpdateContext", + "expandedTargetTypes": [ + "Aspire.Hosting.ApplicationModel.EndpointUpdateContext" ] }, { - "name": "getHttpsCertificateData", - "capabilityId": "Aspire.Hosting/getHttpsCertificateData", - "qualifiedName": "getHttpsCertificateData", - "description": "Gets HTTPS certificate execution-configuration data when present.", - "returns": "The HTTPS certificate data. When no additional data is present, an empty DTO is returned.", - "kind": "Method", - "signature": "getHttpsCertificateData(): HttpsCertificateExecutionConfigurationExportData", - "parameters": [], - "returnType": "HttpsCertificateExecutionConfigurationExportData", - "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.IExecutionConfigurationResult", + "name": "setTransport", + "capabilityId": "Aspire.Hosting.ApplicationModel/EndpointUpdateContext.setTransport", + "qualifiedName": "EndpointUpdateContext.setTransport", + "description": "Gets or sets the transport.", + "kind": "PropertySetter", + "signature": "setTransport(value: string): EndpointUpdateContext", + "parameters": [ + { + "name": "value", + "type": "string" + } + ], + "returnType": "EndpointUpdateContext", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.EndpointUpdateContext", "expandedTargetTypes": [ - "Aspire.Hosting.ApplicationModel.IExecutionConfigurationResult" + "Aspire.Hosting.ApplicationModel.EndpointUpdateContext" ] - } - ] - }, - { - "name": "IExpressionValue", - "fullName": "Aspire.Hosting.ApplicationModel.IExpressionValue", - "kind": "handle", - "isInterface": true, - "description": "Represents a value that provides both a runtime value and a manifest expression.", - "remarks": "Expression values can be used anywhere both a runtime value and a publish-time\nmanifest expression are needed.", - "implementedInterfaces": [], - "baseTypeHierarchy": [], - "capabilities": [] - }, - { - "name": "InitializeResourceEvent", - "fullName": "Aspire.Hosting.ApplicationModel.InitializeResourceEvent", - "kind": "handle", - "exposeProperties": true, - "description": "This event is raised by orchestrators to signal to resources that they should initialize themselves.", - "remarks": "Custom resources can subscribe to this event to perform initialization tasks, including starting background tasks\nthat manage the resource's lifecycle.", - "implementedInterfaces": [ - "Aspire.Hosting.Eventing.IDistributedApplicationEvent", - "Aspire.Hosting.Eventing.IDistributedApplicationResourceEvent" - ], - "baseTypeHierarchy": [], - "capabilities": [ + }, { - "name": "eventing", - "capabilityId": "Aspire.Hosting.ApplicationModel/InitializeResourceEvent.eventing", - "qualifiedName": "InitializeResourceEvent.eventing", - "description": "The `IDistributedApplicationEventing` service for the AppHost.", + "name": "setUriScheme", + "capabilityId": "Aspire.Hosting.ApplicationModel/EndpointUpdateContext.setUriScheme", + "qualifiedName": "EndpointUpdateContext.setUriScheme", + "description": "Gets or sets the URI scheme.", + "kind": "PropertySetter", + "signature": "setUriScheme(value: string): EndpointUpdateContext", + "parameters": [ + { + "name": "value", + "type": "string" + } + ], + "returnType": "EndpointUpdateContext", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.EndpointUpdateContext", + "expandedTargetTypes": [ + "Aspire.Hosting.ApplicationModel.EndpointUpdateContext" + ] + }, + { + "name": "targetHost", + "capabilityId": "Aspire.Hosting.ApplicationModel/EndpointUpdateContext.targetHost", + "qualifiedName": "EndpointUpdateContext.targetHost", + "description": "Gets or sets the target host.", "kind": "PropertyGetter", - "signature": "eventing(): IDistributedApplicationEventing", + "signature": "targetHost(): string", "parameters": [], - "returnType": "IDistributedApplicationEventing", - "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.InitializeResourceEvent", + "returnType": "string", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.EndpointUpdateContext", "expandedTargetTypes": [ - "Aspire.Hosting.ApplicationModel.InitializeResourceEvent" + "Aspire.Hosting.ApplicationModel.EndpointUpdateContext" ] }, { - "name": "logger", - "capabilityId": "Aspire.Hosting.ApplicationModel/InitializeResourceEvent.logger", - "qualifiedName": "InitializeResourceEvent.logger", - "description": "An instance of `ILogger` that can be used to log messages for the resource.", + "name": "targetPort", + "capabilityId": "Aspire.Hosting.ApplicationModel/EndpointUpdateContext.targetPort", + "qualifiedName": "EndpointUpdateContext.targetPort", + "description": "Gets or sets the target port.", "kind": "PropertyGetter", - "signature": "logger(): ILogger", + "signature": "targetPort(): number", "parameters": [], - "returnType": "ILogger", - "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.InitializeResourceEvent", + "returnType": "number", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.EndpointUpdateContext", "expandedTargetTypes": [ - "Aspire.Hosting.ApplicationModel.InitializeResourceEvent" + "Aspire.Hosting.ApplicationModel.EndpointUpdateContext" ] }, { - "name": "notifications", - "capabilityId": "Aspire.Hosting.ApplicationModel/InitializeResourceEvent.notifications", - "qualifiedName": "InitializeResourceEvent.notifications", - "description": "The `ResourceNotificationService` for the AppHost.", + "name": "tlsEnabled", + "capabilityId": "Aspire.Hosting.ApplicationModel/EndpointUpdateContext.tlsEnabled", + "qualifiedName": "EndpointUpdateContext.tlsEnabled", + "description": "Gets or sets a value indicating whether TLS is enabled.", "kind": "PropertyGetter", - "signature": "notifications(): ResourceNotificationService", + "signature": "tlsEnabled(): boolean", "parameters": [], - "returnType": "ResourceNotificationService", - "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.InitializeResourceEvent", + "returnType": "boolean", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.EndpointUpdateContext", "expandedTargetTypes": [ - "Aspire.Hosting.ApplicationModel.InitializeResourceEvent" + "Aspire.Hosting.ApplicationModel.EndpointUpdateContext" ] }, { - "name": "resource", - "capabilityId": "Aspire.Hosting.ApplicationModel/InitializeResourceEvent.resource", - "qualifiedName": "InitializeResourceEvent.resource", - "description": "Gets the Resource property", + "name": "transport", + "capabilityId": "Aspire.Hosting.ApplicationModel/EndpointUpdateContext.transport", + "qualifiedName": "EndpointUpdateContext.transport", + "description": "Gets or sets the transport.", "kind": "PropertyGetter", - "signature": "resource(): IResource", + "signature": "transport(): string", "parameters": [], - "returnType": "IResource", - "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.InitializeResourceEvent", + "returnType": "string", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.EndpointUpdateContext", "expandedTargetTypes": [ - "Aspire.Hosting.ApplicationModel.InitializeResourceEvent" + "Aspire.Hosting.ApplicationModel.EndpointUpdateContext" ] }, { - "name": "services", - "capabilityId": "Aspire.Hosting.ApplicationModel/InitializeResourceEvent.services", - "qualifiedName": "InitializeResourceEvent.services", - "description": "The `IServiceProvider` for the AppHost.", + "name": "uriScheme", + "capabilityId": "Aspire.Hosting.ApplicationModel/EndpointUpdateContext.uriScheme", + "qualifiedName": "EndpointUpdateContext.uriScheme", + "description": "Gets or sets the URI scheme.", "kind": "PropertyGetter", - "signature": "services(): IServiceProvider", + "signature": "uriScheme(): string", "parameters": [], - "returnType": "IServiceProvider", - "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.InitializeResourceEvent", + "returnType": "string", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.EndpointUpdateContext", "expandedTargetTypes": [ - "Aspire.Hosting.ApplicationModel.InitializeResourceEvent" + "Aspire.Hosting.ApplicationModel.EndpointUpdateContext" ] } ] }, { - "name": "IResource", - "fullName": "Aspire.Hosting.ApplicationModel.IResource", + "name": "EnvironmentCallbackContext", + "fullName": "Aspire.Hosting.ApplicationModel.EnvironmentCallbackContext", "kind": "handle", - "isInterface": true, - "description": "Represents a resource that can be hosted by an application.", + "description": "Represents a callback context for environment variables associated with a publisher.", "implementedInterfaces": [], "baseTypeHierarchy": [], "capabilities": [ { - "name": "createExecutionConfiguration", - "capabilityId": "Aspire.Hosting/createExecutionConfiguration", - "qualifiedName": "createExecutionConfiguration", - "description": "Creates an execution configuration builder for the specified resource.", - "returns": "The execution configuration builder.", - "kind": "Method", - "signature": "createExecutionConfiguration(): IExecutionConfigurationBuilder", + "name": "environment", + "capabilityId": "Aspire.Hosting.ApplicationModel/EnvironmentCallbackContext.environment", + "qualifiedName": "EnvironmentCallbackContext.environment", + "description": "Gets the editor used to set environment variables in polyglot callbacks.", + "kind": "PropertyGetter", + "signature": "environment(): EnvironmentEditor", "parameters": [], - "returnType": "IExecutionConfigurationBuilder", - "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.IResource", + "returnType": "EnvironmentEditor", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.EnvironmentCallbackContext", "expandedTargetTypes": [ - "Aspire.Hosting.ApplicationModel.ContainerResource", - "Aspire.Hosting.ApplicationModel.ExecutableResource", - "Aspire.Hosting.ApplicationModel.ProjectResource", - "Aspire.Hosting.ApplicationModel.ParameterResource", - "Aspire.Hosting.ApplicationModel.ContainerRegistryResource", - "Aspire.Hosting.ApplicationModel.DotnetToolResource", - "Aspire.Hosting.ExternalServiceResource", - "Aspire.Hosting.ApplicationModel.CSharpAppResource" + "Aspire.Hosting.ApplicationModel.EnvironmentCallbackContext" ] }, { - "name": "excludeFromManifest", - "capabilityId": "Aspire.Hosting/excludeFromManifest", - "qualifiedName": "excludeFromManifest", - "description": "Excludes a resource from being published to the manifest.", - "returns": "The resource builder.", - "kind": "Method", - "signature": "excludeFromManifest(): IResource", + "name": "executionContext", + "capabilityId": "Aspire.Hosting.ApplicationModel/EnvironmentCallbackContext.executionContext", + "qualifiedName": "EnvironmentCallbackContext.executionContext", + "description": "Gets the execution context associated with this invocation of the AppHost.", + "kind": "PropertyGetter", + "signature": "executionContext(): DistributedApplicationExecutionContext", "parameters": [], - "returnType": "IResource", - "returnsBuilder": true, - "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.IResource", + "returnType": "DistributedApplicationExecutionContext", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.EnvironmentCallbackContext", "expandedTargetTypes": [ - "Aspire.Hosting.ApplicationModel.ContainerResource", - "Aspire.Hosting.ApplicationModel.ExecutableResource", - "Aspire.Hosting.ApplicationModel.ProjectResource", - "Aspire.Hosting.ApplicationModel.ParameterResource", - "Aspire.Hosting.ApplicationModel.ContainerRegistryResource", - "Aspire.Hosting.ApplicationModel.DotnetToolResource", - "Aspire.Hosting.ExternalServiceResource", - "Aspire.Hosting.ApplicationModel.CSharpAppResource" + "Aspire.Hosting.ApplicationModel.EnvironmentCallbackContext" ] }, { - "name": "excludeFromMcp", - "capabilityId": "Aspire.Hosting/excludeFromMcp", - "qualifiedName": "excludeFromMcp", - "description": "Exclude the resource from MCP operations using the Aspire MCP server. The resource is excluded from results that return resources, console logs and telemetry.", - "returns": "The resource builder.", - "kind": "Method", - "signature": "excludeFromMcp(): IResource", + "name": "log", + "capabilityId": "Aspire.Hosting.ApplicationModel/EnvironmentCallbackContext.log", + "qualifiedName": "EnvironmentCallbackContext.log", + "description": "Gets the logger facade used by polyglot callbacks.", + "kind": "PropertyGetter", + "signature": "log(): LogFacade", "parameters": [], - "returnType": "IResource", - "returnsBuilder": true, - "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.IResource", + "returnType": "LogFacade", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.EnvironmentCallbackContext", "expandedTargetTypes": [ - "Aspire.Hosting.ApplicationModel.ContainerResource", - "Aspire.Hosting.ApplicationModel.ExecutableResource", - "Aspire.Hosting.ApplicationModel.ProjectResource", - "Aspire.Hosting.ApplicationModel.ParameterResource", - "Aspire.Hosting.ApplicationModel.ContainerRegistryResource", - "Aspire.Hosting.ApplicationModel.DotnetToolResource", - "Aspire.Hosting.ExternalServiceResource", - "Aspire.Hosting.ApplicationModel.CSharpAppResource" + "Aspire.Hosting.ApplicationModel.EnvironmentCallbackContext" ] }, { - "name": "getResourceName", - "capabilityId": "Aspire.Hosting/getResourceName", - "qualifiedName": "getResourceName", - "description": "Gets the name of the resource from a builder.", - "remarks": "Why this wrapper exists: This capability accesses a nested property\n(`resource.Resource.Name`) which requires a wrapper method. There is no single\n.NET method that returns just the resource name that could be annotated directly.", - "returns": "The resource name.", - "kind": "Method", - "signature": "getResourceName(): string", + "name": "resource", + "capabilityId": "Aspire.Hosting.ApplicationModel/EnvironmentCallbackContext.resource", + "qualifiedName": "EnvironmentCallbackContext.resource", + "description": "The resource associated with this callback context.", + "remarks": "This will be set to the resource in all cases where Aspire invokes the callback.", + "kind": "PropertyGetter", + "signature": "resource(): IResource", "parameters": [], - "returnType": "string", - "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.IResource", + "returnType": "IResource", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.EnvironmentCallbackContext", "expandedTargetTypes": [ - "Aspire.Hosting.ApplicationModel.ContainerResource", - "Aspire.Hosting.ApplicationModel.ExecutableResource", - "Aspire.Hosting.ApplicationModel.ProjectResource", - "Aspire.Hosting.ApplicationModel.ParameterResource", - "Aspire.Hosting.ApplicationModel.ContainerRegistryResource", - "Aspire.Hosting.ApplicationModel.DotnetToolResource", - "Aspire.Hosting.ExternalServiceResource", - "Aspire.Hosting.ApplicationModel.CSharpAppResource" + "Aspire.Hosting.ApplicationModel.EnvironmentCallbackContext" ] - }, + } + ] + }, + { + "name": "EnvironmentEditor", + "fullName": "Aspire.Hosting.ApplicationModel.EnvironmentEditor", + "kind": "handle", + "description": "Provides an ATS-first editor for environment variables within polyglot callbacks.", + "implementedInterfaces": [], + "baseTypeHierarchy": [], + "capabilities": [ { - "name": "onBeforeResourceStarted", - "capabilityId": "Aspire.Hosting/onBeforeResourceStarted", - "qualifiedName": "onBeforeResourceStarted", - "description": "Subscribes to the BeforeResourceStarted event.", - "returns": "The resource builder.", - "kind": "Method", - "signature": "onBeforeResourceStarted(callback: (arg: BeforeResourceStartedEvent) => Promise): IResource", + "name": "set", + "capabilityId": "Aspire.Hosting.ApplicationModel/set", + "qualifiedName": "EnvironmentEditor.set", + "description": "Sets an environment variable.", + "kind": "InstanceMethod", + "signature": "set(name: string, value: IExpressionValue): void", "parameters": [ { - "name": "callback", - "type": "callback", - "isCallback": true, - "callbackSignature": "(arg: BeforeResourceStartedEvent) => Promise", - "description": "The callback to invoke when the event fires." + "name": "name", + "type": "string", + "description": "The name of the environment variable." + }, + { + "name": "value", + "type": "IExpressionValue", + "description": "The value to assign to the environment variable." } ], - "returnType": "IResource", - "returnsBuilder": true, - "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.IResource", + "returnType": "void", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.EnvironmentEditor", "expandedTargetTypes": [ - "Aspire.Hosting.ApplicationModel.ContainerResource", - "Aspire.Hosting.ApplicationModel.ExecutableResource", - "Aspire.Hosting.ApplicationModel.ProjectResource", - "Aspire.Hosting.ApplicationModel.ParameterResource", - "Aspire.Hosting.ApplicationModel.ContainerRegistryResource", - "Aspire.Hosting.ApplicationModel.DotnetToolResource", - "Aspire.Hosting.ExternalServiceResource", - "Aspire.Hosting.ApplicationModel.CSharpAppResource" + "Aspire.Hosting.ApplicationModel.EnvironmentEditor" ] - }, + } + ] + }, + { + "name": "ExecutableResource", + "fullName": "Aspire.Hosting.ApplicationModel.ExecutableResource", + "kind": "handle", + "description": "A resource that represents a specified executable process.", + "remarks": "You can run any executable command using its full path.\nAs a security feature, Aspire doesn't run executable unless the command is located in a path listed in the PATH environment variable.\nTo run an executable file that's in the current directory, specify the full path or use the relative path `./` to represent the current directory.", + "implementedInterfaces": [ + "Aspire.Hosting.ApplicationModel.IComputeResource", + "Aspire.Hosting.ApplicationModel.IResource", + "Aspire.Hosting.ApplicationModel.IResourceWithArgs", + "Aspire.Hosting.ApplicationModel.IResourceWithEndpoints", + "Aspire.Hosting.ApplicationModel.IResourceWithEnvironment", + "Aspire.Hosting.ApplicationModel.IResourceWithProbes", + "Aspire.Hosting.ApplicationModel.IResourceWithWaitSupport" + ], + "baseTypeHierarchy": [ + "Aspire.Hosting.ApplicationModel.Resource" + ], + "capabilities": [ { - "name": "onInitializeResource", - "capabilityId": "Aspire.Hosting/onInitializeResource", - "qualifiedName": "onInitializeResource", - "description": "Subscribes to the InitializeResource event.", + "name": "publishAsDockerFile", + "capabilityId": "Aspire.Hosting/publishAsDockerFile", + "qualifiedName": "publishAsDockerFile", + "description": "Publishes an executable as a Docker file", + "remarks": "When the executable resource is converted to a container resource, the arguments to the executable\nare not used. This is because arguments to the executable often contain physical paths that are not valid\nin the container. The container can be set up with the correct arguments using the `configure` action.", "returns": "The resource builder.", "kind": "Method", - "signature": "onInitializeResource(callback: (arg: InitializeResourceEvent) => Promise): IResource", + "signature": "publishAsDockerFile(configure: (obj: ContainerResource) => Promise): ExecutableResource", "parameters": [ { - "name": "callback", + "name": "configure", "type": "callback", "isCallback": true, - "callbackSignature": "(arg: InitializeResourceEvent) => Promise", - "description": "The callback to invoke when the event fires." + "callbackSignature": "(obj: ContainerResource) => Promise", + "description": "Optional action to configure the container resource" } ], - "returnType": "IResource", + "returnType": "ExecutableResource", "returnsBuilder": true, - "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.IResource", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.ExecutableResource", "expandedTargetTypes": [ - "Aspire.Hosting.ApplicationModel.ContainerResource", "Aspire.Hosting.ApplicationModel.ExecutableResource", - "Aspire.Hosting.ApplicationModel.ProjectResource", - "Aspire.Hosting.ApplicationModel.ParameterResource", - "Aspire.Hosting.ApplicationModel.ContainerRegistryResource", - "Aspire.Hosting.ApplicationModel.DotnetToolResource", - "Aspire.Hosting.ExternalServiceResource", - "Aspire.Hosting.ApplicationModel.CSharpAppResource" + "Aspire.Hosting.ApplicationModel.DotnetToolResource" ] }, { - "name": "onResourceReady", - "capabilityId": "Aspire.Hosting/onResourceReady", - "qualifiedName": "onResourceReady", - "description": "Subscribes to the ResourceReady event.", + "name": "withExecutableCommand", + "capabilityId": "Aspire.Hosting/withExecutableCommand", + "qualifiedName": "withExecutableCommand", + "description": "Sets the command for the executable resource.", "returns": "The resource builder.", "kind": "Method", - "signature": "onResourceReady(callback: (arg: ResourceReadyEvent) => Promise): IResource", + "signature": "withExecutableCommand(command: string): ExecutableResource", "parameters": [ { - "name": "callback", - "type": "callback", - "isCallback": true, - "callbackSignature": "(arg: ResourceReadyEvent) => Promise", - "description": "The callback to invoke when the event fires." + "name": "command", + "type": "string", + "description": "Command." } ], - "returnType": "IResource", + "returnType": "ExecutableResource", "returnsBuilder": true, - "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.IResource", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.ExecutableResource", "expandedTargetTypes": [ - "Aspire.Hosting.ApplicationModel.ContainerResource", "Aspire.Hosting.ApplicationModel.ExecutableResource", - "Aspire.Hosting.ApplicationModel.ProjectResource", - "Aspire.Hosting.ApplicationModel.ParameterResource", - "Aspire.Hosting.ApplicationModel.ContainerRegistryResource", - "Aspire.Hosting.ApplicationModel.DotnetToolResource", - "Aspire.Hosting.ExternalServiceResource", - "Aspire.Hosting.ApplicationModel.CSharpAppResource" + "Aspire.Hosting.ApplicationModel.DotnetToolResource" ] }, { - "name": "onResourceStopped", - "capabilityId": "Aspire.Hosting/onResourceStopped", - "qualifiedName": "onResourceStopped", - "description": "Subscribes to the ResourceStopped event.", + "name": "withWorkingDirectory", + "capabilityId": "Aspire.Hosting/withWorkingDirectory", + "qualifiedName": "withWorkingDirectory", + "description": "Sets the working directory for the executable resource.", "returns": "The resource builder.", "kind": "Method", - "signature": "onResourceStopped(callback: (arg: ResourceStoppedEvent) => Promise): IResource", + "signature": "withWorkingDirectory(workingDirectory: string): ExecutableResource", "parameters": [ { - "name": "callback", - "type": "callback", - "isCallback": true, - "callbackSignature": "(arg: ResourceStoppedEvent) => Promise", - "description": "The callback to invoke when the event fires." + "name": "workingDirectory", + "type": "string", + "description": "Working directory." } ], - "returnType": "IResource", + "returnType": "ExecutableResource", "returnsBuilder": true, - "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.IResource", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.ExecutableResource", "expandedTargetTypes": [ - "Aspire.Hosting.ApplicationModel.ContainerResource", "Aspire.Hosting.ApplicationModel.ExecutableResource", - "Aspire.Hosting.ApplicationModel.ProjectResource", - "Aspire.Hosting.ApplicationModel.ParameterResource", - "Aspire.Hosting.ApplicationModel.ContainerRegistryResource", - "Aspire.Hosting.ApplicationModel.DotnetToolResource", - "Aspire.Hosting.ExternalServiceResource", - "Aspire.Hosting.ApplicationModel.CSharpAppResource" + "Aspire.Hosting.ApplicationModel.DotnetToolResource" + ] + } + ] + }, + { + "name": "ExecuteCommandContext", + "fullName": "Aspire.Hosting.ApplicationModel.ExecuteCommandContext", + "kind": "handle", + "exposeProperties": true, + "description": "Context for {@ats-ref method:ResourceCommandAnnotation.ExecuteCommand}.", + "implementedInterfaces": [], + "baseTypeHierarchy": [], + "capabilities": [ + { + "name": "arguments", + "capabilityId": "Aspire.Hosting.ApplicationModel/ExecuteCommandContext.arguments", + "qualifiedName": "ExecuteCommandContext.arguments", + "description": "Gets the invocation arguments supplied by the client when the command is executed.", + "remarks": "The collection contains the arguments described by `Arguments` with their\nsubmitted values populated. CLI positional arguments are mapped by declaration order. Dashboard, MCP, and other\nnamed-payload clients are mapped by `Name`.", + "kind": "PropertyGetter", + "signature": "arguments(): InteractionInputCollection", + "parameters": [], + "returnType": "InteractionInputCollection", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.ExecuteCommandContext", + "expandedTargetTypes": [ + "Aspire.Hosting.ApplicationModel.ExecuteCommandContext" ] }, { - "name": "withChildRelationship", - "capabilityId": "Aspire.Hosting/withBuilderChildRelationship", - "qualifiedName": "withChildRelationship", - "description": "Sets a child relationship", - "returns": "A resource builder.", - "kind": "Method", - "signature": "withChildRelationship(child: IResource): IResource", - "parameters": [ - { - "name": "child", - "type": "IResource", - "description": "The child of `builder`." - } - ], - "returnType": "IResource", - "returnsBuilder": true, - "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.IResource", + "name": "cancellationToken", + "capabilityId": "Aspire.Hosting.ApplicationModel/ExecuteCommandContext.cancellationToken", + "qualifiedName": "ExecuteCommandContext.cancellationToken", + "description": "The cancellation token.", + "kind": "PropertyGetter", + "signature": "cancellationToken(): cancellationToken", + "parameters": [], + "returnType": "cancellationToken", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.ExecuteCommandContext", "expandedTargetTypes": [ - "Aspire.Hosting.ApplicationModel.ContainerResource", - "Aspire.Hosting.ApplicationModel.ExecutableResource", - "Aspire.Hosting.ApplicationModel.ProjectResource", - "Aspire.Hosting.ApplicationModel.ParameterResource", - "Aspire.Hosting.ApplicationModel.ContainerRegistryResource", - "Aspire.Hosting.ApplicationModel.DotnetToolResource", - "Aspire.Hosting.ExternalServiceResource", - "Aspire.Hosting.ApplicationModel.CSharpAppResource" + "Aspire.Hosting.ApplicationModel.ExecuteCommandContext" ] }, { - "name": "withCommand", - "capabilityId": "Aspire.Hosting/withCommand", - "qualifiedName": "withCommand", - "description": "Adds a resource command", - "remarks": "The `WithCommand` method is used to add commands to the resource. Commands are displayed in the dashboard\nand can be executed by a user using the dashboard UI.\nWhen a command is executed, the `executeCommand` callback is called and is run inside the Aspire host.", - "returns": "The resource builder.", - "kind": "Method", - "signature": "withCommand(name: string, displayName: string, executeCommand: (arg: ExecuteCommandContext) => Promise, commandOptions?: CommandOptions): IResource", - "parameters": [ - { - "name": "name", - "type": "string", - "description": "The name of the command. The name uniquely identifies the command." - }, - { - "name": "displayName", - "type": "string", - "description": "The display name visible in UI." - }, - { - "name": "executeCommand", - "type": "callback", - "isCallback": true, - "callbackSignature": "(arg: ExecuteCommandContext) => Promise", - "description": "A callback that is executed when the command is executed. The callback is run inside the Aspire host. The callback result is used to indicate success or failure in the UI." - }, - { - "name": "commandOptions", - "type": "CommandOptions", - "isOptional": true, - "description": "Optional configuration for the command." - } - ], - "returnType": "IResource", - "returnsBuilder": true, - "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.IResource", + "name": "logger", + "capabilityId": "Aspire.Hosting.ApplicationModel/ExecuteCommandContext.logger", + "qualifiedName": "ExecuteCommandContext.logger", + "description": "The logger for the resource.", + "kind": "PropertyGetter", + "signature": "logger(): ILogger", + "parameters": [], + "returnType": "ILogger", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.ExecuteCommandContext", "expandedTargetTypes": [ - "Aspire.Hosting.ApplicationModel.ContainerResource", - "Aspire.Hosting.ApplicationModel.ExecutableResource", - "Aspire.Hosting.ApplicationModel.ProjectResource", - "Aspire.Hosting.ApplicationModel.ParameterResource", - "Aspire.Hosting.ApplicationModel.ContainerRegistryResource", - "Aspire.Hosting.ApplicationModel.DotnetToolResource", - "Aspire.Hosting.ExternalServiceResource", - "Aspire.Hosting.ApplicationModel.CSharpAppResource" + "Aspire.Hosting.ApplicationModel.ExecuteCommandContext" ] }, { - "name": "withContainerRegistry", - "capabilityId": "Aspire.Hosting/withContainerRegistry", - "qualifiedName": "withContainerRegistry", - "description": "Configures the resource to use the specified container registry for container image operations.", - "remarks": "This method adds a `ContainerRegistryReferenceAnnotation` to the resource,\nindicating that the resource should use the specified container registry for container image operations.", - "returns": "The resource builder for chaining.", - "kind": "Method", - "signature": "withContainerRegistry(registry: IResource): IResource", - "parameters": [ - { - "name": "registry", - "type": "IResource", - "description": "The container registry resource builder." - } - ], - "returnType": "IResource", - "returnsBuilder": true, - "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.IResource", + "name": "resourceName", + "capabilityId": "Aspire.Hosting.ApplicationModel/ExecuteCommandContext.resourceName", + "qualifiedName": "ExecuteCommandContext.resourceName", + "description": "The resource name.", + "kind": "PropertyGetter", + "signature": "resourceName(): string", + "parameters": [], + "returnType": "string", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.ExecuteCommandContext", "expandedTargetTypes": [ - "Aspire.Hosting.ApplicationModel.ContainerResource", - "Aspire.Hosting.ApplicationModel.ExecutableResource", - "Aspire.Hosting.ApplicationModel.ProjectResource", - "Aspire.Hosting.ApplicationModel.ParameterResource", - "Aspire.Hosting.ApplicationModel.ContainerRegistryResource", - "Aspire.Hosting.ApplicationModel.DotnetToolResource", - "Aspire.Hosting.ExternalServiceResource", - "Aspire.Hosting.ApplicationModel.CSharpAppResource" + "Aspire.Hosting.ApplicationModel.ExecuteCommandContext" ] }, { - "name": "withDockerfileBaseImage", - "capabilityId": "Aspire.Hosting/withDockerfileBaseImage", - "qualifiedName": "withDockerfileBaseImage", - "description": "Configures custom base images for generated Dockerfiles.", - "remarks": "This extension method allows customization of the base images used in generated Dockerfiles.\nFor multi-stage Dockerfiles (e.g., Python with UV), you can specify separate build and runtime images.\nSpecify custom base images for a Python application:\n```\nvar builder = DistributedApplication.CreateBuilder(args);\nbuilder.AddPythonApp(\"myapp\", \"path/to/app\", \"main.py\")\n.WithDockerfileBaseImage(\nbuildImage: \"ghcr.io/astral-sh/uv:python3.12-bookworm-slim\",\nruntimeImage: \"python:3.12-slim-bookworm\");\nbuilder.Build().Run();\n```", - "returns": "The resource builder.", - "kind": "Method", - "signature": "withDockerfileBaseImage(buildImage?: string, runtimeImage?: string): IResource", - "parameters": [ - { - "name": "buildImage", - "type": "string", - "isOptional": true, - "description": "The base image to use for the build stage. If null, uses the default build image." - }, - { - "name": "runtimeImage", - "type": "string", - "isOptional": true, - "description": "The base image to use for the runtime stage. If null, uses the default runtime image." - } - ], - "returnType": "IResource", - "returnsBuilder": true, - "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.IResource", + "name": "services", + "capabilityId": "Aspire.Hosting.ApplicationModel/ExecuteCommandContext.services", + "qualifiedName": "ExecuteCommandContext.services", + "description": "The service provider.", + "kind": "PropertyGetter", + "signature": "services(): IServiceProvider", + "parameters": [], + "returnType": "IServiceProvider", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.ExecuteCommandContext", "expandedTargetTypes": [ - "Aspire.Hosting.ApplicationModel.ContainerResource", - "Aspire.Hosting.ApplicationModel.ExecutableResource", - "Aspire.Hosting.ApplicationModel.ProjectResource", - "Aspire.Hosting.ApplicationModel.ParameterResource", - "Aspire.Hosting.ApplicationModel.ContainerRegistryResource", - "Aspire.Hosting.ApplicationModel.DotnetToolResource", - "Aspire.Hosting.ExternalServiceResource", - "Aspire.Hosting.ApplicationModel.CSharpAppResource" + "Aspire.Hosting.ApplicationModel.ExecuteCommandContext" ] - }, + } + ] + }, + { + "name": "HttpCommandPrepareRequestContext", + "fullName": "Aspire.Hosting.ApplicationModel.HttpCommandPrepareRequestContext", + "kind": "handle", + "exposeProperties": true, + "description": "Provides context for HTTP command prepare-request callbacks in polyglot AppHosts.", + "implementedInterfaces": [], + "baseTypeHierarchy": [], + "capabilities": [ { - "name": "withExplicitStart", - "capabilityId": "Aspire.Hosting/withExplicitStart", - "qualifiedName": "withExplicitStart", - "description": "Prevents resource from starting automatically", - "returns": "The resource builder.", - "kind": "Method", - "signature": "withExplicitStart(): IResource", + "name": "arguments", + "capabilityId": "Aspire.Hosting.ApplicationModel/HttpCommandPrepareRequestContext.arguments", + "qualifiedName": "HttpCommandPrepareRequestContext.arguments", + "description": "Gets the invocation arguments supplied by the client when the command is executed.", + "kind": "PropertyGetter", + "signature": "arguments(): InteractionInputCollection", "parameters": [], - "returnType": "IResource", - "returnsBuilder": true, - "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.IResource", + "returnType": "InteractionInputCollection", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.HttpCommandPrepareRequestContext", "expandedTargetTypes": [ - "Aspire.Hosting.ApplicationModel.ContainerResource", - "Aspire.Hosting.ApplicationModel.ExecutableResource", - "Aspire.Hosting.ApplicationModel.ProjectResource", - "Aspire.Hosting.ApplicationModel.ParameterResource", - "Aspire.Hosting.ApplicationModel.ContainerRegistryResource", - "Aspire.Hosting.ApplicationModel.DotnetToolResource", - "Aspire.Hosting.ExternalServiceResource", - "Aspire.Hosting.ApplicationModel.CSharpAppResource" + "Aspire.Hosting.ApplicationModel.HttpCommandPrepareRequestContext" ] }, { - "name": "withHealthCheck", - "capabilityId": "Aspire.Hosting/withHealthCheck", - "qualifiedName": "withHealthCheck", - "description": "Adds a health check by key", - "returns": "The resource builder.", - "kind": "Method", - "signature": "withHealthCheck(key: string): IResource", - "parameters": [ - { - "name": "key", - "type": "string", - "description": "The key for the health check." - } - ], - "returnType": "IResource", - "returnsBuilder": true, - "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.IResource", + "name": "cancellationToken", + "capabilityId": "Aspire.Hosting.ApplicationModel/HttpCommandPrepareRequestContext.cancellationToken", + "qualifiedName": "HttpCommandPrepareRequestContext.cancellationToken", + "description": "The cancellation token.", + "kind": "PropertyGetter", + "signature": "cancellationToken(): cancellationToken", + "parameters": [], + "returnType": "cancellationToken", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.HttpCommandPrepareRequestContext", "expandedTargetTypes": [ - "Aspire.Hosting.ApplicationModel.ContainerResource", - "Aspire.Hosting.ApplicationModel.ExecutableResource", - "Aspire.Hosting.ApplicationModel.ProjectResource", - "Aspire.Hosting.ApplicationModel.ParameterResource", - "Aspire.Hosting.ApplicationModel.ContainerRegistryResource", - "Aspire.Hosting.ApplicationModel.DotnetToolResource", - "Aspire.Hosting.ExternalServiceResource", - "Aspire.Hosting.ApplicationModel.CSharpAppResource" + "Aspire.Hosting.ApplicationModel.HttpCommandPrepareRequestContext" ] }, { - "name": "withHidden", - "capabilityId": "Aspire.Hosting/withHidden", - "qualifiedName": "withHidden", - "description": "Hides the resource from default resource lists", - "remarks": "Use this method to hide resources that are implementation details and should never be displayed by default.\nHidden resources can still be accessed directly by their name, by using `Show hidden resources` toggle in the dashboard or by using `aspire describe --include-hidden` from the CLI.", - "returns": "The resource builder.", - "kind": "Method", - "signature": "withHidden(): IResource", + "name": "endpoint", + "capabilityId": "Aspire.Hosting.ApplicationModel/HttpCommandPrepareRequestContext.endpoint", + "qualifiedName": "HttpCommandPrepareRequestContext.endpoint", + "description": "The endpoint the request is targeting.", + "kind": "PropertyGetter", + "signature": "endpoint(): EndpointReference", "parameters": [], - "returnType": "IResource", - "returnsBuilder": true, - "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.IResource", + "returnType": "EndpointReference", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.HttpCommandPrepareRequestContext", "expandedTargetTypes": [ - "Aspire.Hosting.ApplicationModel.ContainerResource", - "Aspire.Hosting.ApplicationModel.ExecutableResource", - "Aspire.Hosting.ApplicationModel.ProjectResource", - "Aspire.Hosting.ApplicationModel.ParameterResource", - "Aspire.Hosting.ApplicationModel.ContainerRegistryResource", - "Aspire.Hosting.ApplicationModel.DotnetToolResource", - "Aspire.Hosting.ExternalServiceResource", - "Aspire.Hosting.ApplicationModel.CSharpAppResource" + "Aspire.Hosting.ApplicationModel.HttpCommandPrepareRequestContext" ] }, { - "name": "withHiddenOnCompletion", - "capabilityId": "Aspire.Hosting/withHiddenOnCompletion", - "qualifiedName": "withHiddenOnCompletion", - "description": "Hides the resource from default resource lists after successful completion", - "remarks": "This method is useful for one-off resources such as setup scripts, migrations, or build steps that should remain visible while running\nand then be hidden after successful completion.\nHidden resources can still be accessed directly by their name, by using `Show hidden resources` toggle in the dashboard or by using `aspire describe --include-hidden` from the CLI.", - "returns": "The resource builder.", - "kind": "Method", - "signature": "withHiddenOnCompletion(exitCode?: number, exitCodes?: number[]): IResource", - "parameters": [ - { - "name": "exitCode", - "type": "number", - "isOptional": true, - "isNullable": true, - "description": "The completion exit code to treat as successful. Defaults to `0`." - }, - { - "name": "exitCodes", - "type": "number[]", - "isOptional": true, - "description": "Completion exit codes to treat as successful. If no values are provided, `0` is used." - } - ], - "returnType": "IResource", - "returnsBuilder": true, - "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.IResource", + "name": "resourceName", + "capabilityId": "Aspire.Hosting.ApplicationModel/HttpCommandPrepareRequestContext.resourceName", + "qualifiedName": "HttpCommandPrepareRequestContext.resourceName", + "description": "The name of the resource the command was configured on.", + "kind": "PropertyGetter", + "signature": "resourceName(): string", + "parameters": [], + "returnType": "string", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.HttpCommandPrepareRequestContext", "expandedTargetTypes": [ - "Aspire.Hosting.ApplicationModel.ContainerResource", - "Aspire.Hosting.ApplicationModel.ExecutableResource", - "Aspire.Hosting.ApplicationModel.ProjectResource", - "Aspire.Hosting.ApplicationModel.ParameterResource", - "Aspire.Hosting.ApplicationModel.ContainerRegistryResource", - "Aspire.Hosting.ApplicationModel.DotnetToolResource", - "Aspire.Hosting.ExternalServiceResource", - "Aspire.Hosting.ApplicationModel.CSharpAppResource" + "Aspire.Hosting.ApplicationModel.HttpCommandPrepareRequestContext" ] - }, - { - "name": "withIconName", - "capabilityId": "Aspire.Hosting/withIconName", - "qualifiedName": "withIconName", - "description": "Specifies the icon to use when displaying the resource in the dashboard.", - "returns": "The resource builder.", - "kind": "Method", - "signature": "withIconName(iconName: string, iconVariant?: IconVariant): IResource", - "parameters": [ - { - "name": "iconName", - "type": "string", - "description": "The name of the FluentUI icon to use. See https://aka.ms/fluentui-system-icons for available icons." - }, - { - "name": "iconVariant", - "type": "IconVariant", - "isOptional": true, - "defaultValue": "Filled", - "description": "The variant of the icon (Regular or Filled). Defaults to Filled." - } - ], - "returnType": "IResource", - "returnsBuilder": true, - "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.IResource", + } + ] + }, + { + "name": "HttpsCertificateConfigurationCallbackAnnotationContext", + "fullName": "Aspire.Hosting.ApplicationModel.HttpsCertificateConfigurationCallbackAnnotationContext", + "kind": "handle", + "description": "Context provided to a `HttpsCertificateConfigurationCallbackAnnotation` callback.", + "implementedInterfaces": [], + "baseTypeHierarchy": [], + "capabilities": [ + { + "name": "arguments", + "capabilityId": "Aspire.Hosting.ApplicationModel/HttpsCertificateConfigurationCallbackAnnotationContext.arguments", + "qualifiedName": "HttpsCertificateConfigurationCallbackAnnotationContext.arguments", + "description": "Gets the editor used to manipulate the command-line arguments in polyglot callbacks.", + "kind": "PropertyGetter", + "signature": "arguments(): CommandLineArgsEditor", + "parameters": [], + "returnType": "CommandLineArgsEditor", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.HttpsCertificateConfigurationCallbackAnnotationContext", "expandedTargetTypes": [ - "Aspire.Hosting.ApplicationModel.ContainerResource", - "Aspire.Hosting.ApplicationModel.ExecutableResource", - "Aspire.Hosting.ApplicationModel.ProjectResource", - "Aspire.Hosting.ApplicationModel.ParameterResource", - "Aspire.Hosting.ApplicationModel.ContainerRegistryResource", - "Aspire.Hosting.ApplicationModel.DotnetToolResource", - "Aspire.Hosting.ExternalServiceResource", - "Aspire.Hosting.ApplicationModel.CSharpAppResource" + "Aspire.Hosting.ApplicationModel.HttpsCertificateConfigurationCallbackAnnotationContext" ] }, { - "name": "withLifetimeOf", - "capabilityId": "Aspire.Hosting/withLifetimeOf", - "qualifiedName": "withLifetimeOf", - "description": "Configures a resource to match the lifetime of another resource.", - "remarks": "The resource lifetime is evaluated from `sourceBuilder` when the application model is prepared, so later lifetime\nchanges to the source resource are reflected by this resource.", - "returns": "The resource builder.", - "kind": "Method", - "signature": "withLifetimeOf(sourceBuilder: IResource): IResource", - "parameters": [ - { - "name": "sourceBuilder", - "type": "IResource", - "description": "The resource builder whose lifetime should be used." - } - ], - "returnType": "IResource", - "returnsBuilder": true, - "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.IResource", + "name": "cancellationToken", + "capabilityId": "Aspire.Hosting.ApplicationModel/HttpsCertificateConfigurationCallbackAnnotationContext.cancellationToken", + "qualifiedName": "HttpsCertificateConfigurationCallbackAnnotationContext.cancellationToken", + "description": "Gets the `CancellationToken` that can be used to cancel the operation.", + "kind": "PropertyGetter", + "signature": "cancellationToken(): cancellationToken", + "parameters": [], + "returnType": "cancellationToken", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.HttpsCertificateConfigurationCallbackAnnotationContext", "expandedTargetTypes": [ - "Aspire.Hosting.ApplicationModel.ContainerResource", - "Aspire.Hosting.ApplicationModel.ExecutableResource", - "Aspire.Hosting.ApplicationModel.ProjectResource", - "Aspire.Hosting.ApplicationModel.ParameterResource", - "Aspire.Hosting.ApplicationModel.ContainerRegistryResource", - "Aspire.Hosting.ApplicationModel.DotnetToolResource", - "Aspire.Hosting.ExternalServiceResource", - "Aspire.Hosting.ApplicationModel.CSharpAppResource" + "Aspire.Hosting.ApplicationModel.HttpsCertificateConfigurationCallbackAnnotationContext" ] }, { - "name": "withParentProcessLifetime", - "capabilityId": "Aspire.Hosting/withParentProcessLifetime", - "qualifiedName": "withParentProcessLifetime", - "description": "Configures a resource to use a persistent lifetime that ends when a parent process exits.", - "returns": "The resource builder.", - "kind": "Method", - "signature": "withParentProcessLifetime(parentProcessId: number): IResource", - "parameters": [ - { - "name": "parentProcessId", - "type": "number", - "description": "The ID of the parent process to monitor." - } - ], - "returnType": "IResource", - "returnsBuilder": true, - "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.IResource", + "name": "certificatePath", + "capabilityId": "Aspire.Hosting.ApplicationModel/HttpsCertificateConfigurationCallbackAnnotationContext.certificatePath", + "qualifiedName": "HttpsCertificateConfigurationCallbackAnnotationContext.certificatePath", + "description": "A value provider that will resolve to a path to the certificate file.", + "kind": "PropertyGetter", + "signature": "certificatePath(): ReferenceExpression", + "parameters": [], + "returnType": "ReferenceExpression", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.HttpsCertificateConfigurationCallbackAnnotationContext", "expandedTargetTypes": [ - "Aspire.Hosting.ApplicationModel.ContainerResource", - "Aspire.Hosting.ApplicationModel.ExecutableResource", - "Aspire.Hosting.ApplicationModel.ProjectResource", - "Aspire.Hosting.ApplicationModel.ParameterResource", - "Aspire.Hosting.ApplicationModel.ContainerRegistryResource", - "Aspire.Hosting.ApplicationModel.DotnetToolResource", - "Aspire.Hosting.ExternalServiceResource", - "Aspire.Hosting.ApplicationModel.CSharpAppResource" + "Aspire.Hosting.ApplicationModel.HttpsCertificateConfigurationCallbackAnnotationContext" ] }, { - "name": "withParentRelationship", - "capabilityId": "Aspire.Hosting/withBuilderParentRelationship", - "qualifiedName": "withParentRelationship", - "description": "Sets the parent relationship", - "returns": "A resource builder.", - "kind": "Method", - "signature": "withParentRelationship(parent: IResource): IResource", - "parameters": [ - { - "name": "parent", - "type": "IResource", - "description": "The parent of `builder`." - } - ], - "returnType": "IResource", - "returnsBuilder": true, - "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.IResource", + "name": "certificateWithKeyPath", + "capabilityId": "Aspire.Hosting.ApplicationModel/HttpsCertificateConfigurationCallbackAnnotationContext.certificateWithKeyPath", + "qualifiedName": "HttpsCertificateConfigurationCallbackAnnotationContext.certificateWithKeyPath", + "description": "A value provider that will resolve to a path to the certificate and key concatenated together in PEM format.", + "kind": "PropertyGetter", + "signature": "certificateWithKeyPath(): ReferenceExpression", + "parameters": [], + "returnType": "ReferenceExpression", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.HttpsCertificateConfigurationCallbackAnnotationContext", "expandedTargetTypes": [ - "Aspire.Hosting.ApplicationModel.ContainerResource", - "Aspire.Hosting.ApplicationModel.ExecutableResource", - "Aspire.Hosting.ApplicationModel.ProjectResource", - "Aspire.Hosting.ApplicationModel.ParameterResource", - "Aspire.Hosting.ApplicationModel.ContainerRegistryResource", - "Aspire.Hosting.ApplicationModel.DotnetToolResource", - "Aspire.Hosting.ExternalServiceResource", - "Aspire.Hosting.ApplicationModel.CSharpAppResource" + "Aspire.Hosting.ApplicationModel.HttpsCertificateConfigurationCallbackAnnotationContext" ] }, { - "name": "withPersistentLifetime", - "capabilityId": "Aspire.Hosting/withPersistentLifetime", - "qualifiedName": "withPersistentLifetime", - "description": "Configures a resource to use a persistent lifetime.", - "returns": "The resource builder.", - "kind": "Method", - "signature": "withPersistentLifetime(): IResource", + "name": "environment", + "capabilityId": "Aspire.Hosting.ApplicationModel/HttpsCertificateConfigurationCallbackAnnotationContext.environment", + "qualifiedName": "HttpsCertificateConfigurationCallbackAnnotationContext.environment", + "description": "Gets the editor used to set environment variables in polyglot callbacks.", + "kind": "PropertyGetter", + "signature": "environment(): EnvironmentEditor", "parameters": [], - "returnType": "IResource", - "returnsBuilder": true, - "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.IResource", + "returnType": "EnvironmentEditor", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.HttpsCertificateConfigurationCallbackAnnotationContext", "expandedTargetTypes": [ - "Aspire.Hosting.ApplicationModel.ContainerResource", - "Aspire.Hosting.ApplicationModel.ExecutableResource", - "Aspire.Hosting.ApplicationModel.ProjectResource", - "Aspire.Hosting.ApplicationModel.ParameterResource", - "Aspire.Hosting.ApplicationModel.ContainerRegistryResource", - "Aspire.Hosting.ApplicationModel.DotnetToolResource", - "Aspire.Hosting.ExternalServiceResource", - "Aspire.Hosting.ApplicationModel.CSharpAppResource" + "Aspire.Hosting.ApplicationModel.HttpsCertificateConfigurationCallbackAnnotationContext" ] }, { - "name": "withPipelineConfiguration", - "capabilityId": "Aspire.Hosting/withPipelineConfiguration", - "qualifiedName": "withPipelineConfiguration", - "description": "Registers a callback to be executed during the pipeline configuration phase, allowing modification of step dependencies and relationships.", - "returns": "The resource builder for chaining.", - "kind": "Method", - "signature": "withPipelineConfiguration(callback: (obj: PipelineConfigurationContext) => Promise): IResource", - "parameters": [ - { - "name": "callback", - "type": "callback", - "isCallback": true, - "callbackSignature": "(obj: PipelineConfigurationContext) => Promise", - "description": "The callback function to execute during the configuration phase." - } - ], - "returnType": "IResource", - "returnsBuilder": true, - "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.IResource", + "name": "executionContext", + "capabilityId": "Aspire.Hosting.ApplicationModel/HttpsCertificateConfigurationCallbackAnnotationContext.executionContext", + "qualifiedName": "HttpsCertificateConfigurationCallbackAnnotationContext.executionContext", + "description": "Gets the `DistributedApplicationExecutionContext` for this session.", + "kind": "PropertyGetter", + "signature": "executionContext(): DistributedApplicationExecutionContext", + "parameters": [], + "returnType": "DistributedApplicationExecutionContext", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.HttpsCertificateConfigurationCallbackAnnotationContext", "expandedTargetTypes": [ - "Aspire.Hosting.ApplicationModel.ContainerResource", - "Aspire.Hosting.ApplicationModel.ExecutableResource", - "Aspire.Hosting.ApplicationModel.ProjectResource", - "Aspire.Hosting.ApplicationModel.ParameterResource", - "Aspire.Hosting.ApplicationModel.ContainerRegistryResource", - "Aspire.Hosting.ApplicationModel.DotnetToolResource", - "Aspire.Hosting.ExternalServiceResource", - "Aspire.Hosting.ApplicationModel.CSharpAppResource" + "Aspire.Hosting.ApplicationModel.HttpsCertificateConfigurationCallbackAnnotationContext" ] }, { - "name": "withPipelineStepFactory", - "capabilityId": "Aspire.Hosting/withPipelineStepFactory", - "qualifiedName": "withPipelineStepFactory", - "description": "Adds a pipeline step to the resource that will be executed during deployment.", - "returns": "The resource builder for chaining.", - "kind": "Method", - "signature": "withPipelineStepFactory(stepName: string, callback: (arg: PipelineStepContext) => Promise, dependsOn?: string[], requiredBy?: string[], tags?: string[], description?: string): IResource", - "parameters": [ - { - "name": "stepName", - "type": "string", - "description": "The unique name of the pipeline step." - }, - { - "name": "callback", - "type": "callback", - "isCallback": true, - "callbackSignature": "(arg: PipelineStepContext) => Promise", - "description": "The callback to execute when the step runs." - }, - { - "name": "dependsOn", - "type": "string[]", - "isOptional": true, - "description": "Optional step names that this step depends on." - }, - { - "name": "requiredBy", - "type": "string[]", - "isOptional": true, - "description": "Optional step names that require this step." - }, - { - "name": "tags", - "type": "string[]", - "isOptional": true, - "description": "Optional tags that categorize this step." - }, - { - "name": "description", - "type": "string", - "isOptional": true, - "description": "An optional human-readable description of the step." - } - ], - "returnType": "IResource", - "returnsBuilder": true, - "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.IResource", + "name": "keyPath", + "capabilityId": "Aspire.Hosting.ApplicationModel/HttpsCertificateConfigurationCallbackAnnotationContext.keyPath", + "qualifiedName": "HttpsCertificateConfigurationCallbackAnnotationContext.keyPath", + "description": "A value provider that will resolve to a path to the private key for the certificate.", + "kind": "PropertyGetter", + "signature": "keyPath(): ReferenceExpression", + "parameters": [], + "returnType": "ReferenceExpression", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.HttpsCertificateConfigurationCallbackAnnotationContext", "expandedTargetTypes": [ - "Aspire.Hosting.ApplicationModel.ContainerResource", - "Aspire.Hosting.ApplicationModel.ExecutableResource", - "Aspire.Hosting.ApplicationModel.ProjectResource", - "Aspire.Hosting.ApplicationModel.ParameterResource", - "Aspire.Hosting.ApplicationModel.ContainerRegistryResource", - "Aspire.Hosting.ApplicationModel.DotnetToolResource", - "Aspire.Hosting.ExternalServiceResource", - "Aspire.Hosting.ApplicationModel.CSharpAppResource" + "Aspire.Hosting.ApplicationModel.HttpsCertificateConfigurationCallbackAnnotationContext" ] }, { - "name": "withProcessCommand", - "capabilityId": "Aspire.Hosting/withProcessCommand", - "qualifiedName": "withProcessCommand", - "description": "Adds a command to the resource that starts a local process when invoked.", - "kind": "Method", - "signature": "withProcessCommand(commandName: string, displayName: string, options: ProcessCommandExportOptions): IResource", - "parameters": [ - { - "name": "commandName", - "type": "string" - }, - { - "name": "displayName", - "type": "string" - }, - { - "name": "options", - "type": "ProcessCommandExportOptions" - } - ], - "returnType": "IResource", - "returnsBuilder": true, - "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.IResource", + "name": "pfxPath", + "capabilityId": "Aspire.Hosting.ApplicationModel/HttpsCertificateConfigurationCallbackAnnotationContext.pfxPath", + "qualifiedName": "HttpsCertificateConfigurationCallbackAnnotationContext.pfxPath", + "description": "A value provider that will resolve to a path to a PFX file for the key pair.", + "kind": "PropertyGetter", + "signature": "pfxPath(): ReferenceExpression", + "parameters": [], + "returnType": "ReferenceExpression", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.HttpsCertificateConfigurationCallbackAnnotationContext", "expandedTargetTypes": [ - "Aspire.Hosting.ApplicationModel.ContainerResource", - "Aspire.Hosting.ApplicationModel.ExecutableResource", - "Aspire.Hosting.ApplicationModel.ProjectResource", - "Aspire.Hosting.ApplicationModel.ParameterResource", - "Aspire.Hosting.ApplicationModel.ContainerRegistryResource", - "Aspire.Hosting.ApplicationModel.DotnetToolResource", - "Aspire.Hosting.ExternalServiceResource", - "Aspire.Hosting.ApplicationModel.CSharpAppResource" + "Aspire.Hosting.ApplicationModel.HttpsCertificateConfigurationCallbackAnnotationContext" ] }, { - "name": "withProcessCommandFactory", - "capabilityId": "Aspire.Hosting/withProcessCommandFactory", - "qualifiedName": "withProcessCommandFactory", - "description": "Adds a command to the resource that starts a local process created by a callback when invoked.", - "kind": "Method", - "signature": "withProcessCommandFactory(commandName: string, displayName: string, createProcessSpec: (arg: ExecuteCommandContext) => Promise, options?: ProcessCommandResultExportOptions): IResource", - "parameters": [ - { - "name": "commandName", - "type": "string" - }, - { - "name": "displayName", - "type": "string" - }, - { - "name": "createProcessSpec", - "type": "callback", - "isCallback": true, - "callbackSignature": "(arg: ExecuteCommandContext) => Promise" - }, - { - "name": "options", - "type": "ProcessCommandResultExportOptions", - "isOptional": true - } - ], + "name": "resource", + "capabilityId": "Aspire.Hosting.ApplicationModel/HttpsCertificateConfigurationCallbackAnnotationContext.resource", + "qualifiedName": "HttpsCertificateConfigurationCallbackAnnotationContext.resource", + "description": "Gets the resource to which the annotation is applied.", + "kind": "PropertyGetter", + "signature": "resource(): IResource", + "parameters": [], "returnType": "IResource", - "returnsBuilder": true, - "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.IResource", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.HttpsCertificateConfigurationCallbackAnnotationContext", "expandedTargetTypes": [ - "Aspire.Hosting.ApplicationModel.ContainerResource", - "Aspire.Hosting.ApplicationModel.ExecutableResource", - "Aspire.Hosting.ApplicationModel.ProjectResource", - "Aspire.Hosting.ApplicationModel.ParameterResource", - "Aspire.Hosting.ApplicationModel.ContainerRegistryResource", - "Aspire.Hosting.ApplicationModel.DotnetToolResource", - "Aspire.Hosting.ExternalServiceResource", - "Aspire.Hosting.ApplicationModel.CSharpAppResource" + "Aspire.Hosting.ApplicationModel.HttpsCertificateConfigurationCallbackAnnotationContext" ] - }, + } + ] + }, + { + "name": "HttpsEndpointUpdateCallbackContext", + "fullName": "Aspire.Hosting.ApplicationModel.HttpsEndpointUpdateCallbackContext", + "kind": "handle", + "exposeProperties": true, + "description": "Context provided to the callback of `SubscribeHttpsEndpointsUpdate``1` when an HTTPS certificate is determined to be available for the resource.", + "implementedInterfaces": [], + "baseTypeHierarchy": [], + "capabilities": [ { - "name": "withRelationship", - "capabilityId": "Aspire.Hosting/withBuilderRelationship", - "qualifiedName": "withRelationship", - "description": "Adds a relationship to another resource using its builder.", - "returns": "A resource builder.", - "kind": "Method", - "signature": "withRelationship(resourceBuilder: IResource, type: string): IResource", - "parameters": [ - { - "name": "resourceBuilder", - "type": "IResource", - "description": "The resource builder that the relationship is to." - }, - { - "name": "type", - "type": "string", - "description": "The relationship type." - } - ], - "returnType": "IResource", - "returnsBuilder": true, - "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.IResource", + "name": "cancellationToken", + "capabilityId": "Aspire.Hosting.ApplicationModel/HttpsEndpointUpdateCallbackContext.cancellationToken", + "qualifiedName": "HttpsEndpointUpdateCallbackContext.cancellationToken", + "description": "Gets the `CancellationToken` for the operation.", + "kind": "PropertyGetter", + "signature": "cancellationToken(): cancellationToken", + "parameters": [], + "returnType": "cancellationToken", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.HttpsEndpointUpdateCallbackContext", "expandedTargetTypes": [ - "Aspire.Hosting.ApplicationModel.ContainerResource", - "Aspire.Hosting.ApplicationModel.ExecutableResource", - "Aspire.Hosting.ApplicationModel.ProjectResource", - "Aspire.Hosting.ApplicationModel.ParameterResource", - "Aspire.Hosting.ApplicationModel.ContainerRegistryResource", - "Aspire.Hosting.ApplicationModel.DotnetToolResource", - "Aspire.Hosting.ExternalServiceResource", - "Aspire.Hosting.ApplicationModel.CSharpAppResource" + "Aspire.Hosting.ApplicationModel.HttpsEndpointUpdateCallbackContext" ] }, { - "name": "withRequiredCommand", - "capabilityId": "Aspire.Hosting/withRequiredCommand", - "qualifiedName": "withRequiredCommand", - "description": "Declares that a resource requires a specific command/executable to be available on the local machine PATH before it can start.", - "remarks": "The command is considered valid if either:\n1. It is an absolute or relative path (contains a directory separator) that points to an existing file, or\n2. It is discoverable on the current process PATH (respecting PATHEXT on Windows).\nIf the command is not found, a warning message will be logged but the resource will be allowed to attempt to start.", - "returns": "The resource builder.", - "kind": "Method", - "signature": "withRequiredCommand(command: string, helpLink?: string): IResource", - "parameters": [ - { - "name": "command", - "type": "string", - "description": "The command string (file name or path) that should be validated." - }, - { - "name": "helpLink", - "type": "string", - "isOptional": true, - "description": "An optional help link URL to guide users when the command is missing." - } - ], - "returnType": "IResource", - "returnsBuilder": true, - "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.IResource", + "name": "model", + "capabilityId": "Aspire.Hosting.ApplicationModel/HttpsEndpointUpdateCallbackContext.model", + "qualifiedName": "HttpsEndpointUpdateCallbackContext.model", + "description": "Gets the `DistributedApplicationModel` instance.", + "kind": "PropertyGetter", + "signature": "model(): DistributedApplicationModel", + "parameters": [], + "returnType": "DistributedApplicationModel", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.HttpsEndpointUpdateCallbackContext", "expandedTargetTypes": [ - "Aspire.Hosting.ApplicationModel.ContainerResource", - "Aspire.Hosting.ApplicationModel.ExecutableResource", - "Aspire.Hosting.ApplicationModel.ProjectResource", - "Aspire.Hosting.ApplicationModel.ParameterResource", - "Aspire.Hosting.ApplicationModel.ContainerRegistryResource", - "Aspire.Hosting.ApplicationModel.DotnetToolResource", - "Aspire.Hosting.ExternalServiceResource", - "Aspire.Hosting.ApplicationModel.CSharpAppResource" + "Aspire.Hosting.ApplicationModel.HttpsEndpointUpdateCallbackContext" ] }, { - "name": "withSessionLifetime", - "capabilityId": "Aspire.Hosting/withSessionLifetime", - "qualifiedName": "withSessionLifetime", - "description": "Configures a resource to use a session lifetime.", - "returns": "The resource builder.", - "kind": "Method", - "signature": "withSessionLifetime(): IResource", + "name": "resource", + "capabilityId": "Aspire.Hosting.ApplicationModel/HttpsEndpointUpdateCallbackContext.resource", + "qualifiedName": "HttpsEndpointUpdateCallbackContext.resource", + "description": "Gets the `IResource` that is being configured for HTTPS.", + "kind": "PropertyGetter", + "signature": "resource(): IResource", "parameters": [], "returnType": "IResource", - "returnsBuilder": true, - "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.IResource", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.HttpsEndpointUpdateCallbackContext", "expandedTargetTypes": [ - "Aspire.Hosting.ApplicationModel.ContainerResource", - "Aspire.Hosting.ApplicationModel.ExecutableResource", - "Aspire.Hosting.ApplicationModel.ProjectResource", - "Aspire.Hosting.ApplicationModel.ParameterResource", - "Aspire.Hosting.ApplicationModel.ContainerRegistryResource", - "Aspire.Hosting.ApplicationModel.DotnetToolResource", - "Aspire.Hosting.ExternalServiceResource", - "Aspire.Hosting.ApplicationModel.CSharpAppResource" + "Aspire.Hosting.ApplicationModel.HttpsEndpointUpdateCallbackContext" ] }, { - "name": "withUrl", - "capabilityId": "Aspire.Hosting/withUrl", - "qualifiedName": "withUrl", - "description": "Adds or modifies displayed URLs", - "kind": "Method", - "signature": "withUrl(url: ReferenceExpression, displayText?: string): IResource", - "parameters": [ - { - "name": "url", - "type": "ReferenceExpression" - }, - { - "name": "displayText", - "type": "string", - "isOptional": true - } - ], - "returnType": "IResource", - "returnsBuilder": true, - "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.IResource", + "name": "services", + "capabilityId": "Aspire.Hosting.ApplicationModel/HttpsEndpointUpdateCallbackContext.services", + "qualifiedName": "HttpsEndpointUpdateCallbackContext.services", + "description": "Gets the `IServiceProvider` instance from the application.", + "kind": "PropertyGetter", + "signature": "services(): IServiceProvider", + "parameters": [], + "returnType": "IServiceProvider", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.HttpsEndpointUpdateCallbackContext", "expandedTargetTypes": [ - "Aspire.Hosting.ApplicationModel.ContainerResource", - "Aspire.Hosting.ApplicationModel.ExecutableResource", - "Aspire.Hosting.ApplicationModel.ProjectResource", - "Aspire.Hosting.ApplicationModel.ParameterResource", - "Aspire.Hosting.ApplicationModel.ContainerRegistryResource", - "Aspire.Hosting.ApplicationModel.DotnetToolResource", - "Aspire.Hosting.ExternalServiceResource", - "Aspire.Hosting.ApplicationModel.CSharpAppResource" + "Aspire.Hosting.ApplicationModel.HttpsEndpointUpdateCallbackContext" ] - }, + } + ] + }, + { + "name": "IAspireStore", + "fullName": "Aspire.Hosting.ApplicationModel.IAspireStore", + "kind": "handle", + "isInterface": true, + "exposeProperties": true, + "description": "Represents a store for managing files in the Aspire hosting environment that can be reused across runs.", + "remarks": "The store is created under the AppHost obj folder, or under the path specified by the\nASPIRE__STORE__PATH environment variable. Each application gets its own store so files\ndo not conflict with unrelated applications.", + "implementedInterfaces": [], + "baseTypeHierarchy": [], + "capabilities": [ { - "name": "withUrlForEndpoint", - "capabilityId": "Aspire.Hosting/withUrlForEndpoint", - "qualifiedName": "withUrlForEndpoint", - "description": "Registers a callback to update the URL displayed for the endpoint with the specified name.", - "returns": "The resource builder.", + "name": "getFileNameWithContent", + "capabilityId": "Aspire.Hosting/getFileNameWithContent", + "qualifiedName": "getFileNameWithContent", + "description": "Gets a deterministic file path that is a copy of the `sourceFilename`. The resulting file name will depend on the content of the file.", + "returns": "A deterministic file path with the same content as `sourceFilename`.", "kind": "Method", - "signature": "withUrlForEndpoint(endpointName: string, callback: (obj: ResourceUrlAnnotation) => Promise): IResource", + "signature": "getFileNameWithContent(filenameTemplate: string, sourceFilename: string): string", "parameters": [ { - "name": "endpointName", + "name": "filenameTemplate", "type": "string", - "description": "The name of the endpoint to customize the URL for." + "description": "A file name to base the result on." }, { - "name": "callback", - "type": "callback", - "isCallback": true, - "callbackSignature": "(obj: ResourceUrlAnnotation) => Promise", - "description": "The callback that will customize the URL." + "name": "sourceFilename", + "type": "string", + "description": "An existing file." } ], - "returnType": "IResource", - "returnsBuilder": true, - "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.IResource", + "returnType": "string", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.IAspireStore", "expandedTargetTypes": [ - "Aspire.Hosting.ApplicationModel.ContainerResource", - "Aspire.Hosting.ApplicationModel.ExecutableResource", - "Aspire.Hosting.ApplicationModel.ProjectResource", - "Aspire.Hosting.ApplicationModel.ParameterResource", - "Aspire.Hosting.ApplicationModel.ContainerRegistryResource", - "Aspire.Hosting.ApplicationModel.DotnetToolResource", - "Aspire.Hosting.ExternalServiceResource", - "Aspire.Hosting.ApplicationModel.CSharpAppResource" + "Aspire.Hosting.ApplicationModel.IAspireStore" ] }, { - "name": "withUrls", - "capabilityId": "Aspire.Hosting/withUrls", - "qualifiedName": "withUrls", - "description": "Registers a callback to customize the URLs displayed for the resource.", - "returns": "The resource builder.", - "kind": "Method", - "signature": "withUrls(callback: (obj: ResourceUrlsCallbackContext) => Promise): IResource", - "parameters": [ - { - "name": "callback", - "type": "callback", - "isCallback": true, - "callbackSignature": "(obj: ResourceUrlsCallbackContext) => Promise", - "description": "The callback that will customize URLs for the resource." - } - ], - "returnType": "IResource", - "returnsBuilder": true, - "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.IResource", + "name": "basePath", + "capabilityId": "Aspire.Hosting.ApplicationModel/IAspireStore.basePath", + "qualifiedName": "IAspireStore.basePath", + "description": "Gets the base path of this store.", + "kind": "PropertyGetter", + "signature": "basePath(): string", + "parameters": [], + "returnType": "string", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.IAspireStore", "expandedTargetTypes": [ - "Aspire.Hosting.ApplicationModel.ContainerResource", - "Aspire.Hosting.ApplicationModel.ExecutableResource", - "Aspire.Hosting.ApplicationModel.ProjectResource", - "Aspire.Hosting.ApplicationModel.ParameterResource", - "Aspire.Hosting.ApplicationModel.ContainerRegistryResource", - "Aspire.Hosting.ApplicationModel.DotnetToolResource", - "Aspire.Hosting.ExternalServiceResource", - "Aspire.Hosting.ApplicationModel.CSharpAppResource" + "Aspire.Hosting.ApplicationModel.IAspireStore" ] } ] }, { - "name": "IResourceWithArgs", - "fullName": "Aspire.Hosting.ApplicationModel.IResourceWithArgs", + "name": "IComputeEnvironmentResource", + "fullName": "Aspire.Hosting.ApplicationModel.IComputeEnvironmentResource", "kind": "handle", "isInterface": true, - "description": "Represents a resource that is associated with commandline arguments.", + "implementedInterfaces": [], + "baseTypeHierarchy": [], + "capabilities": [] + }, + { + "name": "IExecutionConfigurationBuilder", + "fullName": "Aspire.Hosting.ApplicationModel.IExecutionConfigurationBuilder", + "kind": "handle", + "isInterface": true, + "description": "Builder for gathering and resolving the execution configuration (arguments and environment variables) for a specific resource.", "implementedInterfaces": [], "baseTypeHierarchy": [], "capabilities": [ { - "name": "withArgs", - "capabilityId": "Aspire.Hosting/withArgs", - "qualifiedName": "withArgs", - "description": "Adds arguments to be passed to a resource that supports arguments when it is launched.", - "returns": "The resource builder.", + "name": "build", + "capabilityId": "Aspire.Hosting/buildExecutionConfiguration", + "qualifiedName": "build", + "description": "Builds the execution configuration for the specified builder.", + "returns": "The resolved execution configuration.", "kind": "Method", - "signature": "withArgs(args: string[]): IResourceWithArgs", + "signature": "build(executionContext: DistributedApplicationExecutionContext, resourceLogger?: ILogger, cancellationToken?: cancellationToken): IExecutionConfigurationResult", "parameters": [ { - "name": "args", - "type": "string[]", - "description": "The arguments to be passed to the resource when it is started." + "name": "executionContext", + "type": "DistributedApplicationExecutionContext", + "description": "The execution context used while building the configuration." + }, + { + "name": "resourceLogger", + "type": "ILogger", + "isOptional": true, + "description": "The logger used while resolving values." + }, + { + "name": "cancellationToken", + "type": "cancellationToken", + "isOptional": true, + "description": "A cancellation token." } ], - "returnType": "IResourceWithArgs", - "returnsBuilder": true, - "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.IResourceWithArgs", + "returnType": "IExecutionConfigurationResult", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.IExecutionConfigurationBuilder", "expandedTargetTypes": [ - "Aspire.Hosting.ApplicationModel.ContainerResource", - "Aspire.Hosting.ApplicationModel.ExecutableResource", - "Aspire.Hosting.ApplicationModel.ProjectResource", - "Aspire.Hosting.ApplicationModel.DotnetToolResource", - "Aspire.Hosting.ApplicationModel.CSharpAppResource" + "Aspire.Hosting.ApplicationModel.IExecutionConfigurationBuilder" ] }, { - "name": "withArgsCallback", - "capabilityId": "Aspire.Hosting/withArgsCallback", - "qualifiedName": "withArgsCallback", - "description": "Adds a callback to be executed with a list of command-line arguments when a resource is started.", - "returns": "The resource builder.", + "name": "withArgumentsConfig", + "capabilityId": "Aspire.Hosting/withArgumentsConfig", + "qualifiedName": "withArgumentsConfig", + "description": "Adds a command line arguments configuration gatherer to the builder.", + "returns": "The builder with the configuration gatherer added.", "kind": "Method", - "signature": "withArgsCallback(callback: (obj: CommandLineArgsCallbackContext) => Promise): IResourceWithArgs", - "parameters": [ - { - "name": "callback", - "type": "callback", - "isCallback": true, - "callbackSignature": "(obj: CommandLineArgsCallbackContext) => Promise", - "description": "A callback that allows for deferred execution for computing arguments. This runs after resources have been allocated by the orchestrator and allows access to other resources to resolve computed data, e.g. connection strings, ports." - } - ], - "returnType": "IResourceWithArgs", - "returnsBuilder": true, - "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.IResourceWithArgs", + "signature": "withArgumentsConfig(): IExecutionConfigurationBuilder", + "parameters": [], + "returnType": "IExecutionConfigurationBuilder", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.IExecutionConfigurationBuilder", "expandedTargetTypes": [ - "Aspire.Hosting.ApplicationModel.ContainerResource", - "Aspire.Hosting.ApplicationModel.ExecutableResource", - "Aspire.Hosting.ApplicationModel.ProjectResource", - "Aspire.Hosting.ApplicationModel.DotnetToolResource", - "Aspire.Hosting.ApplicationModel.CSharpAppResource" + "Aspire.Hosting.ApplicationModel.IExecutionConfigurationBuilder" ] - } - ] - }, - { - "name": "IResourceWithConnectionString", - "fullName": "Aspire.Hosting.ApplicationModel.IResourceWithConnectionString", - "kind": "handle", - "isInterface": true, - "description": "Represents a resource that has a connection string associated with it.", - "implementedInterfaces": [], - "baseTypeHierarchy": [], - "capabilities": [ + }, { - "name": "getConnectionProperty", - "capabilityId": "Aspire.Hosting/getConnectionProperty", - "qualifiedName": "getConnectionProperty", - "description": "Retrieves the value of a specified connection property from the resource's connection properties.", - "remarks": "Throws a KeyNotFoundException if the specified key does not exist in the resource's\nconnection properties.", - "returns": "The value associated with the specified connection property key.", + "name": "withCertificateTrustConfig", + "capabilityId": "Aspire.Hosting/withCertificateTrustConfig", + "qualifiedName": "withCertificateTrustConfig", + "description": "Adds a certificate trust configuration gatherer to the builder.", + "returns": "The builder with the configuration gatherer added.", "kind": "Method", - "signature": "getConnectionProperty(key: string): ReferenceExpression", + "signature": "withCertificateTrustConfig(configContextFactory: (arg: CertificateTrustScope) => Promise): IExecutionConfigurationBuilder", "parameters": [ { - "name": "key", - "type": "string", - "description": "The key of the connection property to retrieve. Cannot be null." + "name": "configContextFactory", + "type": "callback", + "isCallback": true, + "callbackSignature": "(arg: CertificateTrustScope) => Promise", + "description": "A factory function to create the configuration context." } ], - "returnType": "ReferenceExpression", - "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.IResourceWithConnectionString", + "returnType": "IExecutionConfigurationBuilder", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.IExecutionConfigurationBuilder", "expandedTargetTypes": [ - "Aspire.Hosting.ApplicationModel.IResourceWithConnectionString" + "Aspire.Hosting.ApplicationModel.IExecutionConfigurationBuilder" ] }, { - "name": "onConnectionStringAvailable", - "capabilityId": "Aspire.Hosting/onConnectionStringAvailable", - "qualifiedName": "onConnectionStringAvailable", - "description": "Subscribes to the ConnectionStringAvailable event.", - "returns": "The resource builder.", + "name": "withEnvironmentVariablesConfig", + "capabilityId": "Aspire.Hosting/withEnvironmentVariablesConfig", + "qualifiedName": "withEnvironmentVariablesConfig", + "description": "Adds an environment variables configuration gatherer to the builder.", + "returns": "The builder with the configuration gatherer added.", "kind": "Method", - "signature": "onConnectionStringAvailable(callback: (arg: ConnectionStringAvailableEvent) => Promise): IResourceWithConnectionString", - "parameters": [ - { - "name": "callback", - "type": "callback", - "isCallback": true, - "callbackSignature": "(arg: ConnectionStringAvailableEvent) => Promise", - "description": "The callback to invoke when the event fires." - } - ], - "returnType": "IResourceWithConnectionString", - "returnsBuilder": true, - "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.IResourceWithConnectionString", + "signature": "withEnvironmentVariablesConfig(): IExecutionConfigurationBuilder", + "parameters": [], + "returnType": "IExecutionConfigurationBuilder", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.IExecutionConfigurationBuilder", "expandedTargetTypes": [ - "Aspire.Hosting.ApplicationModel.IResourceWithConnectionString" + "Aspire.Hosting.ApplicationModel.IExecutionConfigurationBuilder" ] }, { - "name": "withConnectionProperty", - "capabilityId": "Aspire.Hosting/withConnectionProperty", - "qualifiedName": "withConnectionProperty", - "description": "Adds a connection property annotation to the resource being built.", - "returns": "The same resource builder instance with the specified connection property annotation applied.", + "name": "withHttpsCertificateConfig", + "capabilityId": "Aspire.Hosting/withHttpsCertificateConfigExport", + "qualifiedName": "withHttpsCertificateConfig", + "description": "Adds an HTTPS certificate configuration gatherer using certificate metadata instead of a raw X509 certificate.", + "returns": "The execution configuration builder.", "kind": "Method", - "signature": "withConnectionProperty(name: string, value: ReferenceExpression): IResourceWithConnectionString", + "signature": "withHttpsCertificateConfig(configContextFactory: (arg: HttpsCertificateInfo) => Promise): IExecutionConfigurationBuilder", "parameters": [ { - "name": "name", - "type": "string", - "description": "The name of the connection property to add." - }, - { - "name": "value", - "type": "ReferenceExpression", - "description": "The value to assign to the connection property, specified as a string or reference expression." + "name": "configContextFactory", + "type": "callback", + "isCallback": true, + "callbackSignature": "(arg: HttpsCertificateInfo) => Promise", + "description": "The factory that creates the HTTPS certificate configuration context." } ], - "returnType": "IResourceWithConnectionString", - "returnsBuilder": true, - "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.IResourceWithConnectionString", + "returnType": "IExecutionConfigurationBuilder", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.IExecutionConfigurationBuilder", "expandedTargetTypes": [ - "Aspire.Hosting.ApplicationModel.IResourceWithConnectionString" + "Aspire.Hosting.ApplicationModel.IExecutionConfigurationBuilder" ] } ] }, { - "name": "IResourceWithEndpoints", - "fullName": "Aspire.Hosting.ApplicationModel.IResourceWithEndpoints", + "name": "IExecutionConfigurationResult", + "fullName": "Aspire.Hosting.ApplicationModel.IExecutionConfigurationResult", "kind": "handle", "isInterface": true, - "description": "Represents a resource that has endpoints associated with it.", + "description": "Configuration (arguments and environment variables) to apply to a specific resource.", "implementedInterfaces": [], "baseTypeHierarchy": [], "capabilities": [ { - "name": "asHttp2Service", - "capabilityId": "Aspire.Hosting/asHttp2Service", - "qualifiedName": "asHttp2Service", - "description": "Configures a resource to mark all endpoints' transport as HTTP/2. This is useful for HTTP/2 services that need prior knowledge.", - "returns": "The resource builder.", + "name": "getCertificateTrustData", + "capabilityId": "Aspire.Hosting/getCertificateTrustData", + "qualifiedName": "getCertificateTrustData", + "description": "Gets certificate trust execution-configuration data when present.", + "returns": "The certificate trust data. When no additional data is present, an empty DTO is returned.", "kind": "Method", - "signature": "asHttp2Service(): IResourceWithEndpoints", + "signature": "getCertificateTrustData(): CertificateTrustExecutionConfigurationExportData", "parameters": [], - "returnType": "IResourceWithEndpoints", - "returnsBuilder": true, - "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.IResourceWithEndpoints", + "returnType": "CertificateTrustExecutionConfigurationExportData", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.IExecutionConfigurationResult", "expandedTargetTypes": [ - "Aspire.Hosting.ApplicationModel.ContainerResource", - "Aspire.Hosting.ApplicationModel.ExecutableResource", - "Aspire.Hosting.ApplicationModel.ProjectResource", - "Aspire.Hosting.ApplicationModel.DotnetToolResource", - "Aspire.Hosting.ApplicationModel.CSharpAppResource" + "Aspire.Hosting.ApplicationModel.IExecutionConfigurationResult" ] }, { - "name": "getEndpoint", - "capabilityId": "Aspire.Hosting/getEndpoint", - "qualifiedName": "getEndpoint", - "description": "Gets an endpoint reference", - "returns": "An `EndpointReference` that can be used to resolve the address of the endpoint after resource allocation has occurred.", + "name": "getHttpsCertificateData", + "capabilityId": "Aspire.Hosting/getHttpsCertificateData", + "qualifiedName": "getHttpsCertificateData", + "description": "Gets HTTPS certificate execution-configuration data when present.", + "returns": "The HTTPS certificate data. When no additional data is present, an empty DTO is returned.", "kind": "Method", - "signature": "getEndpoint(name: string): EndpointReference", - "parameters": [ - { - "name": "name", - "type": "string", - "description": "The name of the endpoint." - } - ], - "returnType": "EndpointReference", - "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.IResourceWithEndpoints", + "signature": "getHttpsCertificateData(): HttpsCertificateExecutionConfigurationExportData", + "parameters": [], + "returnType": "HttpsCertificateExecutionConfigurationExportData", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.IExecutionConfigurationResult", + "expandedTargetTypes": [ + "Aspire.Hosting.ApplicationModel.IExecutionConfigurationResult" + ] + } + ] + }, + { + "name": "IExpressionValue", + "fullName": "Aspire.Hosting.ApplicationModel.IExpressionValue", + "kind": "handle", + "isInterface": true, + "description": "Represents a value that provides both a runtime value and a manifest expression.", + "remarks": "Expression values can be used anywhere both a runtime value and a publish-time\nmanifest expression are needed.", + "implementedInterfaces": [], + "baseTypeHierarchy": [], + "capabilities": [] + }, + { + "name": "InitializeResourceEvent", + "fullName": "Aspire.Hosting.ApplicationModel.InitializeResourceEvent", + "kind": "handle", + "exposeProperties": true, + "description": "This event is raised by orchestrators to signal to resources that they should initialize themselves.", + "remarks": "Custom resources can subscribe to this event to perform initialization tasks, including starting background tasks\nthat manage the resource's lifecycle.", + "implementedInterfaces": [ + "Aspire.Hosting.Eventing.IDistributedApplicationEvent", + "Aspire.Hosting.Eventing.IDistributedApplicationResourceEvent" + ], + "baseTypeHierarchy": [], + "capabilities": [ + { + "name": "eventing", + "capabilityId": "Aspire.Hosting.ApplicationModel/InitializeResourceEvent.eventing", + "qualifiedName": "InitializeResourceEvent.eventing", + "description": "The `IDistributedApplicationEventing` service for the AppHost.", + "kind": "PropertyGetter", + "signature": "eventing(): IDistributedApplicationEventing", + "parameters": [], + "returnType": "IDistributedApplicationEventing", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.InitializeResourceEvent", + "expandedTargetTypes": [ + "Aspire.Hosting.ApplicationModel.InitializeResourceEvent" + ] + }, + { + "name": "logger", + "capabilityId": "Aspire.Hosting.ApplicationModel/InitializeResourceEvent.logger", + "qualifiedName": "InitializeResourceEvent.logger", + "description": "An instance of `ILogger` that can be used to log messages for the resource.", + "kind": "PropertyGetter", + "signature": "logger(): ILogger", + "parameters": [], + "returnType": "ILogger", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.InitializeResourceEvent", + "expandedTargetTypes": [ + "Aspire.Hosting.ApplicationModel.InitializeResourceEvent" + ] + }, + { + "name": "notifications", + "capabilityId": "Aspire.Hosting.ApplicationModel/InitializeResourceEvent.notifications", + "qualifiedName": "InitializeResourceEvent.notifications", + "description": "The `ResourceNotificationService` for the AppHost.", + "kind": "PropertyGetter", + "signature": "notifications(): ResourceNotificationService", + "parameters": [], + "returnType": "ResourceNotificationService", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.InitializeResourceEvent", + "expandedTargetTypes": [ + "Aspire.Hosting.ApplicationModel.InitializeResourceEvent" + ] + }, + { + "name": "resource", + "capabilityId": "Aspire.Hosting.ApplicationModel/InitializeResourceEvent.resource", + "qualifiedName": "InitializeResourceEvent.resource", + "description": "Gets the Resource property", + "kind": "PropertyGetter", + "signature": "resource(): IResource", + "parameters": [], + "returnType": "IResource", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.InitializeResourceEvent", + "expandedTargetTypes": [ + "Aspire.Hosting.ApplicationModel.InitializeResourceEvent" + ] + }, + { + "name": "services", + "capabilityId": "Aspire.Hosting.ApplicationModel/InitializeResourceEvent.services", + "qualifiedName": "InitializeResourceEvent.services", + "description": "The `IServiceProvider` for the AppHost.", + "kind": "PropertyGetter", + "signature": "services(): IServiceProvider", + "parameters": [], + "returnType": "IServiceProvider", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.InitializeResourceEvent", + "expandedTargetTypes": [ + "Aspire.Hosting.ApplicationModel.InitializeResourceEvent" + ] + } + ] + }, + { + "name": "IResource", + "fullName": "Aspire.Hosting.ApplicationModel.IResource", + "kind": "handle", + "isInterface": true, + "description": "Represents a resource that can be hosted by an application.", + "implementedInterfaces": [], + "baseTypeHierarchy": [], + "capabilities": [ + { + "name": "createExecutionConfiguration", + "capabilityId": "Aspire.Hosting/createExecutionConfiguration", + "qualifiedName": "createExecutionConfiguration", + "description": "Creates an execution configuration builder for the specified resource.", + "returns": "The execution configuration builder.", + "kind": "Method", + "signature": "createExecutionConfiguration(): IExecutionConfigurationBuilder", + "parameters": [], + "returnType": "IExecutionConfigurationBuilder", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.IResource", "expandedTargetTypes": [ "Aspire.Hosting.ApplicationModel.ContainerResource", "Aspire.Hosting.ApplicationModel.ExecutableResource", "Aspire.Hosting.ApplicationModel.ProjectResource", + "Aspire.Hosting.ApplicationModel.ParameterResource", + "Aspire.Hosting.ApplicationModel.ContainerRegistryResource", "Aspire.Hosting.ApplicationModel.DotnetToolResource", + "Aspire.Hosting.ExternalServiceResource", "Aspire.Hosting.ApplicationModel.CSharpAppResource" ] }, { - "name": "onResourceEndpointsAllocated", - "capabilityId": "Aspire.Hosting/onResourceEndpointsAllocated", - "qualifiedName": "onResourceEndpointsAllocated", - "description": "Subscribes to the ResourceEndpointsAllocated event.", + "name": "excludeFromManifest", + "capabilityId": "Aspire.Hosting/excludeFromManifest", + "qualifiedName": "excludeFromManifest", + "description": "Excludes a resource from being published to the manifest.", "returns": "The resource builder.", "kind": "Method", - "signature": "onResourceEndpointsAllocated(callback: (arg: ResourceEndpointsAllocatedEvent) => Promise): IResourceWithEndpoints", - "parameters": [ - { - "name": "callback", - "type": "callback", - "isCallback": true, - "callbackSignature": "(arg: ResourceEndpointsAllocatedEvent) => Promise", - "description": "The callback to invoke when the event fires." - } - ], - "returnType": "IResourceWithEndpoints", + "signature": "excludeFromManifest(): IResource", + "parameters": [], + "returnType": "IResource", "returnsBuilder": true, - "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.IResourceWithEndpoints", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.IResource", "expandedTargetTypes": [ "Aspire.Hosting.ApplicationModel.ContainerResource", "Aspire.Hosting.ApplicationModel.ExecutableResource", "Aspire.Hosting.ApplicationModel.ProjectResource", + "Aspire.Hosting.ApplicationModel.ParameterResource", + "Aspire.Hosting.ApplicationModel.ContainerRegistryResource", "Aspire.Hosting.ApplicationModel.DotnetToolResource", + "Aspire.Hosting.ExternalServiceResource", "Aspire.Hosting.ApplicationModel.CSharpAppResource" ] }, { - "name": "withEndpoint", - "capabilityId": "Aspire.Hosting/withEndpoint", - "qualifiedName": "withEndpoint", - "description": "Adds a network endpoint", + "name": "excludeFromMcp", + "capabilityId": "Aspire.Hosting/excludeFromMcp", + "qualifiedName": "excludeFromMcp", + "description": "Exclude the resource from MCP operations using the Aspire MCP server. The resource is excluded from results that return resources, console logs and telemetry.", "returns": "The resource builder.", "kind": "Method", - "signature": "withEndpoint(port?: number, targetPort?: number, scheme?: string, name?: string, env?: string, isProxied?: boolean, isExternal?: boolean, protocol?: ProtocolType): IResourceWithEndpoints", - "parameters": [ - { - "name": "port", - "type": "number", - "isOptional": true, - "isNullable": true, - "description": "An optional port. This is the port that will be given to other resource to communicate with this resource." - }, - { - "name": "targetPort", - "type": "number", - "isOptional": true, - "isNullable": true, - "description": "This is the port the resource is listening on. If the endpoint is used for the container, it is the container port." - }, - { - "name": "scheme", - "type": "string", - "isOptional": true, - "description": "An optional scheme e.g. (http/https). Defaults to the `protocol` argument if it is defined or \"tcp\" otherwise." - }, - { - "name": "name", - "type": "string", - "isOptional": true, - "description": "An optional name of the endpoint. Defaults to the scheme name if not specified." - }, - { - "name": "env", - "type": "string", - "isOptional": true, - "description": "An optional name of the environment variable that will be used to inject the `targetPort`. If the target port is null one will be dynamically generated and assigned to the environment variable." - }, - { - "name": "isProxied", - "type": "boolean", - "isOptional": true, - "isNullable": true, - "description": "Specifies if the endpoint will be proxied by DCP. Defaults to `null`." - }, - { - "name": "isExternal", - "type": "boolean", - "isOptional": true, - "isNullable": true, - "description": "Indicates that this endpoint should be exposed externally at publish time." - }, - { - "name": "protocol", - "type": "ProtocolType", - "isOptional": true, - "isNullable": true, - "description": "Network protocol: TCP or UDP are supported today, others possibly in future." - } - ], - "returnType": "IResourceWithEndpoints", + "signature": "excludeFromMcp(): IResource", + "parameters": [], + "returnType": "IResource", "returnsBuilder": true, - "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.IResourceWithEndpoints", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.IResource", "expandedTargetTypes": [ "Aspire.Hosting.ApplicationModel.ContainerResource", "Aspire.Hosting.ApplicationModel.ExecutableResource", "Aspire.Hosting.ApplicationModel.ProjectResource", + "Aspire.Hosting.ApplicationModel.ParameterResource", + "Aspire.Hosting.ApplicationModel.ContainerRegistryResource", "Aspire.Hosting.ApplicationModel.DotnetToolResource", + "Aspire.Hosting.ExternalServiceResource", "Aspire.Hosting.ApplicationModel.CSharpAppResource" ] }, { - "name": "withEndpointCallback", - "capabilityId": "Aspire.Hosting/withEndpointCallback", - "qualifiedName": "withEndpointCallback", - "description": "Updates a named endpoint via callback", + "name": "getResourceName", + "capabilityId": "Aspire.Hosting/getResourceName", + "qualifiedName": "getResourceName", + "description": "Gets the name of the resource from a builder.", + "remarks": "Why this wrapper exists: This capability accesses a nested property\n(`resource.Resource.Name`) which requires a wrapper method. There is no single\n.NET method that returns just the resource name that could be annotated directly.", + "returns": "The resource name.", "kind": "Method", - "signature": "withEndpointCallback(endpointName: string, callback: (obj: EndpointUpdateContext) => Promise, createIfNotExists?: boolean): IResourceWithEndpoints", - "parameters": [ - { - "name": "endpointName", - "type": "string" - }, - { - "name": "callback", - "type": "callback", - "isCallback": true, - "callbackSignature": "(obj: EndpointUpdateContext) => Promise" - }, - { - "name": "createIfNotExists", - "type": "boolean", - "isOptional": true, - "defaultValue": "True" - } - ], - "returnType": "IResourceWithEndpoints", - "returnsBuilder": true, - "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.IResourceWithEndpoints", + "signature": "getResourceName(): string", + "parameters": [], + "returnType": "string", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.IResource", "expandedTargetTypes": [ "Aspire.Hosting.ApplicationModel.ContainerResource", "Aspire.Hosting.ApplicationModel.ExecutableResource", "Aspire.Hosting.ApplicationModel.ProjectResource", + "Aspire.Hosting.ApplicationModel.ParameterResource", + "Aspire.Hosting.ApplicationModel.ContainerRegistryResource", "Aspire.Hosting.ApplicationModel.DotnetToolResource", + "Aspire.Hosting.ExternalServiceResource", "Aspire.Hosting.ApplicationModel.CSharpAppResource" ] }, { - "name": "withEndpointProxySupport", - "capabilityId": "Aspire.Hosting/withEndpointProxySupport", - "qualifiedName": "withEndpointProxySupport", - "description": "Set whether a resource can use proxied endpoints or whether they should be disabled for all endpoints belonging to the resource. If set to `false`, endpoints belonging to the resource will ignore the configured proxy settings and run proxy-less.", - "remarks": "This method is intended to support scenarios with persistent lifetime resources where it is desirable for the resource to be accessible over the same\nport whether the Aspire application is running or not. Proxied endpoints bind ports that are only accessible while the Aspire application is running.\nThe user needs to be careful to ensure that endpoints are using unique ports when disabling proxy support as by default for proxy-less\nendpoints, Aspire will allocate the target port as the host port, which will increase the chance of port conflicts.", + "name": "onBeforeResourceStarted", + "capabilityId": "Aspire.Hosting/onBeforeResourceStarted", + "qualifiedName": "onBeforeResourceStarted", + "description": "Subscribes to the BeforeResourceStarted event.", "returns": "The resource builder.", "kind": "Method", - "signature": "withEndpointProxySupport(proxyEnabled: boolean): IResourceWithEndpoints", + "signature": "onBeforeResourceStarted(callback: (arg: BeforeResourceStartedEvent) => Promise): IResource", "parameters": [ { - "name": "proxyEnabled", - "type": "boolean", - "description": "Should endpoints for the resource support using a proxy?" + "name": "callback", + "type": "callback", + "isCallback": true, + "callbackSignature": "(arg: BeforeResourceStartedEvent) => Promise", + "description": "The callback to invoke when the event fires." } ], - "returnType": "IResourceWithEndpoints", + "returnType": "IResource", "returnsBuilder": true, - "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.IResourceWithEndpoints", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.IResource", "expandedTargetTypes": [ "Aspire.Hosting.ApplicationModel.ContainerResource", "Aspire.Hosting.ApplicationModel.ExecutableResource", "Aspire.Hosting.ApplicationModel.ProjectResource", + "Aspire.Hosting.ApplicationModel.ParameterResource", + "Aspire.Hosting.ApplicationModel.ContainerRegistryResource", "Aspire.Hosting.ApplicationModel.DotnetToolResource", + "Aspire.Hosting.ExternalServiceResource", "Aspire.Hosting.ApplicationModel.CSharpAppResource" ] }, { - "name": "withExternalHttpEndpoints", - "capabilityId": "Aspire.Hosting/withExternalHttpEndpoints", - "qualifiedName": "withExternalHttpEndpoints", - "description": "Marks existing http or https endpoints on a resource as external.", + "name": "onInitializeResource", + "capabilityId": "Aspire.Hosting/onInitializeResource", + "qualifiedName": "onInitializeResource", + "description": "Subscribes to the InitializeResource event.", "returns": "The resource builder.", "kind": "Method", - "signature": "withExternalHttpEndpoints(): IResourceWithEndpoints", - "parameters": [], - "returnType": "IResourceWithEndpoints", + "signature": "onInitializeResource(callback: (arg: InitializeResourceEvent) => Promise): IResource", + "parameters": [ + { + "name": "callback", + "type": "callback", + "isCallback": true, + "callbackSignature": "(arg: InitializeResourceEvent) => Promise", + "description": "The callback to invoke when the event fires." + } + ], + "returnType": "IResource", "returnsBuilder": true, - "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.IResourceWithEndpoints", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.IResource", "expandedTargetTypes": [ "Aspire.Hosting.ApplicationModel.ContainerResource", "Aspire.Hosting.ApplicationModel.ExecutableResource", "Aspire.Hosting.ApplicationModel.ProjectResource", + "Aspire.Hosting.ApplicationModel.ParameterResource", + "Aspire.Hosting.ApplicationModel.ContainerRegistryResource", "Aspire.Hosting.ApplicationModel.DotnetToolResource", + "Aspire.Hosting.ExternalServiceResource", "Aspire.Hosting.ApplicationModel.CSharpAppResource" ] }, { - "name": "withHttpCommand", - "capabilityId": "Aspire.Hosting/withHttpCommand", - "qualifiedName": "withHttpCommand", - "description": "Adds an HTTP resource command", + "name": "onResourceReady", + "capabilityId": "Aspire.Hosting/onResourceReady", + "qualifiedName": "onResourceReady", + "description": "Subscribes to the ResourceReady event.", + "returns": "The resource builder.", "kind": "Method", - "signature": "withHttpCommand(path: string, displayName: string, options?: HttpCommandExportOptions): IResourceWithEndpoints", + "signature": "onResourceReady(callback: (arg: ResourceReadyEvent) => Promise): IResource", "parameters": [ { - "name": "path", - "type": "string" - }, - { - "name": "displayName", - "type": "string" - }, - { - "name": "options", - "type": "HttpCommandExportOptions", - "isOptional": true + "name": "callback", + "type": "callback", + "isCallback": true, + "callbackSignature": "(arg: ResourceReadyEvent) => Promise", + "description": "The callback to invoke when the event fires." } ], - "returnType": "IResourceWithEndpoints", + "returnType": "IResource", "returnsBuilder": true, - "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.IResourceWithEndpoints", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.IResource", "expandedTargetTypes": [ "Aspire.Hosting.ApplicationModel.ContainerResource", "Aspire.Hosting.ApplicationModel.ExecutableResource", "Aspire.Hosting.ApplicationModel.ProjectResource", + "Aspire.Hosting.ApplicationModel.ParameterResource", + "Aspire.Hosting.ApplicationModel.ContainerRegistryResource", "Aspire.Hosting.ApplicationModel.DotnetToolResource", + "Aspire.Hosting.ExternalServiceResource", "Aspire.Hosting.ApplicationModel.CSharpAppResource" ] }, { - "name": "withHttpEndpoint", - "capabilityId": "Aspire.Hosting/withHttpEndpoint", - "qualifiedName": "withHttpEndpoint", - "description": "Adds an HTTP endpoint", - "remarks": "If an endpoint with the same name already exists on the resource, the existing endpoint is updated\nwith any non-null parameter values. Parameters left as `null` will not modify the existing endpoint's values.", + "name": "onResourceStopped", + "capabilityId": "Aspire.Hosting/onResourceStopped", + "qualifiedName": "onResourceStopped", + "description": "Subscribes to the ResourceStopped event.", "returns": "The resource builder.", "kind": "Method", - "signature": "withHttpEndpoint(port?: number, targetPort?: number, name?: string, env?: string, isProxied?: boolean): IResourceWithEndpoints", + "signature": "onResourceStopped(callback: (arg: ResourceStoppedEvent) => Promise): IResource", "parameters": [ { - "name": "port", - "type": "number", - "isOptional": true, - "isNullable": true, - "description": "An optional port. This is the port that will be given to other resource to communicate with this resource." - }, - { - "name": "targetPort", - "type": "number", - "isOptional": true, - "isNullable": true, - "description": "This is the port the resource is listening on. If the endpoint is used for the container, it is the container port." - }, - { - "name": "name", - "type": "string", - "isOptional": true, - "description": "An optional name of the endpoint. Defaults to \"http\" if not specified." - }, - { - "name": "env", - "type": "string", - "isOptional": true, - "description": "An optional name of the environment variable to inject." - }, - { - "name": "isProxied", - "type": "boolean", - "isOptional": true, - "isNullable": true, - "description": "Specifies if the endpoint will be proxied by DCP. Defaults to `null`." + "name": "callback", + "type": "callback", + "isCallback": true, + "callbackSignature": "(arg: ResourceStoppedEvent) => Promise", + "description": "The callback to invoke when the event fires." } ], - "returnType": "IResourceWithEndpoints", + "returnType": "IResource", "returnsBuilder": true, - "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.IResourceWithEndpoints", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.IResource", "expandedTargetTypes": [ "Aspire.Hosting.ApplicationModel.ContainerResource", "Aspire.Hosting.ApplicationModel.ExecutableResource", "Aspire.Hosting.ApplicationModel.ProjectResource", + "Aspire.Hosting.ApplicationModel.ParameterResource", + "Aspire.Hosting.ApplicationModel.ContainerRegistryResource", "Aspire.Hosting.ApplicationModel.DotnetToolResource", + "Aspire.Hosting.ExternalServiceResource", "Aspire.Hosting.ApplicationModel.CSharpAppResource" ] }, { - "name": "withHttpEndpointCallback", - "capabilityId": "Aspire.Hosting/withHttpEndpointCallback", - "qualifiedName": "withHttpEndpointCallback", - "description": "Updates an HTTP endpoint via callback", + "name": "subscribeHttpsEndpointsUpdate", + "capabilityId": "Aspire.Hosting/subscribeHttpsEndpointsUpdate", + "qualifiedName": "subscribeHttpsEndpointsUpdate", + "description": "Subscribes to the `BeforeStartEvent` and invokes the specified callback when an HTTPS certificate is determined to be available for the resource. This is used to conditionally update endpoint URI schemes or perform other HTTPS-related configuration at startup.", + "remarks": "The callback is invoked when either:\n-\n-\nSwitch an endpoint to HTTPS when a certificate is available:\n```\nbuilder.SubscribeHttpsEndpointsUpdate(ctx =>\n{\nbuilder.WithEndpoint(\"http\", ep => ep.UriScheme = \"https\");\n});\n```", + "returns": "The updated resource builder.", "kind": "Method", - "signature": "withHttpEndpointCallback(callback: (obj: EndpointUpdateContext) => Promise, name?: string, createIfNotExists?: boolean): IResourceWithEndpoints", + "signature": "subscribeHttpsEndpointsUpdate(callback: (obj: HttpsEndpointUpdateCallbackContext) => Promise): IResource", "parameters": [ { "name": "callback", "type": "callback", "isCallback": true, - "callbackSignature": "(obj: EndpointUpdateContext) => Promise" - }, - { - "name": "name", - "type": "string", - "isOptional": true - }, - { - "name": "createIfNotExists", - "type": "boolean", - "isOptional": true, - "defaultValue": "True" + "callbackSignature": "(obj: HttpsEndpointUpdateCallbackContext) => Promise", + "description": "The callback to invoke when HTTPS is enabled. Receives an `HttpsEndpointUpdateCallbackContext` providing access to the service provider, resource, and application model." } ], - "returnType": "IResourceWithEndpoints", + "returnType": "IResource", "returnsBuilder": true, - "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.IResourceWithEndpoints", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.IResource", "expandedTargetTypes": [ "Aspire.Hosting.ApplicationModel.ContainerResource", "Aspire.Hosting.ApplicationModel.ExecutableResource", "Aspire.Hosting.ApplicationModel.ProjectResource", + "Aspire.Hosting.ApplicationModel.ParameterResource", + "Aspire.Hosting.ApplicationModel.ContainerRegistryResource", "Aspire.Hosting.ApplicationModel.DotnetToolResource", + "Aspire.Hosting.ExternalServiceResource", "Aspire.Hosting.ApplicationModel.CSharpAppResource" ] }, { - "name": "withHttpHealthCheck", - "capabilityId": "Aspire.Hosting/withHttpHealthCheck", - "qualifiedName": "withHttpHealthCheck", - "description": "Adds a health check to the resource which is mapped to a specific endpoint.", - "returns": "The resource builder.", + "name": "withChildRelationship", + "capabilityId": "Aspire.Hosting/withBuilderChildRelationship", + "qualifiedName": "withChildRelationship", + "description": "Sets a child relationship", + "returns": "A resource builder.", "kind": "Method", - "signature": "withHttpHealthCheck(path?: string, statusCode?: number, endpointName?: string): IResourceWithEndpoints", + "signature": "withChildRelationship(child: IResource): IResource", "parameters": [ { - "name": "path", - "type": "string", - "isOptional": true, - "description": "The relative path to test." - }, - { - "name": "statusCode", - "type": "number", - "isOptional": true, - "isNullable": true, - "description": "The result code to interpret as healthy." - }, - { - "name": "endpointName", - "type": "string", - "isOptional": true, - "description": "The name of the endpoint to derive the base address from." + "name": "child", + "type": "IResource", + "description": "The child of `builder`." } ], - "returnType": "IResourceWithEndpoints", + "returnType": "IResource", "returnsBuilder": true, - "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.IResourceWithEndpoints", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.IResource", "expandedTargetTypes": [ "Aspire.Hosting.ApplicationModel.ContainerResource", "Aspire.Hosting.ApplicationModel.ExecutableResource", "Aspire.Hosting.ApplicationModel.ProjectResource", + "Aspire.Hosting.ApplicationModel.ParameterResource", + "Aspire.Hosting.ApplicationModel.ContainerRegistryResource", "Aspire.Hosting.ApplicationModel.DotnetToolResource", + "Aspire.Hosting.ExternalServiceResource", "Aspire.Hosting.ApplicationModel.CSharpAppResource" ] }, { - "name": "withHttpProbe", - "capabilityId": "Aspire.Hosting/withHttpProbe", - "qualifiedName": "withHttpProbe", - "description": "Adds an HTTP health probe to the resource", + "name": "withCommand", + "capabilityId": "Aspire.Hosting/withCommand", + "qualifiedName": "withCommand", + "description": "Adds a resource command", + "remarks": "The `WithCommand` method is used to add commands to the resource. Commands are displayed in the dashboard\nand can be executed by a user using the dashboard UI.\nWhen a command is executed, the `executeCommand` callback is called and is run inside the Aspire host.", + "returns": "The resource builder.", "kind": "Method", - "signature": "withHttpProbe(probeType: ProbeType, path?: string, initialDelaySeconds?: number, periodSeconds?: number, timeoutSeconds?: number, failureThreshold?: number, successThreshold?: number, endpointName?: string): IResourceWithEndpoints", + "signature": "withCommand(name: string, displayName: string, executeCommand: (arg: ExecuteCommandContext) => Promise, commandOptions?: CommandOptions): IResource", "parameters": [ { - "name": "probeType", - "type": "ProbeType" + "name": "name", + "type": "string", + "description": "The name of the command. The name uniquely identifies the command." }, { - "name": "path", + "name": "displayName", "type": "string", - "isOptional": true + "description": "The display name visible in UI." }, { - "name": "initialDelaySeconds", - "type": "number", - "isOptional": true, - "isNullable": true - }, - { - "name": "periodSeconds", - "type": "number", - "isOptional": true, - "isNullable": true - }, - { - "name": "timeoutSeconds", - "type": "number", - "isOptional": true, - "isNullable": true - }, - { - "name": "failureThreshold", - "type": "number", - "isOptional": true, - "isNullable": true + "name": "executeCommand", + "type": "callback", + "isCallback": true, + "callbackSignature": "(arg: ExecuteCommandContext) => Promise", + "description": "A callback that is executed when the command is executed. The callback is run inside the Aspire host. The callback result is used to indicate success or failure in the UI." }, { - "name": "successThreshold", - "type": "number", + "name": "commandOptions", + "type": "CommandOptions", "isOptional": true, - "isNullable": true - }, - { - "name": "endpointName", - "type": "string", - "isOptional": true + "description": "Optional configuration for the command." } ], - "returnType": "IResourceWithEndpoints", + "returnType": "IResource", "returnsBuilder": true, - "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.IResourceWithEndpoints", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.IResource", "expandedTargetTypes": [ "Aspire.Hosting.ApplicationModel.ContainerResource", "Aspire.Hosting.ApplicationModel.ExecutableResource", "Aspire.Hosting.ApplicationModel.ProjectResource", + "Aspire.Hosting.ApplicationModel.ParameterResource", + "Aspire.Hosting.ApplicationModel.ContainerRegistryResource", "Aspire.Hosting.ApplicationModel.DotnetToolResource", + "Aspire.Hosting.ExternalServiceResource", "Aspire.Hosting.ApplicationModel.CSharpAppResource" ] }, { - "name": "withHttpsEndpoint", - "capabilityId": "Aspire.Hosting/withHttpsEndpoint", - "qualifiedName": "withHttpsEndpoint", - "description": "Adds an HTTPS endpoint", - "remarks": "If an endpoint with the same name already exists on the resource, the existing endpoint is updated\nwith any non-null parameter values. Parameters left as `null` will not modify the existing endpoint's values.", - "returns": "The resource builder.", + "name": "withContainerBuildOptions", + "capabilityId": "Aspire.Hosting/withContainerBuildOptions", + "qualifiedName": "withContainerBuildOptions", + "description": "Configures container build options for a compute resource using an async callback.", + "returns": "A reference to the `IResourceBuilder`1`.", "kind": "Method", - "signature": "withHttpsEndpoint(port?: number, targetPort?: number, name?: string, env?: string, isProxied?: boolean): IResourceWithEndpoints", + "signature": "withContainerBuildOptions(callback: (arg: ContainerBuildOptionsCallbackContext) => Promise): IResource", "parameters": [ { - "name": "port", - "type": "number", - "isOptional": true, - "isNullable": true, - "description": "An optional host port." - }, - { - "name": "targetPort", - "type": "number", - "isOptional": true, - "isNullable": true, - "description": "This is the port the resource is listening on. If the endpoint is used for the container, it is the container port." - }, - { - "name": "name", - "type": "string", - "isOptional": true, - "description": "An optional name of the endpoint. Defaults to \"https\" if not specified." - }, - { - "name": "env", - "type": "string", - "isOptional": true, - "description": "An optional name of the environment variable to inject." - }, - { - "name": "isProxied", - "type": "boolean", - "isOptional": true, - "isNullable": true, - "description": "Specifies if the endpoint will be proxied by DCP. Defaults to `null`." + "name": "callback", + "type": "callback", + "isCallback": true, + "callbackSignature": "(arg: ContainerBuildOptionsCallbackContext) => Promise", + "description": "An async callback to configure container build options." } ], - "returnType": "IResourceWithEndpoints", + "returnType": "IResource", "returnsBuilder": true, - "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.IResourceWithEndpoints", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.IResource", "expandedTargetTypes": [ "Aspire.Hosting.ApplicationModel.ContainerResource", "Aspire.Hosting.ApplicationModel.ExecutableResource", "Aspire.Hosting.ApplicationModel.ProjectResource", + "Aspire.Hosting.ApplicationModel.ParameterResource", + "Aspire.Hosting.ApplicationModel.ContainerRegistryResource", "Aspire.Hosting.ApplicationModel.DotnetToolResource", + "Aspire.Hosting.ExternalServiceResource", "Aspire.Hosting.ApplicationModel.CSharpAppResource" ] }, { - "name": "withHttpsEndpointCallback", - "capabilityId": "Aspire.Hosting/withHttpsEndpointCallback", - "qualifiedName": "withHttpsEndpointCallback", - "description": "Updates an HTTPS endpoint via callback", + "name": "withContainerRegistry", + "capabilityId": "Aspire.Hosting/withContainerRegistry", + "qualifiedName": "withContainerRegistry", + "description": "Configures the resource to use the specified container registry for container image operations.", + "remarks": "This method adds a `ContainerRegistryReferenceAnnotation` to the resource,\nindicating that the resource should use the specified container registry for container image operations.", + "returns": "The resource builder for chaining.", "kind": "Method", - "signature": "withHttpsEndpointCallback(callback: (obj: EndpointUpdateContext) => Promise, name?: string, createIfNotExists?: boolean): IResourceWithEndpoints", + "signature": "withContainerRegistry(registry: IResource): IResource", "parameters": [ { - "name": "callback", - "type": "callback", - "isCallback": true, - "callbackSignature": "(obj: EndpointUpdateContext) => Promise" - }, - { - "name": "name", - "type": "string", - "isOptional": true - }, - { - "name": "createIfNotExists", - "type": "boolean", - "isOptional": true, - "defaultValue": "True" + "name": "registry", + "type": "IResource", + "description": "The container registry resource builder." } ], - "returnType": "IResourceWithEndpoints", + "returnType": "IResource", "returnsBuilder": true, - "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.IResourceWithEndpoints", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.IResource", "expandedTargetTypes": [ "Aspire.Hosting.ApplicationModel.ContainerResource", "Aspire.Hosting.ApplicationModel.ExecutableResource", "Aspire.Hosting.ApplicationModel.ProjectResource", + "Aspire.Hosting.ApplicationModel.ParameterResource", + "Aspire.Hosting.ApplicationModel.ContainerRegistryResource", "Aspire.Hosting.ApplicationModel.DotnetToolResource", + "Aspire.Hosting.ExternalServiceResource", "Aspire.Hosting.ApplicationModel.CSharpAppResource" ] }, { - "name": "withMcpServer", - "capabilityId": "Aspire.Hosting/withMcpServer", - "qualifiedName": "withMcpServer", - "description": "Marks the resource as hosting a Model Context Protocol (MCP) server on the specified endpoint.", - "remarks": "This method adds an `McpServerEndpointAnnotation` to the resource, enabling the Aspire tooling\nto discover and proxy the MCP server exposed by the resource.", + "name": "withDockerfileBaseImage", + "capabilityId": "Aspire.Hosting/withDockerfileBaseImage", + "qualifiedName": "withDockerfileBaseImage", + "description": "Configures custom base images for generated Dockerfiles.", + "remarks": "This extension method allows customization of the base images used in generated Dockerfiles.\nFor multi-stage Dockerfiles (e.g., Python with UV), you can specify separate build and runtime images.\nSpecify custom base images for a Python application:\n```\nvar builder = DistributedApplication.CreateBuilder(args);\nbuilder.AddPythonApp(\"myapp\", \"path/to/app\", \"main.py\")\n.WithDockerfileBaseImage(\nbuildImage: \"ghcr.io/astral-sh/uv:python3.12-bookworm-slim\",\nruntimeImage: \"python:3.12-slim-bookworm\");\nbuilder.Build().Run();\n```", "returns": "The resource builder.", "kind": "Method", - "signature": "withMcpServer(path?: string, endpointName?: string): IResourceWithEndpoints", + "signature": "withDockerfileBaseImage(buildImage?: string, runtimeImage?: string): IResource", "parameters": [ { - "name": "path", + "name": "buildImage", "type": "string", "isOptional": true, - "defaultValue": "/mcp", - "description": "An optional path to append to the endpoint URL when forming the MCP server address. Defaults to `\"/mcp\"`." + "description": "The base image to use for the build stage. If null, uses the default build image." }, { - "name": "endpointName", + "name": "runtimeImage", "type": "string", "isOptional": true, - "description": "An optional name of the endpoint that hosts the MCP server. If not specified, defaults to the first HTTPS or HTTP endpoint." + "description": "The base image to use for the runtime stage. If null, uses the default runtime image." } ], - "returnType": "IResourceWithEndpoints", + "returnType": "IResource", "returnsBuilder": true, - "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.IResourceWithEndpoints", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.IResource", "expandedTargetTypes": [ "Aspire.Hosting.ApplicationModel.ContainerResource", "Aspire.Hosting.ApplicationModel.ExecutableResource", "Aspire.Hosting.ApplicationModel.ProjectResource", + "Aspire.Hosting.ApplicationModel.ParameterResource", + "Aspire.Hosting.ApplicationModel.ContainerRegistryResource", "Aspire.Hosting.ApplicationModel.DotnetToolResource", + "Aspire.Hosting.ExternalServiceResource", "Aspire.Hosting.ApplicationModel.CSharpAppResource" ] - } - ] - }, - { - "name": "IResourceWithEnvironment", - "fullName": "Aspire.Hosting.ApplicationModel.IResourceWithEnvironment", - "kind": "handle", - "isInterface": true, - "description": "Represents a resource that is associated with an environment.", - "implementedInterfaces": [], - "baseTypeHierarchy": [], - "capabilities": [ + }, { - "name": "withCertificateTrustScope", - "capabilityId": "Aspire.Hosting/withCertificateTrustScope", - "qualifiedName": "withCertificateTrustScope", - "description": "Sets the certificate trust scope", - "remarks": "The default scope if not overridden is `Append` which means that custom certificate\nauthorities should be appended to the default trusted certificate authorities for the resource. Setting the scope to\n`Override` indicates the set of certificates in referenced\n`CertificateAuthorityCollection` (and optionally Aspire developer certificiates) should be used as the\nexclusive source of trust for a resource.\nIn all cases, this is a best effort implementation as not all resources support full customization of certificate\ntrust.\nSet the scope for custom certificate authorities to override the default trusted certificate authorities for a container resource.\n```\nvar caCollection = builder.AddCertificateAuthorityCollection(\"my-cas\")\n.WithCertificate(new X509Certificate2(\"my-ca.pem\"));\nvar container = builder.AddContainer(\"my-service\", \"my-service:latest\")\n.WithCertificateAuthorityCollection(caCollection)\n.WithCertificateTrustScope(CertificateTrustScope.Override);\n```", + "name": "withExplicitStart", + "capabilityId": "Aspire.Hosting/withExplicitStart", + "qualifiedName": "withExplicitStart", + "description": "Prevents resource from starting automatically", "returns": "The resource builder.", "kind": "Method", - "signature": "withCertificateTrustScope(scope: CertificateTrustScope): IResourceWithEnvironment", - "parameters": [ - { - "name": "scope", - "type": "CertificateTrustScope", - "description": "The scope to apply to custom certificate authorities associated with the resource." - } - ], - "returnType": "IResourceWithEnvironment", + "signature": "withExplicitStart(): IResource", + "parameters": [], + "returnType": "IResource", "returnsBuilder": true, - "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.IResourceWithEnvironment", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.IResource", "expandedTargetTypes": [ "Aspire.Hosting.ApplicationModel.ContainerResource", "Aspire.Hosting.ApplicationModel.ExecutableResource", "Aspire.Hosting.ApplicationModel.ProjectResource", + "Aspire.Hosting.ApplicationModel.ParameterResource", + "Aspire.Hosting.ApplicationModel.ContainerRegistryResource", "Aspire.Hosting.ApplicationModel.DotnetToolResource", + "Aspire.Hosting.ExternalServiceResource", "Aspire.Hosting.ApplicationModel.CSharpAppResource" ] }, { - "name": "withDeveloperCertificateTrust", - "capabilityId": "Aspire.Hosting/withDeveloperCertificateTrust", - "qualifiedName": "withDeveloperCertificateTrust", - "description": "Indicates whether developer certificates should be treated as trusted certificate authorities for the resource at run time. Currently this indicates trust for the ASP.NET Core developer certificate. The developer certificate will only be trusted when running in local development scenarios; in publish mode resources will use their default certificate trust.", - "remarks": "Disable trust for AppHost managed developer certificate(s) for a container resource.\n```\nvar container = builder.AddContainer(\"my-service\", \"my-service:latest\")\n.WithDeveloperCertificateTrust(false);\n```\nDisable automatic trust for AppHost managed developer certificate(s), but explicitly enable it for a specific resource.\n```\nvar builder = DistributedApplication.CreateBuilder(new DistributedApplicationOptions()\n{\nArgs = args,\nTrustDeveloperCertificate = false,\n});\nvar project = builder.AddProject(\"my-service\")\n.WithDeveloperCertificateTrust(true);\n```", + "name": "withHealthCheck", + "capabilityId": "Aspire.Hosting/withHealthCheck", + "qualifiedName": "withHealthCheck", + "description": "Adds a health check by key", "returns": "The resource builder.", "kind": "Method", - "signature": "withDeveloperCertificateTrust(trust: boolean): IResourceWithEnvironment", + "signature": "withHealthCheck(key: string): IResource", "parameters": [ { - "name": "trust", - "type": "boolean", - "description": "Indicates whether the developer certificate should be treated as trusted." + "name": "key", + "type": "string", + "description": "The key for the health check." } ], - "returnType": "IResourceWithEnvironment", + "returnType": "IResource", "returnsBuilder": true, - "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.IResourceWithEnvironment", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.IResource", "expandedTargetTypes": [ "Aspire.Hosting.ApplicationModel.ContainerResource", "Aspire.Hosting.ApplicationModel.ExecutableResource", "Aspire.Hosting.ApplicationModel.ProjectResource", + "Aspire.Hosting.ApplicationModel.ParameterResource", + "Aspire.Hosting.ApplicationModel.ContainerRegistryResource", "Aspire.Hosting.ApplicationModel.DotnetToolResource", + "Aspire.Hosting.ExternalServiceResource", "Aspire.Hosting.ApplicationModel.CSharpAppResource" ] }, { - "name": "withEnvironment", - "capabilityId": "Aspire.Hosting/withEnvironment", - "qualifiedName": "withEnvironment", - "description": "Sets an environment variable", + "name": "withHidden", + "capabilityId": "Aspire.Hosting/withHidden", + "qualifiedName": "withHidden", + "description": "Hides the resource from default resource lists", + "remarks": "Use this method to hide resources that are implementation details and should never be displayed by default.\nHidden resources can still be accessed directly by their name, by using `Show hidden resources` toggle in the dashboard or by using `aspire describe --include-hidden` from the CLI.", + "returns": "The resource builder.", "kind": "Method", - "signature": "withEnvironment(name: string, value: IExpressionValue): IResourceWithEnvironment", - "parameters": [ - { - "name": "name", - "type": "string" - }, - { - "name": "value", - "type": "IExpressionValue" - } - ], - "returnType": "IResourceWithEnvironment", + "signature": "withHidden(): IResource", + "parameters": [], + "returnType": "IResource", "returnsBuilder": true, - "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.IResourceWithEnvironment", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.IResource", "expandedTargetTypes": [ "Aspire.Hosting.ApplicationModel.ContainerResource", "Aspire.Hosting.ApplicationModel.ExecutableResource", "Aspire.Hosting.ApplicationModel.ProjectResource", + "Aspire.Hosting.ApplicationModel.ParameterResource", + "Aspire.Hosting.ApplicationModel.ContainerRegistryResource", "Aspire.Hosting.ApplicationModel.DotnetToolResource", + "Aspire.Hosting.ExternalServiceResource", "Aspire.Hosting.ApplicationModel.CSharpAppResource" ] }, { - "name": "withEnvironmentCallback", - "capabilityId": "Aspire.Hosting/withEnvironmentCallback", - "qualifiedName": "withEnvironmentCallback", - "description": "Allows for the population of environment variables on a resource.", - "returns": "The resource builder.", - "kind": "Method", - "signature": "withEnvironmentCallback(callback: (arg: EnvironmentCallbackContext) => Promise): IResourceWithEnvironment", + "name": "withHiddenOnCompletion", + "capabilityId": "Aspire.Hosting/withHiddenOnCompletion", + "qualifiedName": "withHiddenOnCompletion", + "description": "Hides the resource from default resource lists after successful completion", + "remarks": "This method is useful for one-off resources such as setup scripts, migrations, or build steps that should remain visible while running\nand then be hidden after successful completion.\nHidden resources can still be accessed directly by their name, by using `Show hidden resources` toggle in the dashboard or by using `aspire describe --include-hidden` from the CLI.", + "returns": "The resource builder.", + "kind": "Method", + "signature": "withHiddenOnCompletion(exitCode?: number, exitCodes?: number[]): IResource", "parameters": [ { - "name": "callback", - "type": "callback", - "isCallback": true, - "callbackSignature": "(arg: EnvironmentCallbackContext) => Promise", - "description": "A callback that allows for deferred execution for computing many environment variables. This runs after resources have been allocated by the orchestrator and allows access to other resources to resolve computed data, e.g. connection strings, ports." + "name": "exitCode", + "type": "number", + "isOptional": true, + "isNullable": true, + "description": "The completion exit code to treat as successful. Defaults to `0`." + }, + { + "name": "exitCodes", + "type": "number[]", + "isOptional": true, + "description": "Completion exit codes to treat as successful. If no values are provided, `0` is used." } ], - "returnType": "IResourceWithEnvironment", + "returnType": "IResource", "returnsBuilder": true, - "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.IResourceWithEnvironment", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.IResource", "expandedTargetTypes": [ "Aspire.Hosting.ApplicationModel.ContainerResource", "Aspire.Hosting.ApplicationModel.ExecutableResource", "Aspire.Hosting.ApplicationModel.ProjectResource", + "Aspire.Hosting.ApplicationModel.ParameterResource", + "Aspire.Hosting.ApplicationModel.ContainerRegistryResource", "Aspire.Hosting.ApplicationModel.DotnetToolResource", + "Aspire.Hosting.ExternalServiceResource", "Aspire.Hosting.ApplicationModel.CSharpAppResource" ] }, { - "name": "withHttpsDeveloperCertificate", - "capabilityId": "Aspire.Hosting/withParameterHttpsDeveloperCertificate", - "qualifiedName": "withHttpsDeveloperCertificate", - "description": "Indicates that a resource should use the developer certificate key pair for HTTPS endpoints at run time. Currently this indicates use of the ASP.NET Core developer certificate. The developer certificate will only be used when running in local development scenarios; in publish mode resources will use their default certificate configuration.", - "remarks": "Use the developer certificate for HTTPS/TLS endpoints on a container resource:\n```\nbuilder.AddContainer(\"my-service\", \"my-image\")\n.WithHttpsDeveloperCertificate()\n```", + "name": "withIconName", + "capabilityId": "Aspire.Hosting/withIconName", + "qualifiedName": "withIconName", + "description": "Specifies the icon to use when displaying the resource in the dashboard.", "returns": "The resource builder.", "kind": "Method", - "signature": "withHttpsDeveloperCertificate(password?: ParameterResource): IResourceWithEnvironment", + "signature": "withIconName(iconName: string, iconVariant?: IconVariant): IResource", "parameters": [ { - "name": "password", - "type": "ParameterResource", + "name": "iconName", + "type": "string", + "description": "The name of the FluentUI icon to use. See https://aka.ms/fluentui-system-icons for available icons." + }, + { + "name": "iconVariant", + "type": "IconVariant", "isOptional": true, - "description": "A parameter specifying the password used to encrypt the certificate private key." + "defaultValue": "Filled", + "description": "The variant of the icon (Regular or Filled). Defaults to Filled." } ], - "returnType": "IResourceWithEnvironment", + "returnType": "IResource", "returnsBuilder": true, - "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.IResourceWithEnvironment", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.IResource", "expandedTargetTypes": [ "Aspire.Hosting.ApplicationModel.ContainerResource", "Aspire.Hosting.ApplicationModel.ExecutableResource", "Aspire.Hosting.ApplicationModel.ProjectResource", + "Aspire.Hosting.ApplicationModel.ParameterResource", + "Aspire.Hosting.ApplicationModel.ContainerRegistryResource", "Aspire.Hosting.ApplicationModel.DotnetToolResource", + "Aspire.Hosting.ExternalServiceResource", "Aspire.Hosting.ApplicationModel.CSharpAppResource" ] }, { - "name": "withOtlpExporter", - "capabilityId": "Aspire.Hosting/withOtlpExporter", - "qualifiedName": "withOtlpExporter", - "description": "Configures OTLP telemetry export", + "name": "withLifetimeOf", + "capabilityId": "Aspire.Hosting/withLifetimeOf", + "qualifiedName": "withLifetimeOf", + "description": "Configures a resource to match the lifetime of another resource.", + "remarks": "The resource lifetime is evaluated from `sourceBuilder` when the application model is prepared, so later lifetime\nchanges to the source resource are reflected by this resource.", + "returns": "The resource builder.", "kind": "Method", - "signature": "withOtlpExporter(protocol?: OtlpProtocol): IResourceWithEnvironment", + "signature": "withLifetimeOf(sourceBuilder: IResource): IResource", "parameters": [ { - "name": "protocol", - "type": "OtlpProtocol", - "isOptional": true, - "isNullable": true + "name": "sourceBuilder", + "type": "IResource", + "description": "The resource builder whose lifetime should be used." } ], - "returnType": "IResourceWithEnvironment", + "returnType": "IResource", "returnsBuilder": true, - "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.IResourceWithEnvironment", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.IResource", "expandedTargetTypes": [ "Aspire.Hosting.ApplicationModel.ContainerResource", "Aspire.Hosting.ApplicationModel.ExecutableResource", "Aspire.Hosting.ApplicationModel.ProjectResource", + "Aspire.Hosting.ApplicationModel.ParameterResource", + "Aspire.Hosting.ApplicationModel.ContainerRegistryResource", "Aspire.Hosting.ApplicationModel.DotnetToolResource", + "Aspire.Hosting.ExternalServiceResource", "Aspire.Hosting.ApplicationModel.CSharpAppResource" ] }, { - "name": "withoutHttpsCertificate", - "capabilityId": "Aspire.Hosting/withoutHttpsCertificate", - "qualifiedName": "withoutHttpsCertificate", - "description": "Disable HTTPS/TLS server certificate configuration for the resource. No HTTPS/TLS termination configuration will be applied.", - "remarks": "Disable HTTPS certificate configuration for a Redis resource:\n```\nvar redis = builder.AddRedis(\"cache\")\n.WithoutHttpsCertificate();\n```", + "name": "withParentProcessLifetime", + "capabilityId": "Aspire.Hosting/withParentProcessLifetime", + "qualifiedName": "withParentProcessLifetime", + "description": "Configures a resource to use a persistent lifetime that ends when a parent process exits.", "returns": "The resource builder.", "kind": "Method", - "signature": "withoutHttpsCertificate(): IResourceWithEnvironment", - "parameters": [], - "returnType": "IResourceWithEnvironment", + "signature": "withParentProcessLifetime(parentProcessId: number): IResource", + "parameters": [ + { + "name": "parentProcessId", + "type": "number", + "description": "The ID of the parent process to monitor." + } + ], + "returnType": "IResource", "returnsBuilder": true, - "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.IResourceWithEnvironment", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.IResource", "expandedTargetTypes": [ "Aspire.Hosting.ApplicationModel.ContainerResource", "Aspire.Hosting.ApplicationModel.ExecutableResource", "Aspire.Hosting.ApplicationModel.ProjectResource", + "Aspire.Hosting.ApplicationModel.ParameterResource", + "Aspire.Hosting.ApplicationModel.ContainerRegistryResource", "Aspire.Hosting.ApplicationModel.DotnetToolResource", + "Aspire.Hosting.ExternalServiceResource", "Aspire.Hosting.ApplicationModel.CSharpAppResource" ] }, { - "name": "withReference", - "capabilityId": "Aspire.Hosting/withReference", - "qualifiedName": "withReference", - "description": "Adds a reference to another resource", + "name": "withParentRelationship", + "capabilityId": "Aspire.Hosting/withBuilderParentRelationship", + "qualifiedName": "withParentRelationship", + "description": "Sets the parent relationship", + "returns": "A resource builder.", "kind": "Method", - "signature": "withReference(source: EndpointReference|string|uri, connectionName?: string, optional?: boolean, name?: string): IResourceWithEnvironment", + "signature": "withParentRelationship(parent: IResource): IResource", "parameters": [ { - "name": "source", - "type": "EndpointReference|string|uri" - }, - { - "name": "connectionName", - "type": "string", - "isOptional": true - }, - { - "name": "optional", - "type": "boolean", - "isOptional": true, - "defaultValue": "False" - }, - { - "name": "name", - "type": "string", - "isOptional": true + "name": "parent", + "type": "IResource", + "description": "The parent of `builder`." } ], - "returnType": "IResourceWithEnvironment", + "returnType": "IResource", "returnsBuilder": true, - "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.IResourceWithEnvironment", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.IResource", "expandedTargetTypes": [ "Aspire.Hosting.ApplicationModel.ContainerResource", "Aspire.Hosting.ApplicationModel.ExecutableResource", "Aspire.Hosting.ApplicationModel.ProjectResource", + "Aspire.Hosting.ApplicationModel.ParameterResource", + "Aspire.Hosting.ApplicationModel.ContainerRegistryResource", "Aspire.Hosting.ApplicationModel.DotnetToolResource", + "Aspire.Hosting.ExternalServiceResource", "Aspire.Hosting.ApplicationModel.CSharpAppResource" ] }, { - "name": "withReferenceEnvironment", - "capabilityId": "Aspire.Hosting/withReferenceEnvironment", - "qualifiedName": "withReferenceEnvironment", - "description": "Configures how information is injected into environment variables when the resource references other resources.", + "name": "withPersistentLifetime", + "capabilityId": "Aspire.Hosting/withPersistentLifetime", + "qualifiedName": "withPersistentLifetime", + "description": "Configures a resource to use a persistent lifetime.", "returns": "The resource builder.", "kind": "Method", - "signature": "withReferenceEnvironment(options: ReferenceEnvironmentInjectionOptions): IResourceWithEnvironment", - "parameters": [ - { - "name": "options", - "type": "ReferenceEnvironmentInjectionOptions", - "description": "Options controlling which reference information is emitted." - } - ], - "returnType": "IResourceWithEnvironment", + "signature": "withPersistentLifetime(): IResource", + "parameters": [], + "returnType": "IResource", "returnsBuilder": true, - "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.IResourceWithEnvironment", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.IResource", "expandedTargetTypes": [ "Aspire.Hosting.ApplicationModel.ContainerResource", "Aspire.Hosting.ApplicationModel.ExecutableResource", "Aspire.Hosting.ApplicationModel.ProjectResource", + "Aspire.Hosting.ApplicationModel.ParameterResource", + "Aspire.Hosting.ApplicationModel.ContainerRegistryResource", "Aspire.Hosting.ApplicationModel.DotnetToolResource", + "Aspire.Hosting.ExternalServiceResource", "Aspire.Hosting.ApplicationModel.CSharpAppResource" ] - } - ] - }, - { - "name": "IResourceWithParent", - "fullName": "Aspire.Hosting.ApplicationModel.IResourceWithParent", - "kind": "handle", - "isInterface": true, - "description": "Represents a resource that has a parent resource.", - "implementedInterfaces": [], - "baseTypeHierarchy": [], - "capabilities": [] - }, - { - "name": "IResourceWithWaitSupport", - "fullName": "Aspire.Hosting.ApplicationModel.IResourceWithWaitSupport", - "kind": "handle", - "isInterface": true, - "description": "Represents a resource that can wait for other resources to be running, health, and/or completed.", - "implementedInterfaces": [], - "baseTypeHierarchy": [], - "capabilities": [ + }, { - "name": "waitFor", - "capabilityId": "Aspire.Hosting/waitFor", - "qualifiedName": "waitFor", - "description": "Waits for another resource to be ready", + "name": "withPipelineConfiguration", + "capabilityId": "Aspire.Hosting/withPipelineConfiguration", + "qualifiedName": "withPipelineConfiguration", + "description": "Registers a callback to be executed during the pipeline configuration phase, allowing modification of step dependencies and relationships.", + "returns": "The resource builder for chaining.", "kind": "Method", - "signature": "waitFor(dependency: IResource, waitBehavior?: WaitBehavior): IResourceWithWaitSupport", + "signature": "withPipelineConfiguration(callback: (obj: PipelineConfigurationContext) => Promise): IResource", "parameters": [ { - "name": "dependency", - "type": "IResource" - }, - { - "name": "waitBehavior", - "type": "WaitBehavior", - "isOptional": true, - "isNullable": true + "name": "callback", + "type": "callback", + "isCallback": true, + "callbackSignature": "(obj: PipelineConfigurationContext) => Promise", + "description": "The callback function to execute during the configuration phase." } ], - "returnType": "IResourceWithWaitSupport", + "returnType": "IResource", "returnsBuilder": true, - "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.IResourceWithWaitSupport", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.IResource", "expandedTargetTypes": [ "Aspire.Hosting.ApplicationModel.ContainerResource", "Aspire.Hosting.ApplicationModel.ExecutableResource", "Aspire.Hosting.ApplicationModel.ProjectResource", + "Aspire.Hosting.ApplicationModel.ParameterResource", + "Aspire.Hosting.ApplicationModel.ContainerRegistryResource", "Aspire.Hosting.ApplicationModel.DotnetToolResource", + "Aspire.Hosting.ExternalServiceResource", "Aspire.Hosting.ApplicationModel.CSharpAppResource" ] }, { - "name": "waitForCompletion", - "capabilityId": "Aspire.Hosting/waitForResourceCompletion", - "qualifiedName": "waitForCompletion", - "description": "Waits for the dependency resource to enter the Exited or Finished state before starting the resource.", - "returns": "The resource builder.", + "name": "withPipelineStepFactory", + "capabilityId": "Aspire.Hosting/withPipelineStepFactory", + "qualifiedName": "withPipelineStepFactory", + "description": "Adds a pipeline step to the resource that will be executed during deployment.", + "returns": "The resource builder for chaining.", "kind": "Method", - "signature": "waitForCompletion(dependency: IResource, exitCode?: number): IResourceWithWaitSupport", + "signature": "withPipelineStepFactory(stepName: string, callback: (arg: PipelineStepContext) => Promise, dependsOn?: string[], requiredBy?: string[], tags?: string[], description?: string): IResource", "parameters": [ { - "name": "dependency", - "type": "IResource", - "description": "The resource builder for the dependency resource." + "name": "stepName", + "type": "string", + "description": "The unique name of the pipeline step." }, { - "name": "exitCode", - "type": "number", - "isOptional": true, - "defaultValue": "0", - "description": "The exit code which is interpreted as successful." - } - ], - "returnType": "IResourceWithWaitSupport", + "name": "callback", + "type": "callback", + "isCallback": true, + "callbackSignature": "(arg: PipelineStepContext) => Promise", + "description": "The callback to execute when the step runs." + }, + { + "name": "dependsOn", + "type": "string[]", + "isOptional": true, + "description": "Optional step names that this step depends on." + }, + { + "name": "requiredBy", + "type": "string[]", + "isOptional": true, + "description": "Optional step names that require this step." + }, + { + "name": "tags", + "type": "string[]", + "isOptional": true, + "description": "Optional tags that categorize this step." + }, + { + "name": "description", + "type": "string", + "isOptional": true, + "description": "An optional human-readable description of the step." + } + ], + "returnType": "IResource", "returnsBuilder": true, - "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.IResourceWithWaitSupport", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.IResource", "expandedTargetTypes": [ "Aspire.Hosting.ApplicationModel.ContainerResource", "Aspire.Hosting.ApplicationModel.ExecutableResource", "Aspire.Hosting.ApplicationModel.ProjectResource", + "Aspire.Hosting.ApplicationModel.ParameterResource", + "Aspire.Hosting.ApplicationModel.ContainerRegistryResource", "Aspire.Hosting.ApplicationModel.DotnetToolResource", + "Aspire.Hosting.ExternalServiceResource", "Aspire.Hosting.ApplicationModel.CSharpAppResource" ] }, { - "name": "waitForStart", - "capabilityId": "Aspire.Hosting/waitForStart", - "qualifiedName": "waitForStart", - "description": "Waits for another resource to start", + "name": "withProcessCommand", + "capabilityId": "Aspire.Hosting/withProcessCommand", + "qualifiedName": "withProcessCommand", + "description": "Adds a command to the resource that starts a local process when invoked.", "kind": "Method", - "signature": "waitForStart(dependency: IResource, waitBehavior?: WaitBehavior): IResourceWithWaitSupport", + "signature": "withProcessCommand(commandName: string, displayName: string, options: ProcessCommandExportOptions): IResource", "parameters": [ { - "name": "dependency", - "type": "IResource" + "name": "commandName", + "type": "string" }, { - "name": "waitBehavior", - "type": "WaitBehavior", - "isOptional": true, - "isNullable": true + "name": "displayName", + "type": "string" + }, + { + "name": "options", + "type": "ProcessCommandExportOptions" } ], - "returnType": "IResourceWithWaitSupport", + "returnType": "IResource", "returnsBuilder": true, - "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.IResourceWithWaitSupport", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.IResource", "expandedTargetTypes": [ "Aspire.Hosting.ApplicationModel.ContainerResource", "Aspire.Hosting.ApplicationModel.ExecutableResource", "Aspire.Hosting.ApplicationModel.ProjectResource", + "Aspire.Hosting.ApplicationModel.ParameterResource", + "Aspire.Hosting.ApplicationModel.ContainerRegistryResource", "Aspire.Hosting.ApplicationModel.DotnetToolResource", + "Aspire.Hosting.ExternalServiceResource", "Aspire.Hosting.ApplicationModel.CSharpAppResource" ] - } - ] - }, - { - "name": "LogFacade", - "fullName": "Aspire.Hosting.ApplicationModel.LogFacade", - "kind": "handle", - "description": "Provides a narrow logging surface for polyglot callback contexts.", - "implementedInterfaces": [], - "baseTypeHierarchy": [], - "capabilities": [ + }, { - "name": "debug", - "capabilityId": "Aspire.Hosting.ApplicationModel/debug", - "qualifiedName": "LogFacade.debug", - "description": "Writes a debug log message.", - "kind": "InstanceMethod", - "signature": "debug(message: string): void", + "name": "withProcessCommandFactory", + "capabilityId": "Aspire.Hosting/withProcessCommandFactory", + "qualifiedName": "withProcessCommandFactory", + "description": "Adds a command to the resource that starts a local process created by a callback when invoked.", + "kind": "Method", + "signature": "withProcessCommandFactory(commandName: string, displayName: string, createProcessSpec: (arg: ExecuteCommandContext) => Promise, options?: ProcessCommandResultExportOptions): IResource", "parameters": [ { - "name": "message", - "type": "string", - "description": "The message to write." + "name": "commandName", + "type": "string" + }, + { + "name": "displayName", + "type": "string" + }, + { + "name": "createProcessSpec", + "type": "callback", + "isCallback": true, + "callbackSignature": "(arg: ExecuteCommandContext) => Promise" + }, + { + "name": "options", + "type": "ProcessCommandResultExportOptions", + "isOptional": true } ], - "returnType": "void", - "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.LogFacade", + "returnType": "IResource", + "returnsBuilder": true, + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.IResource", "expandedTargetTypes": [ - "Aspire.Hosting.ApplicationModel.LogFacade" + "Aspire.Hosting.ApplicationModel.ContainerResource", + "Aspire.Hosting.ApplicationModel.ExecutableResource", + "Aspire.Hosting.ApplicationModel.ProjectResource", + "Aspire.Hosting.ApplicationModel.ParameterResource", + "Aspire.Hosting.ApplicationModel.ContainerRegistryResource", + "Aspire.Hosting.ApplicationModel.DotnetToolResource", + "Aspire.Hosting.ExternalServiceResource", + "Aspire.Hosting.ApplicationModel.CSharpAppResource" ] }, { - "name": "error", - "capabilityId": "Aspire.Hosting.ApplicationModel/error", - "qualifiedName": "LogFacade.error", - "description": "Writes an error log message.", - "kind": "InstanceMethod", - "signature": "error(message: string): void", + "name": "withRelationship", + "capabilityId": "Aspire.Hosting/withBuilderRelationship", + "qualifiedName": "withRelationship", + "description": "Adds a relationship to another resource using its builder.", + "returns": "A resource builder.", + "kind": "Method", + "signature": "withRelationship(resourceBuilder: IResource, type: string): IResource", "parameters": [ { - "name": "message", + "name": "resourceBuilder", + "type": "IResource", + "description": "The resource builder that the relationship is to." + }, + { + "name": "type", "type": "string", - "description": "The message to write." + "description": "The relationship type." } ], - "returnType": "void", - "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.LogFacade", + "returnType": "IResource", + "returnsBuilder": true, + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.IResource", "expandedTargetTypes": [ - "Aspire.Hosting.ApplicationModel.LogFacade" + "Aspire.Hosting.ApplicationModel.ContainerResource", + "Aspire.Hosting.ApplicationModel.ExecutableResource", + "Aspire.Hosting.ApplicationModel.ProjectResource", + "Aspire.Hosting.ApplicationModel.ParameterResource", + "Aspire.Hosting.ApplicationModel.ContainerRegistryResource", + "Aspire.Hosting.ApplicationModel.DotnetToolResource", + "Aspire.Hosting.ExternalServiceResource", + "Aspire.Hosting.ApplicationModel.CSharpAppResource" ] }, { - "name": "info", - "capabilityId": "Aspire.Hosting.ApplicationModel/info", - "qualifiedName": "LogFacade.info", - "description": "Writes an informational log message.", - "kind": "InstanceMethod", - "signature": "info(message: string): void", + "name": "withRequiredCommand", + "capabilityId": "Aspire.Hosting/withRequiredCommand", + "qualifiedName": "withRequiredCommand", + "description": "Declares that a resource requires a specific command/executable to be available on the local machine PATH before it can start.", + "remarks": "The command is considered valid if either:\n1. It is an absolute or relative path (contains a directory separator) that points to an existing file, or\n2. It is discoverable on the current process PATH (respecting PATHEXT on Windows).\nIf the command is not found, a warning message will be logged but the resource will be allowed to attempt to start.", + "returns": "The resource builder.", + "kind": "Method", + "signature": "withRequiredCommand(command: string, helpLink?: string): IResource", "parameters": [ { - "name": "message", + "name": "command", "type": "string", - "description": "The message to write." + "description": "The command string (file name or path) that should be validated." + }, + { + "name": "helpLink", + "type": "string", + "isOptional": true, + "description": "An optional help link URL to guide users when the command is missing." } ], - "returnType": "void", - "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.LogFacade", + "returnType": "IResource", + "returnsBuilder": true, + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.IResource", "expandedTargetTypes": [ - "Aspire.Hosting.ApplicationModel.LogFacade" + "Aspire.Hosting.ApplicationModel.ContainerResource", + "Aspire.Hosting.ApplicationModel.ExecutableResource", + "Aspire.Hosting.ApplicationModel.ProjectResource", + "Aspire.Hosting.ApplicationModel.ParameterResource", + "Aspire.Hosting.ApplicationModel.ContainerRegistryResource", + "Aspire.Hosting.ApplicationModel.DotnetToolResource", + "Aspire.Hosting.ExternalServiceResource", + "Aspire.Hosting.ApplicationModel.CSharpAppResource" ] }, { - "name": "warning", - "capabilityId": "Aspire.Hosting.ApplicationModel/warning", - "qualifiedName": "LogFacade.warning", - "description": "Writes a warning log message.", - "kind": "InstanceMethod", - "signature": "warning(message: string): void", + "name": "withRequiredCommandValidation", + "capabilityId": "Aspire.Hosting/withRequiredCommandValidation", + "qualifiedName": "withRequiredCommandValidation", + "description": "Declares that a resource requires a specific command/executable to be available on the local machine PATH before it can start, with custom validation logic.", + "remarks": "The command is first resolved to a full path. If found, the validation callback is invoked with the context containing the resolved path and service provider.\nThe callback should return a `RequiredCommandValidationResult` indicating whether the command is valid,\nwhich can be created via `Success` or `Failure`.\nIf the command is not found or fails validation, a warning message will be logged but the resource will be allowed to attempt to start.", + "returns": "The resource builder.", + "kind": "Method", + "signature": "withRequiredCommandValidation(command: string, validationCallback: (arg: RequiredCommandValidationContext) => Promise, helpLink?: string): IResource", "parameters": [ { - "name": "message", + "name": "command", "type": "string", - "description": "The message to write." + "description": "The command string (file name or path) that should be validated." + }, + { + "name": "validationCallback", + "type": "callback", + "isCallback": true, + "callbackSignature": "(arg: RequiredCommandValidationContext) => Promise", + "description": "A callback that validates the resolved command path. Receives a `RequiredCommandValidationContext` and returns a `RequiredCommandValidationResult`." + }, + { + "name": "helpLink", + "type": "string", + "isOptional": true, + "description": "An optional help link URL to guide users when the command is missing or fails validation." } ], - "returnType": "void", - "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.LogFacade", + "returnType": "IResource", + "returnsBuilder": true, + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.IResource", "expandedTargetTypes": [ - "Aspire.Hosting.ApplicationModel.LogFacade" + "Aspire.Hosting.ApplicationModel.ContainerResource", + "Aspire.Hosting.ApplicationModel.ExecutableResource", + "Aspire.Hosting.ApplicationModel.ProjectResource", + "Aspire.Hosting.ApplicationModel.ParameterResource", + "Aspire.Hosting.ApplicationModel.ContainerRegistryResource", + "Aspire.Hosting.ApplicationModel.DotnetToolResource", + "Aspire.Hosting.ExternalServiceResource", + "Aspire.Hosting.ApplicationModel.CSharpAppResource" ] - } - ] - }, - { - "name": "ParameterResource", - "fullName": "Aspire.Hosting.ApplicationModel.ParameterResource", - "kind": "handle", - "description": "Represents a parameter resource.", - "implementedInterfaces": [ - "Aspire.Hosting.ApplicationModel.IExpressionValue", - "Aspire.Hosting.ApplicationModel.IManifestExpressionProvider", - "Aspire.Hosting.ApplicationModel.IResource", - "Aspire.Hosting.ApplicationModel.IValueProvider" - ], - "baseTypeHierarchy": [ - "Aspire.Hosting.ApplicationModel.Resource" - ], - "capabilities": [ + }, { - "name": "withCustomInput", - "capabilityId": "Aspire.Hosting/withCustomInput", - "qualifiedName": "withCustomInput", - "description": "Sets a custom input for the parameter resource from a polyglot AppHost.", - "returns": "Resource builder for the parameter.", + "name": "withSessionLifetime", + "capabilityId": "Aspire.Hosting/withSessionLifetime", + "qualifiedName": "withSessionLifetime", + "description": "Configures a resource to use a session lifetime.", + "returns": "The resource builder.", "kind": "Method", - "signature": "withCustomInput(options: ParameterCustomInputOptions): ParameterResource", - "parameters": [ - { - "name": "options", - "type": "ParameterCustomInputOptions", - "description": "Options used to customize the input for the parameter." - } - ], - "returnType": "ParameterResource", + "signature": "withSessionLifetime(): IResource", + "parameters": [], + "returnType": "IResource", "returnsBuilder": true, - "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.ParameterResource", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.IResource", "expandedTargetTypes": [ - "Aspire.Hosting.ApplicationModel.ParameterResource" + "Aspire.Hosting.ApplicationModel.ContainerResource", + "Aspire.Hosting.ApplicationModel.ExecutableResource", + "Aspire.Hosting.ApplicationModel.ProjectResource", + "Aspire.Hosting.ApplicationModel.ParameterResource", + "Aspire.Hosting.ApplicationModel.ContainerRegistryResource", + "Aspire.Hosting.ApplicationModel.DotnetToolResource", + "Aspire.Hosting.ExternalServiceResource", + "Aspire.Hosting.ApplicationModel.CSharpAppResource" ] }, { - "name": "withDescription", - "capabilityId": "Aspire.Hosting/withDescription", - "qualifiedName": "withDescription", - "description": "Sets the description of the parameter resource.", - "returns": "Resource builder for the parameter.", + "name": "withTerminal", + "capabilityId": "Aspire.Hosting/withTerminal", + "qualifiedName": "withTerminal", + "description": "Adds an interactive terminal session to a resource using the default terminal options.", "kind": "Method", - "signature": "withDescription(description: string, enableMarkdown?: boolean): ParameterResource", + "signature": "withTerminal(): IResource", + "parameters": [], + "returnType": "IResource", + "returnsBuilder": true, + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.IResource", + "expandedTargetTypes": [ + "Aspire.Hosting.ApplicationModel.ContainerResource", + "Aspire.Hosting.ApplicationModel.ExecutableResource", + "Aspire.Hosting.ApplicationModel.ProjectResource", + "Aspire.Hosting.ApplicationModel.ParameterResource", + "Aspire.Hosting.ApplicationModel.ContainerRegistryResource", + "Aspire.Hosting.ApplicationModel.DotnetToolResource", + "Aspire.Hosting.ExternalServiceResource", + "Aspire.Hosting.ApplicationModel.CSharpAppResource" + ] + }, + { + "name": "withUrl", + "capabilityId": "Aspire.Hosting/withUrl", + "qualifiedName": "withUrl", + "description": "Adds or modifies displayed URLs", + "kind": "Method", + "signature": "withUrl(url: ReferenceExpression, displayText?: string): IResource", "parameters": [ { - "name": "description", - "type": "string", - "description": "The parameter description." + "name": "url", + "type": "ReferenceExpression" }, { - "name": "enableMarkdown", - "type": "boolean", - "isOptional": true, - "defaultValue": "False", - "description": "A value indicating whether the description should be rendered as Markdown. `true` allows the description to contain Markdown elements such as links, text decoration and lists." + "name": "displayText", + "type": "string", + "isOptional": true } ], - "returnType": "ParameterResource", - "returnsBuilder": true, - "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.ParameterResource", - "expandedTargetTypes": [ - "Aspire.Hosting.ApplicationModel.ParameterResource" - ] - } - ] - }, - { - "name": "ProjectResource", - "fullName": "Aspire.Hosting.ApplicationModel.ProjectResource", - "kind": "handle", - "description": "A resource that represents a specified .NET project.", - "implementedInterfaces": [ - "Aspire.Hosting.ApplicationModel.IComputeResource", - "Aspire.Hosting.ApplicationModel.IContainerFilesDestinationResource", - "Aspire.Hosting.ApplicationModel.IResource", - "Aspire.Hosting.ApplicationModel.IResourceWithArgs", - "Aspire.Hosting.ApplicationModel.IResourceWithEndpoints", - "Aspire.Hosting.ApplicationModel.IResourceWithEnvironment", - "Aspire.Hosting.ApplicationModel.IResourceWithProbes", - "Aspire.Hosting.ApplicationModel.IResourceWithWaitSupport", - "Aspire.Hosting.IResourceWithServiceDiscovery" - ], - "baseTypeHierarchy": [ - "Aspire.Hosting.ApplicationModel.Resource" - ], - "capabilities": [ - { - "name": "disableForwardedHeaders", - "capabilityId": "Aspire.Hosting/disableForwardedHeaders", - "qualifiedName": "disableForwardedHeaders", - "description": "Configures the project to disable forwarded headers when being published.", - "returns": "The resource builder.", - "kind": "Method", - "signature": "disableForwardedHeaders(): ProjectResource", - "parameters": [], - "returnType": "ProjectResource", + "returnType": "IResource", "returnsBuilder": true, - "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.ProjectResource", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.IResource", "expandedTargetTypes": [ + "Aspire.Hosting.ApplicationModel.ContainerResource", + "Aspire.Hosting.ApplicationModel.ExecutableResource", "Aspire.Hosting.ApplicationModel.ProjectResource", + "Aspire.Hosting.ApplicationModel.ParameterResource", + "Aspire.Hosting.ApplicationModel.ContainerRegistryResource", + "Aspire.Hosting.ApplicationModel.DotnetToolResource", + "Aspire.Hosting.ExternalServiceResource", "Aspire.Hosting.ApplicationModel.CSharpAppResource" ] }, { - "name": "publishAsDockerFile", - "capabilityId": "Aspire.Hosting/publishProjectAsDockerFileWithConfigure", - "qualifiedName": "publishAsDockerFile", - "description": "Publishes a project as a Docker file with optional container configuration", - "remarks": "When the executable resource is converted to a container resource, the arguments to the executable\nare not used. This is because arguments to the project often contain physical paths that are not valid\nin the container. The container can be set up with the correct arguments using the `configure` action.", + "name": "withUrlForEndpoint", + "capabilityId": "Aspire.Hosting/withUrlForEndpoint", + "qualifiedName": "withUrlForEndpoint", + "description": "Registers a callback to update the URL displayed for the endpoint with the specified name.", "returns": "The resource builder.", "kind": "Method", - "signature": "publishAsDockerFile(configure?: (obj: ContainerResource) => Promise): ProjectResource", + "signature": "withUrlForEndpoint(endpointName: string, callback: (obj: ResourceUrlAnnotation) => Promise): IResource", "parameters": [ { - "name": "configure", + "name": "endpointName", + "type": "string", + "description": "The name of the endpoint to customize the URL for." + }, + { + "name": "callback", "type": "callback", - "isOptional": true, "isCallback": true, - "callbackSignature": "(obj: ContainerResource) => Promise", - "description": "Optional action to configure the container resource" + "callbackSignature": "(obj: ResourceUrlAnnotation) => Promise", + "description": "The callback that will customize the URL." } ], - "returnType": "ProjectResource", + "returnType": "IResource", "returnsBuilder": true, - "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.ProjectResource", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.IResource", "expandedTargetTypes": [ + "Aspire.Hosting.ApplicationModel.ContainerResource", + "Aspire.Hosting.ApplicationModel.ExecutableResource", "Aspire.Hosting.ApplicationModel.ProjectResource", + "Aspire.Hosting.ApplicationModel.ParameterResource", + "Aspire.Hosting.ApplicationModel.ContainerRegistryResource", + "Aspire.Hosting.ApplicationModel.DotnetToolResource", + "Aspire.Hosting.ExternalServiceResource", "Aspire.Hosting.ApplicationModel.CSharpAppResource" ] }, { - "name": "withReplicas", - "capabilityId": "Aspire.Hosting/withReplicas", - "qualifiedName": "withReplicas", - "description": "Configures how many replicas of the project should be created for the project.", + "name": "withUrls", + "capabilityId": "Aspire.Hosting/withUrls", + "qualifiedName": "withUrls", + "description": "Registers a callback to customize the URLs displayed for the resource.", "returns": "The resource builder.", "kind": "Method", - "signature": "withReplicas(replicas: number): ProjectResource", + "signature": "withUrls(callback: (obj: ResourceUrlsCallbackContext) => Promise): IResource", "parameters": [ { - "name": "replicas", - "type": "number", - "description": "The number of replicas." + "name": "callback", + "type": "callback", + "isCallback": true, + "callbackSignature": "(obj: ResourceUrlsCallbackContext) => Promise", + "description": "The callback that will customize URLs for the resource." } ], - "returnType": "ProjectResource", + "returnType": "IResource", "returnsBuilder": true, - "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.ProjectResource", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.IResource", "expandedTargetTypes": [ + "Aspire.Hosting.ApplicationModel.ContainerResource", + "Aspire.Hosting.ApplicationModel.ExecutableResource", "Aspire.Hosting.ApplicationModel.ProjectResource", + "Aspire.Hosting.ApplicationModel.ParameterResource", + "Aspire.Hosting.ApplicationModel.ContainerRegistryResource", + "Aspire.Hosting.ApplicationModel.DotnetToolResource", + "Aspire.Hosting.ExternalServiceResource", "Aspire.Hosting.ApplicationModel.CSharpAppResource" ] } ] }, { - "name": "ReferenceExpression", - "fullName": "Aspire.Hosting.ApplicationModel.ReferenceExpression", + "name": "IResourceWithArgs", + "fullName": "Aspire.Hosting.ApplicationModel.IResourceWithArgs", "kind": "handle", - "description": "Represents an expression that might be made up of multiple resource properties. For example, a connection string might be made up of a host, port, and password from different endpoints.", - "remarks": "A `ReferenceExpression` operates in one of two modes:\n-\n-", - "implementedInterfaces": [ - "Aspire.Hosting.ApplicationModel.IExpressionValue", - "Aspire.Hosting.ApplicationModel.IManifestExpressionProvider", - "Aspire.Hosting.ApplicationModel.IValueProvider", - "Aspire.Hosting.ApplicationModel.IValueWithReferences" - ], + "isInterface": true, + "description": "Represents a resource that is associated with commandline arguments.", + "implementedInterfaces": [], "baseTypeHierarchy": [], "capabilities": [ { - "name": "getValueAsync", - "capabilityId": "Aspire.Hosting.ApplicationModel/getValueAsync", - "qualifiedName": "ReferenceExpression.getValueAsync", - "description": "Gets the value of the expression. The final string value after evaluating the format string and its parameters.", - "kind": "InstanceMethod", - "signature": "getValueAsync(cancellationToken: cancellationToken): string", + "name": "withArgs", + "capabilityId": "Aspire.Hosting/withArgs", + "qualifiedName": "withArgs", + "description": "Adds arguments to be passed to a resource that supports arguments when it is launched.", + "returns": "The resource builder.", + "kind": "Method", + "signature": "withArgs(args: string[]): IResourceWithArgs", "parameters": [ { - "name": "cancellationToken", - "type": "cancellationToken", - "description": "A `CancellationToken`." + "name": "args", + "type": "string[]", + "description": "The arguments to be passed to the resource when it is started." } ], - "returnType": "string", - "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.ReferenceExpression", + "returnType": "IResourceWithArgs", + "returnsBuilder": true, + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.IResourceWithArgs", "expandedTargetTypes": [ - "Aspire.Hosting.ApplicationModel.ReferenceExpression" + "Aspire.Hosting.ApplicationModel.ContainerResource", + "Aspire.Hosting.ApplicationModel.ExecutableResource", + "Aspire.Hosting.ApplicationModel.ProjectResource", + "Aspire.Hosting.ApplicationModel.DotnetToolResource", + "Aspire.Hosting.ApplicationModel.CSharpAppResource" + ] + }, + { + "name": "withArgsCallback", + "capabilityId": "Aspire.Hosting/withArgsCallback", + "qualifiedName": "withArgsCallback", + "description": "Adds a callback to be executed with a list of command-line arguments when a resource is started.", + "returns": "The resource builder.", + "kind": "Method", + "signature": "withArgsCallback(callback: (obj: CommandLineArgsCallbackContext) => Promise): IResourceWithArgs", + "parameters": [ + { + "name": "callback", + "type": "callback", + "isCallback": true, + "callbackSignature": "(obj: CommandLineArgsCallbackContext) => Promise", + "description": "A callback that allows for deferred execution for computing arguments. This runs after resources have been allocated by the orchestrator and allows access to other resources to resolve computed data, e.g. connection strings, ports." + } + ], + "returnType": "IResourceWithArgs", + "returnsBuilder": true, + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.IResourceWithArgs", + "expandedTargetTypes": [ + "Aspire.Hosting.ApplicationModel.ContainerResource", + "Aspire.Hosting.ApplicationModel.ExecutableResource", + "Aspire.Hosting.ApplicationModel.ProjectResource", + "Aspire.Hosting.ApplicationModel.DotnetToolResource", + "Aspire.Hosting.ApplicationModel.CSharpAppResource" ] } ] }, { - "name": "ReferenceExpressionBuilder", - "fullName": "Aspire.Hosting.ApplicationModel.ReferenceExpressionBuilder", + "name": "IResourceWithConnectionString", + "fullName": "Aspire.Hosting.ApplicationModel.IResourceWithConnectionString", "kind": "handle", - "exposeProperties": true, - "description": "A builder for creating {@ats-ref type:ReferenceExpression} instances.", + "isInterface": true, + "description": "Represents a resource that has a connection string associated with it.", "implementedInterfaces": [], "baseTypeHierarchy": [], "capabilities": [ { - "name": "appendFormatted", - "capabilityId": "Aspire.Hosting.ApplicationModel/appendFormatted", - "qualifiedName": "ReferenceExpressionBuilder.appendFormatted", - "description": "Appends a formatted value to the expression.", - "kind": "InstanceMethod", - "signature": "appendFormatted(value: string, format?: string): void", + "name": "getConnectionProperty", + "capabilityId": "Aspire.Hosting/getConnectionProperty", + "qualifiedName": "getConnectionProperty", + "description": "Retrieves the value of a specified connection property from the resource's connection properties.", + "remarks": "Throws a KeyNotFoundException if the specified key does not exist in the resource's\nconnection properties.", + "returns": "The value associated with the specified connection property key.", + "kind": "Method", + "signature": "getConnectionProperty(key: string): ReferenceExpression", "parameters": [ { - "name": "value", - "type": "string", - "description": "The formatted string to be appended to the interpolated string." - }, - { - "name": "format", + "name": "key", "type": "string", - "isOptional": true, - "description": "The format to be applied to the value. e.g., \"uri\"" + "description": "The key of the connection property to retrieve. Cannot be null." } ], - "returnType": "void", - "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.ReferenceExpressionBuilder", + "returnType": "ReferenceExpression", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.IResourceWithConnectionString", "expandedTargetTypes": [ - "Aspire.Hosting.ApplicationModel.ReferenceExpressionBuilder" + "Aspire.Hosting.ApplicationModel.IResourceWithConnectionString" ] }, { - "name": "appendLiteral", - "capabilityId": "Aspire.Hosting.ApplicationModel/appendLiteral", - "qualifiedName": "ReferenceExpressionBuilder.appendLiteral", - "description": "Appends a literal value to the expression.", - "kind": "InstanceMethod", - "signature": "appendLiteral(value: string): void", + "name": "onConnectionStringAvailable", + "capabilityId": "Aspire.Hosting/onConnectionStringAvailable", + "qualifiedName": "onConnectionStringAvailable", + "description": "Subscribes to the ConnectionStringAvailable event.", + "returns": "The resource builder.", + "kind": "Method", + "signature": "onConnectionStringAvailable(callback: (arg: ConnectionStringAvailableEvent) => Promise): IResourceWithConnectionString", "parameters": [ { - "name": "value", - "type": "string", - "description": "The literal string value to be appended to the interpolated string." + "name": "callback", + "type": "callback", + "isCallback": true, + "callbackSignature": "(arg: ConnectionStringAvailableEvent) => Promise", + "description": "The callback to invoke when the event fires." } ], - "returnType": "void", - "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.ReferenceExpressionBuilder", + "returnType": "IResourceWithConnectionString", + "returnsBuilder": true, + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.IResourceWithConnectionString", "expandedTargetTypes": [ - "Aspire.Hosting.ApplicationModel.ReferenceExpressionBuilder" + "Aspire.Hosting.ApplicationModel.IResourceWithConnectionString" ] }, { - "name": "appendValueProvider", - "capabilityId": "Aspire.Hosting.ApplicationModel/appendValueProvider", - "qualifiedName": "ReferenceExpressionBuilder.appendValueProvider", - "description": "Appends a value provider to the reference expression", - "kind": "InstanceMethod", - "signature": "appendValueProvider(valueProvider: any, format?: string): void", + "name": "withConnectionProperty", + "capabilityId": "Aspire.Hosting/withConnectionProperty", + "qualifiedName": "withConnectionProperty", + "description": "Adds a connection property annotation to the resource being built.", + "returns": "The same resource builder instance with the specified connection property annotation applied.", + "kind": "Method", + "signature": "withConnectionProperty(name: string, value: ReferenceExpression): IResourceWithConnectionString", "parameters": [ { - "name": "valueProvider", - "type": "any", - "description": "The value provider to append." + "name": "name", + "type": "string", + "description": "The name of the connection property to add." }, { - "name": "format", - "type": "string", - "isOptional": true, - "description": "Optional format specifier." + "name": "value", + "type": "ReferenceExpression", + "description": "The value to assign to the connection property, specified as a string or reference expression." } ], - "returnType": "void", - "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.ReferenceExpressionBuilder", - "expandedTargetTypes": [ - "Aspire.Hosting.ApplicationModel.ReferenceExpressionBuilder" - ] - }, - { - "name": "build", - "capabilityId": "Aspire.Hosting.ApplicationModel/build", - "qualifiedName": "ReferenceExpressionBuilder.build", - "description": "Builds the reference expression", - "kind": "InstanceMethod", - "signature": "build(): ReferenceExpression", - "parameters": [], - "returnType": "ReferenceExpression", - "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.ReferenceExpressionBuilder", - "expandedTargetTypes": [ - "Aspire.Hosting.ApplicationModel.ReferenceExpressionBuilder" - ] - }, - { - "name": "isEmpty", - "capabilityId": "Aspire.Hosting.ApplicationModel/ReferenceExpressionBuilder.isEmpty", - "qualifiedName": "ReferenceExpressionBuilder.isEmpty", - "description": "Indicates whether the expression is empty.", - "kind": "PropertyGetter", - "signature": "isEmpty(): boolean", - "parameters": [], - "returnType": "boolean", - "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.ReferenceExpressionBuilder", + "returnType": "IResourceWithConnectionString", + "returnsBuilder": true, + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.IResourceWithConnectionString", "expandedTargetTypes": [ - "Aspire.Hosting.ApplicationModel.ReferenceExpressionBuilder" + "Aspire.Hosting.ApplicationModel.IResourceWithConnectionString" ] } ] }, { - "name": "ResourceCommandService", - "fullName": "Aspire.Hosting.ApplicationModel.ResourceCommandService", + "name": "IResourceWithEndpoints", + "fullName": "Aspire.Hosting.ApplicationModel.IResourceWithEndpoints", "kind": "handle", - "description": "A service to execute resource commands.", + "isInterface": true, + "description": "Represents a resource that has endpoints associated with it.", "implementedInterfaces": [], "baseTypeHierarchy": [], "capabilities": [ { - "name": "executeCommandAsync", - "capabilityId": "Aspire.Hosting/executeResourceCommand", - "qualifiedName": "executeCommandAsync", - "description": "Executes a command for the specified resource.", - "returns": "The command execution result.", + "name": "asHttp2Service", + "capabilityId": "Aspire.Hosting/asHttp2Service", + "qualifiedName": "asHttp2Service", + "description": "Configures a resource to mark all endpoints' transport as HTTP/2. This is useful for HTTP/2 services that need prior knowledge.", + "returns": "The resource builder.", "kind": "Method", - "signature": "executeCommandAsync(resource: IResource, commandName: string, arguments?: Dict, cancellationToken?: cancellationToken): ExecuteCommandResult", + "signature": "asHttp2Service(): IResourceWithEndpoints", + "parameters": [], + "returnType": "IResourceWithEndpoints", + "returnsBuilder": true, + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.IResourceWithEndpoints", + "expandedTargetTypes": [ + "Aspire.Hosting.ApplicationModel.ContainerResource", + "Aspire.Hosting.ApplicationModel.ExecutableResource", + "Aspire.Hosting.ApplicationModel.ProjectResource", + "Aspire.Hosting.ApplicationModel.DotnetToolResource", + "Aspire.Hosting.ApplicationModel.CSharpAppResource" + ] + }, + { + "name": "getEndpoint", + "capabilityId": "Aspire.Hosting/getEndpoint", + "qualifiedName": "getEndpoint", + "description": "Gets an endpoint reference", + "returns": "An `EndpointReference` that can be used to resolve the address of the endpoint after resource allocation has occurred.", + "kind": "Method", + "signature": "getEndpoint(name: string): EndpointReference", "parameters": [ { - "name": "resource", - "type": "IResource", - "description": "The resource id or resource handle. A resource id can either exactly match the unique id of the resource or the displayed resource name if the resource name doesn't have duplicates." - }, - { - "name": "commandName", + "name": "name", "type": "string", - "description": "The command name." - }, - { - "name": "arguments", - "type": "Dict", - "isOptional": true, - "description": "The optional invocation arguments supplied to the command callback." - }, - { - "name": "cancellationToken", - "type": "cancellationToken", - "isOptional": true, - "description": "The cancellation token." + "description": "The name of the endpoint." } ], - "returnType": "ExecuteCommandResult", - "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.ResourceCommandService", + "returnType": "EndpointReference", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.IResourceWithEndpoints", "expandedTargetTypes": [ - "Aspire.Hosting.ApplicationModel.ResourceCommandService" + "Aspire.Hosting.ApplicationModel.ContainerResource", + "Aspire.Hosting.ApplicationModel.ExecutableResource", + "Aspire.Hosting.ApplicationModel.ProjectResource", + "Aspire.Hosting.ApplicationModel.DotnetToolResource", + "Aspire.Hosting.ApplicationModel.CSharpAppResource" ] - } - ] - }, - { - "name": "ResourceEndpointsAllocatedEvent", - "fullName": "Aspire.Hosting.ApplicationModel.ResourceEndpointsAllocatedEvent", - "kind": "handle", - "exposeProperties": true, - "description": "This event is raised by orchestrators to signal to resources that their endpoints have been allocated.", - "remarks": "Any resources that customize their URLs via a `ResourceUrlsCallbackAnnotation` will have their callbacks invoked during this event.", - "implementedInterfaces": [ - "Aspire.Hosting.Eventing.IDistributedApplicationEvent", - "Aspire.Hosting.Eventing.IDistributedApplicationResourceEvent" - ], - "baseTypeHierarchy": [], - "capabilities": [ + }, { - "name": "resource", - "capabilityId": "Aspire.Hosting.ApplicationModel/ResourceEndpointsAllocatedEvent.resource", - "qualifiedName": "ResourceEndpointsAllocatedEvent.resource", - "description": "Gets the Resource property", - "kind": "PropertyGetter", - "signature": "resource(): IResource", - "parameters": [], - "returnType": "IResource", - "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.ResourceEndpointsAllocatedEvent", + "name": "onResourceEndpointsAllocated", + "capabilityId": "Aspire.Hosting/onResourceEndpointsAllocated", + "qualifiedName": "onResourceEndpointsAllocated", + "description": "Subscribes to the ResourceEndpointsAllocated event.", + "returns": "The resource builder.", + "kind": "Method", + "signature": "onResourceEndpointsAllocated(callback: (arg: ResourceEndpointsAllocatedEvent) => Promise): IResourceWithEndpoints", + "parameters": [ + { + "name": "callback", + "type": "callback", + "isCallback": true, + "callbackSignature": "(arg: ResourceEndpointsAllocatedEvent) => Promise", + "description": "The callback to invoke when the event fires." + } + ], + "returnType": "IResourceWithEndpoints", + "returnsBuilder": true, + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.IResourceWithEndpoints", "expandedTargetTypes": [ - "Aspire.Hosting.ApplicationModel.ResourceEndpointsAllocatedEvent" + "Aspire.Hosting.ApplicationModel.ContainerResource", + "Aspire.Hosting.ApplicationModel.ExecutableResource", + "Aspire.Hosting.ApplicationModel.ProjectResource", + "Aspire.Hosting.ApplicationModel.DotnetToolResource", + "Aspire.Hosting.ApplicationModel.CSharpAppResource" ] }, { - "name": "services", - "capabilityId": "Aspire.Hosting.ApplicationModel/ResourceEndpointsAllocatedEvent.services", - "qualifiedName": "ResourceEndpointsAllocatedEvent.services", - "description": "Gets the Services property", - "kind": "PropertyGetter", - "signature": "services(): IServiceProvider", - "parameters": [], - "returnType": "IServiceProvider", - "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.ResourceEndpointsAllocatedEvent", - "expandedTargetTypes": [ - "Aspire.Hosting.ApplicationModel.ResourceEndpointsAllocatedEvent" - ] - } - ] - }, - { - "name": "ResourceLoggerService", - "fullName": "Aspire.Hosting.ApplicationModel.ResourceLoggerService", - "kind": "handle", - "description": "A service that provides loggers for resources to write to.", - "implementedInterfaces": [ - "System.IDisposable" - ], - "baseTypeHierarchy": [], - "capabilities": [ - { - "name": "completeLog", - "capabilityId": "Aspire.Hosting/completeLog", - "qualifiedName": "completeLog", - "description": "Completes the log stream for a resource.", + "name": "withEndpoint", + "capabilityId": "Aspire.Hosting/withEndpoint", + "qualifiedName": "withEndpoint", + "description": "Adds a network endpoint", + "returns": "The resource builder.", "kind": "Method", - "signature": "completeLog(resource: IResource): void", + "signature": "withEndpoint(port?: number, targetPort?: number, scheme?: string, name?: string, env?: string, isProxied?: boolean, isExternal?: boolean, protocol?: ProtocolType): IResourceWithEndpoints", "parameters": [ { - "name": "resource", - "type": "IResource" - } - ], - "returnType": "void", - "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.ResourceLoggerService", - "expandedTargetTypes": [ - "Aspire.Hosting.ApplicationModel.ResourceLoggerService" - ] - }, - { - "name": "completeLogByName", - "capabilityId": "Aspire.Hosting/completeLogByName", - "qualifiedName": "completeLogByName", - "description": "Completes the log stream by resource name.", - "kind": "Method", - "signature": "completeLogByName(resourceName: string): void", - "parameters": [ + "name": "port", + "type": "number", + "isOptional": true, + "isNullable": true, + "description": "An optional port. This is the port that will be given to other resource to communicate with this resource." + }, { - "name": "resourceName", - "type": "string" - } - ], - "returnType": "void", - "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.ResourceLoggerService", - "expandedTargetTypes": [ - "Aspire.Hosting.ApplicationModel.ResourceLoggerService" - ] - } - ] - }, - { - "name": "ResourceNotificationService", - "fullName": "Aspire.Hosting.ApplicationModel.ResourceNotificationService", - "kind": "handle", - "description": "A service that allows publishing and subscribing to changes in the state of a resource.", - "implementedInterfaces": [ - "System.IDisposable" - ], - "baseTypeHierarchy": [], - "capabilities": [ - { - "name": "publishResourceUpdate", - "capabilityId": "Aspire.Hosting/publishResourceUpdate", - "qualifiedName": "publishResourceUpdate", - "description": "Publishes an update for a resource's state.", - "kind": "Method", - "signature": "publishResourceUpdate(resource: IResource, state?: string, stateStyle?: string): void", - "parameters": [ + "name": "targetPort", + "type": "number", + "isOptional": true, + "isNullable": true, + "description": "This is the port the resource is listening on. If the endpoint is used for the container, it is the container port." + }, { - "name": "resource", - "type": "IResource" + "name": "scheme", + "type": "string", + "isOptional": true, + "description": "An optional scheme e.g. (http/https). Defaults to the `protocol` argument if it is defined or \"tcp\" otherwise." }, { - "name": "state", + "name": "name", "type": "string", - "isOptional": true + "isOptional": true, + "description": "An optional name of the endpoint. Defaults to the scheme name if not specified." }, { - "name": "stateStyle", + "name": "env", "type": "string", - "isOptional": true + "isOptional": true, + "description": "An optional name of the environment variable that will be used to inject the `targetPort`. If the target port is null one will be dynamically generated and assigned to the environment variable." + }, + { + "name": "isProxied", + "type": "boolean", + "isOptional": true, + "isNullable": true, + "description": "Specifies if the endpoint will be proxied by DCP. Defaults to `null`." + }, + { + "name": "isExternal", + "type": "boolean", + "isOptional": true, + "isNullable": true, + "description": "Indicates that this endpoint should be exposed externally at publish time." + }, + { + "name": "protocol", + "type": "ProtocolType", + "isOptional": true, + "isNullable": true, + "description": "Network protocol: TCP or UDP are supported today, others possibly in future." } ], - "returnType": "void", - "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.ResourceNotificationService", + "returnType": "IResourceWithEndpoints", + "returnsBuilder": true, + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.IResourceWithEndpoints", "expandedTargetTypes": [ - "Aspire.Hosting.ApplicationModel.ResourceNotificationService" + "Aspire.Hosting.ApplicationModel.ContainerResource", + "Aspire.Hosting.ApplicationModel.ExecutableResource", + "Aspire.Hosting.ApplicationModel.ProjectResource", + "Aspire.Hosting.ApplicationModel.DotnetToolResource", + "Aspire.Hosting.ApplicationModel.CSharpAppResource" ] }, { - "name": "tryGetResourceState", - "capabilityId": "Aspire.Hosting/tryGetResourceState", - "qualifiedName": "tryGetResourceState", - "description": "Tries to get the current state of a resource.", + "name": "withEndpointCallback", + "capabilityId": "Aspire.Hosting/withEndpointCallback", + "qualifiedName": "withEndpointCallback", + "description": "Updates a named endpoint via callback", "kind": "Method", - "signature": "tryGetResourceState(resourceName: string): ResourceEventDto", + "signature": "withEndpointCallback(endpointName: string, callback: (obj: EndpointUpdateContext) => Promise, createIfNotExists?: boolean): IResourceWithEndpoints", "parameters": [ { - "name": "resourceName", + "name": "endpointName", "type": "string" + }, + { + "name": "callback", + "type": "callback", + "isCallback": true, + "callbackSignature": "(obj: EndpointUpdateContext) => Promise" + }, + { + "name": "createIfNotExists", + "type": "boolean", + "isOptional": true, + "defaultValue": "True" } ], - "returnType": "ResourceEventDto", - "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.ResourceNotificationService", + "returnType": "IResourceWithEndpoints", + "returnsBuilder": true, + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.IResourceWithEndpoints", "expandedTargetTypes": [ - "Aspire.Hosting.ApplicationModel.ResourceNotificationService" + "Aspire.Hosting.ApplicationModel.ContainerResource", + "Aspire.Hosting.ApplicationModel.ExecutableResource", + "Aspire.Hosting.ApplicationModel.ProjectResource", + "Aspire.Hosting.ApplicationModel.DotnetToolResource", + "Aspire.Hosting.ApplicationModel.CSharpAppResource" ] }, { - "name": "waitForDependencies", - "capabilityId": "Aspire.Hosting/waitForDependencies", - "qualifiedName": "waitForDependencies", - "description": "Waits for all dependencies of a resource to be ready.", + "name": "withEndpointProxySupport", + "capabilityId": "Aspire.Hosting/withEndpointProxySupport", + "qualifiedName": "withEndpointProxySupport", + "description": "Set whether a resource can use proxied endpoints or whether they should be disabled for all endpoints belonging to the resource. If set to `false`, endpoints belonging to the resource will ignore the configured proxy settings and run proxy-less.", + "remarks": "This method is intended to support scenarios with persistent lifetime resources where it is desirable for the resource to be accessible over the same\nport whether the Aspire application is running or not. Proxied endpoints bind ports that are only accessible while the Aspire application is running.\nThe user needs to be careful to ensure that endpoints are using unique ports when disabling proxy support as by default for proxy-less\nendpoints, Aspire will allocate the target port as the host port, which will increase the chance of port conflicts.", + "returns": "The resource builder.", "kind": "Method", - "signature": "waitForDependencies(resource: IResource): void", + "signature": "withEndpointProxySupport(proxyEnabled: boolean): IResourceWithEndpoints", "parameters": [ { - "name": "resource", - "type": "IResource" + "name": "proxyEnabled", + "type": "boolean", + "description": "Should endpoints for the resource support using a proxy?" } ], - "returnType": "void", - "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.ResourceNotificationService", + "returnType": "IResourceWithEndpoints", + "returnsBuilder": true, + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.IResourceWithEndpoints", "expandedTargetTypes": [ - "Aspire.Hosting.ApplicationModel.ResourceNotificationService" + "Aspire.Hosting.ApplicationModel.ContainerResource", + "Aspire.Hosting.ApplicationModel.ExecutableResource", + "Aspire.Hosting.ApplicationModel.ProjectResource", + "Aspire.Hosting.ApplicationModel.DotnetToolResource", + "Aspire.Hosting.ApplicationModel.CSharpAppResource" ] }, { - "name": "waitForResourceHealthy", - "capabilityId": "Aspire.Hosting/waitForResourceHealthy", - "qualifiedName": "waitForResourceHealthy", - "description": "Waits for a resource to become healthy.", + "name": "withExternalHttpEndpoints", + "capabilityId": "Aspire.Hosting/withExternalHttpEndpoints", + "qualifiedName": "withExternalHttpEndpoints", + "description": "Marks existing http or https endpoints on a resource as external.", + "returns": "The resource builder.", "kind": "Method", - "signature": "waitForResourceHealthy(resourceName: string): ResourceEventDto", - "parameters": [ - { - "name": "resourceName", - "type": "string" - } - ], - "returnType": "ResourceEventDto", - "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.ResourceNotificationService", + "signature": "withExternalHttpEndpoints(): IResourceWithEndpoints", + "parameters": [], + "returnType": "IResourceWithEndpoints", + "returnsBuilder": true, + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.IResourceWithEndpoints", "expandedTargetTypes": [ - "Aspire.Hosting.ApplicationModel.ResourceNotificationService" + "Aspire.Hosting.ApplicationModel.ContainerResource", + "Aspire.Hosting.ApplicationModel.ExecutableResource", + "Aspire.Hosting.ApplicationModel.ProjectResource", + "Aspire.Hosting.ApplicationModel.DotnetToolResource", + "Aspire.Hosting.ApplicationModel.CSharpAppResource" ] }, { - "name": "waitForResourceState", - "capabilityId": "Aspire.Hosting/waitForResourceState", - "qualifiedName": "waitForResourceState", - "description": "Waits for a resource to reach a specified state.", + "name": "withHttpCommand", + "capabilityId": "Aspire.Hosting/withHttpCommand", + "qualifiedName": "withHttpCommand", + "description": "Adds an HTTP resource command", "kind": "Method", - "signature": "waitForResourceState(resourceName: string, targetState?: string): void", + "signature": "withHttpCommand(path: string, displayName: string, options?: HttpCommandExportOptions): IResourceWithEndpoints", "parameters": [ { - "name": "resourceName", + "name": "path", "type": "string" }, { - "name": "targetState", - "type": "string", + "name": "displayName", + "type": "string" + }, + { + "name": "options", + "type": "HttpCommandExportOptions", "isOptional": true } ], - "returnType": "void", - "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.ResourceNotificationService", + "returnType": "IResourceWithEndpoints", + "returnsBuilder": true, + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.IResourceWithEndpoints", "expandedTargetTypes": [ - "Aspire.Hosting.ApplicationModel.ResourceNotificationService" - ] - }, + "Aspire.Hosting.ApplicationModel.ContainerResource", + "Aspire.Hosting.ApplicationModel.ExecutableResource", + "Aspire.Hosting.ApplicationModel.ProjectResource", + "Aspire.Hosting.ApplicationModel.DotnetToolResource", + "Aspire.Hosting.ApplicationModel.CSharpAppResource" + ] + }, { - "name": "waitForResourceStates", - "capabilityId": "Aspire.Hosting/waitForResourceStates", - "qualifiedName": "waitForResourceStates", - "description": "Waits for a resource to reach one of the specified states.", + "name": "withHttpEndpoint", + "capabilityId": "Aspire.Hosting/withHttpEndpoint", + "qualifiedName": "withHttpEndpoint", + "description": "Adds an HTTP endpoint", + "remarks": "If an endpoint with the same name already exists on the resource, the existing endpoint is updated\nwith any non-null parameter values. Parameters left as `null` will not modify the existing endpoint's values.", + "returns": "The resource builder.", "kind": "Method", - "signature": "waitForResourceStates(resourceName: string, targetStates: string[]): string", + "signature": "withHttpEndpoint(port?: number, targetPort?: number, name?: string, env?: string, isProxied?: boolean): IResourceWithEndpoints", "parameters": [ { - "name": "resourceName", - "type": "string" + "name": "port", + "type": "number", + "isOptional": true, + "isNullable": true, + "description": "An optional port. This is the port that will be given to other resource to communicate with this resource." }, { - "name": "targetStates", - "type": "string[]" + "name": "targetPort", + "type": "number", + "isOptional": true, + "isNullable": true, + "description": "This is the port the resource is listening on. If the endpoint is used for the container, it is the container port." + }, + { + "name": "name", + "type": "string", + "isOptional": true, + "description": "An optional name of the endpoint. Defaults to \"http\" if not specified." + }, + { + "name": "env", + "type": "string", + "isOptional": true, + "description": "An optional name of the environment variable to inject." + }, + { + "name": "isProxied", + "type": "boolean", + "isOptional": true, + "isNullable": true, + "description": "Specifies if the endpoint will be proxied by DCP. Defaults to `null`." } ], - "returnType": "string", - "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.ResourceNotificationService", - "expandedTargetTypes": [ - "Aspire.Hosting.ApplicationModel.ResourceNotificationService" - ] - } - ] - }, - { - "name": "ResourceReadyEvent", - "fullName": "Aspire.Hosting.ApplicationModel.ResourceReadyEvent", - "kind": "handle", - "exposeProperties": true, - "description": "Event that is raised when a resource initially transitions to a ready state.", - "remarks": "This event is only fired the first time a resource transitions to a ready state after starting.", - "implementedInterfaces": [ - "Aspire.Hosting.Eventing.IDistributedApplicationEvent", - "Aspire.Hosting.Eventing.IDistributedApplicationResourceEvent" - ], - "baseTypeHierarchy": [], - "capabilities": [ - { - "name": "resource", - "capabilityId": "Aspire.Hosting.ApplicationModel/ResourceReadyEvent.resource", - "qualifiedName": "ResourceReadyEvent.resource", - "description": "The resource that is in a healthy state.", - "kind": "PropertyGetter", - "signature": "resource(): IResource", - "parameters": [], - "returnType": "IResource", - "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.ResourceReadyEvent", - "expandedTargetTypes": [ - "Aspire.Hosting.ApplicationModel.ResourceReadyEvent" - ] - }, - { - "name": "services", - "capabilityId": "Aspire.Hosting.ApplicationModel/ResourceReadyEvent.services", - "qualifiedName": "ResourceReadyEvent.services", - "description": "Gets the Services property", - "kind": "PropertyGetter", - "signature": "services(): IServiceProvider", - "parameters": [], - "returnType": "IServiceProvider", - "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.ResourceReadyEvent", - "expandedTargetTypes": [ - "Aspire.Hosting.ApplicationModel.ResourceReadyEvent" - ] - } - ] - }, - { - "name": "ResourceStoppedEvent", - "fullName": "Aspire.Hosting.ApplicationModel.ResourceStoppedEvent", - "kind": "handle", - "exposeProperties": true, - "description": "This event is raised after a resource has stopped.", - "remarks": "This event allows for cleanup or unregistration logic when a resource is stopped by an orchestrator.", - "implementedInterfaces": [ - "Aspire.Hosting.Eventing.IDistributedApplicationEvent", - "Aspire.Hosting.Eventing.IDistributedApplicationResourceEvent" - ], - "baseTypeHierarchy": [], - "capabilities": [ - { - "name": "resource", - "capabilityId": "Aspire.Hosting.ApplicationModel/ResourceStoppedEvent.resource", - "qualifiedName": "ResourceStoppedEvent.resource", - "description": "Gets the Resource property", - "kind": "PropertyGetter", - "signature": "resource(): IResource", - "parameters": [], - "returnType": "IResource", - "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.ResourceStoppedEvent", - "expandedTargetTypes": [ - "Aspire.Hosting.ApplicationModel.ResourceStoppedEvent" - ] - }, - { - "name": "services", - "capabilityId": "Aspire.Hosting.ApplicationModel/ResourceStoppedEvent.services", - "qualifiedName": "ResourceStoppedEvent.services", - "description": "Gets the Services property", - "kind": "PropertyGetter", - "signature": "services(): IServiceProvider", - "parameters": [], - "returnType": "IServiceProvider", - "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.ResourceStoppedEvent", - "expandedTargetTypes": [ - "Aspire.Hosting.ApplicationModel.ResourceStoppedEvent" - ] - } - ] - }, - { - "name": "ResourceUrlsCallbackContext", - "fullName": "Aspire.Hosting.ApplicationModel.ResourceUrlsCallbackContext", - "kind": "handle", - "description": "Represents a callback context for resource URLs.", - "implementedInterfaces": [], - "baseTypeHierarchy": [], - "capabilities": [ - { - "name": "executionContext", - "capabilityId": "Aspire.Hosting.ApplicationModel/ResourceUrlsCallbackContext.executionContext", - "qualifiedName": "ResourceUrlsCallbackContext.executionContext", - "description": "Gets the execution context associated with this invocation of the AppHost.", - "kind": "PropertyGetter", - "signature": "executionContext(): DistributedApplicationExecutionContext", - "parameters": [], - "returnType": "DistributedApplicationExecutionContext", - "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.ResourceUrlsCallbackContext", + "returnType": "IResourceWithEndpoints", + "returnsBuilder": true, + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.IResourceWithEndpoints", "expandedTargetTypes": [ - "Aspire.Hosting.ApplicationModel.ResourceUrlsCallbackContext" + "Aspire.Hosting.ApplicationModel.ContainerResource", + "Aspire.Hosting.ApplicationModel.ExecutableResource", + "Aspire.Hosting.ApplicationModel.ProjectResource", + "Aspire.Hosting.ApplicationModel.DotnetToolResource", + "Aspire.Hosting.ApplicationModel.CSharpAppResource" ] }, { - "name": "getEndpoint", - "capabilityId": "Aspire.Hosting.ApplicationModel/getEndpoint", - "qualifiedName": "ResourceUrlsCallbackContext.getEndpoint", - "description": "Gets an endpoint reference from the associated resource", - "kind": "InstanceMethod", - "signature": "getEndpoint(name: string): EndpointReference", + "name": "withHttpEndpointCallback", + "capabilityId": "Aspire.Hosting/withHttpEndpointCallback", + "qualifiedName": "withHttpEndpointCallback", + "description": "Updates an HTTP endpoint via callback", + "kind": "Method", + "signature": "withHttpEndpointCallback(callback: (obj: EndpointUpdateContext) => Promise, name?: string, createIfNotExists?: boolean): IResourceWithEndpoints", "parameters": [ + { + "name": "callback", + "type": "callback", + "isCallback": true, + "callbackSignature": "(obj: EndpointUpdateContext) => Promise" + }, { "name": "name", "type": "string", - "description": "The name of the endpoint." + "isOptional": true + }, + { + "name": "createIfNotExists", + "type": "boolean", + "isOptional": true, + "defaultValue": "True" } ], - "returnType": "EndpointReference", - "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.ResourceUrlsCallbackContext", + "returnType": "IResourceWithEndpoints", + "returnsBuilder": true, + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.IResourceWithEndpoints", "expandedTargetTypes": [ - "Aspire.Hosting.ApplicationModel.ResourceUrlsCallbackContext" + "Aspire.Hosting.ApplicationModel.ContainerResource", + "Aspire.Hosting.ApplicationModel.ExecutableResource", + "Aspire.Hosting.ApplicationModel.ProjectResource", + "Aspire.Hosting.ApplicationModel.DotnetToolResource", + "Aspire.Hosting.ApplicationModel.CSharpAppResource" ] }, { - "name": "log", - "capabilityId": "Aspire.Hosting.ApplicationModel/ResourceUrlsCallbackContext.log", - "qualifiedName": "ResourceUrlsCallbackContext.log", - "description": "Gets the logger facade used by polyglot callbacks.", - "kind": "PropertyGetter", - "signature": "log(): LogFacade", - "parameters": [], - "returnType": "LogFacade", - "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.ResourceUrlsCallbackContext", + "name": "withHttpHealthCheck", + "capabilityId": "Aspire.Hosting/withHttpHealthCheck", + "qualifiedName": "withHttpHealthCheck", + "description": "Adds a health check to the resource which is mapped to a specific endpoint.", + "returns": "The resource builder.", + "kind": "Method", + "signature": "withHttpHealthCheck(path?: string, statusCode?: number, endpointName?: string): IResourceWithEndpoints", + "parameters": [ + { + "name": "path", + "type": "string", + "isOptional": true, + "description": "The relative path to test." + }, + { + "name": "statusCode", + "type": "number", + "isOptional": true, + "isNullable": true, + "description": "The result code to interpret as healthy." + }, + { + "name": "endpointName", + "type": "string", + "isOptional": true, + "description": "The name of the endpoint to derive the base address from." + } + ], + "returnType": "IResourceWithEndpoints", + "returnsBuilder": true, + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.IResourceWithEndpoints", "expandedTargetTypes": [ - "Aspire.Hosting.ApplicationModel.ResourceUrlsCallbackContext" + "Aspire.Hosting.ApplicationModel.ContainerResource", + "Aspire.Hosting.ApplicationModel.ExecutableResource", + "Aspire.Hosting.ApplicationModel.ProjectResource", + "Aspire.Hosting.ApplicationModel.DotnetToolResource", + "Aspire.Hosting.ApplicationModel.CSharpAppResource" ] }, { - "name": "resource", - "capabilityId": "Aspire.Hosting.ApplicationModel/ResourceUrlsCallbackContext.resource", - "qualifiedName": "ResourceUrlsCallbackContext.resource", - "description": "Gets the resource this the URLs are associated with.", - "kind": "PropertyGetter", - "signature": "resource(): IResource", - "parameters": [], - "returnType": "IResource", - "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.ResourceUrlsCallbackContext", + "name": "withHttpProbe", + "capabilityId": "Aspire.Hosting/withHttpProbe", + "qualifiedName": "withHttpProbe", + "description": "Adds an HTTP health probe to the resource", + "kind": "Method", + "signature": "withHttpProbe(probeType: ProbeType, path?: string, initialDelaySeconds?: number, periodSeconds?: number, timeoutSeconds?: number, failureThreshold?: number, successThreshold?: number, endpointName?: string): IResourceWithEndpoints", + "parameters": [ + { + "name": "probeType", + "type": "ProbeType" + }, + { + "name": "path", + "type": "string", + "isOptional": true + }, + { + "name": "initialDelaySeconds", + "type": "number", + "isOptional": true, + "isNullable": true + }, + { + "name": "periodSeconds", + "type": "number", + "isOptional": true, + "isNullable": true + }, + { + "name": "timeoutSeconds", + "type": "number", + "isOptional": true, + "isNullable": true + }, + { + "name": "failureThreshold", + "type": "number", + "isOptional": true, + "isNullable": true + }, + { + "name": "successThreshold", + "type": "number", + "isOptional": true, + "isNullable": true + }, + { + "name": "endpointName", + "type": "string", + "isOptional": true + } + ], + "returnType": "IResourceWithEndpoints", + "returnsBuilder": true, + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.IResourceWithEndpoints", "expandedTargetTypes": [ - "Aspire.Hosting.ApplicationModel.ResourceUrlsCallbackContext" + "Aspire.Hosting.ApplicationModel.ContainerResource", + "Aspire.Hosting.ApplicationModel.ExecutableResource", + "Aspire.Hosting.ApplicationModel.ProjectResource", + "Aspire.Hosting.ApplicationModel.DotnetToolResource", + "Aspire.Hosting.ApplicationModel.CSharpAppResource" ] }, { - "name": "urls", - "capabilityId": "Aspire.Hosting.ApplicationModel/ResourceUrlsCallbackContext.urls", - "qualifiedName": "ResourceUrlsCallbackContext.urls", - "description": "Gets the editor used to manipulate displayed URLs in polyglot callbacks.", - "kind": "PropertyGetter", - "signature": "urls(): ResourceUrlsEditor", - "parameters": [], - "returnType": "ResourceUrlsEditor", - "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.ResourceUrlsCallbackContext", - "expandedTargetTypes": [ - "Aspire.Hosting.ApplicationModel.ResourceUrlsCallbackContext" - ] - } - ] - }, - { - "name": "ResourceUrlsEditor", - "fullName": "Aspire.Hosting.ApplicationModel.ResourceUrlsEditor", - "kind": "handle", - "description": "Provides an ATS-first editor for resource URLs within polyglot callbacks.", - "implementedInterfaces": [], - "baseTypeHierarchy": [], - "capabilities": [ - { - "name": "add", - "capabilityId": "Aspire.Hosting.ApplicationModel/ResourceUrlsEditor.add", - "qualifiedName": "ResourceUrlsEditor.add", - "description": "Adds a displayed URL.", - "kind": "InstanceMethod", - "signature": "add(url: ReferenceExpression, displayText?: string): void", + "name": "withHttpsEndpoint", + "capabilityId": "Aspire.Hosting/withHttpsEndpoint", + "qualifiedName": "withHttpsEndpoint", + "description": "Adds an HTTPS endpoint", + "remarks": "If an endpoint with the same name already exists on the resource, the existing endpoint is updated\nwith any non-null parameter values. Parameters left as `null` will not modify the existing endpoint's values.", + "returns": "The resource builder.", + "kind": "Method", + "signature": "withHttpsEndpoint(port?: number, targetPort?: number, name?: string, env?: string, isProxied?: boolean): IResourceWithEndpoints", "parameters": [ { - "name": "url", - "type": "ReferenceExpression", - "description": "The URL to add, specified as a string or reference expression." + "name": "port", + "type": "number", + "isOptional": true, + "isNullable": true, + "description": "An optional host port." }, { - "name": "displayText", + "name": "targetPort", + "type": "number", + "isOptional": true, + "isNullable": true, + "description": "This is the port the resource is listening on. If the endpoint is used for the container, it is the container port." + }, + { + "name": "name", "type": "string", "isOptional": true, - "description": "The optional display text to show for the URL." + "description": "An optional name of the endpoint. Defaults to \"https\" if not specified." + }, + { + "name": "env", + "type": "string", + "isOptional": true, + "description": "An optional name of the environment variable to inject." + }, + { + "name": "isProxied", + "type": "boolean", + "isOptional": true, + "isNullable": true, + "description": "Specifies if the endpoint will be proxied by DCP. Defaults to `null`." } ], - "returnType": "void", - "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.ResourceUrlsEditor", + "returnType": "IResourceWithEndpoints", + "returnsBuilder": true, + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.IResourceWithEndpoints", "expandedTargetTypes": [ - "Aspire.Hosting.ApplicationModel.ResourceUrlsEditor" + "Aspire.Hosting.ApplicationModel.ContainerResource", + "Aspire.Hosting.ApplicationModel.ExecutableResource", + "Aspire.Hosting.ApplicationModel.ProjectResource", + "Aspire.Hosting.ApplicationModel.DotnetToolResource", + "Aspire.Hosting.ApplicationModel.CSharpAppResource" ] }, { - "name": "addForEndpoint", - "capabilityId": "Aspire.Hosting.ApplicationModel/ResourceUrlsEditor.addForEndpoint", - "qualifiedName": "ResourceUrlsEditor.addForEndpoint", - "description": "Adds a displayed URL for a specific endpoint.", - "kind": "InstanceMethod", - "signature": "addForEndpoint(endpoint: EndpointReference, url: ReferenceExpression, displayText?: string): void", + "name": "withHttpsEndpointCallback", + "capabilityId": "Aspire.Hosting/withHttpsEndpointCallback", + "qualifiedName": "withHttpsEndpointCallback", + "description": "Updates an HTTPS endpoint via callback", + "kind": "Method", + "signature": "withHttpsEndpointCallback(callback: (obj: EndpointUpdateContext) => Promise, name?: string, createIfNotExists?: boolean): IResourceWithEndpoints", "parameters": [ { - "name": "endpoint", - "type": "EndpointReference", - "description": "The endpoint the URL is associated with." + "name": "callback", + "type": "callback", + "isCallback": true, + "callbackSignature": "(obj: EndpointUpdateContext) => Promise" }, { - "name": "url", - "type": "ReferenceExpression", - "description": "The URL to add, specified as a string or reference expression." + "name": "name", + "type": "string", + "isOptional": true }, { - "name": "displayText", - "type": "string", + "name": "createIfNotExists", + "type": "boolean", "isOptional": true, - "description": "The optional display text to show for the URL." + "defaultValue": "True" } ], - "returnType": "void", - "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.ResourceUrlsEditor", + "returnType": "IResourceWithEndpoints", + "returnsBuilder": true, + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.IResourceWithEndpoints", "expandedTargetTypes": [ - "Aspire.Hosting.ApplicationModel.ResourceUrlsEditor" + "Aspire.Hosting.ApplicationModel.ContainerResource", + "Aspire.Hosting.ApplicationModel.ExecutableResource", + "Aspire.Hosting.ApplicationModel.ProjectResource", + "Aspire.Hosting.ApplicationModel.DotnetToolResource", + "Aspire.Hosting.ApplicationModel.CSharpAppResource" ] }, { - "name": "executionContext", - "capabilityId": "Aspire.Hosting.ApplicationModel/ResourceUrlsEditor.executionContext", - "qualifiedName": "ResourceUrlsEditor.executionContext", - "description": "Gets the execution context associated with this editor.", - "kind": "PropertyGetter", - "signature": "executionContext(): DistributedApplicationExecutionContext", - "parameters": [], - "returnType": "DistributedApplicationExecutionContext", - "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.ResourceUrlsEditor", + "name": "withMcpServer", + "capabilityId": "Aspire.Hosting/withMcpServer", + "qualifiedName": "withMcpServer", + "description": "Marks the resource as hosting a Model Context Protocol (MCP) server on the specified endpoint.", + "remarks": "This method adds an `McpServerEndpointAnnotation` to the resource, enabling the Aspire tooling\nto discover and proxy the MCP server exposed by the resource.", + "returns": "The resource builder.", + "kind": "Method", + "signature": "withMcpServer(path?: string, endpointName?: string): IResourceWithEndpoints", + "parameters": [ + { + "name": "path", + "type": "string", + "isOptional": true, + "defaultValue": "/mcp", + "description": "An optional path to append to the endpoint URL when forming the MCP server address. Defaults to `\"/mcp\"`." + }, + { + "name": "endpointName", + "type": "string", + "isOptional": true, + "description": "An optional name of the endpoint that hosts the MCP server. If not specified, defaults to the first HTTPS or HTTP endpoint." + } + ], + "returnType": "IResourceWithEndpoints", + "returnsBuilder": true, + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.IResourceWithEndpoints", "expandedTargetTypes": [ - "Aspire.Hosting.ApplicationModel.ResourceUrlsEditor" + "Aspire.Hosting.ApplicationModel.ContainerResource", + "Aspire.Hosting.ApplicationModel.ExecutableResource", + "Aspire.Hosting.ApplicationModel.ProjectResource", + "Aspire.Hosting.ApplicationModel.DotnetToolResource", + "Aspire.Hosting.ApplicationModel.CSharpAppResource" ] } ] }, { - "name": "UpdateCommandStateContext", - "fullName": "Aspire.Hosting.ApplicationModel.UpdateCommandStateContext", + "name": "IResourceWithEnvironment", + "fullName": "Aspire.Hosting.ApplicationModel.IResourceWithEnvironment", "kind": "handle", - "exposeProperties": true, - "description": "Context for {@ats-ref method:ResourceCommandAnnotation.UpdateState}.", + "isInterface": true, + "description": "Represents a resource that is associated with an environment.", "implementedInterfaces": [], "baseTypeHierarchy": [], "capabilities": [ { - "name": "resourceSnapshot", - "capabilityId": "Aspire.Hosting.ApplicationModel/UpdateCommandStateContext.resourceSnapshot", - "qualifiedName": "UpdateCommandStateContext.resourceSnapshot", - "description": "Gets the resource snapshot data available to polyglot command state callbacks.", - "kind": "PropertyGetter", - "signature": "resourceSnapshot(): UpdateCommandStateResourceSnapshot", - "parameters": [], - "returnType": "UpdateCommandStateResourceSnapshot", - "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.UpdateCommandStateContext", - "expandedTargetTypes": [ - "Aspire.Hosting.ApplicationModel.UpdateCommandStateContext" - ] - } - ] - }, - { - "name": "EventingSubscriberRegistrationContext", - "fullName": "Aspire.Hosting.Ats.EventingSubscriberRegistrationContext", - "kind": "handle", - "exposeProperties": true, - "description": "Context passed to ATS-friendly eventing subscriber registrations.", - "implementedInterfaces": [], - "baseTypeHierarchy": [], - "capabilities": [ - { - "name": "cancellationToken", - "capabilityId": "Aspire.Hosting.Ats/EventingSubscriberRegistrationContext.cancellationToken", - "qualifiedName": "EventingSubscriberRegistrationContext.cancellationToken", - "description": "The cancellation token associated with the subscriber registration.", - "kind": "PropertyGetter", - "signature": "cancellationToken(): cancellationToken", - "parameters": [], - "returnType": "cancellationToken", - "targetTypeId": "Aspire.Hosting/Aspire.Hosting.Ats.EventingSubscriberRegistrationContext", + "name": "withCertificateTrustScope", + "capabilityId": "Aspire.Hosting/withCertificateTrustScope", + "qualifiedName": "withCertificateTrustScope", + "description": "Sets the certificate trust scope", + "remarks": "The default scope if not overridden is `Append` which means that custom certificate\nauthorities should be appended to the default trusted certificate authorities for the resource. Setting the scope to\n`Override` indicates the set of certificates in referenced\n`CertificateAuthorityCollection` (and optionally Aspire developer certificiates) should be used as the\nexclusive source of trust for a resource.\nIn all cases, this is a best effort implementation as not all resources support full customization of certificate\ntrust.\nSet the scope for custom certificate authorities to override the default trusted certificate authorities for a container resource.\n```\nvar caCollection = builder.AddCertificateAuthorityCollection(\"my-cas\")\n.WithCertificate(new X509Certificate2(\"my-ca.pem\"));\nvar container = builder.AddContainer(\"my-service\", \"my-service:latest\")\n.WithCertificateAuthorityCollection(caCollection)\n.WithCertificateTrustScope(CertificateTrustScope.Override);\n```", + "returns": "The resource builder.", + "kind": "Method", + "signature": "withCertificateTrustScope(scope: CertificateTrustScope): IResourceWithEnvironment", + "parameters": [ + { + "name": "scope", + "type": "CertificateTrustScope", + "description": "The scope to apply to custom certificate authorities associated with the resource." + } + ], + "returnType": "IResourceWithEnvironment", + "returnsBuilder": true, + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.IResourceWithEnvironment", "expandedTargetTypes": [ - "Aspire.Hosting.Ats.EventingSubscriberRegistrationContext" + "Aspire.Hosting.ApplicationModel.ContainerResource", + "Aspire.Hosting.ApplicationModel.ExecutableResource", + "Aspire.Hosting.ApplicationModel.ProjectResource", + "Aspire.Hosting.ApplicationModel.DotnetToolResource", + "Aspire.Hosting.ApplicationModel.CSharpAppResource" ] }, { - "name": "executionContext", - "capabilityId": "Aspire.Hosting.Ats/EventingSubscriberRegistrationContext.executionContext", - "qualifiedName": "EventingSubscriberRegistrationContext.executionContext", - "description": "The execution context for the AppHost invocation.", - "kind": "PropertyGetter", - "signature": "executionContext(): DistributedApplicationExecutionContext", - "parameters": [], - "returnType": "DistributedApplicationExecutionContext", - "targetTypeId": "Aspire.Hosting/Aspire.Hosting.Ats.EventingSubscriberRegistrationContext", + "name": "withDeveloperCertificateTrust", + "capabilityId": "Aspire.Hosting/withDeveloperCertificateTrust", + "qualifiedName": "withDeveloperCertificateTrust", + "description": "Indicates whether developer certificates should be treated as trusted certificate authorities for the resource at run time. Currently this indicates trust for the ASP.NET Core developer certificate. The developer certificate will only be trusted when running in local development scenarios; in publish mode resources will use their default certificate trust.", + "remarks": "Disable trust for AppHost managed developer certificate(s) for a container resource.\n```\nvar container = builder.AddContainer(\"my-service\", \"my-service:latest\")\n.WithDeveloperCertificateTrust(false);\n```\nDisable automatic trust for AppHost managed developer certificate(s), but explicitly enable it for a specific resource.\n```\nvar builder = DistributedApplication.CreateBuilder(new DistributedApplicationOptions()\n{\nArgs = args,\nTrustDeveloperCertificate = false,\n});\nvar project = builder.AddProject(\"my-service\")\n.WithDeveloperCertificateTrust(true);\n```", + "returns": "The resource builder.", + "kind": "Method", + "signature": "withDeveloperCertificateTrust(trust: boolean): IResourceWithEnvironment", + "parameters": [ + { + "name": "trust", + "type": "boolean", + "description": "Indicates whether the developer certificate should be treated as trusted." + } + ], + "returnType": "IResourceWithEnvironment", + "returnsBuilder": true, + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.IResourceWithEnvironment", "expandedTargetTypes": [ - "Aspire.Hosting.Ats.EventingSubscriberRegistrationContext" + "Aspire.Hosting.ApplicationModel.ContainerResource", + "Aspire.Hosting.ApplicationModel.ExecutableResource", + "Aspire.Hosting.ApplicationModel.ProjectResource", + "Aspire.Hosting.ApplicationModel.DotnetToolResource", + "Aspire.Hosting.ApplicationModel.CSharpAppResource" ] }, { - "name": "onAfterPublish", - "capabilityId": "Aspire.Hosting/eventingSubscriberOnAfterPublish", - "qualifiedName": "onAfterPublish", - "description": "Subscribes to the AfterPublish event from an eventing subscriber registration context.", - "returns": "The event subscription.", + "name": "withEnvironment", + "capabilityId": "Aspire.Hosting/withEnvironment", + "qualifiedName": "withEnvironment", + "description": "Sets an environment variable", "kind": "Method", - "signature": "onAfterPublish(callback: (arg: AfterPublishEvent) => Promise): DistributedApplicationEventSubscription", + "signature": "withEnvironment(name: string, value: IExpressionValue): IResourceWithEnvironment", "parameters": [ { - "name": "callback", - "type": "callback", - "isCallback": true, - "callbackSignature": "(arg: AfterPublishEvent) => Promise", - "description": "The callback to invoke when the event fires." + "name": "name", + "type": "string" + }, + { + "name": "value", + "type": "IExpressionValue" } ], - "returnType": "DistributedApplicationEventSubscription", - "targetTypeId": "Aspire.Hosting/Aspire.Hosting.Ats.EventingSubscriberRegistrationContext", + "returnType": "IResourceWithEnvironment", + "returnsBuilder": true, + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.IResourceWithEnvironment", "expandedTargetTypes": [ - "Aspire.Hosting.Ats.EventingSubscriberRegistrationContext" + "Aspire.Hosting.ApplicationModel.ContainerResource", + "Aspire.Hosting.ApplicationModel.ExecutableResource", + "Aspire.Hosting.ApplicationModel.ProjectResource", + "Aspire.Hosting.ApplicationModel.DotnetToolResource", + "Aspire.Hosting.ApplicationModel.CSharpAppResource" ] }, { - "name": "onAfterResourcesCreated", - "capabilityId": "Aspire.Hosting/eventingSubscriberOnAfterResourcesCreated", - "qualifiedName": "onAfterResourcesCreated", - "description": "Subscribes to the AfterResourcesCreated event from an eventing subscriber registration context.", - "returns": "The event subscription.", + "name": "withEnvironmentCallback", + "capabilityId": "Aspire.Hosting/withEnvironmentCallback", + "qualifiedName": "withEnvironmentCallback", + "description": "Allows for the population of environment variables on a resource.", + "returns": "The resource builder.", "kind": "Method", - "signature": "onAfterResourcesCreated(callback: (arg: AfterResourcesCreatedEvent) => Promise): DistributedApplicationEventSubscription", + "signature": "withEnvironmentCallback(callback: (arg: EnvironmentCallbackContext) => Promise): IResourceWithEnvironment", "parameters": [ { "name": "callback", "type": "callback", "isCallback": true, - "callbackSignature": "(arg: AfterResourcesCreatedEvent) => Promise", - "description": "The callback to invoke when the event fires." + "callbackSignature": "(arg: EnvironmentCallbackContext) => Promise", + "description": "A callback that allows for deferred execution for computing many environment variables. This runs after resources have been allocated by the orchestrator and allows access to other resources to resolve computed data, e.g. connection strings, ports." } ], - "returnType": "DistributedApplicationEventSubscription", - "targetTypeId": "Aspire.Hosting/Aspire.Hosting.Ats.EventingSubscriberRegistrationContext", + "returnType": "IResourceWithEnvironment", + "returnsBuilder": true, + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.IResourceWithEnvironment", "expandedTargetTypes": [ - "Aspire.Hosting.Ats.EventingSubscriberRegistrationContext" + "Aspire.Hosting.ApplicationModel.ContainerResource", + "Aspire.Hosting.ApplicationModel.ExecutableResource", + "Aspire.Hosting.ApplicationModel.ProjectResource", + "Aspire.Hosting.ApplicationModel.DotnetToolResource", + "Aspire.Hosting.ApplicationModel.CSharpAppResource" ] }, { - "name": "onBeforePublish", - "capabilityId": "Aspire.Hosting/eventingSubscriberOnBeforePublish", - "qualifiedName": "onBeforePublish", - "description": "Subscribes to the BeforePublish event from an eventing subscriber registration context.", - "returns": "The event subscription.", + "name": "withHttpsCertificateConfiguration", + "capabilityId": "Aspire.Hosting/withHttpsCertificateConfiguration", + "qualifiedName": "withHttpsCertificateConfiguration", + "description": "Adds a callback that allows configuring the resource to use a specific HTTPS/TLS certificate key pair for server authentication.", + "remarks": "Pass the path to the PFX certificate file to the container arguments.\n```\nbuilder.AddContainer(\"my-service\", \"my-image\")\n.WithHttpsCertificateConfiguration(ctx =>\n{\nctx.Arguments.Add(\"--https-certificate-path\");\nctx.Arguments.Add(ctx.PfxPath);\nreturn Task.CompletedTask;\n});\n```", + "returns": "The updated resource builder.", "kind": "Method", - "signature": "onBeforePublish(callback: (arg: BeforePublishEvent) => Promise): DistributedApplicationEventSubscription", + "signature": "withHttpsCertificateConfiguration(callback: (arg: HttpsCertificateConfigurationCallbackAnnotationContext) => Promise): IResourceWithEnvironment", "parameters": [ { "name": "callback", "type": "callback", "isCallback": true, - "callbackSignature": "(arg: BeforePublishEvent) => Promise", - "description": "The callback to invoke when the event fires." + "callbackSignature": "(arg: HttpsCertificateConfigurationCallbackAnnotationContext) => Promise", + "description": "The callback to configure the resource to use a certificate key pair." } ], - "returnType": "DistributedApplicationEventSubscription", - "targetTypeId": "Aspire.Hosting/Aspire.Hosting.Ats.EventingSubscriberRegistrationContext", + "returnType": "IResourceWithEnvironment", + "returnsBuilder": true, + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.IResourceWithEnvironment", "expandedTargetTypes": [ - "Aspire.Hosting.Ats.EventingSubscriberRegistrationContext" + "Aspire.Hosting.ApplicationModel.ContainerResource", + "Aspire.Hosting.ApplicationModel.ExecutableResource", + "Aspire.Hosting.ApplicationModel.ProjectResource", + "Aspire.Hosting.ApplicationModel.DotnetToolResource", + "Aspire.Hosting.ApplicationModel.CSharpAppResource" ] }, { - "name": "onBeforeStart", - "capabilityId": "Aspire.Hosting/eventingSubscriberOnBeforeStart", - "qualifiedName": "onBeforeStart", - "description": "Subscribes to the BeforeStart event from an eventing subscriber registration context.", - "returns": "The event subscription.", + "name": "withHttpsDeveloperCertificate", + "capabilityId": "Aspire.Hosting/withParameterHttpsDeveloperCertificate", + "qualifiedName": "withHttpsDeveloperCertificate", + "description": "Indicates that a resource should use the developer certificate key pair for HTTPS endpoints at run time. Currently this indicates use of the ASP.NET Core developer certificate. The developer certificate will only be used when running in local development scenarios; in publish mode resources will use their default certificate configuration.", + "remarks": "Use the developer certificate for HTTPS/TLS endpoints on a container resource:\n```\nbuilder.AddContainer(\"my-service\", \"my-image\")\n.WithHttpsDeveloperCertificate()\n```", + "returns": "The resource builder.", "kind": "Method", - "signature": "onBeforeStart(callback: (arg: BeforeStartEvent) => Promise): DistributedApplicationEventSubscription", + "signature": "withHttpsDeveloperCertificate(password?: ParameterResource): IResourceWithEnvironment", "parameters": [ { - "name": "callback", - "type": "callback", - "isCallback": true, - "callbackSignature": "(arg: BeforeStartEvent) => Promise", - "description": "The callback to invoke when the event fires." + "name": "password", + "type": "ParameterResource", + "isOptional": true, + "description": "A parameter specifying the password used to encrypt the certificate private key." } ], - "returnType": "DistributedApplicationEventSubscription", - "targetTypeId": "Aspire.Hosting/Aspire.Hosting.Ats.EventingSubscriberRegistrationContext", + "returnType": "IResourceWithEnvironment", + "returnsBuilder": true, + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.IResourceWithEnvironment", "expandedTargetTypes": [ - "Aspire.Hosting.Ats.EventingSubscriberRegistrationContext" + "Aspire.Hosting.ApplicationModel.ContainerResource", + "Aspire.Hosting.ApplicationModel.ExecutableResource", + "Aspire.Hosting.ApplicationModel.ProjectResource", + "Aspire.Hosting.ApplicationModel.DotnetToolResource", + "Aspire.Hosting.ApplicationModel.CSharpAppResource" ] - } - ] - }, - { - "name": "DistributedApplication", - "fullName": "Aspire.Hosting.DistributedApplication", - "kind": "handle", - "description": "Represents a distributed application that implements the {@ats-ref type:IHost} and {@ats-ref type:IAsyncDisposable} interfaces.", - "implementedInterfaces": [ - "Microsoft.Extensions.Hosting.IHost", - "System.IAsyncDisposable", - "System.IDisposable" - ], - "baseTypeHierarchy": [], - "capabilities": [ + }, { - "name": "run", - "capabilityId": "Aspire.Hosting/run", - "qualifiedName": "DistributedApplication.run", - "description": "Runs the distributed application", - "remarks": "When the Aspire AppHost is launched via `RunAsync` there are\ntwo possible modes that it is running in:\n-\n-\nDevelopers extending the Aspire application model should consider the lifetime\nof `IHostedService` instances which are added to the dependency injection\ncontainer. For more information on determining the mode that the AppHost is running\nin refer to `DistributedApplicationExecutionContext`.", - "returns": "The `Task` that represents the asynchronous operation.", - "kind": "InstanceMethod", - "signature": "run(cancellationToken?: cancellationToken): void", + "name": "withOtlpExporter", + "capabilityId": "Aspire.Hosting/withOtlpExporter", + "qualifiedName": "withOtlpExporter", + "description": "Configures OTLP telemetry export", + "kind": "Method", + "signature": "withOtlpExporter(protocol?: OtlpProtocol): IResourceWithEnvironment", "parameters": [ { - "name": "cancellationToken", - "type": "cancellationToken", + "name": "protocol", + "type": "OtlpProtocol", "isOptional": true, - "description": "The token to trigger shutdown." + "isNullable": true } ], - "returnType": "void", - "targetTypeId": "Aspire.Hosting/Aspire.Hosting.DistributedApplication", + "returnType": "IResourceWithEnvironment", + "returnsBuilder": true, + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.IResourceWithEnvironment", "expandedTargetTypes": [ - "Aspire.Hosting.DistributedApplication" + "Aspire.Hosting.ApplicationModel.ContainerResource", + "Aspire.Hosting.ApplicationModel.ExecutableResource", + "Aspire.Hosting.ApplicationModel.ProjectResource", + "Aspire.Hosting.ApplicationModel.DotnetToolResource", + "Aspire.Hosting.ApplicationModel.CSharpAppResource" ] - } - ] - }, - { - "name": "DistributedApplicationExecutionContext", - "fullName": "Aspire.Hosting.DistributedApplicationExecutionContext", - "kind": "handle", - "exposeProperties": true, - "description": "Exposes the global contextual information for this invocation of the AppHost.", - "implementedInterfaces": [], - "baseTypeHierarchy": [], - "capabilities": [ + }, { - "name": "isPublishMode", - "capabilityId": "Aspire.Hosting/DistributedApplicationExecutionContext.isPublishMode", - "qualifiedName": "DistributedApplicationExecutionContext.isPublishMode", - "description": "Returns true if the current operation is publishing.", - "kind": "PropertyGetter", - "signature": "isPublishMode(): boolean", - "parameters": [], - "returnType": "boolean", - "targetTypeId": "Aspire.Hosting/Aspire.Hosting.DistributedApplicationExecutionContext", - "expandedTargetTypes": [ - "Aspire.Hosting.DistributedApplicationExecutionContext" - ] - }, - { - "name": "isRunMode", - "capabilityId": "Aspire.Hosting/DistributedApplicationExecutionContext.isRunMode", - "qualifiedName": "DistributedApplicationExecutionContext.isRunMode", - "description": "Returns true if the current operation is running.", - "kind": "PropertyGetter", - "signature": "isRunMode(): boolean", - "parameters": [], - "returnType": "boolean", - "targetTypeId": "Aspire.Hosting/Aspire.Hosting.DistributedApplicationExecutionContext", - "expandedTargetTypes": [ - "Aspire.Hosting.DistributedApplicationExecutionContext" - ] - }, - { - "name": "operation", - "capabilityId": "Aspire.Hosting/DistributedApplicationExecutionContext.operation", - "qualifiedName": "DistributedApplicationExecutionContext.operation", - "description": "The operation currently being performed by the AppHost.", - "kind": "PropertyGetter", - "signature": "operation(): DistributedApplicationOperation", - "parameters": [], - "returnType": "DistributedApplicationOperation", - "targetTypeId": "Aspire.Hosting/Aspire.Hosting.DistributedApplicationExecutionContext", - "expandedTargetTypes": [ - "Aspire.Hosting.DistributedApplicationExecutionContext" - ] - }, - { - "name": "publisherName", - "capabilityId": "Aspire.Hosting/DistributedApplicationExecutionContext.publisherName", - "qualifiedName": "DistributedApplicationExecutionContext.publisherName", - "description": "The name of the publisher that is being used if `Operation` is set to `Publish`.", - "kind": "PropertyGetter", - "signature": "publisherName(): string", + "name": "withoutHttpsCertificate", + "capabilityId": "Aspire.Hosting/withoutHttpsCertificate", + "qualifiedName": "withoutHttpsCertificate", + "description": "Disable HTTPS/TLS server certificate configuration for the resource. No HTTPS/TLS termination configuration will be applied.", + "remarks": "Disable HTTPS certificate configuration for a Redis resource:\n```\nvar redis = builder.AddRedis(\"cache\")\n.WithoutHttpsCertificate();\n```", + "returns": "The resource builder.", + "kind": "Method", + "signature": "withoutHttpsCertificate(): IResourceWithEnvironment", "parameters": [], - "returnType": "string", - "targetTypeId": "Aspire.Hosting/Aspire.Hosting.DistributedApplicationExecutionContext", + "returnType": "IResourceWithEnvironment", + "returnsBuilder": true, + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.IResourceWithEnvironment", "expandedTargetTypes": [ - "Aspire.Hosting.DistributedApplicationExecutionContext" + "Aspire.Hosting.ApplicationModel.ContainerResource", + "Aspire.Hosting.ApplicationModel.ExecutableResource", + "Aspire.Hosting.ApplicationModel.ProjectResource", + "Aspire.Hosting.ApplicationModel.DotnetToolResource", + "Aspire.Hosting.ApplicationModel.CSharpAppResource" ] }, { - "name": "serviceProvider", - "capabilityId": "Aspire.Hosting/DistributedApplicationExecutionContext.serviceProvider", - "qualifiedName": "DistributedApplicationExecutionContext.serviceProvider", - "description": "The `IServiceProvider` for the AppHost.", - "kind": "PropertyGetter", - "signature": "serviceProvider(): IServiceProvider", - "parameters": [], - "returnType": "IServiceProvider", - "targetTypeId": "Aspire.Hosting/Aspire.Hosting.DistributedApplicationExecutionContext", + "name": "withReference", + "capabilityId": "Aspire.Hosting/withReference", + "qualifiedName": "withReference", + "description": "Adds a reference to another resource", + "kind": "Method", + "signature": "withReference(source: EndpointReference|string|uri, connectionName?: string, optional?: boolean, name?: string): IResourceWithEnvironment", + "parameters": [ + { + "name": "source", + "type": "EndpointReference|string|uri" + }, + { + "name": "connectionName", + "type": "string", + "isOptional": true + }, + { + "name": "optional", + "type": "boolean", + "isOptional": true, + "defaultValue": "False" + }, + { + "name": "name", + "type": "string", + "isOptional": true + } + ], + "returnType": "IResourceWithEnvironment", + "returnsBuilder": true, + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.IResourceWithEnvironment", "expandedTargetTypes": [ - "Aspire.Hosting.DistributedApplicationExecutionContext" + "Aspire.Hosting.ApplicationModel.ContainerResource", + "Aspire.Hosting.ApplicationModel.ExecutableResource", + "Aspire.Hosting.ApplicationModel.ProjectResource", + "Aspire.Hosting.ApplicationModel.DotnetToolResource", + "Aspire.Hosting.ApplicationModel.CSharpAppResource" ] }, { - "name": "setPublisherName", - "capabilityId": "Aspire.Hosting/DistributedApplicationExecutionContext.setPublisherName", - "qualifiedName": "DistributedApplicationExecutionContext.setPublisherName", - "description": "The name of the publisher that is being used if `Operation` is set to `Publish`.", - "kind": "PropertySetter", - "signature": "setPublisherName(value: string): DistributedApplicationExecutionContext", + "name": "withReferenceEnvironment", + "capabilityId": "Aspire.Hosting/withReferenceEnvironment", + "qualifiedName": "withReferenceEnvironment", + "description": "Configures how information is injected into environment variables when the resource references other resources.", + "returns": "The resource builder.", + "kind": "Method", + "signature": "withReferenceEnvironment(options: ReferenceEnvironmentInjectionOptions): IResourceWithEnvironment", "parameters": [ { - "name": "value", - "type": "string" + "name": "options", + "type": "ReferenceEnvironmentInjectionOptions", + "description": "Options controlling which reference information is emitted." } ], - "returnType": "DistributedApplicationExecutionContext", - "targetTypeId": "Aspire.Hosting/Aspire.Hosting.DistributedApplicationExecutionContext", + "returnType": "IResourceWithEnvironment", + "returnsBuilder": true, + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.IResourceWithEnvironment", "expandedTargetTypes": [ - "Aspire.Hosting.DistributedApplicationExecutionContext" + "Aspire.Hosting.ApplicationModel.ContainerResource", + "Aspire.Hosting.ApplicationModel.ExecutableResource", + "Aspire.Hosting.ApplicationModel.ProjectResource", + "Aspire.Hosting.ApplicationModel.DotnetToolResource", + "Aspire.Hosting.ApplicationModel.CSharpAppResource" ] } ] }, { - "name": "DistributedApplicationExecutionContextOptions", - "fullName": "Aspire.Hosting.DistributedApplicationExecutionContextOptions", - "kind": "handle", - "description": "Configuration options and references that need to be exposed to the {@ats-ref type:DistributedApplicationExecutionContext}.", - "implementedInterfaces": [], - "baseTypeHierarchy": [], - "capabilities": [] - }, - { - "name": "DistributedApplicationEventSubscription", - "fullName": "Aspire.Hosting.Eventing.DistributedApplicationEventSubscription", - "kind": "handle", - "description": "Represents a subscription to an event that is published during the lifecycle of the AppHost.", - "implementedInterfaces": [], - "baseTypeHierarchy": [], - "capabilities": [] - }, - { - "name": "DistributedApplicationResourceEventSubscription", - "fullName": "Aspire.Hosting.Eventing.DistributedApplicationResourceEventSubscription", - "kind": "handle", - "description": "Represents a subscription to an event that is published during the lifecycle of the AppHost for a specific resource.", - "implementedInterfaces": [], - "baseTypeHierarchy": [ - "Aspire.Hosting.Eventing.DistributedApplicationEventSubscription" - ], - "capabilities": [] - }, - { - "name": "IDistributedApplicationEvent", - "fullName": "Aspire.Hosting.Eventing.IDistributedApplicationEvent", + "name": "IResourceWithParent", + "fullName": "Aspire.Hosting.ApplicationModel.IResourceWithParent", "kind": "handle", "isInterface": true, - "description": "Represents an event that is published during the lifecycle of the AppHost.", + "description": "Represents a resource that has a parent resource.", "implementedInterfaces": [], "baseTypeHierarchy": [], "capabilities": [] }, { - "name": "IDistributedApplicationEventing", - "fullName": "Aspire.Hosting.Eventing.IDistributedApplicationEventing", + "name": "IResourceWithWaitSupport", + "fullName": "Aspire.Hosting.ApplicationModel.IResourceWithWaitSupport", "kind": "handle", "isInterface": true, - "exposeMethods": true, - "description": "Supports publishing and subscribing to events which are executed during the AppHost lifecycle.", + "description": "Represents a resource that can wait for other resources to be running, health, and/or completed.", "implementedInterfaces": [], "baseTypeHierarchy": [], "capabilities": [ { - "name": "unsubscribe", - "capabilityId": "Aspire.Hosting.Eventing/IDistributedApplicationEventing.unsubscribe", - "qualifiedName": "IDistributedApplicationEventing.unsubscribe", - "description": "Unsubscribe from an event.", - "kind": "InstanceMethod", - "signature": "unsubscribe(subscription: DistributedApplicationEventSubscription): void", + "name": "waitFor", + "capabilityId": "Aspire.Hosting/waitFor", + "qualifiedName": "waitFor", + "description": "Waits for another resource to be ready", + "kind": "Method", + "signature": "waitFor(dependency: IResource, waitBehavior?: WaitBehavior): IResourceWithWaitSupport", "parameters": [ { - "name": "subscription", - "type": "DistributedApplicationEventSubscription", - "description": "The specific subscription to unsubscribe." + "name": "dependency", + "type": "IResource" + }, + { + "name": "waitBehavior", + "type": "WaitBehavior", + "isOptional": true, + "isNullable": true } ], - "returnType": "void", - "targetTypeId": "Aspire.Hosting/Aspire.Hosting.Eventing.IDistributedApplicationEventing", + "returnType": "IResourceWithWaitSupport", + "returnsBuilder": true, + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.IResourceWithWaitSupport", "expandedTargetTypes": [ - "Aspire.Hosting.Eventing.IDistributedApplicationEventing" + "Aspire.Hosting.ApplicationModel.ContainerResource", + "Aspire.Hosting.ApplicationModel.ExecutableResource", + "Aspire.Hosting.ApplicationModel.ProjectResource", + "Aspire.Hosting.ApplicationModel.DotnetToolResource", + "Aspire.Hosting.ApplicationModel.CSharpAppResource" ] - } - ] - }, - { - "name": "IDistributedApplicationResourceEvent", - "fullName": "Aspire.Hosting.Eventing.IDistributedApplicationResourceEvent", - "kind": "handle", - "isInterface": true, - "description": "Represents an event that is published during the lifecycle of the AppHost for a specific resource.", - "implementedInterfaces": [], - "baseTypeHierarchy": [], - "capabilities": [] - }, - { - "name": "ExternalServiceResource", - "fullName": "Aspire.Hosting.ExternalServiceResource", - "kind": "handle", - "implementedInterfaces": [ - "Aspire.Hosting.ApplicationModel.IResource" - ], - "baseTypeHierarchy": [ - "Aspire.Hosting.ApplicationModel.Resource" - ], - "capabilities": [ + }, { - "name": "withHttpHealthCheck", - "capabilityId": "Aspire.Hosting/withExternalServiceHttpHealthCheck", - "qualifiedName": "withHttpHealthCheck", - "description": "Adds an HTTP health check to the external service for polyglot AppHosts.", + "name": "waitForCompletion", + "capabilityId": "Aspire.Hosting/waitForResourceCompletion", + "qualifiedName": "waitForCompletion", + "description": "Waits for the dependency resource to enter the Exited or Finished state before starting the resource.", + "returns": "The resource builder.", "kind": "Method", - "signature": "withHttpHealthCheck(path?: string, statusCode?: number, endpointName?: string): ExternalServiceResource", + "signature": "waitForCompletion(dependency: IResource, exitCode?: number): IResourceWithWaitSupport", "parameters": [ { - "name": "path", - "type": "string", - "isOptional": true + "name": "dependency", + "type": "IResource", + "description": "The resource builder for the dependency resource." }, { - "name": "statusCode", + "name": "exitCode", "type": "number", "isOptional": true, - "isNullable": true + "defaultValue": "0", + "description": "The exit code which is interpreted as successful." + } + ], + "returnType": "IResourceWithWaitSupport", + "returnsBuilder": true, + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.IResourceWithWaitSupport", + "expandedTargetTypes": [ + "Aspire.Hosting.ApplicationModel.ContainerResource", + "Aspire.Hosting.ApplicationModel.ExecutableResource", + "Aspire.Hosting.ApplicationModel.ProjectResource", + "Aspire.Hosting.ApplicationModel.DotnetToolResource", + "Aspire.Hosting.ApplicationModel.CSharpAppResource" + ] + }, + { + "name": "waitForStart", + "capabilityId": "Aspire.Hosting/waitForStart", + "qualifiedName": "waitForStart", + "description": "Waits for another resource to start", + "kind": "Method", + "signature": "waitForStart(dependency: IResource, waitBehavior?: WaitBehavior): IResourceWithWaitSupport", + "parameters": [ + { + "name": "dependency", + "type": "IResource" }, { - "name": "endpointName", - "type": "string", - "isOptional": true + "name": "waitBehavior", + "type": "WaitBehavior", + "isOptional": true, + "isNullable": true } ], - "returnType": "ExternalServiceResource", + "returnType": "IResourceWithWaitSupport", "returnsBuilder": true, - "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ExternalServiceResource", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.IResourceWithWaitSupport", "expandedTargetTypes": [ - "Aspire.Hosting.ExternalServiceResource" + "Aspire.Hosting.ApplicationModel.ContainerResource", + "Aspire.Hosting.ApplicationModel.ExecutableResource", + "Aspire.Hosting.ApplicationModel.ProjectResource", + "Aspire.Hosting.ApplicationModel.DotnetToolResource", + "Aspire.Hosting.ApplicationModel.CSharpAppResource" ] } ] }, { - "name": "IDistributedApplicationBuilder", - "fullName": "Aspire.Hosting.IDistributedApplicationBuilder", + "name": "LogFacade", + "fullName": "Aspire.Hosting.ApplicationModel.LogFacade", "kind": "handle", - "isInterface": true, - "description": "A builder for creating instances of {@ats-ref type:DistributedApplication}.", + "description": "Provides a narrow logging surface for polyglot callback contexts.", "implementedInterfaces": [], "baseTypeHierarchy": [], "capabilities": [ { - "name": "addConnectionString", - "capabilityId": "Aspire.Hosting/addConnectionString", - "qualifiedName": "addConnectionString", - "description": "Adds a connection string resource", - "kind": "Method", - "signature": "addConnectionString(name: string, environmentVariableNameOrExpression?: ReferenceExpression): IResourceWithConnectionString", + "name": "debug", + "capabilityId": "Aspire.Hosting.ApplicationModel/debug", + "qualifiedName": "LogFacade.debug", + "description": "Writes a debug log message.", + "kind": "InstanceMethod", + "signature": "debug(message: string): void", "parameters": [ { - "name": "name", - "type": "string" - }, - { - "name": "environmentVariableNameOrExpression", - "type": "ReferenceExpression", - "isOptional": true + "name": "message", + "type": "string", + "description": "The message to write." } ], - "returnType": "IResourceWithConnectionString", - "returnsBuilder": true, - "targetTypeId": "Aspire.Hosting/Aspire.Hosting.IDistributedApplicationBuilder", + "returnType": "void", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.LogFacade", "expandedTargetTypes": [ - "Aspire.Hosting.IDistributedApplicationBuilder" + "Aspire.Hosting.ApplicationModel.LogFacade" ] }, { - "name": "addContainer", - "capabilityId": "Aspire.Hosting/addContainer", - "qualifiedName": "addContainer", - "description": "Adds a container resource to the application.", - "returns": "The resource builder.", - "kind": "Method", - "signature": "addContainer(name: string, image: AddContainerOptions): ContainerResource", + "name": "error", + "capabilityId": "Aspire.Hosting.ApplicationModel/error", + "qualifiedName": "LogFacade.error", + "description": "Writes an error log message.", + "kind": "InstanceMethod", + "signature": "error(message: string): void", "parameters": [ { - "name": "name", + "name": "message", "type": "string", - "description": "The name of the resource." - }, - { - "name": "image", - "type": "AddContainerOptions", - "description": "The image name or image options for the container." + "description": "The message to write." } ], - "returnType": "ContainerResource", - "returnsBuilder": true, - "targetTypeId": "Aspire.Hosting/Aspire.Hosting.IDistributedApplicationBuilder", + "returnType": "void", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.LogFacade", "expandedTargetTypes": [ - "Aspire.Hosting.IDistributedApplicationBuilder" + "Aspire.Hosting.ApplicationModel.LogFacade" ] }, { - "name": "addContainerRegistry", - "capabilityId": "Aspire.Hosting/addContainerRegistry", - "qualifiedName": "addContainerRegistry", - "description": "Adds a container registry resource", - "kind": "Method", - "signature": "addContainerRegistry(name: string, endpoint: ParameterResource, repository?: ParameterResource): ContainerRegistryResource", + "name": "info", + "capabilityId": "Aspire.Hosting.ApplicationModel/info", + "qualifiedName": "LogFacade.info", + "description": "Writes an informational log message.", + "kind": "InstanceMethod", + "signature": "info(message: string): void", "parameters": [ { - "name": "name", - "type": "string" - }, - { - "name": "endpoint", - "type": "ParameterResource" - }, - { - "name": "repository", - "type": "ParameterResource", - "isOptional": true + "name": "message", + "type": "string", + "description": "The message to write." } ], - "returnType": "ContainerRegistryResource", - "returnsBuilder": true, - "targetTypeId": "Aspire.Hosting/Aspire.Hosting.IDistributedApplicationBuilder", + "returnType": "void", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.LogFacade", "expandedTargetTypes": [ - "Aspire.Hosting.IDistributedApplicationBuilder" + "Aspire.Hosting.ApplicationModel.LogFacade" ] }, { - "name": "addCSharpApp", - "capabilityId": "Aspire.Hosting/addCSharpApp", - "qualifiedName": "addCSharpApp", - "description": "Adds a C# application resource", - "kind": "Method", - "signature": "addCSharpApp(name: string, path: string, options?: ProjectResourceOptions): CSharpAppResource", + "name": "warning", + "capabilityId": "Aspire.Hosting.ApplicationModel/warning", + "qualifiedName": "LogFacade.warning", + "description": "Writes a warning log message.", + "kind": "InstanceMethod", + "signature": "warning(message: string): void", "parameters": [ { - "name": "name", - "type": "string" - }, - { - "name": "path", - "type": "string" - }, - { - "name": "options", - "type": "ProjectResourceOptions", - "isOptional": true + "name": "message", + "type": "string", + "description": "The message to write." } ], - "returnType": "CSharpAppResource", - "returnsBuilder": true, - "targetTypeId": "Aspire.Hosting/Aspire.Hosting.IDistributedApplicationBuilder", + "returnType": "void", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.LogFacade", "expandedTargetTypes": [ - "Aspire.Hosting.IDistributedApplicationBuilder" + "Aspire.Hosting.ApplicationModel.LogFacade" ] - }, + } + ] + }, + { + "name": "ParameterResource", + "fullName": "Aspire.Hosting.ApplicationModel.ParameterResource", + "kind": "handle", + "description": "Represents a parameter resource.", + "implementedInterfaces": [ + "Aspire.Hosting.ApplicationModel.IExpressionValue", + "Aspire.Hosting.ApplicationModel.IManifestExpressionProvider", + "Aspire.Hosting.ApplicationModel.IResource", + "Aspire.Hosting.ApplicationModel.IValueProvider" + ], + "baseTypeHierarchy": [ + "Aspire.Hosting.ApplicationModel.Resource" + ], + "capabilities": [ { - "name": "addDockerfile", - "capabilityId": "Aspire.Hosting/addDockerfile", - "qualifiedName": "addDockerfile", - "description": "Adds a Dockerfile to the application model that can be treated like a container resource.", - "returns": "The resource builder.", + "name": "withCustomInput", + "capabilityId": "Aspire.Hosting/withCustomInput", + "qualifiedName": "withCustomInput", + "description": "Sets a custom input for the parameter resource from a polyglot AppHost.", + "returns": "Resource builder for the parameter.", "kind": "Method", - "signature": "addDockerfile(name: string, contextPath: string, dockerfilePath?: string, stage?: string): ContainerResource", + "signature": "withCustomInput(options: ParameterCustomInputOptions): ParameterResource", "parameters": [ { - "name": "name", - "type": "string", - "description": "The name of the resource." - }, - { - "name": "contextPath", - "type": "string", - "description": "Path to be used as the context for the container image build." - }, - { - "name": "dockerfilePath", - "type": "string", - "isOptional": true, - "description": "Path to the Dockerfile relative to the `contextPath`. Defaults to \"Dockerfile\" if not specified." - }, - { - "name": "stage", - "type": "string", - "isOptional": true, - "description": "The stage representing the image to be published in a multi-stage Dockerfile." + "name": "options", + "type": "ParameterCustomInputOptions", + "description": "Options used to customize the input for the parameter." } ], - "returnType": "ContainerResource", + "returnType": "ParameterResource", "returnsBuilder": true, - "targetTypeId": "Aspire.Hosting/Aspire.Hosting.IDistributedApplicationBuilder", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.ParameterResource", "expandedTargetTypes": [ - "Aspire.Hosting.IDistributedApplicationBuilder" + "Aspire.Hosting.ApplicationModel.ParameterResource" ] }, { - "name": "addDockerfileBuilder", - "capabilityId": "Aspire.Hosting/addDockerfileBuilder", - "qualifiedName": "addDockerfileBuilder", - "description": "Adds a container resource built from a programmatically generated Dockerfile", - "remarks": "This method provides a programmatic way to build Dockerfiles using the `DockerfileBuilder` API\ninstead of string manipulation.\nThe `contextPath` is relative to the AppHost directory unless it is fully qualified.\nCreates a container with a programmatically built Dockerfile:\n```\nvar builder = DistributedApplication.CreateBuilder(args);\nbuilder.AddDockerfileBuilder(\"mycontainer\", \"path/to/context\", context =>\n{\ncontext.Builder.From(\"alpine:latest\")\n.WorkDir(\"/app\")\n.Copy(\".\", \".\")\n.Cmd([\"./myapp\"]);\nreturn Task.CompletedTask;\n});\nbuilder.Build().Run();\n```", - "returns": "The resource builder.", + "name": "withDescription", + "capabilityId": "Aspire.Hosting/withDescription", + "qualifiedName": "withDescription", + "description": "Sets the description of the parameter resource.", + "returns": "Resource builder for the parameter.", "kind": "Method", - "signature": "addDockerfileBuilder(name: string, contextPath: string, callback: (arg: DockerfileBuilderCallbackContext) => Promise, stage?: string): ContainerResource", + "signature": "withDescription(description: string, enableMarkdown?: boolean): ParameterResource", "parameters": [ { - "name": "name", + "name": "description", "type": "string", - "description": "The name of the resource." + "description": "The parameter description." }, { - "name": "contextPath", - "type": "string", - "description": "Path to be used as the context for the container image build." - }, - { - "name": "callback", - "type": "callback", - "isCallback": true, - "callbackSignature": "(arg: DockerfileBuilderCallbackContext) => Promise", - "description": "A callback that uses the `DockerfileBuilder` API to construct the Dockerfile." - }, - { - "name": "stage", - "type": "string", + "name": "enableMarkdown", + "type": "boolean", "isOptional": true, - "description": "The stage representing the image to be published in a multi-stage Dockerfile." + "defaultValue": "False", + "description": "A value indicating whether the description should be rendered as Markdown. `true` allows the description to contain Markdown elements such as links, text decoration and lists." } ], - "returnType": "ContainerResource", + "returnType": "ParameterResource", "returnsBuilder": true, - "targetTypeId": "Aspire.Hosting/Aspire.Hosting.IDistributedApplicationBuilder", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.ParameterResource", "expandedTargetTypes": [ - "Aspire.Hosting.IDistributedApplicationBuilder" + "Aspire.Hosting.ApplicationModel.ParameterResource" ] - }, + } + ] + }, + { + "name": "ProjectResource", + "fullName": "Aspire.Hosting.ApplicationModel.ProjectResource", + "kind": "handle", + "description": "A resource that represents a specified .NET project.", + "implementedInterfaces": [ + "Aspire.Hosting.ApplicationModel.IComputeResource", + "Aspire.Hosting.ApplicationModel.IContainerFilesDestinationResource", + "Aspire.Hosting.ApplicationModel.IResource", + "Aspire.Hosting.ApplicationModel.IResourceWithArgs", + "Aspire.Hosting.ApplicationModel.IResourceWithEndpoints", + "Aspire.Hosting.ApplicationModel.IResourceWithEnvironment", + "Aspire.Hosting.ApplicationModel.IResourceWithProbes", + "Aspire.Hosting.ApplicationModel.IResourceWithWaitSupport", + "Aspire.Hosting.IResourceWithServiceDiscovery" + ], + "baseTypeHierarchy": [ + "Aspire.Hosting.ApplicationModel.Resource" + ], + "capabilities": [ { - "name": "addDockerfileFactory", - "capabilityId": "Aspire.Hosting/addDockerfileFactory", - "qualifiedName": "addDockerfileFactory", - "description": "Adds a Dockerfile to the application model that can be treated like a container resource, with the Dockerfile content generated by an asynchronous factory function.", - "remarks": "The `contextPath` is relative to the AppHost directory unless it is fully qualified.\nThe factory function is invoked once during the build process to generate the Dockerfile content.\nThe output is trusted and not validated.", + "name": "disableForwardedHeaders", + "capabilityId": "Aspire.Hosting/disableForwardedHeaders", + "qualifiedName": "disableForwardedHeaders", + "description": "Configures the project to disable forwarded headers when being published.", "returns": "The resource builder.", "kind": "Method", - "signature": "addDockerfileFactory(name: string, contextPath: string, dockerfileFactory: (arg: DockerfileFactoryContext) => Promise, stage?: string): ContainerResource", - "parameters": [ - { - "name": "name", - "type": "string", - "description": "The name of the resource." - }, - { - "name": "contextPath", - "type": "string", - "description": "Path to be used as the context for the container image build." - }, - { - "name": "dockerfileFactory", - "type": "callback", - "isCallback": true, - "callbackSignature": "(arg: DockerfileFactoryContext) => Promise", - "description": "An asynchronous function that returns the Dockerfile content as a string." - }, - { - "name": "stage", - "type": "string", - "isOptional": true, - "description": "The stage representing the image to be published in a multi-stage Dockerfile." - } - ], - "returnType": "ContainerResource", + "signature": "disableForwardedHeaders(): ProjectResource", + "parameters": [], + "returnType": "ProjectResource", "returnsBuilder": true, - "targetTypeId": "Aspire.Hosting/Aspire.Hosting.IDistributedApplicationBuilder", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.ProjectResource", "expandedTargetTypes": [ - "Aspire.Hosting.IDistributedApplicationBuilder" + "Aspire.Hosting.ApplicationModel.ProjectResource", + "Aspire.Hosting.ApplicationModel.CSharpAppResource" ] }, { - "name": "addDotnetTool", - "capabilityId": "Aspire.Hosting/addDotnetTool", - "qualifiedName": "addDotnetTool", - "description": "Adds a .NET tool resource to the application model.", + "name": "publishAsDockerFile", + "capabilityId": "Aspire.Hosting/publishProjectAsDockerFileWithConfigure", + "qualifiedName": "publishAsDockerFile", + "description": "Publishes a project as a Docker file with optional container configuration", + "remarks": "When the executable resource is converted to a container resource, the arguments to the executable\nare not used. This is because arguments to the project often contain physical paths that are not valid\nin the container. The container can be set up with the correct arguments using the `configure` action.", "returns": "The resource builder.", "kind": "Method", - "signature": "addDotnetTool(name: string, packageId: string): DotnetToolResource", + "signature": "publishAsDockerFile(configure?: (obj: ContainerResource) => Promise): ProjectResource", "parameters": [ { - "name": "name", - "type": "string", - "description": "The name of the resource." - }, - { - "name": "packageId", - "type": "string", - "description": "The package id of the tool." + "name": "configure", + "type": "callback", + "isOptional": true, + "isCallback": true, + "callbackSignature": "(obj: ContainerResource) => Promise", + "description": "Optional action to configure the container resource" } ], - "returnType": "DotnetToolResource", + "returnType": "ProjectResource", "returnsBuilder": true, - "targetTypeId": "Aspire.Hosting/Aspire.Hosting.IDistributedApplicationBuilder", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.ProjectResource", "expandedTargetTypes": [ - "Aspire.Hosting.IDistributedApplicationBuilder" + "Aspire.Hosting.ApplicationModel.ProjectResource", + "Aspire.Hosting.ApplicationModel.CSharpAppResource" ] }, { - "name": "addEventingSubscriber", - "capabilityId": "Aspire.Hosting/addEventingSubscriber", - "qualifiedName": "addEventingSubscriber", - "description": "Adds an ATS-friendly eventing subscriber callback to the distributed-application builder.", + "name": "withEndpointsInEnvironment", + "capabilityId": "Aspire.Hosting/withEndpointsInEnvironment", + "qualifiedName": "withEndpointsInEnvironment", + "description": "Includes only the specified project endpoint names in environment-variable injection.", + "returns": "The same project resource builder handle for chaining.", "kind": "Method", - "signature": "addEventingSubscriber(subscribe: (arg: EventingSubscriberRegistrationContext) => Promise): void", + "signature": "withEndpointsInEnvironment(endpointNames: string[]): ProjectResource", "parameters": [ { - "name": "subscribe", - "type": "callback", - "isCallback": true, - "callbackSignature": "(arg: EventingSubscriberRegistrationContext) => Promise", - "description": "The callback that registers the event subscriptions." + "name": "endpointNames", + "type": "string[]", + "description": "The endpoint names to include in environment variables." } ], - "returnType": "void", - "targetTypeId": "Aspire.Hosting/Aspire.Hosting.IDistributedApplicationBuilder", + "returnType": "ProjectResource", + "returnsBuilder": true, + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.ProjectResource", "expandedTargetTypes": [ - "Aspire.Hosting.IDistributedApplicationBuilder" + "Aspire.Hosting.ApplicationModel.ProjectResource", + "Aspire.Hosting.ApplicationModel.CSharpAppResource" ] }, { - "name": "addExecutable", - "capabilityId": "Aspire.Hosting/addExecutable", - "qualifiedName": "addExecutable", - "description": "Adds an executable resource to the application model.", - "remarks": "You can run any executable command using its full path.\nAs a security feature, Aspire doesn't run executable unless the command is located in a path listed in the PATH environment variable.\nTo run an executable file that's in the current directory, specify the full path or use the relative path `./` to represent the current directory.", + "name": "withReplicas", + "capabilityId": "Aspire.Hosting/withReplicas", + "qualifiedName": "withReplicas", + "description": "Configures how many replicas of the project should be created for the project.", "returns": "The resource builder.", "kind": "Method", - "signature": "addExecutable(name: string, command: string, workingDirectory: string, args: string[]): ExecutableResource", + "signature": "withReplicas(replicas: number): ProjectResource", "parameters": [ { - "name": "name", - "type": "string", - "description": "The name of the resource." - }, - { - "name": "command", - "type": "string", - "description": "The executable path. This can be a fully qualified path or a executable to run from the shell/command line." - }, - { - "name": "workingDirectory", - "type": "string", - "description": "The working directory of the executable." - }, - { - "name": "args", - "type": "string[]", - "description": "The arguments to the executable." + "name": "replicas", + "type": "number", + "description": "The number of replicas." } ], - "returnType": "ExecutableResource", + "returnType": "ProjectResource", "returnsBuilder": true, - "targetTypeId": "Aspire.Hosting/Aspire.Hosting.IDistributedApplicationBuilder", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.ProjectResource", "expandedTargetTypes": [ - "Aspire.Hosting.IDistributedApplicationBuilder" + "Aspire.Hosting.ApplicationModel.ProjectResource", + "Aspire.Hosting.ApplicationModel.CSharpAppResource" ] - }, + } + ] + }, + { + "name": "ReferenceExpression", + "fullName": "Aspire.Hosting.ApplicationModel.ReferenceExpression", + "kind": "handle", + "description": "Represents an expression that might be made up of multiple resource properties. For example, a connection string might be made up of a host, port, and password from different endpoints.", + "remarks": "A `ReferenceExpression` operates in one of two modes:\n-\n-", + "implementedInterfaces": [ + "Aspire.Hosting.ApplicationModel.IExpressionValue", + "Aspire.Hosting.ApplicationModel.IManifestExpressionProvider", + "Aspire.Hosting.ApplicationModel.IValueProvider", + "Aspire.Hosting.ApplicationModel.IValueWithReferences" + ], + "baseTypeHierarchy": [], + "capabilities": [ { - "name": "addExternalService", - "capabilityId": "Aspire.Hosting/addExternalService", - "qualifiedName": "addExternalService", - "description": "Adds an external service resource", - "kind": "Method", - "signature": "addExternalService(name: string, url: ParameterResource): ExternalServiceResource", + "name": "getValueAsync", + "capabilityId": "Aspire.Hosting.ApplicationModel/getValueAsync", + "qualifiedName": "ReferenceExpression.getValueAsync", + "description": "Gets the value of the expression. The final string value after evaluating the format string and its parameters.", + "kind": "InstanceMethod", + "signature": "getValueAsync(cancellationToken: cancellationToken): string", "parameters": [ { - "name": "name", - "type": "string" - }, - { - "name": "url", - "type": "ParameterResource" + "name": "cancellationToken", + "type": "cancellationToken", + "description": "A `CancellationToken`." } ], - "returnType": "ExternalServiceResource", - "returnsBuilder": true, - "targetTypeId": "Aspire.Hosting/Aspire.Hosting.IDistributedApplicationBuilder", + "returnType": "string", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.ReferenceExpression", "expandedTargetTypes": [ - "Aspire.Hosting.IDistributedApplicationBuilder" + "Aspire.Hosting.ApplicationModel.ReferenceExpression" ] - }, + } + ] + }, + { + "name": "ReferenceExpressionBuilder", + "fullName": "Aspire.Hosting.ApplicationModel.ReferenceExpressionBuilder", + "kind": "handle", + "exposeProperties": true, + "description": "A builder for creating {@ats-ref type:ReferenceExpression} instances.", + "implementedInterfaces": [], + "baseTypeHierarchy": [], + "capabilities": [ { - "name": "addParameter", - "capabilityId": "Aspire.Hosting/addParameter", - "qualifiedName": "addParameter", - "description": "Adds a parameter resource", - "kind": "Method", - "signature": "addParameter(name: string, value?: string, publishValueAsDefault?: boolean, secret?: boolean): ParameterResource", + "name": "appendFormatted", + "capabilityId": "Aspire.Hosting.ApplicationModel/appendFormatted", + "qualifiedName": "ReferenceExpressionBuilder.appendFormatted", + "description": "Appends a formatted value to the expression.", + "kind": "InstanceMethod", + "signature": "appendFormatted(value: string, format?: string): void", "parameters": [ - { - "name": "name", - "type": "string" - }, { "name": "value", "type": "string", - "isOptional": true + "description": "The formatted string to be appended to the interpolated string." }, { - "name": "publishValueAsDefault", - "type": "boolean", - "isOptional": true, - "defaultValue": "False" - }, - { - "name": "secret", - "type": "boolean", + "name": "format", + "type": "string", "isOptional": true, - "defaultValue": "False" + "description": "The format to be applied to the value. e.g., \"uri\"" } ], - "returnType": "ParameterResource", - "returnsBuilder": true, - "targetTypeId": "Aspire.Hosting/Aspire.Hosting.IDistributedApplicationBuilder", + "returnType": "void", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.ReferenceExpressionBuilder", "expandedTargetTypes": [ - "Aspire.Hosting.IDistributedApplicationBuilder" + "Aspire.Hosting.ApplicationModel.ReferenceExpressionBuilder" ] }, { - "name": "addParameterFromConfiguration", - "capabilityId": "Aspire.Hosting/addParameterFromConfiguration", - "qualifiedName": "addParameterFromConfiguration", - "description": "Adds a parameter resource to the application, with a value coming from configuration.", - "returns": "Resource builder for the parameter.", - "kind": "Method", - "signature": "addParameterFromConfiguration(name: string, configurationKey: string, secret?: boolean): ParameterResource", + "name": "appendLiteral", + "capabilityId": "Aspire.Hosting.ApplicationModel/appendLiteral", + "qualifiedName": "ReferenceExpressionBuilder.appendLiteral", + "description": "Appends a literal value to the expression.", + "kind": "InstanceMethod", + "signature": "appendLiteral(value: string): void", "parameters": [ { - "name": "name", - "type": "string", - "description": "Name of parameter resource" - }, - { - "name": "configurationKey", + "name": "value", "type": "string", - "description": "Configuration key used to get the value of the parameter" - }, - { - "name": "secret", - "type": "boolean", - "isOptional": true, - "defaultValue": "False", - "description": "Optional flag indicating whether the parameter should be regarded as secret." + "description": "The literal string value to be appended to the interpolated string." } ], - "returnType": "ParameterResource", - "returnsBuilder": true, - "targetTypeId": "Aspire.Hosting/Aspire.Hosting.IDistributedApplicationBuilder", + "returnType": "void", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.ReferenceExpressionBuilder", "expandedTargetTypes": [ - "Aspire.Hosting.IDistributedApplicationBuilder" + "Aspire.Hosting.ApplicationModel.ReferenceExpressionBuilder" ] }, { - "name": "addParameterWithGeneratedValue", - "capabilityId": "Aspire.Hosting/addParameterWithGeneratedValue", - "qualifiedName": "addParameterWithGeneratedValue", - "description": "Adds a parameter with a generated default value", - "kind": "Method", - "signature": "addParameterWithGeneratedValue(name: string, value: GenerateParameterDefault, secret?: boolean, persist?: boolean): ParameterResource", + "name": "appendValueProvider", + "capabilityId": "Aspire.Hosting.ApplicationModel/appendValueProvider", + "qualifiedName": "ReferenceExpressionBuilder.appendValueProvider", + "description": "Appends a value provider to the reference expression", + "kind": "InstanceMethod", + "signature": "appendValueProvider(valueProvider: any, format?: string): void", "parameters": [ { - "name": "name", - "type": "string" - }, - { - "name": "value", - "type": "GenerateParameterDefault" - }, - { - "name": "secret", - "type": "boolean", - "isOptional": true, - "defaultValue": "False" + "name": "valueProvider", + "type": "any", + "description": "The value provider to append." }, { - "name": "persist", - "type": "boolean", + "name": "format", + "type": "string", "isOptional": true, - "defaultValue": "False" + "description": "Optional format specifier." } ], - "returnType": "ParameterResource", - "returnsBuilder": true, - "targetTypeId": "Aspire.Hosting/Aspire.Hosting.IDistributedApplicationBuilder", + "returnType": "void", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.ReferenceExpressionBuilder", "expandedTargetTypes": [ - "Aspire.Hosting.IDistributedApplicationBuilder" + "Aspire.Hosting.ApplicationModel.ReferenceExpressionBuilder" ] }, { - "name": "addProject", - "capabilityId": "Aspire.Hosting/addProject", - "qualifiedName": "addProject", - "description": "Adds a .NET project resource", - "kind": "Method", - "signature": "addProject(name: string, projectPath: string, launchProfileOrOptions?: ProjectResourceOptions): ProjectResource", - "parameters": [ - { - "name": "name", - "type": "string" - }, - { - "name": "projectPath", - "type": "string" - }, - { - "name": "launchProfileOrOptions", - "type": "ProjectResourceOptions", - "isOptional": true - } - ], - "returnType": "ProjectResource", - "returnsBuilder": true, - "targetTypeId": "Aspire.Hosting/Aspire.Hosting.IDistributedApplicationBuilder", + "name": "build", + "capabilityId": "Aspire.Hosting.ApplicationModel/build", + "qualifiedName": "ReferenceExpressionBuilder.build", + "description": "Builds the reference expression", + "kind": "InstanceMethod", + "signature": "build(): ReferenceExpression", + "parameters": [], + "returnType": "ReferenceExpression", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.ReferenceExpressionBuilder", "expandedTargetTypes": [ - "Aspire.Hosting.IDistributedApplicationBuilder" + "Aspire.Hosting.ApplicationModel.ReferenceExpressionBuilder" ] }, { - "name": "getConfiguration", - "capabilityId": "Aspire.Hosting/getConfiguration", - "qualifiedName": "getConfiguration", - "description": "Gets the application configuration.", - "returns": "The configuration handle.", - "kind": "Method", - "signature": "getConfiguration(): IConfiguration", + "name": "isEmpty", + "capabilityId": "Aspire.Hosting.ApplicationModel/ReferenceExpressionBuilder.isEmpty", + "qualifiedName": "ReferenceExpressionBuilder.isEmpty", + "description": "Indicates whether the expression is empty.", + "kind": "PropertyGetter", + "signature": "isEmpty(): boolean", "parameters": [], - "returnType": "IConfiguration", - "targetTypeId": "Aspire.Hosting/Aspire.Hosting.IDistributedApplicationBuilder", + "returnType": "boolean", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.ReferenceExpressionBuilder", "expandedTargetTypes": [ - "Aspire.Hosting.IDistributedApplicationBuilder" + "Aspire.Hosting.ApplicationModel.ReferenceExpressionBuilder" ] - }, + } + ] + }, + { + "name": "RequiredCommandValidationContext", + "fullName": "Aspire.Hosting.ApplicationModel.RequiredCommandValidationContext", + "kind": "handle", + "exposeProperties": true, + "exposeMethods": true, + "description": "Provides context for validating a required command.", + "implementedInterfaces": [], + "baseTypeHierarchy": [], + "capabilities": [ { - "name": "appHostDirectory", - "capabilityId": "Aspire.Hosting/IDistributedApplicationBuilder.appHostDirectory", - "qualifiedName": "IDistributedApplicationBuilder.appHostDirectory", - "description": "Directory of the project where the AppHost is located. Defaults to the content root if there's no project.", + "name": "cancellationToken", + "capabilityId": "Aspire.Hosting.ApplicationModel/RequiredCommandValidationContext.cancellationToken", + "qualifiedName": "RequiredCommandValidationContext.cancellationToken", + "description": "Gets a cancellation token that can be used to cancel the validation.", "kind": "PropertyGetter", - "signature": "appHostDirectory(): string", + "signature": "cancellationToken(): cancellationToken", "parameters": [], - "returnType": "string", - "targetTypeId": "Aspire.Hosting/Aspire.Hosting.IDistributedApplicationBuilder", + "returnType": "cancellationToken", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.RequiredCommandValidationContext", "expandedTargetTypes": [ - "Aspire.Hosting.IDistributedApplicationBuilder" + "Aspire.Hosting.ApplicationModel.RequiredCommandValidationContext" ] }, { - "name": "build", - "capabilityId": "Aspire.Hosting/build", - "qualifiedName": "IDistributedApplicationBuilder.build", - "description": "Builds the distributed application", - "remarks": "Callers of the `Build` method should only call it once. are responsible for the lifecycle of the\n`DistributedApplication` instance that is returned. Note that the `DistributedApplication`\ntype implements `IDisposable` and should be disposed of when it is no longer needed. Note that in\nmany templates and samples Dispose is omitted for brevity because in those cases the instance is destroyed\nwhen the process exists.", - "returns": "A new `DistributedApplication` instance.", + "name": "failure", + "capabilityId": "Aspire.Hosting.ApplicationModel/RequiredCommandValidationContext.failure", + "qualifiedName": "RequiredCommandValidationContext.failure", + "description": "Creates a failed validation result with the specified message.", + "returns": "A `RequiredCommandValidationResult` indicating the command is invalid.", "kind": "InstanceMethod", - "signature": "build(): DistributedApplication", - "parameters": [], - "returnType": "DistributedApplication", - "targetTypeId": "Aspire.Hosting/Aspire.Hosting.IDistributedApplicationBuilder", + "signature": "failure(validationMessage: string): RequiredCommandValidationResult", + "parameters": [ + { + "name": "validationMessage", + "type": "string", + "description": "A message describing why validation failed." + } + ], + "returnType": "RequiredCommandValidationResult", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.RequiredCommandValidationContext", "expandedTargetTypes": [ - "Aspire.Hosting.IDistributedApplicationBuilder" + "Aspire.Hosting.ApplicationModel.RequiredCommandValidationContext" ] }, { - "name": "environment", - "capabilityId": "Aspire.Hosting/IDistributedApplicationBuilder.environment", - "qualifiedName": "IDistributedApplicationBuilder.environment", - "description": "Gets the Environment property", + "name": "resolvedPath", + "capabilityId": "Aspire.Hosting.ApplicationModel/RequiredCommandValidationContext.resolvedPath", + "qualifiedName": "RequiredCommandValidationContext.resolvedPath", + "description": "Gets the resolved full path to the command executable.", "kind": "PropertyGetter", - "signature": "environment(): IHostEnvironment", + "signature": "resolvedPath(): string", "parameters": [], - "returnType": "IHostEnvironment", - "targetTypeId": "Aspire.Hosting/Aspire.Hosting.IDistributedApplicationBuilder", + "returnType": "string", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.RequiredCommandValidationContext", "expandedTargetTypes": [ - "Aspire.Hosting.IDistributedApplicationBuilder" + "Aspire.Hosting.ApplicationModel.RequiredCommandValidationContext" ] }, { - "name": "eventing", - "capabilityId": "Aspire.Hosting/IDistributedApplicationBuilder.eventing", - "qualifiedName": "IDistributedApplicationBuilder.eventing", - "description": "Eventing infrastructure for AppHost lifecycle.", + "name": "services", + "capabilityId": "Aspire.Hosting.ApplicationModel/RequiredCommandValidationContext.services", + "qualifiedName": "RequiredCommandValidationContext.services", + "description": "Gets the service provider for accessing application services.", "kind": "PropertyGetter", - "signature": "eventing(): IDistributedApplicationEventing", + "signature": "services(): IServiceProvider", "parameters": [], - "returnType": "IDistributedApplicationEventing", - "targetTypeId": "Aspire.Hosting/Aspire.Hosting.IDistributedApplicationBuilder", + "returnType": "IServiceProvider", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.RequiredCommandValidationContext", "expandedTargetTypes": [ - "Aspire.Hosting.IDistributedApplicationBuilder" + "Aspire.Hosting.ApplicationModel.RequiredCommandValidationContext" ] }, { - "name": "executionContext", - "capabilityId": "Aspire.Hosting/IDistributedApplicationBuilder.executionContext", - "qualifiedName": "IDistributedApplicationBuilder.executionContext", - "description": "Execution context for this invocation of the AppHost.", - "remarks": "Use this property to determine whether the AppHost is running locally or publishing\ndeployment artifacts, and adjust the application model accordingly.", - "kind": "PropertyGetter", - "signature": "executionContext(): DistributedApplicationExecutionContext", + "name": "success", + "capabilityId": "Aspire.Hosting.ApplicationModel/RequiredCommandValidationContext.success", + "qualifiedName": "RequiredCommandValidationContext.success", + "description": "Creates a successful validation result.", + "returns": "A `RequiredCommandValidationResult` indicating the command is valid.", + "kind": "InstanceMethod", + "signature": "success(): RequiredCommandValidationResult", "parameters": [], - "returnType": "DistributedApplicationExecutionContext", - "targetTypeId": "Aspire.Hosting/Aspire.Hosting.IDistributedApplicationBuilder", + "returnType": "RequiredCommandValidationResult", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.RequiredCommandValidationContext", "expandedTargetTypes": [ - "Aspire.Hosting.IDistributedApplicationBuilder" + "Aspire.Hosting.ApplicationModel.RequiredCommandValidationContext" ] - }, + } + ] + }, + { + "name": "RequiredCommandValidationResult", + "fullName": "Aspire.Hosting.ApplicationModel.RequiredCommandValidationResult", + "kind": "handle", + "exposeProperties": true, + "description": "Represents the result of validating a required command.", + "implementedInterfaces": [], + "baseTypeHierarchy": [], + "capabilities": [ { - "name": "pipeline", - "capabilityId": "Aspire.Hosting/IDistributedApplicationBuilder.pipeline", - "qualifiedName": "IDistributedApplicationBuilder.pipeline", - "description": "Gets the deployment pipeline for this distributed application.", - "remarks": "The pipeline allows adding custom deployment steps that execute during the deploy process.\nSteps can declare dependencies on other steps to control execution order.", + "name": "isValid", + "capabilityId": "Aspire.Hosting.ApplicationModel/RequiredCommandValidationResult.isValid", + "qualifiedName": "RequiredCommandValidationResult.isValid", + "description": "Gets a value indicating whether the command validation succeeded.", "kind": "PropertyGetter", - "signature": "pipeline(): IDistributedApplicationPipeline", + "signature": "isValid(): boolean", "parameters": [], - "returnType": "IDistributedApplicationPipeline", - "targetTypeId": "Aspire.Hosting/Aspire.Hosting.IDistributedApplicationBuilder", + "returnType": "boolean", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.RequiredCommandValidationResult", "expandedTargetTypes": [ - "Aspire.Hosting.IDistributedApplicationBuilder" + "Aspire.Hosting.ApplicationModel.RequiredCommandValidationResult" ] }, { - "name": "userSecretsManager", - "capabilityId": "Aspire.Hosting/IDistributedApplicationBuilder.userSecretsManager", - "qualifiedName": "IDistributedApplicationBuilder.userSecretsManager", - "description": "Gets the service for managing user secrets.", - "remarks": "The `UserSecretsManager` provides a centralized way to manage user secrets\nused by Aspire, enabling testability and consistent secret management.", + "name": "validationMessage", + "capabilityId": "Aspire.Hosting.ApplicationModel/RequiredCommandValidationResult.validationMessage", + "qualifiedName": "RequiredCommandValidationResult.validationMessage", + "description": "Gets an optional validation message describing why validation failed.", "kind": "PropertyGetter", - "signature": "userSecretsManager(): IUserSecretsManager", + "signature": "validationMessage(): string", "parameters": [], - "returnType": "IUserSecretsManager", - "targetTypeId": "Aspire.Hosting/Aspire.Hosting.IDistributedApplicationBuilder", + "returnType": "string", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.RequiredCommandValidationResult", "expandedTargetTypes": [ - "Aspire.Hosting.IDistributedApplicationBuilder" + "Aspire.Hosting.ApplicationModel.RequiredCommandValidationResult" ] - }, - { - "name": "subscribeAfterPublish", - "capabilityId": "Aspire.Hosting/subscribeAfterPublish", - "qualifiedName": "subscribeAfterPublish", - "description": "Subscribes to the AfterPublish event, which fires after the application is published.", - "remarks": "This event provides access to the service provider and distributed application model,\nallowing you to inspect the model after publish pipeline steps complete.", - "returns": "A subscription handle that can be used to unsubscribe.", + } + ] + }, + { + "name": "ResourceCommandService", + "fullName": "Aspire.Hosting.ApplicationModel.ResourceCommandService", + "kind": "handle", + "description": "A service to execute resource commands.", + "implementedInterfaces": [], + "baseTypeHierarchy": [], + "capabilities": [ + { + "name": "executeCommandAsync", + "capabilityId": "Aspire.Hosting/executeResourceCommand", + "qualifiedName": "executeCommandAsync", + "description": "Executes a command for the specified resource.", + "returns": "The command execution result.", "kind": "Method", - "signature": "subscribeAfterPublish(callback: (arg: AfterPublishEvent) => Promise): DistributedApplicationEventSubscription", + "signature": "executeCommandAsync(resource: IResource, commandName: string, arguments?: Dict, cancellationToken?: cancellationToken): ExecuteCommandResult", "parameters": [ { - "name": "callback", - "type": "callback", - "isCallback": true, - "callbackSignature": "(arg: AfterPublishEvent) => Promise", - "description": "A callback that receives the exported event when the event fires." + "name": "resource", + "type": "IResource", + "description": "The resource id or resource handle. A resource id can either exactly match the unique id of the resource or the displayed resource name if the resource name doesn't have duplicates." + }, + { + "name": "commandName", + "type": "string", + "description": "The command name." + }, + { + "name": "arguments", + "type": "Dict", + "isOptional": true, + "description": "The optional invocation arguments supplied to the command callback." + }, + { + "name": "cancellationToken", + "type": "cancellationToken", + "isOptional": true, + "description": "The cancellation token." } ], - "returnType": "DistributedApplicationEventSubscription", - "targetTypeId": "Aspire.Hosting/Aspire.Hosting.IDistributedApplicationBuilder", + "returnType": "ExecuteCommandResult", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.ResourceCommandService", "expandedTargetTypes": [ - "Aspire.Hosting.IDistributedApplicationBuilder" + "Aspire.Hosting.ApplicationModel.ResourceCommandService" ] - }, + } + ] + }, + { + "name": "ResourceEndpointsAllocatedEvent", + "fullName": "Aspire.Hosting.ApplicationModel.ResourceEndpointsAllocatedEvent", + "kind": "handle", + "exposeProperties": true, + "description": "This event is raised by orchestrators to signal to resources that their endpoints have been allocated.", + "remarks": "Any resources that customize their URLs via a `ResourceUrlsCallbackAnnotation` will have their callbacks invoked during this event.", + "implementedInterfaces": [ + "Aspire.Hosting.Eventing.IDistributedApplicationEvent", + "Aspire.Hosting.Eventing.IDistributedApplicationResourceEvent" + ], + "baseTypeHierarchy": [], + "capabilities": [ { - "name": "subscribeAfterResourcesCreated", - "capabilityId": "Aspire.Hosting/subscribeAfterResourcesCreated", - "qualifiedName": "subscribeAfterResourcesCreated", - "description": "Subscribes to the AfterResourcesCreated event, which fires after all resources are created.", - "remarks": "At this point, all resources have been instantiated but may not yet be running.\nThis is useful for performing cross-resource configuration.", - "returns": "A subscription handle that can be used to unsubscribe.", - "kind": "Method", - "signature": "subscribeAfterResourcesCreated(callback: (arg: AfterResourcesCreatedEvent) => Promise): DistributedApplicationEventSubscription", - "parameters": [ - { - "name": "callback", - "type": "callback", - "isCallback": true, - "callbackSignature": "(arg: AfterResourcesCreatedEvent) => Promise", - "description": "A callback that receives the exported event when the event fires." - } - ], - "returnType": "DistributedApplicationEventSubscription", - "targetTypeId": "Aspire.Hosting/Aspire.Hosting.IDistributedApplicationBuilder", + "name": "resource", + "capabilityId": "Aspire.Hosting.ApplicationModel/ResourceEndpointsAllocatedEvent.resource", + "qualifiedName": "ResourceEndpointsAllocatedEvent.resource", + "description": "Gets the Resource property", + "kind": "PropertyGetter", + "signature": "resource(): IResource", + "parameters": [], + "returnType": "IResource", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.ResourceEndpointsAllocatedEvent", "expandedTargetTypes": [ - "Aspire.Hosting.IDistributedApplicationBuilder" + "Aspire.Hosting.ApplicationModel.ResourceEndpointsAllocatedEvent" ] }, { - "name": "subscribeBeforePublish", - "capabilityId": "Aspire.Hosting/subscribeBeforePublish", - "qualifiedName": "subscribeBeforePublish", - "description": "Subscribes to the BeforePublish event, which fires before the application is published.", - "remarks": "This event provides access to the service provider and distributed application model,\nallowing you to perform final configuration or validation before publish pipeline steps run.", - "returns": "A subscription handle that can be used to unsubscribe.", - "kind": "Method", - "signature": "subscribeBeforePublish(callback: (arg: BeforePublishEvent) => Promise): DistributedApplicationEventSubscription", - "parameters": [ - { - "name": "callback", - "type": "callback", - "isCallback": true, - "callbackSignature": "(arg: BeforePublishEvent) => Promise", - "description": "A callback that receives the exported event when the event fires." - } - ], - "returnType": "DistributedApplicationEventSubscription", - "targetTypeId": "Aspire.Hosting/Aspire.Hosting.IDistributedApplicationBuilder", + "name": "services", + "capabilityId": "Aspire.Hosting.ApplicationModel/ResourceEndpointsAllocatedEvent.services", + "qualifiedName": "ResourceEndpointsAllocatedEvent.services", + "description": "Gets the Services property", + "kind": "PropertyGetter", + "signature": "services(): IServiceProvider", + "parameters": [], + "returnType": "IServiceProvider", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.ResourceEndpointsAllocatedEvent", "expandedTargetTypes": [ - "Aspire.Hosting.IDistributedApplicationBuilder" + "Aspire.Hosting.ApplicationModel.ResourceEndpointsAllocatedEvent" ] - }, + } + ] + }, + { + "name": "ResourceLoggerService", + "fullName": "Aspire.Hosting.ApplicationModel.ResourceLoggerService", + "kind": "handle", + "description": "A service that provides loggers for resources to write to.", + "implementedInterfaces": [ + "System.IDisposable" + ], + "baseTypeHierarchy": [], + "capabilities": [ { - "name": "subscribeBeforeStart", - "capabilityId": "Aspire.Hosting/subscribeBeforeStart", - "qualifiedName": "subscribeBeforeStart", - "description": "Subscribes to the BeforeStart event, which fires before the application starts.", - "remarks": "This event provides access to the service provider and distributed application model,\nallowing you to perform final configuration or validation before resources start.", - "returns": "A subscription handle that can be used to unsubscribe.", + "name": "completeLog", + "capabilityId": "Aspire.Hosting/completeLog", + "qualifiedName": "completeLog", + "description": "Completes the log stream for a resource.", "kind": "Method", - "signature": "subscribeBeforeStart(callback: (arg: BeforeStartEvent) => Promise): DistributedApplicationEventSubscription", + "signature": "completeLog(resource: IResource): void", "parameters": [ { - "name": "callback", - "type": "callback", - "isCallback": true, - "callbackSignature": "(arg: BeforeStartEvent) => Promise", - "description": "A callback that receives the exported event when the event fires." + "name": "resource", + "type": "IResource" } ], - "returnType": "DistributedApplicationEventSubscription", - "targetTypeId": "Aspire.Hosting/Aspire.Hosting.IDistributedApplicationBuilder", + "returnType": "void", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.ResourceLoggerService", "expandedTargetTypes": [ - "Aspire.Hosting.IDistributedApplicationBuilder" + "Aspire.Hosting.ApplicationModel.ResourceLoggerService" ] }, { - "name": "tryAddEventingSubscriber", - "capabilityId": "Aspire.Hosting/tryAddEventingSubscriber", - "qualifiedName": "tryAddEventingSubscriber", - "description": "Attempts to add an ATS-friendly eventing subscriber callback to the distributed-application builder.", + "name": "completeLogByName", + "capabilityId": "Aspire.Hosting/completeLogByName", + "qualifiedName": "completeLogByName", + "description": "Completes the log stream by resource name.", "kind": "Method", - "signature": "tryAddEventingSubscriber(subscribe: (arg: EventingSubscriberRegistrationContext) => Promise): void", + "signature": "completeLogByName(resourceName: string): void", "parameters": [ { - "name": "subscribe", - "type": "callback", - "isCallback": true, - "callbackSignature": "(arg: EventingSubscriberRegistrationContext) => Promise", - "description": "The callback that registers the event subscriptions." + "name": "resourceName", + "type": "string" } ], "returnType": "void", - "targetTypeId": "Aspire.Hosting/Aspire.Hosting.IDistributedApplicationBuilder", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.ResourceLoggerService", "expandedTargetTypes": [ - "Aspire.Hosting.IDistributedApplicationBuilder" + "Aspire.Hosting.ApplicationModel.ResourceLoggerService" ] } ] }, { - "name": "InputsDialogValidationContext", - "fullName": "Aspire.Hosting.InputsDialogValidationContext", + "name": "ResourceNotificationService", + "fullName": "Aspire.Hosting.ApplicationModel.ResourceNotificationService", "kind": "handle", - "exposeProperties": true, - "description": "Represents the context for validating inputs in an inputs dialog interaction.", - "implementedInterfaces": [], + "description": "A service that allows publishing and subscribing to changes in the state of a resource.", + "implementedInterfaces": [ + "System.IDisposable" + ], "baseTypeHierarchy": [], "capabilities": [ { - "name": "addValidationError", - "capabilityId": "Aspire.Hosting/InputsDialogValidationContext.addValidationError", - "qualifiedName": "InputsDialogValidationContext.addValidationError", - "description": "Adds a validation error for the input with the specified name.", - "kind": "InstanceMethod", - "signature": "addValidationError(inputName: string, errorMessage: string): void", + "name": "publishResourceUpdate", + "capabilityId": "Aspire.Hosting/publishResourceUpdate", + "qualifiedName": "publishResourceUpdate", + "description": "Publishes an update for a resource's state.", + "kind": "Method", + "signature": "publishResourceUpdate(resource: IResource, state?: string, stateStyle?: string): void", "parameters": [ { - "name": "inputName", + "name": "resource", + "type": "IResource" + }, + { + "name": "state", "type": "string", - "description": "The name of the input to add a validation error for." + "isOptional": true }, { - "name": "errorMessage", + "name": "stateStyle", "type": "string", - "description": "The error message to add." + "isOptional": true } ], "returnType": "void", - "targetTypeId": "Aspire.Hosting/Aspire.Hosting.InputsDialogValidationContext", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.ResourceNotificationService", "expandedTargetTypes": [ - "Aspire.Hosting.InputsDialogValidationContext" + "Aspire.Hosting.ApplicationModel.ResourceNotificationService" ] }, { - "name": "cancellationToken", - "capabilityId": "Aspire.Hosting/InputsDialogValidationContext.cancellationToken", - "qualifiedName": "InputsDialogValidationContext.cancellationToken", - "description": "Gets the cancellation token for the validation operation.", - "kind": "PropertyGetter", - "signature": "cancellationToken(): cancellationToken", - "parameters": [], - "returnType": "cancellationToken", - "targetTypeId": "Aspire.Hosting/Aspire.Hosting.InputsDialogValidationContext", + "name": "tryGetResourceState", + "capabilityId": "Aspire.Hosting/tryGetResourceState", + "qualifiedName": "tryGetResourceState", + "description": "Tries to get the current state of a resource.", + "kind": "Method", + "signature": "tryGetResourceState(resourceName: string): ResourceEventDto", + "parameters": [ + { + "name": "resourceName", + "type": "string" + } + ], + "returnType": "ResourceEventDto", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.ResourceNotificationService", "expandedTargetTypes": [ - "Aspire.Hosting.InputsDialogValidationContext" + "Aspire.Hosting.ApplicationModel.ResourceNotificationService" ] }, { - "name": "inputs", - "capabilityId": "Aspire.Hosting/InputsDialogValidationContext.inputs", - "qualifiedName": "InputsDialogValidationContext.inputs", - "description": "Gets the inputs that are being validated.", - "kind": "PropertyGetter", - "signature": "inputs(): InteractionInputCollection", - "parameters": [], - "returnType": "InteractionInputCollection", - "targetTypeId": "Aspire.Hosting/Aspire.Hosting.InputsDialogValidationContext", + "name": "waitForDependencies", + "capabilityId": "Aspire.Hosting/waitForDependencies", + "qualifiedName": "waitForDependencies", + "description": "Waits for all dependencies of a resource to be ready.", + "kind": "Method", + "signature": "waitForDependencies(resource: IResource): void", + "parameters": [ + { + "name": "resource", + "type": "IResource" + } + ], + "returnType": "void", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.ResourceNotificationService", "expandedTargetTypes": [ - "Aspire.Hosting.InputsDialogValidationContext" + "Aspire.Hosting.ApplicationModel.ResourceNotificationService" + ] + }, + { + "name": "waitForResourceHealthy", + "capabilityId": "Aspire.Hosting/waitForResourceHealthy", + "qualifiedName": "waitForResourceHealthy", + "description": "Waits for a resource to become healthy.", + "kind": "Method", + "signature": "waitForResourceHealthy(resourceName: string): ResourceEventDto", + "parameters": [ + { + "name": "resourceName", + "type": "string" + } + ], + "returnType": "ResourceEventDto", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.ResourceNotificationService", + "expandedTargetTypes": [ + "Aspire.Hosting.ApplicationModel.ResourceNotificationService" + ] + }, + { + "name": "waitForResourceState", + "capabilityId": "Aspire.Hosting/waitForResourceState", + "qualifiedName": "waitForResourceState", + "description": "Waits for a resource to reach a specified state.", + "kind": "Method", + "signature": "waitForResourceState(resourceName: string, targetState?: string): void", + "parameters": [ + { + "name": "resourceName", + "type": "string" + }, + { + "name": "targetState", + "type": "string", + "isOptional": true + } + ], + "returnType": "void", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.ResourceNotificationService", + "expandedTargetTypes": [ + "Aspire.Hosting.ApplicationModel.ResourceNotificationService" + ] + }, + { + "name": "waitForResourceStates", + "capabilityId": "Aspire.Hosting/waitForResourceStates", + "qualifiedName": "waitForResourceStates", + "description": "Waits for a resource to reach one of the specified states.", + "kind": "Method", + "signature": "waitForResourceStates(resourceName: string, targetStates: string[]): string", + "parameters": [ + { + "name": "resourceName", + "type": "string" + }, + { + "name": "targetStates", + "type": "string[]" + } + ], + "returnType": "string", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.ResourceNotificationService", + "expandedTargetTypes": [ + "Aspire.Hosting.ApplicationModel.ResourceNotificationService" ] } ] }, { - "name": "InteractionInputCollection", - "fullName": "Aspire.Hosting.InteractionInputCollection", + "name": "ResourceReadyEvent", + "fullName": "Aspire.Hosting.ApplicationModel.ResourceReadyEvent", "kind": "handle", - "description": "A collection of interaction inputs that supports both indexed and name-based access.", + "exposeProperties": true, + "description": "Event that is raised when a resource initially transitions to a ready state.", + "remarks": "This event is only fired the first time a resource transitions to a ready state after starting.", "implementedInterfaces": [ - "System.Collections.Generic.IEnumerable`1[[Aspire.Hosting.InteractionInput]]", - "System.Collections.Generic.IReadOnlyCollection`1[[Aspire.Hosting.InteractionInput]]", - "System.Collections.Generic.IReadOnlyList`1[[Aspire.Hosting.InteractionInput]]", - "System.Collections.IEnumerable" + "Aspire.Hosting.Eventing.IDistributedApplicationEvent", + "Aspire.Hosting.Eventing.IDistributedApplicationResourceEvent" ], "baseTypeHierarchy": [], "capabilities": [ { - "name": "toArray", - "capabilityId": "Aspire.Hosting/InteractionInputCollection.toArray", - "qualifiedName": "InteractionInputCollection.toArray", - "description": "Gets all inputs in declaration order.", - "returns": "A copy of the inputs in declaration order.", - "kind": "InstanceMethod", - "signature": "toArray(): InteractionInput[]", + "name": "resource", + "capabilityId": "Aspire.Hosting.ApplicationModel/ResourceReadyEvent.resource", + "qualifiedName": "ResourceReadyEvent.resource", + "description": "The resource that is in a healthy state.", + "kind": "PropertyGetter", + "signature": "resource(): IResource", "parameters": [], - "returnType": "InteractionInput[]", - "targetTypeId": "Aspire.Hosting/Aspire.Hosting.InteractionInputCollection", + "returnType": "IResource", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.ResourceReadyEvent", "expandedTargetTypes": [ - "Aspire.Hosting.InteractionInputCollection" + "Aspire.Hosting.ApplicationModel.ResourceReadyEvent" + ] + }, + { + "name": "services", + "capabilityId": "Aspire.Hosting.ApplicationModel/ResourceReadyEvent.services", + "qualifiedName": "ResourceReadyEvent.services", + "description": "Gets the Services property", + "kind": "PropertyGetter", + "signature": "services(): IServiceProvider", + "parameters": [], + "returnType": "IServiceProvider", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.ResourceReadyEvent", + "expandedTargetTypes": [ + "Aspire.Hosting.ApplicationModel.ResourceReadyEvent" ] } ] }, { - "name": "IResourceWithContainerFiles", - "fullName": "Aspire.Hosting.IResourceWithContainerFiles", + "name": "ResourceStoppedEvent", + "fullName": "Aspire.Hosting.ApplicationModel.ResourceStoppedEvent", "kind": "handle", - "isInterface": true, - "implementedInterfaces": [], + "exposeProperties": true, + "description": "This event is raised after a resource has stopped.", + "remarks": "This event allows for cleanup or unregistration logic when a resource is stopped by an orchestrator.", + "implementedInterfaces": [ + "Aspire.Hosting.Eventing.IDistributedApplicationEvent", + "Aspire.Hosting.Eventing.IDistributedApplicationResourceEvent" + ], "baseTypeHierarchy": [], "capabilities": [ { - "name": "clearContainerFilesSources", - "capabilityId": "Aspire.Hosting/clearContainerFilesSources", - "qualifiedName": "clearContainerFilesSources", - "description": "Removes any container files source annotation from the resource being built.", - "returns": "The resource builder instance with the container files source annotation applied.", - "kind": "Method", - "signature": "clearContainerFilesSources(): IResourceWithContainerFiles", + "name": "resource", + "capabilityId": "Aspire.Hosting.ApplicationModel/ResourceStoppedEvent.resource", + "qualifiedName": "ResourceStoppedEvent.resource", + "description": "Gets the Resource property", + "kind": "PropertyGetter", + "signature": "resource(): IResource", "parameters": [], - "returnType": "IResourceWithContainerFiles", - "returnsBuilder": true, - "targetTypeId": "Aspire.Hosting/Aspire.Hosting.IResourceWithContainerFiles", + "returnType": "IResource", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.ResourceStoppedEvent", "expandedTargetTypes": [ - "Aspire.Hosting.IResourceWithContainerFiles" + "Aspire.Hosting.ApplicationModel.ResourceStoppedEvent" ] }, { - "name": "withContainerFilesSource", - "capabilityId": "Aspire.Hosting/withContainerFilesSource", - "qualifiedName": "withContainerFilesSource", - "description": "Adds a container files source annotation to the resource being built, specifying the path to the container files source.", - "returns": "The resource builder instance with the container files source annotation applied.", - "kind": "Method", - "signature": "withContainerFilesSource(sourcePath: string): IResourceWithContainerFiles", - "parameters": [ - { - "name": "sourcePath", - "type": "string", - "description": "The path to the container files source to associate with the resource. Cannot be null." - } - ], - "returnType": "IResourceWithContainerFiles", - "returnsBuilder": true, - "targetTypeId": "Aspire.Hosting/Aspire.Hosting.IResourceWithContainerFiles", + "name": "services", + "capabilityId": "Aspire.Hosting.ApplicationModel/ResourceStoppedEvent.services", + "qualifiedName": "ResourceStoppedEvent.services", + "description": "Gets the Services property", + "kind": "PropertyGetter", + "signature": "services(): IServiceProvider", + "parameters": [], + "returnType": "IServiceProvider", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.ResourceStoppedEvent", "expandedTargetTypes": [ - "Aspire.Hosting.IResourceWithContainerFiles" + "Aspire.Hosting.ApplicationModel.ResourceStoppedEvent" ] } ] }, { - "name": "IUserSecretsManager", - "fullName": "Aspire.Hosting.IUserSecretsManager", + "name": "ResourceUrlsCallbackContext", + "fullName": "Aspire.Hosting.ApplicationModel.ResourceUrlsCallbackContext", "kind": "handle", - "isInterface": true, - "exposeProperties": true, - "exposeMethods": true, - "description": "Defines an interface for managing user secrets with support for read and write operations.", + "description": "Represents a callback context for resource URLs.", "implementedInterfaces": [], "baseTypeHierarchy": [], "capabilities": [ { - "name": "getOrSetSecret", - "capabilityId": "Aspire.Hosting/getOrSetSecret", - "qualifiedName": "getOrSetSecret", - "description": "Gets a secret value if it exists in configuration, or sets it to the provided value if it does not.", - "kind": "Method", - "signature": "getOrSetSecret(resourceBuilder: IResource, name: string, value: string): void", + "name": "executionContext", + "capabilityId": "Aspire.Hosting.ApplicationModel/ResourceUrlsCallbackContext.executionContext", + "qualifiedName": "ResourceUrlsCallbackContext.executionContext", + "description": "Gets the execution context associated with this invocation of the AppHost.", + "kind": "PropertyGetter", + "signature": "executionContext(): DistributedApplicationExecutionContext", + "parameters": [], + "returnType": "DistributedApplicationExecutionContext", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.ResourceUrlsCallbackContext", + "expandedTargetTypes": [ + "Aspire.Hosting.ApplicationModel.ResourceUrlsCallbackContext" + ] + }, + { + "name": "getEndpoint", + "capabilityId": "Aspire.Hosting.ApplicationModel/getEndpoint", + "qualifiedName": "ResourceUrlsCallbackContext.getEndpoint", + "description": "Gets an endpoint reference from the associated resource", + "kind": "InstanceMethod", + "signature": "getEndpoint(name: string): EndpointReference", "parameters": [ - { - "name": "resourceBuilder", - "type": "IResource", - "description": "A resource builder from the target application." - }, { "name": "name", "type": "string", - "description": "The secret name." - }, - { - "name": "value", - "type": "string", - "description": "The value to persist when the secret is missing." + "description": "The name of the endpoint." } ], - "returnType": "void", - "targetTypeId": "Aspire.Hosting/Aspire.Hosting.IUserSecretsManager", + "returnType": "EndpointReference", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.ResourceUrlsCallbackContext", "expandedTargetTypes": [ - "Aspire.Hosting.IUserSecretsManager" + "Aspire.Hosting.ApplicationModel.ResourceUrlsCallbackContext" ] }, { - "name": "filePath", - "capabilityId": "Aspire.Hosting/IUserSecretsManager.filePath", - "qualifiedName": "IUserSecretsManager.filePath", - "description": "Gets the path to the user secrets file.", + "name": "log", + "capabilityId": "Aspire.Hosting.ApplicationModel/ResourceUrlsCallbackContext.log", + "qualifiedName": "ResourceUrlsCallbackContext.log", + "description": "Gets the logger facade used by polyglot callbacks.", "kind": "PropertyGetter", - "signature": "filePath(): string", + "signature": "log(): LogFacade", "parameters": [], - "returnType": "string", - "targetTypeId": "Aspire.Hosting/Aspire.Hosting.IUserSecretsManager", + "returnType": "LogFacade", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.ResourceUrlsCallbackContext", "expandedTargetTypes": [ - "Aspire.Hosting.IUserSecretsManager" + "Aspire.Hosting.ApplicationModel.ResourceUrlsCallbackContext" ] }, { - "name": "isAvailable", - "capabilityId": "Aspire.Hosting/IUserSecretsManager.isAvailable", - "qualifiedName": "IUserSecretsManager.isAvailable", - "description": "Gets a value indicating whether user secrets are available.", - "remarks": "Returns `true` if the project has a user secrets ID configured; otherwise, `false`.", + "name": "resource", + "capabilityId": "Aspire.Hosting.ApplicationModel/ResourceUrlsCallbackContext.resource", + "qualifiedName": "ResourceUrlsCallbackContext.resource", + "description": "Gets the resource this the URLs are associated with.", "kind": "PropertyGetter", - "signature": "isAvailable(): boolean", + "signature": "resource(): IResource", "parameters": [], - "returnType": "boolean", - "targetTypeId": "Aspire.Hosting/Aspire.Hosting.IUserSecretsManager", + "returnType": "IResource", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.ResourceUrlsCallbackContext", "expandedTargetTypes": [ - "Aspire.Hosting.IUserSecretsManager" + "Aspire.Hosting.ApplicationModel.ResourceUrlsCallbackContext" ] }, { - "name": "tryDeleteSecret", - "capabilityId": "Aspire.Hosting/IUserSecretsManager.tryDeleteSecret", - "qualifiedName": "IUserSecretsManager.tryDeleteSecret", - "description": "Attempts to delete a user secret value synchronously.", - "remarks": "The default implementation returns `false` so existing implementations remain compatible.", - "returns": "True if the secret was deleted successfully; otherwise, false.", - "kind": "InstanceMethod", - "signature": "tryDeleteSecret(name: string): boolean", - "parameters": [ - { - "name": "name", - "type": "string", - "description": "The name of the secret." - } - ], - "returnType": "boolean", - "targetTypeId": "Aspire.Hosting/Aspire.Hosting.IUserSecretsManager", + "name": "urls", + "capabilityId": "Aspire.Hosting.ApplicationModel/ResourceUrlsCallbackContext.urls", + "qualifiedName": "ResourceUrlsCallbackContext.urls", + "description": "Gets the editor used to manipulate displayed URLs in polyglot callbacks.", + "kind": "PropertyGetter", + "signature": "urls(): ResourceUrlsEditor", + "parameters": [], + "returnType": "ResourceUrlsEditor", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.ResourceUrlsCallbackContext", "expandedTargetTypes": [ - "Aspire.Hosting.IUserSecretsManager" + "Aspire.Hosting.ApplicationModel.ResourceUrlsCallbackContext" ] - }, + } + ] + }, + { + "name": "ResourceUrlsEditor", + "fullName": "Aspire.Hosting.ApplicationModel.ResourceUrlsEditor", + "kind": "handle", + "description": "Provides an ATS-first editor for resource URLs within polyglot callbacks.", + "implementedInterfaces": [], + "baseTypeHierarchy": [], + "capabilities": [ { - "name": "trySetSecret", - "capabilityId": "Aspire.Hosting/IUserSecretsManager.trySetSecret", - "qualifiedName": "IUserSecretsManager.trySetSecret", - "description": "Attempts to set a user secret value synchronously.", - "returns": "True if the secret was set successfully; otherwise, false.", + "name": "add", + "capabilityId": "Aspire.Hosting.ApplicationModel/ResourceUrlsEditor.add", + "qualifiedName": "ResourceUrlsEditor.add", + "description": "Adds a displayed URL.", "kind": "InstanceMethod", - "signature": "trySetSecret(name: string, value: string): boolean", + "signature": "add(url: ReferenceExpression, displayText?: string): void", "parameters": [ { - "name": "name", - "type": "string", - "description": "The name of the secret." + "name": "url", + "type": "ReferenceExpression", + "description": "The URL to add, specified as a string or reference expression." }, { - "name": "value", + "name": "displayText", "type": "string", - "description": "The value of the secret." + "isOptional": true, + "description": "The optional display text to show for the URL." } ], - "returnType": "boolean", - "targetTypeId": "Aspire.Hosting/Aspire.Hosting.IUserSecretsManager", + "returnType": "void", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.ResourceUrlsEditor", "expandedTargetTypes": [ - "Aspire.Hosting.IUserSecretsManager" + "Aspire.Hosting.ApplicationModel.ResourceUrlsEditor" ] }, { - "name": "saveStateJson", - "capabilityId": "Aspire.Hosting/saveStateJson", - "qualifiedName": "saveStateJson", - "description": "Saves state to user secrets from a JSON string.", - "returns": "A task that completes when the state is saved.", - "kind": "Method", - "signature": "saveStateJson(json: string, cancellationToken?: cancellationToken): void", + "name": "addForEndpoint", + "capabilityId": "Aspire.Hosting.ApplicationModel/ResourceUrlsEditor.addForEndpoint", + "qualifiedName": "ResourceUrlsEditor.addForEndpoint", + "description": "Adds a displayed URL for a specific endpoint.", + "kind": "InstanceMethod", + "signature": "addForEndpoint(endpoint: EndpointReference, url: ReferenceExpression, displayText?: string): void", "parameters": [ { - "name": "json", - "type": "string", - "description": "The JSON object payload to persist." + "name": "endpoint", + "type": "EndpointReference", + "description": "The endpoint the URL is associated with." }, { - "name": "cancellationToken", - "type": "cancellationToken", + "name": "url", + "type": "ReferenceExpression", + "description": "The URL to add, specified as a string or reference expression." + }, + { + "name": "displayText", + "type": "string", "isOptional": true, - "description": "The cancellation token." + "description": "The optional display text to show for the URL." } ], "returnType": "void", - "targetTypeId": "Aspire.Hosting/Aspire.Hosting.IUserSecretsManager", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.ResourceUrlsEditor", "expandedTargetTypes": [ - "Aspire.Hosting.IUserSecretsManager" + "Aspire.Hosting.ApplicationModel.ResourceUrlsEditor" + ] + }, + { + "name": "executionContext", + "capabilityId": "Aspire.Hosting.ApplicationModel/ResourceUrlsEditor.executionContext", + "qualifiedName": "ResourceUrlsEditor.executionContext", + "description": "Gets the execution context associated with this editor.", + "kind": "PropertyGetter", + "signature": "executionContext(): DistributedApplicationExecutionContext", + "parameters": [], + "returnType": "DistributedApplicationExecutionContext", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.ResourceUrlsEditor", + "expandedTargetTypes": [ + "Aspire.Hosting.ApplicationModel.ResourceUrlsEditor" ] } ] }, { - "name": "IDistributedApplicationPipeline", - "fullName": "Aspire.Hosting.Pipelines.IDistributedApplicationPipeline", + "name": "UpdateCommandStateContext", + "fullName": "Aspire.Hosting.ApplicationModel.UpdateCommandStateContext", "kind": "handle", - "isInterface": true, - "description": "Represents a pipeline for executing deployment steps in a distributed application.", + "exposeProperties": true, + "description": "Context for {@ats-ref method:ResourceCommandAnnotation.UpdateState}.", "implementedInterfaces": [], "baseTypeHierarchy": [], "capabilities": [ { - "name": "addStep", - "capabilityId": "Aspire.Hosting/addStep", - "qualifiedName": "addStep", - "description": "Adds an application-level pipeline step in a TypeScript-friendly shape.", - "kind": "Method", - "signature": "addStep(stepName: string, callback: (arg: PipelineStepContext) => Promise, dependsOn?: string[], requiredBy?: string[]): void", - "parameters": [ - { - "name": "stepName", - "type": "string", - "description": "The unique name of the pipeline step." - }, - { - "name": "callback", - "type": "callback", - "isCallback": true, - "callbackSignature": "(arg: PipelineStepContext) => Promise", - "description": "The callback to execute when the step runs." - }, - { - "name": "dependsOn", - "type": "string[]", - "isOptional": true, - "description": "Optional step names that this step depends on." - }, - { - "name": "requiredBy", - "type": "string[]", - "isOptional": true, - "description": "Optional step names that require this step." - } - ], - "returnType": "void", - "targetTypeId": "Aspire.Hosting/Aspire.Hosting.Pipelines.IDistributedApplicationPipeline", - "expandedTargetTypes": [ - "Aspire.Hosting.Pipelines.IDistributedApplicationPipeline" - ] - }, - { - "name": "configure", - "capabilityId": "Aspire.Hosting/configure", - "qualifiedName": "configure", - "description": "Registers a pipeline configuration callback in a TypeScript-friendly shape.", - "kind": "Method", - "signature": "configure(callback: (arg: PipelineConfigurationContext) => Promise): void", - "parameters": [ - { - "name": "callback", - "type": "callback", - "isCallback": true, - "callbackSignature": "(arg: PipelineConfigurationContext) => Promise", - "description": "The callback to execute during pipeline configuration." - } - ], - "returnType": "void", - "targetTypeId": "Aspire.Hosting/Aspire.Hosting.Pipelines.IDistributedApplicationPipeline", + "name": "resourceSnapshot", + "capabilityId": "Aspire.Hosting.ApplicationModel/UpdateCommandStateContext.resourceSnapshot", + "qualifiedName": "UpdateCommandStateContext.resourceSnapshot", + "description": "Gets the resource snapshot data available to polyglot command state callbacks.", + "kind": "PropertyGetter", + "signature": "resourceSnapshot(): UpdateCommandStateResourceSnapshot", + "parameters": [], + "returnType": "UpdateCommandStateResourceSnapshot", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.UpdateCommandStateContext", "expandedTargetTypes": [ - "Aspire.Hosting.Pipelines.IDistributedApplicationPipeline" + "Aspire.Hosting.ApplicationModel.UpdateCommandStateContext" ] }, { - "name": "disableBuildOnlyContainerValidation", - "capabilityId": "Aspire.Hosting/disableBuildOnlyContainerValidation", - "qualifiedName": "disableBuildOnlyContainerValidation", - "description": "Disables the publish and deploy validation that requires build-only containers to be consumed by another resource.", - "remarks": "This is an application-wide escape hatch for scenarios where the build-only container validation is too restrictive\nfor a particular app. Prefer wiring build-only containers through `PublishWithContainerFiles` or\n`PublishWithStaticFiles` when possible.", - "returns": "The distributed application pipeline for chaining.", - "kind": "Method", - "signature": "disableBuildOnlyContainerValidation(): IDistributedApplicationPipeline", + "name": "services", + "capabilityId": "Aspire.Hosting.ApplicationModel/UpdateCommandStateContext.services", + "qualifiedName": "UpdateCommandStateContext.services", + "description": "The service provider.", + "kind": "PropertyGetter", + "signature": "services(): IServiceProvider", "parameters": [], - "returnType": "IDistributedApplicationPipeline", - "targetTypeId": "Aspire.Hosting/Aspire.Hosting.Pipelines.IDistributedApplicationPipeline", + "returnType": "IServiceProvider", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.UpdateCommandStateContext", "expandedTargetTypes": [ - "Aspire.Hosting.Pipelines.IDistributedApplicationPipeline" + "Aspire.Hosting.ApplicationModel.UpdateCommandStateContext" ] } ] }, { - "name": "IReportingStep", - "fullName": "Aspire.Hosting.Pipelines.IReportingStep", + "name": "EventingSubscriberRegistrationContext", + "fullName": "Aspire.Hosting.Ats.EventingSubscriberRegistrationContext", "kind": "handle", - "isInterface": true, - "description": "Represents a publishing step, which can contain multiple tasks.", + "exposeProperties": true, + "description": "Context passed to ATS-friendly eventing subscriber registrations.", "implementedInterfaces": [], "baseTypeHierarchy": [], "capabilities": [ { - "name": "completeStep", - "capabilityId": "Aspire.Hosting/completeStep", - "qualifiedName": "completeStep", - "description": "Completes the reporting step with plain-text completion text.", - "kind": "Method", - "signature": "completeStep(completionText: string, completionState?: string, cancellationToken?: cancellationToken): void", - "parameters": [ - { - "name": "completionText", - "type": "string" - }, - { - "name": "completionState", - "type": "string", - "isOptional": true, - "defaultValue": "completed" - }, - { - "name": "cancellationToken", - "type": "cancellationToken", - "isOptional": true - } - ], - "returnType": "void", - "targetTypeId": "Aspire.Hosting/Aspire.Hosting.Pipelines.IReportingStep", + "name": "cancellationToken", + "capabilityId": "Aspire.Hosting.Ats/EventingSubscriberRegistrationContext.cancellationToken", + "qualifiedName": "EventingSubscriberRegistrationContext.cancellationToken", + "description": "The cancellation token associated with the subscriber registration.", + "kind": "PropertyGetter", + "signature": "cancellationToken(): cancellationToken", + "parameters": [], + "returnType": "cancellationToken", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.Ats.EventingSubscriberRegistrationContext", "expandedTargetTypes": [ - "Aspire.Hosting.Pipelines.IReportingStep" + "Aspire.Hosting.Ats.EventingSubscriberRegistrationContext" ] }, { - "name": "completeStepMarkdown", - "capabilityId": "Aspire.Hosting/completeStepMarkdown", - "qualifiedName": "completeStepMarkdown", - "description": "Completes the reporting step with Markdown-formatted completion text.", - "kind": "Method", - "signature": "completeStepMarkdown(markdownString: string, completionState?: string, cancellationToken?: cancellationToken): void", - "parameters": [ - { - "name": "markdownString", - "type": "string" - }, - { - "name": "completionState", - "type": "string", - "isOptional": true, - "defaultValue": "completed" - }, - { - "name": "cancellationToken", - "type": "cancellationToken", - "isOptional": true - } - ], - "returnType": "void", - "targetTypeId": "Aspire.Hosting/Aspire.Hosting.Pipelines.IReportingStep", + "name": "executionContext", + "capabilityId": "Aspire.Hosting.Ats/EventingSubscriberRegistrationContext.executionContext", + "qualifiedName": "EventingSubscriberRegistrationContext.executionContext", + "description": "The execution context for the AppHost invocation.", + "kind": "PropertyGetter", + "signature": "executionContext(): DistributedApplicationExecutionContext", + "parameters": [], + "returnType": "DistributedApplicationExecutionContext", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.Ats.EventingSubscriberRegistrationContext", "expandedTargetTypes": [ - "Aspire.Hosting.Pipelines.IReportingStep" + "Aspire.Hosting.Ats.EventingSubscriberRegistrationContext" ] }, { - "name": "createMarkdownTask", - "capabilityId": "Aspire.Hosting/createMarkdownTask", - "qualifiedName": "createMarkdownTask", - "description": "Creates a reporting task with Markdown-formatted status text.", + "name": "onAfterPublish", + "capabilityId": "Aspire.Hosting/eventingSubscriberOnAfterPublish", + "qualifiedName": "onAfterPublish", + "description": "Subscribes to the AfterPublish event from an eventing subscriber registration context.", + "returns": "The event subscription.", "kind": "Method", - "signature": "createMarkdownTask(markdownString: string, cancellationToken?: cancellationToken): IReportingTask", + "signature": "onAfterPublish(callback: (arg: AfterPublishEvent) => Promise): DistributedApplicationEventSubscription", "parameters": [ { - "name": "markdownString", - "type": "string" - }, - { - "name": "cancellationToken", - "type": "cancellationToken", - "isOptional": true + "name": "callback", + "type": "callback", + "isCallback": true, + "callbackSignature": "(arg: AfterPublishEvent) => Promise", + "description": "The callback to invoke when the event fires." } ], - "returnType": "IReportingTask", - "targetTypeId": "Aspire.Hosting/Aspire.Hosting.Pipelines.IReportingStep", + "returnType": "DistributedApplicationEventSubscription", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.Ats.EventingSubscriberRegistrationContext", "expandedTargetTypes": [ - "Aspire.Hosting.Pipelines.IReportingStep" + "Aspire.Hosting.Ats.EventingSubscriberRegistrationContext" ] }, { - "name": "createTask", - "capabilityId": "Aspire.Hosting/createTask", - "qualifiedName": "createTask", - "description": "Creates a reporting task with plain-text status text.", + "name": "onAfterResourcesCreated", + "capabilityId": "Aspire.Hosting/eventingSubscriberOnAfterResourcesCreated", + "qualifiedName": "onAfterResourcesCreated", + "description": "Subscribes to the AfterResourcesCreated event from an eventing subscriber registration context.", + "returns": "The event subscription.", "kind": "Method", - "signature": "createTask(statusText: string, cancellationToken?: cancellationToken): IReportingTask", + "signature": "onAfterResourcesCreated(callback: (arg: AfterResourcesCreatedEvent) => Promise): DistributedApplicationEventSubscription", "parameters": [ { - "name": "statusText", - "type": "string" - }, - { - "name": "cancellationToken", - "type": "cancellationToken", - "isOptional": true + "name": "callback", + "type": "callback", + "isCallback": true, + "callbackSignature": "(arg: AfterResourcesCreatedEvent) => Promise", + "description": "The callback to invoke when the event fires." } ], - "returnType": "IReportingTask", - "targetTypeId": "Aspire.Hosting/Aspire.Hosting.Pipelines.IReportingStep", + "returnType": "DistributedApplicationEventSubscription", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.Ats.EventingSubscriberRegistrationContext", "expandedTargetTypes": [ - "Aspire.Hosting.Pipelines.IReportingStep" + "Aspire.Hosting.Ats.EventingSubscriberRegistrationContext" ] }, { - "name": "logStep", - "capabilityId": "Aspire.Hosting/logStep", - "qualifiedName": "logStep", - "description": "Logs a plain-text message for the reporting step.", + "name": "onBeforePublish", + "capabilityId": "Aspire.Hosting/eventingSubscriberOnBeforePublish", + "qualifiedName": "onBeforePublish", + "description": "Subscribes to the BeforePublish event from an eventing subscriber registration context.", + "returns": "The event subscription.", "kind": "Method", - "signature": "logStep(level: string, message: string): void", + "signature": "onBeforePublish(callback: (arg: BeforePublishEvent) => Promise): DistributedApplicationEventSubscription", "parameters": [ { - "name": "level", - "type": "string" - }, - { - "name": "message", - "type": "string" + "name": "callback", + "type": "callback", + "isCallback": true, + "callbackSignature": "(arg: BeforePublishEvent) => Promise", + "description": "The callback to invoke when the event fires." } ], - "returnType": "void", - "targetTypeId": "Aspire.Hosting/Aspire.Hosting.Pipelines.IReportingStep", + "returnType": "DistributedApplicationEventSubscription", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.Ats.EventingSubscriberRegistrationContext", "expandedTargetTypes": [ - "Aspire.Hosting.Pipelines.IReportingStep" + "Aspire.Hosting.Ats.EventingSubscriberRegistrationContext" ] }, { - "name": "logStepMarkdown", - "capabilityId": "Aspire.Hosting/logStepMarkdown", - "qualifiedName": "logStepMarkdown", - "description": "Logs a Markdown-formatted message for the reporting step.", + "name": "onBeforeStart", + "capabilityId": "Aspire.Hosting/eventingSubscriberOnBeforeStart", + "qualifiedName": "onBeforeStart", + "description": "Subscribes to the BeforeStart event from an eventing subscriber registration context.", + "returns": "The event subscription.", "kind": "Method", - "signature": "logStepMarkdown(level: string, markdownString: string): void", + "signature": "onBeforeStart(callback: (arg: BeforeStartEvent) => Promise): DistributedApplicationEventSubscription", "parameters": [ { - "name": "level", - "type": "string" - }, - { - "name": "markdownString", - "type": "string" + "name": "callback", + "type": "callback", + "isCallback": true, + "callbackSignature": "(arg: BeforeStartEvent) => Promise", + "description": "The callback to invoke when the event fires." } ], - "returnType": "void", - "targetTypeId": "Aspire.Hosting/Aspire.Hosting.Pipelines.IReportingStep", + "returnType": "DistributedApplicationEventSubscription", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.Ats.EventingSubscriberRegistrationContext", "expandedTargetTypes": [ - "Aspire.Hosting.Pipelines.IReportingStep" + "Aspire.Hosting.Ats.EventingSubscriberRegistrationContext" ] } ] }, { - "name": "IReportingTask", - "fullName": "Aspire.Hosting.Pipelines.IReportingTask", + "name": "InputsInteractionResult", + "fullName": "Aspire.Hosting.Ats.InputsInteractionResult", "kind": "handle", - "isInterface": true, - "description": "Represents a publishing task, which belongs to a step.", + "exposeProperties": true, + "description": "The result of a multi-input interaction prompt.", + "remarks": "Modeled as a handle (not a by-value DTO) so the returned inputs are surfaced as the\n`InteractionInputCollection` handle. That lets polyglot callers reuse the same name-based\naccessors (for example `result.inputs().value(\"color\")`) that the validation and command-argument\ncollections already expose, instead of having to scan a serialized array by hand.", "implementedInterfaces": [], "baseTypeHierarchy": [], "capabilities": [ { - "name": "completeTask", - "capabilityId": "Aspire.Hosting/completeTask", - "qualifiedName": "completeTask", - "description": "Completes the reporting task with plain-text completion text.", - "kind": "Method", - "signature": "completeTask(completionMessage?: string, completionState?: string, cancellationToken?: cancellationToken): void", + "name": "canceled", + "capabilityId": "Aspire.Hosting.Ats/InputsInteractionResult.canceled", + "qualifiedName": "InputsInteractionResult.canceled", + "description": "Gets a value indicating whether the interaction was canceled by the user.", + "kind": "PropertyGetter", + "signature": "canceled(): boolean", + "parameters": [], + "returnType": "boolean", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.Ats.InputsInteractionResult", + "expandedTargetTypes": [ + "Aspire.Hosting.Ats.InputsInteractionResult" + ] + }, + { + "name": "inputs", + "capabilityId": "Aspire.Hosting.Ats/InputsInteractionResult.inputs", + "qualifiedName": "InputsInteractionResult.inputs", + "description": "Gets the inputs returned from the interaction. Empty when `Canceled` is `true`.", + "kind": "PropertyGetter", + "signature": "inputs(): InteractionInputCollection", + "parameters": [], + "returnType": "InteractionInputCollection", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.Ats.InputsInteractionResult", + "expandedTargetTypes": [ + "Aspire.Hosting.Ats.InputsInteractionResult" + ] + } + ] + }, + { + "name": "InteractionInputBuilder", + "fullName": "Aspire.Hosting.Ats.InteractionInputBuilder", + "kind": "handle", + "description": "An opaque, server-side builder for an `InteractionInput` used by polyglot AppHosts.", + "remarks": "The builder owns the live `InteractionInput` instance. Dynamic-loading callbacks mutate this same\ninstance through `InteractionInputLoadContext`, which is why the input is modeled as a handle here\ninstead of the by-value `InteractionInput` DTO.", + "implementedInterfaces": [], + "baseTypeHierarchy": [], + "capabilities": [ + { + "name": "withChoiceOptions", + "capabilityId": "Aspire.Hosting.Ats/withChoiceOptions", + "qualifiedName": "InteractionInputBuilder.withChoiceOptions", + "description": "Sets the choice options for the input.", + "returns": "The same builder handle.", + "kind": "InstanceMethod", + "signature": "withChoiceOptions(choices: InteractionChoiceOption[]): InteractionInputBuilder", "parameters": [ { - "name": "completionMessage", - "type": "string", - "isOptional": true - }, - { - "name": "completionState", - "type": "string", - "isOptional": true, - "defaultValue": "completed" - }, - { - "name": "cancellationToken", - "type": "cancellationToken", - "isOptional": true + "name": "choices", + "type": "InteractionChoiceOption[]", + "description": "The available choices, in display order. Each option pairs a submitted value with a display label." } ], - "returnType": "void", - "targetTypeId": "Aspire.Hosting/Aspire.Hosting.Pipelines.IReportingTask", + "returnType": "InteractionInputBuilder", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.Ats.InteractionInputBuilder", "expandedTargetTypes": [ - "Aspire.Hosting.Pipelines.IReportingTask" + "Aspire.Hosting.Ats.InteractionInputBuilder" ] }, { - "name": "completeTaskMarkdown", - "capabilityId": "Aspire.Hosting/completeTaskMarkdown", - "qualifiedName": "completeTaskMarkdown", - "description": "Completes the reporting task with Markdown-formatted completion text.", - "kind": "Method", - "signature": "completeTaskMarkdown(markdownString: string, completionState?: string, cancellationToken?: cancellationToken): void", + "name": "withDynamicLoading", + "capabilityId": "Aspire.Hosting.Ats/withDynamicLoading", + "qualifiedName": "InteractionInputBuilder.withDynamicLoading", + "description": "Attaches a callback that dynamically loads or updates the input after the prompt starts.", + "returns": "The same builder handle.", + "kind": "InstanceMethod", + "signature": "withDynamicLoading(callback: (arg: InteractionInputLoadContext) => Promise, options?: DynamicLoadingOptions): InteractionInputBuilder", "parameters": [ { - "name": "markdownString", - "type": "string" + "name": "callback", + "type": "callback", + "isCallback": true, + "callbackSignature": "(arg: InteractionInputLoadContext) => Promise", + "description": "The callback invoked to load the input. Use the supplied context to read other inputs and update this input." }, { - "name": "completionState", - "type": "string", + "name": "options", + "type": "DynamicLoadingOptions", "isOptional": true, - "defaultValue": "completed" - }, - { - "name": "cancellationToken", - "type": "cancellationToken", - "isOptional": true + "description": "Optional configuration that controls when the callback runs." } ], - "returnType": "void", - "targetTypeId": "Aspire.Hosting/Aspire.Hosting.Pipelines.IReportingTask", + "returnType": "InteractionInputBuilder", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.Ats.InteractionInputBuilder", "expandedTargetTypes": [ - "Aspire.Hosting.Pipelines.IReportingTask" + "Aspire.Hosting.Ats.InteractionInputBuilder" ] }, { - "name": "updateTask", - "capabilityId": "Aspire.Hosting/updateTask", - "qualifiedName": "updateTask", - "description": "Updates the reporting task with plain-text status text.", - "kind": "Method", - "signature": "updateTask(statusText: string, cancellationToken?: cancellationToken): void", + "name": "withValue", + "capabilityId": "Aspire.Hosting.Ats/withValue", + "qualifiedName": "InteractionInputBuilder.withValue", + "description": "Sets the value of the input.", + "returns": "The same builder handle.", + "kind": "InstanceMethod", + "signature": "withValue(value: string): InteractionInputBuilder", "parameters": [ { - "name": "statusText", - "type": "string" - }, + "name": "value", + "type": "string", + "description": "The value to assign." + } + ], + "returnType": "InteractionInputBuilder", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.Ats.InteractionInputBuilder", + "expandedTargetTypes": [ + "Aspire.Hosting.Ats.InteractionInputBuilder" + ] + } + ] + }, + { + "name": "InteractionInputLoadContext", + "fullName": "Aspire.Hosting.Ats.InteractionInputLoadContext", + "kind": "handle", + "exposeProperties": true, + "description": "The context passed to a polyglot dynamic-loading callback. Exposes the loading input as a handle and provides read access to the other inputs in the prompt.", + "implementedInterfaces": [], + "baseTypeHierarchy": [], + "capabilities": [ + { + "name": "input", + "capabilityId": "Aspire.Hosting.Ats/input", + "qualifiedName": "InteractionInputLoadContext.input", + "description": "Gets a handle to the input that is loading. Mutate the input through this handle.", + "remarks": "Mirrors the native `LoadInputContext.Input`: the callback updates the live input it is loading, rather than\nthe context itself. The input is a handle (not a by-value DTO) so guarded setters route back to the server-side\ninput across the ATS boundary.", + "returns": "A handle to the loading input.", + "kind": "InstanceMethod", + "signature": "input(): InteractionLoadingInput", + "parameters": [], + "returnType": "InteractionLoadingInput", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.Ats.InteractionInputLoadContext", + "expandedTargetTypes": [ + "Aspire.Hosting.Ats.InteractionInputLoadContext" + ] + }, + { + "name": "inputs", + "capabilityId": "Aspire.Hosting.Ats/InteractionInputLoadContext.inputs", + "qualifiedName": "InteractionInputLoadContext.inputs", + "description": "Gets all inputs in the prompt, including the one currently loading.", + "remarks": "Mirrors the native `LoadInputContext.AllInputs`. Use the collection's by-name accessors (for example\n`value` or `requiredValue`) to read the dependency inputs declared via\n`DependsOnInputs`. This is the same `InteractionInputCollection`\nidiom used by the validation callback and prompt results, so reading inputs by name is consistent across every\ncallback context. This is exposed as a property (rather than a method) so it routes through the generated\ncollection accessor, matching the other contexts that surface an `InteractionInputCollection`.", + "kind": "PropertyGetter", + "signature": "inputs(): InteractionInputCollection", + "parameters": [], + "returnType": "InteractionInputCollection", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.Ats.InteractionInputLoadContext", + "expandedTargetTypes": [ + "Aspire.Hosting.Ats.InteractionInputLoadContext" + ] + } + ] + }, + { + "name": "InteractionLoadingInput", + "fullName": "Aspire.Hosting.Ats.InteractionLoadingInput", + "kind": "handle", + "description": "A handle to the input currently being loaded by a dynamic-loading callback. Mirrors the native `LoadInputContext.Input` by letting callbacks update the live input directly.", + "remarks": "The handle owns the live `InteractionInput` for the duration of the load callback. Setters are routed\nback to the server-side input across the ATS boundary, which is why this is a handle rather than the by-value\n`InteractionInput` DTO.", + "implementedInterfaces": [], + "baseTypeHierarchy": [], + "capabilities": [ + { + "name": "getName", + "capabilityId": "Aspire.Hosting.Ats/getName", + "qualifiedName": "InteractionLoadingInput.getName", + "description": "Gets the name of the input.", + "returns": "The input name.", + "kind": "InstanceMethod", + "signature": "getName(): string", + "parameters": [], + "returnType": "string", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.Ats.InteractionLoadingInput", + "expandedTargetTypes": [ + "Aspire.Hosting.Ats.InteractionLoadingInput" + ] + }, + { + "name": "setChoiceOptions", + "capabilityId": "Aspire.Hosting.Ats/setChoiceOptions", + "qualifiedName": "InteractionLoadingInput.setChoiceOptions", + "description": "Sets the choice options for the input.", + "kind": "InstanceMethod", + "signature": "setChoiceOptions(choices: InteractionChoiceOption[]): void", + "parameters": [ { - "name": "cancellationToken", - "type": "cancellationToken", - "isOptional": true + "name": "choices", + "type": "InteractionChoiceOption[]", + "description": "The available choices, in display order. Each option pairs a submitted value with a display label." } ], "returnType": "void", - "targetTypeId": "Aspire.Hosting/Aspire.Hosting.Pipelines.IReportingTask", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.Ats.InteractionLoadingInput", "expandedTargetTypes": [ - "Aspire.Hosting.Pipelines.IReportingTask" + "Aspire.Hosting.Ats.InteractionLoadingInput" ] }, { - "name": "updateTaskMarkdown", - "capabilityId": "Aspire.Hosting/updateTaskMarkdown", - "qualifiedName": "updateTaskMarkdown", - "description": "Updates the reporting task with Markdown-formatted status text.", - "kind": "Method", - "signature": "updateTaskMarkdown(markdownString: string, cancellationToken?: cancellationToken): void", + "name": "setValue", + "capabilityId": "Aspire.Hosting.Ats/setValue", + "qualifiedName": "InteractionLoadingInput.setValue", + "description": "Sets the value of the input.", + "kind": "InstanceMethod", + "signature": "setValue(value: string): void", "parameters": [ { - "name": "markdownString", - "type": "string" - }, - { - "name": "cancellationToken", - "type": "cancellationToken", - "isOptional": true + "name": "value", + "type": "string", + "description": "The value to assign." } ], "returnType": "void", - "targetTypeId": "Aspire.Hosting/Aspire.Hosting.Pipelines.IReportingTask", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.Ats.InteractionLoadingInput", "expandedTargetTypes": [ - "Aspire.Hosting.Pipelines.IReportingTask" + "Aspire.Hosting.Ats.InteractionLoadingInput" ] } ] }, { - "name": "PipelineConfigurationContext", - "fullName": "Aspire.Hosting.Pipelines.PipelineConfigurationContext", + "name": "DistributedApplication", + "fullName": "Aspire.Hosting.DistributedApplication", "kind": "handle", - "description": "Provides contextual information for pipeline configuration callbacks.", - "implementedInterfaces": [], + "description": "Represents a distributed application that implements the {@ats-ref type:IHost} and {@ats-ref type:IAsyncDisposable} interfaces.", + "implementedInterfaces": [ + "Microsoft.Extensions.Hosting.IHost", + "System.IAsyncDisposable", + "System.IDisposable" + ], "baseTypeHierarchy": [], "capabilities": [ { - "name": "getSteps", - "capabilityId": "Aspire.Hosting.Pipelines/getSteps", - "qualifiedName": "PipelineConfigurationContext.getSteps", - "description": "Gets all pipeline steps with the specified tag.", - "returns": "A collection of steps that have the specified tag.", + "name": "run", + "capabilityId": "Aspire.Hosting/run", + "qualifiedName": "DistributedApplication.run", + "description": "Runs the distributed application", + "remarks": "When the Aspire AppHost is launched via `RunAsync` there are\ntwo possible modes that it is running in:\n-\n-\nDevelopers extending the Aspire application model should consider the lifetime\nof `IHostedService` instances which are added to the dependency injection\ncontainer. For more information on determining the mode that the AppHost is running\nin refer to `DistributedApplicationExecutionContext`.", + "returns": "The `Task` that represents the asynchronous operation.", "kind": "InstanceMethod", - "signature": "getSteps(tag: string): PipelineStep[]", + "signature": "run(cancellationToken?: cancellationToken): void", "parameters": [ { - "name": "tag", - "type": "string", - "description": "The tag to search for." + "name": "cancellationToken", + "type": "cancellationToken", + "isOptional": true, + "description": "The token to trigger shutdown." } ], - "returnType": "PipelineStep[]", - "targetTypeId": "Aspire.Hosting/Aspire.Hosting.Pipelines.PipelineConfigurationContext", + "returnType": "void", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.DistributedApplication", "expandedTargetTypes": [ - "Aspire.Hosting.Pipelines.PipelineConfigurationContext" + "Aspire.Hosting.DistributedApplication" ] - }, + } + ] + }, + { + "name": "DistributedApplicationExecutionContext", + "fullName": "Aspire.Hosting.DistributedApplicationExecutionContext", + "kind": "handle", + "exposeProperties": true, + "description": "Exposes the global contextual information for this invocation of the AppHost.", + "implementedInterfaces": [], + "baseTypeHierarchy": [], + "capabilities": [ { - "name": "log", - "capabilityId": "Aspire.Hosting.Pipelines/PipelineConfigurationContext.log", - "qualifiedName": "PipelineConfigurationContext.log", - "description": "Gets the logger facade used by polyglot callbacks.", + "name": "isPublishMode", + "capabilityId": "Aspire.Hosting/DistributedApplicationExecutionContext.isPublishMode", + "qualifiedName": "DistributedApplicationExecutionContext.isPublishMode", + "description": "Returns true if the current operation is publishing.", "kind": "PropertyGetter", - "signature": "log(): LogFacade", + "signature": "isPublishMode(): boolean", "parameters": [], - "returnType": "LogFacade", - "targetTypeId": "Aspire.Hosting/Aspire.Hosting.Pipelines.PipelineConfigurationContext", + "returnType": "boolean", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.DistributedApplicationExecutionContext", "expandedTargetTypes": [ - "Aspire.Hosting.Pipelines.PipelineConfigurationContext" + "Aspire.Hosting.DistributedApplicationExecutionContext" ] }, { - "name": "pipeline", - "capabilityId": "Aspire.Hosting.Pipelines/PipelineConfigurationContext.pipeline", - "qualifiedName": "PipelineConfigurationContext.pipeline", - "description": "Gets the pipeline editor used by polyglot callbacks.", + "name": "isRunMode", + "capabilityId": "Aspire.Hosting/DistributedApplicationExecutionContext.isRunMode", + "qualifiedName": "DistributedApplicationExecutionContext.isRunMode", + "description": "Returns true if the current operation is running.", "kind": "PropertyGetter", - "signature": "pipeline(): PipelineEditor", + "signature": "isRunMode(): boolean", "parameters": [], - "returnType": "PipelineEditor", - "targetTypeId": "Aspire.Hosting/Aspire.Hosting.Pipelines.PipelineConfigurationContext", + "returnType": "boolean", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.DistributedApplicationExecutionContext", "expandedTargetTypes": [ - "Aspire.Hosting.Pipelines.PipelineConfigurationContext" + "Aspire.Hosting.DistributedApplicationExecutionContext" ] - } - ] - }, - { - "name": "PipelineContext", - "fullName": "Aspire.Hosting.Pipelines.PipelineContext", - "kind": "handle", - "exposeProperties": true, - "description": "Provides contextual information and services for the pipeline execution process of a distributed application.", - "implementedInterfaces": [], - "baseTypeHierarchy": [], - "capabilities": [ + }, { - "name": "cancellationToken", - "capabilityId": "Aspire.Hosting.Pipelines/PipelineContext.cancellationToken", - "qualifiedName": "PipelineContext.cancellationToken", - "description": "Gets the cancellation token for the pipeline operation.", + "name": "operation", + "capabilityId": "Aspire.Hosting/DistributedApplicationExecutionContext.operation", + "qualifiedName": "DistributedApplicationExecutionContext.operation", + "description": "The operation currently being performed by the AppHost.", "kind": "PropertyGetter", - "signature": "cancellationToken(): cancellationToken", + "signature": "operation(): DistributedApplicationOperation", "parameters": [], - "returnType": "cancellationToken", - "targetTypeId": "Aspire.Hosting/Aspire.Hosting.Pipelines.PipelineContext", + "returnType": "DistributedApplicationOperation", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.DistributedApplicationExecutionContext", "expandedTargetTypes": [ - "Aspire.Hosting.Pipelines.PipelineContext" + "Aspire.Hosting.DistributedApplicationExecutionContext" ] }, { - "name": "executionContext", - "capabilityId": "Aspire.Hosting.Pipelines/PipelineContext.executionContext", - "qualifiedName": "PipelineContext.executionContext", - "description": "Gets the execution context for the distributed application.", + "name": "publisherName", + "capabilityId": "Aspire.Hosting/DistributedApplicationExecutionContext.publisherName", + "qualifiedName": "DistributedApplicationExecutionContext.publisherName", + "description": "The name of the publisher that is being used if `Operation` is set to `Publish`.", "kind": "PropertyGetter", - "signature": "executionContext(): DistributedApplicationExecutionContext", + "signature": "publisherName(): string", "parameters": [], - "returnType": "DistributedApplicationExecutionContext", - "targetTypeId": "Aspire.Hosting/Aspire.Hosting.Pipelines.PipelineContext", + "returnType": "string", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.DistributedApplicationExecutionContext", "expandedTargetTypes": [ - "Aspire.Hosting.Pipelines.PipelineContext" + "Aspire.Hosting.DistributedApplicationExecutionContext" ] }, { - "name": "logger", - "capabilityId": "Aspire.Hosting.Pipelines/PipelineContext.logger", - "qualifiedName": "PipelineContext.logger", - "description": "Gets the logger for pipeline operations.", + "name": "runConfiguration", + "capabilityId": "Aspire.Hosting/DistributedApplicationExecutionContext.runConfiguration", + "qualifiedName": "DistributedApplicationExecutionContext.runConfiguration", + "description": "Describes how the AppHost is being run. Only meaningful when `Operation` is `Run`; otherwise every aspect holds its default value.", "kind": "PropertyGetter", - "signature": "logger(): ILogger", + "signature": "runConfiguration(): RunConfiguration", "parameters": [], - "returnType": "ILogger", - "targetTypeId": "Aspire.Hosting/Aspire.Hosting.Pipelines.PipelineContext", + "returnType": "RunConfiguration", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.DistributedApplicationExecutionContext", "expandedTargetTypes": [ - "Aspire.Hosting.Pipelines.PipelineContext" + "Aspire.Hosting.DistributedApplicationExecutionContext" ] }, { - "name": "model", - "capabilityId": "Aspire.Hosting.Pipelines/PipelineContext.model", - "qualifiedName": "PipelineContext.model", - "description": "Gets the distributed application model to be deployed.", + "name": "serviceProvider", + "capabilityId": "Aspire.Hosting/DistributedApplicationExecutionContext.serviceProvider", + "qualifiedName": "DistributedApplicationExecutionContext.serviceProvider", + "description": "The `IServiceProvider` for the AppHost.", "kind": "PropertyGetter", - "signature": "model(): DistributedApplicationModel", + "signature": "serviceProvider(): IServiceProvider", "parameters": [], - "returnType": "DistributedApplicationModel", - "targetTypeId": "Aspire.Hosting/Aspire.Hosting.Pipelines.PipelineContext", + "returnType": "IServiceProvider", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.DistributedApplicationExecutionContext", "expandedTargetTypes": [ - "Aspire.Hosting.Pipelines.PipelineContext" + "Aspire.Hosting.DistributedApplicationExecutionContext" ] }, { "name": "services", - "capabilityId": "Aspire.Hosting.Pipelines/PipelineContext.services", - "qualifiedName": "PipelineContext.services", - "description": "Gets the service provider for dependency resolution.", + "capabilityId": "Aspire.Hosting/DistributedApplicationExecutionContext.services", + "qualifiedName": "DistributedApplicationExecutionContext.services", + "description": "The `IServiceProvider` for the AppHost.", "kind": "PropertyGetter", "signature": "services(): IServiceProvider", "parameters": [], "returnType": "IServiceProvider", - "targetTypeId": "Aspire.Hosting/Aspire.Hosting.Pipelines.PipelineContext", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.DistributedApplicationExecutionContext", "expandedTargetTypes": [ - "Aspire.Hosting.Pipelines.PipelineContext" + "Aspire.Hosting.DistributedApplicationExecutionContext" ] }, { - "name": "setCancellationToken", - "capabilityId": "Aspire.Hosting.Pipelines/PipelineContext.setCancellationToken", - "qualifiedName": "PipelineContext.setCancellationToken", - "description": "Gets the cancellation token for the pipeline operation.", + "name": "setPublisherName", + "capabilityId": "Aspire.Hosting/DistributedApplicationExecutionContext.setPublisherName", + "qualifiedName": "DistributedApplicationExecutionContext.setPublisherName", + "description": "The name of the publisher that is being used if `Operation` is set to `Publish`.", "kind": "PropertySetter", - "signature": "setCancellationToken(value: cancellationToken): PipelineContext", + "signature": "setPublisherName(value: string): DistributedApplicationExecutionContext", "parameters": [ { "name": "value", - "type": "cancellationToken" + "type": "string" } ], - "returnType": "PipelineContext", - "targetTypeId": "Aspire.Hosting/Aspire.Hosting.Pipelines.PipelineContext", + "returnType": "DistributedApplicationExecutionContext", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.DistributedApplicationExecutionContext", "expandedTargetTypes": [ - "Aspire.Hosting.Pipelines.PipelineContext" - ] - }, - { - "name": "summary", - "capabilityId": "Aspire.Hosting.Pipelines/PipelineContext.summary", - "qualifiedName": "PipelineContext.summary", - "description": "Gets the pipeline summary that steps can add information to. The summary will be displayed to users after pipeline execution completes.", - "remarks": "Pipeline steps can add key-value pairs to the summary to provide useful information\nabout the pipeline execution, such as deployment targets, resource names, URLs, etc.", - "kind": "PropertyGetter", - "signature": "summary(): PipelineSummary", - "parameters": [], - "returnType": "PipelineSummary", - "targetTypeId": "Aspire.Hosting/Aspire.Hosting.Pipelines.PipelineContext", - "expandedTargetTypes": [ - "Aspire.Hosting.Pipelines.PipelineContext" + "Aspire.Hosting.DistributedApplicationExecutionContext" ] } ] }, { - "name": "PipelineEditor", - "fullName": "Aspire.Hosting.Pipelines.PipelineEditor", + "name": "DistributedApplicationExecutionContextOptions", + "fullName": "Aspire.Hosting.DistributedApplicationExecutionContextOptions", "kind": "handle", - "description": "Provides an ATS-first editor for pipeline configuration callbacks.", + "description": "Configuration options and references that need to be exposed to the {@ats-ref type:DistributedApplicationExecutionContext}.", + "implementedInterfaces": [], + "baseTypeHierarchy": [], + "capabilities": [] + }, + { + "name": "DistributedApplicationEventSubscription", + "fullName": "Aspire.Hosting.Eventing.DistributedApplicationEventSubscription", + "kind": "handle", + "description": "Represents a subscription to an event that is published during the lifecycle of the AppHost.", + "implementedInterfaces": [], + "baseTypeHierarchy": [], + "capabilities": [] + }, + { + "name": "DistributedApplicationResourceEventSubscription", + "fullName": "Aspire.Hosting.Eventing.DistributedApplicationResourceEventSubscription", + "kind": "handle", + "description": "Represents a subscription to an event that is published during the lifecycle of the AppHost for a specific resource.", + "implementedInterfaces": [], + "baseTypeHierarchy": [ + "Aspire.Hosting.Eventing.DistributedApplicationEventSubscription" + ], + "capabilities": [] + }, + { + "name": "IDistributedApplicationEvent", + "fullName": "Aspire.Hosting.Eventing.IDistributedApplicationEvent", + "kind": "handle", + "isInterface": true, + "description": "Represents an event that is published during the lifecycle of the AppHost.", + "implementedInterfaces": [], + "baseTypeHierarchy": [], + "capabilities": [] + }, + { + "name": "IDistributedApplicationEventing", + "fullName": "Aspire.Hosting.Eventing.IDistributedApplicationEventing", + "kind": "handle", + "isInterface": true, + "exposeMethods": true, + "description": "Supports publishing and subscribing to events which are executed during the AppHost lifecycle.", "implementedInterfaces": [], "baseTypeHierarchy": [], "capabilities": [ { - "name": "steps", - "capabilityId": "Aspire.Hosting.Pipelines/steps", - "qualifiedName": "PipelineEditor.steps", - "description": "Gets all configured pipeline steps.", - "returns": "The configured pipeline steps.", + "name": "unsubscribe", + "capabilityId": "Aspire.Hosting.Eventing/IDistributedApplicationEventing.unsubscribe", + "qualifiedName": "IDistributedApplicationEventing.unsubscribe", + "description": "Unsubscribe from an event.", "kind": "InstanceMethod", - "signature": "steps(): PipelineStep[]", - "parameters": [], - "returnType": "PipelineStep[]", - "targetTypeId": "Aspire.Hosting/Aspire.Hosting.Pipelines.PipelineEditor", + "signature": "unsubscribe(subscription: DistributedApplicationEventSubscription): void", + "parameters": [ + { + "name": "subscription", + "type": "DistributedApplicationEventSubscription", + "description": "The specific subscription to unsubscribe." + } + ], + "returnType": "void", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.Eventing.IDistributedApplicationEventing", "expandedTargetTypes": [ - "Aspire.Hosting.Pipelines.PipelineEditor" + "Aspire.Hosting.Eventing.IDistributedApplicationEventing" ] - }, + } + ] + }, + { + "name": "IDistributedApplicationResourceEvent", + "fullName": "Aspire.Hosting.Eventing.IDistributedApplicationResourceEvent", + "kind": "handle", + "isInterface": true, + "description": "Represents an event that is published during the lifecycle of the AppHost for a specific resource.", + "implementedInterfaces": [], + "baseTypeHierarchy": [], + "capabilities": [] + }, + { + "name": "ExternalServiceResource", + "fullName": "Aspire.Hosting.ExternalServiceResource", + "kind": "handle", + "implementedInterfaces": [ + "Aspire.Hosting.ApplicationModel.IResource" + ], + "baseTypeHierarchy": [ + "Aspire.Hosting.ApplicationModel.Resource" + ], + "capabilities": [ { - "name": "stepsByTag", - "capabilityId": "Aspire.Hosting.Pipelines/stepsByTag", - "qualifiedName": "PipelineEditor.stepsByTag", - "description": "Gets all pipeline steps that have the specified tag.", - "returns": "The matching pipeline steps.", - "kind": "InstanceMethod", - "signature": "stepsByTag(tag: string): PipelineStep[]", + "name": "withHttpHealthCheck", + "capabilityId": "Aspire.Hosting/withExternalServiceHttpHealthCheck", + "qualifiedName": "withHttpHealthCheck", + "description": "Adds an HTTP health check to the external service for polyglot AppHosts.", + "kind": "Method", + "signature": "withHttpHealthCheck(path?: string, statusCode?: number, endpointName?: string): ExternalServiceResource", "parameters": [ { - "name": "tag", + "name": "path", "type": "string", - "description": "The tag to search for." + "isOptional": true + }, + { + "name": "statusCode", + "type": "number", + "isOptional": true, + "isNullable": true + }, + { + "name": "endpointName", + "type": "string", + "isOptional": true } ], - "returnType": "PipelineStep[]", - "targetTypeId": "Aspire.Hosting/Aspire.Hosting.Pipelines.PipelineEditor", + "returnType": "ExternalServiceResource", + "returnsBuilder": true, + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ExternalServiceResource", "expandedTargetTypes": [ - "Aspire.Hosting.Pipelines.PipelineEditor" + "Aspire.Hosting.ExternalServiceResource" ] } ] }, { - "name": "PipelineStep", - "fullName": "Aspire.Hosting.Pipelines.PipelineStep", + "name": "IDistributedApplicationBuilder", + "fullName": "Aspire.Hosting.IDistributedApplicationBuilder", "kind": "handle", - "exposeProperties": true, - "description": "Represents a step in the deployment pipeline.", + "isInterface": true, + "description": "A builder for creating instances of {@ats-ref type:DistributedApplication}.", "implementedInterfaces": [], "baseTypeHierarchy": [], "capabilities": [ { - "name": "addTag", - "capabilityId": "Aspire.Hosting.Pipelines/addTag", - "qualifiedName": "PipelineStep.addTag", - "description": "Adds a tag to the step.", - "kind": "InstanceMethod", - "signature": "addTag(tag: string): void", + "name": "addConnectionString", + "capabilityId": "Aspire.Hosting/addConnectionString", + "qualifiedName": "addConnectionString", + "description": "Adds a connection string resource", + "kind": "Method", + "signature": "addConnectionString(name: string, environmentVariableNameOrExpression?: ReferenceExpression): IResourceWithConnectionString", "parameters": [ { - "name": "tag", - "type": "string", - "description": "The tag to add." + "name": "name", + "type": "string" + }, + { + "name": "environmentVariableNameOrExpression", + "type": "ReferenceExpression", + "isOptional": true } ], - "returnType": "void", - "targetTypeId": "Aspire.Hosting/Aspire.Hosting.Pipelines.PipelineStep", + "returnType": "IResourceWithConnectionString", + "returnsBuilder": true, + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.IDistributedApplicationBuilder", "expandedTargetTypes": [ - "Aspire.Hosting.Pipelines.PipelineStep" + "Aspire.Hosting.IDistributedApplicationBuilder" ] }, { - "name": "dependsOn", - "capabilityId": "Aspire.Hosting.Pipelines/dependsOn", - "qualifiedName": "PipelineStep.dependsOn", - "description": "Adds a dependency on another step.", - "kind": "InstanceMethod", - "signature": "dependsOn(stepName: string): void", + "name": "addContainer", + "capabilityId": "Aspire.Hosting/addContainer", + "qualifiedName": "addContainer", + "description": "Adds a container resource to the application.", + "returns": "The resource builder.", + "kind": "Method", + "signature": "addContainer(name: string, image: AddContainerOptions): ContainerResource", "parameters": [ { - "name": "stepName", + "name": "name", "type": "string", - "description": "The name of the step to depend on." + "description": "The name of the resource." + }, + { + "name": "image", + "type": "AddContainerOptions", + "description": "The image name or image options for the container." } ], - "returnType": "void", - "targetTypeId": "Aspire.Hosting/Aspire.Hosting.Pipelines.PipelineStep", + "returnType": "ContainerResource", + "returnsBuilder": true, + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.IDistributedApplicationBuilder", "expandedTargetTypes": [ - "Aspire.Hosting.Pipelines.PipelineStep" + "Aspire.Hosting.IDistributedApplicationBuilder" ] }, { - "name": "dependsOnSteps", - "capabilityId": "Aspire.Hosting.Pipelines/PipelineStep.dependsOnSteps", - "qualifiedName": "PipelineStep.dependsOnSteps", - "description": "Gets or initializes the list of step names that this step depends on.", - "kind": "PropertyGetter", - "signature": "dependsOnSteps(): List", - "parameters": [], - "returnType": "List", - "targetTypeId": "Aspire.Hosting/Aspire.Hosting.Pipelines.PipelineStep", + "name": "addContainerRegistry", + "capabilityId": "Aspire.Hosting/addContainerRegistry", + "qualifiedName": "addContainerRegistry", + "description": "Adds a container registry resource", + "kind": "Method", + "signature": "addContainerRegistry(name: string, endpoint: ParameterResource, repository?: ParameterResource): ContainerRegistryResource", + "parameters": [ + { + "name": "name", + "type": "string" + }, + { + "name": "endpoint", + "type": "ParameterResource" + }, + { + "name": "repository", + "type": "ParameterResource", + "isOptional": true + } + ], + "returnType": "ContainerRegistryResource", + "returnsBuilder": true, + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.IDistributedApplicationBuilder", "expandedTargetTypes": [ - "Aspire.Hosting.Pipelines.PipelineStep" + "Aspire.Hosting.IDistributedApplicationBuilder" ] }, { - "name": "description", - "capabilityId": "Aspire.Hosting.Pipelines/PipelineStep.description", - "qualifiedName": "PipelineStep.description", - "description": "Gets or initializes the description of the step.", - "remarks": "The description provides human-readable context about what the step does,\nhelping users and tools understand the purpose of the step.", - "kind": "PropertyGetter", - "signature": "description(): string", - "parameters": [], - "returnType": "string", - "targetTypeId": "Aspire.Hosting/Aspire.Hosting.Pipelines.PipelineStep", - "expandedTargetTypes": [ - "Aspire.Hosting.Pipelines.PipelineStep" - ] - }, - { - "name": "name", - "capabilityId": "Aspire.Hosting.Pipelines/PipelineStep.name", - "qualifiedName": "PipelineStep.name", - "description": "Gets or initializes the unique name of the step.", - "kind": "PropertyGetter", - "signature": "name(): string", - "parameters": [], - "returnType": "string", - "targetTypeId": "Aspire.Hosting/Aspire.Hosting.Pipelines.PipelineStep", + "name": "addCSharpApp", + "capabilityId": "Aspire.Hosting/addCSharpApp", + "qualifiedName": "addCSharpApp", + "description": "Adds a C# application resource", + "kind": "Method", + "signature": "addCSharpApp(name: string, path: string, options?: ProjectResourceOptions): CSharpAppResource", + "parameters": [ + { + "name": "name", + "type": "string" + }, + { + "name": "path", + "type": "string" + }, + { + "name": "options", + "type": "ProjectResourceOptions", + "isOptional": true + } + ], + "returnType": "CSharpAppResource", + "returnsBuilder": true, + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.IDistributedApplicationBuilder", "expandedTargetTypes": [ - "Aspire.Hosting.Pipelines.PipelineStep" + "Aspire.Hosting.IDistributedApplicationBuilder" ] }, { - "name": "requiredBy", - "capabilityId": "Aspire.Hosting.Pipelines/requiredBy", - "qualifiedName": "PipelineStep.requiredBy", - "description": "Specifies that this step is required by another step. This creates the inverse relationship where the other step will depend on this step.", - "kind": "InstanceMethod", - "signature": "requiredBy(stepName: string): void", + "name": "addDockerfile", + "capabilityId": "Aspire.Hosting/addDockerfile", + "qualifiedName": "addDockerfile", + "description": "Adds a Dockerfile to the application model that can be treated like a container resource.", + "returns": "The resource builder.", + "kind": "Method", + "signature": "addDockerfile(name: string, contextPath: string, dockerfilePath?: string, stage?: string): ContainerResource", "parameters": [ { - "name": "stepName", + "name": "name", "type": "string", - "description": "The name of the step that requires this step." + "description": "The name of the resource." + }, + { + "name": "contextPath", + "type": "string", + "description": "Path to be used as the context for the container image build." + }, + { + "name": "dockerfilePath", + "type": "string", + "isOptional": true, + "description": "Path to the Dockerfile relative to the `contextPath`. Defaults to \"Dockerfile\" if not specified." + }, + { + "name": "stage", + "type": "string", + "isOptional": true, + "description": "The stage representing the image to be published in a multi-stage Dockerfile." } ], - "returnType": "void", - "targetTypeId": "Aspire.Hosting/Aspire.Hosting.Pipelines.PipelineStep", + "returnType": "ContainerResource", + "returnsBuilder": true, + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.IDistributedApplicationBuilder", "expandedTargetTypes": [ - "Aspire.Hosting.Pipelines.PipelineStep" + "Aspire.Hosting.IDistributedApplicationBuilder" ] }, { - "name": "requiredBySteps", - "capabilityId": "Aspire.Hosting.Pipelines/PipelineStep.requiredBySteps", - "qualifiedName": "PipelineStep.requiredBySteps", - "description": "Gets or initializes the list of step names that require this step to complete before they can finish. This is used internally during pipeline construction and is converted to DependsOn relationships.", - "kind": "PropertyGetter", - "signature": "requiredBySteps(): List", - "parameters": [], - "returnType": "List", - "targetTypeId": "Aspire.Hosting/Aspire.Hosting.Pipelines.PipelineStep", + "name": "addDockerfileBuilder", + "capabilityId": "Aspire.Hosting/addDockerfileBuilder", + "qualifiedName": "addDockerfileBuilder", + "description": "Adds a container resource built from a programmatically generated Dockerfile", + "remarks": "This method provides a programmatic way to build Dockerfiles using the `DockerfileBuilder` API\ninstead of string manipulation.\nThe `contextPath` is relative to the AppHost directory unless it is fully qualified.\nCreates a container with a programmatically built Dockerfile:\n```\nvar builder = DistributedApplication.CreateBuilder(args);\nbuilder.AddDockerfileBuilder(\"mycontainer\", \"path/to/context\", context =>\n{\ncontext.Builder.From(\"alpine:latest\")\n.WorkDir(\"/app\")\n.Copy(\".\", \".\")\n.Cmd([\"./myapp\"]);\nreturn Task.CompletedTask;\n});\nbuilder.Build().Run();\n```", + "returns": "The resource builder.", + "kind": "Method", + "signature": "addDockerfileBuilder(name: string, contextPath: string, callback: (arg: DockerfileBuilderCallbackContext) => Promise, stage?: string): ContainerResource", + "parameters": [ + { + "name": "name", + "type": "string", + "description": "The name of the resource." + }, + { + "name": "contextPath", + "type": "string", + "description": "Path to be used as the context for the container image build." + }, + { + "name": "callback", + "type": "callback", + "isCallback": true, + "callbackSignature": "(arg: DockerfileBuilderCallbackContext) => Promise", + "description": "A callback that uses the `DockerfileBuilder` API to construct the Dockerfile." + }, + { + "name": "stage", + "type": "string", + "isOptional": true, + "description": "The stage representing the image to be published in a multi-stage Dockerfile." + } + ], + "returnType": "ContainerResource", + "returnsBuilder": true, + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.IDistributedApplicationBuilder", "expandedTargetTypes": [ - "Aspire.Hosting.Pipelines.PipelineStep" + "Aspire.Hosting.IDistributedApplicationBuilder" ] }, { - "name": "tags", - "capabilityId": "Aspire.Hosting.Pipelines/PipelineStep.tags", - "qualifiedName": "PipelineStep.tags", - "description": "Gets or initializes the list of tags that categorize this step.", - "kind": "PropertyGetter", - "signature": "tags(): List", - "parameters": [], - "returnType": "List", - "targetTypeId": "Aspire.Hosting/Aspire.Hosting.Pipelines.PipelineStep", + "name": "addDockerfileFactory", + "capabilityId": "Aspire.Hosting/addDockerfileFactory", + "qualifiedName": "addDockerfileFactory", + "description": "Adds a Dockerfile to the application model that can be treated like a container resource, with the Dockerfile content generated by an asynchronous factory function.", + "remarks": "The `contextPath` is relative to the AppHost directory unless it is fully qualified.\nThe factory function is invoked once during the build process to generate the Dockerfile content.\nThe output is trusted and not validated.", + "returns": "The resource builder.", + "kind": "Method", + "signature": "addDockerfileFactory(name: string, contextPath: string, dockerfileFactory: (arg: DockerfileFactoryContext) => Promise, stage?: string): ContainerResource", + "parameters": [ + { + "name": "name", + "type": "string", + "description": "The name of the resource." + }, + { + "name": "contextPath", + "type": "string", + "description": "Path to be used as the context for the container image build." + }, + { + "name": "dockerfileFactory", + "type": "callback", + "isCallback": true, + "callbackSignature": "(arg: DockerfileFactoryContext) => Promise", + "description": "An asynchronous function that returns the Dockerfile content as a string." + }, + { + "name": "stage", + "type": "string", + "isOptional": true, + "description": "The stage representing the image to be published in a multi-stage Dockerfile." + } + ], + "returnType": "ContainerResource", + "returnsBuilder": true, + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.IDistributedApplicationBuilder", "expandedTargetTypes": [ - "Aspire.Hosting.Pipelines.PipelineStep" + "Aspire.Hosting.IDistributedApplicationBuilder" ] - } - ] - }, - { - "name": "PipelineStepContext", - "fullName": "Aspire.Hosting.Pipelines.PipelineStepContext", - "kind": "handle", - "exposeProperties": true, - "description": "Provides contextual information for a specific pipeline step execution.", - "remarks": "This context combines the shared pipeline context with a step-specific publishing step,\nallowing each step to track its own tasks and completion state independently.", - "implementedInterfaces": [], - "baseTypeHierarchy": [], - "capabilities": [ + }, { - "name": "cancellationToken", - "capabilityId": "Aspire.Hosting.Pipelines/PipelineStepContext.cancellationToken", - "qualifiedName": "PipelineStepContext.cancellationToken", - "description": "Gets the cancellation token for the pipeline operation.", - "kind": "PropertyGetter", - "signature": "cancellationToken(): cancellationToken", - "parameters": [], - "returnType": "cancellationToken", - "targetTypeId": "Aspire.Hosting/Aspire.Hosting.Pipelines.PipelineStepContext", + "name": "addDotnetTool", + "capabilityId": "Aspire.Hosting/addDotnetTool", + "qualifiedName": "addDotnetTool", + "description": "Adds a .NET tool resource to the application model.", + "returns": "The resource builder.", + "kind": "Method", + "signature": "addDotnetTool(name: string, packageId: string): DotnetToolResource", + "parameters": [ + { + "name": "name", + "type": "string", + "description": "The name of the resource." + }, + { + "name": "packageId", + "type": "string", + "description": "The package id of the tool." + } + ], + "returnType": "DotnetToolResource", + "returnsBuilder": true, + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.IDistributedApplicationBuilder", "expandedTargetTypes": [ - "Aspire.Hosting.Pipelines.PipelineStepContext" + "Aspire.Hosting.IDistributedApplicationBuilder" ] }, { - "name": "executionContext", - "capabilityId": "Aspire.Hosting.Pipelines/PipelineStepContext.executionContext", - "qualifiedName": "PipelineStepContext.executionContext", - "description": "Gets the execution context for the distributed application.", - "kind": "PropertyGetter", - "signature": "executionContext(): DistributedApplicationExecutionContext", - "parameters": [], - "returnType": "DistributedApplicationExecutionContext", - "targetTypeId": "Aspire.Hosting/Aspire.Hosting.Pipelines.PipelineStepContext", + "name": "addEventingSubscriber", + "capabilityId": "Aspire.Hosting/addEventingSubscriber", + "qualifiedName": "addEventingSubscriber", + "description": "Adds an ATS-friendly eventing subscriber callback to the distributed-application builder.", + "kind": "Method", + "signature": "addEventingSubscriber(subscribe: (arg: EventingSubscriberRegistrationContext) => Promise): void", + "parameters": [ + { + "name": "subscribe", + "type": "callback", + "isCallback": true, + "callbackSignature": "(arg: EventingSubscriberRegistrationContext) => Promise", + "description": "The callback that registers the event subscriptions." + } + ], + "returnType": "void", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.IDistributedApplicationBuilder", "expandedTargetTypes": [ - "Aspire.Hosting.Pipelines.PipelineStepContext" + "Aspire.Hosting.IDistributedApplicationBuilder" ] }, { - "name": "logger", - "capabilityId": "Aspire.Hosting.Pipelines/PipelineStepContext.logger", - "qualifiedName": "PipelineStepContext.logger", - "description": "Gets the logger for pipeline operations that writes to both the pipeline logger and the step logger.", - "kind": "PropertyGetter", - "signature": "logger(): ILogger", - "parameters": [], - "returnType": "ILogger", - "targetTypeId": "Aspire.Hosting/Aspire.Hosting.Pipelines.PipelineStepContext", - "expandedTargetTypes": [ - "Aspire.Hosting.Pipelines.PipelineStepContext" - ] - }, - { - "name": "model", - "capabilityId": "Aspire.Hosting.Pipelines/PipelineStepContext.model", - "qualifiedName": "PipelineStepContext.model", - "description": "Gets the distributed application model to be deployed.", - "kind": "PropertyGetter", - "signature": "model(): DistributedApplicationModel", - "parameters": [], - "returnType": "DistributedApplicationModel", - "targetTypeId": "Aspire.Hosting/Aspire.Hosting.Pipelines.PipelineStepContext", - "expandedTargetTypes": [ - "Aspire.Hosting.Pipelines.PipelineStepContext" - ] - }, - { - "name": "pipelineContext", - "capabilityId": "Aspire.Hosting.Pipelines/PipelineStepContext.pipelineContext", - "qualifiedName": "PipelineStepContext.pipelineContext", - "description": "Gets the pipeline context shared across all steps.", - "kind": "PropertyGetter", - "signature": "pipelineContext(): PipelineContext", - "parameters": [], - "returnType": "PipelineContext", - "targetTypeId": "Aspire.Hosting/Aspire.Hosting.Pipelines.PipelineStepContext", - "expandedTargetTypes": [ - "Aspire.Hosting.Pipelines.PipelineStepContext" - ] - }, - { - "name": "reportingStep", - "capabilityId": "Aspire.Hosting.Pipelines/PipelineStepContext.reportingStep", - "qualifiedName": "PipelineStepContext.reportingStep", - "description": "Gets the publishing step associated with this specific step execution.", - "kind": "PropertyGetter", - "signature": "reportingStep(): IReportingStep", - "parameters": [], - "returnType": "IReportingStep", - "targetTypeId": "Aspire.Hosting/Aspire.Hosting.Pipelines.PipelineStepContext", + "name": "addExecutable", + "capabilityId": "Aspire.Hosting/addExecutable", + "qualifiedName": "addExecutable", + "description": "Adds an executable resource to the application model.", + "remarks": "You can run any executable command using its full path.\nAs a security feature, Aspire doesn't run executable unless the command is located in a path listed in the PATH environment variable.\nTo run an executable file that's in the current directory, specify the full path or use the relative path `./` to represent the current directory.", + "returns": "The resource builder.", + "kind": "Method", + "signature": "addExecutable(name: string, command: string, workingDirectory: string, args: string[]): ExecutableResource", + "parameters": [ + { + "name": "name", + "type": "string", + "description": "The name of the resource." + }, + { + "name": "command", + "type": "string", + "description": "The executable path. This can be a fully qualified path or a executable to run from the shell/command line." + }, + { + "name": "workingDirectory", + "type": "string", + "description": "The working directory of the executable." + }, + { + "name": "args", + "type": "string[]", + "description": "The arguments to the executable." + } + ], + "returnType": "ExecutableResource", + "returnsBuilder": true, + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.IDistributedApplicationBuilder", "expandedTargetTypes": [ - "Aspire.Hosting.Pipelines.PipelineStepContext" + "Aspire.Hosting.IDistributedApplicationBuilder" ] }, { - "name": "services", - "capabilityId": "Aspire.Hosting.Pipelines/PipelineStepContext.services", - "qualifiedName": "PipelineStepContext.services", - "description": "Gets the service provider for dependency resolution.", - "kind": "PropertyGetter", - "signature": "services(): IServiceProvider", - "parameters": [], - "returnType": "IServiceProvider", - "targetTypeId": "Aspire.Hosting/Aspire.Hosting.Pipelines.PipelineStepContext", + "name": "addExternalService", + "capabilityId": "Aspire.Hosting/addExternalService", + "qualifiedName": "addExternalService", + "description": "Adds an external service resource", + "kind": "Method", + "signature": "addExternalService(name: string, url: ParameterResource): ExternalServiceResource", + "parameters": [ + { + "name": "name", + "type": "string" + }, + { + "name": "url", + "type": "ParameterResource" + } + ], + "returnType": "ExternalServiceResource", + "returnsBuilder": true, + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.IDistributedApplicationBuilder", "expandedTargetTypes": [ - "Aspire.Hosting.Pipelines.PipelineStepContext" + "Aspire.Hosting.IDistributedApplicationBuilder" ] }, { - "name": "summary", - "capabilityId": "Aspire.Hosting.Pipelines/PipelineStepContext.summary", - "qualifiedName": "PipelineStepContext.summary", - "description": "Gets the pipeline summary that steps can add information to. The summary will be displayed to users after pipeline execution completes.", - "remarks": "Pipeline steps can add key-value pairs to the summary to provide useful information\nabout the pipeline execution, such as deployment targets, resource names, URLs, etc.", - "kind": "PropertyGetter", - "signature": "summary(): PipelineSummary", - "parameters": [], - "returnType": "PipelineSummary", - "targetTypeId": "Aspire.Hosting/Aspire.Hosting.Pipelines.PipelineStepContext", - "expandedTargetTypes": [ - "Aspire.Hosting.Pipelines.PipelineStepContext" - ] - } - ] - }, - { - "name": "PipelineStepFactoryContext", - "fullName": "Aspire.Hosting.Pipelines.PipelineStepFactoryContext", - "kind": "handle", - "exposeProperties": true, - "description": "Provides contextual information for creating pipeline steps from a {@ats-ref type:PipelineStepAnnotation}.", - "implementedInterfaces": [], - "baseTypeHierarchy": [], - "capabilities": [ - { - "name": "pipelineContext", - "capabilityId": "Aspire.Hosting.Pipelines/PipelineStepFactoryContext.pipelineContext", - "qualifiedName": "PipelineStepFactoryContext.pipelineContext", - "description": "Gets the pipeline context that has the model and other properties.", - "kind": "PropertyGetter", - "signature": "pipelineContext(): PipelineContext", - "parameters": [], - "returnType": "PipelineContext", - "targetTypeId": "Aspire.Hosting/Aspire.Hosting.Pipelines.PipelineStepFactoryContext", + "name": "addHealthCheck", + "capabilityId": "Aspire.Hosting/addHealthCheck", + "qualifiedName": "addHealthCheck", + "description": "Adds a custom health check callback to the distributed-application builder.", + "kind": "Method", + "signature": "addHealthCheck(name: string, check: () => Promise): void", + "parameters": [ + { + "name": "name", + "type": "string", + "description": "The health check registration name." + }, + { + "name": "check", + "type": "callback", + "isCallback": true, + "callbackSignature": "() => Promise", + "description": "The callback that evaluates the health check." + } + ], + "returnType": "void", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.IDistributedApplicationBuilder", "expandedTargetTypes": [ - "Aspire.Hosting.Pipelines.PipelineStepFactoryContext" + "Aspire.Hosting.IDistributedApplicationBuilder" ] }, { - "name": "resource", - "capabilityId": "Aspire.Hosting.Pipelines/PipelineStepFactoryContext.resource", - "qualifiedName": "PipelineStepFactoryContext.resource", - "description": "Gets the resource that this factory is associated with.", - "kind": "PropertyGetter", - "signature": "resource(): IResource", - "parameters": [], - "returnType": "IResource", - "targetTypeId": "Aspire.Hosting/Aspire.Hosting.Pipelines.PipelineStepFactoryContext", - "expandedTargetTypes": [ - "Aspire.Hosting.Pipelines.PipelineStepFactoryContext" - ] - } - ] - }, - { - "name": "PipelineSummary", - "fullName": "Aspire.Hosting.Pipelines.PipelineSummary", - "kind": "handle", - "exposeMethods": true, - "description": "Represents pipeline summary information to be displayed after pipeline completion. This is a general-purpose key-value collection that pipeline steps can contribute to.", - "remarks": "This class provides a flexible way for any pipeline step to contribute\ninformation to be displayed after pipeline execution. The data is stored as\nkey-value pairs that will be formatted as a table or list in the CLI output.\nPipeline steps can add any relevant information such as resource group names,\nsubscription IDs, URLs, namespaces, cluster names, or any other details.\nValues can be plain text or Markdown-formatted by using `MarkdownString`.\nThe summary is available via the `Summary`\nproperty and can be accessed from any pipeline step.", - "implementedInterfaces": [], - "baseTypeHierarchy": [], - "capabilities": [ - { - "name": "addMarkdown", - "capabilityId": "Aspire.Hosting/addMarkdown", - "qualifiedName": "addMarkdown", - "description": "Adds a key-value pair to the pipeline summary with a Markdown-formatted value.", + "name": "addParameter", + "capabilityId": "Aspire.Hosting/addParameter", + "qualifiedName": "addParameter", + "description": "Adds a parameter resource", "kind": "Method", - "signature": "addMarkdown(key: string, markdownString: string): void", + "signature": "addParameter(name: string, value?: string, publishValueAsDefault?: boolean, secret?: boolean): ParameterResource", "parameters": [ { - "name": "key", - "type": "string", - "description": "The key or label for the item." + "name": "name", + "type": "string" }, { - "name": "markdownString", + "name": "value", "type": "string", - "description": "The Markdown-formatted value for the item." + "isOptional": true + }, + { + "name": "publishValueAsDefault", + "type": "boolean", + "isOptional": true, + "defaultValue": "False" + }, + { + "name": "secret", + "type": "boolean", + "isOptional": true, + "defaultValue": "False" } ], - "returnType": "void", - "targetTypeId": "Aspire.Hosting/Aspire.Hosting.Pipelines.PipelineSummary", + "returnType": "ParameterResource", + "returnsBuilder": true, + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.IDistributedApplicationBuilder", "expandedTargetTypes": [ - "Aspire.Hosting.Pipelines.PipelineSummary" + "Aspire.Hosting.IDistributedApplicationBuilder" ] }, { - "name": "add", - "capabilityId": "Aspire.Hosting.Pipelines/PipelineSummary.add", - "qualifiedName": "PipelineSummary.add", - "description": "Adds a key-value pair to the pipeline summary with a plain-text value.", - "kind": "InstanceMethod", - "signature": "add(key: string, value: string): void", + "name": "addParameterFromConfiguration", + "capabilityId": "Aspire.Hosting/addParameterFromConfiguration", + "qualifiedName": "addParameterFromConfiguration", + "description": "Adds a parameter resource to the application, with a value coming from configuration.", + "returns": "Resource builder for the parameter.", + "kind": "Method", + "signature": "addParameterFromConfiguration(name: string, configurationKey: string, secret?: boolean): ParameterResource", "parameters": [ { - "name": "key", + "name": "name", "type": "string", - "description": "The key or label for the item (e.g., \"Namespace\", \"URL\")." + "description": "Name of parameter resource" }, { - "name": "value", + "name": "configurationKey", "type": "string", - "description": "The plain-text value for the item." + "description": "Configuration key used to get the value of the parameter" + }, + { + "name": "secret", + "type": "boolean", + "isOptional": true, + "defaultValue": "False", + "description": "Optional flag indicating whether the parameter should be regarded as secret." } ], - "returnType": "void", - "targetTypeId": "Aspire.Hosting/Aspire.Hosting.Pipelines.PipelineSummary", + "returnType": "ParameterResource", + "returnsBuilder": true, + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.IDistributedApplicationBuilder", "expandedTargetTypes": [ - "Aspire.Hosting.Pipelines.PipelineSummary" + "Aspire.Hosting.IDistributedApplicationBuilder" ] + }, + { + "name": "addParameterWithGeneratedValue", + "capabilityId": "Aspire.Hosting/addParameterWithGeneratedValue", + "qualifiedName": "addParameterWithGeneratedValue", + "description": "Adds a parameter with a generated default value", + "kind": "Method", + "signature": "addParameterWithGeneratedValue(name: string, value: GenerateParameterDefault, secret?: boolean, persist?: boolean): ParameterResource", + "parameters": [ + { + "name": "name", + "type": "string" + }, + { + "name": "value", + "type": "GenerateParameterDefault" + }, + { + "name": "secret", + "type": "boolean", + "isOptional": true, + "defaultValue": "False" + }, + { + "name": "persist", + "type": "boolean", + "isOptional": true, + "defaultValue": "False" + } + ], + "returnType": "ParameterResource", + "returnsBuilder": true, + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.IDistributedApplicationBuilder", + "expandedTargetTypes": [ + "Aspire.Hosting.IDistributedApplicationBuilder" + ] + }, + { + "name": "addProject", + "capabilityId": "Aspire.Hosting/addProject", + "qualifiedName": "addProject", + "description": "Adds a .NET project resource", + "kind": "Method", + "signature": "addProject(name: string, projectPath: string, launchProfileOrOptions?: ProjectResourceOptions): ProjectResource", + "parameters": [ + { + "name": "name", + "type": "string" + }, + { + "name": "projectPath", + "type": "string" + }, + { + "name": "launchProfileOrOptions", + "type": "ProjectResourceOptions", + "isOptional": true + } + ], + "returnType": "ProjectResource", + "returnsBuilder": true, + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.IDistributedApplicationBuilder", + "expandedTargetTypes": [ + "Aspire.Hosting.IDistributedApplicationBuilder" + ] + }, + { + "name": "getConfiguration", + "capabilityId": "Aspire.Hosting/getConfiguration", + "qualifiedName": "getConfiguration", + "description": "Gets the application configuration.", + "returns": "The configuration handle.", + "kind": "Method", + "signature": "getConfiguration(): IConfiguration", + "parameters": [], + "returnType": "IConfiguration", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.IDistributedApplicationBuilder", + "expandedTargetTypes": [ + "Aspire.Hosting.IDistributedApplicationBuilder" + ] + }, + { + "name": "appHostDirectory", + "capabilityId": "Aspire.Hosting/IDistributedApplicationBuilder.appHostDirectory", + "qualifiedName": "IDistributedApplicationBuilder.appHostDirectory", + "description": "Directory of the project where the AppHost is located. Defaults to the content root if there's no project.", + "kind": "PropertyGetter", + "signature": "appHostDirectory(): string", + "parameters": [], + "returnType": "string", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.IDistributedApplicationBuilder", + "expandedTargetTypes": [ + "Aspire.Hosting.IDistributedApplicationBuilder" + ] + }, + { + "name": "build", + "capabilityId": "Aspire.Hosting/build", + "qualifiedName": "IDistributedApplicationBuilder.build", + "description": "Builds the distributed application", + "remarks": "Callers of the `Build` method should only call it once. are responsible for the lifecycle of the\n`DistributedApplication` instance that is returned. Note that the `DistributedApplication`\ntype implements `IDisposable` and should be disposed of when it is no longer needed. Note that in\nmany templates and samples Dispose is omitted for brevity because in those cases the instance is destroyed\nwhen the process exists.", + "returns": "A new `DistributedApplication` instance.", + "kind": "InstanceMethod", + "signature": "build(): DistributedApplication", + "parameters": [], + "returnType": "DistributedApplication", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.IDistributedApplicationBuilder", + "expandedTargetTypes": [ + "Aspire.Hosting.IDistributedApplicationBuilder" + ] + }, + { + "name": "environment", + "capabilityId": "Aspire.Hosting/IDistributedApplicationBuilder.environment", + "qualifiedName": "IDistributedApplicationBuilder.environment", + "description": "Gets the Environment property", + "kind": "PropertyGetter", + "signature": "environment(): IHostEnvironment", + "parameters": [], + "returnType": "IHostEnvironment", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.IDistributedApplicationBuilder", + "expandedTargetTypes": [ + "Aspire.Hosting.IDistributedApplicationBuilder" + ] + }, + { + "name": "eventing", + "capabilityId": "Aspire.Hosting/IDistributedApplicationBuilder.eventing", + "qualifiedName": "IDistributedApplicationBuilder.eventing", + "description": "Eventing infrastructure for AppHost lifecycle.", + "kind": "PropertyGetter", + "signature": "eventing(): IDistributedApplicationEventing", + "parameters": [], + "returnType": "IDistributedApplicationEventing", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.IDistributedApplicationBuilder", + "expandedTargetTypes": [ + "Aspire.Hosting.IDistributedApplicationBuilder" + ] + }, + { + "name": "executionContext", + "capabilityId": "Aspire.Hosting/IDistributedApplicationBuilder.executionContext", + "qualifiedName": "IDistributedApplicationBuilder.executionContext", + "description": "Execution context for this invocation of the AppHost.", + "remarks": "Use this property to determine whether the AppHost is running locally or publishing\ndeployment artifacts, and adjust the application model accordingly.", + "kind": "PropertyGetter", + "signature": "executionContext(): DistributedApplicationExecutionContext", + "parameters": [], + "returnType": "DistributedApplicationExecutionContext", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.IDistributedApplicationBuilder", + "expandedTargetTypes": [ + "Aspire.Hosting.IDistributedApplicationBuilder" + ] + }, + { + "name": "pipeline", + "capabilityId": "Aspire.Hosting/IDistributedApplicationBuilder.pipeline", + "qualifiedName": "IDistributedApplicationBuilder.pipeline", + "description": "Gets the deployment pipeline for this distributed application.", + "remarks": "The pipeline allows adding custom deployment steps that execute during the deploy process.\nSteps can declare dependencies on other steps to control execution order.", + "kind": "PropertyGetter", + "signature": "pipeline(): IDistributedApplicationPipeline", + "parameters": [], + "returnType": "IDistributedApplicationPipeline", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.IDistributedApplicationBuilder", + "expandedTargetTypes": [ + "Aspire.Hosting.IDistributedApplicationBuilder" + ] + }, + { + "name": "userSecretsManager", + "capabilityId": "Aspire.Hosting/IDistributedApplicationBuilder.userSecretsManager", + "qualifiedName": "IDistributedApplicationBuilder.userSecretsManager", + "description": "Gets the service for managing user secrets.", + "remarks": "The `UserSecretsManager` provides a centralized way to manage user secrets\nused by Aspire, enabling testability and consistent secret management.", + "kind": "PropertyGetter", + "signature": "userSecretsManager(): IUserSecretsManager", + "parameters": [], + "returnType": "IUserSecretsManager", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.IDistributedApplicationBuilder", + "expandedTargetTypes": [ + "Aspire.Hosting.IDistributedApplicationBuilder" + ] + }, + { + "name": "subscribeAfterPublish", + "capabilityId": "Aspire.Hosting/subscribeAfterPublish", + "qualifiedName": "subscribeAfterPublish", + "description": "Subscribes to the AfterPublish event, which fires after the application is published.", + "remarks": "This event provides access to the service provider and distributed application model,\nallowing you to inspect the model after publish pipeline steps complete.", + "returns": "A subscription handle that can be used to unsubscribe.", + "kind": "Method", + "signature": "subscribeAfterPublish(callback: (arg: AfterPublishEvent) => Promise): DistributedApplicationEventSubscription", + "parameters": [ + { + "name": "callback", + "type": "callback", + "isCallback": true, + "callbackSignature": "(arg: AfterPublishEvent) => Promise", + "description": "A callback that receives the exported event when the event fires." + } + ], + "returnType": "DistributedApplicationEventSubscription", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.IDistributedApplicationBuilder", + "expandedTargetTypes": [ + "Aspire.Hosting.IDistributedApplicationBuilder" + ] + }, + { + "name": "subscribeAfterResourcesCreated", + "capabilityId": "Aspire.Hosting/subscribeAfterResourcesCreated", + "qualifiedName": "subscribeAfterResourcesCreated", + "description": "Subscribes to the AfterResourcesCreated event, which fires after all resources are created.", + "remarks": "At this point, all resources have been instantiated but may not yet be running.\nThis is useful for performing cross-resource configuration.", + "returns": "A subscription handle that can be used to unsubscribe.", + "kind": "Method", + "signature": "subscribeAfterResourcesCreated(callback: (arg: AfterResourcesCreatedEvent) => Promise): DistributedApplicationEventSubscription", + "parameters": [ + { + "name": "callback", + "type": "callback", + "isCallback": true, + "callbackSignature": "(arg: AfterResourcesCreatedEvent) => Promise", + "description": "A callback that receives the exported event when the event fires." + } + ], + "returnType": "DistributedApplicationEventSubscription", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.IDistributedApplicationBuilder", + "expandedTargetTypes": [ + "Aspire.Hosting.IDistributedApplicationBuilder" + ] + }, + { + "name": "subscribeBeforePublish", + "capabilityId": "Aspire.Hosting/subscribeBeforePublish", + "qualifiedName": "subscribeBeforePublish", + "description": "Subscribes to the BeforePublish event, which fires before the application is published.", + "remarks": "This event provides access to the service provider and distributed application model,\nallowing you to perform final configuration or validation before publish pipeline steps run.", + "returns": "A subscription handle that can be used to unsubscribe.", + "kind": "Method", + "signature": "subscribeBeforePublish(callback: (arg: BeforePublishEvent) => Promise): DistributedApplicationEventSubscription", + "parameters": [ + { + "name": "callback", + "type": "callback", + "isCallback": true, + "callbackSignature": "(arg: BeforePublishEvent) => Promise", + "description": "A callback that receives the exported event when the event fires." + } + ], + "returnType": "DistributedApplicationEventSubscription", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.IDistributedApplicationBuilder", + "expandedTargetTypes": [ + "Aspire.Hosting.IDistributedApplicationBuilder" + ] + }, + { + "name": "subscribeBeforeStart", + "capabilityId": "Aspire.Hosting/subscribeBeforeStart", + "qualifiedName": "subscribeBeforeStart", + "description": "Subscribes to the BeforeStart event, which fires before the application starts.", + "remarks": "This event provides access to the service provider and distributed application model,\nallowing you to perform final configuration or validation before resources start.", + "returns": "A subscription handle that can be used to unsubscribe.", + "kind": "Method", + "signature": "subscribeBeforeStart(callback: (arg: BeforeStartEvent) => Promise): DistributedApplicationEventSubscription", + "parameters": [ + { + "name": "callback", + "type": "callback", + "isCallback": true, + "callbackSignature": "(arg: BeforeStartEvent) => Promise", + "description": "A callback that receives the exported event when the event fires." + } + ], + "returnType": "DistributedApplicationEventSubscription", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.IDistributedApplicationBuilder", + "expandedTargetTypes": [ + "Aspire.Hosting.IDistributedApplicationBuilder" + ] + }, + { + "name": "tryAddEventingSubscriber", + "capabilityId": "Aspire.Hosting/tryAddEventingSubscriber", + "qualifiedName": "tryAddEventingSubscriber", + "description": "Attempts to add an ATS-friendly eventing subscriber callback to the distributed-application builder.", + "kind": "Method", + "signature": "tryAddEventingSubscriber(subscribe: (arg: EventingSubscriberRegistrationContext) => Promise): void", + "parameters": [ + { + "name": "subscribe", + "type": "callback", + "isCallback": true, + "callbackSignature": "(arg: EventingSubscriberRegistrationContext) => Promise", + "description": "The callback that registers the event subscriptions." + } + ], + "returnType": "void", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.IDistributedApplicationBuilder", + "expandedTargetTypes": [ + "Aspire.Hosting.IDistributedApplicationBuilder" + ] + } + ] + }, + { + "name": "IInteractionService", + "fullName": "Aspire.Hosting.IInteractionService", + "kind": "handle", + "isInterface": true, + "description": "A service to interact with the current development environment.", + "implementedInterfaces": [], + "baseTypeHierarchy": [], + "capabilities": [ + { + "name": "createBooleanInput", + "capabilityId": "Aspire.Hosting/createBooleanInput", + "qualifiedName": "createBooleanInput", + "description": "Creates a boolean (checkbox) input.", + "kind": "Method", + "signature": "createBooleanInput(name: string, options?: CreateInteractionInputOptions): InteractionInputBuilder", + "parameters": [ + { + "name": "name", + "type": "string" + }, + { + "name": "options", + "type": "CreateInteractionInputOptions", + "isOptional": true + } + ], + "returnType": "InteractionInputBuilder", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.IInteractionService", + "expandedTargetTypes": [ + "Aspire.Hosting.IInteractionService" + ] + }, + { + "name": "createChoiceInput", + "capabilityId": "Aspire.Hosting/createChoiceInput", + "qualifiedName": "createChoiceInput", + "description": "Creates a choice input that selects from a list of options.", + "kind": "Method", + "signature": "createChoiceInput(name: string, choices?: InteractionChoiceOption[], options?: CreateInteractionInputOptions): InteractionInputBuilder", + "parameters": [ + { + "name": "name", + "type": "string", + "description": "The name of the input." + }, + { + "name": "choices", + "type": "InteractionChoiceOption[]", + "isOptional": true, + "description": "The available choices, in display order. Each option pairs a submitted value with a display label." + }, + { + "name": "options", + "type": "CreateInteractionInputOptions", + "isOptional": true, + "description": "Optional configuration for the input." + } + ], + "returnType": "InteractionInputBuilder", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.IInteractionService", + "expandedTargetTypes": [ + "Aspire.Hosting.IInteractionService" + ] + }, + { + "name": "createFileInput", + "capabilityId": "Aspire.Hosting/createFileInput", + "qualifiedName": "createFileInput", + "description": "Creates a file input.", + "kind": "Method", + "signature": "createFileInput(name: string, options?: CreateInteractionInputOptions): InteractionInputBuilder", + "parameters": [ + { + "name": "name", + "type": "string" + }, + { + "name": "options", + "type": "CreateInteractionInputOptions", + "isOptional": true + } + ], + "returnType": "InteractionInputBuilder", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.IInteractionService", + "expandedTargetTypes": [ + "Aspire.Hosting.IInteractionService" + ] + }, + { + "name": "createNumberInput", + "capabilityId": "Aspire.Hosting/createNumberInput", + "qualifiedName": "createNumberInput", + "description": "Creates a numeric input.", + "kind": "Method", + "signature": "createNumberInput(name: string, options?: CreateInteractionInputOptions): InteractionInputBuilder", + "parameters": [ + { + "name": "name", + "type": "string" + }, + { + "name": "options", + "type": "CreateInteractionInputOptions", + "isOptional": true + } + ], + "returnType": "InteractionInputBuilder", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.IInteractionService", + "expandedTargetTypes": [ + "Aspire.Hosting.IInteractionService" + ] + }, + { + "name": "createSecretInput", + "capabilityId": "Aspire.Hosting/createSecretInput", + "qualifiedName": "createSecretInput", + "description": "Creates a secret (masked) text input.", + "kind": "Method", + "signature": "createSecretInput(name: string, options?: CreateInteractionInputOptions): InteractionInputBuilder", + "parameters": [ + { + "name": "name", + "type": "string" + }, + { + "name": "options", + "type": "CreateInteractionInputOptions", + "isOptional": true + } + ], + "returnType": "InteractionInputBuilder", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.IInteractionService", + "expandedTargetTypes": [ + "Aspire.Hosting.IInteractionService" + ] + }, + { + "name": "createTextInput", + "capabilityId": "Aspire.Hosting/createTextInput", + "qualifiedName": "createTextInput", + "description": "Creates a single-line text input.", + "kind": "Method", + "signature": "createTextInput(name: string, options?: CreateInteractionInputOptions): InteractionInputBuilder", + "parameters": [ + { + "name": "name", + "type": "string" + }, + { + "name": "options", + "type": "CreateInteractionInputOptions", + "isOptional": true + } + ], + "returnType": "InteractionInputBuilder", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.IInteractionService", + "expandedTargetTypes": [ + "Aspire.Hosting.IInteractionService" + ] + }, + { + "name": "isAvailable", + "capabilityId": "Aspire.Hosting/isAvailable", + "qualifiedName": "isAvailable", + "description": "Gets a value indicating whether the interaction service is available to prompt the user.", + "returns": "`true` when the service can prompt the user; otherwise `false`.", + "kind": "Method", + "signature": "isAvailable(): boolean", + "parameters": [], + "returnType": "boolean", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.IInteractionService", + "expandedTargetTypes": [ + "Aspire.Hosting.IInteractionService" + ] + }, + { + "name": "promptConfirmation", + "capabilityId": "Aspire.Hosting/promptConfirmation", + "qualifiedName": "promptConfirmation", + "description": "Prompts the user for confirmation with an OK/Cancel dialog.", + "kind": "Method", + "signature": "promptConfirmation(title: string, message: string, options?: InteractionMessageBoxOptions, cancellationToken?: cancellationToken): BoolInteractionResult", + "parameters": [ + { + "name": "title", + "type": "string" + }, + { + "name": "message", + "type": "string" + }, + { + "name": "options", + "type": "InteractionMessageBoxOptions", + "isOptional": true + }, + { + "name": "cancellationToken", + "type": "cancellationToken", + "isOptional": true + } + ], + "returnType": "BoolInteractionResult", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.IInteractionService", + "expandedTargetTypes": [ + "Aspire.Hosting.IInteractionService" + ] + }, + { + "name": "promptInput", + "capabilityId": "Aspire.Hosting/promptInput", + "qualifiedName": "promptInput", + "description": "Prompts the user for a single input.", + "kind": "Method", + "signature": "promptInput(title: string, message: string, input: InteractionInputBuilder, options?: InteractionInputsDialogOptions, cancellationToken?: cancellationToken): InputInteractionResult", + "parameters": [ + { + "name": "title", + "type": "string" + }, + { + "name": "message", + "type": "string" + }, + { + "name": "input", + "type": "InteractionInputBuilder" + }, + { + "name": "options", + "type": "InteractionInputsDialogOptions", + "isOptional": true + }, + { + "name": "cancellationToken", + "type": "cancellationToken", + "isOptional": true + } + ], + "returnType": "InputInteractionResult", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.IInteractionService", + "expandedTargetTypes": [ + "Aspire.Hosting.IInteractionService" + ] + }, + { + "name": "promptInputs", + "capabilityId": "Aspire.Hosting/promptInputs", + "qualifiedName": "promptInputs", + "description": "Prompts the user for multiple inputs.", + "kind": "Method", + "signature": "promptInputs(title: string, message: string, inputs: InteractionInputBuilder[], options?: InteractionInputsDialogOptions, cancellationToken?: cancellationToken): InputsInteractionResult", + "parameters": [ + { + "name": "title", + "type": "string" + }, + { + "name": "message", + "type": "string" + }, + { + "name": "inputs", + "type": "InteractionInputBuilder[]" + }, + { + "name": "options", + "type": "InteractionInputsDialogOptions", + "isOptional": true + }, + { + "name": "cancellationToken", + "type": "cancellationToken", + "isOptional": true + } + ], + "returnType": "InputsInteractionResult", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.IInteractionService", + "expandedTargetTypes": [ + "Aspire.Hosting.IInteractionService" + ] + }, + { + "name": "promptMessageBox", + "capabilityId": "Aspire.Hosting/promptMessageBox", + "qualifiedName": "promptMessageBox", + "description": "Prompts the user with a message box dialog.", + "kind": "Method", + "signature": "promptMessageBox(title: string, message: string, options?: InteractionMessageBoxOptions, cancellationToken?: cancellationToken): BoolInteractionResult", + "parameters": [ + { + "name": "title", + "type": "string" + }, + { + "name": "message", + "type": "string" + }, + { + "name": "options", + "type": "InteractionMessageBoxOptions", + "isOptional": true + }, + { + "name": "cancellationToken", + "type": "cancellationToken", + "isOptional": true + } + ], + "returnType": "BoolInteractionResult", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.IInteractionService", + "expandedTargetTypes": [ + "Aspire.Hosting.IInteractionService" + ] + }, + { + "name": "promptNotification", + "capabilityId": "Aspire.Hosting/promptNotification", + "qualifiedName": "promptNotification", + "description": "Prompts the user with a notification.", + "kind": "Method", + "signature": "promptNotification(title: string, message: string, options?: InteractionNotificationOptions, cancellationToken?: cancellationToken): BoolInteractionResult", + "parameters": [ + { + "name": "title", + "type": "string" + }, + { + "name": "message", + "type": "string" + }, + { + "name": "options", + "type": "InteractionNotificationOptions", + "isOptional": true + }, + { + "name": "cancellationToken", + "type": "cancellationToken", + "isOptional": true + } + ], + "returnType": "BoolInteractionResult", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.IInteractionService", + "expandedTargetTypes": [ + "Aspire.Hosting.IInteractionService" + ] + }, + { + "name": "promptProgress", + "capabilityId": "Aspire.Hosting/promptProgress", + "qualifiedName": "promptProgress", + "description": "Displays a progress dialog with an indeterminate progress indicator.", + "kind": "Method", + "signature": "promptProgress(message: string, title?: string, options?: InteractionProgressOptions, cancellationToken?: cancellationToken): BoolInteractionResult", + "parameters": [ + { + "name": "message", + "type": "string" + }, + { + "name": "title", + "type": "string", + "isOptional": true + }, + { + "name": "options", + "type": "InteractionProgressOptions", + "isOptional": true + }, + { + "name": "cancellationToken", + "type": "cancellationToken", + "isOptional": true + } + ], + "returnType": "BoolInteractionResult", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.IInteractionService", + "expandedTargetTypes": [ + "Aspire.Hosting.IInteractionService" + ] + } + ] + }, + { + "name": "InputsDialogValidationContext", + "fullName": "Aspire.Hosting.InputsDialogValidationContext", + "kind": "handle", + "exposeProperties": true, + "description": "Represents the context for validating inputs in an inputs dialog interaction.", + "implementedInterfaces": [], + "baseTypeHierarchy": [], + "capabilities": [ + { + "name": "addValidationError", + "capabilityId": "Aspire.Hosting/InputsDialogValidationContext.addValidationError", + "qualifiedName": "InputsDialogValidationContext.addValidationError", + "description": "Adds a validation error for the input with the specified name.", + "kind": "InstanceMethod", + "signature": "addValidationError(inputName: string, errorMessage: string): void", + "parameters": [ + { + "name": "inputName", + "type": "string", + "description": "The name of the input to add a validation error for." + }, + { + "name": "errorMessage", + "type": "string", + "description": "The error message to add." + } + ], + "returnType": "void", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.InputsDialogValidationContext", + "expandedTargetTypes": [ + "Aspire.Hosting.InputsDialogValidationContext" + ] + }, + { + "name": "cancellationToken", + "capabilityId": "Aspire.Hosting/InputsDialogValidationContext.cancellationToken", + "qualifiedName": "InputsDialogValidationContext.cancellationToken", + "description": "Gets the cancellation token for the validation operation.", + "kind": "PropertyGetter", + "signature": "cancellationToken(): cancellationToken", + "parameters": [], + "returnType": "cancellationToken", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.InputsDialogValidationContext", + "expandedTargetTypes": [ + "Aspire.Hosting.InputsDialogValidationContext" + ] + }, + { + "name": "inputs", + "capabilityId": "Aspire.Hosting/InputsDialogValidationContext.inputs", + "qualifiedName": "InputsDialogValidationContext.inputs", + "description": "Gets the inputs that are being validated.", + "kind": "PropertyGetter", + "signature": "inputs(): InteractionInputCollection", + "parameters": [], + "returnType": "InteractionInputCollection", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.InputsDialogValidationContext", + "expandedTargetTypes": [ + "Aspire.Hosting.InputsDialogValidationContext" + ] + }, + { + "name": "services", + "capabilityId": "Aspire.Hosting/InputsDialogValidationContext.services", + "qualifiedName": "InputsDialogValidationContext.services", + "description": "Gets the service provider for resolving services during validation.", + "kind": "PropertyGetter", + "signature": "services(): IServiceProvider", + "parameters": [], + "returnType": "IServiceProvider", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.InputsDialogValidationContext", + "expandedTargetTypes": [ + "Aspire.Hosting.InputsDialogValidationContext" + ] + } + ] + }, + { + "name": "InteractionInputCollection", + "fullName": "Aspire.Hosting.InteractionInputCollection", + "kind": "handle", + "description": "A collection of interaction inputs that supports both indexed and name-based access.", + "implementedInterfaces": [ + "System.Collections.Generic.IEnumerable`1[[Aspire.Hosting.InteractionInput]]", + "System.Collections.Generic.IReadOnlyCollection`1[[Aspire.Hosting.InteractionInput]]", + "System.Collections.Generic.IReadOnlyList`1[[Aspire.Hosting.InteractionInput]]", + "System.Collections.IEnumerable" + ], + "baseTypeHierarchy": [], + "capabilities": [ + { + "name": "toArray", + "capabilityId": "Aspire.Hosting/InteractionInputCollection.toArray", + "qualifiedName": "InteractionInputCollection.toArray", + "description": "Gets all inputs in declaration order.", + "returns": "A copy of the inputs in declaration order.", + "kind": "InstanceMethod", + "signature": "toArray(): InteractionInput[]", + "parameters": [], + "returnType": "InteractionInput[]", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.InteractionInputCollection", + "expandedTargetTypes": [ + "Aspire.Hosting.InteractionInputCollection" + ] + } + ] + }, + { + "name": "IResourceWithContainerFiles", + "fullName": "Aspire.Hosting.IResourceWithContainerFiles", + "kind": "handle", + "isInterface": true, + "implementedInterfaces": [], + "baseTypeHierarchy": [], + "capabilities": [ + { + "name": "clearContainerFilesSources", + "capabilityId": "Aspire.Hosting/clearContainerFilesSources", + "qualifiedName": "clearContainerFilesSources", + "description": "Removes any container files source annotation from the resource being built.", + "returns": "The resource builder instance with the container files source annotation applied.", + "kind": "Method", + "signature": "clearContainerFilesSources(): IResourceWithContainerFiles", + "parameters": [], + "returnType": "IResourceWithContainerFiles", + "returnsBuilder": true, + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.IResourceWithContainerFiles", + "expandedTargetTypes": [ + "Aspire.Hosting.IResourceWithContainerFiles" + ] + }, + { + "name": "withContainerFilesSource", + "capabilityId": "Aspire.Hosting/withContainerFilesSource", + "qualifiedName": "withContainerFilesSource", + "description": "Adds a container files source annotation to the resource being built, specifying the path to the container files source.", + "returns": "The resource builder instance with the container files source annotation applied.", + "kind": "Method", + "signature": "withContainerFilesSource(sourcePath: string): IResourceWithContainerFiles", + "parameters": [ + { + "name": "sourcePath", + "type": "string", + "description": "The path to the container files source to associate with the resource. Cannot be null." + } + ], + "returnType": "IResourceWithContainerFiles", + "returnsBuilder": true, + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.IResourceWithContainerFiles", + "expandedTargetTypes": [ + "Aspire.Hosting.IResourceWithContainerFiles" + ] + } + ] + }, + { + "name": "IUserSecretsManager", + "fullName": "Aspire.Hosting.IUserSecretsManager", + "kind": "handle", + "isInterface": true, + "exposeProperties": true, + "exposeMethods": true, + "description": "Defines an interface for managing user secrets with support for read and write operations.", + "implementedInterfaces": [], + "baseTypeHierarchy": [], + "capabilities": [ + { + "name": "getOrSetSecret", + "capabilityId": "Aspire.Hosting/getOrSetSecret", + "qualifiedName": "getOrSetSecret", + "description": "Gets a secret value if it exists in configuration, or sets it to the provided value if it does not.", + "kind": "Method", + "signature": "getOrSetSecret(resourceBuilder: IResource, name: string, value: string): void", + "parameters": [ + { + "name": "resourceBuilder", + "type": "IResource", + "description": "A resource builder from the target application." + }, + { + "name": "name", + "type": "string", + "description": "The secret name." + }, + { + "name": "value", + "type": "string", + "description": "The value to persist when the secret is missing." + } + ], + "returnType": "void", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.IUserSecretsManager", + "expandedTargetTypes": [ + "Aspire.Hosting.IUserSecretsManager" + ] + }, + { + "name": "filePath", + "capabilityId": "Aspire.Hosting/IUserSecretsManager.filePath", + "qualifiedName": "IUserSecretsManager.filePath", + "description": "Gets the path to the user secrets file.", + "kind": "PropertyGetter", + "signature": "filePath(): string", + "parameters": [], + "returnType": "string", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.IUserSecretsManager", + "expandedTargetTypes": [ + "Aspire.Hosting.IUserSecretsManager" + ] + }, + { + "name": "isAvailable", + "capabilityId": "Aspire.Hosting/IUserSecretsManager.isAvailable", + "qualifiedName": "IUserSecretsManager.isAvailable", + "description": "Gets a value indicating whether user secrets are available.", + "remarks": "Returns `true` if the project has a user secrets ID configured; otherwise, `false`.", + "kind": "PropertyGetter", + "signature": "isAvailable(): boolean", + "parameters": [], + "returnType": "boolean", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.IUserSecretsManager", + "expandedTargetTypes": [ + "Aspire.Hosting.IUserSecretsManager" + ] + }, + { + "name": "tryDeleteSecret", + "capabilityId": "Aspire.Hosting/IUserSecretsManager.tryDeleteSecret", + "qualifiedName": "IUserSecretsManager.tryDeleteSecret", + "description": "Attempts to delete a user secret value synchronously.", + "remarks": "The default implementation returns `false` so existing implementations remain compatible.", + "returns": "True if the secret was deleted successfully; otherwise, false.", + "kind": "InstanceMethod", + "signature": "tryDeleteSecret(name: string): boolean", + "parameters": [ + { + "name": "name", + "type": "string", + "description": "The name of the secret." + } + ], + "returnType": "boolean", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.IUserSecretsManager", + "expandedTargetTypes": [ + "Aspire.Hosting.IUserSecretsManager" + ] + }, + { + "name": "trySetSecret", + "capabilityId": "Aspire.Hosting/IUserSecretsManager.trySetSecret", + "qualifiedName": "IUserSecretsManager.trySetSecret", + "description": "Attempts to set a user secret value synchronously.", + "returns": "True if the secret was set successfully; otherwise, false.", + "kind": "InstanceMethod", + "signature": "trySetSecret(name: string, value: string): boolean", + "parameters": [ + { + "name": "name", + "type": "string", + "description": "The name of the secret." + }, + { + "name": "value", + "type": "string", + "description": "The value of the secret." + } + ], + "returnType": "boolean", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.IUserSecretsManager", + "expandedTargetTypes": [ + "Aspire.Hosting.IUserSecretsManager" + ] + }, + { + "name": "saveStateJson", + "capabilityId": "Aspire.Hosting/saveStateJson", + "qualifiedName": "saveStateJson", + "description": "Saves state to user secrets from a JSON string.", + "returns": "A task that completes when the state is saved.", + "kind": "Method", + "signature": "saveStateJson(json: string, cancellationToken?: cancellationToken): void", + "parameters": [ + { + "name": "json", + "type": "string", + "description": "The JSON object payload to persist." + }, + { + "name": "cancellationToken", + "type": "cancellationToken", + "isOptional": true, + "description": "The cancellation token." + } + ], + "returnType": "void", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.IUserSecretsManager", + "expandedTargetTypes": [ + "Aspire.Hosting.IUserSecretsManager" + ] + } + ] + }, + { + "name": "IDistributedApplicationPipeline", + "fullName": "Aspire.Hosting.Pipelines.IDistributedApplicationPipeline", + "kind": "handle", + "isInterface": true, + "description": "Represents a pipeline for executing deployment steps in a distributed application.", + "implementedInterfaces": [], + "baseTypeHierarchy": [], + "capabilities": [ + { + "name": "addStep", + "capabilityId": "Aspire.Hosting/addStep", + "qualifiedName": "addStep", + "description": "Adds an application-level pipeline step in a TypeScript-friendly shape.", + "kind": "Method", + "signature": "addStep(stepName: string, callback: (arg: PipelineStepContext) => Promise, dependsOn?: string[], requiredBy?: string[]): void", + "parameters": [ + { + "name": "stepName", + "type": "string", + "description": "The unique name of the pipeline step." + }, + { + "name": "callback", + "type": "callback", + "isCallback": true, + "callbackSignature": "(arg: PipelineStepContext) => Promise", + "description": "The callback to execute when the step runs." + }, + { + "name": "dependsOn", + "type": "string[]", + "isOptional": true, + "description": "Optional step names that this step depends on." + }, + { + "name": "requiredBy", + "type": "string[]", + "isOptional": true, + "description": "Optional step names that require this step." + } + ], + "returnType": "void", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.Pipelines.IDistributedApplicationPipeline", + "expandedTargetTypes": [ + "Aspire.Hosting.Pipelines.IDistributedApplicationPipeline" + ] + }, + { + "name": "configure", + "capabilityId": "Aspire.Hosting/configure", + "qualifiedName": "configure", + "description": "Registers a pipeline configuration callback in a TypeScript-friendly shape.", + "kind": "Method", + "signature": "configure(callback: (arg: PipelineConfigurationContext) => Promise): void", + "parameters": [ + { + "name": "callback", + "type": "callback", + "isCallback": true, + "callbackSignature": "(arg: PipelineConfigurationContext) => Promise", + "description": "The callback to execute during pipeline configuration." + } + ], + "returnType": "void", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.Pipelines.IDistributedApplicationPipeline", + "expandedTargetTypes": [ + "Aspire.Hosting.Pipelines.IDistributedApplicationPipeline" + ] + }, + { + "name": "disableBuildOnlyContainerValidation", + "capabilityId": "Aspire.Hosting/disableBuildOnlyContainerValidation", + "qualifiedName": "disableBuildOnlyContainerValidation", + "description": "Disables the publish and deploy validation that requires build-only containers to be consumed by another resource.", + "remarks": "This is an application-wide escape hatch for scenarios where the build-only container validation is too restrictive\nfor a particular app. Prefer wiring build-only containers through `PublishWithContainerFiles` or\n`PublishWithStaticFiles` when possible.", + "returns": "The distributed application pipeline for chaining.", + "kind": "Method", + "signature": "disableBuildOnlyContainerValidation(): IDistributedApplicationPipeline", + "parameters": [], + "returnType": "IDistributedApplicationPipeline", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.Pipelines.IDistributedApplicationPipeline", + "expandedTargetTypes": [ + "Aspire.Hosting.Pipelines.IDistributedApplicationPipeline" + ] + } + ] + }, + { + "name": "IReportingStep", + "fullName": "Aspire.Hosting.Pipelines.IReportingStep", + "kind": "handle", + "isInterface": true, + "description": "Represents a publishing step, which can contain multiple tasks.", + "implementedInterfaces": [], + "baseTypeHierarchy": [], + "capabilities": [ + { + "name": "completeStep", + "capabilityId": "Aspire.Hosting/completeStep", + "qualifiedName": "completeStep", + "description": "Completes the reporting step with plain-text completion text.", + "kind": "Method", + "signature": "completeStep(completionText: string, completionState?: string, cancellationToken?: cancellationToken): void", + "parameters": [ + { + "name": "completionText", + "type": "string" + }, + { + "name": "completionState", + "type": "string", + "isOptional": true, + "defaultValue": "completed" + }, + { + "name": "cancellationToken", + "type": "cancellationToken", + "isOptional": true + } + ], + "returnType": "void", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.Pipelines.IReportingStep", + "expandedTargetTypes": [ + "Aspire.Hosting.Pipelines.IReportingStep" + ] + }, + { + "name": "completeStepMarkdown", + "capabilityId": "Aspire.Hosting/completeStepMarkdown", + "qualifiedName": "completeStepMarkdown", + "description": "Completes the reporting step with Markdown-formatted completion text.", + "kind": "Method", + "signature": "completeStepMarkdown(markdownString: string, completionState?: string, cancellationToken?: cancellationToken): void", + "parameters": [ + { + "name": "markdownString", + "type": "string" + }, + { + "name": "completionState", + "type": "string", + "isOptional": true, + "defaultValue": "completed" + }, + { + "name": "cancellationToken", + "type": "cancellationToken", + "isOptional": true + } + ], + "returnType": "void", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.Pipelines.IReportingStep", + "expandedTargetTypes": [ + "Aspire.Hosting.Pipelines.IReportingStep" + ] + }, + { + "name": "createMarkdownTask", + "capabilityId": "Aspire.Hosting/createMarkdownTask", + "qualifiedName": "createMarkdownTask", + "description": "Creates a reporting task with Markdown-formatted status text.", + "kind": "Method", + "signature": "createMarkdownTask(markdownString: string, cancellationToken?: cancellationToken): IReportingTask", + "parameters": [ + { + "name": "markdownString", + "type": "string" + }, + { + "name": "cancellationToken", + "type": "cancellationToken", + "isOptional": true + } + ], + "returnType": "IReportingTask", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.Pipelines.IReportingStep", + "expandedTargetTypes": [ + "Aspire.Hosting.Pipelines.IReportingStep" + ] + }, + { + "name": "createTask", + "capabilityId": "Aspire.Hosting/createTask", + "qualifiedName": "createTask", + "description": "Creates a reporting task with plain-text status text.", + "kind": "Method", + "signature": "createTask(statusText: string, cancellationToken?: cancellationToken): IReportingTask", + "parameters": [ + { + "name": "statusText", + "type": "string" + }, + { + "name": "cancellationToken", + "type": "cancellationToken", + "isOptional": true + } + ], + "returnType": "IReportingTask", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.Pipelines.IReportingStep", + "expandedTargetTypes": [ + "Aspire.Hosting.Pipelines.IReportingStep" + ] + }, + { + "name": "logStep", + "capabilityId": "Aspire.Hosting/logStep", + "qualifiedName": "logStep", + "description": "Logs a plain-text message for the reporting step.", + "kind": "Method", + "signature": "logStep(level: string, message: string): void", + "parameters": [ + { + "name": "level", + "type": "string" + }, + { + "name": "message", + "type": "string" + } + ], + "returnType": "void", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.Pipelines.IReportingStep", + "expandedTargetTypes": [ + "Aspire.Hosting.Pipelines.IReportingStep" + ] + }, + { + "name": "logStepMarkdown", + "capabilityId": "Aspire.Hosting/logStepMarkdown", + "qualifiedName": "logStepMarkdown", + "description": "Logs a Markdown-formatted message for the reporting step.", + "kind": "Method", + "signature": "logStepMarkdown(level: string, markdownString: string): void", + "parameters": [ + { + "name": "level", + "type": "string" + }, + { + "name": "markdownString", + "type": "string" + } + ], + "returnType": "void", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.Pipelines.IReportingStep", + "expandedTargetTypes": [ + "Aspire.Hosting.Pipelines.IReportingStep" + ] + } + ] + }, + { + "name": "IReportingTask", + "fullName": "Aspire.Hosting.Pipelines.IReportingTask", + "kind": "handle", + "isInterface": true, + "description": "Represents a publishing task, which belongs to a step.", + "implementedInterfaces": [], + "baseTypeHierarchy": [], + "capabilities": [ + { + "name": "completeTask", + "capabilityId": "Aspire.Hosting/completeTask", + "qualifiedName": "completeTask", + "description": "Completes the reporting task with plain-text completion text.", + "kind": "Method", + "signature": "completeTask(completionMessage?: string, completionState?: string, cancellationToken?: cancellationToken): void", + "parameters": [ + { + "name": "completionMessage", + "type": "string", + "isOptional": true + }, + { + "name": "completionState", + "type": "string", + "isOptional": true, + "defaultValue": "completed" + }, + { + "name": "cancellationToken", + "type": "cancellationToken", + "isOptional": true + } + ], + "returnType": "void", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.Pipelines.IReportingTask", + "expandedTargetTypes": [ + "Aspire.Hosting.Pipelines.IReportingTask" + ] + }, + { + "name": "completeTaskMarkdown", + "capabilityId": "Aspire.Hosting/completeTaskMarkdown", + "qualifiedName": "completeTaskMarkdown", + "description": "Completes the reporting task with Markdown-formatted completion text.", + "kind": "Method", + "signature": "completeTaskMarkdown(markdownString: string, completionState?: string, cancellationToken?: cancellationToken): void", + "parameters": [ + { + "name": "markdownString", + "type": "string" + }, + { + "name": "completionState", + "type": "string", + "isOptional": true, + "defaultValue": "completed" + }, + { + "name": "cancellationToken", + "type": "cancellationToken", + "isOptional": true + } + ], + "returnType": "void", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.Pipelines.IReportingTask", + "expandedTargetTypes": [ + "Aspire.Hosting.Pipelines.IReportingTask" + ] + }, + { + "name": "updateTask", + "capabilityId": "Aspire.Hosting/updateTask", + "qualifiedName": "updateTask", + "description": "Updates the reporting task with plain-text status text.", + "kind": "Method", + "signature": "updateTask(statusText: string, cancellationToken?: cancellationToken): void", + "parameters": [ + { + "name": "statusText", + "type": "string" + }, + { + "name": "cancellationToken", + "type": "cancellationToken", + "isOptional": true + } + ], + "returnType": "void", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.Pipelines.IReportingTask", + "expandedTargetTypes": [ + "Aspire.Hosting.Pipelines.IReportingTask" + ] + }, + { + "name": "updateTaskMarkdown", + "capabilityId": "Aspire.Hosting/updateTaskMarkdown", + "qualifiedName": "updateTaskMarkdown", + "description": "Updates the reporting task with Markdown-formatted status text.", + "kind": "Method", + "signature": "updateTaskMarkdown(markdownString: string, cancellationToken?: cancellationToken): void", + "parameters": [ + { + "name": "markdownString", + "type": "string" + }, + { + "name": "cancellationToken", + "type": "cancellationToken", + "isOptional": true + } + ], + "returnType": "void", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.Pipelines.IReportingTask", + "expandedTargetTypes": [ + "Aspire.Hosting.Pipelines.IReportingTask" + ] + } + ] + }, + { + "name": "PipelineConfigurationContext", + "fullName": "Aspire.Hosting.Pipelines.PipelineConfigurationContext", + "kind": "handle", + "description": "Provides contextual information for pipeline configuration callbacks.", + "implementedInterfaces": [], + "baseTypeHierarchy": [], + "capabilities": [ + { + "name": "getSteps", + "capabilityId": "Aspire.Hosting.Pipelines/getSteps", + "qualifiedName": "PipelineConfigurationContext.getSteps", + "description": "Gets all pipeline steps with the specified tag.", + "returns": "A collection of steps that have the specified tag.", + "kind": "InstanceMethod", + "signature": "getSteps(tag: string): PipelineStep[]", + "parameters": [ + { + "name": "tag", + "type": "string", + "description": "The tag to search for." + } + ], + "returnType": "PipelineStep[]", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.Pipelines.PipelineConfigurationContext", + "expandedTargetTypes": [ + "Aspire.Hosting.Pipelines.PipelineConfigurationContext" + ] + }, + { + "name": "log", + "capabilityId": "Aspire.Hosting.Pipelines/PipelineConfigurationContext.log", + "qualifiedName": "PipelineConfigurationContext.log", + "description": "Gets the logger facade used by polyglot callbacks.", + "kind": "PropertyGetter", + "signature": "log(): LogFacade", + "parameters": [], + "returnType": "LogFacade", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.Pipelines.PipelineConfigurationContext", + "expandedTargetTypes": [ + "Aspire.Hosting.Pipelines.PipelineConfigurationContext" + ] + }, + { + "name": "pipeline", + "capabilityId": "Aspire.Hosting.Pipelines/PipelineConfigurationContext.pipeline", + "qualifiedName": "PipelineConfigurationContext.pipeline", + "description": "Gets the pipeline editor used by polyglot callbacks.", + "kind": "PropertyGetter", + "signature": "pipeline(): PipelineEditor", + "parameters": [], + "returnType": "PipelineEditor", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.Pipelines.PipelineConfigurationContext", + "expandedTargetTypes": [ + "Aspire.Hosting.Pipelines.PipelineConfigurationContext" + ] + } + ] + }, + { + "name": "PipelineContext", + "fullName": "Aspire.Hosting.Pipelines.PipelineContext", + "kind": "handle", + "exposeProperties": true, + "description": "Provides contextual information and services for the pipeline execution process of a distributed application.", + "implementedInterfaces": [], + "baseTypeHierarchy": [], + "capabilities": [ + { + "name": "cancellationToken", + "capabilityId": "Aspire.Hosting.Pipelines/PipelineContext.cancellationToken", + "qualifiedName": "PipelineContext.cancellationToken", + "description": "Gets the cancellation token for the pipeline operation.", + "kind": "PropertyGetter", + "signature": "cancellationToken(): cancellationToken", + "parameters": [], + "returnType": "cancellationToken", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.Pipelines.PipelineContext", + "expandedTargetTypes": [ + "Aspire.Hosting.Pipelines.PipelineContext" + ] + }, + { + "name": "executionContext", + "capabilityId": "Aspire.Hosting.Pipelines/PipelineContext.executionContext", + "qualifiedName": "PipelineContext.executionContext", + "description": "Gets the execution context for the distributed application.", + "kind": "PropertyGetter", + "signature": "executionContext(): DistributedApplicationExecutionContext", + "parameters": [], + "returnType": "DistributedApplicationExecutionContext", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.Pipelines.PipelineContext", + "expandedTargetTypes": [ + "Aspire.Hosting.Pipelines.PipelineContext" + ] + }, + { + "name": "logger", + "capabilityId": "Aspire.Hosting.Pipelines/PipelineContext.logger", + "qualifiedName": "PipelineContext.logger", + "description": "Gets the logger for pipeline operations.", + "kind": "PropertyGetter", + "signature": "logger(): ILogger", + "parameters": [], + "returnType": "ILogger", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.Pipelines.PipelineContext", + "expandedTargetTypes": [ + "Aspire.Hosting.Pipelines.PipelineContext" + ] + }, + { + "name": "model", + "capabilityId": "Aspire.Hosting.Pipelines/PipelineContext.model", + "qualifiedName": "PipelineContext.model", + "description": "Gets the distributed application model to be deployed.", + "kind": "PropertyGetter", + "signature": "model(): DistributedApplicationModel", + "parameters": [], + "returnType": "DistributedApplicationModel", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.Pipelines.PipelineContext", + "expandedTargetTypes": [ + "Aspire.Hosting.Pipelines.PipelineContext" + ] + }, + { + "name": "services", + "capabilityId": "Aspire.Hosting.Pipelines/PipelineContext.services", + "qualifiedName": "PipelineContext.services", + "description": "Gets the service provider for dependency resolution.", + "kind": "PropertyGetter", + "signature": "services(): IServiceProvider", + "parameters": [], + "returnType": "IServiceProvider", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.Pipelines.PipelineContext", + "expandedTargetTypes": [ + "Aspire.Hosting.Pipelines.PipelineContext" + ] + }, + { + "name": "setCancellationToken", + "capabilityId": "Aspire.Hosting.Pipelines/PipelineContext.setCancellationToken", + "qualifiedName": "PipelineContext.setCancellationToken", + "description": "Gets the cancellation token for the pipeline operation.", + "kind": "PropertySetter", + "signature": "setCancellationToken(value: cancellationToken): PipelineContext", + "parameters": [ + { + "name": "value", + "type": "cancellationToken" + } + ], + "returnType": "PipelineContext", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.Pipelines.PipelineContext", + "expandedTargetTypes": [ + "Aspire.Hosting.Pipelines.PipelineContext" + ] + }, + { + "name": "summary", + "capabilityId": "Aspire.Hosting.Pipelines/PipelineContext.summary", + "qualifiedName": "PipelineContext.summary", + "description": "Gets the pipeline summary that steps can add information to. The summary will be displayed to users after pipeline execution completes.", + "remarks": "Pipeline steps can add key-value pairs to the summary to provide useful information\nabout the pipeline execution, such as deployment targets, resource names, URLs, etc.", + "kind": "PropertyGetter", + "signature": "summary(): PipelineSummary", + "parameters": [], + "returnType": "PipelineSummary", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.Pipelines.PipelineContext", + "expandedTargetTypes": [ + "Aspire.Hosting.Pipelines.PipelineContext" + ] + } + ] + }, + { + "name": "PipelineEditor", + "fullName": "Aspire.Hosting.Pipelines.PipelineEditor", + "kind": "handle", + "description": "Provides an ATS-first editor for pipeline configuration callbacks.", + "implementedInterfaces": [], + "baseTypeHierarchy": [], + "capabilities": [ + { + "name": "steps", + "capabilityId": "Aspire.Hosting.Pipelines/steps", + "qualifiedName": "PipelineEditor.steps", + "description": "Gets all configured pipeline steps.", + "returns": "The configured pipeline steps.", + "kind": "InstanceMethod", + "signature": "steps(): PipelineStep[]", + "parameters": [], + "returnType": "PipelineStep[]", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.Pipelines.PipelineEditor", + "expandedTargetTypes": [ + "Aspire.Hosting.Pipelines.PipelineEditor" + ] + }, + { + "name": "stepsByTag", + "capabilityId": "Aspire.Hosting.Pipelines/stepsByTag", + "qualifiedName": "PipelineEditor.stepsByTag", + "description": "Gets all pipeline steps that have the specified tag.", + "returns": "The matching pipeline steps.", + "kind": "InstanceMethod", + "signature": "stepsByTag(tag: string): PipelineStep[]", + "parameters": [ + { + "name": "tag", + "type": "string", + "description": "The tag to search for." + } + ], + "returnType": "PipelineStep[]", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.Pipelines.PipelineEditor", + "expandedTargetTypes": [ + "Aspire.Hosting.Pipelines.PipelineEditor" + ] + } + ] + }, + { + "name": "PipelineStep", + "fullName": "Aspire.Hosting.Pipelines.PipelineStep", + "kind": "handle", + "exposeProperties": true, + "description": "Represents a step in the deployment pipeline.", + "implementedInterfaces": [], + "baseTypeHierarchy": [], + "capabilities": [ + { + "name": "addTag", + "capabilityId": "Aspire.Hosting.Pipelines/addTag", + "qualifiedName": "PipelineStep.addTag", + "description": "Adds a tag to the step.", + "kind": "InstanceMethod", + "signature": "addTag(tag: string): void", + "parameters": [ + { + "name": "tag", + "type": "string", + "description": "The tag to add." + } + ], + "returnType": "void", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.Pipelines.PipelineStep", + "expandedTargetTypes": [ + "Aspire.Hosting.Pipelines.PipelineStep" + ] + }, + { + "name": "dependsOn", + "capabilityId": "Aspire.Hosting.Pipelines/dependsOn", + "qualifiedName": "PipelineStep.dependsOn", + "description": "Adds a dependency on another step.", + "kind": "InstanceMethod", + "signature": "dependsOn(stepName: string): void", + "parameters": [ + { + "name": "stepName", + "type": "string", + "description": "The name of the step to depend on." + } + ], + "returnType": "void", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.Pipelines.PipelineStep", + "expandedTargetTypes": [ + "Aspire.Hosting.Pipelines.PipelineStep" + ] + }, + { + "name": "dependsOnSteps", + "capabilityId": "Aspire.Hosting.Pipelines/PipelineStep.dependsOnSteps", + "qualifiedName": "PipelineStep.dependsOnSteps", + "description": "Gets or initializes the list of step names that this step depends on.", + "kind": "PropertyGetter", + "signature": "dependsOnSteps(): List", + "parameters": [], + "returnType": "List", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.Pipelines.PipelineStep", + "expandedTargetTypes": [ + "Aspire.Hosting.Pipelines.PipelineStep" + ] + }, + { + "name": "description", + "capabilityId": "Aspire.Hosting.Pipelines/PipelineStep.description", + "qualifiedName": "PipelineStep.description", + "description": "Gets or initializes the description of the step.", + "remarks": "The description provides human-readable context about what the step does,\nhelping users and tools understand the purpose of the step.", + "kind": "PropertyGetter", + "signature": "description(): string", + "parameters": [], + "returnType": "string", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.Pipelines.PipelineStep", + "expandedTargetTypes": [ + "Aspire.Hosting.Pipelines.PipelineStep" + ] + }, + { + "name": "name", + "capabilityId": "Aspire.Hosting.Pipelines/PipelineStep.name", + "qualifiedName": "PipelineStep.name", + "description": "Gets or initializes the unique name of the step.", + "kind": "PropertyGetter", + "signature": "name(): string", + "parameters": [], + "returnType": "string", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.Pipelines.PipelineStep", + "expandedTargetTypes": [ + "Aspire.Hosting.Pipelines.PipelineStep" + ] + }, + { + "name": "requiredBy", + "capabilityId": "Aspire.Hosting.Pipelines/requiredBy", + "qualifiedName": "PipelineStep.requiredBy", + "description": "Specifies that this step is required by another step. This creates the inverse relationship where the other step will depend on this step.", + "kind": "InstanceMethod", + "signature": "requiredBy(stepName: string): void", + "parameters": [ + { + "name": "stepName", + "type": "string", + "description": "The name of the step that requires this step." + } + ], + "returnType": "void", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.Pipelines.PipelineStep", + "expandedTargetTypes": [ + "Aspire.Hosting.Pipelines.PipelineStep" + ] + }, + { + "name": "requiredBySteps", + "capabilityId": "Aspire.Hosting.Pipelines/PipelineStep.requiredBySteps", + "qualifiedName": "PipelineStep.requiredBySteps", + "description": "Gets or initializes the list of step names that require this step to complete before they can finish. This is used internally during pipeline construction and is converted to DependsOn relationships.", + "kind": "PropertyGetter", + "signature": "requiredBySteps(): List", + "parameters": [], + "returnType": "List", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.Pipelines.PipelineStep", + "expandedTargetTypes": [ + "Aspire.Hosting.Pipelines.PipelineStep" + ] + }, + { + "name": "tags", + "capabilityId": "Aspire.Hosting.Pipelines/PipelineStep.tags", + "qualifiedName": "PipelineStep.tags", + "description": "Gets or initializes the list of tags that categorize this step.", + "kind": "PropertyGetter", + "signature": "tags(): List", + "parameters": [], + "returnType": "List", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.Pipelines.PipelineStep", + "expandedTargetTypes": [ + "Aspire.Hosting.Pipelines.PipelineStep" + ] + } + ] + }, + { + "name": "PipelineStepContext", + "fullName": "Aspire.Hosting.Pipelines.PipelineStepContext", + "kind": "handle", + "exposeProperties": true, + "description": "Provides contextual information for a specific pipeline step execution.", + "remarks": "This context combines the shared pipeline context with a step-specific publishing step,\nallowing each step to track its own tasks and completion state independently.", + "implementedInterfaces": [], + "baseTypeHierarchy": [], + "capabilities": [ + { + "name": "cancellationToken", + "capabilityId": "Aspire.Hosting.Pipelines/PipelineStepContext.cancellationToken", + "qualifiedName": "PipelineStepContext.cancellationToken", + "description": "Gets the cancellation token for the pipeline operation.", + "kind": "PropertyGetter", + "signature": "cancellationToken(): cancellationToken", + "parameters": [], + "returnType": "cancellationToken", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.Pipelines.PipelineStepContext", + "expandedTargetTypes": [ + "Aspire.Hosting.Pipelines.PipelineStepContext" + ] + }, + { + "name": "executionContext", + "capabilityId": "Aspire.Hosting.Pipelines/PipelineStepContext.executionContext", + "qualifiedName": "PipelineStepContext.executionContext", + "description": "Gets the execution context for the distributed application.", + "kind": "PropertyGetter", + "signature": "executionContext(): DistributedApplicationExecutionContext", + "parameters": [], + "returnType": "DistributedApplicationExecutionContext", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.Pipelines.PipelineStepContext", + "expandedTargetTypes": [ + "Aspire.Hosting.Pipelines.PipelineStepContext" + ] + }, + { + "name": "logger", + "capabilityId": "Aspire.Hosting.Pipelines/PipelineStepContext.logger", + "qualifiedName": "PipelineStepContext.logger", + "description": "Gets the logger for pipeline operations that writes to both the pipeline logger and the step logger.", + "kind": "PropertyGetter", + "signature": "logger(): ILogger", + "parameters": [], + "returnType": "ILogger", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.Pipelines.PipelineStepContext", + "expandedTargetTypes": [ + "Aspire.Hosting.Pipelines.PipelineStepContext" + ] + }, + { + "name": "model", + "capabilityId": "Aspire.Hosting.Pipelines/PipelineStepContext.model", + "qualifiedName": "PipelineStepContext.model", + "description": "Gets the distributed application model to be deployed.", + "kind": "PropertyGetter", + "signature": "model(): DistributedApplicationModel", + "parameters": [], + "returnType": "DistributedApplicationModel", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.Pipelines.PipelineStepContext", + "expandedTargetTypes": [ + "Aspire.Hosting.Pipelines.PipelineStepContext" + ] + }, + { + "name": "pipelineContext", + "capabilityId": "Aspire.Hosting.Pipelines/PipelineStepContext.pipelineContext", + "qualifiedName": "PipelineStepContext.pipelineContext", + "description": "Gets the pipeline context shared across all steps.", + "kind": "PropertyGetter", + "signature": "pipelineContext(): PipelineContext", + "parameters": [], + "returnType": "PipelineContext", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.Pipelines.PipelineStepContext", + "expandedTargetTypes": [ + "Aspire.Hosting.Pipelines.PipelineStepContext" + ] + }, + { + "name": "reportingStep", + "capabilityId": "Aspire.Hosting.Pipelines/PipelineStepContext.reportingStep", + "qualifiedName": "PipelineStepContext.reportingStep", + "description": "Gets the publishing step associated with this specific step execution.", + "kind": "PropertyGetter", + "signature": "reportingStep(): IReportingStep", + "parameters": [], + "returnType": "IReportingStep", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.Pipelines.PipelineStepContext", + "expandedTargetTypes": [ + "Aspire.Hosting.Pipelines.PipelineStepContext" + ] + }, + { + "name": "services", + "capabilityId": "Aspire.Hosting.Pipelines/PipelineStepContext.services", + "qualifiedName": "PipelineStepContext.services", + "description": "Gets the service provider for dependency resolution.", + "kind": "PropertyGetter", + "signature": "services(): IServiceProvider", + "parameters": [], + "returnType": "IServiceProvider", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.Pipelines.PipelineStepContext", + "expandedTargetTypes": [ + "Aspire.Hosting.Pipelines.PipelineStepContext" + ] + }, + { + "name": "summary", + "capabilityId": "Aspire.Hosting.Pipelines/PipelineStepContext.summary", + "qualifiedName": "PipelineStepContext.summary", + "description": "Gets the pipeline summary that steps can add information to. The summary will be displayed to users after pipeline execution completes.", + "remarks": "Pipeline steps can add key-value pairs to the summary to provide useful information\nabout the pipeline execution, such as deployment targets, resource names, URLs, etc.", + "kind": "PropertyGetter", + "signature": "summary(): PipelineSummary", + "parameters": [], + "returnType": "PipelineSummary", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.Pipelines.PipelineStepContext", + "expandedTargetTypes": [ + "Aspire.Hosting.Pipelines.PipelineStepContext" + ] + } + ] + }, + { + "name": "PipelineStepFactoryContext", + "fullName": "Aspire.Hosting.Pipelines.PipelineStepFactoryContext", + "kind": "handle", + "exposeProperties": true, + "description": "Provides contextual information for creating pipeline steps from a {@ats-ref type:PipelineStepAnnotation}.", + "implementedInterfaces": [], + "baseTypeHierarchy": [], + "capabilities": [ + { + "name": "pipelineContext", + "capabilityId": "Aspire.Hosting.Pipelines/PipelineStepFactoryContext.pipelineContext", + "qualifiedName": "PipelineStepFactoryContext.pipelineContext", + "description": "Gets the pipeline context that has the model and other properties.", + "kind": "PropertyGetter", + "signature": "pipelineContext(): PipelineContext", + "parameters": [], + "returnType": "PipelineContext", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.Pipelines.PipelineStepFactoryContext", + "expandedTargetTypes": [ + "Aspire.Hosting.Pipelines.PipelineStepFactoryContext" + ] + }, + { + "name": "resource", + "capabilityId": "Aspire.Hosting.Pipelines/PipelineStepFactoryContext.resource", + "qualifiedName": "PipelineStepFactoryContext.resource", + "description": "Gets the resource that this factory is associated with.", + "kind": "PropertyGetter", + "signature": "resource(): IResource", + "parameters": [], + "returnType": "IResource", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.Pipelines.PipelineStepFactoryContext", + "expandedTargetTypes": [ + "Aspire.Hosting.Pipelines.PipelineStepFactoryContext" + ] + } + ] + }, + { + "name": "PipelineSummary", + "fullName": "Aspire.Hosting.Pipelines.PipelineSummary", + "kind": "handle", + "exposeMethods": true, + "description": "Represents pipeline summary information to be displayed after pipeline completion. This is a general-purpose key-value collection that pipeline steps can contribute to.", + "remarks": "This class provides a flexible way for any pipeline step to contribute\ninformation to be displayed after pipeline execution. The data is stored as\nkey-value pairs that will be formatted as a table or list in the CLI output.\nPipeline steps can add any relevant information such as resource group names,\nsubscription IDs, URLs, namespaces, cluster names, or any other details.\nValues can be plain text or Markdown-formatted by using `MarkdownString`.\nThe summary is available via the `Summary`\nproperty and can be accessed from any pipeline step.", + "implementedInterfaces": [], + "baseTypeHierarchy": [], + "capabilities": [ + { + "name": "addMarkdown", + "capabilityId": "Aspire.Hosting/addMarkdown", + "qualifiedName": "addMarkdown", + "description": "Adds a key-value pair to the pipeline summary with a Markdown-formatted value.", + "kind": "Method", + "signature": "addMarkdown(key: string, markdownString: string): void", + "parameters": [ + { + "name": "key", + "type": "string", + "description": "The key or label for the item." + }, + { + "name": "markdownString", + "type": "string", + "description": "The Markdown-formatted value for the item." + } + ], + "returnType": "void", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.Pipelines.PipelineSummary", + "expandedTargetTypes": [ + "Aspire.Hosting.Pipelines.PipelineSummary" + ] + }, + { + "name": "add", + "capabilityId": "Aspire.Hosting.Pipelines/PipelineSummary.add", + "qualifiedName": "PipelineSummary.add", + "description": "Adds a key-value pair to the pipeline summary with a plain-text value.", + "kind": "InstanceMethod", + "signature": "add(key: string, value: string): void", + "parameters": [ + { + "name": "key", + "type": "string", + "description": "The key or label for the item (e.g., \"Namespace\", \"URL\")." + }, + { + "name": "value", + "type": "string", + "description": "The plain-text value for the item." + } + ], + "returnType": "void", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.Pipelines.PipelineSummary", + "expandedTargetTypes": [ + "Aspire.Hosting.Pipelines.PipelineSummary" + ] + } + ] + }, + { + "name": "ProgressContext", + "fullName": "Aspire.Hosting.ProgressContext", + "kind": "handle", + "exposeProperties": true, + "description": "Provides context to the work callback of a progress interaction.", + "implementedInterfaces": [], + "baseTypeHierarchy": [], + "capabilities": [ + { + "name": "cancellationToken", + "capabilityId": "Aspire.Hosting/ProgressContext.cancellationToken", + "qualifiedName": "ProgressContext.cancellationToken", + "description": "Gets the `CancellationToken` that is triggered when the user clicks the cancel button or the operation is externally canceled.", + "kind": "PropertyGetter", + "signature": "cancellationToken(): cancellationToken", + "parameters": [], + "returnType": "cancellationToken", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ProgressContext", + "expandedTargetTypes": [ + "Aspire.Hosting.ProgressContext" + ] + } + ] + }, + { + "name": "ProjectResourceOptions", + "fullName": "Aspire.Hosting.ProjectResourceOptions", + "kind": "handle", + "exposeProperties": true, + "description": "Various properties to modify the behavior of the project resource.", + "implementedInterfaces": [], + "baseTypeHierarchy": [], + "capabilities": [ + { + "name": "excludeKestrelEndpoints", + "capabilityId": "Aspire.Hosting/ProjectResourceOptions.excludeKestrelEndpoints", + "qualifiedName": "ProjectResourceOptions.excludeKestrelEndpoints", + "description": "If set, ignore endpoints coming from Kestrel configuration.", + "kind": "PropertyGetter", + "signature": "excludeKestrelEndpoints(): boolean", + "parameters": [], + "returnType": "boolean", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ProjectResourceOptions", + "expandedTargetTypes": [ + "Aspire.Hosting.ProjectResourceOptions" + ] + }, + { + "name": "excludeLaunchProfile", + "capabilityId": "Aspire.Hosting/ProjectResourceOptions.excludeLaunchProfile", + "qualifiedName": "ProjectResourceOptions.excludeLaunchProfile", + "description": "If set, no launch profile will be used, and LaunchProfileName will be ignored.", + "kind": "PropertyGetter", + "signature": "excludeLaunchProfile(): boolean", + "parameters": [], + "returnType": "boolean", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ProjectResourceOptions", + "expandedTargetTypes": [ + "Aspire.Hosting.ProjectResourceOptions" + ] + }, + { + "name": "launchProfileName", + "capabilityId": "Aspire.Hosting/ProjectResourceOptions.launchProfileName", + "qualifiedName": "ProjectResourceOptions.launchProfileName", + "description": "The launch profile to use. If `null` then the default launch profile will be used.", + "kind": "PropertyGetter", + "signature": "launchProfileName(): string", + "parameters": [], + "returnType": "string", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ProjectResourceOptions", + "expandedTargetTypes": [ + "Aspire.Hosting.ProjectResourceOptions" + ] + }, + { + "name": "setExcludeKestrelEndpoints", + "capabilityId": "Aspire.Hosting/ProjectResourceOptions.setExcludeKestrelEndpoints", + "qualifiedName": "ProjectResourceOptions.setExcludeKestrelEndpoints", + "description": "If set, ignore endpoints coming from Kestrel configuration.", + "kind": "PropertySetter", + "signature": "setExcludeKestrelEndpoints(value: boolean): ProjectResourceOptions", + "parameters": [ + { + "name": "value", + "type": "boolean" + } + ], + "returnType": "ProjectResourceOptions", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ProjectResourceOptions", + "expandedTargetTypes": [ + "Aspire.Hosting.ProjectResourceOptions" + ] + }, + { + "name": "setExcludeLaunchProfile", + "capabilityId": "Aspire.Hosting/ProjectResourceOptions.setExcludeLaunchProfile", + "qualifiedName": "ProjectResourceOptions.setExcludeLaunchProfile", + "description": "If set, no launch profile will be used, and LaunchProfileName will be ignored.", + "kind": "PropertySetter", + "signature": "setExcludeLaunchProfile(value: boolean): ProjectResourceOptions", + "parameters": [ + { + "name": "value", + "type": "boolean" + } + ], + "returnType": "ProjectResourceOptions", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ProjectResourceOptions", + "expandedTargetTypes": [ + "Aspire.Hosting.ProjectResourceOptions" + ] + }, + { + "name": "setLaunchProfileName", + "capabilityId": "Aspire.Hosting/ProjectResourceOptions.setLaunchProfileName", + "qualifiedName": "ProjectResourceOptions.setLaunchProfileName", + "description": "The launch profile to use. If `null` then the default launch profile will be used.", + "kind": "PropertySetter", + "signature": "setLaunchProfileName(value: string): ProjectResourceOptions", + "parameters": [ + { + "name": "value", + "type": "string" + } + ], + "returnType": "ProjectResourceOptions", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ProjectResourceOptions", + "expandedTargetTypes": [ + "Aspire.Hosting.ProjectResourceOptions" + ] + } + ] + }, + { + "name": "AfterPublishEvent", + "fullName": "Aspire.Hosting.Publishing.AfterPublishEvent", + "kind": "handle", + "exposeProperties": true, + "description": "This event is published after the distributed application is published.", + "implementedInterfaces": [ + "Aspire.Hosting.Eventing.IDistributedApplicationEvent" + ], + "baseTypeHierarchy": [], + "capabilities": [ + { + "name": "model", + "capabilityId": "Aspire.Hosting.Publishing/AfterPublishEvent.model", + "qualifiedName": "AfterPublishEvent.model", + "description": "The `DistributedApplicationModel` instance.", + "kind": "PropertyGetter", + "signature": "model(): DistributedApplicationModel", + "parameters": [], + "returnType": "DistributedApplicationModel", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.Publishing.AfterPublishEvent", + "expandedTargetTypes": [ + "Aspire.Hosting.Publishing.AfterPublishEvent" + ] + }, + { + "name": "services", + "capabilityId": "Aspire.Hosting.Publishing/AfterPublishEvent.services", + "qualifiedName": "AfterPublishEvent.services", + "description": "The `IServiceProvider` for the AppHost.", + "kind": "PropertyGetter", + "signature": "services(): IServiceProvider", + "parameters": [], + "returnType": "IServiceProvider", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.Publishing.AfterPublishEvent", + "expandedTargetTypes": [ + "Aspire.Hosting.Publishing.AfterPublishEvent" + ] + } + ] + }, + { + "name": "BeforePublishEvent", + "fullName": "Aspire.Hosting.Publishing.BeforePublishEvent", + "kind": "handle", + "exposeProperties": true, + "description": "This event is published before the distributed application is published.", + "implementedInterfaces": [ + "Aspire.Hosting.Eventing.IDistributedApplicationEvent" + ], + "baseTypeHierarchy": [], + "capabilities": [ + { + "name": "model", + "capabilityId": "Aspire.Hosting.Publishing/BeforePublishEvent.model", + "qualifiedName": "BeforePublishEvent.model", + "description": "The `DistributedApplicationModel` instance.", + "kind": "PropertyGetter", + "signature": "model(): DistributedApplicationModel", + "parameters": [], + "returnType": "DistributedApplicationModel", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.Publishing.BeforePublishEvent", + "expandedTargetTypes": [ + "Aspire.Hosting.Publishing.BeforePublishEvent" + ] + }, + { + "name": "services", + "capabilityId": "Aspire.Hosting.Publishing/BeforePublishEvent.services", + "qualifiedName": "BeforePublishEvent.services", + "description": "The `IServiceProvider` for the AppHost.", + "kind": "PropertyGetter", + "signature": "services(): IServiceProvider", + "parameters": [], + "returnType": "IServiceProvider", + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.Publishing.BeforePublishEvent", + "expandedTargetTypes": [ + "Aspire.Hosting.Publishing.BeforePublishEvent" + ] + } + ] + } + ], + "dtoTypes": [ + { + "name": "CertificateTrustExecutionConfigurationContext", + "fullName": "Aspire.Hosting.ApplicationModel.CertificateTrustExecutionConfigurationContext", + "kind": "dto", + "description": "Context for configuring certificate trust configuration properties.", + "fields": [ + { + "name": "CertificateBundlePath", + "type": "ReferenceExpression", + "isOptional": true, + "description": "The path to the PEM certificate bundle file in the resource context (e.g., container filesystem)." + }, + { + "name": "CertificateDirectoriesPath", + "type": "ReferenceExpression", + "isOptional": true, + "description": "The path(s) to the certificate directories in the resource context (e.g., container filesystem)." + }, + { + "name": "RootCertificatesPath", + "type": "string", + "isOptional": true, + "description": "The root path certificates will be written to in the resource context (e.g., container filesystem)." + }, + { + "name": "IsContainer", + "type": "boolean", + "isOptional": true, + "description": "Is this request being generated for a container resource (i.e. does it require Linux style paths?)." + } + ] + }, + { + "name": "CommandOptions", + "fullName": "Aspire.Hosting.ApplicationModel.CommandOptions", + "kind": "dto", + "description": "Optional configuration for resource commands.", + "fields": [ + { + "name": "Description", + "type": "string", + "isOptional": true, + "description": "Optional description of the command, to be shown in the UI. Could be used as a tooltip. May be localized." + }, + { + "name": "Parameter", + "type": "any", + "isOptional": true, + "description": "Obsolete optional parameter that configures the command in some way. Clients must return any value provided by the server when invoking the command." + }, + { + "name": "Arguments", + "type": "InteractionInput[]", + "isOptional": true, + "description": "Gets or sets the invocation arguments accepted by the command." + }, + { + "name": "ValidateArguments", + "type": "callback", + "isOptional": true, + "description": "Gets or sets the callback that validates invocation arguments before the command callback is executed." + }, + { + "name": "Visibility", + "type": "ResourceCommandVisibility", + "isOptional": true, + "description": "Gets or sets where the command is visible to users and clients." + }, + { + "name": "ConfirmationMessage", + "type": "string", + "isOptional": true, + "description": "When a confirmation message is specified, the UI will prompt with an OK/Cancel dialog and the confirmation message before starting the command." + }, + { + "name": "IconName", + "type": "string", + "isOptional": true, + "description": "The icon name for the command. The name should be a valid FluentUI icon name from ." + }, + { + "name": "IconVariant", + "type": "IconVariant", + "isOptional": true, + "description": "The icon variant." + }, + { + "name": "IsHighlighted", + "type": "boolean", + "isOptional": true, + "description": "A flag indicating whether the command is highlighted in the UI." + }, + { + "name": "UpdateState", + "type": "callback", + "isOptional": true, + "description": "A callback that is used to update the command state. The callback is executed when the command's resource snapshot is updated. If a callback isn't specified, the command is always enabled." + }, + { + "name": "Progress", + "type": "CommandProgressOptions", + "isOptional": true, + "description": "Gets or sets options for displaying a progress dialog while the command is executing." + } + ] + }, + { + "name": "CommandProgressOptions", + "fullName": "Aspire.Hosting.ApplicationModel.CommandProgressOptions", + "kind": "dto", + "description": "Options for displaying a progress dialog while a command is executing.", + "fields": [ + { + "name": "Message", + "type": "string", + "isOptional": true, + "description": "Gets or sets the message to display in the progress dialog." + }, + { + "name": "Title", + "type": "string", + "isOptional": true, + "description": "Gets or sets the optional title of the progress dialog." + }, + { + "name": "HideCancelButton", + "type": "boolean", + "isOptional": true, + "description": "Gets or sets a value indicating whether the cancel button is hidden in the progress dialog." + } + ] + }, + { + "name": "CommandResultData", + "fullName": "Aspire.Hosting.ApplicationModel.CommandResultData", + "kind": "dto", + "description": "Represents a value produced by a command.", + "fields": [ + { + "name": "Value", + "type": "string", + "isOptional": true, + "description": "The value data." + }, + { + "name": "Format", + "type": "CommandResultFormat", + "isOptional": true, + "description": "The format of the `Value` data." + }, + { + "name": "DisplayImmediately", + "type": "boolean", + "isOptional": true, + "description": "When `true`, the dashboard will immediately display the value in a dialog when the command completes." + } + ] + }, + { + "name": "ExecuteCommandResult", + "fullName": "Aspire.Hosting.ApplicationModel.ExecuteCommandResult", + "kind": "dto", + "description": "The result of executing a command. Returned from `ExecuteCommand`.", + "fields": [ + { + "name": "Success", + "type": "boolean", + "isOptional": true, + "description": "A flag that indicates whether the command was successful." + }, + { + "name": "Canceled", + "type": "boolean", + "isOptional": true, + "description": "A flag that indicates whether the command was canceled by the user." + }, + { + "name": "ErrorMessage", + "type": "string", + "isOptional": true, + "description": "An optional error message that can be set when the command is unsuccessful." + }, + { + "name": "Message", + "type": "string", + "isOptional": true, + "description": "An optional message associated with the command result." + }, + { + "name": "Data", + "type": "CommandResultData", + "isOptional": true, + "description": "An optional value produced by the command." + } + ] + }, + { + "name": "GenerateParameterDefault", + "fullName": "Aspire.Hosting.ApplicationModel.GenerateParameterDefault", + "kind": "dto", + "description": "Represents that a default value should be generated.", + "remarks": "The recommended minimum bits of entropy for a generated password is 128 bits.\nThe general calculation of bits of entropy is:\n`log base 2 (numberPossibleOutputs)`\nThis generator uses 23 upper case, 23 lower case (excludes i,l,o,I,L,O to prevent confusion),\n10 numeric, and 11 special characters. So a total of 67 possible characters.\nWhen all character sets are enabled, the number of possible outputs is `(67 ^ length)`.\nThe minimum password length for 128 bits of entropy is 22 characters: `log base 2 (67 ^ 22)`.\nWhen character sets are disabled, it lowers the number of possible outputs and thus the bits of entropy.\nUsing MinLower, MinUpper, MinNumeric, and MinSpecial also lowers the number of possible outputs and thus the bits of entropy.\nA generalized lower-bound formula for the number of possible outputs is to consider a string of the form:\n```\n{nonRequiredCharacters}{requiredCharacters}\nlet a = MinLower, b = MinUpper, c = MinNumeric, d = MinSpecial\nlet x = length - (a + b + c + d)\nnonRequiredPossibilities = 67^x\nrequiredPossibilities = 23^a * 23^b * 10^c * 11^d * (a + b + c + d)! / (a! * b! * c! * d!)\nlower-bound of total possibilities = nonRequiredPossibilities * requiredPossibilities\n```\nPutting it all together, the lower-bound bits of entropy calculation is:\n```\nlog base 2 [67^x * 23^a * 23^b * 10^c * 11^d * (a + b + c + d)! / (a! * b! * c! * d!)]\n```", + "fields": [ + { + "name": "MinLength", + "type": "number", + "isOptional": true, + "description": "Gets or sets the minimum length of the generated value." + }, + { + "name": "Lower", + "type": "boolean", + "isOptional": true, + "description": "Gets or sets a value indicating whether to include lowercase alphabet characters in the result." + }, + { + "name": "Upper", + "type": "boolean", + "isOptional": true, + "description": "Gets or sets a value indicating whether to include uppercase alphabet characters in the result." + }, + { + "name": "Numeric", + "type": "boolean", + "isOptional": true, + "description": "Gets or sets a value indicating whether to include numeric characters in the result." + }, + { + "name": "Special", + "type": "boolean", + "isOptional": true, + "description": "Gets or sets a value indicating whether to include special characters in the result." + }, + { + "name": "MinLower", + "type": "number", + "isOptional": true, + "description": "Gets or sets the minimum number of lowercase characters in the result." + }, + { + "name": "MinUpper", + "type": "number", + "isOptional": true, + "description": "Gets or sets the minimum number of uppercase characters in the result." + }, + { + "name": "MinNumeric", + "type": "number", + "isOptional": true, + "description": "Gets or sets the minimum number of numeric characters in the result." + }, + { + "name": "MinSpecial", + "type": "number", + "isOptional": true, + "description": "Gets or sets the minimum number of special characters in the result." } ] }, { - "name": "ProjectResourceOptions", - "fullName": "Aspire.Hosting.ProjectResourceOptions", - "kind": "handle", - "exposeProperties": true, - "description": "Various properties to modify the behavior of the project resource.", - "implementedInterfaces": [], - "baseTypeHierarchy": [], - "capabilities": [ + "name": "HttpCommandExportOptions", + "fullName": "Aspire.Hosting.ApplicationModel.HttpCommandExportOptions", + "kind": "dto", + "description": "ATS-friendly configuration for resource HTTP commands.", + "fields": [ { - "name": "excludeKestrelEndpoints", - "capabilityId": "Aspire.Hosting/ProjectResourceOptions.excludeKestrelEndpoints", - "qualifiedName": "ProjectResourceOptions.excludeKestrelEndpoints", - "description": "If set, ignore endpoints coming from Kestrel configuration.", - "kind": "PropertyGetter", - "signature": "excludeKestrelEndpoints(): boolean", - "parameters": [], - "returnType": "boolean", - "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ProjectResourceOptions", - "expandedTargetTypes": [ - "Aspire.Hosting.ProjectResourceOptions" - ] + "name": "CommandOptions", + "type": "CommandOptions", + "isOptional": true, + "description": "Optional command configuration." }, { - "name": "excludeLaunchProfile", - "capabilityId": "Aspire.Hosting/ProjectResourceOptions.excludeLaunchProfile", - "qualifiedName": "ProjectResourceOptions.excludeLaunchProfile", - "description": "If set, no launch profile will be used, and LaunchProfileName will be ignored.", - "kind": "PropertyGetter", - "signature": "excludeLaunchProfile(): boolean", - "parameters": [], - "returnType": "boolean", - "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ProjectResourceOptions", - "expandedTargetTypes": [ - "Aspire.Hosting.ProjectResourceOptions" - ] + "name": "Description", + "type": "string", + "isOptional": true, + "description": "Optional description of the command, to be shown in the UI." }, { - "name": "launchProfileName", - "capabilityId": "Aspire.Hosting/ProjectResourceOptions.launchProfileName", - "qualifiedName": "ProjectResourceOptions.launchProfileName", - "description": "The launch profile to use. If `null` then the default launch profile will be used.", - "kind": "PropertyGetter", - "signature": "launchProfileName(): string", - "parameters": [], - "returnType": "string", - "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ProjectResourceOptions", - "expandedTargetTypes": [ - "Aspire.Hosting.ProjectResourceOptions" - ] + "name": "ConfirmationMessage", + "type": "string", + "isOptional": true, + "description": "When a confirmation message is specified, the UI will prompt with an OK/Cancel dialog before starting the command." }, { - "name": "setExcludeKestrelEndpoints", - "capabilityId": "Aspire.Hosting/ProjectResourceOptions.setExcludeKestrelEndpoints", - "qualifiedName": "ProjectResourceOptions.setExcludeKestrelEndpoints", - "description": "If set, ignore endpoints coming from Kestrel configuration.", - "kind": "PropertySetter", - "signature": "setExcludeKestrelEndpoints(value: boolean): ProjectResourceOptions", - "parameters": [ - { - "name": "value", - "type": "boolean" - } - ], - "returnType": "ProjectResourceOptions", - "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ProjectResourceOptions", - "expandedTargetTypes": [ - "Aspire.Hosting.ProjectResourceOptions" - ] + "name": "IconName", + "type": "string", + "isOptional": true, + "description": "The icon name for the command." }, { - "name": "setExcludeLaunchProfile", - "capabilityId": "Aspire.Hosting/ProjectResourceOptions.setExcludeLaunchProfile", - "qualifiedName": "ProjectResourceOptions.setExcludeLaunchProfile", - "description": "If set, no launch profile will be used, and LaunchProfileName will be ignored.", - "kind": "PropertySetter", - "signature": "setExcludeLaunchProfile(value: boolean): ProjectResourceOptions", - "parameters": [ - { - "name": "value", - "type": "boolean" - } - ], - "returnType": "ProjectResourceOptions", - "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ProjectResourceOptions", - "expandedTargetTypes": [ - "Aspire.Hosting.ProjectResourceOptions" - ] + "name": "IconVariant", + "type": "IconVariant", + "isOptional": true, + "description": "The icon variant." }, { - "name": "setLaunchProfileName", - "capabilityId": "Aspire.Hosting/ProjectResourceOptions.setLaunchProfileName", - "qualifiedName": "ProjectResourceOptions.setLaunchProfileName", - "description": "The launch profile to use. If `null` then the default launch profile will be used.", - "kind": "PropertySetter", - "signature": "setLaunchProfileName(value: string): ProjectResourceOptions", - "parameters": [ - { - "name": "value", - "type": "string" - } - ], - "returnType": "ProjectResourceOptions", - "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ProjectResourceOptions", - "expandedTargetTypes": [ - "Aspire.Hosting.ProjectResourceOptions" - ] - } - ] - }, - { - "name": "AfterPublishEvent", - "fullName": "Aspire.Hosting.Publishing.AfterPublishEvent", - "kind": "handle", - "exposeProperties": true, - "description": "This event is published after the distributed application is published.", - "implementedInterfaces": [ - "Aspire.Hosting.Eventing.IDistributedApplicationEvent" - ], - "baseTypeHierarchy": [], - "capabilities": [ + "name": "IsHighlighted", + "type": "boolean", + "isOptional": true, + "description": "A flag indicating whether the command is highlighted in the UI." + }, { - "name": "model", - "capabilityId": "Aspire.Hosting.Publishing/AfterPublishEvent.model", - "qualifiedName": "AfterPublishEvent.model", - "description": "The `DistributedApplicationModel` instance.", - "kind": "PropertyGetter", - "signature": "model(): DistributedApplicationModel", - "parameters": [], - "returnType": "DistributedApplicationModel", - "targetTypeId": "Aspire.Hosting/Aspire.Hosting.Publishing.AfterPublishEvent", - "expandedTargetTypes": [ - "Aspire.Hosting.Publishing.AfterPublishEvent" - ] + "name": "CommandName", + "type": "string", + "isOptional": true, + "description": "Gets or sets the command name." }, { - "name": "services", - "capabilityId": "Aspire.Hosting.Publishing/AfterPublishEvent.services", - "qualifiedName": "AfterPublishEvent.services", - "description": "The `IServiceProvider` for the AppHost.", - "kind": "PropertyGetter", - "signature": "services(): IServiceProvider", - "parameters": [], - "returnType": "IServiceProvider", - "targetTypeId": "Aspire.Hosting/Aspire.Hosting.Publishing.AfterPublishEvent", - "expandedTargetTypes": [ - "Aspire.Hosting.Publishing.AfterPublishEvent" - ] + "name": "EndpointName", + "type": "string", + "isOptional": true, + "description": "Gets or sets the HTTP endpoint name to send the request to when the command is invoked." + }, + { + "name": "MethodName", + "type": "string", + "isOptional": true, + "description": "Gets or sets the HTTP method name to use when sending the request." + }, + { + "name": "PrepareRequest", + "type": "callback", + "isOptional": true, + "description": "Gets or sets a callback to be invoked to configure the request before it is sent." + }, + { + "name": "ResultMode", + "type": "HttpCommandResultMode", + "isOptional": true, + "description": "Gets or sets how the HTTP response content should be returned as command result data." } ] }, { - "name": "BeforePublishEvent", - "fullName": "Aspire.Hosting.Publishing.BeforePublishEvent", - "kind": "handle", - "exposeProperties": true, - "description": "This event is published before the distributed application is published.", - "implementedInterfaces": [ - "Aspire.Hosting.Eventing.IDistributedApplicationEvent" - ], - "baseTypeHierarchy": [], - "capabilities": [ + "name": "HttpCommandRequestExportData", + "fullName": "Aspire.Hosting.ApplicationModel.HttpCommandRequestExportData", + "kind": "dto", + "description": "ATS-friendly request data returned from HTTP command prepare-request callbacks.", + "fields": [ { - "name": "model", - "capabilityId": "Aspire.Hosting.Publishing/BeforePublishEvent.model", - "qualifiedName": "BeforePublishEvent.model", - "description": "The `DistributedApplicationModel` instance.", - "kind": "PropertyGetter", - "signature": "model(): DistributedApplicationModel", - "parameters": [], - "returnType": "DistributedApplicationModel", - "targetTypeId": "Aspire.Hosting/Aspire.Hosting.Publishing.BeforePublishEvent", - "expandedTargetTypes": [ - "Aspire.Hosting.Publishing.BeforePublishEvent" - ] + "name": "MethodName", + "type": "string", + "isOptional": true, + "description": "Gets or sets the HTTP method name to use when sending the request." }, { - "name": "services", - "capabilityId": "Aspire.Hosting.Publishing/BeforePublishEvent.services", - "qualifiedName": "BeforePublishEvent.services", - "description": "The `IServiceProvider` for the AppHost.", - "kind": "PropertyGetter", - "signature": "services(): IServiceProvider", - "parameters": [], - "returnType": "IServiceProvider", - "targetTypeId": "Aspire.Hosting/Aspire.Hosting.Publishing.BeforePublishEvent", - "expandedTargetTypes": [ - "Aspire.Hosting.Publishing.BeforePublishEvent" - ] + "name": "Headers", + "type": "Dict", + "isOptional": true, + "description": "Gets or sets the request headers." + }, + { + "name": "Content", + "type": "string", + "isOptional": true, + "description": "Gets or sets the request content." + }, + { + "name": "ContentType", + "type": "string", + "isOptional": true, + "description": "Gets or sets the request content type." } - ] - } - ], - "dtoTypes": [ + ] + }, { - "name": "CertificateTrustExecutionConfigurationContext", - "fullName": "Aspire.Hosting.ApplicationModel.CertificateTrustExecutionConfigurationContext", + "name": "HttpsCertificateExecutionConfigurationContext", + "fullName": "Aspire.Hosting.ApplicationModel.HttpsCertificateExecutionConfigurationContext", "kind": "dto", - "description": "Context for configuring certificate trust configuration properties.", + "description": "Configuration context for server authentication certificate configuration.", "fields": [ { - "name": "CertificateBundlePath", + "name": "CertificatePath", "type": "ReferenceExpression", "isOptional": true, - "description": "The path to the PEM certificate bundle file in the resource context (e.g., container filesystem)." + "description": "Expression that will resolve to the path of the server authentication certificate in PEM format. For containers this will be a path inside the container." }, { - "name": "CertificateDirectoriesPath", + "name": "KeyPath", "type": "ReferenceExpression", "isOptional": true, - "description": "The path(s) to the certificate directories in the resource context (e.g., container filesystem)." + "description": "Expression that will resolve to the path of the server authentication certificate key in PEM format. For containers this will be a path inside the container." }, { - "name": "RootCertificatesPath", - "type": "string", + "name": "CertificateWithKeyPath", + "type": "ReferenceExpression", "isOptional": true, - "description": "The root path certificates will be written to in the resource context (e.g., container filesystem)." + "description": "Expression that will resolve to the path of the server authentication certificate and key in a combined PEM file. For containers this will be a path inside the container." }, { - "name": "IsContainer", - "type": "boolean", + "name": "PfxPath", + "type": "ReferenceExpression", "isOptional": true, - "description": "Is this request being generated for a container resource (i.e. does it require Linux style paths?)." + "description": "Expression that will resolve to the path of the server authentication certificate in PFX format. For containers this will be a path inside the container." } ] }, { - "name": "CommandOptions", - "fullName": "Aspire.Hosting.ApplicationModel.CommandOptions", + "name": "ProcessCommandExportOptions", + "fullName": "Aspire.Hosting.ApplicationModel.ProcessCommandExportOptions", "kind": "dto", - "description": "Optional configuration for resource commands.", + "description": "ATS-friendly configuration for resource process commands.", "fields": [ { - "name": "Description", + "name": "ExecutablePath", "type": "string", "isOptional": true, - "description": "Optional description of the command, to be shown in the UI. Could be used as a tooltip. May be localized." + "description": "The executable path or command name to start." }, { - "name": "Parameter", - "type": "any", + "name": "Arguments", + "type": "string[]", "isOptional": true, - "description": "Obsolete optional parameter that configures the command in some way. Clients must return any value provided by the server when invoking the command." + "description": "The command-line arguments for the process." }, { - "name": "Arguments", - "type": "InteractionInput[]", + "name": "WorkingDirectory", + "type": "string", "isOptional": true, - "description": "Gets or sets the invocation arguments accepted by the command." + "description": "The working directory for the process." }, { - "name": "ValidateArguments", - "type": "callback", + "name": "EnvironmentVariables", + "type": "Dict", "isOptional": true, - "description": "Gets or sets the callback that validates invocation arguments before the command callback is executed." + "description": "The environment variables to set for the process." }, { - "name": "Visibility", - "type": "ResourceCommandVisibility", + "name": "InheritEnvironmentVariables", + "type": "boolean", "isOptional": true, - "description": "Gets or sets where the command is visible to users and clients." + "description": "A value indicating whether the process should inherit the current environment variables." }, { - "name": "ConfirmationMessage", + "name": "StandardInputContent", "type": "string", "isOptional": true, - "description": "When a confirmation message is specified, the UI will prompt with an OK/Cancel dialog and the confirmation message before starting the command." + "description": "Standard input content to write to the process after it starts." }, { - "name": "IconName", - "type": "string", + "name": "KillEntireProcessTree", + "type": "boolean", "isOptional": true, - "description": "The icon name for the command. The name should be a valid FluentUI icon name from ." + "description": "A value indicating whether the entire process tree should be killed when the process is disposed." }, { - "name": "IconVariant", - "type": "IconVariant", + "name": "CreateProcessSpec", + "type": "callback", "isOptional": true, - "description": "The icon variant." + "description": "A callback that creates the local process specification when the command is invoked." }, { - "name": "IsHighlighted", + "name": "CommandOptions", + "type": "CommandOptions", + "isOptional": true, + "description": "Optional command configuration." + }, + { + "name": "MaxOutputLineCount", + "type": "number", + "isOptional": true, + "description": "The maximum number of stdout and stderr output lines returned as command result data." + }, + { + "name": "DisplayImmediately", "type": "boolean", "isOptional": true, - "description": "A flag indicating whether the command is highlighted in the UI." + "description": "A value indicating whether returned command output should be displayed immediately in the dashboard." }, { - "name": "UpdateState", - "type": "callback", + "name": "SuccessExitCodes", + "type": "number[]", "isOptional": true, - "description": "A callback that is used to update the command state. The callback is executed when the command's resource snapshot is updated. If a callback isn't specified, the command is always enabled." + "description": "The exit codes that are treated as a successful command invocation." } ] }, { - "name": "CommandResultData", - "fullName": "Aspire.Hosting.ApplicationModel.CommandResultData", + "name": "ProcessCommandResultExportOptions", + "fullName": "Aspire.Hosting.ApplicationModel.ProcessCommandResultExportOptions", "kind": "dto", - "description": "Represents a value produced by a command.", + "description": "ATS-friendly result and command configuration for resource process commands.", "fields": [ { - "name": "Value", - "type": "string", + "name": "CommandOptions", + "type": "CommandOptions", "isOptional": true, - "description": "The value data." + "description": "Optional command configuration." }, { - "name": "Format", - "type": "CommandResultFormat", + "name": "MaxOutputLineCount", + "type": "number", "isOptional": true, - "description": "The format of the `Value` data." + "description": "The maximum number of stdout and stderr output lines returned as command result data." }, { "name": "DisplayImmediately", "type": "boolean", "isOptional": true, - "description": "When `true`, the dashboard will immediately display the value in a dialog when the command completes." + "description": "A value indicating whether returned command output should be displayed immediately in the dashboard." + }, + { + "name": "SuccessExitCodes", + "type": "number[]", + "isOptional": true, + "description": "The exit codes that are treated as a successful command invocation." } ] }, { - "name": "ExecuteCommandResult", - "fullName": "Aspire.Hosting.ApplicationModel.ExecuteCommandResult", + "name": "ProcessCommandSpecExportData", + "fullName": "Aspire.Hosting.ApplicationModel.ProcessCommandSpecExportData", "kind": "dto", - "description": "The result of executing a command. Returned from `ExecuteCommand`.", + "description": "ATS-friendly process specification for resource process command callbacks.", "fields": [ { - "name": "Success", + "name": "ExecutablePath", + "type": "string", + "isOptional": true, + "description": "The executable path or command name to start." + }, + { + "name": "Arguments", + "type": "string[]", + "isOptional": true, + "description": "The command-line arguments for the process." + }, + { + "name": "WorkingDirectory", + "type": "string", + "isOptional": true, + "description": "The working directory for the process." + }, + { + "name": "EnvironmentVariables", + "type": "Dict", + "isOptional": true, + "description": "The environment variables to set for the process." + }, + { + "name": "InheritEnvironmentVariables", "type": "boolean", "isOptional": true, - "description": "A flag that indicates whether the command was successful." + "description": "A value indicating whether the process should inherit the current environment variables." }, { - "name": "Canceled", + "name": "StandardInputContent", + "type": "string", + "isOptional": true, + "description": "Standard input content to write to the process after it starts." + }, + { + "name": "KillEntireProcessTree", "type": "boolean", "isOptional": true, - "description": "A flag that indicates whether the command was canceled by the user." + "description": "A value indicating whether the entire process tree should be killed when the process is disposed." + } + ] + }, + { + "name": "ResourceUrlAnnotation", + "fullName": "Aspire.Hosting.ApplicationModel.ResourceUrlAnnotation", + "kind": "dto", + "description": "A URL that should be displayed for a resource.", + "fields": [ + { + "name": "Url", + "type": "string", + "isOptional": true, + "description": "The URL. When rendered as a link this will be used as the link target." }, { - "name": "ErrorMessage", + "name": "DisplayText", "type": "string", "isOptional": true, - "description": "An optional error message that can be set when the command is unsuccessful." + "description": "The name of the URL. When rendered as a link this will be used as the linked text." }, { - "name": "Message", + "name": "Endpoint", + "type": "EndpointReference", + "isOptional": true, + "description": "The endpoint associated with this URL. Can be `null` if this URL is not associated with an endpoint." + }, + { + "name": "DisplayLocation", + "type": "UrlDisplayLocation", + "isOptional": true, + "description": "Locations where this URL should be shown on the dashboard. Defaults to `SummaryAndDetails`." + } + ] + }, + { + "name": "UpdateCommandStateResourceSnapshot", + "fullName": "Aspire.Hosting.ApplicationModel.UpdateCommandStateResourceSnapshot", + "kind": "dto", + "description": "Resource snapshot data exposed to polyglot command state callbacks.", + "fields": [ + { + "name": "ResourceType", "type": "string", "isOptional": true, - "description": "An optional message associated with the command result." + "description": "The type of the resource." }, { - "name": "Data", - "type": "CommandResultData", + "name": "State", + "type": "string", "isOptional": true, - "description": "An optional value produced by the command." + "description": "The current lifecycle state text for the resource." + }, + { + "name": "StateStyle", + "type": "string", + "isOptional": true, + "description": "The display style for the current lifecycle state." + }, + { + "name": "HealthStatus", + "type": "HealthStatus", + "isOptional": true, + "description": "The current health status for the resource." + }, + { + "name": "ExitCode", + "type": "number", + "isOptional": true, + "description": "The exit code of the resource." } ] }, { - "name": "GenerateParameterDefault", - "fullName": "Aspire.Hosting.ApplicationModel.GenerateParameterDefault", + "name": "AddContainerOptions", + "fullName": "Aspire.Hosting.Ats.AddContainerOptions", "kind": "dto", - "description": "Represents that a default value should be generated.", - "remarks": "The recommended minimum bits of entropy for a generated password is 128 bits.\nThe general calculation of bits of entropy is:\n`log base 2 (numberPossibleOutputs)`\nThis generator uses 23 upper case, 23 lower case (excludes i,l,o,I,L,O to prevent confusion),\n10 numeric, and 11 special characters. So a total of 67 possible characters.\nWhen all character sets are enabled, the number of possible outputs is `(67 ^ length)`.\nThe minimum password length for 128 bits of entropy is 22 characters: `log base 2 (67 ^ 22)`.\nWhen character sets are disabled, it lowers the number of possible outputs and thus the bits of entropy.\nUsing MinLower, MinUpper, MinNumeric, and MinSpecial also lowers the number of possible outputs and thus the bits of entropy.\nA generalized lower-bound formula for the number of possible outputs is to consider a string of the form:\n```\n{nonRequiredCharacters}{requiredCharacters}\nlet a = MinLower, b = MinUpper, c = MinNumeric, d = MinSpecial\nlet x = length - (a + b + c + d)\nnonRequiredPossibilities = 67^x\nrequiredPossibilities = 23^a * 23^b * 10^c * 11^d * (a + b + c + d)! / (a! * b! * c! * d!)\nlower-bound of total possibilities = nonRequiredPossibilities * requiredPossibilities\n```\nPutting it all together, the lower-bound bits of entropy calculation is:\n```\nlog base 2 [67^x * 23^a * 23^b * 10^c * 11^d * (a + b + c + d)! / (a! * b! * c! * d!)]\n```", + "description": "Options for configuring a container image in polyglot apphosts.", + "fields": [ + { + "name": "Image", + "type": "string", + "isOptional": true, + "description": "The container image name." + }, + { + "name": "Tag", + "type": "string", + "isOptional": true, + "description": "The container image tag." + } + ] + }, + { + "name": "BoolInteractionResult", + "fullName": "Aspire.Hosting.Ats.BoolInteractionResult", + "kind": "dto", + "description": "The result of a boolean interaction prompt.", "fields": [ { - "name": "MinLength", - "type": "number", - "isOptional": true, - "description": "Gets or sets the minimum length of the generated value." - }, - { - "name": "Lower", + "name": "Canceled", "type": "boolean", "isOptional": true, - "description": "Gets or sets a value indicating whether to include lowercase alphabet characters in the result." + "description": "Gets a value indicating whether the interaction was canceled by the user." }, { - "name": "Upper", + "name": "Value", "type": "boolean", "isOptional": true, - "description": "Gets or sets a value indicating whether to include uppercase alphabet characters in the result." - }, + "description": "Gets the value returned from the interaction. Not meaningful when `Canceled` is `true`." + } + ] + }, + { + "name": "CertificateTrustExecutionConfigurationExportData", + "fullName": "Aspire.Hosting.Ats.CertificateTrustExecutionConfigurationExportData", + "kind": "dto", + "description": "ATS-friendly certificate trust data returned from an execution-configuration result.", + "fields": [ { - "name": "Numeric", - "type": "boolean", + "name": "Scope", + "type": "CertificateTrustScope", "isOptional": true, - "description": "Gets or sets a value indicating whether to include numeric characters in the result." + "description": "The certificate trust scope." }, { - "name": "Special", - "type": "boolean", + "name": "CertificateSubjects", + "type": "string[]", "isOptional": true, - "description": "Gets or sets a value indicating whether to include special characters in the result." + "description": "The certificate subjects included in the trust configuration." }, { - "name": "MinLower", - "type": "number", + "name": "CustomBundlePaths", + "type": "string[]", "isOptional": true, - "description": "Gets or sets the minimum number of lowercase characters in the result." - }, + "description": "The relative custom bundle paths." + } + ] + }, + { + "name": "ContainerFilesOptions", + "fullName": "Aspire.Hosting.Ats.ContainerFilesOptions", + "kind": "dto", + "description": "Options for creating or updating files and directories in a container from polyglot apphosts.", + "fields": [ { - "name": "MinUpper", + "name": "DefaultOwner", "type": "number", "isOptional": true, - "description": "Gets or sets the minimum number of uppercase characters in the result." + "description": "The default owner UID for the created or updated file system entries. Defaults to 0 for root if not set." }, { - "name": "MinNumeric", + "name": "DefaultGroup", "type": "number", "isOptional": true, - "description": "Gets or sets the minimum number of numeric characters in the result." + "description": "The default group ID for the created or updated file system entries. Defaults to 0 for root if not set." }, { - "name": "MinSpecial", + "name": "Umask", "type": "number", "isOptional": true, - "description": "Gets or sets the minimum number of special characters in the result." + "description": "The Unix umask to apply to files or directories without explicit permissions. Use octal literals in JavaScript or TypeScript, for example `0o022`." } ] }, { - "name": "HttpCommandExportOptions", - "fullName": "Aspire.Hosting.ApplicationModel.HttpCommandExportOptions", + "name": "CreateBuilderOptions", + "fullName": "Aspire.Hosting.Ats.CreateBuilderOptions", "kind": "dto", - "description": "ATS-friendly configuration for resource HTTP commands.", + "description": "Options for creating a distributed application builder from polyglot apphosts.", "fields": [ { - "name": "Description", - "type": "string", + "name": "Args", + "type": "string[]", "isOptional": true, - "description": "Optional description of the command, to be shown in the UI." + "description": "The command line arguments." }, { - "name": "ConfirmationMessage", + "name": "ProjectDirectory", "type": "string", "isOptional": true, - "description": "When a confirmation message is specified, the UI will prompt with an OK/Cancel dialog before starting the command." + "description": "The directory containing the AppHost project file." }, { - "name": "IconName", + "name": "AppHostFilePath", "type": "string", "isOptional": true, - "description": "The icon name for the command." + "description": "The full path to the AppHost file (e.g., apphost.ts, apphost.py). Used for consistent socket path computation across CLI and AppHost." }, { - "name": "IconVariant", - "type": "IconVariant", + "name": "ContainerRegistryOverride", + "type": "string", "isOptional": true, - "description": "The icon variant." + "description": "When containers are used, use this value to override the container registry." }, { - "name": "IsHighlighted", + "name": "DisableDashboard", "type": "boolean", "isOptional": true, - "description": "A flag indicating whether the command is highlighted in the UI." - }, - { - "name": "CommandName", - "type": "string", - "isOptional": true, - "description": "Gets or sets the command name." + "description": "Determines whether the dashboard is disabled." }, { - "name": "EndpointName", + "name": "DashboardApplicationName", "type": "string", "isOptional": true, - "description": "Gets or sets the HTTP endpoint name to send the request to when the command is invoked." + "description": "The application name to display in the dashboard." }, { - "name": "MethodName", - "type": "string", + "name": "AllowUnsecuredTransport", + "type": "boolean", "isOptional": true, - "description": "Gets or sets the HTTP method name to use when sending the request." + "description": "Allows the use of HTTP urls for the AppHost resource endpoint." }, { - "name": "ResultMode", - "type": "HttpCommandResultMode", + "name": "EnableResourceLogging", + "type": "boolean", "isOptional": true, - "description": "Gets or sets how the HTTP response content should be returned as command result data." + "description": "Enables resource logging." } ] }, { - "name": "HttpsCertificateExecutionConfigurationContext", - "fullName": "Aspire.Hosting.ApplicationModel.HttpsCertificateExecutionConfigurationContext", + "name": "CreateInteractionInputOptions", + "fullName": "Aspire.Hosting.Ats.CreateInteractionInputOptions", "kind": "dto", - "description": "Configuration context for server authentication certificate configuration.", + "description": "Optional configuration shared by interaction input factory capabilities.", "fields": [ { - "name": "CertificatePath", - "type": "ReferenceExpression", + "name": "Label", + "type": "string", "isOptional": true, - "description": "Expression that will resolve to the path of the server authentication certificate in PEM format. For containers this will be a path inside the container." + "description": "Gets or sets the label for the input. Defaults to the input name when not specified." }, { - "name": "KeyPath", - "type": "ReferenceExpression", + "name": "Description", + "type": "string", "isOptional": true, - "description": "Expression that will resolve to the path of the server authentication certificate key in PEM format. For containers this will be a path inside the container." + "description": "Gets or sets the description for the input." }, { - "name": "PfxPath", - "type": "ReferenceExpression", - "isOptional": true, - "description": "Expression that will resolve to the path of the server authentication certificate in PFX format. For containers this will be a path inside the container." - } - ] - }, - { - "name": "ProcessCommandExportOptions", - "fullName": "Aspire.Hosting.ApplicationModel.ProcessCommandExportOptions", - "kind": "dto", - "description": "ATS-friendly configuration for resource process commands.", - "fields": [ - { - "name": "ExecutablePath", - "type": "string", + "name": "EnableDescriptionMarkdown", + "type": "boolean", "isOptional": true, - "description": "The executable path or command name to start." + "description": "Gets or sets a value indicating whether the description is rendered as Markdown." }, { - "name": "Arguments", - "type": "string[]", + "name": "Required", + "type": "boolean", "isOptional": true, - "description": "The command-line arguments for the process." + "description": "Gets or sets a value indicating whether the input is required." }, { - "name": "WorkingDirectory", + "name": "Placeholder", "type": "string", "isOptional": true, - "description": "The working directory for the process." + "description": "Gets or sets the placeholder text for the input." }, { - "name": "EnvironmentVariables", - "type": "Dict", + "name": "Value", + "type": "string", "isOptional": true, - "description": "The environment variables to set for the process." + "description": "Gets or sets the initial value of the input." }, { - "name": "InheritEnvironmentVariables", + "name": "AllowCustomChoice", "type": "boolean", "isOptional": true, - "description": "A value indicating whether the process should inherit the current environment variables." - }, - { - "name": "StandardInputContent", - "type": "string", - "isOptional": true, - "description": "Standard input content to write to the process after it starts." + "description": "Gets or sets a value indicating whether a custom choice is allowed. Only used by choice inputs." }, { - "name": "KillEntireProcessTree", + "name": "Disabled", "type": "boolean", "isOptional": true, - "description": "A value indicating whether the entire process tree should be killed when the process is disposed." + "description": "Gets or sets a value indicating whether the input is disabled." }, { - "name": "CommandOptions", - "type": "CommandOptions", + "name": "MaxLength", + "type": "number", "isOptional": true, - "description": "Optional command configuration." + "description": "Gets or sets the maximum length for text inputs." }, { - "name": "MaxOutputLineCount", + "name": "MaxFileSize", "type": "number", "isOptional": true, - "description": "The maximum number of stdout and stderr output lines returned as command result data." + "description": "Gets or sets the maximum file size in bytes for file inputs." }, { - "name": "DisplayImmediately", + "name": "AllowMultipleFiles", "type": "boolean", "isOptional": true, - "description": "A value indicating whether returned command output should be displayed immediately in the dashboard." + "description": "Gets or sets a value indicating whether multiple files can be selected. Only used by file inputs." }, { - "name": "SuccessExitCodes", - "type": "number[]", + "name": "FileFilter", + "type": "string", "isOptional": true, - "description": "The exit codes that are treated as a successful command invocation." + "description": "Gets or sets the file type filter for file inputs. Uses the same format as the HTML accept attribute. The CLI validates only dot-prefixed extension filters and does not validate MIME type patterns such as \"image/*\"." } ] }, { - "name": "ProcessCommandResultExportOptions", - "fullName": "Aspire.Hosting.ApplicationModel.ProcessCommandResultExportOptions", + "name": "DynamicLoadingOptions", + "fullName": "Aspire.Hosting.Ats.DynamicLoadingOptions", "kind": "dto", - "description": "ATS-friendly result and command configuration for resource process commands.", + "description": "Options controlling when a dynamic-loading callback runs.", "fields": [ { - "name": "CommandOptions", - "type": "CommandOptions", - "isOptional": true, - "description": "Optional command configuration." - }, - { - "name": "MaxOutputLineCount", - "type": "number", - "isOptional": true, - "description": "The maximum number of stdout and stderr output lines returned as command result data." - }, - { - "name": "DisplayImmediately", + "name": "AlwaysLoadOnStart", "type": "boolean", "isOptional": true, - "description": "A value indicating whether returned command output should be displayed immediately in the dashboard." + "description": "Gets or sets a value indicating whether the callback always runs at the start of the prompt." }, { - "name": "SuccessExitCodes", - "type": "number[]", + "name": "DependsOnInputs", + "type": "string[]", "isOptional": true, - "description": "The exit codes that are treated as a successful command invocation." + "description": "Gets or sets the names of inputs this input depends on. The callback runs when any of them change." } ] }, { - "name": "ProcessCommandSpecExportData", - "fullName": "Aspire.Hosting.ApplicationModel.ProcessCommandSpecExportData", + "name": "HealthCheckResult", + "fullName": "Aspire.Hosting.Ats.HealthCheckResult", "kind": "dto", - "description": "ATS-friendly process specification for resource process command callbacks.", + "description": "ATS-friendly custom health check result.", "fields": [ { - "name": "ExecutablePath", - "type": "string", - "isOptional": true, - "description": "The executable path or command name to start." - }, - { - "name": "Arguments", - "type": "string[]", + "name": "Status", + "type": "HealthStatus", "isOptional": true, - "description": "The command-line arguments for the process." + "description": "Gets the health status returned by the health check." }, { - "name": "WorkingDirectory", + "name": "Description", "type": "string", "isOptional": true, - "description": "The working directory for the process." + "description": "Gets an optional description for the health check result." }, { - "name": "EnvironmentVariables", + "name": "Data", "type": "Dict", "isOptional": true, - "description": "The environment variables to set for the process." - }, + "description": "Gets optional string data for the health check result." + } + ] + }, + { + "name": "HttpsCertificateExecutionConfigurationExportData", + "fullName": "Aspire.Hosting.Ats.HttpsCertificateExecutionConfigurationExportData", + "kind": "dto", + "description": "ATS-friendly HTTPS certificate data returned from an execution-configuration result.", + "fields": [ { - "name": "InheritEnvironmentVariables", - "type": "boolean", + "name": "Subject", + "type": "string", "isOptional": true, - "description": "A value indicating whether the process should inherit the current environment variables." + "description": "The certificate subject." }, { - "name": "StandardInputContent", + "name": "Thumbprint", "type": "string", "isOptional": true, - "description": "Standard input content to write to the process after it starts." + "description": "The certificate thumbprint." }, { - "name": "KillEntireProcessTree", - "type": "boolean", + "name": "KeyPathExpression", + "type": "string", "isOptional": true, - "description": "A value indicating whether the entire process tree should be killed when the process is disposed." - } - ] - }, - { - "name": "ResourceUrlAnnotation", - "fullName": "Aspire.Hosting.ApplicationModel.ResourceUrlAnnotation", - "kind": "dto", - "description": "A URL that should be displayed for a resource.", - "fields": [ + "description": "The expression for the key path reference." + }, { - "name": "Url", + "name": "PfxPathExpression", "type": "string", "isOptional": true, - "description": "The URL. When rendered as a link this will be used as the link target." + "description": "The expression for the PFX path reference." }, { - "name": "DisplayText", - "type": "string", + "name": "IsKeyPathReferenced", + "type": "boolean", "isOptional": true, - "description": "The name of the URL. When rendered as a link this will be used as the linked text." + "description": "Indicates whether the key path was referenced." }, { - "name": "Endpoint", - "type": "EndpointReference", + "name": "IsCertificateWithKeyPathReferenced", + "type": "boolean", "isOptional": true, - "description": "The endpoint associated with this URL. Can be `null` if this URL is not associated with an endpoint." + "description": "Indicates whether the key path was referenced." }, { - "name": "DisplayLocation", - "type": "UrlDisplayLocation", + "name": "IsPfxPathReferenced", + "type": "boolean", "isOptional": true, - "description": "Locations where this URL should be shown on the dashboard. Defaults to `SummaryAndDetails`." + "description": "Indicates whether the PFX path was referenced." + }, + { + "name": "Password", + "type": "string", + "isOptional": true, + "description": "The certificate password, if any." } ] }, { - "name": "UpdateCommandStateResourceSnapshot", - "fullName": "Aspire.Hosting.ApplicationModel.UpdateCommandStateResourceSnapshot", + "name": "HttpsCertificateInfo", + "fullName": "Aspire.Hosting.Ats.HttpsCertificateInfo", "kind": "dto", - "description": "Resource snapshot data exposed to polyglot command state callbacks.", + "description": "ATS-friendly certificate metadata supplied to HTTPS certificate configuration callbacks.", "fields": [ { - "name": "ResourceType", + "name": "Subject", "type": "string", "isOptional": true, - "description": "The type of the resource." + "description": "The certificate subject." }, { - "name": "State", + "name": "Issuer", "type": "string", "isOptional": true, - "description": "The current lifecycle state text for the resource." + "description": "The certificate issuer." }, { - "name": "StateStyle", + "name": "Thumbprint", "type": "string", "isOptional": true, - "description": "The display style for the current lifecycle state." - }, + "description": "The certificate thumbprint." + } + ] + }, + { + "name": "InputInteractionResult", + "fullName": "Aspire.Hosting.Ats.InputInteractionResult", + "kind": "dto", + "description": "The result of a single-input interaction prompt.", + "fields": [ { - "name": "HealthStatus", - "type": "HealthStatus", + "name": "Canceled", + "type": "boolean", "isOptional": true, - "description": "The current health status for the resource." + "description": "Gets a value indicating whether the interaction was canceled by the user." }, { - "name": "ExitCode", - "type": "number", + "name": "Input", + "type": "InteractionInput", "isOptional": true, - "description": "The exit code of the resource." + "description": "Gets the input returned from the interaction. Not present when `Canceled` is `true`." } ] }, { - "name": "AddContainerOptions", - "fullName": "Aspire.Hosting.Ats.AddContainerOptions", + "name": "InteractionChoiceOption", + "fullName": "Aspire.Hosting.Ats.InteractionChoiceOption", "kind": "dto", - "description": "Options for configuring a container image in polyglot apphosts.", + "description": "A single selectable option for a choice input. Options are presented in the order supplied.", "fields": [ { - "name": "Image", + "name": "Value", "type": "string", "isOptional": true, - "description": "The container image name." + "description": "Gets or sets the value submitted when this option is selected." }, { - "name": "Tag", + "name": "Label", "type": "string", "isOptional": true, - "description": "The container image tag." + "description": "Gets or sets the label displayed for this option." } ] }, { - "name": "CertificateTrustExecutionConfigurationExportData", - "fullName": "Aspire.Hosting.Ats.CertificateTrustExecutionConfigurationExportData", + "name": "InteractionInputsDialogOptions", + "fullName": "Aspire.Hosting.Ats.InteractionInputsDialogOptions", "kind": "dto", - "description": "ATS-friendly certificate trust data returned from an execution-configuration result.", + "description": "Options for inputs dialog prompts.", "fields": [ { - "name": "Scope", - "type": "CertificateTrustScope", + "name": "PrimaryButtonText", + "type": "string", "isOptional": true, - "description": "The certificate trust scope." + "description": "Gets or sets the primary button text." }, { - "name": "CertificateSubjects", - "type": "string[]", + "name": "SecondaryButtonText", + "type": "string", "isOptional": true, - "description": "The certificate subjects included in the trust configuration." + "description": "Gets or sets the secondary button text." }, { - "name": "CustomBundlePaths", - "type": "string[]", + "name": "ShowSecondaryButton", + "type": "boolean", "isOptional": true, - "description": "The relative custom bundle paths." - } - ] - }, - { - "name": "CreateBuilderOptions", - "fullName": "Aspire.Hosting.Ats.CreateBuilderOptions", - "kind": "dto", - "description": "Options for creating a distributed application builder from polyglot apphosts.", - "fields": [ + "description": "Gets or sets a value indicating whether the secondary button is shown." + }, { - "name": "Args", - "type": "string[]", + "name": "ShowDismiss", + "type": "boolean", "isOptional": true, - "description": "The command line arguments." + "description": "Gets or sets a value indicating whether the dismiss button is shown." }, { - "name": "ProjectDirectory", - "type": "string", + "name": "EnableMessageMarkdown", + "type": "boolean", "isOptional": true, - "description": "The directory containing the AppHost project file." + "description": "Gets or sets a value indicating whether Markdown in the message is rendered." }, { - "name": "AppHostFilePath", + "name": "ValidationCallback", + "type": "callback", + "isOptional": true, + "description": "Gets or sets a callback invoked to validate the inputs before the dialog is accepted. The callback receives a validation context that exposes the current inputs and can record validation errors." + } + ] + }, + { + "name": "InteractionMessageBoxOptions", + "fullName": "Aspire.Hosting.Ats.InteractionMessageBoxOptions", + "kind": "dto", + "description": "Options for message box and confirmation prompts.", + "fields": [ + { + "name": "PrimaryButtonText", "type": "string", "isOptional": true, - "description": "The full path to the AppHost file (e.g., apphost.ts, apphost.py). Used for consistent socket path computation across CLI and AppHost." + "description": "Gets or sets the primary button text." }, { - "name": "ContainerRegistryOverride", + "name": "SecondaryButtonText", "type": "string", "isOptional": true, - "description": "When containers are used, use this value to override the container registry." + "description": "Gets or sets the secondary button text." }, { - "name": "DisableDashboard", + "name": "ShowSecondaryButton", "type": "boolean", "isOptional": true, - "description": "Determines whether the dashboard is disabled." + "description": "Gets or sets a value indicating whether the secondary button is shown." }, { - "name": "DashboardApplicationName", - "type": "string", + "name": "ShowDismiss", + "type": "boolean", "isOptional": true, - "description": "The application name to display in the dashboard." + "description": "Gets or sets a value indicating whether the dismiss button is shown." }, { - "name": "AllowUnsecuredTransport", + "name": "EnableMessageMarkdown", "type": "boolean", "isOptional": true, - "description": "Allows the use of HTTP urls for the AppHost resource endpoint." + "description": "Gets or sets a value indicating whether Markdown in the message is rendered." }, { - "name": "EnableResourceLogging", - "type": "boolean", + "name": "Intent", + "type": "MessageIntent", "isOptional": true, - "description": "Enables resource logging." + "description": "Gets or sets the intent of the message box." } ] }, { - "name": "HttpsCertificateExecutionConfigurationExportData", - "fullName": "Aspire.Hosting.Ats.HttpsCertificateExecutionConfigurationExportData", + "name": "InteractionNotificationOptions", + "fullName": "Aspire.Hosting.Ats.InteractionNotificationOptions", "kind": "dto", - "description": "ATS-friendly HTTPS certificate data returned from an execution-configuration result.", + "description": "Options for notification prompts.", "fields": [ { - "name": "Subject", + "name": "PrimaryButtonText", "type": "string", "isOptional": true, - "description": "The certificate subject." + "description": "Gets or sets the primary button text." }, { - "name": "Thumbprint", + "name": "SecondaryButtonText", "type": "string", "isOptional": true, - "description": "The certificate thumbprint." + "description": "Gets or sets the secondary button text." }, { - "name": "KeyPathExpression", - "type": "string", + "name": "ShowSecondaryButton", + "type": "boolean", "isOptional": true, - "description": "The expression for the key path reference." + "description": "Gets or sets a value indicating whether the secondary button is shown." }, { - "name": "PfxPathExpression", - "type": "string", + "name": "ShowDismiss", + "type": "boolean", "isOptional": true, - "description": "The expression for the PFX path reference." + "description": "Gets or sets a value indicating whether the dismiss button is shown." }, { - "name": "IsKeyPathReferenced", + "name": "EnableMessageMarkdown", "type": "boolean", "isOptional": true, - "description": "Indicates whether the key path was referenced." + "description": "Gets or sets a value indicating whether Markdown in the message is rendered." }, { - "name": "IsPfxPathReferenced", - "type": "boolean", + "name": "Intent", + "type": "MessageIntent", "isOptional": true, - "description": "Indicates whether the PFX path was referenced." + "description": "Gets or sets the intent of the notification." }, { - "name": "Password", + "name": "LinkText", "type": "string", "isOptional": true, - "description": "The certificate password, if any." + "description": "Gets or sets the text for a link in the notification." + }, + { + "name": "LinkUrl", + "type": "string", + "isOptional": true, + "description": "Gets or sets the URL for the link in the notification." } ] }, { - "name": "HttpsCertificateInfo", - "fullName": "Aspire.Hosting.Ats.HttpsCertificateInfo", + "name": "InteractionProgressOptions", + "fullName": "Aspire.Hosting.Ats.InteractionProgressOptions", "kind": "dto", - "description": "ATS-friendly certificate metadata supplied to HTTPS certificate configuration callbacks.", + "description": "Options for progress dialog prompts.", "fields": [ { - "name": "Subject", + "name": "PrimaryButtonText", "type": "string", "isOptional": true, - "description": "The certificate subject." + "description": "Gets or sets the primary button text (e.g. \"Cancel\")." }, { - "name": "Issuer", - "type": "string", + "name": "EnableMessageMarkdown", + "type": "boolean", "isOptional": true, - "description": "The certificate issuer." + "description": "Gets or sets a value indicating whether Markdown in the message is rendered." }, { - "name": "Thumbprint", - "type": "string", + "name": "Work", + "type": "callback", "isOptional": true, - "description": "The certificate thumbprint." + "description": "Gets or sets an optional asynchronous work callback to execute while the progress dialog is displayed. When provided, the progress dialog remains open while this callback executes and closes automatically when the callback completes." } ] }, @@ -18256,12 +22360,6 @@ "isOptional": true, "description": "Gets or sets the options for the input. Only used by `Choice` inputs." }, - { - "name": "DynamicLoading", - "type": "InputLoadOptions", - "isOptional": true, - "description": "Gets the `InputLoadOptions` for the input. Dynamic loading is used to load data and update inputs after a prompt has started. It can also be used to reload data and update inputs after a dependant input has changed." - }, { "name": "Value", "type": "string", @@ -18284,13 +22382,46 @@ "name": "Disabled", "type": "boolean", "isOptional": true, - "description": "Gets or sets a value indicating whether a custom choice is allowed. Only used by `Choice` inputs." + "description": "Gets or sets a value indicating whether the input is disabled." }, { "name": "MaxLength", "type": "number", "isOptional": true, "description": "gets or sets the maximum length for text inputs." + }, + { + "name": "AllowMultipleFiles", + "type": "boolean", + "isOptional": true, + "description": "Gets or sets a value indicating whether multiple files can be selected. Only used by `File` inputs." + }, + { + "name": "FileFilter", + "type": "string", + "isOptional": true, + "description": "Gets or sets the file type filter for `File` inputs. Uses the same format as the HTML `accept` attribute, e.g. `\".pem,.pfx,.crt\"` or `\"image/*\"`. When set, the file picker restricts selectable files. The CLI validates only dot-prefixed extension filters and does not validate MIME type patterns such as `\"image/*\"`." + }, + { + "name": "MaxFileSize", + "type": "number", + "isOptional": true, + "description": "Gets or sets the maximum file size in bytes for `File` inputs. If not specified, the server applies the configured upload limit (default 100 MB). When specified, the value is capped at the server-side upload limit." + } + ] + }, + { + "name": "RunConfiguration", + "fullName": "Aspire.Hosting.RunConfiguration", + "kind": "dto", + "description": "Holds settings applicable to the AppHost run mode (when `Operation` is `Run`).", + "remarks": "Integrations use it to vary how their resources are launched without changing the core hosting behavior.\nIn `Publish` mode every property holds its default value.", + "fields": [ + { + "name": "WatchEnabled", + "type": "boolean", + "isOptional": true, + "description": "Indicates that resources should start in watch mode if able." } ] } @@ -18667,7 +22798,8 @@ "SecretText", "Choice", "Boolean", - "Number" + "Number", + "File" ], "memberDocs": [ { @@ -18689,6 +22821,50 @@ { "name": "Number", "description": "A numeric input." + }, + { + "name": "File", + "description": "A file input. Allows the user to select a file using the OS/browser file picker." + } + ] + }, + { + "name": "MessageIntent", + "fullName": "Aspire.Hosting.MessageIntent", + "kind": "enum", + "description": "Specifies the intent or purpose of a message in an interaction.", + "members": [ + "None", + "Success", + "Warning", + "Error", + "Information", + "Confirmation" + ], + "memberDocs": [ + { + "name": "None", + "description": "No specific intent." + }, + { + "name": "Success", + "description": "Indicates a successful operation." + }, + { + "name": "Warning", + "description": "Indicates a warning." + }, + { + "name": "Error", + "description": "Indicates an error." + }, + { + "name": "Information", + "description": "Provides informational content." + }, + { + "name": "Confirmation", + "description": "Requests confirmation from the user." } ] }, @@ -18716,6 +22892,91 @@ "description": "Http/JSON-based OTLP exporter." } ] + }, + { + "name": "ContainerImageDestination", + "fullName": "Aspire.Hosting.Publishing.ContainerImageDestination", + "kind": "enum", + "description": "Specifies the destination for container images.", + "members": [ + "Registry", + "Archive" + ], + "memberDocs": [ + { + "name": "Registry", + "description": "Image will be pushed to a container registry." + }, + { + "name": "Archive", + "description": "Image will be saved as an archive file." + } + ] + }, + { + "name": "ContainerImageFormat", + "fullName": "Aspire.Hosting.Publishing.ContainerImageFormat", + "kind": "enum", + "description": "Specifies the format for container images.", + "members": [ + "Docker", + "Oci" + ], + "memberDocs": [ + { + "name": "Docker", + "description": "Docker format (default)." + }, + { + "name": "Oci", + "description": "OCI format." + } + ] + }, + { + "name": "ContainerTargetPlatform", + "fullName": "Aspire.Hosting.Publishing.ContainerTargetPlatform", + "kind": "enum", + "description": "Specifies the target platform for container images.", + "members": [ + "LinuxAmd64", + "LinuxArm64", + "AllLinux", + "LinuxArm", + "Linux386", + "WindowsAmd64", + "WindowsArm64" + ], + "memberDocs": [ + { + "name": "LinuxAmd64", + "description": "Linux AMD64 (linux/amd64)." + }, + { + "name": "LinuxArm64", + "description": "Linux ARM64 (linux/arm64)." + }, + { + "name": "AllLinux", + "description": "All Linux platforms (AMD64 and ARM64)." + }, + { + "name": "LinuxArm", + "description": "Linux ARM (linux/arm)." + }, + { + "name": "Linux386", + "description": "Linux 386 (linux/386)." + }, + { + "name": "WindowsAmd64", + "description": "Windows AMD64 (windows/amd64)." + }, + { + "name": "WindowsArm64", + "description": "Windows ARM64 (windows/arm64)." + } + ] } ] } \ No newline at end of file diff --git a/src/frontend/src/data/ts-modules/Aspire.Hosting.AWS.13.6.0.json b/src/frontend/src/data/ts-modules/Aspire.Hosting.AWS.13.6.0.json deleted file mode 100644 index fdd04d3a3..000000000 --- a/src/frontend/src/data/ts-modules/Aspire.Hosting.AWS.13.6.0.json +++ /dev/null @@ -1,751 +0,0 @@ -{ - "package": { - "name": "Aspire.Hosting.AWS", - "version": "13.6.0", - "language": "typescript", - "sourceRepository": "https://github.com/aws/integrations-on-dotnet-aspire-for-aws" - }, - "functions": [ - { - "name": "addAWSAPIGatewayEmulator", - "capabilityId": "Aspire.Hosting.AWS/addAWSAPIGatewayEmulator", - "qualifiedName": "addAWSAPIGatewayEmulator", - "kind": "Method", - "signature": "addAWSAPIGatewayEmulator(name: string, apiGatewayType: APIGatewayType, options?: APIGatewayEmulatorOptions): APIGatewayEmulatorResource", - "parameters": [ - { - "name": "name", - "type": "string" - }, - { - "name": "apiGatewayType", - "type": "APIGatewayType" - }, - { - "name": "options", - "type": "APIGatewayEmulatorOptions", - "isOptional": true - } - ], - "returnType": "APIGatewayEmulatorResource", - "returnsBuilder": true, - "targetTypeId": "Aspire.Hosting/Aspire.Hosting.IDistributedApplicationBuilder", - "expandedTargetTypes": [ - "Aspire.Hosting.IDistributedApplicationBuilder" - ] - }, - { - "name": "addAWSDynamoDBLocal", - "capabilityId": "Aspire.Hosting.AWS/addAWSDynamoDBLocal", - "qualifiedName": "addAWSDynamoDBLocal", - "kind": "Method", - "signature": "addAWSDynamoDBLocal(name: string, options?: DynamoDBLocalOptions): DynamoDBLocalResource", - "parameters": [ - { - "name": "name", - "type": "string" - }, - { - "name": "options", - "type": "DynamoDBLocalOptions", - "isOptional": true - } - ], - "returnType": "DynamoDBLocalResource", - "returnsBuilder": true, - "targetTypeId": "Aspire.Hosting/Aspire.Hosting.IDistributedApplicationBuilder", - "expandedTargetTypes": [ - "Aspire.Hosting.IDistributedApplicationBuilder" - ] - }, - { - "name": "addAWSLambdaFunction", - "capabilityId": "Aspire.Hosting.AWS/addAWSLambdaFunction", - "qualifiedName": "addAWSLambdaFunction", - "kind": "Method", - "signature": "addAWSLambdaFunction(name: string, projectPath: string, lambdaHandler: string, options?: LambdaFunctionPolyglotOptions): LambdaProjectResource", - "parameters": [ - { - "name": "name", - "type": "string" - }, - { - "name": "projectPath", - "type": "string" - }, - { - "name": "lambdaHandler", - "type": "string" - }, - { - "name": "options", - "type": "LambdaFunctionPolyglotOptions", - "isOptional": true - } - ], - "returnType": "LambdaProjectResource", - "returnsBuilder": true, - "targetTypeId": "Aspire.Hosting/Aspire.Hosting.IDistributedApplicationBuilder", - "expandedTargetTypes": [ - "Aspire.Hosting.IDistributedApplicationBuilder" - ] - }, - { - "name": "addAWSLambdaServiceEmulator", - "capabilityId": "Aspire.Hosting.AWS/addAWSLambdaServiceEmulator", - "qualifiedName": "addAWSLambdaServiceEmulator", - "kind": "Method", - "signature": "addAWSLambdaServiceEmulator(options?: LambdaEmulatorOptions): LambdaEmulatorResource", - "parameters": [ - { - "name": "options", - "type": "LambdaEmulatorOptions", - "isOptional": true - } - ], - "returnType": "LambdaEmulatorResource", - "returnsBuilder": true, - "targetTypeId": "Aspire.Hosting/Aspire.Hosting.IDistributedApplicationBuilder", - "expandedTargetTypes": [ - "Aspire.Hosting.IDistributedApplicationBuilder" - ] - }, - { - "name": "addAWSSDKConfig", - "capabilityId": "Aspire.Hosting.AWS/addAWSSDKConfig", - "qualifiedName": "addAWSSDKConfig", - "kind": "Method", - "signature": "addAWSSDKConfig(): IAWSSDKConfig", - "parameters": [], - "returnType": "IAWSSDKConfig", - "targetTypeId": "Aspire.Hosting/Aspire.Hosting.IDistributedApplicationBuilder", - "expandedTargetTypes": [ - "Aspire.Hosting.IDistributedApplicationBuilder" - ] - }, - { - "name": "withAPIGatewayLambdaReference", - "capabilityId": "Aspire.Hosting.AWS/withAPIGatewayLambdaReference", - "qualifiedName": "withAPIGatewayLambdaReference", - "kind": "Method", - "signature": "withAPIGatewayLambdaReference(lambda: LambdaProjectResource, httpMethod: Method, path: string): APIGatewayEmulatorResource", - "parameters": [ - { - "name": "lambda", - "type": "LambdaProjectResource" - }, - { - "name": "httpMethod", - "type": "Method" - }, - { - "name": "path", - "type": "string" - } - ], - "returnType": "APIGatewayEmulatorResource", - "returnsBuilder": true, - "targetTypeId": "Aspire.Hosting.AWS/Aspire.Hosting.AWS.Lambda.APIGatewayEmulatorResource", - "expandedTargetTypes": [ - "Aspire.Hosting.AWS.Lambda.APIGatewayEmulatorResource" - ] - }, - { - "name": "withAWSSDKConfigReference", - "capabilityId": "Aspire.Hosting.AWS/withAWSSDKConfigReference", - "qualifiedName": "withAWSSDKConfigReference", - "kind": "Method", - "signature": "withAWSSDKConfigReference(awsSdkConfig: IAWSSDKConfig): IResourceWithEnvironment", - "parameters": [ - { - "name": "awsSdkConfig", - "type": "IAWSSDKConfig" - } - ], - "returnType": "IResourceWithEnvironment", - "returnsBuilder": true, - "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.IResourceWithEnvironment", - "expandedTargetTypes": [ - "Aspire.Hosting.ApplicationModel.ContainerResource", - "Aspire.Hosting.ApplicationModel.ExecutableResource", - "Aspire.Hosting.ApplicationModel.ProjectResource", - "Aspire.Hosting.ApplicationModel.DotnetToolResource", - "Aspire.Hosting.ApplicationModel.CSharpAppResource", - "Aspire.Hosting.AWS.Lambda.APIGatewayEmulatorResource", - "Aspire.Hosting.AWS.Lambda.LambdaEmulatorResource", - "Aspire.Hosting.AWS.Lambda.LambdaProjectResource", - "Aspire.Hosting.AWS.DynamoDB.DynamoDBLocalResource", - "Aspire.Hosting.ApplicationModel.RedisResource", - "Aspire.Hosting.Redis.RedisCommanderResource", - "Aspire.Hosting.Redis.RedisInsightResource", - "Aspire.Hosting.ApplicationModel.ValkeyResource" - ] - }, - { - "name": "withDynamoDBLocalReference", - "capabilityId": "Aspire.Hosting.AWS/withDynamoDBLocalReference", - "qualifiedName": "withDynamoDBLocalReference", - "kind": "Method", - "signature": "withDynamoDBLocalReference(dynamoDBLocalResourceBuilder: DynamoDBLocalResource): IResourceWithEnvironment", - "parameters": [ - { - "name": "dynamoDBLocalResourceBuilder", - "type": "DynamoDBLocalResource" - } - ], - "returnType": "IResourceWithEnvironment", - "returnsBuilder": true, - "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.IResourceWithEnvironment", - "expandedTargetTypes": [ - "Aspire.Hosting.ApplicationModel.ContainerResource", - "Aspire.Hosting.ApplicationModel.ExecutableResource", - "Aspire.Hosting.ApplicationModel.ProjectResource", - "Aspire.Hosting.ApplicationModel.DotnetToolResource", - "Aspire.Hosting.ApplicationModel.CSharpAppResource", - "Aspire.Hosting.AWS.Lambda.APIGatewayEmulatorResource", - "Aspire.Hosting.AWS.Lambda.LambdaEmulatorResource", - "Aspire.Hosting.AWS.Lambda.LambdaProjectResource", - "Aspire.Hosting.AWS.DynamoDB.DynamoDBLocalResource", - "Aspire.Hosting.ApplicationModel.RedisResource", - "Aspire.Hosting.Redis.RedisCommanderResource", - "Aspire.Hosting.Redis.RedisInsightResource", - "Aspire.Hosting.ApplicationModel.ValkeyResource" - ] - }, - { - "name": "withDynamoDBStreamsEventSource", - "capabilityId": "Aspire.Hosting.AWS/withDynamoDBStreamsEventSource", - "qualifiedName": "withDynamoDBStreamsEventSource", - "kind": "Method", - "signature": "withDynamoDBStreamsEventSource(tableName: string, options?: DynamoDBStreamsEventSourceOptions): LambdaProjectResource", - "parameters": [ - { - "name": "tableName", - "type": "string" - }, - { - "name": "options", - "type": "DynamoDBStreamsEventSourceOptions", - "isOptional": true - } - ], - "returnType": "LambdaProjectResource", - "returnsBuilder": true, - "targetTypeId": "Aspire.Hosting.AWS/Aspire.Hosting.AWS.Lambda.LambdaProjectResource", - "expandedTargetTypes": [ - "Aspire.Hosting.AWS.Lambda.LambdaProjectResource" - ] - }, - { - "name": "withProfile", - "capabilityId": "Aspire.Hosting.AWS/withProfile", - "qualifiedName": "withProfile", - "kind": "Method", - "signature": "withProfile(profile: string): IAWSSDKConfig", - "parameters": [ - { - "name": "profile", - "type": "string" - } - ], - "returnType": "IAWSSDKConfig", - "targetTypeId": "Aspire.Hosting.AWS/Aspire.Hosting.AWS.IAWSSDKConfig", - "expandedTargetTypes": [ - "Aspire.Hosting.AWS.IAWSSDKConfig" - ] - }, - { - "name": "withRegion", - "capabilityId": "Aspire.Hosting.AWS/withRegion", - "qualifiedName": "withRegion", - "kind": "Method", - "signature": "withRegion(systemName: string): IAWSSDKConfig", - "parameters": [ - { - "name": "systemName", - "type": "string" - } - ], - "returnType": "IAWSSDKConfig", - "targetTypeId": "Aspire.Hosting.AWS/Aspire.Hosting.AWS.IAWSSDKConfig", - "expandedTargetTypes": [ - "Aspire.Hosting.AWS.IAWSSDKConfig" - ] - }, - { - "name": "withSdkValidation", - "capabilityId": "Aspire.Hosting.AWS/withSdkValidation", - "qualifiedName": "withSdkValidation", - "kind": "Method", - "signature": "withSdkValidation(sdkValidationEnabled: boolean): IAWSSDKConfig", - "parameters": [ - { - "name": "sdkValidationEnabled", - "type": "boolean" - } - ], - "returnType": "IAWSSDKConfig", - "targetTypeId": "Aspire.Hosting.AWS/Aspire.Hosting.AWS.IAWSSDKConfig", - "expandedTargetTypes": [ - "Aspire.Hosting.AWS.IAWSSDKConfig" - ] - }, - { - "name": "withSQSEventSource", - "capabilityId": "Aspire.Hosting.AWS/withSQSEventSource", - "qualifiedName": "withSQSEventSource", - "kind": "Method", - "signature": "withSQSEventSource(queueUrl: string, options?: SQSEventSourceOptions): LambdaProjectResource", - "parameters": [ - { - "name": "queueUrl", - "type": "string" - }, - { - "name": "options", - "type": "SQSEventSourceOptions", - "isOptional": true - } - ], - "returnType": "LambdaProjectResource", - "returnsBuilder": true, - "targetTypeId": "Aspire.Hosting.AWS/Aspire.Hosting.AWS.Lambda.LambdaProjectResource", - "expandedTargetTypes": [ - "Aspire.Hosting.AWS.Lambda.LambdaProjectResource" - ] - } - ], - "handleTypes": [ - { - "name": "DynamoDBLocalResource", - "fullName": "Aspire.Hosting.AWS.DynamoDB.DynamoDBLocalResource", - "kind": "handle", - "implementedInterfaces": [ - "Aspire.Hosting.ApplicationModel.IComputeResource", - "Aspire.Hosting.ApplicationModel.IResource", - "Aspire.Hosting.ApplicationModel.IResourceWithArgs", - "Aspire.Hosting.ApplicationModel.IResourceWithEndpoints", - "Aspire.Hosting.ApplicationModel.IResourceWithEnvironment", - "Aspire.Hosting.ApplicationModel.IResourceWithProbes", - "Aspire.Hosting.ApplicationModel.IResourceWithWaitSupport", - "Aspire.Hosting.AWS.DynamoDB.IDynamoDBLocalResource" - ], - "baseTypeHierarchy": [ - "Aspire.Hosting.ApplicationModel.ContainerResource", - "Aspire.Hosting.ApplicationModel.Resource" - ], - "capabilities": [] - }, - { - "name": "IAWSSDKConfig", - "fullName": "Aspire.Hosting.AWS.IAWSSDKConfig", - "kind": "handle", - "isInterface": true, - "implementedInterfaces": [], - "baseTypeHierarchy": [], - "capabilities": [ - { - "name": "withProfile", - "capabilityId": "Aspire.Hosting.AWS/withProfile", - "qualifiedName": "withProfile", - "kind": "Method", - "signature": "withProfile(profile: string): IAWSSDKConfig", - "parameters": [ - { - "name": "profile", - "type": "string" - } - ], - "returnType": "IAWSSDKConfig", - "targetTypeId": "Aspire.Hosting.AWS/Aspire.Hosting.AWS.IAWSSDKConfig", - "expandedTargetTypes": [ - "Aspire.Hosting.AWS.IAWSSDKConfig" - ] - }, - { - "name": "withRegion", - "capabilityId": "Aspire.Hosting.AWS/withRegion", - "qualifiedName": "withRegion", - "kind": "Method", - "signature": "withRegion(systemName: string): IAWSSDKConfig", - "parameters": [ - { - "name": "systemName", - "type": "string" - } - ], - "returnType": "IAWSSDKConfig", - "targetTypeId": "Aspire.Hosting.AWS/Aspire.Hosting.AWS.IAWSSDKConfig", - "expandedTargetTypes": [ - "Aspire.Hosting.AWS.IAWSSDKConfig" - ] - }, - { - "name": "withSdkValidation", - "capabilityId": "Aspire.Hosting.AWS/withSdkValidation", - "qualifiedName": "withSdkValidation", - "kind": "Method", - "signature": "withSdkValidation(sdkValidationEnabled: boolean): IAWSSDKConfig", - "parameters": [ - { - "name": "sdkValidationEnabled", - "type": "boolean" - } - ], - "returnType": "IAWSSDKConfig", - "targetTypeId": "Aspire.Hosting.AWS/Aspire.Hosting.AWS.IAWSSDKConfig", - "expandedTargetTypes": [ - "Aspire.Hosting.AWS.IAWSSDKConfig" - ] - } - ] - }, - { - "name": "APIGatewayEmulatorResource", - "fullName": "Aspire.Hosting.AWS.Lambda.APIGatewayEmulatorResource", - "kind": "handle", - "implementedInterfaces": [ - "Aspire.Hosting.ApplicationModel.IComputeResource", - "Aspire.Hosting.ApplicationModel.IResource", - "Aspire.Hosting.ApplicationModel.IResourceWithArgs", - "Aspire.Hosting.ApplicationModel.IResourceWithEndpoints", - "Aspire.Hosting.ApplicationModel.IResourceWithEnvironment", - "Aspire.Hosting.ApplicationModel.IResourceWithProbes", - "Aspire.Hosting.ApplicationModel.IResourceWithWaitSupport" - ], - "baseTypeHierarchy": [ - "Aspire.Hosting.ApplicationModel.ExecutableResource", - "Aspire.Hosting.ApplicationModel.Resource" - ], - "capabilities": [ - { - "name": "withAPIGatewayLambdaReference", - "capabilityId": "Aspire.Hosting.AWS/withAPIGatewayLambdaReference", - "qualifiedName": "withAPIGatewayLambdaReference", - "kind": "Method", - "signature": "withAPIGatewayLambdaReference(lambda: LambdaProjectResource, httpMethod: Method, path: string): APIGatewayEmulatorResource", - "parameters": [ - { - "name": "lambda", - "type": "LambdaProjectResource" - }, - { - "name": "httpMethod", - "type": "Method" - }, - { - "name": "path", - "type": "string" - } - ], - "returnType": "APIGatewayEmulatorResource", - "returnsBuilder": true, - "targetTypeId": "Aspire.Hosting.AWS/Aspire.Hosting.AWS.Lambda.APIGatewayEmulatorResource", - "expandedTargetTypes": [ - "Aspire.Hosting.AWS.Lambda.APIGatewayEmulatorResource" - ] - } - ] - }, - { - "name": "LambdaEmulatorResource", - "fullName": "Aspire.Hosting.AWS.Lambda.LambdaEmulatorResource", - "kind": "handle", - "implementedInterfaces": [ - "Aspire.Hosting.ApplicationModel.IComputeResource", - "Aspire.Hosting.ApplicationModel.IResource", - "Aspire.Hosting.ApplicationModel.IResourceWithArgs", - "Aspire.Hosting.ApplicationModel.IResourceWithEndpoints", - "Aspire.Hosting.ApplicationModel.IResourceWithEnvironment", - "Aspire.Hosting.ApplicationModel.IResourceWithProbes", - "Aspire.Hosting.ApplicationModel.IResourceWithWaitSupport" - ], - "baseTypeHierarchy": [ - "Aspire.Hosting.ApplicationModel.ExecutableResource", - "Aspire.Hosting.ApplicationModel.Resource" - ], - "capabilities": [] - }, - { - "name": "LambdaProjectResource", - "fullName": "Aspire.Hosting.AWS.Lambda.LambdaProjectResource", - "kind": "handle", - "implementedInterfaces": [ - "Aspire.Hosting.ApplicationModel.IComputeResource", - "Aspire.Hosting.ApplicationModel.IContainerFilesDestinationResource", - "Aspire.Hosting.ApplicationModel.IResource", - "Aspire.Hosting.ApplicationModel.IResourceWithArgs", - "Aspire.Hosting.ApplicationModel.IResourceWithEndpoints", - "Aspire.Hosting.ApplicationModel.IResourceWithEnvironment", - "Aspire.Hosting.ApplicationModel.IResourceWithProbes", - "Aspire.Hosting.ApplicationModel.IResourceWithWaitSupport", - "Aspire.Hosting.IResourceWithServiceDiscovery" - ], - "baseTypeHierarchy": [ - "Aspire.Hosting.ApplicationModel.ProjectResource", - "Aspire.Hosting.ApplicationModel.Resource" - ], - "capabilities": [ - { - "name": "withDynamoDBStreamsEventSource", - "capabilityId": "Aspire.Hosting.AWS/withDynamoDBStreamsEventSource", - "qualifiedName": "withDynamoDBStreamsEventSource", - "kind": "Method", - "signature": "withDynamoDBStreamsEventSource(tableName: string, options?: DynamoDBStreamsEventSourceOptions): LambdaProjectResource", - "parameters": [ - { - "name": "tableName", - "type": "string" - }, - { - "name": "options", - "type": "DynamoDBStreamsEventSourceOptions", - "isOptional": true - } - ], - "returnType": "LambdaProjectResource", - "returnsBuilder": true, - "targetTypeId": "Aspire.Hosting.AWS/Aspire.Hosting.AWS.Lambda.LambdaProjectResource", - "expandedTargetTypes": [ - "Aspire.Hosting.AWS.Lambda.LambdaProjectResource" - ] - }, - { - "name": "withSQSEventSource", - "capabilityId": "Aspire.Hosting.AWS/withSQSEventSource", - "qualifiedName": "withSQSEventSource", - "kind": "Method", - "signature": "withSQSEventSource(queueUrl: string, options?: SQSEventSourceOptions): LambdaProjectResource", - "parameters": [ - { - "name": "queueUrl", - "type": "string" - }, - { - "name": "options", - "type": "SQSEventSourceOptions", - "isOptional": true - } - ], - "returnType": "LambdaProjectResource", - "returnsBuilder": true, - "targetTypeId": "Aspire.Hosting.AWS/Aspire.Hosting.AWS.Lambda.LambdaProjectResource", - "expandedTargetTypes": [ - "Aspire.Hosting.AWS.Lambda.LambdaProjectResource" - ] - } - ] - } - ], - "dtoTypes": [ - { - "name": "DynamoDBLocalOptions", - "fullName": "Aspire.Hosting.AWS.DynamoDB.DynamoDBLocalOptions", - "kind": "dto", - "fields": [ - { - "name": "Registry", - "type": "string", - "isOptional": true - }, - { - "name": "Image", - "type": "string", - "isOptional": true - }, - { - "name": "Tag", - "type": "string", - "isOptional": true - }, - { - "name": "SharedDb", - "type": "boolean", - "isOptional": true - }, - { - "name": "InMemory", - "type": "boolean", - "isOptional": true - }, - { - "name": "LocalStorageDirectory", - "type": "string", - "isOptional": true - }, - { - "name": "DisableDynamoDBLocalTelemetry", - "type": "boolean", - "isOptional": true - }, - { - "name": "DelayTransientStatuses", - "type": "boolean", - "isOptional": true - }, - { - "name": "Port", - "type": "number", - "isOptional": true - } - ] - }, - { - "name": "APIGatewayEmulatorOptions", - "fullName": "Aspire.Hosting.AWS.Lambda.APIGatewayEmulatorOptions", - "kind": "dto", - "fields": [ - { - "name": "HttpPort", - "type": "number", - "isOptional": true - }, - { - "name": "HttpsPort", - "type": "number", - "isOptional": true - }, - { - "name": "DisableHttpsEndpoint", - "type": "boolean", - "isOptional": true - } - ] - }, - { - "name": "DynamoDBStreamsEventSourceOptions", - "fullName": "Aspire.Hosting.AWS.Lambda.DynamoDBStreamsEventSourceOptions", - "kind": "dto", - "fields": [ - { - "name": "ResourceName", - "type": "string", - "isOptional": true - }, - { - "name": "BatchSize", - "type": "number", - "isOptional": true - }, - { - "name": "PollingIntervalMs", - "type": "number", - "isOptional": true - } - ] - }, - { - "name": "LambdaEmulatorOptions", - "fullName": "Aspire.Hosting.AWS.Lambda.LambdaEmulatorOptions", - "kind": "dto", - "fields": [ - { - "name": "DisableAutoInstall", - "type": "boolean", - "isOptional": true - }, - { - "name": "OverrideMinimumInstallVersion", - "type": "string", - "isOptional": true - }, - { - "name": "AllowDowngrade", - "type": "boolean", - "isOptional": true - }, - { - "name": "HttpPort", - "type": "number", - "isOptional": true - }, - { - "name": "HttpsPort", - "type": "number", - "isOptional": true - }, - { - "name": "ConfigStoragePath", - "type": "string", - "isOptional": true - }, - { - "name": "DisableHttpsEndpoint", - "type": "boolean", - "isOptional": true - } - ] - }, - { - "name": "LambdaFunctionPolyglotOptions", - "fullName": "Aspire.Hosting.AWS.Lambda.LambdaFunctionPolyglotOptions", - "kind": "dto", - "fields": [ - { - "name": "LogFormat", - "type": "string", - "isOptional": true - }, - { - "name": "ApplicationLogLevel", - "type": "string", - "isOptional": true - } - ] - }, - { - "name": "SQSEventSourceOptions", - "fullName": "Aspire.Hosting.AWS.Lambda.SQSEventSourceOptions", - "kind": "dto", - "fields": [ - { - "name": "ResourceName", - "type": "string", - "isOptional": true - }, - { - "name": "BatchSize", - "type": "number", - "isOptional": true - }, - { - "name": "DisableMessageDelete", - "type": "boolean", - "isOptional": true - }, - { - "name": "VisibilityTimeout", - "type": "number", - "isOptional": true - } - ] - } - ], - "enumTypes": [ - { - "name": "APIGatewayType", - "fullName": "Aspire.Hosting.AWS.Lambda.APIGatewayType", - "kind": "enum", - "members": [ - "Rest", - "HttpV1", - "HttpV2" - ] - }, - { - "name": "Method", - "fullName": "Aspire.Hosting.AWS.Lambda.Method", - "kind": "enum", - "members": [ - "Any", - "Get", - "Post", - "Put", - "Delete", - "Patch", - "Head", - "Options" - ] - } - ] -} \ No newline at end of file diff --git a/src/frontend/src/data/ts-modules/Aspire.Hosting.Azure.13.4.6.json b/src/frontend/src/data/ts-modules/Aspire.Hosting.Azure.13.5.0.json similarity index 61% rename from src/frontend/src/data/ts-modules/Aspire.Hosting.Azure.13.4.6.json rename to src/frontend/src/data/ts-modules/Aspire.Hosting.Azure.13.5.0.json index 4c870cb98..e078a1364 100644 --- a/src/frontend/src/data/ts-modules/Aspire.Hosting.Azure.13.4.6.json +++ b/src/frontend/src/data/ts-modules/Aspire.Hosting.Azure.13.5.0.json @@ -1,10 +1,10 @@ { "package": { "name": "Aspire.Hosting.Azure", - "version": "13.4.6", + "version": "13.5.0", "language": "typescript", "sourceRepository": "https://github.com/microsoft/aspire", - "sourceCommit": "87fe259e4fc244c599019a7b1304c85a1488f248" + "sourceCommit": "aab640cb6e4d05e1422b3ab723e78524aa1c5a22" }, "functions": [ { @@ -174,6 +174,93 @@ "Aspire.Hosting.Azure.AzureUserAssignedIdentityResource" ] }, + { + "name": "asExistingInResourceGroup", + "capabilityId": "Aspire.Hosting.Azure/asExistingInResourceGroup", + "qualifiedName": "asExistingInResourceGroup", + "description": "Marks the resource as an existing resource in a specific resource group and subscription in both run and publish modes.", + "returns": "The resource builder with the existing resource annotation added.", + "kind": "Method", + "signature": "asExistingInResourceGroup(name: ParameterResource, resourceGroup: ParameterResource, subscription: ParameterResource): IAzureResource", + "parameters": [ + { + "name": "name", + "type": "ParameterResource", + "description": "The name of the existing resource as a string or parameter resource." + }, + { + "name": "resourceGroup", + "type": "ParameterResource", + "description": "The resource group containing the existing resource as a string or parameter resource." + }, + { + "name": "subscription", + "type": "ParameterResource", + "description": "The subscription identifier containing the resource group as a string or parameter resource." + } + ], + "returnType": "IAzureResource", + "returnsBuilder": true, + "targetTypeId": "Aspire.Hosting.Azure/Aspire.Hosting.ApplicationModel.IAzureResource", + "expandedTargetTypes": [ + "Aspire.Hosting.Azure.AzureBicepResource", + "Aspire.Hosting.Azure.AzureProvisioningResource", + "Aspire.Hosting.Azure.AzureUserAssignedIdentityResource" + ] + }, + { + "name": "asExistingInSubscription", + "capabilityId": "Aspire.Hosting.Azure/asExistingInSubscription", + "qualifiedName": "asExistingInSubscription", + "description": "Marks the subscription-scoped resource as an existing resource in both run and publish modes.", + "returns": "The resource builder with the existing resource annotation added.", + "kind": "Method", + "signature": "asExistingInSubscription(name: ParameterResource, subscription: ParameterResource): IAzureResource", + "parameters": [ + { + "name": "name", + "type": "ParameterResource", + "description": "The name of the existing resource as a string or parameter resource." + }, + { + "name": "subscription", + "type": "ParameterResource", + "description": "The subscription identifier containing the resource as a string or parameter resource." + } + ], + "returnType": "IAzureResource", + "returnsBuilder": true, + "targetTypeId": "Aspire.Hosting.Azure/Aspire.Hosting.ApplicationModel.IAzureResource", + "expandedTargetTypes": [ + "Aspire.Hosting.Azure.AzureBicepResource", + "Aspire.Hosting.Azure.AzureProvisioningResource", + "Aspire.Hosting.Azure.AzureUserAssignedIdentityResource" + ] + }, + { + "name": "asExistingInTenant", + "capabilityId": "Aspire.Hosting.Azure/asExistingInTenant", + "qualifiedName": "asExistingInTenant", + "description": "Marks the current-tenant-scoped resource as an existing resource in both run and publish modes.", + "returns": "The resource builder with the existing resource annotation added.", + "kind": "Method", + "signature": "asExistingInTenant(name: ParameterResource): IAzureResource", + "parameters": [ + { + "name": "name", + "type": "ParameterResource", + "description": "The name of the existing resource as a string or parameter resource." + } + ], + "returnType": "IAzureResource", + "returnsBuilder": true, + "targetTypeId": "Aspire.Hosting.Azure/Aspire.Hosting.ApplicationModel.IAzureResource", + "expandedTargetTypes": [ + "Aspire.Hosting.Azure.AzureBicepResource", + "Aspire.Hosting.Azure.AzureProvisioningResource", + "Aspire.Hosting.Azure.AzureUserAssignedIdentityResource" + ] + }, { "name": "name", "capabilityId": "Aspire.Hosting.Azure/BicepOutputReference.name", @@ -322,6 +409,7 @@ "capabilityId": "Aspire.Hosting.Azure/publishAsConnectionString", "qualifiedName": "publishAsConnectionString", "description": "Changes the resource to be published as a connection string reference in the manifest.", + "remarks": "This API only changes the manifest representation; it does not change the resource model used by other publishers.", "returns": "The resource builder.", "kind": "Method", "signature": "publishAsConnectionString(): IAzureResource", @@ -365,6 +453,93 @@ "Aspire.Hosting.Azure.AzureUserAssignedIdentityResource" ] }, + { + "name": "publishAsExistingInResourceGroup", + "capabilityId": "Aspire.Hosting.Azure/publishAsExistingInResourceGroup", + "qualifiedName": "publishAsExistingInResourceGroup", + "description": "Marks the resource as an existing resource in a specific resource group and subscription when the application is deployed.", + "returns": "The resource builder with the existing resource annotation added.", + "kind": "Method", + "signature": "publishAsExistingInResourceGroup(name: ParameterResource, resourceGroup: ParameterResource, subscription: ParameterResource): IAzureResource", + "parameters": [ + { + "name": "name", + "type": "ParameterResource", + "description": "The name of the existing resource as a string or parameter resource." + }, + { + "name": "resourceGroup", + "type": "ParameterResource", + "description": "The resource group containing the existing resource as a string or parameter resource." + }, + { + "name": "subscription", + "type": "ParameterResource", + "description": "The subscription identifier containing the resource group as a string or parameter resource." + } + ], + "returnType": "IAzureResource", + "returnsBuilder": true, + "targetTypeId": "Aspire.Hosting.Azure/Aspire.Hosting.ApplicationModel.IAzureResource", + "expandedTargetTypes": [ + "Aspire.Hosting.Azure.AzureBicepResource", + "Aspire.Hosting.Azure.AzureProvisioningResource", + "Aspire.Hosting.Azure.AzureUserAssignedIdentityResource" + ] + }, + { + "name": "publishAsExistingInSubscription", + "capabilityId": "Aspire.Hosting.Azure/publishAsExistingInSubscription", + "qualifiedName": "publishAsExistingInSubscription", + "description": "Marks the subscription-scoped resource as an existing resource when the application is deployed.", + "returns": "The resource builder with the existing resource annotation added.", + "kind": "Method", + "signature": "publishAsExistingInSubscription(name: ParameterResource, subscription: ParameterResource): IAzureResource", + "parameters": [ + { + "name": "name", + "type": "ParameterResource", + "description": "The name of the existing resource as a string or parameter resource." + }, + { + "name": "subscription", + "type": "ParameterResource", + "description": "The subscription identifier containing the resource as a string or parameter resource." + } + ], + "returnType": "IAzureResource", + "returnsBuilder": true, + "targetTypeId": "Aspire.Hosting.Azure/Aspire.Hosting.ApplicationModel.IAzureResource", + "expandedTargetTypes": [ + "Aspire.Hosting.Azure.AzureBicepResource", + "Aspire.Hosting.Azure.AzureProvisioningResource", + "Aspire.Hosting.Azure.AzureUserAssignedIdentityResource" + ] + }, + { + "name": "publishAsExistingInTenant", + "capabilityId": "Aspire.Hosting.Azure/publishAsExistingInTenant", + "qualifiedName": "publishAsExistingInTenant", + "description": "Marks the current-tenant-scoped resource as an existing resource when the application is deployed.", + "returns": "The resource builder with the existing resource annotation added.", + "kind": "Method", + "signature": "publishAsExistingInTenant(name: ParameterResource): IAzureResource", + "parameters": [ + { + "name": "name", + "type": "ParameterResource", + "description": "The name of the existing resource as a string or parameter resource." + } + ], + "returnType": "IAzureResource", + "returnsBuilder": true, + "targetTypeId": "Aspire.Hosting.Azure/Aspire.Hosting.ApplicationModel.IAzureResource", + "expandedTargetTypes": [ + "Aspire.Hosting.Azure.AzureBicepResource", + "Aspire.Hosting.Azure.AzureProvisioningResource", + "Aspire.Hosting.Azure.AzureUserAssignedIdentityResource" + ] + }, { "name": "runAsExisting", "capabilityId": "Aspire.Hosting.Azure/runAsExisting", @@ -395,6 +570,93 @@ "Aspire.Hosting.Azure.AzureUserAssignedIdentityResource" ] }, + { + "name": "runAsExistingInResourceGroup", + "capabilityId": "Aspire.Hosting.Azure/runAsExistingInResourceGroup", + "qualifiedName": "runAsExistingInResourceGroup", + "description": "Marks the resource as an existing resource in a specific resource group and subscription when the application is running.", + "returns": "The resource builder with the existing resource annotation added.", + "kind": "Method", + "signature": "runAsExistingInResourceGroup(name: ParameterResource, resourceGroup: ParameterResource, subscription: ParameterResource): IAzureResource", + "parameters": [ + { + "name": "name", + "type": "ParameterResource", + "description": "The name of the existing resource as a string or parameter resource." + }, + { + "name": "resourceGroup", + "type": "ParameterResource", + "description": "The resource group containing the existing resource as a string or parameter resource." + }, + { + "name": "subscription", + "type": "ParameterResource", + "description": "The subscription identifier containing the resource group as a string or parameter resource." + } + ], + "returnType": "IAzureResource", + "returnsBuilder": true, + "targetTypeId": "Aspire.Hosting.Azure/Aspire.Hosting.ApplicationModel.IAzureResource", + "expandedTargetTypes": [ + "Aspire.Hosting.Azure.AzureBicepResource", + "Aspire.Hosting.Azure.AzureProvisioningResource", + "Aspire.Hosting.Azure.AzureUserAssignedIdentityResource" + ] + }, + { + "name": "runAsExistingInSubscription", + "capabilityId": "Aspire.Hosting.Azure/runAsExistingInSubscription", + "qualifiedName": "runAsExistingInSubscription", + "description": "Marks the subscription-scoped resource as an existing resource when the application is running.", + "returns": "The resource builder with the existing resource annotation added.", + "kind": "Method", + "signature": "runAsExistingInSubscription(name: ParameterResource, subscription: ParameterResource): IAzureResource", + "parameters": [ + { + "name": "name", + "type": "ParameterResource", + "description": "The name of the existing resource as a string or parameter resource." + }, + { + "name": "subscription", + "type": "ParameterResource", + "description": "The subscription identifier containing the resource as a string or parameter resource." + } + ], + "returnType": "IAzureResource", + "returnsBuilder": true, + "targetTypeId": "Aspire.Hosting.Azure/Aspire.Hosting.ApplicationModel.IAzureResource", + "expandedTargetTypes": [ + "Aspire.Hosting.Azure.AzureBicepResource", + "Aspire.Hosting.Azure.AzureProvisioningResource", + "Aspire.Hosting.Azure.AzureUserAssignedIdentityResource" + ] + }, + { + "name": "runAsExistingInTenant", + "capabilityId": "Aspire.Hosting.Azure/runAsExistingInTenant", + "qualifiedName": "runAsExistingInTenant", + "description": "Marks the current-tenant-scoped resource as an existing resource when the application is running.", + "returns": "The resource builder with the existing resource annotation added.", + "kind": "Method", + "signature": "runAsExistingInTenant(name: ParameterResource): IAzureResource", + "parameters": [ + { + "name": "name", + "type": "ParameterResource", + "description": "The name of the existing resource as a string or parameter resource." + } + ], + "returnType": "IAzureResource", + "returnsBuilder": true, + "targetTypeId": "Aspire.Hosting.Azure/Aspire.Hosting.ApplicationModel.IAzureResource", + "expandedTargetTypes": [ + "Aspire.Hosting.Azure.AzureBicepResource", + "Aspire.Hosting.Azure.AzureProvisioningResource", + "Aspire.Hosting.Azure.AzureUserAssignedIdentityResource" + ] + }, { "name": "withAzureUserAssignedIdentity", "capabilityId": "Aspire.Hosting.Azure/withUserAssignedIdentityAzureUserAssignedIdentity", @@ -535,6 +797,93 @@ "Aspire.Hosting.Azure.AzureUserAssignedIdentityResource" ] }, + { + "name": "asExistingInResourceGroup", + "capabilityId": "Aspire.Hosting.Azure/asExistingInResourceGroup", + "qualifiedName": "asExistingInResourceGroup", + "description": "Marks the resource as an existing resource in a specific resource group and subscription in both run and publish modes.", + "returns": "The resource builder with the existing resource annotation added.", + "kind": "Method", + "signature": "asExistingInResourceGroup(name: ParameterResource, resourceGroup: ParameterResource, subscription: ParameterResource): IAzureResource", + "parameters": [ + { + "name": "name", + "type": "ParameterResource", + "description": "The name of the existing resource as a string or parameter resource." + }, + { + "name": "resourceGroup", + "type": "ParameterResource", + "description": "The resource group containing the existing resource as a string or parameter resource." + }, + { + "name": "subscription", + "type": "ParameterResource", + "description": "The subscription identifier containing the resource group as a string or parameter resource." + } + ], + "returnType": "IAzureResource", + "returnsBuilder": true, + "targetTypeId": "Aspire.Hosting.Azure/Aspire.Hosting.ApplicationModel.IAzureResource", + "expandedTargetTypes": [ + "Aspire.Hosting.Azure.AzureBicepResource", + "Aspire.Hosting.Azure.AzureProvisioningResource", + "Aspire.Hosting.Azure.AzureUserAssignedIdentityResource" + ] + }, + { + "name": "asExistingInSubscription", + "capabilityId": "Aspire.Hosting.Azure/asExistingInSubscription", + "qualifiedName": "asExistingInSubscription", + "description": "Marks the subscription-scoped resource as an existing resource in both run and publish modes.", + "returns": "The resource builder with the existing resource annotation added.", + "kind": "Method", + "signature": "asExistingInSubscription(name: ParameterResource, subscription: ParameterResource): IAzureResource", + "parameters": [ + { + "name": "name", + "type": "ParameterResource", + "description": "The name of the existing resource as a string or parameter resource." + }, + { + "name": "subscription", + "type": "ParameterResource", + "description": "The subscription identifier containing the resource as a string or parameter resource." + } + ], + "returnType": "IAzureResource", + "returnsBuilder": true, + "targetTypeId": "Aspire.Hosting.Azure/Aspire.Hosting.ApplicationModel.IAzureResource", + "expandedTargetTypes": [ + "Aspire.Hosting.Azure.AzureBicepResource", + "Aspire.Hosting.Azure.AzureProvisioningResource", + "Aspire.Hosting.Azure.AzureUserAssignedIdentityResource" + ] + }, + { + "name": "asExistingInTenant", + "capabilityId": "Aspire.Hosting.Azure/asExistingInTenant", + "qualifiedName": "asExistingInTenant", + "description": "Marks the current-tenant-scoped resource as an existing resource in both run and publish modes.", + "returns": "The resource builder with the existing resource annotation added.", + "kind": "Method", + "signature": "asExistingInTenant(name: ParameterResource): IAzureResource", + "parameters": [ + { + "name": "name", + "type": "ParameterResource", + "description": "The name of the existing resource as a string or parameter resource." + } + ], + "returnType": "IAzureResource", + "returnsBuilder": true, + "targetTypeId": "Aspire.Hosting.Azure/Aspire.Hosting.ApplicationModel.IAzureResource", + "expandedTargetTypes": [ + "Aspire.Hosting.Azure.AzureBicepResource", + "Aspire.Hosting.Azure.AzureProvisioningResource", + "Aspire.Hosting.Azure.AzureUserAssignedIdentityResource" + ] + }, { "name": "clearDefaultRoleAssignments", "capabilityId": "Aspire.Hosting.Azure/clearDefaultRoleAssignments", @@ -593,6 +942,7 @@ "capabilityId": "Aspire.Hosting.Azure/publishAsConnectionString", "qualifiedName": "publishAsConnectionString", "description": "Changes the resource to be published as a connection string reference in the manifest.", + "remarks": "This API only changes the manifest representation; it does not change the resource model used by other publishers.", "returns": "The resource builder.", "kind": "Method", "signature": "publishAsConnectionString(): IAzureResource", @@ -636,6 +986,93 @@ "Aspire.Hosting.Azure.AzureUserAssignedIdentityResource" ] }, + { + "name": "publishAsExistingInResourceGroup", + "capabilityId": "Aspire.Hosting.Azure/publishAsExistingInResourceGroup", + "qualifiedName": "publishAsExistingInResourceGroup", + "description": "Marks the resource as an existing resource in a specific resource group and subscription when the application is deployed.", + "returns": "The resource builder with the existing resource annotation added.", + "kind": "Method", + "signature": "publishAsExistingInResourceGroup(name: ParameterResource, resourceGroup: ParameterResource, subscription: ParameterResource): IAzureResource", + "parameters": [ + { + "name": "name", + "type": "ParameterResource", + "description": "The name of the existing resource as a string or parameter resource." + }, + { + "name": "resourceGroup", + "type": "ParameterResource", + "description": "The resource group containing the existing resource as a string or parameter resource." + }, + { + "name": "subscription", + "type": "ParameterResource", + "description": "The subscription identifier containing the resource group as a string or parameter resource." + } + ], + "returnType": "IAzureResource", + "returnsBuilder": true, + "targetTypeId": "Aspire.Hosting.Azure/Aspire.Hosting.ApplicationModel.IAzureResource", + "expandedTargetTypes": [ + "Aspire.Hosting.Azure.AzureBicepResource", + "Aspire.Hosting.Azure.AzureProvisioningResource", + "Aspire.Hosting.Azure.AzureUserAssignedIdentityResource" + ] + }, + { + "name": "publishAsExistingInSubscription", + "capabilityId": "Aspire.Hosting.Azure/publishAsExistingInSubscription", + "qualifiedName": "publishAsExistingInSubscription", + "description": "Marks the subscription-scoped resource as an existing resource when the application is deployed.", + "returns": "The resource builder with the existing resource annotation added.", + "kind": "Method", + "signature": "publishAsExistingInSubscription(name: ParameterResource, subscription: ParameterResource): IAzureResource", + "parameters": [ + { + "name": "name", + "type": "ParameterResource", + "description": "The name of the existing resource as a string or parameter resource." + }, + { + "name": "subscription", + "type": "ParameterResource", + "description": "The subscription identifier containing the resource as a string or parameter resource." + } + ], + "returnType": "IAzureResource", + "returnsBuilder": true, + "targetTypeId": "Aspire.Hosting.Azure/Aspire.Hosting.ApplicationModel.IAzureResource", + "expandedTargetTypes": [ + "Aspire.Hosting.Azure.AzureBicepResource", + "Aspire.Hosting.Azure.AzureProvisioningResource", + "Aspire.Hosting.Azure.AzureUserAssignedIdentityResource" + ] + }, + { + "name": "publishAsExistingInTenant", + "capabilityId": "Aspire.Hosting.Azure/publishAsExistingInTenant", + "qualifiedName": "publishAsExistingInTenant", + "description": "Marks the current-tenant-scoped resource as an existing resource when the application is deployed.", + "returns": "The resource builder with the existing resource annotation added.", + "kind": "Method", + "signature": "publishAsExistingInTenant(name: ParameterResource): IAzureResource", + "parameters": [ + { + "name": "name", + "type": "ParameterResource", + "description": "The name of the existing resource as a string or parameter resource." + } + ], + "returnType": "IAzureResource", + "returnsBuilder": true, + "targetTypeId": "Aspire.Hosting.Azure/Aspire.Hosting.ApplicationModel.IAzureResource", + "expandedTargetTypes": [ + "Aspire.Hosting.Azure.AzureBicepResource", + "Aspire.Hosting.Azure.AzureProvisioningResource", + "Aspire.Hosting.Azure.AzureUserAssignedIdentityResource" + ] + }, { "name": "runAsExisting", "capabilityId": "Aspire.Hosting.Azure/runAsExisting", @@ -665,6 +1102,93 @@ "Aspire.Hosting.Azure.AzureProvisioningResource", "Aspire.Hosting.Azure.AzureUserAssignedIdentityResource" ] + }, + { + "name": "runAsExistingInResourceGroup", + "capabilityId": "Aspire.Hosting.Azure/runAsExistingInResourceGroup", + "qualifiedName": "runAsExistingInResourceGroup", + "description": "Marks the resource as an existing resource in a specific resource group and subscription when the application is running.", + "returns": "The resource builder with the existing resource annotation added.", + "kind": "Method", + "signature": "runAsExistingInResourceGroup(name: ParameterResource, resourceGroup: ParameterResource, subscription: ParameterResource): IAzureResource", + "parameters": [ + { + "name": "name", + "type": "ParameterResource", + "description": "The name of the existing resource as a string or parameter resource." + }, + { + "name": "resourceGroup", + "type": "ParameterResource", + "description": "The resource group containing the existing resource as a string or parameter resource." + }, + { + "name": "subscription", + "type": "ParameterResource", + "description": "The subscription identifier containing the resource group as a string or parameter resource." + } + ], + "returnType": "IAzureResource", + "returnsBuilder": true, + "targetTypeId": "Aspire.Hosting.Azure/Aspire.Hosting.ApplicationModel.IAzureResource", + "expandedTargetTypes": [ + "Aspire.Hosting.Azure.AzureBicepResource", + "Aspire.Hosting.Azure.AzureProvisioningResource", + "Aspire.Hosting.Azure.AzureUserAssignedIdentityResource" + ] + }, + { + "name": "runAsExistingInSubscription", + "capabilityId": "Aspire.Hosting.Azure/runAsExistingInSubscription", + "qualifiedName": "runAsExistingInSubscription", + "description": "Marks the subscription-scoped resource as an existing resource when the application is running.", + "returns": "The resource builder with the existing resource annotation added.", + "kind": "Method", + "signature": "runAsExistingInSubscription(name: ParameterResource, subscription: ParameterResource): IAzureResource", + "parameters": [ + { + "name": "name", + "type": "ParameterResource", + "description": "The name of the existing resource as a string or parameter resource." + }, + { + "name": "subscription", + "type": "ParameterResource", + "description": "The subscription identifier containing the resource as a string or parameter resource." + } + ], + "returnType": "IAzureResource", + "returnsBuilder": true, + "targetTypeId": "Aspire.Hosting.Azure/Aspire.Hosting.ApplicationModel.IAzureResource", + "expandedTargetTypes": [ + "Aspire.Hosting.Azure.AzureBicepResource", + "Aspire.Hosting.Azure.AzureProvisioningResource", + "Aspire.Hosting.Azure.AzureUserAssignedIdentityResource" + ] + }, + { + "name": "runAsExistingInTenant", + "capabilityId": "Aspire.Hosting.Azure/runAsExistingInTenant", + "qualifiedName": "runAsExistingInTenant", + "description": "Marks the current-tenant-scoped resource as an existing resource when the application is running.", + "returns": "The resource builder with the existing resource annotation added.", + "kind": "Method", + "signature": "runAsExistingInTenant(name: ParameterResource): IAzureResource", + "parameters": [ + { + "name": "name", + "type": "ParameterResource", + "description": "The name of the existing resource as a string or parameter resource." + } + ], + "returnType": "IAzureResource", + "returnsBuilder": true, + "targetTypeId": "Aspire.Hosting.Azure/Aspire.Hosting.ApplicationModel.IAzureResource", + "expandedTargetTypes": [ + "Aspire.Hosting.Azure.AzureBicepResource", + "Aspire.Hosting.Azure.AzureProvisioningResource", + "Aspire.Hosting.Azure.AzureUserAssignedIdentityResource" + ] } ] }, diff --git a/src/frontend/src/data/ts-modules/Aspire.Hosting.Azure.AppConfiguration.13.4.6.json b/src/frontend/src/data/ts-modules/Aspire.Hosting.Azure.AppConfiguration.13.5.0.json similarity index 99% rename from src/frontend/src/data/ts-modules/Aspire.Hosting.Azure.AppConfiguration.13.4.6.json rename to src/frontend/src/data/ts-modules/Aspire.Hosting.Azure.AppConfiguration.13.5.0.json index 6b7db47eb..2bf851eef 100644 --- a/src/frontend/src/data/ts-modules/Aspire.Hosting.Azure.AppConfiguration.13.4.6.json +++ b/src/frontend/src/data/ts-modules/Aspire.Hosting.Azure.AppConfiguration.13.5.0.json @@ -1,10 +1,10 @@ { "package": { "name": "Aspire.Hosting.Azure.AppConfiguration", - "version": "13.4.6", + "version": "13.5.0", "language": "typescript", "sourceRepository": "https://github.com/microsoft/aspire", - "sourceCommit": "87fe259e4fc244c599019a7b1304c85a1488f248" + "sourceCommit": "e076d8e427cb3afb528dbd605acd74c3aea69f94" }, "functions": [ { diff --git a/src/frontend/src/data/ts-modules/Aspire.Hosting.Azure.AppContainers.13.4.6.json b/src/frontend/src/data/ts-modules/Aspire.Hosting.Azure.AppContainers.13.5.0.json similarity index 84% rename from src/frontend/src/data/ts-modules/Aspire.Hosting.Azure.AppContainers.13.4.6.json rename to src/frontend/src/data/ts-modules/Aspire.Hosting.Azure.AppContainers.13.5.0.json index 4cc1bdbec..2586190e9 100644 --- a/src/frontend/src/data/ts-modules/Aspire.Hosting.Azure.AppContainers.13.4.6.json +++ b/src/frontend/src/data/ts-modules/Aspire.Hosting.Azure.AppContainers.13.5.0.json @@ -1,10 +1,10 @@ { "package": { "name": "Aspire.Hosting.Azure.AppContainers", - "version": "13.4.6", + "version": "13.5.0", "language": "typescript", "sourceRepository": "https://github.com/microsoft/aspire", - "sourceCommit": "87fe259e4fc244c599019a7b1304c85a1488f248" + "sourceCommit": "e076d8e427cb3afb528dbd605acd74c3aea69f94" }, "functions": [ { @@ -334,6 +334,23 @@ "expandedTargetTypes": [ "Aspire.Hosting.Azure.AppContainers.AzureContainerAppEnvironmentResource" ] + }, + { + "name": "withUniqueResourceNaming", + "capabilityId": "Aspire.Hosting.Azure.AppContainers/withUniqueResourceNaming", + "qualifiedName": "withUniqueResourceNaming", + "description": "Configures the container app environment to incorporate its resource name into the generated managed environment `name`, so that multiple environments in the same resource group get distinct names.", + "remarks": "By default the managed environment relies on Azure.Provisioning's name, whose sanitizer keeps only\nlowercase letters. For example, two `AddAzureContainerAppEnvironment` resources named\n`cae1` and `cae2` both drop their trailing digit and yield\n`take('cae${uniqueString(resourceGroup().id)}', 24)`. When they share a resource group,\nthat default would collapse both onto a single physical environment and concurrent\ncontainer-app writes would race with `ManagedEnvironmentOperationInProgress`. Publish and deploy\ndetect this collision and fail with guidance to apply this method instead\n(see ).\nApplying this method computes the managed environment `name` with the same algorithm Azure.Provisioning\nuses for every other Azure resource type (sanitized resource name, then a hyphen separator and a\n`uniqueString(resourceGroup().id)` suffix, truncated to the maximum length), but with the character\nrequirements Azure Container Apps managed environments actually allow — lowercase letters, digits, and\nhyphens, with a 60-character maximum. For example, `cae1` produces\n`take('cae1-${uniqueString(resourceGroup().id)}', 60)`, while `prod1` uses a `prod1`\nprefix. Preserving the digits gives each environment a distinct `name`. This is opt-in because\nenabling it changes the environment `name` for an already-deployed single environment, which would\ncause Azure to recreate it. Apply it only to the environments that need distinct names (typically when\ndeploying more than one environment to a single resource group), or to new deployments.\nThis option acts as a fallback after name resolvers configured through\n`ProvisioningBuildOptions`. A configured resolver can therefore\noverride the generated name. This option also has no effect when `WithAzdResourceNaming` is\nused, since azd naming sets the environment name explicitly.", + "returns": "The resource builder.", + "kind": "Method", + "signature": "withUniqueResourceNaming(): AzureContainerAppEnvironmentResource", + "parameters": [], + "returnType": "AzureContainerAppEnvironmentResource", + "returnsBuilder": true, + "targetTypeId": "Aspire.Hosting.Azure.AppContainers/Aspire.Hosting.Azure.AppContainers.AzureContainerAppEnvironmentResource", + "expandedTargetTypes": [ + "Aspire.Hosting.Azure.AppContainers.AzureContainerAppEnvironmentResource" + ] } ], "handleTypes": [ @@ -484,6 +501,23 @@ "expandedTargetTypes": [ "Aspire.Hosting.Azure.AppContainers.AzureContainerAppEnvironmentResource" ] + }, + { + "name": "withUniqueResourceNaming", + "capabilityId": "Aspire.Hosting.Azure.AppContainers/withUniqueResourceNaming", + "qualifiedName": "withUniqueResourceNaming", + "description": "Configures the container app environment to incorporate its resource name into the generated managed environment `name`, so that multiple environments in the same resource group get distinct names.", + "remarks": "By default the managed environment relies on Azure.Provisioning's name, whose sanitizer keeps only\nlowercase letters. For example, two `AddAzureContainerAppEnvironment` resources named\n`cae1` and `cae2` both drop their trailing digit and yield\n`take('cae${uniqueString(resourceGroup().id)}', 24)`. When they share a resource group,\nthat default would collapse both onto a single physical environment and concurrent\ncontainer-app writes would race with `ManagedEnvironmentOperationInProgress`. Publish and deploy\ndetect this collision and fail with guidance to apply this method instead\n(see ).\nApplying this method computes the managed environment `name` with the same algorithm Azure.Provisioning\nuses for every other Azure resource type (sanitized resource name, then a hyphen separator and a\n`uniqueString(resourceGroup().id)` suffix, truncated to the maximum length), but with the character\nrequirements Azure Container Apps managed environments actually allow — lowercase letters, digits, and\nhyphens, with a 60-character maximum. For example, `cae1` produces\n`take('cae1-${uniqueString(resourceGroup().id)}', 60)`, while `prod1` uses a `prod1`\nprefix. Preserving the digits gives each environment a distinct `name`. This is opt-in because\nenabling it changes the environment `name` for an already-deployed single environment, which would\ncause Azure to recreate it. Apply it only to the environments that need distinct names (typically when\ndeploying more than one environment to a single resource group), or to new deployments.\nThis option acts as a fallback after name resolvers configured through\n`ProvisioningBuildOptions`. A configured resolver can therefore\noverride the generated name. This option also has no effect when `WithAzdResourceNaming` is\nused, since azd naming sets the environment name explicitly.", + "returns": "The resource builder.", + "kind": "Method", + "signature": "withUniqueResourceNaming(): AzureContainerAppEnvironmentResource", + "parameters": [], + "returnType": "AzureContainerAppEnvironmentResource", + "returnsBuilder": true, + "targetTypeId": "Aspire.Hosting.Azure.AppContainers/Aspire.Hosting.Azure.AppContainers.AzureContainerAppEnvironmentResource", + "expandedTargetTypes": [ + "Aspire.Hosting.Azure.AppContainers.AzureContainerAppEnvironmentResource" + ] } ] } diff --git a/src/frontend/src/data/ts-modules/Aspire.Hosting.Azure.AppService.13.4.6.json b/src/frontend/src/data/ts-modules/Aspire.Hosting.Azure.AppService.13.5.0.json similarity index 99% rename from src/frontend/src/data/ts-modules/Aspire.Hosting.Azure.AppService.13.4.6.json rename to src/frontend/src/data/ts-modules/Aspire.Hosting.Azure.AppService.13.5.0.json index 6089184da..29fb2c6f5 100644 --- a/src/frontend/src/data/ts-modules/Aspire.Hosting.Azure.AppService.13.4.6.json +++ b/src/frontend/src/data/ts-modules/Aspire.Hosting.Azure.AppService.13.5.0.json @@ -1,10 +1,10 @@ { "package": { "name": "Aspire.Hosting.Azure.AppService", - "version": "13.4.6", + "version": "13.5.0", "language": "typescript", "sourceRepository": "https://github.com/microsoft/aspire", - "sourceCommit": "87fe259e4fc244c599019a7b1304c85a1488f248" + "sourceCommit": "e076d8e427cb3afb528dbd605acd74c3aea69f94" }, "functions": [ { @@ -251,7 +251,8 @@ "Aspire.Hosting.ApplicationModel.IResource", "Aspire.Hosting.ApplicationModel.IResourceWithParameters", "Aspire.Hosting.Azure.IAzureComputeEnvironmentResource", - "Aspire.Hosting.Azure.IAzureContainerRegistry" + "Aspire.Hosting.Azure.IAzureContainerRegistry", + "Aspire.Hosting.Azure.IAzureDelegatedSubnetResource" ], "baseTypeHierarchy": [ "Aspire.Hosting.Azure.AzureProvisioningResource", diff --git a/src/frontend/src/data/ts-modules/Aspire.Hosting.Azure.ApplicationInsights.13.4.6.json b/src/frontend/src/data/ts-modules/Aspire.Hosting.Azure.ApplicationInsights.13.5.0.json similarity index 98% rename from src/frontend/src/data/ts-modules/Aspire.Hosting.Azure.ApplicationInsights.13.4.6.json rename to src/frontend/src/data/ts-modules/Aspire.Hosting.Azure.ApplicationInsights.13.5.0.json index 0d680a7f4..987fb1fcc 100644 --- a/src/frontend/src/data/ts-modules/Aspire.Hosting.Azure.ApplicationInsights.13.4.6.json +++ b/src/frontend/src/data/ts-modules/Aspire.Hosting.Azure.ApplicationInsights.13.5.0.json @@ -1,10 +1,10 @@ { "package": { "name": "Aspire.Hosting.Azure.ApplicationInsights", - "version": "13.4.6", + "version": "13.5.0", "language": "typescript", "sourceRepository": "https://github.com/microsoft/aspire", - "sourceCommit": "87fe259e4fc244c599019a7b1304c85a1488f248" + "sourceCommit": "e076d8e427cb3afb528dbd605acd74c3aea69f94" }, "functions": [ { diff --git a/src/frontend/src/data/ts-modules/Aspire.Hosting.Azure.CognitiveServices.13.4.6.json b/src/frontend/src/data/ts-modules/Aspire.Hosting.Azure.CognitiveServices.13.5.0.json similarity index 99% rename from src/frontend/src/data/ts-modules/Aspire.Hosting.Azure.CognitiveServices.13.4.6.json rename to src/frontend/src/data/ts-modules/Aspire.Hosting.Azure.CognitiveServices.13.5.0.json index 7f96a8692..1d88cc90b 100644 --- a/src/frontend/src/data/ts-modules/Aspire.Hosting.Azure.CognitiveServices.13.4.6.json +++ b/src/frontend/src/data/ts-modules/Aspire.Hosting.Azure.CognitiveServices.13.5.0.json @@ -1,10 +1,10 @@ { "package": { "name": "Aspire.Hosting.Azure.CognitiveServices", - "version": "13.4.6", + "version": "13.5.0", "language": "typescript", "sourceRepository": "https://github.com/microsoft/aspire", - "sourceCommit": "87fe259e4fc244c599019a7b1304c85a1488f248" + "sourceCommit": "e076d8e427cb3afb528dbd605acd74c3aea69f94" }, "functions": [ { diff --git a/src/frontend/src/data/ts-modules/Aspire.Hosting.Azure.ContainerRegistry.13.4.6.json b/src/frontend/src/data/ts-modules/Aspire.Hosting.Azure.ContainerRegistry.13.5.0.json similarity index 99% rename from src/frontend/src/data/ts-modules/Aspire.Hosting.Azure.ContainerRegistry.13.4.6.json rename to src/frontend/src/data/ts-modules/Aspire.Hosting.Azure.ContainerRegistry.13.5.0.json index c39067852..36fd6bc35 100644 --- a/src/frontend/src/data/ts-modules/Aspire.Hosting.Azure.ContainerRegistry.13.4.6.json +++ b/src/frontend/src/data/ts-modules/Aspire.Hosting.Azure.ContainerRegistry.13.5.0.json @@ -1,10 +1,10 @@ { "package": { "name": "Aspire.Hosting.Azure.ContainerRegistry", - "version": "13.4.6", + "version": "13.5.0", "language": "typescript", "sourceRepository": "https://github.com/microsoft/aspire", - "sourceCommit": "87fe259e4fc244c599019a7b1304c85a1488f248" + "sourceCommit": "e076d8e427cb3afb528dbd605acd74c3aea69f94" }, "functions": [ { diff --git a/src/frontend/src/data/ts-modules/Aspire.Hosting.Azure.CosmosDB.13.4.6.json b/src/frontend/src/data/ts-modules/Aspire.Hosting.Azure.CosmosDB.13.5.0.json similarity index 98% rename from src/frontend/src/data/ts-modules/Aspire.Hosting.Azure.CosmosDB.13.4.6.json rename to src/frontend/src/data/ts-modules/Aspire.Hosting.Azure.CosmosDB.13.5.0.json index a12eb7a50..107f5f51f 100644 --- a/src/frontend/src/data/ts-modules/Aspire.Hosting.Azure.CosmosDB.13.4.6.json +++ b/src/frontend/src/data/ts-modules/Aspire.Hosting.Azure.CosmosDB.13.5.0.json @@ -1,10 +1,10 @@ { "package": { "name": "Aspire.Hosting.Azure.CosmosDB", - "version": "13.4.6", + "version": "13.5.0", "language": "typescript", "sourceRepository": "https://github.com/microsoft/aspire", - "sourceCommit": "87fe259e4fc244c599019a7b1304c85a1488f248" + "sourceCommit": "e076d8e427cb3afb528dbd605acd74c3aea69f94" }, "functions": [ { @@ -116,7 +116,7 @@ "name": "runAsPreviewEmulator", "capabilityId": "Aspire.Hosting.Azure.CosmosDB/runAsPreviewEmulator", "qualifiedName": "runAsPreviewEmulator", - "description": "Configures the Azure Cosmos DB resource to run using the preview emulator", + "description": "Configures the Azure Cosmos DB resource to run using the Linux-based (vNext) emulator", "remarks": "This version of the package defaults to the tag of the / container image.", "returns": "The resource builder.", "kind": "Method", @@ -163,7 +163,7 @@ "name": "withDataExplorer", "capabilityId": "Aspire.Hosting.Azure.CosmosDB/withDataExplorer", "qualifiedName": "withDataExplorer", - "description": "Configures the Azure Cosmos DB preview emulator to expose the Data Explorer endpoint.", + "description": "Configures the Azure Cosmos DB Linux-based (vNext) emulator to expose the Data Explorer endpoint.", "remarks": "The Data Explorer is only available with `RunAsPreviewEmulator`.", "returns": "Cosmos emulator resource builder.", "kind": "Method", @@ -363,7 +363,7 @@ "name": "withDataExplorer", "capabilityId": "Aspire.Hosting.Azure.CosmosDB/withDataExplorer", "qualifiedName": "withDataExplorer", - "description": "Configures the Azure Cosmos DB preview emulator to expose the Data Explorer endpoint.", + "description": "Configures the Azure Cosmos DB Linux-based (vNext) emulator to expose the Data Explorer endpoint.", "remarks": "The Data Explorer is only available with `RunAsPreviewEmulator`.", "returns": "Cosmos emulator resource builder.", "kind": "Method", @@ -537,7 +537,7 @@ "name": "runAsPreviewEmulator", "capabilityId": "Aspire.Hosting.Azure.CosmosDB/runAsPreviewEmulator", "qualifiedName": "runAsPreviewEmulator", - "description": "Configures the Azure Cosmos DB resource to run using the preview emulator", + "description": "Configures the Azure Cosmos DB resource to run using the Linux-based (vNext) emulator", "remarks": "This version of the package defaults to the tag of the / container image.", "returns": "The resource builder.", "kind": "Method", diff --git a/src/frontend/src/data/ts-modules/Aspire.Hosting.Azure.EventHubs.13.4.6.json b/src/frontend/src/data/ts-modules/Aspire.Hosting.Azure.EventHubs.13.5.0.json similarity index 99% rename from src/frontend/src/data/ts-modules/Aspire.Hosting.Azure.EventHubs.13.4.6.json rename to src/frontend/src/data/ts-modules/Aspire.Hosting.Azure.EventHubs.13.5.0.json index e999f7c01..7c40e1b60 100644 --- a/src/frontend/src/data/ts-modules/Aspire.Hosting.Azure.EventHubs.13.4.6.json +++ b/src/frontend/src/data/ts-modules/Aspire.Hosting.Azure.EventHubs.13.5.0.json @@ -1,10 +1,10 @@ { "package": { "name": "Aspire.Hosting.Azure.EventHubs", - "version": "13.4.6", + "version": "13.5.0", "language": "typescript", "sourceRepository": "https://github.com/microsoft/aspire", - "sourceCommit": "87fe259e4fc244c599019a7b1304c85a1488f248" + "sourceCommit": "e076d8e427cb3afb528dbd605acd74c3aea69f94" }, "functions": [ { diff --git a/src/frontend/src/data/ts-modules/Aspire.Hosting.Azure.FrontDoor.13.4.6-preview.1.26319.6.json b/src/frontend/src/data/ts-modules/Aspire.Hosting.Azure.FrontDoor.13.5.0-preview.1.26417.7.json similarity index 97% rename from src/frontend/src/data/ts-modules/Aspire.Hosting.Azure.FrontDoor.13.4.6-preview.1.26319.6.json rename to src/frontend/src/data/ts-modules/Aspire.Hosting.Azure.FrontDoor.13.5.0-preview.1.26417.7.json index 5e81f3917..0f0a8a1e8 100644 --- a/src/frontend/src/data/ts-modules/Aspire.Hosting.Azure.FrontDoor.13.4.6-preview.1.26319.6.json +++ b/src/frontend/src/data/ts-modules/Aspire.Hosting.Azure.FrontDoor.13.5.0-preview.1.26417.7.json @@ -1,10 +1,10 @@ { "package": { "name": "Aspire.Hosting.Azure.FrontDoor", - "version": "13.4.6-preview.1.26319.6", + "version": "13.5.0-preview.1.26417.7", "language": "typescript", "sourceRepository": "https://github.com/microsoft/aspire", - "sourceCommit": "87fe259e4fc244c599019a7b1304c85a1488f248" + "sourceCommit": "e076d8e427cb3afb528dbd605acd74c3aea69f94" }, "functions": [ { diff --git a/src/frontend/src/data/ts-modules/Aspire.Hosting.Azure.Functions.13.4.6.json b/src/frontend/src/data/ts-modules/Aspire.Hosting.Azure.Functions.13.5.0.json similarity index 99% rename from src/frontend/src/data/ts-modules/Aspire.Hosting.Azure.Functions.13.4.6.json rename to src/frontend/src/data/ts-modules/Aspire.Hosting.Azure.Functions.13.5.0.json index f80cfe400..a6c2af312 100644 --- a/src/frontend/src/data/ts-modules/Aspire.Hosting.Azure.Functions.13.4.6.json +++ b/src/frontend/src/data/ts-modules/Aspire.Hosting.Azure.Functions.13.5.0.json @@ -1,10 +1,10 @@ { "package": { "name": "Aspire.Hosting.Azure.Functions", - "version": "13.4.6", + "version": "13.5.0", "language": "typescript", "sourceRepository": "https://github.com/microsoft/aspire", - "sourceCommit": "87fe259e4fc244c599019a7b1304c85a1488f248" + "sourceCommit": "e076d8e427cb3afb528dbd605acd74c3aea69f94" }, "functions": [ { diff --git a/src/frontend/src/data/ts-modules/Aspire.Hosting.Azure.KeyVault.13.4.6.json b/src/frontend/src/data/ts-modules/Aspire.Hosting.Azure.KeyVault.13.5.0.json similarity index 99% rename from src/frontend/src/data/ts-modules/Aspire.Hosting.Azure.KeyVault.13.4.6.json rename to src/frontend/src/data/ts-modules/Aspire.Hosting.Azure.KeyVault.13.5.0.json index 2f6f91d6e..38051b67a 100644 --- a/src/frontend/src/data/ts-modules/Aspire.Hosting.Azure.KeyVault.13.4.6.json +++ b/src/frontend/src/data/ts-modules/Aspire.Hosting.Azure.KeyVault.13.5.0.json @@ -1,10 +1,10 @@ { "package": { "name": "Aspire.Hosting.Azure.KeyVault", - "version": "13.4.6", + "version": "13.5.0", "language": "typescript", "sourceRepository": "https://github.com/microsoft/aspire", - "sourceCommit": "87fe259e4fc244c599019a7b1304c85a1488f248" + "sourceCommit": "e076d8e427cb3afb528dbd605acd74c3aea69f94" }, "functions": [ { diff --git a/src/frontend/src/data/ts-modules/Aspire.Hosting.Azure.Kubernetes.13.4.6-preview.1.26319.6.json b/src/frontend/src/data/ts-modules/Aspire.Hosting.Azure.Kubernetes.13.5.0-preview.1.26417.7.json similarity index 94% rename from src/frontend/src/data/ts-modules/Aspire.Hosting.Azure.Kubernetes.13.4.6-preview.1.26319.6.json rename to src/frontend/src/data/ts-modules/Aspire.Hosting.Azure.Kubernetes.13.5.0-preview.1.26417.7.json index 6b328f43b..aa01fa253 100644 --- a/src/frontend/src/data/ts-modules/Aspire.Hosting.Azure.Kubernetes.13.4.6-preview.1.26319.6.json +++ b/src/frontend/src/data/ts-modules/Aspire.Hosting.Azure.Kubernetes.13.5.0-preview.1.26417.7.json @@ -1,10 +1,10 @@ { "package": { "name": "Aspire.Hosting.Azure.Kubernetes", - "version": "13.4.6-preview.1.26319.6", + "version": "13.5.0-preview.1.26417.7", "language": "typescript", "sourceRepository": "https://github.com/microsoft/aspire", - "sourceCommit": "87fe259e4fc244c599019a7b1304c85a1488f248" + "sourceCommit": "e076d8e427cb3afb528dbd605acd74c3aea69f94" }, "functions": [ { @@ -206,6 +206,28 @@ "Aspire.Hosting.Azure.Kubernetes.AzureKubernetesEnvironmentResource" ] }, + { + "name": "addPersistentVolume", + "capabilityId": "Aspire.Hosting.Azure.Kubernetes/addPersistentVolume", + "qualifiedName": "addPersistentVolume", + "description": "Adds a Kubernetes PersistentVolumeClaim resource to an AKS environment", + "returns": "The resource builder.", + "kind": "Method", + "signature": "addPersistentVolume(name: string): KubernetesPersistentVolumeResource", + "parameters": [ + { + "name": "name", + "type": "string", + "description": "The name of the persistent volume resource." + } + ], + "returnType": "KubernetesPersistentVolumeResource", + "returnsBuilder": true, + "targetTypeId": "Aspire.Hosting.Azure.Kubernetes/Aspire.Hosting.Azure.Kubernetes.AzureKubernetesEnvironmentResource", + "expandedTargetTypes": [ + "Aspire.Hosting.Azure.Kubernetes.AzureKubernetesEnvironmentResource" + ] + }, { "name": "withContainerRegistry", "capabilityId": "Aspire.Hosting.Azure.Kubernetes/withContainerRegistry", @@ -617,6 +639,28 @@ "Aspire.Hosting.Azure.Kubernetes.AzureKubernetesEnvironmentResource" ] }, + { + "name": "addPersistentVolume", + "capabilityId": "Aspire.Hosting.Azure.Kubernetes/addPersistentVolume", + "qualifiedName": "addPersistentVolume", + "description": "Adds a Kubernetes PersistentVolumeClaim resource to an AKS environment", + "returns": "The resource builder.", + "kind": "Method", + "signature": "addPersistentVolume(name: string): KubernetesPersistentVolumeResource", + "parameters": [ + { + "name": "name", + "type": "string", + "description": "The name of the persistent volume resource." + } + ], + "returnType": "KubernetesPersistentVolumeResource", + "returnsBuilder": true, + "targetTypeId": "Aspire.Hosting.Azure.Kubernetes/Aspire.Hosting.Azure.Kubernetes.AzureKubernetesEnvironmentResource", + "expandedTargetTypes": [ + "Aspire.Hosting.Azure.Kubernetes.AzureKubernetesEnvironmentResource" + ] + }, { "name": "withContainerRegistry", "capabilityId": "Aspire.Hosting.Azure.Kubernetes/withContainerRegistry", diff --git a/src/frontend/src/data/ts-modules/Aspire.Hosting.Azure.Kusto.13.4.6-preview.1.26319.6.json b/src/frontend/src/data/ts-modules/Aspire.Hosting.Azure.Kusto.13.5.0-preview.1.26417.7.json similarity index 99% rename from src/frontend/src/data/ts-modules/Aspire.Hosting.Azure.Kusto.13.4.6-preview.1.26319.6.json rename to src/frontend/src/data/ts-modules/Aspire.Hosting.Azure.Kusto.13.5.0-preview.1.26417.7.json index 938e3d9ba..822188d82 100644 --- a/src/frontend/src/data/ts-modules/Aspire.Hosting.Azure.Kusto.13.4.6-preview.1.26319.6.json +++ b/src/frontend/src/data/ts-modules/Aspire.Hosting.Azure.Kusto.13.5.0-preview.1.26417.7.json @@ -1,10 +1,10 @@ { "package": { "name": "Aspire.Hosting.Azure.Kusto", - "version": "13.4.6-preview.1.26319.6", + "version": "13.5.0-preview.1.26417.7", "language": "typescript", "sourceRepository": "https://github.com/microsoft/aspire", - "sourceCommit": "87fe259e4fc244c599019a7b1304c85a1488f248" + "sourceCommit": "e076d8e427cb3afb528dbd605acd74c3aea69f94" }, "functions": [ { diff --git a/src/frontend/src/data/ts-modules/Aspire.Hosting.Azure.Network.13.4.6.json b/src/frontend/src/data/ts-modules/Aspire.Hosting.Azure.Network.13.5.0.json similarity index 93% rename from src/frontend/src/data/ts-modules/Aspire.Hosting.Azure.Network.13.4.6.json rename to src/frontend/src/data/ts-modules/Aspire.Hosting.Azure.Network.13.5.0.json index 4e2e7775d..b275e5154 100644 --- a/src/frontend/src/data/ts-modules/Aspire.Hosting.Azure.Network.13.4.6.json +++ b/src/frontend/src/data/ts-modules/Aspire.Hosting.Azure.Network.13.5.0.json @@ -1,10 +1,10 @@ { "package": { "name": "Aspire.Hosting.Azure.Network", - "version": "13.4.6", + "version": "13.5.0", "language": "typescript", "sourceRepository": "https://github.com/microsoft/aspire", - "sourceCommit": "87fe259e4fc244c599019a7b1304c85a1488f248" + "sourceCommit": "e076d8e427cb3afb528dbd605acd74c3aea69f94" }, "functions": [ { @@ -424,7 +424,7 @@ "capabilityId": "Aspire.Hosting.Azure.Network/withSubnetDelegatedSubnet", "qualifiedName": "withDelegatedSubnet", "description": "Configures the resource to use the specified subnet with appropriate service delegation.", - "remarks": "This method automatically configures the subnet with the appropriate service delegation\nfor the target resource type (e.g., \"Microsoft.App/environments\" for Azure Container Apps).", + "remarks": "This method automatically configures the subnet with the appropriate service delegation\nfor the target resource type (for example, \"Microsoft.App/environments\" for Azure Container Apps\nand \"Microsoft.Web/serverFarms\" for Azure App Service).\nA resource can only be associated with one delegated subnet. Repeating the call with the same subnet is idempotent.", "returns": "The resource builder.", "kind": "Method", "signature": "withDelegatedSubnet(subnet: AzureSubnetResource): IAzureDelegatedSubnetResource", @@ -585,6 +585,35 @@ "expandedTargetTypes": [ "Aspire.Hosting.Azure.AzureNetworkSecurityGroupResource" ] + }, + { + "name": "withServiceDelegation", + "capabilityId": "Aspire.Hosting.Azure.Network/withServiceDelegation", + "qualifiedName": "withServiceDelegation", + "description": "Delegates the subnet to the specified Azure service.", + "remarks": "Service delegation grants the specified Azure service permission to create service-specific\nresources in the subnet. Azure subnets can carry more than one delegation, but Aspire models a\nsubnet with a single delegation and emits only the most recent one. Calling this multiple times,\nor combining it with `WithDelegatedSubnet``1`, therefore replaces any previously\nconfigured delegation with the latest value (last-write-wins).", + "returns": "The resource builder.", + "kind": "Method", + "signature": "withServiceDelegation(serviceName: string, name?: string): AzureSubnetResource", + "parameters": [ + { + "name": "serviceName", + "type": "string", + "description": "The service name to delegate the subnet to (e.g., \"Microsoft.App/environments\"). See `AzureSubnetServiceDelegations` for well-known values." + }, + { + "name": "name", + "type": "string", + "isOptional": true, + "description": "The name of the service delegation. If not specified, defaults to `serviceName`." + } + ], + "returnType": "AzureSubnetResource", + "returnsBuilder": true, + "targetTypeId": "Aspire.Hosting.Azure.Network/Aspire.Hosting.Azure.AzureSubnetResource", + "expandedTargetTypes": [ + "Aspire.Hosting.Azure.AzureSubnetResource" + ] } ], "handleTypes": [ @@ -1043,6 +1072,35 @@ "expandedTargetTypes": [ "Aspire.Hosting.Azure.AzureSubnetResource" ] + }, + { + "name": "withServiceDelegation", + "capabilityId": "Aspire.Hosting.Azure.Network/withServiceDelegation", + "qualifiedName": "withServiceDelegation", + "description": "Delegates the subnet to the specified Azure service.", + "remarks": "Service delegation grants the specified Azure service permission to create service-specific\nresources in the subnet. Azure subnets can carry more than one delegation, but Aspire models a\nsubnet with a single delegation and emits only the most recent one. Calling this multiple times,\nor combining it with `WithDelegatedSubnet``1`, therefore replaces any previously\nconfigured delegation with the latest value (last-write-wins).", + "returns": "The resource builder.", + "kind": "Method", + "signature": "withServiceDelegation(serviceName: string, name?: string): AzureSubnetResource", + "parameters": [ + { + "name": "serviceName", + "type": "string", + "description": "The service name to delegate the subnet to (e.g., \"Microsoft.App/environments\"). See `AzureSubnetServiceDelegations` for well-known values." + }, + { + "name": "name", + "type": "string", + "isOptional": true, + "description": "The name of the service delegation. If not specified, defaults to `serviceName`." + } + ], + "returnType": "AzureSubnetResource", + "returnsBuilder": true, + "targetTypeId": "Aspire.Hosting.Azure.Network/Aspire.Hosting.Azure.AzureSubnetResource", + "expandedTargetTypes": [ + "Aspire.Hosting.Azure.AzureSubnetResource" + ] } ] }, diff --git a/src/frontend/src/data/ts-modules/Aspire.Hosting.Azure.OperationalInsights.13.4.6.json b/src/frontend/src/data/ts-modules/Aspire.Hosting.Azure.OperationalInsights.13.5.0.json similarity index 95% rename from src/frontend/src/data/ts-modules/Aspire.Hosting.Azure.OperationalInsights.13.4.6.json rename to src/frontend/src/data/ts-modules/Aspire.Hosting.Azure.OperationalInsights.13.5.0.json index 13d08fbcf..ba408ea12 100644 --- a/src/frontend/src/data/ts-modules/Aspire.Hosting.Azure.OperationalInsights.13.4.6.json +++ b/src/frontend/src/data/ts-modules/Aspire.Hosting.Azure.OperationalInsights.13.5.0.json @@ -1,10 +1,10 @@ { "package": { "name": "Aspire.Hosting.Azure.OperationalInsights", - "version": "13.4.6", + "version": "13.5.0", "language": "typescript", "sourceRepository": "https://github.com/microsoft/aspire", - "sourceCommit": "87fe259e4fc244c599019a7b1304c85a1488f248" + "sourceCommit": "e076d8e427cb3afb528dbd605acd74c3aea69f94" }, "functions": [ { diff --git a/src/frontend/src/data/ts-modules/Aspire.Hosting.Azure.PostgreSQL.13.4.6.json b/src/frontend/src/data/ts-modules/Aspire.Hosting.Azure.PostgreSQL.13.5.0.json similarity index 99% rename from src/frontend/src/data/ts-modules/Aspire.Hosting.Azure.PostgreSQL.13.4.6.json rename to src/frontend/src/data/ts-modules/Aspire.Hosting.Azure.PostgreSQL.13.5.0.json index 11dc9dffc..1d6a7a160 100644 --- a/src/frontend/src/data/ts-modules/Aspire.Hosting.Azure.PostgreSQL.13.4.6.json +++ b/src/frontend/src/data/ts-modules/Aspire.Hosting.Azure.PostgreSQL.13.5.0.json @@ -1,10 +1,10 @@ { "package": { "name": "Aspire.Hosting.Azure.PostgreSQL", - "version": "13.4.6", + "version": "13.5.0", "language": "typescript", "sourceRepository": "https://github.com/microsoft/aspire", - "sourceCommit": "87fe259e4fc244c599019a7b1304c85a1488f248" + "sourceCommit": "e076d8e427cb3afb528dbd605acd74c3aea69f94" }, "functions": [ { diff --git a/src/frontend/src/data/ts-modules/Aspire.Hosting.Azure.Redis.13.4.6.json b/src/frontend/src/data/ts-modules/Aspire.Hosting.Azure.Redis.13.5.0.json similarity index 99% rename from src/frontend/src/data/ts-modules/Aspire.Hosting.Azure.Redis.13.4.6.json rename to src/frontend/src/data/ts-modules/Aspire.Hosting.Azure.Redis.13.5.0.json index 9ebe6d98c..32c270be8 100644 --- a/src/frontend/src/data/ts-modules/Aspire.Hosting.Azure.Redis.13.4.6.json +++ b/src/frontend/src/data/ts-modules/Aspire.Hosting.Azure.Redis.13.5.0.json @@ -1,10 +1,10 @@ { "package": { "name": "Aspire.Hosting.Azure.Redis", - "version": "13.4.6", + "version": "13.5.0", "language": "typescript", "sourceRepository": "https://github.com/microsoft/aspire", - "sourceCommit": "87fe259e4fc244c599019a7b1304c85a1488f248" + "sourceCommit": "e076d8e427cb3afb528dbd605acd74c3aea69f94" }, "functions": [ { diff --git a/src/frontend/src/data/ts-modules/Aspire.Hosting.Azure.Search.13.4.6.json b/src/frontend/src/data/ts-modules/Aspire.Hosting.Azure.Search.13.5.0.json similarity index 97% rename from src/frontend/src/data/ts-modules/Aspire.Hosting.Azure.Search.13.4.6.json rename to src/frontend/src/data/ts-modules/Aspire.Hosting.Azure.Search.13.5.0.json index 859675968..9e54a81b7 100644 --- a/src/frontend/src/data/ts-modules/Aspire.Hosting.Azure.Search.13.4.6.json +++ b/src/frontend/src/data/ts-modules/Aspire.Hosting.Azure.Search.13.5.0.json @@ -1,10 +1,10 @@ { "package": { "name": "Aspire.Hosting.Azure.Search", - "version": "13.4.6", + "version": "13.5.0", "language": "typescript", "sourceRepository": "https://github.com/microsoft/aspire", - "sourceCommit": "87fe259e4fc244c599019a7b1304c85a1488f248" + "sourceCommit": "e076d8e427cb3afb528dbd605acd74c3aea69f94" }, "functions": [ { diff --git a/src/frontend/src/data/ts-modules/Aspire.Hosting.Azure.ServiceBus.13.4.6.json b/src/frontend/src/data/ts-modules/Aspire.Hosting.Azure.ServiceBus.13.5.0.json similarity index 99% rename from src/frontend/src/data/ts-modules/Aspire.Hosting.Azure.ServiceBus.13.4.6.json rename to src/frontend/src/data/ts-modules/Aspire.Hosting.Azure.ServiceBus.13.5.0.json index f2e3a924a..3b7af6777 100644 --- a/src/frontend/src/data/ts-modules/Aspire.Hosting.Azure.ServiceBus.13.4.6.json +++ b/src/frontend/src/data/ts-modules/Aspire.Hosting.Azure.ServiceBus.13.5.0.json @@ -1,10 +1,10 @@ { "package": { "name": "Aspire.Hosting.Azure.ServiceBus", - "version": "13.4.6", + "version": "13.5.0", "language": "typescript", "sourceRepository": "https://github.com/microsoft/aspire", - "sourceCommit": "87fe259e4fc244c599019a7b1304c85a1488f248" + "sourceCommit": "e076d8e427cb3afb528dbd605acd74c3aea69f94" }, "functions": [ { diff --git a/src/frontend/src/data/ts-modules/Aspire.Hosting.Azure.SignalR.13.4.6.json b/src/frontend/src/data/ts-modules/Aspire.Hosting.Azure.SignalR.13.5.0.json similarity index 98% rename from src/frontend/src/data/ts-modules/Aspire.Hosting.Azure.SignalR.13.4.6.json rename to src/frontend/src/data/ts-modules/Aspire.Hosting.Azure.SignalR.13.5.0.json index af656116e..d70ce43b6 100644 --- a/src/frontend/src/data/ts-modules/Aspire.Hosting.Azure.SignalR.13.4.6.json +++ b/src/frontend/src/data/ts-modules/Aspire.Hosting.Azure.SignalR.13.5.0.json @@ -1,10 +1,10 @@ { "package": { "name": "Aspire.Hosting.Azure.SignalR", - "version": "13.4.6", + "version": "13.5.0", "language": "typescript", "sourceRepository": "https://github.com/microsoft/aspire", - "sourceCommit": "87fe259e4fc244c599019a7b1304c85a1488f248" + "sourceCommit": "e076d8e427cb3afb528dbd605acd74c3aea69f94" }, "functions": [ { diff --git a/src/frontend/src/data/ts-modules/Aspire.Hosting.Azure.Sql.13.4.6.json b/src/frontend/src/data/ts-modules/Aspire.Hosting.Azure.Sql.13.5.0.json similarity index 99% rename from src/frontend/src/data/ts-modules/Aspire.Hosting.Azure.Sql.13.4.6.json rename to src/frontend/src/data/ts-modules/Aspire.Hosting.Azure.Sql.13.5.0.json index bb3b26319..0568e9303 100644 --- a/src/frontend/src/data/ts-modules/Aspire.Hosting.Azure.Sql.13.4.6.json +++ b/src/frontend/src/data/ts-modules/Aspire.Hosting.Azure.Sql.13.5.0.json @@ -1,10 +1,10 @@ { "package": { "name": "Aspire.Hosting.Azure.Sql", - "version": "13.4.6", + "version": "13.5.0", "language": "typescript", "sourceRepository": "https://github.com/microsoft/aspire", - "sourceCommit": "87fe259e4fc244c599019a7b1304c85a1488f248" + "sourceCommit": "e076d8e427cb3afb528dbd605acd74c3aea69f94" }, "functions": [ { diff --git a/src/frontend/src/data/ts-modules/Aspire.Hosting.Azure.Storage.13.4.6.json b/src/frontend/src/data/ts-modules/Aspire.Hosting.Azure.Storage.13.5.0.json similarity index 99% rename from src/frontend/src/data/ts-modules/Aspire.Hosting.Azure.Storage.13.4.6.json rename to src/frontend/src/data/ts-modules/Aspire.Hosting.Azure.Storage.13.5.0.json index 04cfb9017..aecbc2356 100644 --- a/src/frontend/src/data/ts-modules/Aspire.Hosting.Azure.Storage.13.4.6.json +++ b/src/frontend/src/data/ts-modules/Aspire.Hosting.Azure.Storage.13.5.0.json @@ -1,10 +1,10 @@ { "package": { "name": "Aspire.Hosting.Azure.Storage", - "version": "13.4.6", + "version": "13.5.0", "language": "typescript", "sourceRepository": "https://github.com/microsoft/aspire", - "sourceCommit": "87fe259e4fc244c599019a7b1304c85a1488f248" + "sourceCommit": "aab640cb6e4d05e1422b3ab723e78524aa1c5a22" }, "functions": [ { diff --git a/src/frontend/src/data/ts-modules/Aspire.Hosting.Azure.WebPubSub.13.4.6.json b/src/frontend/src/data/ts-modules/Aspire.Hosting.Azure.WebPubSub.13.5.0.json similarity index 99% rename from src/frontend/src/data/ts-modules/Aspire.Hosting.Azure.WebPubSub.13.4.6.json rename to src/frontend/src/data/ts-modules/Aspire.Hosting.Azure.WebPubSub.13.5.0.json index b548df5da..9a5bf2cea 100644 --- a/src/frontend/src/data/ts-modules/Aspire.Hosting.Azure.WebPubSub.13.4.6.json +++ b/src/frontend/src/data/ts-modules/Aspire.Hosting.Azure.WebPubSub.13.5.0.json @@ -1,10 +1,10 @@ { "package": { "name": "Aspire.Hosting.Azure.WebPubSub", - "version": "13.4.6", + "version": "13.5.0", "language": "typescript", "sourceRepository": "https://github.com/microsoft/aspire", - "sourceCommit": "87fe259e4fc244c599019a7b1304c85a1488f248" + "sourceCommit": "e076d8e427cb3afb528dbd605acd74c3aea69f94" }, "functions": [ { diff --git a/src/frontend/src/data/ts-modules/Aspire.Hosting.Blazor.13.4.6-preview.1.26319.6.json b/src/frontend/src/data/ts-modules/Aspire.Hosting.Blazor.13.5.0-preview.1.26417.7.json similarity index 97% rename from src/frontend/src/data/ts-modules/Aspire.Hosting.Blazor.13.4.6-preview.1.26319.6.json rename to src/frontend/src/data/ts-modules/Aspire.Hosting.Blazor.13.5.0-preview.1.26417.7.json index 5b508c41c..d4e67e2e0 100644 --- a/src/frontend/src/data/ts-modules/Aspire.Hosting.Blazor.13.4.6-preview.1.26319.6.json +++ b/src/frontend/src/data/ts-modules/Aspire.Hosting.Blazor.13.5.0-preview.1.26417.7.json @@ -1,10 +1,10 @@ { "package": { "name": "Aspire.Hosting.Blazor", - "version": "13.4.6-preview.1.26319.6", + "version": "13.5.0-preview.1.26417.7", "language": "typescript", "sourceRepository": "https://github.com/microsoft/aspire", - "sourceCommit": "87fe259e4fc244c599019a7b1304c85a1488f248" + "sourceCommit": "e076d8e427cb3afb528dbd605acd74c3aea69f94" }, "functions": [ { diff --git a/src/frontend/src/data/ts-modules/Aspire.Hosting.Browsers.13.4.6-preview.1.26319.6.json b/src/frontend/src/data/ts-modules/Aspire.Hosting.Browsers.13.5.0-preview.1.26417.7.json similarity index 98% rename from src/frontend/src/data/ts-modules/Aspire.Hosting.Browsers.13.4.6-preview.1.26319.6.json rename to src/frontend/src/data/ts-modules/Aspire.Hosting.Browsers.13.5.0-preview.1.26417.7.json index 72df6c22b..245041dd3 100644 --- a/src/frontend/src/data/ts-modules/Aspire.Hosting.Browsers.13.4.6-preview.1.26319.6.json +++ b/src/frontend/src/data/ts-modules/Aspire.Hosting.Browsers.13.5.0-preview.1.26417.7.json @@ -1,10 +1,10 @@ { "package": { "name": "Aspire.Hosting.Browsers", - "version": "13.4.6-preview.1.26319.6", + "version": "13.5.0-preview.1.26417.7", "language": "typescript", "sourceRepository": "https://github.com/microsoft/aspire", - "sourceCommit": "87fe259e4fc244c599019a7b1304c85a1488f248" + "sourceCommit": "e076d8e427cb3afb528dbd605acd74c3aea69f94" }, "functions": [ { diff --git a/src/frontend/src/data/ts-modules/Aspire.Hosting.DevTunnels.13.4.6.json b/src/frontend/src/data/ts-modules/Aspire.Hosting.DevTunnels.13.5.0.json similarity index 99% rename from src/frontend/src/data/ts-modules/Aspire.Hosting.DevTunnels.13.4.6.json rename to src/frontend/src/data/ts-modules/Aspire.Hosting.DevTunnels.13.5.0.json index e31a17df7..6a62d4aa1 100644 --- a/src/frontend/src/data/ts-modules/Aspire.Hosting.DevTunnels.13.4.6.json +++ b/src/frontend/src/data/ts-modules/Aspire.Hosting.DevTunnels.13.5.0.json @@ -1,10 +1,10 @@ { "package": { "name": "Aspire.Hosting.DevTunnels", - "version": "13.4.6", + "version": "13.5.0", "language": "typescript", "sourceRepository": "https://github.com/microsoft/aspire", - "sourceCommit": "87fe259e4fc244c599019a7b1304c85a1488f248" + "sourceCommit": "e076d8e427cb3afb528dbd605acd74c3aea69f94" }, "functions": [ { diff --git a/src/frontend/src/data/ts-modules/Aspire.Hosting.Docker.13.4.6.json b/src/frontend/src/data/ts-modules/Aspire.Hosting.Docker.13.5.0.json similarity index 99% rename from src/frontend/src/data/ts-modules/Aspire.Hosting.Docker.13.4.6.json rename to src/frontend/src/data/ts-modules/Aspire.Hosting.Docker.13.5.0.json index 51d0c34ab..9cdda467e 100644 --- a/src/frontend/src/data/ts-modules/Aspire.Hosting.Docker.13.4.6.json +++ b/src/frontend/src/data/ts-modules/Aspire.Hosting.Docker.13.5.0.json @@ -1,10 +1,10 @@ { "package": { "name": "Aspire.Hosting.Docker", - "version": "13.4.6", + "version": "13.5.0", "language": "typescript", "sourceRepository": "https://github.com/microsoft/aspire", - "sourceCommit": "87fe259e4fc244c599019a7b1304c85a1488f248" + "sourceCommit": "e076d8e427cb3afb528dbd605acd74c3aea69f94" }, "functions": [ { @@ -3080,6 +3080,26 @@ "Aspire.Hosting.Docker.Resources.ComposeNodes.Service" ] }, + { + "name": "setShmSize", + "capabilityId": "Aspire.Hosting.Docker.Resources.ComposeNodes/Service.setShmSize", + "qualifiedName": "Service.setShmSize", + "description": "Gets or sets the size of the `/dev/shm` partition for the container.", + "remarks": "The value is emitted as the Docker Compose `shm_size` service property, for example `128mb`.", + "kind": "PropertySetter", + "signature": "setShmSize(value: string): Service", + "parameters": [ + { + "name": "value", + "type": "string" + } + ], + "returnType": "Service", + "targetTypeId": "Aspire.Hosting.Docker/Aspire.Hosting.Docker.Resources.ComposeNodes.Service", + "expandedTargetTypes": [ + "Aspire.Hosting.Docker.Resources.ComposeNodes.Service" + ] + }, { "name": "setStdinOpen", "capabilityId": "Aspire.Hosting.Docker.Resources.ComposeNodes/Service.setStdinOpen", @@ -3271,6 +3291,21 @@ "Aspire.Hosting.Docker.Resources.ComposeNodes.Service" ] }, + { + "name": "shmSize", + "capabilityId": "Aspire.Hosting.Docker.Resources.ComposeNodes/Service.shmSize", + "qualifiedName": "Service.shmSize", + "description": "Gets or sets the size of the `/dev/shm` partition for the container.", + "remarks": "The value is emitted as the Docker Compose `shm_size` service property, for example `128mb`.", + "kind": "PropertyGetter", + "signature": "shmSize(): string", + "parameters": [], + "returnType": "string", + "targetTypeId": "Aspire.Hosting.Docker/Aspire.Hosting.Docker.Resources.ComposeNodes.Service", + "expandedTargetTypes": [ + "Aspire.Hosting.Docker.Resources.ComposeNodes.Service" + ] + }, { "name": "stdinOpen", "capabilityId": "Aspire.Hosting.Docker.Resources.ComposeNodes/Service.stdinOpen", @@ -6808,6 +6843,26 @@ "Aspire.Hosting.Docker.Resources.ComposeNodes.Service" ] }, + { + "name": "setShmSize", + "capabilityId": "Aspire.Hosting.Docker.Resources.ComposeNodes/Service.setShmSize", + "qualifiedName": "Service.setShmSize", + "description": "Gets or sets the size of the `/dev/shm` partition for the container.", + "remarks": "The value is emitted as the Docker Compose `shm_size` service property, for example `128mb`.", + "kind": "PropertySetter", + "signature": "setShmSize(value: string): Service", + "parameters": [ + { + "name": "value", + "type": "string" + } + ], + "returnType": "Service", + "targetTypeId": "Aspire.Hosting.Docker/Aspire.Hosting.Docker.Resources.ComposeNodes.Service", + "expandedTargetTypes": [ + "Aspire.Hosting.Docker.Resources.ComposeNodes.Service" + ] + }, { "name": "setStdinOpen", "capabilityId": "Aspire.Hosting.Docker.Resources.ComposeNodes/Service.setStdinOpen", @@ -6999,6 +7054,21 @@ "Aspire.Hosting.Docker.Resources.ComposeNodes.Service" ] }, + { + "name": "shmSize", + "capabilityId": "Aspire.Hosting.Docker.Resources.ComposeNodes/Service.shmSize", + "qualifiedName": "Service.shmSize", + "description": "Gets or sets the size of the `/dev/shm` partition for the container.", + "remarks": "The value is emitted as the Docker Compose `shm_size` service property, for example `128mb`.", + "kind": "PropertyGetter", + "signature": "shmSize(): string", + "parameters": [], + "returnType": "string", + "targetTypeId": "Aspire.Hosting.Docker/Aspire.Hosting.Docker.Resources.ComposeNodes.Service", + "expandedTargetTypes": [ + "Aspire.Hosting.Docker.Resources.ComposeNodes.Service" + ] + }, { "name": "stdinOpen", "capabilityId": "Aspire.Hosting.Docker.Resources.ComposeNodes/Service.stdinOpen", diff --git a/src/frontend/src/data/ts-modules/Aspire.Hosting.Dotnet.13.5.0-preview.1.26417.7.json b/src/frontend/src/data/ts-modules/Aspire.Hosting.Dotnet.13.5.0-preview.1.26417.7.json new file mode 100644 index 000000000..de47d1832 --- /dev/null +++ b/src/frontend/src/data/ts-modules/Aspire.Hosting.Dotnet.13.5.0-preview.1.26417.7.json @@ -0,0 +1,67 @@ +{ + "package": { + "name": "Aspire.Hosting.Dotnet", + "version": "13.5.0-preview.1.26417.7", + "language": "typescript", + "sourceRepository": "https://github.com/microsoft/aspire", + "sourceCommit": "e076d8e427cb3afb528dbd605acd74c3aea69f94" + }, + "functions": [ + { + "name": "addDotnetProject", + "capabilityId": "Aspire.Hosting.Dotnet/addDotnetProject", + "qualifiedName": "addDotnetProject", + "description": "Adds a C# application resource.", + "kind": "Method", + "signature": "addDotnetProject(name: string, path: string, options?: ProjectResourceOptions): DotnetProjectResource", + "parameters": [ + { + "name": "name", + "type": "string" + }, + { + "name": "path", + "type": "string" + }, + { + "name": "options", + "type": "ProjectResourceOptions", + "isOptional": true + } + ], + "returnType": "DotnetProjectResource", + "returnsBuilder": true, + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.IDistributedApplicationBuilder", + "expandedTargetTypes": [ + "Aspire.Hosting.IDistributedApplicationBuilder" + ] + } + ], + "handleTypes": [ + { + "name": "DotnetProjectResource", + "fullName": "Aspire.Hosting.Dotnet.DotnetProjectResource", + "kind": "handle", + "exposeProperties": true, + "description": "A resource that represents a specified C# project or file-based app added by path.", + "remarks": "A `DotnetProjectResource` is added by path and is\nlaunched as an executable: `dotnet run --project ` for a project file, or\n`dotnet run --file ` for a file-based app (a `.cs` file).\nAutomatic publishing is not supported. Use `AddProject(...)` or\n`AddCSharpApp(...)` for standard .NET project publishing, explicitly configure container\npublishing with `PublishAsDockerFile(...)`, or exclude an intentionally run-only resource\nwith `ExcludeFromManifest()`.", + "implementedInterfaces": [ + "Aspire.Hosting.ApplicationModel.IComputeResource", + "Aspire.Hosting.ApplicationModel.IResource", + "Aspire.Hosting.ApplicationModel.IResourceWithArgs", + "Aspire.Hosting.ApplicationModel.IResourceWithEndpoints", + "Aspire.Hosting.ApplicationModel.IResourceWithEnvironment", + "Aspire.Hosting.ApplicationModel.IResourceWithProbes", + "Aspire.Hosting.ApplicationModel.IResourceWithWaitSupport", + "Aspire.Hosting.IResourceWithServiceDiscovery" + ], + "baseTypeHierarchy": [ + "Aspire.Hosting.ApplicationModel.ExecutableResource", + "Aspire.Hosting.ApplicationModel.Resource" + ], + "capabilities": [] + } + ], + "dtoTypes": [], + "enumTypes": [] +} \ No newline at end of file diff --git a/src/frontend/src/data/ts-modules/Aspire.Hosting.EntityFrameworkCore.13.4.6-preview.1.26319.6.json b/src/frontend/src/data/ts-modules/Aspire.Hosting.EntityFrameworkCore.13.5.0-preview.1.26417.7.json similarity index 99% rename from src/frontend/src/data/ts-modules/Aspire.Hosting.EntityFrameworkCore.13.4.6-preview.1.26319.6.json rename to src/frontend/src/data/ts-modules/Aspire.Hosting.EntityFrameworkCore.13.5.0-preview.1.26417.7.json index 112ffe767..daa7c8d39 100644 --- a/src/frontend/src/data/ts-modules/Aspire.Hosting.EntityFrameworkCore.13.4.6-preview.1.26319.6.json +++ b/src/frontend/src/data/ts-modules/Aspire.Hosting.EntityFrameworkCore.13.5.0-preview.1.26417.7.json @@ -1,10 +1,10 @@ { "package": { "name": "Aspire.Hosting.EntityFrameworkCore", - "version": "13.4.6-preview.1.26319.6", + "version": "13.5.0-preview.1.26417.7", "language": "typescript", "sourceRepository": "https://github.com/microsoft/aspire", - "sourceCommit": "87fe259e4fc244c599019a7b1304c85a1488f248" + "sourceCommit": "e076d8e427cb3afb528dbd605acd74c3aea69f94" }, "functions": [ { diff --git a/src/frontend/src/data/ts-modules/Aspire.Hosting.Foundry.13.4.6-preview.1.26319.6.json b/src/frontend/src/data/ts-modules/Aspire.Hosting.Foundry.13.4.6-preview.1.26319.6.json index d61a0e36a..453e08847 100644 --- a/src/frontend/src/data/ts-modules/Aspire.Hosting.Foundry.13.4.6-preview.1.26319.6.json +++ b/src/frontend/src/data/ts-modules/Aspire.Hosting.Foundry.13.4.6-preview.1.26319.6.json @@ -3288,4 +3288,4 @@ ] } ] -} \ No newline at end of file +} diff --git a/src/frontend/src/data/ts-modules/Aspire.Hosting.Garnet.13.4.6.json b/src/frontend/src/data/ts-modules/Aspire.Hosting.Garnet.13.5.0.json similarity index 99% rename from src/frontend/src/data/ts-modules/Aspire.Hosting.Garnet.13.4.6.json rename to src/frontend/src/data/ts-modules/Aspire.Hosting.Garnet.13.5.0.json index 1bbace2eb..571b769ee 100644 --- a/src/frontend/src/data/ts-modules/Aspire.Hosting.Garnet.13.4.6.json +++ b/src/frontend/src/data/ts-modules/Aspire.Hosting.Garnet.13.5.0.json @@ -1,10 +1,10 @@ { "package": { "name": "Aspire.Hosting.Garnet", - "version": "13.4.6", + "version": "13.5.0", "language": "typescript", "sourceRepository": "https://github.com/microsoft/aspire", - "sourceCommit": "87fe259e4fc244c599019a7b1304c85a1488f248" + "sourceCommit": "e076d8e427cb3afb528dbd605acd74c3aea69f94" }, "functions": [ { diff --git a/src/frontend/src/data/ts-modules/Aspire.Hosting.GitHub.Models.13.4.6.json b/src/frontend/src/data/ts-modules/Aspire.Hosting.GitHub.Models.13.5.0.json similarity index 99% rename from src/frontend/src/data/ts-modules/Aspire.Hosting.GitHub.Models.13.4.6.json rename to src/frontend/src/data/ts-modules/Aspire.Hosting.GitHub.Models.13.5.0.json index 76eb94c4f..eacececc8 100644 --- a/src/frontend/src/data/ts-modules/Aspire.Hosting.GitHub.Models.13.4.6.json +++ b/src/frontend/src/data/ts-modules/Aspire.Hosting.GitHub.Models.13.5.0.json @@ -1,10 +1,10 @@ { "package": { "name": "Aspire.Hosting.GitHub.Models", - "version": "13.4.6", + "version": "13.5.0", "language": "typescript", "sourceRepository": "https://github.com/microsoft/aspire", - "sourceCommit": "87fe259e4fc244c599019a7b1304c85a1488f248" + "sourceCommit": "e076d8e427cb3afb528dbd605acd74c3aea69f94" }, "functions": [ { diff --git a/src/frontend/src/data/ts-modules/Aspire.Hosting.Go.13.4.6-preview.1.26319.6.json b/src/frontend/src/data/ts-modules/Aspire.Hosting.Go.13.5.0-preview.1.26417.7.json similarity index 83% rename from src/frontend/src/data/ts-modules/Aspire.Hosting.Go.13.4.6-preview.1.26319.6.json rename to src/frontend/src/data/ts-modules/Aspire.Hosting.Go.13.5.0-preview.1.26417.7.json index 52ddcb510..06c8c57c2 100644 --- a/src/frontend/src/data/ts-modules/Aspire.Hosting.Go.13.4.6-preview.1.26319.6.json +++ b/src/frontend/src/data/ts-modules/Aspire.Hosting.Go.13.5.0-preview.1.26417.7.json @@ -1,10 +1,10 @@ { "package": { "name": "Aspire.Hosting.Go", - "version": "13.4.6-preview.1.26319.6", + "version": "13.5.0-preview.1.26417.7", "language": "typescript", "sourceRepository": "https://github.com/microsoft/aspire", - "sourceCommit": "87fe259e4fc244c599019a7b1304c85a1488f248" + "sourceCommit": "e076d8e427cb3afb528dbd605acd74c3aea69f94" }, "functions": [ { @@ -93,18 +93,17 @@ "name": "withDelveServer", "capabilityId": "Aspire.Hosting.Go/withDelveServer", "qualifiedName": "withDelveServer", - "description": "Starts a headless Delve debug server so that any DAP-compatible client can attach remotely. The application is launched as `dlv --headless=true --listen=127.0.0.1: --api-version=2 debug .` instead of `go run .`. Delve must be available on the PATH.", - "remarks": "Delve is the only Go debugger; both GoLand and VS Code use it under the hood, just in\ndifferent modes:\n- GoLand: Create a Go Remote run configuration pointing at `localhost:` and start it after the resource has started.\n- VS Code (attach mode): Add a `\"request\": \"attach\"` entry to `launch.json` with `\"mode\": \"remote\"`, `\"host\": \"localhost\"`, and `\"port\": `, then start it after the resource has started.\nVS Code users who do not need GoLand compatibility can rely on the automatic VS Code\ndebugging support that `AddGoApp` enables by default — no change to the\napplication command is required in that case.", + "description": "Starts a configurable headless Delve debug server so that DAP-compatible clients can attach remotely. The application is launched with `dlv debug` instead of `go run`. Delve must be available on the PATH.", + "remarks": "The server listens on `127.0.0.1` and accepts a single debugger client by default.\nSet `AcceptMultiClient` to `true` only when\nmultiple clients or reconnections are required.", "returns": "The resource builder.", "kind": "Method", - "signature": "withDelveServer(port?: number): GoAppResource", + "signature": "withDelveServer(options?: DelveServerOptions): GoAppResource", "parameters": [ { - "name": "port", - "type": "number", + "name": "options", + "type": "DelveServerOptions", "isOptional": true, - "defaultValue": "2345", - "description": "The TCP port Delve listens on. Defaults to `2345`." + "description": "The options that configure the Delve server. When `null`, the default options are used." } ], "returnType": "GoAppResource", @@ -271,18 +270,17 @@ "name": "withDelveServer", "capabilityId": "Aspire.Hosting.Go/withDelveServer", "qualifiedName": "withDelveServer", - "description": "Starts a headless Delve debug server so that any DAP-compatible client can attach remotely. The application is launched as `dlv --headless=true --listen=127.0.0.1: --api-version=2 debug .` instead of `go run .`. Delve must be available on the PATH.", - "remarks": "Delve is the only Go debugger; both GoLand and VS Code use it under the hood, just in\ndifferent modes:\n- GoLand: Create a Go Remote run configuration pointing at `localhost:` and start it after the resource has started.\n- VS Code (attach mode): Add a `\"request\": \"attach\"` entry to `launch.json` with `\"mode\": \"remote\"`, `\"host\": \"localhost\"`, and `\"port\": `, then start it after the resource has started.\nVS Code users who do not need GoLand compatibility can rely on the automatic VS Code\ndebugging support that `AddGoApp` enables by default — no change to the\napplication command is required in that case.", + "description": "Starts a configurable headless Delve debug server so that DAP-compatible clients can attach remotely. The application is launched with `dlv debug` instead of `go run`. Delve must be available on the PATH.", + "remarks": "The server listens on `127.0.0.1` and accepts a single debugger client by default.\nSet `AcceptMultiClient` to `true` only when\nmultiple clients or reconnections are required.", "returns": "The resource builder.", "kind": "Method", - "signature": "withDelveServer(port?: number): GoAppResource", + "signature": "withDelveServer(options?: DelveServerOptions): GoAppResource", "parameters": [ { - "name": "port", - "type": "number", + "name": "options", + "type": "DelveServerOptions", "isOptional": true, - "defaultValue": "2345", - "description": "The TCP port Delve listens on. Defaults to `2345`." + "description": "The options that configure the Delve server. When `null`, the default options are used." } ], "returnType": "GoAppResource", @@ -401,6 +399,52 @@ ] } ], - "dtoTypes": [], + "dtoTypes": [ + { + "name": "DelveServerOptions", + "fullName": "Aspire.Hosting.Go.DelveServerOptions", + "kind": "dto", + "description": "Configures the headless Delve debug server used for remote debugging of a Go application.", + "remarks": "The server listens on the loopback interface. By default, it accepts a single debugger client\nand relies on Delve's default same-user connection policy.\nSet `AcceptMultiClient` only when the server must remain available after a debugger\ndisconnects or when multiple debugger clients need to attach.", + "fields": [ + { + "name": "Port", + "type": "number", + "isOptional": true, + "description": "Gets the TCP port on which Delve listens. The default is `2345`." + }, + { + "name": "AcceptMultiClient", + "type": "boolean", + "isOptional": true, + "description": "Gets a value indicating whether Delve accepts multiple debugger clients. The default is `false`." + }, + { + "name": "OnlySameUser", + "type": "boolean", + "isOptional": true, + "description": "Gets a value indicating whether Delve allows connections only from the same operating system user. When `null`, Delve's default same-user policy is used." + }, + { + "name": "ContinueOnStart", + "type": "boolean", + "isOptional": true, + "description": "Gets a value indicating whether Delve continues the application immediately after startup. The default is `false`." + }, + { + "name": "Log", + "type": "boolean", + "isOptional": true, + "description": "Gets a value indicating whether Delve server logging is enabled. The default is `false`." + }, + { + "name": "LogOutput", + "type": "string", + "isOptional": true, + "description": "Gets the Delve logging components enabled when `Log` is `true`. When `null` or empty, Delve uses its default logging components." + } + ] + } + ], "enumTypes": [] } \ No newline at end of file diff --git a/src/frontend/src/data/ts-modules/Aspire.Hosting.JavaScript.13.4.6.json b/src/frontend/src/data/ts-modules/Aspire.Hosting.JavaScript.13.5.0.json similarity index 99% rename from src/frontend/src/data/ts-modules/Aspire.Hosting.JavaScript.13.4.6.json rename to src/frontend/src/data/ts-modules/Aspire.Hosting.JavaScript.13.5.0.json index 3da7239a4..e5b6d4f70 100644 --- a/src/frontend/src/data/ts-modules/Aspire.Hosting.JavaScript.13.4.6.json +++ b/src/frontend/src/data/ts-modules/Aspire.Hosting.JavaScript.13.5.0.json @@ -1,10 +1,10 @@ { "package": { "name": "Aspire.Hosting.JavaScript", - "version": "13.4.6", + "version": "13.5.0", "language": "typescript", "sourceRepository": "https://github.com/microsoft/aspire", - "sourceCommit": "87fe259e4fc244c599019a7b1304c85a1488f248" + "sourceCommit": "e076d8e427cb3afb528dbd605acd74c3aea69f94" }, "functions": [ { diff --git a/src/frontend/src/data/ts-modules/Aspire.Hosting.Kafka.13.4.6.json b/src/frontend/src/data/ts-modules/Aspire.Hosting.Kafka.13.5.0.json similarity index 99% rename from src/frontend/src/data/ts-modules/Aspire.Hosting.Kafka.13.4.6.json rename to src/frontend/src/data/ts-modules/Aspire.Hosting.Kafka.13.5.0.json index 34f019890..4e8f6ec20 100644 --- a/src/frontend/src/data/ts-modules/Aspire.Hosting.Kafka.13.4.6.json +++ b/src/frontend/src/data/ts-modules/Aspire.Hosting.Kafka.13.5.0.json @@ -1,10 +1,10 @@ { "package": { "name": "Aspire.Hosting.Kafka", - "version": "13.4.6", + "version": "13.5.0", "language": "typescript", "sourceRepository": "https://github.com/microsoft/aspire", - "sourceCommit": "87fe259e4fc244c599019a7b1304c85a1488f248" + "sourceCommit": "e076d8e427cb3afb528dbd605acd74c3aea69f94" }, "functions": [ { diff --git a/src/frontend/src/data/ts-modules/Aspire.Hosting.Keycloak.13.4.6-preview.1.26319.6.json b/src/frontend/src/data/ts-modules/Aspire.Hosting.Keycloak.13.5.0-preview.1.26417.7.json similarity index 99% rename from src/frontend/src/data/ts-modules/Aspire.Hosting.Keycloak.13.4.6-preview.1.26319.6.json rename to src/frontend/src/data/ts-modules/Aspire.Hosting.Keycloak.13.5.0-preview.1.26417.7.json index 22b0aa867..4a55cb045 100644 --- a/src/frontend/src/data/ts-modules/Aspire.Hosting.Keycloak.13.4.6-preview.1.26319.6.json +++ b/src/frontend/src/data/ts-modules/Aspire.Hosting.Keycloak.13.5.0-preview.1.26417.7.json @@ -1,10 +1,10 @@ { "package": { "name": "Aspire.Hosting.Keycloak", - "version": "13.4.6-preview.1.26319.6", + "version": "13.5.0-preview.1.26417.7", "language": "typescript", "sourceRepository": "https://github.com/microsoft/aspire", - "sourceCommit": "87fe259e4fc244c599019a7b1304c85a1488f248" + "sourceCommit": "e076d8e427cb3afb528dbd605acd74c3aea69f94" }, "functions": [ { diff --git a/src/frontend/src/data/ts-modules/Aspire.Hosting.Kubernetes.13.4.6-preview.1.26319.6.json b/src/frontend/src/data/ts-modules/Aspire.Hosting.Kubernetes.13.5.0-preview.1.26417.7.json similarity index 88% rename from src/frontend/src/data/ts-modules/Aspire.Hosting.Kubernetes.13.4.6-preview.1.26319.6.json rename to src/frontend/src/data/ts-modules/Aspire.Hosting.Kubernetes.13.5.0-preview.1.26417.7.json index b0f7bb7f3..6e90b6373 100644 --- a/src/frontend/src/data/ts-modules/Aspire.Hosting.Kubernetes.13.4.6-preview.1.26319.6.json +++ b/src/frontend/src/data/ts-modules/Aspire.Hosting.Kubernetes.13.5.0-preview.1.26417.7.json @@ -1,10 +1,10 @@ { "package": { "name": "Aspire.Hosting.Kubernetes", - "version": "13.4.6-preview.1.26319.6", + "version": "13.5.0-preview.1.26417.7", "language": "typescript", "sourceRepository": "https://github.com/microsoft/aspire", - "sourceCommit": "87fe259e4fc244c599019a7b1304c85a1488f248" + "sourceCommit": "e076d8e427cb3afb528dbd605acd74c3aea69f94" }, "functions": [ { @@ -179,6 +179,28 @@ "Aspire.Hosting.Kubernetes.KubernetesEnvironmentResource" ] }, + { + "name": "addPersistentVolume", + "capabilityId": "Aspire.Hosting.Kubernetes/addPersistentVolume", + "qualifiedName": "addPersistentVolume", + "description": "Adds a Kubernetes PersistentVolumeClaim resource", + "returns": "A builder for the new `KubernetesPersistentVolumeResource`.", + "kind": "Method", + "signature": "addPersistentVolume(name: string): KubernetesPersistentVolumeResource", + "parameters": [ + { + "name": "name", + "type": "string", + "description": "The name of the persistent volume resource. Used as the generated PVC's `metadata.name` after lower-casing. To bind a workload using the name-match overload of `WithPersistentVolume``1`, add a `WithVolume(\"name\", \"/path\")` on the workload using the same `name`." + } + ], + "returnType": "KubernetesPersistentVolumeResource", + "returnsBuilder": true, + "targetTypeId": "Aspire.Hosting.Kubernetes/Aspire.Hosting.Kubernetes.KubernetesEnvironmentResource", + "expandedTargetTypes": [ + "Aspire.Hosting.Kubernetes.KubernetesEnvironmentResource" + ] + }, { "name": "configureDashboard", "capabilityId": "Aspire.Hosting.Kubernetes/configureDashboard", @@ -780,6 +802,28 @@ "Aspire.Hosting.Kubernetes.KubernetesAspireDashboardResource" ] }, + { + "name": "withAccessMode", + "capabilityId": "Aspire.Hosting.Kubernetes/withAccessMode", + "qualifiedName": "withAccessMode", + "description": "Adds an access mode to a persistent volume", + "returns": "The same builder for chaining.", + "kind": "Method", + "signature": "withAccessMode(accessMode: PersistentVolumeAccessMode): KubernetesPersistentVolumeResource", + "parameters": [ + { + "name": "accessMode", + "type": "PersistentVolumeAccessMode", + "description": "The access mode to add." + } + ], + "returnType": "KubernetesPersistentVolumeResource", + "returnsBuilder": true, + "targetTypeId": "Aspire.Hosting.Kubernetes/Aspire.Hosting.Kubernetes.KubernetesPersistentVolumeResource", + "expandedTargetTypes": [ + "Aspire.Hosting.Kubernetes.KubernetesPersistentVolumeResource" + ] + }, { "name": "withAcmeServer", "capabilityId": "Aspire.Hosting.Kubernetes/withAcmeServer", @@ -834,6 +878,50 @@ "Aspire.Hosting.Kubernetes.CertManagerIssuerResource" ] }, + { + "name": "withCapacity", + "capabilityId": "Aspire.Hosting.Kubernetes/withCapacity", + "qualifiedName": "withCapacity", + "description": "Sets the requested storage capacity for a persistent volume", + "returns": "The same builder for chaining.", + "kind": "Method", + "signature": "withCapacity(capacity: string): KubernetesPersistentVolumeResource", + "parameters": [ + { + "name": "capacity", + "type": "string", + "description": "A Kubernetes quantity string (e.g. `\"10Gi\"`, `\"500Mi\"`)." + } + ], + "returnType": "KubernetesPersistentVolumeResource", + "returnsBuilder": true, + "targetTypeId": "Aspire.Hosting.Kubernetes/Aspire.Hosting.Kubernetes.KubernetesPersistentVolumeResource", + "expandedTargetTypes": [ + "Aspire.Hosting.Kubernetes.KubernetesPersistentVolumeResource" + ] + }, + { + "name": "withCapacityParam", + "capabilityId": "Aspire.Hosting.Kubernetes/withCapacityParam", + "qualifiedName": "withCapacityParam", + "description": "Sets a parameterized storage capacity for a persistent volume", + "returns": "The same builder for chaining.", + "kind": "Method", + "signature": "withCapacityParam(capacity: ParameterResource): KubernetesPersistentVolumeResource", + "parameters": [ + { + "name": "capacity", + "type": "ParameterResource", + "description": "A parameter resource builder for the capacity quantity string." + } + ], + "returnType": "KubernetesPersistentVolumeResource", + "returnsBuilder": true, + "targetTypeId": "Aspire.Hosting.Kubernetes/Aspire.Hosting.Kubernetes.KubernetesPersistentVolumeResource", + "expandedTargetTypes": [ + "Aspire.Hosting.Kubernetes.KubernetesPersistentVolumeResource" + ] + }, { "name": "withDashboard", "capabilityId": "Aspire.Hosting.Kubernetes/withDashboard", @@ -1585,6 +1673,74 @@ "Aspire.Hosting.Kubernetes.KubernetesIngressResource" ] }, + { + "name": "withKubernetesPersistentVolume", + "capabilityId": "Aspire.Hosting.Kubernetes/withKubernetesPersistentVolume", + "qualifiedName": "withKubernetesPersistentVolume", + "description": "Binds a workload to a Kubernetes persistent volume by matching volume name", + "remarks": "To bind a workload that does not already have a matching named mount (for\nexample a `ProjectResource`), use the overload that accepts a\n`mountPath` instead. The generated pod uses an Aspire-managed\n`fsGroup` of `2000` with an `OnRootMismatch` change policy so\nnon-root containers can access supported volumes without matching the image's\nprimary group. Use\n`PublishAsKubernetesService``1`\nto customize the pod security context when a different group or policy is required.", + "returns": "The same builder for chaining.", + "kind": "Method", + "signature": "withKubernetesPersistentVolume(volume: KubernetesPersistentVolumeResource): IComputeResource", + "parameters": [ + { + "name": "volume", + "type": "KubernetesPersistentVolumeResource", + "description": "The persistent volume resource to bind to." + } + ], + "returnType": "IComputeResource", + "returnsBuilder": true, + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.IComputeResource", + "expandedTargetTypes": [ + "Aspire.Hosting.ApplicationModel.ContainerResource", + "Aspire.Hosting.ApplicationModel.ExecutableResource", + "Aspire.Hosting.ApplicationModel.ProjectResource", + "Aspire.Hosting.ApplicationModel.DotnetToolResource", + "Aspire.Hosting.ApplicationModel.CSharpAppResource", + "Aspire.Hosting.Kubernetes.KubernetesAspireDashboardResource" + ] + }, + { + "name": "withKubernetesPersistentVolumeMount", + "capabilityId": "Aspire.Hosting.Kubernetes/withKubernetesPersistentVolumeMount", + "qualifiedName": "withKubernetesPersistentVolumeMount", + "description": "Binds a workload to a Kubernetes persistent volume and mounts it at a path", + "remarks": "The generated pod uses an Aspire-managed `fsGroup` of `2000` with\nan `OnRootMismatch` change policy so non-root containers can access\nsupported volumes without matching the image's primary group. Use\n`PublishAsKubernetesService``1`\nto customize the pod security context when a different group or policy is required.", + "returns": "The same builder for chaining.", + "kind": "Method", + "signature": "withKubernetesPersistentVolumeMount(volume: KubernetesPersistentVolumeResource, mountPath: string, isReadOnly?: boolean): IComputeResource", + "parameters": [ + { + "name": "volume", + "type": "KubernetesPersistentVolumeResource", + "description": "The persistent volume resource to bind to." + }, + { + "name": "mountPath", + "type": "string", + "description": "The path inside the container where the volume will be mounted (e.g. `\"/var/lib/postgresql/data\"`)." + }, + { + "name": "isReadOnly", + "type": "boolean", + "isOptional": true, + "defaultValue": "False", + "description": "When `true`, mounts the volume read-only." + } + ], + "returnType": "IComputeResource", + "returnsBuilder": true, + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.IComputeResource", + "expandedTargetTypes": [ + "Aspire.Hosting.ApplicationModel.ContainerResource", + "Aspire.Hosting.ApplicationModel.ExecutableResource", + "Aspire.Hosting.ApplicationModel.ProjectResource", + "Aspire.Hosting.ApplicationModel.DotnetToolResource", + "Aspire.Hosting.ApplicationModel.CSharpAppResource", + "Aspire.Hosting.Kubernetes.KubernetesAspireDashboardResource" + ] + }, { "name": "withLetsEncryptProduction", "capabilityId": "Aspire.Hosting.Kubernetes/withLetsEncryptProduction", @@ -1708,6 +1864,7 @@ "Aspire.Hosting.Kubernetes.KubernetesHelmChartResource", "Aspire.Hosting.Kubernetes.KubernetesIngressResource", "Aspire.Hosting.Kubernetes.KubernetesNodePoolResource", + "Aspire.Hosting.Kubernetes.KubernetesPersistentVolumeResource", "Aspire.Hosting.Kubernetes.KubernetesResource" ] }, @@ -1792,6 +1949,50 @@ "Aspire.Hosting.Kubernetes.KubernetesAspireDashboardResource" ] }, + { + "name": "withStorageClass", + "capabilityId": "Aspire.Hosting.Kubernetes/withStorageClass", + "qualifiedName": "withStorageClass", + "description": "Sets the storage class for a persistent volume", + "returns": "The same builder for chaining.", + "kind": "Method", + "signature": "withStorageClass(storageClassName: string): KubernetesPersistentVolumeResource", + "parameters": [ + { + "name": "storageClassName", + "type": "string", + "description": "The storage class name (e.g. `\"managed-csi\"`, `\"gp3\"`)." + } + ], + "returnType": "KubernetesPersistentVolumeResource", + "returnsBuilder": true, + "targetTypeId": "Aspire.Hosting.Kubernetes/Aspire.Hosting.Kubernetes.KubernetesPersistentVolumeResource", + "expandedTargetTypes": [ + "Aspire.Hosting.Kubernetes.KubernetesPersistentVolumeResource" + ] + }, + { + "name": "withStorageClassParam", + "capabilityId": "Aspire.Hosting.Kubernetes/withStorageClassParam", + "qualifiedName": "withStorageClassParam", + "description": "Sets a parameterized storage class for a persistent volume", + "returns": "The same builder for chaining.", + "kind": "Method", + "signature": "withStorageClassParam(storageClassName: ParameterResource): KubernetesPersistentVolumeResource", + "parameters": [ + { + "name": "storageClassName", + "type": "ParameterResource", + "description": "A parameter resource builder for the storage class name." + } + ], + "returnType": "KubernetesPersistentVolumeResource", + "returnsBuilder": true, + "targetTypeId": "Aspire.Hosting.Kubernetes/Aspire.Hosting.Kubernetes.KubernetesPersistentVolumeResource", + "expandedTargetTypes": [ + "Aspire.Hosting.Kubernetes.KubernetesPersistentVolumeResource" + ] + }, { "name": "withTls", "capabilityId": "Aspire.Hosting.Kubernetes/withGatewayTls", @@ -1835,6 +2036,60 @@ "expandedTargetTypes": [ "Aspire.Hosting.Kubernetes.KubernetesIngressResource" ] + }, + { + "name": "withVolumeAnnotation", + "capabilityId": "Aspire.Hosting.Kubernetes/withVolumeAnnotation", + "qualifiedName": "withVolumeAnnotation", + "description": "Adds a Kubernetes metadata annotation to a persistent volume", + "returns": "The same builder for chaining.", + "kind": "Method", + "signature": "withVolumeAnnotation(key: string, value: string): KubernetesPersistentVolumeResource", + "parameters": [ + { + "name": "key", + "type": "string", + "description": "The annotation key (e.g. `\"volume.beta.kubernetes.io/storage-provisioner\"`)." + }, + { + "name": "value", + "type": "string", + "description": "The annotation value." + } + ], + "returnType": "KubernetesPersistentVolumeResource", + "returnsBuilder": true, + "targetTypeId": "Aspire.Hosting.Kubernetes/Aspire.Hosting.Kubernetes.KubernetesPersistentVolumeResource", + "expandedTargetTypes": [ + "Aspire.Hosting.Kubernetes.KubernetesPersistentVolumeResource" + ] + }, + { + "name": "withVolumeAnnotationParam", + "capabilityId": "Aspire.Hosting.Kubernetes/withVolumeAnnotationParam", + "qualifiedName": "withVolumeAnnotationParam", + "description": "Adds a parameterized Kubernetes metadata annotation to a persistent volume", + "returns": "The same builder for chaining.", + "kind": "Method", + "signature": "withVolumeAnnotationParam(key: string, value: ParameterResource): KubernetesPersistentVolumeResource", + "parameters": [ + { + "name": "key", + "type": "string", + "description": "The annotation key." + }, + { + "name": "value", + "type": "ParameterResource", + "description": "A parameter resource builder for the annotation value." + } + ], + "returnType": "KubernetesPersistentVolumeResource", + "returnsBuilder": true, + "targetTypeId": "Aspire.Hosting.Kubernetes/Aspire.Hosting.Kubernetes.KubernetesPersistentVolumeResource", + "expandedTargetTypes": [ + "Aspire.Hosting.Kubernetes.KubernetesPersistentVolumeResource" + ] } ], "handleTypes": [ @@ -2434,6 +2689,28 @@ "Aspire.Hosting.Kubernetes.KubernetesEnvironmentResource" ] }, + { + "name": "addPersistentVolume", + "capabilityId": "Aspire.Hosting.Kubernetes/addPersistentVolume", + "qualifiedName": "addPersistentVolume", + "description": "Adds a Kubernetes PersistentVolumeClaim resource", + "returns": "A builder for the new `KubernetesPersistentVolumeResource`.", + "kind": "Method", + "signature": "addPersistentVolume(name: string): KubernetesPersistentVolumeResource", + "parameters": [ + { + "name": "name", + "type": "string", + "description": "The name of the persistent volume resource. Used as the generated PVC's `metadata.name` after lower-casing. To bind a workload using the name-match overload of `WithPersistentVolume``1`, add a `WithVolume(\"name\", \"/path\")` on the workload using the same `name`." + } + ], + "returnType": "KubernetesPersistentVolumeResource", + "returnsBuilder": true, + "targetTypeId": "Aspire.Hosting.Kubernetes/Aspire.Hosting.Kubernetes.KubernetesEnvironmentResource", + "expandedTargetTypes": [ + "Aspire.Hosting.Kubernetes.KubernetesEnvironmentResource" + ] + }, { "name": "configureDashboard", "capabilityId": "Aspire.Hosting.Kubernetes/configureDashboard", @@ -3684,6 +3961,187 @@ ], "capabilities": [] }, + { + "name": "KubernetesPersistentVolumeResource", + "fullName": "Aspire.Hosting.Kubernetes.KubernetesPersistentVolumeResource", + "kind": "handle", + "description": "Represents a Kubernetes PersistentVolumeClaim as a first-class resource in the Aspire application model. A persistent volume resource carries the storage class, capacity, access modes, and metadata annotations needed to render a `v1.PersistentVolumeClaim` at publish time. Workloads bind to it with `WithPersistentVolume``1`.", + "remarks": "Bind a workload to the volume by either:\n- Adding a matching `WithVolume(\"name\", \"/mount/path\")` on a container resource and then calling `WithPersistentVolume(volume)`. The publisher matches by volume name and routes the pod's `volumes[]` entry through this resource's generated PVC.\n- Calling the `WithPersistentVolume``1` overload that takes a mount path. Works for both `ContainerResource` and `ProjectResource`.\nAny workload bound to a persistent volume is automatically rendered as a\n`StatefulSet` rather than a `Deployment` — Kubernetes requires\nstable identity and ordered rollout for pods that share named PVCs.\nThis resource is publish-only. It has no run-mode behavior or dashboard surface.", + "implementedInterfaces": [ + "Aspire.Hosting.ApplicationModel.IResource", + "Aspire.Hosting.ApplicationModel.IResourceWithParent", + "Aspire.Hosting.ApplicationModel.IResourceWithParent`1[[Aspire.Hosting.Kubernetes.KubernetesEnvironmentResource]]" + ], + "baseTypeHierarchy": [ + "Aspire.Hosting.ApplicationModel.Resource" + ], + "capabilities": [ + { + "name": "withAccessMode", + "capabilityId": "Aspire.Hosting.Kubernetes/withAccessMode", + "qualifiedName": "withAccessMode", + "description": "Adds an access mode to a persistent volume", + "returns": "The same builder for chaining.", + "kind": "Method", + "signature": "withAccessMode(accessMode: PersistentVolumeAccessMode): KubernetesPersistentVolumeResource", + "parameters": [ + { + "name": "accessMode", + "type": "PersistentVolumeAccessMode", + "description": "The access mode to add." + } + ], + "returnType": "KubernetesPersistentVolumeResource", + "returnsBuilder": true, + "targetTypeId": "Aspire.Hosting.Kubernetes/Aspire.Hosting.Kubernetes.KubernetesPersistentVolumeResource", + "expandedTargetTypes": [ + "Aspire.Hosting.Kubernetes.KubernetesPersistentVolumeResource" + ] + }, + { + "name": "withCapacity", + "capabilityId": "Aspire.Hosting.Kubernetes/withCapacity", + "qualifiedName": "withCapacity", + "description": "Sets the requested storage capacity for a persistent volume", + "returns": "The same builder for chaining.", + "kind": "Method", + "signature": "withCapacity(capacity: string): KubernetesPersistentVolumeResource", + "parameters": [ + { + "name": "capacity", + "type": "string", + "description": "A Kubernetes quantity string (e.g. `\"10Gi\"`, `\"500Mi\"`)." + } + ], + "returnType": "KubernetesPersistentVolumeResource", + "returnsBuilder": true, + "targetTypeId": "Aspire.Hosting.Kubernetes/Aspire.Hosting.Kubernetes.KubernetesPersistentVolumeResource", + "expandedTargetTypes": [ + "Aspire.Hosting.Kubernetes.KubernetesPersistentVolumeResource" + ] + }, + { + "name": "withCapacityParam", + "capabilityId": "Aspire.Hosting.Kubernetes/withCapacityParam", + "qualifiedName": "withCapacityParam", + "description": "Sets a parameterized storage capacity for a persistent volume", + "returns": "The same builder for chaining.", + "kind": "Method", + "signature": "withCapacityParam(capacity: ParameterResource): KubernetesPersistentVolumeResource", + "parameters": [ + { + "name": "capacity", + "type": "ParameterResource", + "description": "A parameter resource builder for the capacity quantity string." + } + ], + "returnType": "KubernetesPersistentVolumeResource", + "returnsBuilder": true, + "targetTypeId": "Aspire.Hosting.Kubernetes/Aspire.Hosting.Kubernetes.KubernetesPersistentVolumeResource", + "expandedTargetTypes": [ + "Aspire.Hosting.Kubernetes.KubernetesPersistentVolumeResource" + ] + }, + { + "name": "withStorageClass", + "capabilityId": "Aspire.Hosting.Kubernetes/withStorageClass", + "qualifiedName": "withStorageClass", + "description": "Sets the storage class for a persistent volume", + "returns": "The same builder for chaining.", + "kind": "Method", + "signature": "withStorageClass(storageClassName: string): KubernetesPersistentVolumeResource", + "parameters": [ + { + "name": "storageClassName", + "type": "string", + "description": "The storage class name (e.g. `\"managed-csi\"`, `\"gp3\"`)." + } + ], + "returnType": "KubernetesPersistentVolumeResource", + "returnsBuilder": true, + "targetTypeId": "Aspire.Hosting.Kubernetes/Aspire.Hosting.Kubernetes.KubernetesPersistentVolumeResource", + "expandedTargetTypes": [ + "Aspire.Hosting.Kubernetes.KubernetesPersistentVolumeResource" + ] + }, + { + "name": "withStorageClassParam", + "capabilityId": "Aspire.Hosting.Kubernetes/withStorageClassParam", + "qualifiedName": "withStorageClassParam", + "description": "Sets a parameterized storage class for a persistent volume", + "returns": "The same builder for chaining.", + "kind": "Method", + "signature": "withStorageClassParam(storageClassName: ParameterResource): KubernetesPersistentVolumeResource", + "parameters": [ + { + "name": "storageClassName", + "type": "ParameterResource", + "description": "A parameter resource builder for the storage class name." + } + ], + "returnType": "KubernetesPersistentVolumeResource", + "returnsBuilder": true, + "targetTypeId": "Aspire.Hosting.Kubernetes/Aspire.Hosting.Kubernetes.KubernetesPersistentVolumeResource", + "expandedTargetTypes": [ + "Aspire.Hosting.Kubernetes.KubernetesPersistentVolumeResource" + ] + }, + { + "name": "withVolumeAnnotation", + "capabilityId": "Aspire.Hosting.Kubernetes/withVolumeAnnotation", + "qualifiedName": "withVolumeAnnotation", + "description": "Adds a Kubernetes metadata annotation to a persistent volume", + "returns": "The same builder for chaining.", + "kind": "Method", + "signature": "withVolumeAnnotation(key: string, value: string): KubernetesPersistentVolumeResource", + "parameters": [ + { + "name": "key", + "type": "string", + "description": "The annotation key (e.g. `\"volume.beta.kubernetes.io/storage-provisioner\"`)." + }, + { + "name": "value", + "type": "string", + "description": "The annotation value." + } + ], + "returnType": "KubernetesPersistentVolumeResource", + "returnsBuilder": true, + "targetTypeId": "Aspire.Hosting.Kubernetes/Aspire.Hosting.Kubernetes.KubernetesPersistentVolumeResource", + "expandedTargetTypes": [ + "Aspire.Hosting.Kubernetes.KubernetesPersistentVolumeResource" + ] + }, + { + "name": "withVolumeAnnotationParam", + "capabilityId": "Aspire.Hosting.Kubernetes/withVolumeAnnotationParam", + "qualifiedName": "withVolumeAnnotationParam", + "description": "Adds a parameterized Kubernetes metadata annotation to a persistent volume", + "returns": "The same builder for chaining.", + "kind": "Method", + "signature": "withVolumeAnnotationParam(key: string, value: ParameterResource): KubernetesPersistentVolumeResource", + "parameters": [ + { + "name": "key", + "type": "string", + "description": "The annotation key." + }, + { + "name": "value", + "type": "ParameterResource", + "description": "A parameter resource builder for the annotation value." + } + ], + "returnType": "KubernetesPersistentVolumeResource", + "returnsBuilder": true, + "targetTypeId": "Aspire.Hosting.Kubernetes/Aspire.Hosting.Kubernetes.KubernetesPersistentVolumeResource", + "expandedTargetTypes": [ + "Aspire.Hosting.Kubernetes.KubernetesPersistentVolumeResource" + ] + } + ] + }, { "name": "KubernetesResource", "fullName": "Aspire.Hosting.Kubernetes.KubernetesResource", @@ -3806,6 +4264,36 @@ "description": "Matching is delegated to the ingress controller. Check the controller's documentation for the supported matching semantics." } ] + }, + { + "name": "PersistentVolumeAccessMode", + "fullName": "Aspire.Hosting.Kubernetes.PersistentVolumeAccessMode", + "kind": "enum", + "description": "Specifies how a persistent volume may be mounted by pods. Maps directly to the Kubernetes `PersistentVolumeAccessMode` values.", + "members": [ + "ReadWriteOnce", + "ReadOnlyMany", + "ReadWriteMany", + "ReadWriteOncePod" + ], + "memberDocs": [ + { + "name": "ReadWriteOnce", + "description": "The volume can be mounted as read-write by a single node. Most common for block storage backed databases." + }, + { + "name": "ReadOnlyMany", + "description": "The volume can be mounted as read-only by many nodes simultaneously." + }, + { + "name": "ReadWriteMany", + "description": "The volume can be mounted as read-write by many nodes simultaneously. Typically used for shared file stores (e.g. Azure Files, NFS)." + }, + { + "name": "ReadWriteOncePod", + "description": "The volume can be mounted as read-write by a single pod. Requires Kubernetes 1.27 or later (`ReadWriteOncePod` access mode)." + } + ] } ] } \ No newline at end of file diff --git a/src/frontend/src/data/ts-modules/Aspire.Hosting.Maui.13.4.6-preview.1.26319.6.json b/src/frontend/src/data/ts-modules/Aspire.Hosting.Maui.13.5.0-preview.1.26417.7.json similarity index 99% rename from src/frontend/src/data/ts-modules/Aspire.Hosting.Maui.13.4.6-preview.1.26319.6.json rename to src/frontend/src/data/ts-modules/Aspire.Hosting.Maui.13.5.0-preview.1.26417.7.json index b30dca0eb..b1037d525 100644 --- a/src/frontend/src/data/ts-modules/Aspire.Hosting.Maui.13.4.6-preview.1.26319.6.json +++ b/src/frontend/src/data/ts-modules/Aspire.Hosting.Maui.13.5.0-preview.1.26417.7.json @@ -1,10 +1,10 @@ { "package": { "name": "Aspire.Hosting.Maui", - "version": "13.4.6-preview.1.26319.6", + "version": "13.5.0-preview.1.26417.7", "language": "typescript", "sourceRepository": "https://github.com/microsoft/aspire", - "sourceCommit": "87fe259e4fc244c599019a7b1304c85a1488f248" + "sourceCommit": "e076d8e427cb3afb528dbd605acd74c3aea69f94" }, "functions": [ { diff --git a/src/frontend/src/data/ts-modules/Aspire.Hosting.Milvus.13.4.6.json b/src/frontend/src/data/ts-modules/Aspire.Hosting.Milvus.13.5.0.json similarity index 99% rename from src/frontend/src/data/ts-modules/Aspire.Hosting.Milvus.13.4.6.json rename to src/frontend/src/data/ts-modules/Aspire.Hosting.Milvus.13.5.0.json index 56def67ef..74590d063 100644 --- a/src/frontend/src/data/ts-modules/Aspire.Hosting.Milvus.13.4.6.json +++ b/src/frontend/src/data/ts-modules/Aspire.Hosting.Milvus.13.5.0.json @@ -1,10 +1,10 @@ { "package": { "name": "Aspire.Hosting.Milvus", - "version": "13.4.6", + "version": "13.5.0", "language": "typescript", "sourceRepository": "https://github.com/microsoft/aspire", - "sourceCommit": "87fe259e4fc244c599019a7b1304c85a1488f248" + "sourceCommit": "e076d8e427cb3afb528dbd605acd74c3aea69f94" }, "functions": [ { diff --git a/src/frontend/src/data/ts-modules/Aspire.Hosting.MongoDB.13.4.6.json b/src/frontend/src/data/ts-modules/Aspire.Hosting.MongoDB.13.5.0.json similarity index 99% rename from src/frontend/src/data/ts-modules/Aspire.Hosting.MongoDB.13.4.6.json rename to src/frontend/src/data/ts-modules/Aspire.Hosting.MongoDB.13.5.0.json index 10ea1fe7b..1ee920df5 100644 --- a/src/frontend/src/data/ts-modules/Aspire.Hosting.MongoDB.13.4.6.json +++ b/src/frontend/src/data/ts-modules/Aspire.Hosting.MongoDB.13.5.0.json @@ -1,10 +1,10 @@ { "package": { "name": "Aspire.Hosting.MongoDB", - "version": "13.4.6", + "version": "13.5.0", "language": "typescript", "sourceRepository": "https://github.com/microsoft/aspire", - "sourceCommit": "87fe259e4fc244c599019a7b1304c85a1488f248" + "sourceCommit": "e076d8e427cb3afb528dbd605acd74c3aea69f94" }, "functions": [ { diff --git a/src/frontend/src/data/ts-modules/Aspire.Hosting.MySql.13.4.6.json b/src/frontend/src/data/ts-modules/Aspire.Hosting.MySql.13.5.0.json similarity index 99% rename from src/frontend/src/data/ts-modules/Aspire.Hosting.MySql.13.4.6.json rename to src/frontend/src/data/ts-modules/Aspire.Hosting.MySql.13.5.0.json index 3f5f69b97..c7d0a9e24 100644 --- a/src/frontend/src/data/ts-modules/Aspire.Hosting.MySql.13.4.6.json +++ b/src/frontend/src/data/ts-modules/Aspire.Hosting.MySql.13.5.0.json @@ -1,10 +1,10 @@ { "package": { "name": "Aspire.Hosting.MySql", - "version": "13.4.6", + "version": "13.5.0", "language": "typescript", "sourceRepository": "https://github.com/microsoft/aspire", - "sourceCommit": "87fe259e4fc244c599019a7b1304c85a1488f248" + "sourceCommit": "e076d8e427cb3afb528dbd605acd74c3aea69f94" }, "functions": [ { diff --git a/src/frontend/src/data/ts-modules/Aspire.Hosting.Nats.13.4.6.json b/src/frontend/src/data/ts-modules/Aspire.Hosting.Nats.13.5.0.json similarity index 99% rename from src/frontend/src/data/ts-modules/Aspire.Hosting.Nats.13.4.6.json rename to src/frontend/src/data/ts-modules/Aspire.Hosting.Nats.13.5.0.json index bf8a15fbd..bfe9d6d18 100644 --- a/src/frontend/src/data/ts-modules/Aspire.Hosting.Nats.13.4.6.json +++ b/src/frontend/src/data/ts-modules/Aspire.Hosting.Nats.13.5.0.json @@ -1,10 +1,10 @@ { "package": { "name": "Aspire.Hosting.Nats", - "version": "13.4.6", + "version": "13.5.0", "language": "typescript", "sourceRepository": "https://github.com/microsoft/aspire", - "sourceCommit": "87fe259e4fc244c599019a7b1304c85a1488f248" + "sourceCommit": "e076d8e427cb3afb528dbd605acd74c3aea69f94" }, "functions": [ { diff --git a/src/frontend/src/data/ts-modules/Aspire.Hosting.OpenAI.13.4.6.json b/src/frontend/src/data/ts-modules/Aspire.Hosting.OpenAI.13.5.0.json similarity index 99% rename from src/frontend/src/data/ts-modules/Aspire.Hosting.OpenAI.13.4.6.json rename to src/frontend/src/data/ts-modules/Aspire.Hosting.OpenAI.13.5.0.json index 8d16bee6c..53c8b5810 100644 --- a/src/frontend/src/data/ts-modules/Aspire.Hosting.OpenAI.13.4.6.json +++ b/src/frontend/src/data/ts-modules/Aspire.Hosting.OpenAI.13.5.0.json @@ -1,10 +1,10 @@ { "package": { "name": "Aspire.Hosting.OpenAI", - "version": "13.4.6", + "version": "13.5.0", "language": "typescript", "sourceRepository": "https://github.com/microsoft/aspire", - "sourceCommit": "87fe259e4fc244c599019a7b1304c85a1488f248" + "sourceCommit": "e076d8e427cb3afb528dbd605acd74c3aea69f94" }, "functions": [ { diff --git a/src/frontend/src/data/ts-modules/Aspire.Hosting.Oracle.13.4.6.json b/src/frontend/src/data/ts-modules/Aspire.Hosting.Oracle.13.5.0.json similarity index 99% rename from src/frontend/src/data/ts-modules/Aspire.Hosting.Oracle.13.4.6.json rename to src/frontend/src/data/ts-modules/Aspire.Hosting.Oracle.13.5.0.json index 7ced012ab..461243a96 100644 --- a/src/frontend/src/data/ts-modules/Aspire.Hosting.Oracle.13.4.6.json +++ b/src/frontend/src/data/ts-modules/Aspire.Hosting.Oracle.13.5.0.json @@ -1,10 +1,10 @@ { "package": { "name": "Aspire.Hosting.Oracle", - "version": "13.4.6", + "version": "13.5.0", "language": "typescript", "sourceRepository": "https://github.com/microsoft/aspire", - "sourceCommit": "87fe259e4fc244c599019a7b1304c85a1488f248" + "sourceCommit": "e076d8e427cb3afb528dbd605acd74c3aea69f94" }, "functions": [ { diff --git a/src/frontend/src/data/ts-modules/Aspire.Hosting.Orleans.13.4.6.json b/src/frontend/src/data/ts-modules/Aspire.Hosting.Orleans.13.5.0.json similarity index 95% rename from src/frontend/src/data/ts-modules/Aspire.Hosting.Orleans.13.4.6.json rename to src/frontend/src/data/ts-modules/Aspire.Hosting.Orleans.13.5.0.json index 887eaf0e5..d892028cf 100644 --- a/src/frontend/src/data/ts-modules/Aspire.Hosting.Orleans.13.4.6.json +++ b/src/frontend/src/data/ts-modules/Aspire.Hosting.Orleans.13.5.0.json @@ -1,10 +1,10 @@ { "package": { "name": "Aspire.Hosting.Orleans", - "version": "13.4.6", + "version": "13.5.0", "language": "typescript", "sourceRepository": "https://github.com/microsoft/aspire", - "sourceCommit": "87fe259e4fc244c599019a7b1304c85a1488f248" + "sourceCommit": "e076d8e427cb3afb528dbd605acd74c3aea69f94" }, "functions": [ { @@ -256,6 +256,29 @@ "Aspire.Hosting.ApplicationModel.CSharpAppResource" ] }, + { + "name": "withOrleansProviderType", + "capabilityId": "Aspire.Hosting.Orleans/withOrleansProviderType", + "qualifiedName": "withOrleansProviderType", + "description": "Configures a resource to use the specified Orleans provider type.", + "remarks": "Use this when a resource can be used as a drop-in replacement for an Orleans provider type that is\ninferred from a different resource name. For example, Garnet can be used wherever Orleans expects a\nRedis provider.", + "returns": "The resource builder.", + "kind": "Method", + "signature": "withOrleansProviderType(providerType: string): IResourceWithConnectionString", + "parameters": [ + { + "name": "providerType", + "type": "string", + "description": "The Orleans provider type to use for the resource." + } + ], + "returnType": "IResourceWithConnectionString", + "returnsBuilder": true, + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.IResourceWithConnectionString", + "expandedTargetTypes": [ + "Aspire.Hosting.ApplicationModel.IResourceWithConnectionString" + ] + }, { "name": "withOrleansReference", "capabilityId": "Aspire.Hosting.Orleans/withOrleansReference", diff --git a/src/frontend/src/data/ts-modules/Aspire.Hosting.PostgreSQL.13.4.6.json b/src/frontend/src/data/ts-modules/Aspire.Hosting.PostgreSQL.13.5.0.json similarity index 99% rename from src/frontend/src/data/ts-modules/Aspire.Hosting.PostgreSQL.13.4.6.json rename to src/frontend/src/data/ts-modules/Aspire.Hosting.PostgreSQL.13.5.0.json index 1ffd8727b..e16c01a8c 100644 --- a/src/frontend/src/data/ts-modules/Aspire.Hosting.PostgreSQL.13.4.6.json +++ b/src/frontend/src/data/ts-modules/Aspire.Hosting.PostgreSQL.13.5.0.json @@ -1,10 +1,10 @@ { "package": { "name": "Aspire.Hosting.PostgreSQL", - "version": "13.4.6", + "version": "13.5.0", "language": "typescript", "sourceRepository": "https://github.com/microsoft/aspire", - "sourceCommit": "87fe259e4fc244c599019a7b1304c85a1488f248" + "sourceCommit": "e076d8e427cb3afb528dbd605acd74c3aea69f94" }, "functions": [ { diff --git a/src/frontend/src/data/ts-modules/Aspire.Hosting.Python.13.4.6.json b/src/frontend/src/data/ts-modules/Aspire.Hosting.Python.13.5.0.json similarity index 99% rename from src/frontend/src/data/ts-modules/Aspire.Hosting.Python.13.4.6.json rename to src/frontend/src/data/ts-modules/Aspire.Hosting.Python.13.5.0.json index cbce622fc..6b3727714 100644 --- a/src/frontend/src/data/ts-modules/Aspire.Hosting.Python.13.4.6.json +++ b/src/frontend/src/data/ts-modules/Aspire.Hosting.Python.13.5.0.json @@ -1,10 +1,10 @@ { "package": { "name": "Aspire.Hosting.Python", - "version": "13.4.6", + "version": "13.5.0", "language": "typescript", "sourceRepository": "https://github.com/microsoft/aspire", - "sourceCommit": "87fe259e4fc244c599019a7b1304c85a1488f248" + "sourceCommit": "e076d8e427cb3afb528dbd605acd74c3aea69f94" }, "functions": [ { diff --git a/src/frontend/src/data/ts-modules/Aspire.Hosting.Qdrant.13.4.6.json b/src/frontend/src/data/ts-modules/Aspire.Hosting.Qdrant.13.5.0.json similarity index 99% rename from src/frontend/src/data/ts-modules/Aspire.Hosting.Qdrant.13.4.6.json rename to src/frontend/src/data/ts-modules/Aspire.Hosting.Qdrant.13.5.0.json index ee131350e..3cffeb758 100644 --- a/src/frontend/src/data/ts-modules/Aspire.Hosting.Qdrant.13.4.6.json +++ b/src/frontend/src/data/ts-modules/Aspire.Hosting.Qdrant.13.5.0.json @@ -1,10 +1,10 @@ { "package": { "name": "Aspire.Hosting.Qdrant", - "version": "13.4.6", + "version": "13.5.0", "language": "typescript", "sourceRepository": "https://github.com/microsoft/aspire", - "sourceCommit": "87fe259e4fc244c599019a7b1304c85a1488f248" + "sourceCommit": "e076d8e427cb3afb528dbd605acd74c3aea69f94" }, "functions": [ { diff --git a/src/frontend/src/data/ts-modules/Aspire.Hosting.RabbitMQ.13.4.6.json b/src/frontend/src/data/ts-modules/Aspire.Hosting.RabbitMQ.13.5.0.json similarity index 99% rename from src/frontend/src/data/ts-modules/Aspire.Hosting.RabbitMQ.13.4.6.json rename to src/frontend/src/data/ts-modules/Aspire.Hosting.RabbitMQ.13.5.0.json index 3db341357..a12e8b46e 100644 --- a/src/frontend/src/data/ts-modules/Aspire.Hosting.RabbitMQ.13.4.6.json +++ b/src/frontend/src/data/ts-modules/Aspire.Hosting.RabbitMQ.13.5.0.json @@ -1,10 +1,10 @@ { "package": { "name": "Aspire.Hosting.RabbitMQ", - "version": "13.4.6", + "version": "13.5.0", "language": "typescript", "sourceRepository": "https://github.com/microsoft/aspire", - "sourceCommit": "87fe259e4fc244c599019a7b1304c85a1488f248" + "sourceCommit": "e076d8e427cb3afb528dbd605acd74c3aea69f94" }, "functions": [ { diff --git a/src/frontend/src/data/ts-modules/Aspire.Hosting.Radius.13.5.0-preview.1.26417.7.json b/src/frontend/src/data/ts-modules/Aspire.Hosting.Radius.13.5.0-preview.1.26417.7.json new file mode 100644 index 000000000..d0a868b9d --- /dev/null +++ b/src/frontend/src/data/ts-modules/Aspire.Hosting.Radius.13.5.0-preview.1.26417.7.json @@ -0,0 +1,188 @@ +{ + "package": { + "name": "Aspire.Hosting.Radius", + "version": "13.5.0-preview.1.26417.7", + "language": "typescript", + "sourceRepository": "https://github.com/microsoft/aspire", + "sourceCommit": "e076d8e427cb3afb528dbd605acd74c3aea69f94" + }, + "functions": [ + { + "name": "addRadiusEnvironment", + "capabilityId": "Aspire.Hosting.Radius/addRadiusEnvironment", + "qualifiedName": "addRadiusEnvironment", + "description": "Adds a Radius compute environment to the application model.", + "remarks": "In `Run` mode this returns an\nunregistered builder so the environment does not surface as a resource in\nthe dashboard and no pipeline steps are wired up — matching\n`AddKubernetesEnvironment` and `AddDockerComposeEnvironment`.\nAll deployment-target wiring runs in Publish mode only.", + "returns": "A reference to the `IResourceBuilder`1`.", + "kind": "Method", + "signature": "addRadiusEnvironment(name: string): RadiusEnvironmentResource", + "parameters": [ + { + "name": "name", + "type": "string", + "description": "The name of the Radius environment resource." + } + ], + "returnType": "RadiusEnvironmentResource", + "returnsBuilder": true, + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.IDistributedApplicationBuilder", + "expandedTargetTypes": [ + "Aspire.Hosting.IDistributedApplicationBuilder" + ] + }, + { + "name": "namespace", + "capabilityId": "Aspire.Hosting.Radius/RadiusEnvironmentResource.namespace", + "qualifiedName": "RadiusEnvironmentResource.namespace", + "description": "Gets or sets the Kubernetes namespace for resource deployment.", + "kind": "PropertyGetter", + "signature": "namespace(): string", + "parameters": [], + "returnType": "string", + "targetTypeId": "Aspire.Hosting.Radius/Aspire.Hosting.Radius.RadiusEnvironmentResource", + "expandedTargetTypes": [ + "Aspire.Hosting.Radius.RadiusEnvironmentResource" + ] + }, + { + "name": "setNamespace", + "capabilityId": "Aspire.Hosting.Radius/RadiusEnvironmentResource.setNamespace", + "qualifiedName": "RadiusEnvironmentResource.setNamespace", + "description": "Gets or sets the Kubernetes namespace for resource deployment.", + "kind": "PropertySetter", + "signature": "setNamespace(value: string): RadiusEnvironmentResource", + "parameters": [ + { + "name": "value", + "type": "string" + } + ], + "returnType": "RadiusEnvironmentResource", + "targetTypeId": "Aspire.Hosting.Radius/Aspire.Hosting.Radius.RadiusEnvironmentResource", + "expandedTargetTypes": [ + "Aspire.Hosting.Radius.RadiusEnvironmentResource" + ] + }, + { + "name": "withContainerImage", + "capabilityId": "Aspire.Hosting.Radius/withContainerImage", + "qualifiedName": "withContainerImage", + "description": "Associates a pre-built container image reference with a project resource so the Aspire.Hosting.Radius publisher can emit a valid Radius container manifest for it.", + "remarks": "The Radius publisher does not yet build or push images for `ProjectResource`\n(tracked at https://github.com/microsoft/aspire/issues/16844). Until that lands,\ncallers must build and push the image themselves (for example with\n`dotnet publish /t:PublishContainer`) and then call this method to attach\nthe resulting registry reference. Without it, `aspire publish` against a Radius\nenvironment fails with a clear remediation message — and `aspire deploy` against\nRadius would otherwise land pods that hit `ImagePullBackOff` against the\npublisher's `:latest` fallback.\nThe reference is stored as a `ContainerImageAnnotation`, which is also\nwhat container resources use, so the publisher's existing\n`Registry`/`Image`/`Tag` assembly path applies uniformly.", + "returns": "The same `IResourceBuilder`1` for chaining.", + "kind": "Method", + "signature": "withContainerImage(image: string): ProjectResource", + "parameters": [ + { + "name": "image", + "type": "string", + "description": "A fully-qualified image reference in `[registry/]image[:tag]` form (for example `localhost:5001/apiservice:latest`). When the tag is omitted `latest` is used." + } + ], + "returnType": "ProjectResource", + "returnsBuilder": true, + "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.ProjectResource", + "expandedTargetTypes": [ + "Aspire.Hosting.ApplicationModel.ProjectResource", + "Aspire.Hosting.ApplicationModel.CSharpAppResource" + ] + }, + { + "name": "withNamespace", + "capabilityId": "Aspire.Hosting.Radius/withNamespace", + "qualifiedName": "withNamespace", + "description": "Sets the Kubernetes namespace for the Radius environment.", + "returns": "A reference to the `IResourceBuilder`1`.", + "kind": "Method", + "signature": "withNamespace(kubernetesNamespace: string): RadiusEnvironmentResource", + "parameters": [ + { + "name": "kubernetesNamespace", + "type": "string", + "description": "A valid RFC 1123 namespace name." + } + ], + "returnType": "RadiusEnvironmentResource", + "returnsBuilder": true, + "targetTypeId": "Aspire.Hosting.Radius/Aspire.Hosting.Radius.RadiusEnvironmentResource", + "expandedTargetTypes": [ + "Aspire.Hosting.Radius.RadiusEnvironmentResource" + ] + } + ], + "handleTypes": [ + { + "name": "RadiusEnvironmentResource", + "fullName": "Aspire.Hosting.Radius.RadiusEnvironmentResource", + "kind": "handle", + "exposeProperties": true, + "description": "Represents a Radius compute environment in the Aspire app model.", + "implementedInterfaces": [ + "Aspire.Hosting.ApplicationModel.IComputeEnvironmentResource", + "Aspire.Hosting.ApplicationModel.IResource" + ], + "baseTypeHierarchy": [ + "Aspire.Hosting.ApplicationModel.Resource" + ], + "capabilities": [ + { + "name": "namespace", + "capabilityId": "Aspire.Hosting.Radius/RadiusEnvironmentResource.namespace", + "qualifiedName": "RadiusEnvironmentResource.namespace", + "description": "Gets or sets the Kubernetes namespace for resource deployment.", + "kind": "PropertyGetter", + "signature": "namespace(): string", + "parameters": [], + "returnType": "string", + "targetTypeId": "Aspire.Hosting.Radius/Aspire.Hosting.Radius.RadiusEnvironmentResource", + "expandedTargetTypes": [ + "Aspire.Hosting.Radius.RadiusEnvironmentResource" + ] + }, + { + "name": "setNamespace", + "capabilityId": "Aspire.Hosting.Radius/RadiusEnvironmentResource.setNamespace", + "qualifiedName": "RadiusEnvironmentResource.setNamespace", + "description": "Gets or sets the Kubernetes namespace for resource deployment.", + "kind": "PropertySetter", + "signature": "setNamespace(value: string): RadiusEnvironmentResource", + "parameters": [ + { + "name": "value", + "type": "string" + } + ], + "returnType": "RadiusEnvironmentResource", + "targetTypeId": "Aspire.Hosting.Radius/Aspire.Hosting.Radius.RadiusEnvironmentResource", + "expandedTargetTypes": [ + "Aspire.Hosting.Radius.RadiusEnvironmentResource" + ] + }, + { + "name": "withNamespace", + "capabilityId": "Aspire.Hosting.Radius/withNamespace", + "qualifiedName": "withNamespace", + "description": "Sets the Kubernetes namespace for the Radius environment.", + "returns": "A reference to the `IResourceBuilder`1`.", + "kind": "Method", + "signature": "withNamespace(kubernetesNamespace: string): RadiusEnvironmentResource", + "parameters": [ + { + "name": "kubernetesNamespace", + "type": "string", + "description": "A valid RFC 1123 namespace name." + } + ], + "returnType": "RadiusEnvironmentResource", + "returnsBuilder": true, + "targetTypeId": "Aspire.Hosting.Radius/Aspire.Hosting.Radius.RadiusEnvironmentResource", + "expandedTargetTypes": [ + "Aspire.Hosting.Radius.RadiusEnvironmentResource" + ] + } + ] + } + ], + "dtoTypes": [], + "enumTypes": [] +} \ No newline at end of file diff --git a/src/frontend/src/data/ts-modules/Aspire.Hosting.Redis.13.4.6.json b/src/frontend/src/data/ts-modules/Aspire.Hosting.Redis.13.5.0.json similarity index 92% rename from src/frontend/src/data/ts-modules/Aspire.Hosting.Redis.13.4.6.json rename to src/frontend/src/data/ts-modules/Aspire.Hosting.Redis.13.5.0.json index 4454d4b7e..45b8f248b 100644 --- a/src/frontend/src/data/ts-modules/Aspire.Hosting.Redis.13.4.6.json +++ b/src/frontend/src/data/ts-modules/Aspire.Hosting.Redis.13.5.0.json @@ -1,10 +1,10 @@ { "package": { "name": "Aspire.Hosting.Redis", - "version": "13.4.6", + "version": "13.5.0", "language": "typescript", "sourceRepository": "https://github.com/microsoft/aspire", - "sourceCommit": "87fe259e4fc244c599019a7b1304c85a1488f248" + "sourceCommit": "aab640cb6e4d05e1422b3ab723e78524aa1c5a22" }, "functions": [ { @@ -334,6 +334,29 @@ "Aspire.Hosting.ApplicationModel.RedisResource" ] }, + { + "name": "withModule", + "capabilityId": "Aspire.Hosting.Redis/withModule", + "qualifiedName": "withModule", + "description": "Configures the Redis resource to use the specified Redis module by providing its path inside the container.", + "remarks": "This method passes the module path to `redis-server` as a `--loadmodule` argument. Redis resolves the path inside the\ncontainer, not on the host. To load a module built on the host machine, mount it into the Redis container first and then use\nthe mounted container path. Use `RedisModules` for well-known module paths that are included in the default\nRedis container image.\n```\nvar cache = builder.AddRedis(\"cache\")\n.WithModule(RedisModules.Json)\n.WithModule(RedisModules.Search);\nvar customModuleCache = builder.AddRedis(\"custom-cache\")\n.WithBindMount(\"/host/redis/modules\", \"/redis/modules\", isReadOnly: true)\n.WithModule(\"/redis/modules/custom-module.so\");\n```\nFor more information, see the Redis module loading documentation at .", + "returns": "The resource builder.", + "kind": "Method", + "signature": "withModule(path: string): RedisResource", + "parameters": [ + { + "name": "path", + "type": "string", + "description": "The absolute path to the Redis module inside the Redis container." + } + ], + "returnType": "RedisResource", + "returnsBuilder": true, + "targetTypeId": "Aspire.Hosting.Redis/Aspire.Hosting.ApplicationModel.RedisResource", + "expandedTargetTypes": [ + "Aspire.Hosting.ApplicationModel.RedisResource" + ] + }, { "name": "withPassword", "capabilityId": "Aspire.Hosting.Redis/withPassword", @@ -678,6 +701,29 @@ "Aspire.Hosting.ApplicationModel.RedisResource" ] }, + { + "name": "withModule", + "capabilityId": "Aspire.Hosting.Redis/withModule", + "qualifiedName": "withModule", + "description": "Configures the Redis resource to use the specified Redis module by providing its path inside the container.", + "remarks": "This method passes the module path to `redis-server` as a `--loadmodule` argument. Redis resolves the path inside the\ncontainer, not on the host. To load a module built on the host machine, mount it into the Redis container first and then use\nthe mounted container path. Use `RedisModules` for well-known module paths that are included in the default\nRedis container image.\n```\nvar cache = builder.AddRedis(\"cache\")\n.WithModule(RedisModules.Json)\n.WithModule(RedisModules.Search);\nvar customModuleCache = builder.AddRedis(\"custom-cache\")\n.WithBindMount(\"/host/redis/modules\", \"/redis/modules\", isReadOnly: true)\n.WithModule(\"/redis/modules/custom-module.so\");\n```\nFor more information, see the Redis module loading documentation at .", + "returns": "The resource builder.", + "kind": "Method", + "signature": "withModule(path: string): RedisResource", + "parameters": [ + { + "name": "path", + "type": "string", + "description": "The absolute path to the Redis module inside the Redis container." + } + ], + "returnType": "RedisResource", + "returnsBuilder": true, + "targetTypeId": "Aspire.Hosting.Redis/Aspire.Hosting.ApplicationModel.RedisResource", + "expandedTargetTypes": [ + "Aspire.Hosting.ApplicationModel.RedisResource" + ] + }, { "name": "withPassword", "capabilityId": "Aspire.Hosting.Redis/withPassword", diff --git a/src/frontend/src/data/ts-modules/Aspire.Hosting.Seq.13.4.6.json b/src/frontend/src/data/ts-modules/Aspire.Hosting.Seq.13.5.0.json similarity index 99% rename from src/frontend/src/data/ts-modules/Aspire.Hosting.Seq.13.4.6.json rename to src/frontend/src/data/ts-modules/Aspire.Hosting.Seq.13.5.0.json index 5ef1887a6..f444f16c4 100644 --- a/src/frontend/src/data/ts-modules/Aspire.Hosting.Seq.13.4.6.json +++ b/src/frontend/src/data/ts-modules/Aspire.Hosting.Seq.13.5.0.json @@ -1,10 +1,10 @@ { "package": { "name": "Aspire.Hosting.Seq", - "version": "13.4.6", + "version": "13.5.0", "language": "typescript", "sourceRepository": "https://github.com/microsoft/aspire", - "sourceCommit": "87fe259e4fc244c599019a7b1304c85a1488f248" + "sourceCommit": "e076d8e427cb3afb528dbd605acd74c3aea69f94" }, "functions": [ { diff --git a/src/frontend/src/data/ts-modules/Aspire.Hosting.SqlServer.13.4.6.json b/src/frontend/src/data/ts-modules/Aspire.Hosting.SqlServer.13.5.0.json similarity index 99% rename from src/frontend/src/data/ts-modules/Aspire.Hosting.SqlServer.13.4.6.json rename to src/frontend/src/data/ts-modules/Aspire.Hosting.SqlServer.13.5.0.json index b2f1cd98b..f14f75bd8 100644 --- a/src/frontend/src/data/ts-modules/Aspire.Hosting.SqlServer.13.4.6.json +++ b/src/frontend/src/data/ts-modules/Aspire.Hosting.SqlServer.13.5.0.json @@ -1,10 +1,10 @@ { "package": { "name": "Aspire.Hosting.SqlServer", - "version": "13.4.6", + "version": "13.5.0", "language": "typescript", "sourceRepository": "https://github.com/microsoft/aspire", - "sourceCommit": "87fe259e4fc244c599019a7b1304c85a1488f248" + "sourceCommit": "e076d8e427cb3afb528dbd605acd74c3aea69f94" }, "functions": [ { diff --git a/src/frontend/src/data/ts-modules/Aspire.Hosting.Valkey.13.4.6.json b/src/frontend/src/data/ts-modules/Aspire.Hosting.Valkey.13.5.0.json similarity index 99% rename from src/frontend/src/data/ts-modules/Aspire.Hosting.Valkey.13.4.6.json rename to src/frontend/src/data/ts-modules/Aspire.Hosting.Valkey.13.5.0.json index 0fd5391e3..8e7940137 100644 --- a/src/frontend/src/data/ts-modules/Aspire.Hosting.Valkey.13.4.6.json +++ b/src/frontend/src/data/ts-modules/Aspire.Hosting.Valkey.13.5.0.json @@ -1,10 +1,10 @@ { "package": { "name": "Aspire.Hosting.Valkey", - "version": "13.4.6", + "version": "13.5.0", "language": "typescript", "sourceRepository": "https://github.com/microsoft/aspire", - "sourceCommit": "87fe259e4fc244c599019a7b1304c85a1488f248" + "sourceCommit": "e076d8e427cb3afb528dbd605acd74c3aea69f94" }, "functions": [ { diff --git a/src/frontend/src/data/ts-modules/Aspire.Hosting.Yarp.13.4.6.json b/src/frontend/src/data/ts-modules/Aspire.Hosting.Yarp.13.5.0.json similarity index 99% rename from src/frontend/src/data/ts-modules/Aspire.Hosting.Yarp.13.4.6.json rename to src/frontend/src/data/ts-modules/Aspire.Hosting.Yarp.13.5.0.json index c07c48b6e..357d84a65 100644 --- a/src/frontend/src/data/ts-modules/Aspire.Hosting.Yarp.13.4.6.json +++ b/src/frontend/src/data/ts-modules/Aspire.Hosting.Yarp.13.5.0.json @@ -1,10 +1,10 @@ { "package": { "name": "Aspire.Hosting.Yarp", - "version": "13.4.6", + "version": "13.5.0", "language": "typescript", "sourceRepository": "https://github.com/microsoft/aspire", - "sourceCommit": "87fe259e4fc244c599019a7b1304c85a1488f248" + "sourceCommit": "e076d8e427cb3afb528dbd605acd74c3aea69f94" }, "functions": [ { diff --git a/src/frontend/src/data/ts-modules/CommunityToolkit.Aspire.Hosting.Bitwarden.SecretManager.13.4.1-beta.706.json b/src/frontend/src/data/ts-modules/CommunityToolkit.Aspire.Hosting.Bitwarden.SecretManager.13.4.1-beta.701.json similarity index 99% rename from src/frontend/src/data/ts-modules/CommunityToolkit.Aspire.Hosting.Bitwarden.SecretManager.13.4.1-beta.706.json rename to src/frontend/src/data/ts-modules/CommunityToolkit.Aspire.Hosting.Bitwarden.SecretManager.13.4.1-beta.701.json index 69c4e77fe..22abc0d9b 100644 --- a/src/frontend/src/data/ts-modules/CommunityToolkit.Aspire.Hosting.Bitwarden.SecretManager.13.4.1-beta.706.json +++ b/src/frontend/src/data/ts-modules/CommunityToolkit.Aspire.Hosting.Bitwarden.SecretManager.13.4.1-beta.701.json @@ -1,10 +1,10 @@ { "package": { "name": "CommunityToolkit.Aspire.Hosting.Bitwarden.SecretManager", - "version": "13.4.1-beta.706", + "version": "13.4.1-beta.701", "language": "typescript", "sourceRepository": "https://github.com/CommunityToolkit/Aspire", - "sourceCommit": "d479e13473b1d29d06b974f144a0049289a3cb5c" + "sourceCommit": "be6f2a5046ee6d8498e259118610efdf0f5889e5" }, "functions": [ { diff --git a/src/frontend/src/data/ts-modules/CommunityToolkit.Aspire.Hosting.Dbx.13.4.1-beta.706.json b/src/frontend/src/data/ts-modules/CommunityToolkit.Aspire.Hosting.Dbx.13.4.1-beta.701.json similarity index 98% rename from src/frontend/src/data/ts-modules/CommunityToolkit.Aspire.Hosting.Dbx.13.4.1-beta.706.json rename to src/frontend/src/data/ts-modules/CommunityToolkit.Aspire.Hosting.Dbx.13.4.1-beta.701.json index 4009b11ad..3063aab77 100644 --- a/src/frontend/src/data/ts-modules/CommunityToolkit.Aspire.Hosting.Dbx.13.4.1-beta.706.json +++ b/src/frontend/src/data/ts-modules/CommunityToolkit.Aspire.Hosting.Dbx.13.4.1-beta.701.json @@ -1,10 +1,10 @@ { "package": { "name": "CommunityToolkit.Aspire.Hosting.Dbx", - "version": "13.4.1-beta.706", + "version": "13.4.1-beta.701", "language": "typescript", "sourceRepository": "https://github.com/CommunityToolkit/Aspire", - "sourceCommit": "d479e13473b1d29d06b974f144a0049289a3cb5c" + "sourceCommit": "be6f2a5046ee6d8498e259118610efdf0f5889e5" }, "functions": [ { diff --git a/src/frontend/src/data/ts-modules/CommunityToolkit.Aspire.Hosting.DuckDB.13.4.1-beta.706.json b/src/frontend/src/data/ts-modules/CommunityToolkit.Aspire.Hosting.DuckDB.13.4.1-beta.701.json similarity index 97% rename from src/frontend/src/data/ts-modules/CommunityToolkit.Aspire.Hosting.DuckDB.13.4.1-beta.706.json rename to src/frontend/src/data/ts-modules/CommunityToolkit.Aspire.Hosting.DuckDB.13.4.1-beta.701.json index b1d4391e4..9a84275bc 100644 --- a/src/frontend/src/data/ts-modules/CommunityToolkit.Aspire.Hosting.DuckDB.13.4.1-beta.706.json +++ b/src/frontend/src/data/ts-modules/CommunityToolkit.Aspire.Hosting.DuckDB.13.4.1-beta.701.json @@ -1,10 +1,10 @@ { "package": { "name": "CommunityToolkit.Aspire.Hosting.DuckDB", - "version": "13.4.1-beta.706", + "version": "13.4.1-beta.701", "language": "typescript", "sourceRepository": "https://github.com/CommunityToolkit/Aspire", - "sourceCommit": "d479e13473b1d29d06b974f144a0049289a3cb5c" + "sourceCommit": "be6f2a5046ee6d8498e259118610efdf0f5889e5" }, "functions": [ { diff --git a/src/frontend/src/data/ts-modules/CommunityToolkit.Aspire.Hosting.K3s.13.4.1-beta.706.json b/src/frontend/src/data/ts-modules/CommunityToolkit.Aspire.Hosting.K3s.13.4.1-beta.701.json similarity index 99% rename from src/frontend/src/data/ts-modules/CommunityToolkit.Aspire.Hosting.K3s.13.4.1-beta.706.json rename to src/frontend/src/data/ts-modules/CommunityToolkit.Aspire.Hosting.K3s.13.4.1-beta.701.json index 973c504a8..584dd8a04 100644 --- a/src/frontend/src/data/ts-modules/CommunityToolkit.Aspire.Hosting.K3s.13.4.1-beta.706.json +++ b/src/frontend/src/data/ts-modules/CommunityToolkit.Aspire.Hosting.K3s.13.4.1-beta.701.json @@ -1,10 +1,10 @@ { "package": { "name": "CommunityToolkit.Aspire.Hosting.K3s", - "version": "13.4.1-beta.706", + "version": "13.4.1-beta.701", "language": "typescript", "sourceRepository": "https://github.com/CommunityToolkit/Aspire", - "sourceCommit": "d479e13473b1d29d06b974f144a0049289a3cb5c" + "sourceCommit": "be6f2a5046ee6d8498e259118610efdf0f5889e5" }, "functions": [ { diff --git a/src/frontend/src/data/ts-modules/CommunityToolkit.Aspire.Hosting.Keycloak.Extensions.13.4.1-beta.706.json b/src/frontend/src/data/ts-modules/CommunityToolkit.Aspire.Hosting.Keycloak.Extensions.13.4.1-beta.701.json similarity index 95% rename from src/frontend/src/data/ts-modules/CommunityToolkit.Aspire.Hosting.Keycloak.Extensions.13.4.1-beta.706.json rename to src/frontend/src/data/ts-modules/CommunityToolkit.Aspire.Hosting.Keycloak.Extensions.13.4.1-beta.701.json index 06a00a9e9..79178ce63 100644 --- a/src/frontend/src/data/ts-modules/CommunityToolkit.Aspire.Hosting.Keycloak.Extensions.13.4.1-beta.706.json +++ b/src/frontend/src/data/ts-modules/CommunityToolkit.Aspire.Hosting.Keycloak.Extensions.13.4.1-beta.701.json @@ -1,10 +1,10 @@ { "package": { "name": "CommunityToolkit.Aspire.Hosting.Keycloak.Extensions", - "version": "13.4.1-beta.706", + "version": "13.4.1-beta.701", "language": "typescript", "sourceRepository": "https://github.com/CommunityToolkit/Aspire", - "sourceCommit": "d479e13473b1d29d06b974f144a0049289a3cb5c" + "sourceCommit": "be6f2a5046ee6d8498e259118610efdf0f5889e5" }, "functions": [ { diff --git a/src/frontend/src/data/ts-modules/CommunityToolkit.Aspire.Hosting.Kind.13.4.1-beta.706.json b/src/frontend/src/data/ts-modules/CommunityToolkit.Aspire.Hosting.Kind.13.4.1-beta.701.json similarity index 99% rename from src/frontend/src/data/ts-modules/CommunityToolkit.Aspire.Hosting.Kind.13.4.1-beta.706.json rename to src/frontend/src/data/ts-modules/CommunityToolkit.Aspire.Hosting.Kind.13.4.1-beta.701.json index 489712e1c..8a7188f99 100644 --- a/src/frontend/src/data/ts-modules/CommunityToolkit.Aspire.Hosting.Kind.13.4.1-beta.706.json +++ b/src/frontend/src/data/ts-modules/CommunityToolkit.Aspire.Hosting.Kind.13.4.1-beta.701.json @@ -1,10 +1,10 @@ { "package": { "name": "CommunityToolkit.Aspire.Hosting.Kind", - "version": "13.4.1-beta.706", + "version": "13.4.1-beta.701", "language": "typescript", "sourceRepository": "https://github.com/CommunityToolkit/Aspire", - "sourceCommit": "d479e13473b1d29d06b974f144a0049289a3cb5c" + "sourceCommit": "be6f2a5046ee6d8498e259118610efdf0f5889e5" }, "functions": [ { diff --git a/src/frontend/src/data/ts-modules/CommunityToolkit.Aspire.Hosting.Listmonk.13.4.1-beta.706.json b/src/frontend/src/data/ts-modules/CommunityToolkit.Aspire.Hosting.Listmonk.13.4.1-beta.701.json similarity index 99% rename from src/frontend/src/data/ts-modules/CommunityToolkit.Aspire.Hosting.Listmonk.13.4.1-beta.706.json rename to src/frontend/src/data/ts-modules/CommunityToolkit.Aspire.Hosting.Listmonk.13.4.1-beta.701.json index 54484ab55..ef0f8658f 100644 --- a/src/frontend/src/data/ts-modules/CommunityToolkit.Aspire.Hosting.Listmonk.13.4.1-beta.706.json +++ b/src/frontend/src/data/ts-modules/CommunityToolkit.Aspire.Hosting.Listmonk.13.4.1-beta.701.json @@ -1,10 +1,10 @@ { "package": { "name": "CommunityToolkit.Aspire.Hosting.Listmonk", - "version": "13.4.1-beta.706", + "version": "13.4.1-beta.701", "language": "typescript", "sourceRepository": "https://github.com/CommunityToolkit/Aspire", - "sourceCommit": "d479e13473b1d29d06b974f144a0049289a3cb5c" + "sourceCommit": "be6f2a5046ee6d8498e259118610efdf0f5889e5" }, "functions": [ { diff --git a/src/frontend/src/data/ts-modules/CommunityToolkit.Aspire.Hosting.Logto.13.4.1-beta.706.json b/src/frontend/src/data/ts-modules/CommunityToolkit.Aspire.Hosting.Logto.13.4.1-beta.701.json similarity index 99% rename from src/frontend/src/data/ts-modules/CommunityToolkit.Aspire.Hosting.Logto.13.4.1-beta.706.json rename to src/frontend/src/data/ts-modules/CommunityToolkit.Aspire.Hosting.Logto.13.4.1-beta.701.json index cce78528c..09af4c49c 100644 --- a/src/frontend/src/data/ts-modules/CommunityToolkit.Aspire.Hosting.Logto.13.4.1-beta.706.json +++ b/src/frontend/src/data/ts-modules/CommunityToolkit.Aspire.Hosting.Logto.13.4.1-beta.701.json @@ -1,10 +1,10 @@ { "package": { "name": "CommunityToolkit.Aspire.Hosting.Logto", - "version": "13.4.1-beta.706", + "version": "13.4.1-beta.701", "language": "typescript", "sourceRepository": "https://github.com/CommunityToolkit/Aspire", - "sourceCommit": "d479e13473b1d29d06b974f144a0049289a3cb5c" + "sourceCommit": "be6f2a5046ee6d8498e259118610efdf0f5889e5" }, "functions": [ { diff --git a/src/frontend/src/data/ts-modules/CommunityToolkit.Aspire.Hosting.RustFs.13.4.1-beta.706.json b/src/frontend/src/data/ts-modules/CommunityToolkit.Aspire.Hosting.RustFs.13.4.1-beta.701.json similarity index 99% rename from src/frontend/src/data/ts-modules/CommunityToolkit.Aspire.Hosting.RustFs.13.4.1-beta.706.json rename to src/frontend/src/data/ts-modules/CommunityToolkit.Aspire.Hosting.RustFs.13.4.1-beta.701.json index 0dc900d42..192bf6442 100644 --- a/src/frontend/src/data/ts-modules/CommunityToolkit.Aspire.Hosting.RustFs.13.4.1-beta.706.json +++ b/src/frontend/src/data/ts-modules/CommunityToolkit.Aspire.Hosting.RustFs.13.4.1-beta.701.json @@ -1,10 +1,10 @@ { "package": { "name": "CommunityToolkit.Aspire.Hosting.RustFs", - "version": "13.4.1-beta.706", + "version": "13.4.1-beta.701", "language": "typescript", "sourceRepository": "https://github.com/CommunityToolkit/Aspire", - "sourceCommit": "d479e13473b1d29d06b974f144a0049289a3cb5c" + "sourceCommit": "be6f2a5046ee6d8498e259118610efdf0f5889e5" }, "functions": [ { diff --git a/src/frontend/src/data/ts-modules/CommunityToolkit.Aspire.Hosting.SeaweedFS.13.4.1-beta.706.json b/src/frontend/src/data/ts-modules/CommunityToolkit.Aspire.Hosting.SeaweedFS.13.4.1-beta.701.json similarity index 99% rename from src/frontend/src/data/ts-modules/CommunityToolkit.Aspire.Hosting.SeaweedFS.13.4.1-beta.706.json rename to src/frontend/src/data/ts-modules/CommunityToolkit.Aspire.Hosting.SeaweedFS.13.4.1-beta.701.json index afaa377d0..2a7a88681 100644 --- a/src/frontend/src/data/ts-modules/CommunityToolkit.Aspire.Hosting.SeaweedFS.13.4.1-beta.706.json +++ b/src/frontend/src/data/ts-modules/CommunityToolkit.Aspire.Hosting.SeaweedFS.13.4.1-beta.701.json @@ -1,10 +1,10 @@ { "package": { "name": "CommunityToolkit.Aspire.Hosting.SeaweedFS", - "version": "13.4.1-beta.706", + "version": "13.4.1-beta.701", "language": "typescript", "sourceRepository": "https://github.com/CommunityToolkit/Aspire", - "sourceCommit": "d479e13473b1d29d06b974f144a0049289a3cb5c" + "sourceCommit": "be6f2a5046ee6d8498e259118610efdf0f5889e5" }, "functions": [ { diff --git a/src/frontend/src/data/ts-modules/CommunityToolkit.Aspire.Hosting.Squad.13.4.1-beta.706.json b/src/frontend/src/data/ts-modules/CommunityToolkit.Aspire.Hosting.Squad.13.4.1-beta.701.json similarity index 96% rename from src/frontend/src/data/ts-modules/CommunityToolkit.Aspire.Hosting.Squad.13.4.1-beta.706.json rename to src/frontend/src/data/ts-modules/CommunityToolkit.Aspire.Hosting.Squad.13.4.1-beta.701.json index 99b756947..4f5c25436 100644 --- a/src/frontend/src/data/ts-modules/CommunityToolkit.Aspire.Hosting.Squad.13.4.1-beta.706.json +++ b/src/frontend/src/data/ts-modules/CommunityToolkit.Aspire.Hosting.Squad.13.4.1-beta.701.json @@ -1,10 +1,10 @@ { "package": { "name": "CommunityToolkit.Aspire.Hosting.Squad", - "version": "13.4.1-beta.706", + "version": "13.4.1-beta.701", "language": "typescript", "sourceRepository": "https://github.com/CommunityToolkit/Aspire", - "sourceCommit": "d479e13473b1d29d06b974f144a0049289a3cb5c" + "sourceCommit": "be6f2a5046ee6d8498e259118610efdf0f5889e5" }, "functions": [ { diff --git a/src/frontend/src/data/twoslash/aspire.d.ts b/src/frontend/src/data/twoslash/aspire.d.ts index aa971cf29..92478fb84 100644 --- a/src/frontend/src/data/twoslash/aspire.d.ts +++ b/src/frontend/src/data/twoslash/aspire.d.ts @@ -183,13 +183,28 @@ export declare const DistributedApplicationOperation: { * Enum Aspire.Hosting.InputType */ -export type InputType = "Text" | "SecretText" | "Choice" | "Boolean" | "Number"; +export type InputType = "Text" | "SecretText" | "Choice" | "Boolean" | "Number" | "File"; export declare const InputType: { readonly Text: "Text"; readonly SecretText: "SecretText"; readonly Choice: "Choice"; readonly Boolean: "Boolean"; readonly Number: "Number"; + readonly File: "File"; +}; + +/** + * Enum Aspire.Hosting.MessageIntent + */ + +export type MessageIntent = "None" | "Success" | "Warning" | "Error" | "Information" | "Confirmation"; +export declare const MessageIntent: { + readonly None: "None"; + readonly Success: "Success"; + readonly Warning: "Warning"; + readonly Error: "Error"; + readonly Information: "Information"; + readonly Confirmation: "Confirmation"; }; /** @@ -204,30 +219,38 @@ export declare const OtlpProtocol: { }; /** - * Enum Aspire.Hosting.AWS.Lambda.APIGatewayType + * Enum Aspire.Hosting.Publishing.ContainerImageDestination + */ + +export type ContainerImageDestination = "Registry" | "Archive"; +export declare const ContainerImageDestination: { + readonly Registry: "Registry"; + readonly Archive: "Archive"; +}; + +/** + * Enum Aspire.Hosting.Publishing.ContainerImageFormat */ -export type APIGatewayType = "Rest" | "HttpV1" | "HttpV2"; -export declare const APIGatewayType: { - readonly Rest: "Rest"; - readonly HttpV1: "HttpV1"; - readonly HttpV2: "HttpV2"; +export type ContainerImageFormat = "Docker" | "Oci"; +export declare const ContainerImageFormat: { + readonly Docker: "Docker"; + readonly Oci: "Oci"; }; /** - * Enum Aspire.Hosting.AWS.Lambda.Method + * Enum Aspire.Hosting.Publishing.ContainerTargetPlatform */ -export type Method = "Any" | "Get" | "Post" | "Put" | "Delete" | "Patch" | "Head" | "Options"; -export declare const Method: { - readonly Any: "Any"; - readonly Get: "Get"; - readonly Post: "Post"; - readonly Put: "Put"; - readonly Delete: "Delete"; - readonly Patch: "Patch"; - readonly Head: "Head"; - readonly Options: "Options"; +export type ContainerTargetPlatform = "LinuxAmd64" | "LinuxArm64" | "AllLinux" | "LinuxArm" | "Linux386" | "WindowsAmd64" | "WindowsArm64"; +export declare const ContainerTargetPlatform: { + readonly LinuxAmd64: "LinuxAmd64"; + readonly LinuxArm64: "LinuxArm64"; + readonly AllLinux: "AllLinux"; + readonly LinuxArm: "LinuxArm"; + readonly Linux386: "Linux386"; + readonly WindowsAmd64: "WindowsAmd64"; + readonly WindowsArm64: "WindowsArm64"; }; /** @@ -473,6 +496,18 @@ export declare const IngressPathType: { readonly ImplementationSpecific: "ImplementationSpecific"; }; +/** + * Enum Aspire.Hosting.Kubernetes.PersistentVolumeAccessMode + */ + +export type PersistentVolumeAccessMode = "ReadWriteOnce" | "ReadOnlyMany" | "ReadWriteMany" | "ReadWriteOncePod"; +export declare const PersistentVolumeAccessMode: { + readonly ReadWriteOnce: "ReadWriteOnce"; + readonly ReadOnlyMany: "ReadOnlyMany"; + readonly ReadWriteMany: "ReadWriteMany"; + readonly ReadWriteOncePod: "ReadWriteOncePod"; +}; + /** * Enum Aspire.Hosting.Python.EntrypointType */ @@ -574,6 +609,17 @@ export interface CommandOptions { iconVariant?: IconVariant; isHighlighted?: boolean; updateState?: callback; + progress?: CommandProgressOptions; +} + +/** + * DTO Aspire.Hosting.ApplicationModel.CommandProgressOptions + */ + +export interface CommandProgressOptions { + message?: string; + title?: string; + hideCancelButton?: boolean; } /** @@ -619,6 +665,7 @@ export interface GenerateParameterDefault { */ export interface HttpCommandExportOptions { + commandOptions?: CommandOptions; description?: string; confirmationMessage?: string; iconName?: string; @@ -627,9 +674,21 @@ export interface HttpCommandExportOptions { commandName?: string; endpointName?: string; methodName?: string; + prepareRequest?: callback; resultMode?: HttpCommandResultMode; } +/** + * DTO Aspire.Hosting.ApplicationModel.HttpCommandRequestExportData + */ + +export interface HttpCommandRequestExportData { + methodName?: string; + headers?: Dict; + content?: string; + contentType?: string; +} + /** * DTO Aspire.Hosting.ApplicationModel.HttpsCertificateExecutionConfigurationContext */ @@ -637,6 +696,7 @@ export interface HttpCommandExportOptions { export interface HttpsCertificateExecutionConfigurationContext { certificatePath?: ReferenceExpression; keyPath?: ReferenceExpression; + certificateWithKeyPath?: ReferenceExpression; pfxPath?: ReferenceExpression; } @@ -652,6 +712,7 @@ export interface ProcessCommandExportOptions { inheritEnvironmentVariables?: boolean; standardInputContent?: string; killEntireProcessTree?: boolean; + createProcessSpec?: callback; commandOptions?: CommandOptions; maxOutputLineCount?: number; displayImmediately?: boolean; @@ -715,6 +776,15 @@ export interface AddContainerOptions { tag?: string; } +/** + * DTO Aspire.Hosting.Ats.BoolInteractionResult + */ + +export interface BoolInteractionResult { + canceled?: boolean; + value?: boolean; +} + /** * DTO Aspire.Hosting.Ats.CertificateTrustExecutionConfigurationExportData */ @@ -725,6 +795,16 @@ export interface CertificateTrustExecutionConfigurationExportData { customBundlePaths?: string[]; } +/** + * DTO Aspire.Hosting.Ats.ContainerFilesOptions + */ + +export interface ContainerFilesOptions { + defaultOwner?: number; + defaultGroup?: number; + umask?: number; +} + /** * DTO Aspire.Hosting.Ats.CreateBuilderOptions */ @@ -740,6 +820,44 @@ export interface CreateBuilderOptions { enableResourceLogging?: boolean; } +/** + * DTO Aspire.Hosting.Ats.CreateInteractionInputOptions + */ + +export interface CreateInteractionInputOptions { + label?: string; + description?: string; + enableDescriptionMarkdown?: boolean; + required?: boolean; + placeholder?: string; + value?: string; + allowCustomChoice?: boolean; + disabled?: boolean; + maxLength?: number; + maxFileSize?: number; + allowMultipleFiles?: boolean; + fileFilter?: string; +} + +/** + * DTO Aspire.Hosting.Ats.DynamicLoadingOptions + */ + +export interface DynamicLoadingOptions { + alwaysLoadOnStart?: boolean; + dependsOnInputs?: string[]; +} + +/** + * DTO Aspire.Hosting.Ats.HealthCheckResult + */ + +export interface HealthCheckResult { + status?: HealthStatus; + description?: string; + data?: Dict; +} + /** * DTO Aspire.Hosting.Ats.HttpsCertificateExecutionConfigurationExportData */ @@ -750,6 +868,7 @@ export interface HttpsCertificateExecutionConfigurationExportData { keyPathExpression?: string; pfxPathExpression?: string; isKeyPathReferenced?: boolean; + isCertificateWithKeyPathReferenced?: boolean; isPfxPathReferenced?: boolean; password?: string; } @@ -764,6 +883,75 @@ export interface HttpsCertificateInfo { thumbprint?: string; } +/** + * DTO Aspire.Hosting.Ats.InputInteractionResult + */ + +export interface InputInteractionResult { + canceled?: boolean; + input?: InteractionInput; +} + +/** + * DTO Aspire.Hosting.Ats.InteractionChoiceOption + */ + +export interface InteractionChoiceOption { + value?: string; + label?: string; +} + +/** + * DTO Aspire.Hosting.Ats.InteractionInputsDialogOptions + */ + +export interface InteractionInputsDialogOptions { + primaryButtonText?: string; + secondaryButtonText?: string; + showSecondaryButton?: boolean; + showDismiss?: boolean; + enableMessageMarkdown?: boolean; + validationCallback?: callback; +} + +/** + * DTO Aspire.Hosting.Ats.InteractionMessageBoxOptions + */ + +export interface InteractionMessageBoxOptions { + primaryButtonText?: string; + secondaryButtonText?: string; + showSecondaryButton?: boolean; + showDismiss?: boolean; + enableMessageMarkdown?: boolean; + intent?: MessageIntent; +} + +/** + * DTO Aspire.Hosting.Ats.InteractionNotificationOptions + */ + +export interface InteractionNotificationOptions { + primaryButtonText?: string; + secondaryButtonText?: string; + showSecondaryButton?: boolean; + showDismiss?: boolean; + enableMessageMarkdown?: boolean; + intent?: MessageIntent; + linkText?: string; + linkUrl?: string; +} + +/** + * DTO Aspire.Hosting.Ats.InteractionProgressOptions + */ + +export interface InteractionProgressOptions { + primaryButtonText?: string; + enableMessageMarkdown?: boolean; + work?: callback; +} + /** * DTO Aspire.Hosting.Ats.ParameterCustomInputOptions */ @@ -817,82 +1005,22 @@ export interface InteractionInput { inputType?: InputType; required?: boolean; options?: KeyValuePair[]; - dynamicLoading?: InputLoadOptions; value?: string; placeholder?: string; allowCustomChoice?: boolean; disabled?: boolean; maxLength?: number; + allowMultipleFiles?: boolean; + fileFilter?: string; + maxFileSize?: number; } /** - * DTO Aspire.Hosting.AWS.DynamoDB.DynamoDBLocalOptions - */ - -export interface DynamoDBLocalOptions { - registry?: string; - image?: string; - tag?: string; - sharedDb?: boolean; - inMemory?: boolean; - localStorageDirectory?: string; - disableDynamoDBLocalTelemetry?: boolean; - delayTransientStatuses?: boolean; - port?: number; -} - -/** - * DTO Aspire.Hosting.AWS.Lambda.APIGatewayEmulatorOptions - */ - -export interface APIGatewayEmulatorOptions { - httpPort?: number; - httpsPort?: number; - disableHttpsEndpoint?: boolean; -} - -/** - * DTO Aspire.Hosting.AWS.Lambda.DynamoDBStreamsEventSourceOptions - */ - -export interface DynamoDBStreamsEventSourceOptions { - resourceName?: string; - batchSize?: number; - pollingIntervalMs?: number; -} - -/** - * DTO Aspire.Hosting.AWS.Lambda.LambdaEmulatorOptions - */ - -export interface LambdaEmulatorOptions { - disableAutoInstall?: boolean; - overrideMinimumInstallVersion?: string; - allowDowngrade?: boolean; - httpPort?: number; - httpsPort?: number; - configStoragePath?: string; - disableHttpsEndpoint?: boolean; -} - -/** - * DTO Aspire.Hosting.AWS.Lambda.LambdaFunctionPolyglotOptions + * DTO Aspire.Hosting.RunConfiguration */ -export interface LambdaFunctionPolyglotOptions { - logFormat?: string; - applicationLogLevel?: string; -} - -/** - * DTO Aspire.Hosting.AWS.Lambda.SQSEventSourceOptions - */ - -export interface SQSEventSourceOptions { - resourceName?: string; - batchSize?: number; - disableMessageDelete?: boolean; - visibilityTimeout?: number; +export interface RunConfiguration { + watchEnabled?: boolean; } /** @@ -1004,6 +1132,19 @@ export interface HostedAgentProtocolVersion { version?: string; } +/** + * DTO Aspire.Hosting.Go.DelveServerOptions + */ + +export interface DelveServerOptions { + port?: number; + acceptMultiClient?: boolean; + onlySameUser?: boolean; + continueOnStart?: boolean; + log?: boolean; + logOutput?: string; +} + /** * DTO Aspire.Hosting.Yarp.YarpActiveHealthCheckConfig */ @@ -1241,6 +1382,152 @@ export interface ConnectionStringAvailableEvent extends IDistributedApplicationE services: PropertyAccessor; } +/** + * Handle Aspire.Hosting.ApplicationModel.ContainerBuildOptionsCallbackContext + */ + +export interface ContainerBuildOptionsCallbackContext { + /** + * Gets the cancellation token. + */ + + cancellationToken: PropertyAccessor; + /** + * Gets or sets the destination for the container image. + */ + + destination: PropertyAccessor; + /** + * Gets the distributed application execution context. + */ + + executionContext: PropertyAccessor; + /** + * Gets or sets the container image format. + */ + + imageFormat: PropertyAccessor; + /** + * Gets or sets the local image name for the built container. + */ + + localImageName: PropertyAccessor; + /** + * Gets or sets the local image tag for the built container. + */ + + localImageTag: PropertyAccessor; + /** + * Gets the logger instance. + */ + + logger: PropertyAccessor; + /** + * Gets or sets the output path for the container archive. + */ + + outputPath: PropertyAccessor; + /** + * Gets the resource being built. + */ + + resource: PropertyAccessor; + /** + * Gets the service provider. + */ + + services: PropertyAccessor; + /** + * Gets or sets the destination for the container image. + */ + + setDestination(value: ContainerImageDestination): ContainerBuildOptionsCallbackContext; + /** + * Gets or sets the container image format. + */ + + setImageFormat(value: ContainerImageFormat): ContainerBuildOptionsCallbackContext; + /** + * Gets or sets the local image name for the built container. + */ + + setLocalImageName(value: string): ContainerBuildOptionsCallbackContext; + /** + * Gets or sets the local image tag for the built container. + */ + + setLocalImageTag(value: string): ContainerBuildOptionsCallbackContext; + /** + * Gets or sets the output path for the container archive. + */ + + setOutputPath(value: string): ContainerBuildOptionsCallbackContext; + /** + * Gets or sets the target platform for the container. + */ + + setTargetPlatform(value: ContainerTargetPlatform): ContainerBuildOptionsCallbackContext; + /** + * Gets or sets the target platform for the container. + */ + + targetPlatform: PropertyAccessor; +} + +/** + * Handle Aspire.Hosting.ApplicationModel.ContainerFileSystemCallbackContext + */ + +export interface ContainerFileSystemCallbackContext { + /** + * The app model resource the callback is associated with. + */ + + model: PropertyAccessor; + /** + * A `IServiceProvider` that can be used to resolve services in the callback. + */ + + services: PropertyAccessor; + /** + * Creates a PEM container certificate file entry with the OpenSSL subject-hash symlink. + */ + + createCertificateFile(name: string, options?: { contents?: string; sourcePath?: string; owner?: number; group?: number; mode?: number; continueOnError?: boolean }): ContainerFileSystemItem; + /** + * Creates a PEM container certificate file entry with the OpenSSL subject-hash symlink. + */ + + createCertificateFile(name: string, contents?: string, sourcePath?: string, owner?: number, group?: number, mode?: number, continueOnError?: boolean): ContainerFileSystemItem; + /** + * Creates a container directory entry containing the specified child entries. + */ + + createDirectory(name: string, entries: ContainerFileSystemItem[], options?: { owner?: number; group?: number; mode?: number }): ContainerFileSystemItem; + /** + * Creates a container directory entry containing the specified child entries. + */ + + createDirectory(name: string, entries: ContainerFileSystemItem[], owner?: number, group?: number, mode?: number): ContainerFileSystemItem; + /** + * Creates a container file entry with inline contents or a host source path. + */ + + createFile(name: string, options?: { contents?: string; sourcePath?: string; owner?: number; group?: number; mode?: number; continueOnError?: boolean }): ContainerFileSystemItem; + /** + * Creates a container file entry with inline contents or a host source path. + */ + + createFile(name: string, contents?: string, sourcePath?: string, owner?: number, group?: number, mode?: number, continueOnError?: boolean): ContainerFileSystemItem; +} + +/** + * Handle Aspire.Hosting.ApplicationModel.ContainerFileSystemItem + */ + +export interface ContainerFileSystemItem { +} + /** * Handle Aspire.Hosting.ApplicationModel.ContainerImagePushOptions */ @@ -1403,6 +1690,16 @@ export interface ContainerResource extends IComputeResource, IResource, IResourc */ withContainerCertificatePaths(customCertificatesDestination?: string, defaultCertificateBundlePaths?: string[], defaultCertificateDirectoryPaths?: string[]): this; + /** + * Creates or updates files and folders in a container by copying them from a source path on the host. + */ + + withContainerFiles(destinationPath: string, sourcePath: string, options?: ContainerFilesOptions): this; + /** + * Creates or updates files and/or folders at the destination path in the container using entries produced by a callback. + */ + + withContainerFilesCallback(destinationPath: string, callback: (arg1: ContainerFileSystemCallbackContext, arg2: cancellationToken) => Promise, options?: ContainerFilesOptions): this; /** * Overrides the default container name for this resource. By default Aspire generates a unique container name based on the resource name and a random postfix (or a postfix based on a hash of the AppHost project path for persistent container resources). This method allows you to override that behavior with a custom name, but could lead to naming conflicts if the specified name is not unique. */ @@ -2026,6 +2323,117 @@ export interface ExecuteCommandContext { */ resourceName: PropertyAccessor; + /** + * The service provider. + */ + + services: PropertyAccessor; +} + +/** + * Handle Aspire.Hosting.ApplicationModel.HttpCommandPrepareRequestContext + */ + +export interface HttpCommandPrepareRequestContext { + /** + * Gets the invocation arguments supplied by the client when the command is executed. + */ + + arguments: PropertyAccessor; + /** + * The cancellation token. + */ + + cancellationToken: PropertyAccessor; + /** + * The endpoint the request is targeting. + */ + + endpoint: PropertyAccessor; + /** + * The name of the resource the command was configured on. + */ + + resourceName: PropertyAccessor; +} + +/** + * Handle Aspire.Hosting.ApplicationModel.HttpsCertificateConfigurationCallbackAnnotationContext + */ + +export interface HttpsCertificateConfigurationCallbackAnnotationContext { + /** + * Gets the editor used to manipulate the command-line arguments in polyglot callbacks. + */ + + arguments: PropertyAccessor; + /** + * Gets the `CancellationToken` that can be used to cancel the operation. + */ + + cancellationToken: PropertyAccessor; + /** + * A value provider that will resolve to a path to the certificate file. + */ + + certificatePath: PropertyAccessor; + /** + * A value provider that will resolve to a path to the certificate and key concatenated together in PEM format. + */ + + certificateWithKeyPath: PropertyAccessor; + /** + * Gets the editor used to set environment variables in polyglot callbacks. + */ + + environment: PropertyAccessor; + /** + * Gets the `DistributedApplicationExecutionContext` for this session. + */ + + executionContext: PropertyAccessor; + /** + * A value provider that will resolve to a path to the private key for the certificate. + */ + + keyPath: PropertyAccessor; + /** + * A value provider that will resolve to a path to a PFX file for the key pair. + */ + + pfxPath: PropertyAccessor; + /** + * Gets the resource to which the annotation is applied. + */ + + resource: PropertyAccessor; +} + +/** + * Handle Aspire.Hosting.ApplicationModel.HttpsEndpointUpdateCallbackContext + */ + +export interface HttpsEndpointUpdateCallbackContext { + /** + * Gets the `CancellationToken` for the operation. + */ + + cancellationToken: PropertyAccessor; + /** + * Gets the `DistributedApplicationModel` instance. + */ + + model: PropertyAccessor; + /** + * Gets the `IResource` that is being configured for HTTPS. + */ + + resource: PropertyAccessor; + /** + * Gets the `IServiceProvider` instance from the application. + */ + + services: PropertyAccessor; } /** @@ -2185,6 +2593,11 @@ export interface IResource { */ onResourceStopped(callback: (arg: ResourceStoppedEvent) => Promise): this; + /** + * Subscribes to the `BeforeStartEvent` and invokes the specified callback when an HTTPS certificate is determined to be available for the resource. This is used to conditionally update endpoint URI schemes or perform other HTTPS-related configuration at startup. + */ + + subscribeHttpsEndpointsUpdate(callback: (obj: HttpsEndpointUpdateCallbackContext) => Promise): IResource; /** * Sets a child relationship */ @@ -2200,6 +2613,11 @@ export interface IResource { */ withCommand(name: string, displayName: string, executeCommand: (arg: ExecuteCommandContext) => Promise, commandOptions?: CommandOptions): this; + /** + * Configures container build options for a compute resource using an async callback. + */ + + withContainerBuildOptions(callback: (arg: ContainerBuildOptionsCallbackContext) => Promise): this; /** * Configures the resource to use the specified container registry for container image operations. */ @@ -2310,11 +2728,26 @@ export interface IResource { */ withRequiredCommand(command: string, helpLink?: string): this; + /** + * Declares that a resource requires a specific command/executable to be available on the local machine PATH before it can start, with custom validation logic. + */ + + withRequiredCommandValidation(command: string, validationCallback: (arg: RequiredCommandValidationContext) => Promise, options?: { helpLink?: string }): this; + /** + * Declares that a resource requires a specific command/executable to be available on the local machine PATH before it can start, with custom validation logic. + */ + + withRequiredCommandValidation(command: string, validationCallback: (arg: RequiredCommandValidationContext) => Promise, helpLink?: string): this; /** * Configures a resource to use a session lifetime. */ withSessionLifetime(): this; + /** + * Adds an interactive terminal session to a resource using the default terminal options. + */ + + withTerminal(): this; /** * Adds or modifies displayed URLs */ @@ -2528,6 +2961,11 @@ export interface IResourceWithEnvironment { */ withEnvironmentCallback(callback: (arg: EnvironmentCallbackContext) => Promise): this; + /** + * Adds a callback that allows configuring the resource to use a specific HTTPS/TLS certificate key pair for server authentication. + */ + + withHttpsCertificateConfiguration(callback: (arg: HttpsCertificateConfigurationCallbackAnnotationContext) => Promise): this; /** * Indicates that a resource should use the developer certificate key pair for HTTPS endpoints at run time. Currently this indicates use of the ASP.NET Core developer certificate. The developer certificate will only be used when running in local development scenarios; in publish mode resources will use their default certificate configuration. */ @@ -2668,6 +3106,11 @@ export interface ProjectResource extends IComputeResource, IContainerFilesDestin */ publishAsDockerFile(configure?: (obj: ContainerResource) => Promise): this; + /** + * Includes only the specified project endpoint names in environment-variable injection. + */ + + withEndpointsInEnvironment(endpointNames: string[]): this; /** * Configures how many replicas of the project should be created for the project. */ @@ -2721,6 +3164,55 @@ export interface ReferenceExpressionBuilder { isEmpty: PropertyAccessor; } +/** + * Handle Aspire.Hosting.ApplicationModel.RequiredCommandValidationContext + */ + +export interface RequiredCommandValidationContext { + /** + * Gets a cancellation token that can be used to cancel the validation. + */ + + cancellationToken: PropertyAccessor; + /** + * Creates a failed validation result with the specified message. + */ + + failure(validationMessage: string): RequiredCommandValidationResult; + /** + * Gets the resolved full path to the command executable. + */ + + resolvedPath: PropertyAccessor; + /** + * Gets the service provider for accessing application services. + */ + + services: PropertyAccessor; + /** + * Creates a successful validation result. + */ + + success(): RequiredCommandValidationResult; +} + +/** + * Handle Aspire.Hosting.ApplicationModel.RequiredCommandValidationResult + */ + +export interface RequiredCommandValidationResult { + /** + * Gets a value indicating whether the command validation succeeded. + */ + + isValid: PropertyAccessor; + /** + * Gets an optional validation message describing why validation failed. + */ + + validationMessage: PropertyAccessor; +} + /** * Handle Aspire.Hosting.ApplicationModel.ResourceCommandService */ @@ -2912,6 +3404,11 @@ export interface UpdateCommandStateContext { */ resourceSnapshot: PropertyAccessor; + /** + * The service provider. + */ + + services: PropertyAccessor; } /** @@ -2951,6 +3448,84 @@ export interface EventingSubscriberRegistrationContext { onBeforeStart(callback: (arg: BeforeStartEvent) => Promise): DistributedApplicationEventSubscription; } +/** + * Handle Aspire.Hosting.Ats.InputsInteractionResult + */ + +export interface InputsInteractionResult { + /** + * Gets a value indicating whether the interaction was canceled by the user. + */ + + canceled: PropertyAccessor; + /** + * Gets the inputs returned from the interaction. Empty when `Canceled` is `true`. + */ + + inputs: PropertyAccessor; +} + +/** + * Handle Aspire.Hosting.Ats.InteractionInputBuilder + */ + +export interface InteractionInputBuilder { + /** + * Sets the choice options for the input. + */ + + withChoiceOptions(choices: InteractionChoiceOption[]): InteractionInputBuilder; + /** + * Attaches a callback that dynamically loads or updates the input after the prompt starts. + */ + + withDynamicLoading(callback: (arg: InteractionInputLoadContext) => Promise, options?: DynamicLoadingOptions): InteractionInputBuilder; + /** + * Sets the value of the input. + */ + + withValue(value: string): InteractionInputBuilder; +} + +/** + * Handle Aspire.Hosting.Ats.InteractionInputLoadContext + */ + +export interface InteractionInputLoadContext { + /** + * Gets a handle to the input that is loading. Mutate the input through this handle. + */ + + input(): InteractionLoadingInput; + /** + * Gets all inputs in the prompt, including the one currently loading. + */ + + inputs: PropertyAccessor; +} + +/** + * Handle Aspire.Hosting.Ats.InteractionLoadingInput + */ + +export interface InteractionLoadingInput { + /** + * Gets the name of the input. + */ + + getName(): string; + /** + * Sets the choice options for the input. + */ + + setChoiceOptions(choices: InteractionChoiceOption[]): void; + /** + * Sets the value of the input. + */ + + setValue(value: string): void; +} + /** * Handle Aspire.Hosting.DistributedApplication */ @@ -2988,11 +3563,21 @@ export interface DistributedApplicationExecutionContext { */ publisherName: PropertyAccessor; + /** + * Describes how the AppHost is being run. Only meaningful when `Operation` is `Run`; otherwise every aspect holds its default value. + */ + + runConfiguration: PropertyAccessor; /** * The `IServiceProvider` for the AppHost. */ serviceProvider: PropertyAccessor; + /** + * The `IServiceProvider` for the AppHost. + */ + + services: PropertyAccessor; /** * The name of the publisher that is being used if `Operation` is set to `Publish`. */ @@ -3149,6 +3734,11 @@ export interface IDistributedApplicationBuilder { */ addExternalService(name: string, url: string | ParameterResource): ExternalServiceResource; + /** + * Adds a custom health check callback to the distributed-application builder. + */ + + addHealthCheck(name: string, check: () => Promise): void; /** * Adds a parameter resource */ @@ -3223,37 +3813,109 @@ export interface IDistributedApplicationBuilder { * Gets the deployment pipeline for this distributed application. */ - pipeline: PropertyAccessor; + pipeline: PropertyAccessor; + /** + * Gets the service for managing user secrets. + */ + + userSecretsManager: PropertyAccessor; + /** + * Subscribes to the AfterPublish event, which fires after the application is published. + */ + + subscribeAfterPublish(callback: (arg: AfterPublishEvent) => Promise): DistributedApplicationEventSubscription; + /** + * Subscribes to the AfterResourcesCreated event, which fires after all resources are created. + */ + + subscribeAfterResourcesCreated(callback: (arg: AfterResourcesCreatedEvent) => Promise): DistributedApplicationEventSubscription; + /** + * Subscribes to the BeforePublish event, which fires before the application is published. + */ + + subscribeBeforePublish(callback: (arg: BeforePublishEvent) => Promise): DistributedApplicationEventSubscription; + /** + * Subscribes to the BeforeStart event, which fires before the application starts. + */ + + subscribeBeforeStart(callback: (arg: BeforeStartEvent) => Promise): DistributedApplicationEventSubscription; + /** + * Attempts to add an ATS-friendly eventing subscriber callback to the distributed-application builder. + */ + + tryAddEventingSubscriber(subscribe: (arg: EventingSubscriberRegistrationContext) => Promise): void; +} + +/** + * Handle Aspire.Hosting.IInteractionService + */ + +export interface IInteractionService { + /** + * Creates a boolean (checkbox) input. + */ + + createBooleanInput(name: string, options?: CreateInteractionInputOptions): InteractionInputBuilder; + /** + * Creates a choice input that selects from a list of options. + */ + + createChoiceInput(name: string, choices?: InteractionChoiceOption[], options?: CreateInteractionInputOptions): InteractionInputBuilder; + /** + * Creates a file input. + */ + + createFileInput(name: string, options?: CreateInteractionInputOptions): InteractionInputBuilder; + /** + * Creates a numeric input. + */ + + createNumberInput(name: string, options?: CreateInteractionInputOptions): InteractionInputBuilder; + /** + * Creates a secret (masked) text input. + */ + + createSecretInput(name: string, options?: CreateInteractionInputOptions): InteractionInputBuilder; + /** + * Creates a single-line text input. + */ + + createTextInput(name: string, options?: CreateInteractionInputOptions): InteractionInputBuilder; + /** + * Gets a value indicating whether the interaction service is available to prompt the user. + */ + + isAvailable(): boolean; /** - * Gets the service for managing user secrets. + * Prompts the user for confirmation with an OK/Cancel dialog. */ - userSecretsManager: PropertyAccessor; + promptConfirmation(title: string, message: string, options?: InteractionMessageBoxOptions, cancellationToken?: cancellationToken): BoolInteractionResult; /** - * Subscribes to the AfterPublish event, which fires after the application is published. + * Prompts the user for a single input. */ - subscribeAfterPublish(callback: (arg: AfterPublishEvent) => Promise): DistributedApplicationEventSubscription; + promptInput(title: string, message: string, input: InteractionInputBuilder, options?: InteractionInputsDialogOptions, cancellationToken?: cancellationToken): InputInteractionResult; /** - * Subscribes to the AfterResourcesCreated event, which fires after all resources are created. + * Prompts the user for multiple inputs. */ - subscribeAfterResourcesCreated(callback: (arg: AfterResourcesCreatedEvent) => Promise): DistributedApplicationEventSubscription; + promptInputs(title: string, message: string, inputs: InteractionInputBuilder[], options?: InteractionInputsDialogOptions, cancellationToken?: cancellationToken): InputsInteractionResult; /** - * Subscribes to the BeforePublish event, which fires before the application is published. + * Prompts the user with a message box dialog. */ - subscribeBeforePublish(callback: (arg: BeforePublishEvent) => Promise): DistributedApplicationEventSubscription; + promptMessageBox(title: string, message: string, options?: InteractionMessageBoxOptions, cancellationToken?: cancellationToken): BoolInteractionResult; /** - * Subscribes to the BeforeStart event, which fires before the application starts. + * Prompts the user with a notification. */ - subscribeBeforeStart(callback: (arg: BeforeStartEvent) => Promise): DistributedApplicationEventSubscription; + promptNotification(title: string, message: string, options?: InteractionNotificationOptions, cancellationToken?: cancellationToken): BoolInteractionResult; /** - * Attempts to add an ATS-friendly eventing subscriber callback to the distributed-application builder. + * Displays a progress dialog with an indeterminate progress indicator. */ - tryAddEventingSubscriber(subscribe: (arg: EventingSubscriberRegistrationContext) => Promise): void; + promptProgress(message: string, title?: string, options?: InteractionProgressOptions, cancellationToken?: cancellationToken): BoolInteractionResult; } /** @@ -3276,6 +3938,11 @@ export interface InputsDialogValidationContext { */ inputs: PropertyAccessor; + /** + * Gets the service provider for resolving services during validation. + */ + + services: PropertyAccessor; } /** @@ -3644,6 +4311,18 @@ export interface PipelineSummary { add(key: string, value: string): void; } +/** + * Handle Aspire.Hosting.ProgressContext + */ + +export interface ProgressContext { + /** + * Gets the `CancellationToken` that is triggered when the user clicks the cancel button or the operation is externally canceled. + */ + + cancellationToken: PropertyAccessor; +} + /** * Handle Aspire.Hosting.ProjectResourceOptions */ @@ -3715,53 +4394,6 @@ export interface BeforePublishEvent extends IDistributedApplicationEvent { services: PropertyAccessor; } -/** - * Handle Aspire.Hosting.AWS.DynamoDB.DynamoDBLocalResource - */ - -export interface DynamoDBLocalResource extends ContainerResource, IComputeResource, IResource, IResourceWithArgs, IResourceWithEndpoints, IResourceWithEnvironment, IResourceWithProbes, IResourceWithWaitSupport, IDynamoDBLocalResource { -} - -/** - * Handle Aspire.Hosting.AWS.IAWSSDKConfig - */ - -export interface IAWSSDKConfig { - - withProfile(profile: string): IAWSSDKConfig; - - withRegion(systemName: string): IAWSSDKConfig; - - withSdkValidation(sdkValidationEnabled: boolean): IAWSSDKConfig; -} - -/** - * Handle Aspire.Hosting.AWS.Lambda.APIGatewayEmulatorResource - */ - -export interface APIGatewayEmulatorResource extends ExecutableResource, IComputeResource, IResource, IResourceWithArgs, IResourceWithEndpoints, IResourceWithEnvironment, IResourceWithProbes, IResourceWithWaitSupport { - - withAPIGatewayLambdaReference(lambda: LambdaProjectResource, httpMethod: Method, path: string): this; -} - -/** - * Handle Aspire.Hosting.AWS.Lambda.LambdaEmulatorResource - */ - -export interface LambdaEmulatorResource extends ExecutableResource, IComputeResource, IResource, IResourceWithArgs, IResourceWithEndpoints, IResourceWithEnvironment, IResourceWithProbes, IResourceWithWaitSupport { -} - -/** - * Handle Aspire.Hosting.AWS.Lambda.LambdaProjectResource - */ - -export interface LambdaProjectResource extends ProjectResource, IComputeResource, IContainerFilesDestinationResource, IResource, IResourceWithArgs, IResourceWithEndpoints, IResourceWithEnvironment, IResourceWithProbes, IResourceWithWaitSupport, IResourceWithServiceDiscovery { - - withDynamoDBStreamsEventSource(tableName: string, options?: DynamoDBStreamsEventSourceOptions): this; - - withSQSEventSource(queueUrl: string, options?: SQSEventSourceOptions): this; -} - /** * Handle Aspire.Hosting.ApplicationModel.IAzureResource */ @@ -3772,6 +4404,21 @@ export interface IAzureResource { */ asExisting(name: string | ParameterResource, resourceGroup?: string | ParameterResource): IAzureResource; + /** + * Marks the resource as an existing resource in a specific resource group and subscription in both run and publish modes. + */ + + asExistingInResourceGroup(name: string | ParameterResource, resourceGroup: string | ParameterResource, subscription: string | ParameterResource): IAzureResource; + /** + * Marks the subscription-scoped resource as an existing resource in both run and publish modes. + */ + + asExistingInSubscription(name: string | ParameterResource, subscription: string | ParameterResource): IAzureResource; + /** + * Marks the current-tenant-scoped resource as an existing resource in both run and publish modes. + */ + + asExistingInTenant(name: string | ParameterResource): IAzureResource; /** * Clears all default role assignments for the specified Azure resource. */ @@ -3802,11 +4449,41 @@ export interface IAzureResource { */ publishAsExisting(name: string | ParameterResource, resourceGroup?: string | ParameterResource): this; + /** + * Marks the resource as an existing resource in a specific resource group and subscription when the application is deployed. + */ + + publishAsExistingInResourceGroup(name: string | ParameterResource, resourceGroup: string | ParameterResource, subscription: string | ParameterResource): this; + /** + * Marks the subscription-scoped resource as an existing resource when the application is deployed. + */ + + publishAsExistingInSubscription(name: string | ParameterResource, subscription: string | ParameterResource): this; + /** + * Marks the current-tenant-scoped resource as an existing resource when the application is deployed. + */ + + publishAsExistingInTenant(name: string | ParameterResource): this; /** * Marks the resource as an existing resource when the application is running. */ runAsExisting(name: string | ParameterResource, resourceGroup?: string | ParameterResource): IAzureResource; + /** + * Marks the resource as an existing resource in a specific resource group and subscription when the application is running. + */ + + runAsExistingInResourceGroup(name: string | ParameterResource, resourceGroup: string | ParameterResource, subscription: string | ParameterResource): IAzureResource; + /** + * Marks the subscription-scoped resource as an existing resource when the application is running. + */ + + runAsExistingInSubscription(name: string | ParameterResource, subscription: string | ParameterResource): IAzureResource; + /** + * Marks the current-tenant-scoped resource as an existing resource when the application is running. + */ + + runAsExistingInTenant(name: string | ParameterResource): IAzureResource; } /** @@ -4001,13 +4678,18 @@ export interface AzureContainerAppEnvironmentResource extends AzureBicepResource */ withHttpsUpgrade(upgrade?: boolean): this; + /** + * Configures the container app environment to incorporate its resource name into the generated managed environment `name`, so that multiple environments in the same resource group get distinct names. + */ + + withUniqueResourceNaming(): this; } /** * Handle Aspire.Hosting.Azure.AzureAppServiceEnvironmentResource */ -export interface AzureAppServiceEnvironmentResource extends AzureBicepResource, AzureProvisioningResource, IAzureResource, IComputeEnvironmentResource, IContainerRegistry, IResource, IResourceWithParameters, IAzureComputeEnvironmentResource, IAzureContainerRegistry { +export interface AzureAppServiceEnvironmentResource extends AzureBicepResource, AzureProvisioningResource, IAzureResource, IComputeEnvironmentResource, IContainerRegistry, IResource, IResourceWithParameters, IAzureComputeEnvironmentResource, IAzureContainerRegistry, IAzureDelegatedSubnetResource { /** * Configures the Azure App Service environment to use the supplied `AzureUserAssignedIdentityResource` as the managed identity that App Service apps use to pull images from the configured container registry (the `AcrPull` identity), instead of having Aspire create a new identity and a new `AcrPull` role assignment. */ @@ -4193,12 +4875,12 @@ export interface AzureCosmosDBDatabaseResource extends IExpressionValue, IManife export interface AzureCosmosDBEmulatorResource extends ContainerResource, IComputeResource, IResource, IResourceWithArgs, IResourceWithEndpoints, IResourceWithEnvironment, IResourceWithProbes, IResourceWithWaitSupport { /** - * Configures the Azure Cosmos DB preview emulator to expose the Data Explorer endpoint. + * Configures the Azure Cosmos DB Linux-based (vNext) emulator to expose the Data Explorer endpoint. */ withDataExplorer(options?: { port?: number }): this; /** - * Configures the Azure Cosmos DB preview emulator to expose the Data Explorer endpoint. + * Configures the Azure Cosmos DB Linux-based (vNext) emulator to expose the Data Explorer endpoint. */ withDataExplorer(port?: number): this; @@ -4245,7 +4927,7 @@ export interface AzureCosmosDBResource extends AzureBicepResource, AzureProvisio runAsEmulator(configureContainer?: (obj: AzureCosmosDBEmulatorResource) => Promise): AzureCosmosDBResource; /** - * Configures the Azure Cosmos DB resource to run using the preview emulator + * Configures the Azure Cosmos DB resource to run using the Linux-based (vNext) emulator */ runAsPreviewEmulator(configureContainer?: (obj: AzureCosmosDBEmulatorResource) => Promise): AzureCosmosDBResource; @@ -4525,6 +5207,11 @@ export interface AzureKubernetesEnvironmentResource extends AzureBicepResource, */ addNodePool(name: string, vmSize?: string, minCount?: number, maxCount?: number): AksNodePoolResource; + /** + * Adds a Kubernetes PersistentVolumeClaim resource to an AKS environment + */ + + addPersistentVolume(name: string): KubernetesPersistentVolumeResource; /** * Configures the AKS environment to use a specific Azure Container Registry for image storage. When set, this replaces the auto-created default container registry. */ @@ -4745,6 +5432,16 @@ export interface AzureSubnetResource extends IResource, IResourceWithParent { */ withNetworkSecurityGroup(nsg: AzureNetworkSecurityGroupResource): this; + /** + * Delegates the subnet to the specified Azure service. + */ + + withServiceDelegation(serviceName: string, options?: { name?: string }): this; + /** + * Delegates the subnet to the specified Azure service. + */ + + withServiceDelegation(serviceName: string, name?: string): this; } /** @@ -6563,6 +7260,11 @@ export interface Service { */ setSecurityOpt(value: List): Service; + /** + * Gets or sets the size of the `/dev/shm` partition for the container. + */ + + setShmSize(value: string): Service; /** * Indicates whether standard input (stdin) should remain open and be attached to the service container, even if no terminal is connected. */ @@ -6613,6 +7315,11 @@ export interface Service { */ setWorkingDir(value: string): Service; + /** + * Gets or sets the size of the `/dev/shm` partition for the container. + */ + + shmSize: PropertyAccessor; /** * Indicates whether standard input (stdin) should remain open and be attached to the service container, even if no terminal is connected. */ @@ -6920,6 +7627,13 @@ export interface Volume { type: PropertyAccessor; } +/** + * Handle Aspire.Hosting.Dotnet.DotnetProjectResource + */ + +export interface DotnetProjectResource extends ExecutableResource, IComputeResource, IResource, IResourceWithArgs, IResourceWithEndpoints, IResourceWithEnvironment, IResourceWithProbes, IResourceWithWaitSupport, IResourceWithServiceDiscovery { +} + /** * Handle Aspire.Hosting.EntityFrameworkCore.EFMigrationResource */ @@ -7645,15 +8359,10 @@ export interface GoAppResource extends ExecutableResource, IComputeResource, ICo withAppArgs(args: any[]): this; /** - * Starts a headless Delve debug server so that any DAP-compatible client can attach remotely. The application is launched as `dlv --headless=true --listen=127.0.0.1: --api-version=2 debug .` instead of `go run .`. Delve must be available on the PATH. - */ - - withDelveServer(options?: { port?: number }): this; - /** - * Starts a headless Delve debug server so that any DAP-compatible client can attach remotely. The application is launched as `dlv --headless=true --listen=127.0.0.1: --api-version=2 debug .` instead of `go run .`. Delve must be available on the PATH. + * Starts a configurable headless Delve debug server so that DAP-compatible clients can attach remotely. The application is launched with `dlv debug` instead of `go run`. Delve must be available on the PATH. */ - withDelveServer(port?: number): this; + withDelveServer(options?: DelveServerOptions): this; /** * Configures private Go module authentication for publish-time Dockerfile generation. */ @@ -8130,6 +8839,11 @@ export interface KubernetesEnvironmentResource extends IComputeEnvironmentResour */ addNodePool(name: string): KubernetesNodePoolResource; + /** + * Adds a Kubernetes PersistentVolumeClaim resource + */ + + addPersistentVolume(name: string): KubernetesPersistentVolumeResource; /** * Configures the dashboard properties for this Kubernetes environment. */ @@ -8462,6 +9176,48 @@ export interface KubernetesManifestResource { export interface KubernetesNodePoolResource extends IResource, IResourceWithParent { } +/** + * Handle Aspire.Hosting.Kubernetes.KubernetesPersistentVolumeResource + */ + +export interface KubernetesPersistentVolumeResource extends IResource, IResourceWithParent { + /** + * Adds an access mode to a persistent volume + */ + + withAccessMode(accessMode: PersistentVolumeAccessMode): this; + /** + * Sets the requested storage capacity for a persistent volume + */ + + withCapacity(capacity: string): this; + /** + * Sets a parameterized storage capacity for a persistent volume + */ + + withCapacityParam(capacity: string | ParameterResource): this; + /** + * Sets the storage class for a persistent volume + */ + + withStorageClass(storageClassName: string): this; + /** + * Sets a parameterized storage class for a persistent volume + */ + + withStorageClassParam(storageClassName: string | ParameterResource): this; + /** + * Adds a Kubernetes metadata annotation to a persistent volume + */ + + withVolumeAnnotation(key: string, value: string): this; + /** + * Adds a parameterized Kubernetes metadata annotation to a persistent volume + */ + + withVolumeAnnotationParam(key: string, value: string | ParameterResource): this; +} + /** * Handle Aspire.Hosting.Kubernetes.KubernetesResource */ @@ -9723,6 +10479,28 @@ export interface RabbitMQServerResource extends ContainerResource, IComputeResou withManagementPlugin(port?: number): this; } +/** + * Handle Aspire.Hosting.Radius.RadiusEnvironmentResource + */ + +export interface RadiusEnvironmentResource extends IComputeEnvironmentResource, IResource { + /** + * Gets or sets the Kubernetes namespace for resource deployment. + */ + + namespace: PropertyAccessor; + /** + * Gets or sets the Kubernetes namespace for resource deployment. + */ + + setNamespace(value: string): RadiusEnvironmentResource; + /** + * Sets the Kubernetes namespace for the Radius environment. + */ + + withNamespace(kubernetesNamespace: string): this; +} + /** * Handle Aspire.Hosting.ApplicationModel.RedisResource */ @@ -9793,6 +10571,11 @@ export interface RedisResource extends ContainerResource, IComputeResource, IExp */ withHostPort(port: number | null): this; + /** + * Configures the Redis resource to use the specified Redis module by providing its path inside the container. + */ + + withModule(path: string): this; /** * Configures the password that the Redis resource is used. */ @@ -13078,16 +13861,6 @@ export interface K6Resource extends ContainerResource, IComputeResource, IResour // ---- target-type interfaces (resource/builder APIs) ---- // augments handle type IDistributedApplicationBuilder with extension methods export interface IDistributedApplicationBuilder { - - addAWSAPIGatewayEmulator(name: string, apiGatewayType: APIGatewayType, options?: APIGatewayEmulatorOptions): APIGatewayEmulatorResource; - - addAWSDynamoDBLocal(name: string, options?: DynamoDBLocalOptions): DynamoDBLocalResource; - - addAWSLambdaFunction(name: string, projectPath: string, lambdaHandler: string, options?: LambdaFunctionPolyglotOptions): LambdaProjectResource; - - addAWSLambdaServiceEmulator(options?: LambdaEmulatorOptions): LambdaEmulatorResource; - - addAWSSDKConfig(): IAWSSDKConfig; /** * Adds an Azure environment resource to the application model. */ @@ -13298,6 +14071,11 @@ export interface IDistributedApplicationBuilder { */ addDockerComposeEnvironment(name: string): DockerComposeEnvironmentResource; + /** + * Adds a C# application resource. + */ + + addDotnetProject(name: string, path: string, options?: ProjectResourceOptions): DotnetProjectResource; /** * Adds a Microsoft Foundry resource to the application model. */ @@ -13523,6 +14301,11 @@ export interface IDistributedApplicationBuilder { */ addRabbitMQ(name: string, userName?: string | ParameterResource, password?: string | ParameterResource, port?: number): RabbitMQServerResource; + /** + * Adds a Radius compute environment to the application model. + */ + + addRadiusEnvironment(name: string): RadiusEnvironmentResource; /** * Adds a Redis container to the application model. */ @@ -14199,14 +14982,6 @@ export interface ActiveMQServerResource { withDataVolume(name?: string, isReadOnly?: boolean): this; } -// augments handle type APIGatewayEmulatorResource with extension methods -export interface APIGatewayEmulatorResource { - - withAWSSDKConfigReference(awsSdkConfig: IAWSSDKConfig): this; - - withDynamoDBLocalReference(dynamoDBLocalResourceBuilder: DynamoDBLocalResource): this; -} - // augments handle type AzureAISearchToolResource with extension methods export interface AzureAISearchToolResource { /** @@ -14250,6 +15025,21 @@ export interface AzureBicepResource { */ asExisting(name: string | ParameterResource, resourceGroup?: string | ParameterResource): IAzureResource; + /** + * Marks the resource as an existing resource in a specific resource group and subscription in both run and publish modes. + */ + + asExistingInResourceGroup(name: string | ParameterResource, resourceGroup: string | ParameterResource, subscription: string | ParameterResource): IAzureResource; + /** + * Marks the subscription-scoped resource as an existing resource in both run and publish modes. + */ + + asExistingInSubscription(name: string | ParameterResource, subscription: string | ParameterResource): IAzureResource; + /** + * Marks the current-tenant-scoped resource as an existing resource in both run and publish modes. + */ + + asExistingInTenant(name: string | ParameterResource): IAzureResource; /** * Clears all default role assignments for the specified Azure resource. */ @@ -14280,11 +15070,41 @@ export interface AzureBicepResource { */ publishAsExisting(name: string | ParameterResource, resourceGroup?: string | ParameterResource): this; + /** + * Marks the resource as an existing resource in a specific resource group and subscription when the application is deployed. + */ + + publishAsExistingInResourceGroup(name: string | ParameterResource, resourceGroup: string | ParameterResource, subscription: string | ParameterResource): this; + /** + * Marks the subscription-scoped resource as an existing resource when the application is deployed. + */ + + publishAsExistingInSubscription(name: string | ParameterResource, subscription: string | ParameterResource): this; + /** + * Marks the current-tenant-scoped resource as an existing resource when the application is deployed. + */ + + publishAsExistingInTenant(name: string | ParameterResource): this; /** * Marks the resource as an existing resource when the application is running. */ runAsExisting(name: string | ParameterResource, resourceGroup?: string | ParameterResource): IAzureResource; + /** + * Marks the resource as an existing resource in a specific resource group and subscription when the application is running. + */ + + runAsExistingInResourceGroup(name: string | ParameterResource, resourceGroup: string | ParameterResource, subscription: string | ParameterResource): IAzureResource; + /** + * Marks the subscription-scoped resource as an existing resource when the application is running. + */ + + runAsExistingInSubscription(name: string | ParameterResource, subscription: string | ParameterResource): IAzureResource; + /** + * Marks the current-tenant-scoped resource as an existing resource when the application is running. + */ + + runAsExistingInTenant(name: string | ParameterResource): IAzureResource; /** * Assigns the specified roles to the given resource, granting it the necessary permissions on the target Azure App Configuration resource. This replaces the default role assignments for the resource. */ @@ -14792,6 +15612,21 @@ export interface AzureProvisioningResource { */ asExisting(name: string | ParameterResource, resourceGroup?: string | ParameterResource): IAzureResource; + /** + * Marks the resource as an existing resource in a specific resource group and subscription in both run and publish modes. + */ + + asExistingInResourceGroup(name: string | ParameterResource, resourceGroup: string | ParameterResource, subscription: string | ParameterResource): IAzureResource; + /** + * Marks the subscription-scoped resource as an existing resource in both run and publish modes. + */ + + asExistingInSubscription(name: string | ParameterResource, subscription: string | ParameterResource): IAzureResource; + /** + * Marks the current-tenant-scoped resource as an existing resource in both run and publish modes. + */ + + asExistingInTenant(name: string | ParameterResource): IAzureResource; /** * Clears all default role assignments for the specified Azure resource. */ @@ -14827,11 +15662,41 @@ export interface AzureProvisioningResource { */ publishAsExisting(name: string | ParameterResource, resourceGroup?: string | ParameterResource): this; + /** + * Marks the resource as an existing resource in a specific resource group and subscription when the application is deployed. + */ + + publishAsExistingInResourceGroup(name: string | ParameterResource, resourceGroup: string | ParameterResource, subscription: string | ParameterResource): this; + /** + * Marks the subscription-scoped resource as an existing resource when the application is deployed. + */ + + publishAsExistingInSubscription(name: string | ParameterResource, subscription: string | ParameterResource): this; + /** + * Marks the current-tenant-scoped resource as an existing resource when the application is deployed. + */ + + publishAsExistingInTenant(name: string | ParameterResource): this; /** * Marks the resource as an existing resource when the application is running. */ runAsExisting(name: string | ParameterResource, resourceGroup?: string | ParameterResource): IAzureResource; + /** + * Marks the resource as an existing resource in a specific resource group and subscription when the application is running. + */ + + runAsExistingInResourceGroup(name: string | ParameterResource, resourceGroup: string | ParameterResource, subscription: string | ParameterResource): IAzureResource; + /** + * Marks the subscription-scoped resource as an existing resource when the application is running. + */ + + runAsExistingInSubscription(name: string | ParameterResource, subscription: string | ParameterResource): IAzureResource; + /** + * Marks the current-tenant-scoped resource as an existing resource when the application is running. + */ + + runAsExistingInTenant(name: string | ParameterResource): IAzureResource; /** * Adds a Bicep parameter */ @@ -15156,6 +16021,21 @@ export interface AzureUserAssignedIdentityResource { */ asExisting(name: string | ParameterResource, resourceGroup?: string | ParameterResource): IAzureResource; + /** + * Marks the resource as an existing resource in a specific resource group and subscription in both run and publish modes. + */ + + asExistingInResourceGroup(name: string | ParameterResource, resourceGroup: string | ParameterResource, subscription: string | ParameterResource): IAzureResource; + /** + * Marks the subscription-scoped resource as an existing resource in both run and publish modes. + */ + + asExistingInSubscription(name: string | ParameterResource, subscription: string | ParameterResource): IAzureResource; + /** + * Marks the current-tenant-scoped resource as an existing resource in both run and publish modes. + */ + + asExistingInTenant(name: string | ParameterResource): IAzureResource; /** * Clears all default role assignments for the specified Azure resource. */ @@ -15196,11 +16076,41 @@ export interface AzureUserAssignedIdentityResource { */ publishAsExisting(name: string | ParameterResource, resourceGroup?: string | ParameterResource): this; + /** + * Marks the resource as an existing resource in a specific resource group and subscription when the application is deployed. + */ + + publishAsExistingInResourceGroup(name: string | ParameterResource, resourceGroup: string | ParameterResource, subscription: string | ParameterResource): this; + /** + * Marks the subscription-scoped resource as an existing resource when the application is deployed. + */ + + publishAsExistingInSubscription(name: string | ParameterResource, subscription: string | ParameterResource): this; + /** + * Marks the current-tenant-scoped resource as an existing resource when the application is deployed. + */ + + publishAsExistingInTenant(name: string | ParameterResource): this; /** * Marks the resource as an existing resource when the application is running. */ runAsExisting(name: string | ParameterResource, resourceGroup?: string | ParameterResource): IAzureResource; + /** + * Marks the resource as an existing resource in a specific resource group and subscription when the application is running. + */ + + runAsExistingInResourceGroup(name: string | ParameterResource, resourceGroup: string | ParameterResource, subscription: string | ParameterResource): IAzureResource; + /** + * Marks the subscription-scoped resource as an existing resource when the application is running. + */ + + runAsExistingInSubscription(name: string | ParameterResource, subscription: string | ParameterResource): IAzureResource; + /** + * Marks the current-tenant-scoped resource as an existing resource when the application is running. + */ + + runAsExistingInTenant(name: string | ParameterResource): IAzureResource; /** * Adds a Bicep parameter */ @@ -15548,6 +16458,11 @@ export interface ContainerRegistryResource { */ onResourceStopped(callback: (arg: ResourceStoppedEvent) => Promise): this; + /** + * Subscribes to the `BeforeStartEvent` and invokes the specified callback when an HTTPS certificate is determined to be available for the resource. This is used to conditionally update endpoint URI schemes or perform other HTTPS-related configuration at startup. + */ + + subscribeHttpsEndpointsUpdate(callback: (obj: HttpsEndpointUpdateCallbackContext) => Promise): IResource; /** * Sets a child relationship */ @@ -15563,6 +16478,11 @@ export interface ContainerRegistryResource { */ withCommand(name: string, displayName: string, executeCommand: (arg: ExecuteCommandContext) => Promise, commandOptions?: CommandOptions): this; + /** + * Configures container build options for a compute resource using an async callback. + */ + + withContainerBuildOptions(callback: (arg: ContainerBuildOptionsCallbackContext) => Promise): this; /** * Configures the resource to use the specified container registry for container image operations. */ @@ -15673,11 +16593,26 @@ export interface ContainerRegistryResource { */ withRequiredCommand(command: string, helpLink?: string): this; + /** + * Declares that a resource requires a specific command/executable to be available on the local machine PATH before it can start, with custom validation logic. + */ + + withRequiredCommandValidation(command: string, validationCallback: (arg: RequiredCommandValidationContext) => Promise, options?: { helpLink?: string }): this; + /** + * Declares that a resource requires a specific command/executable to be available on the local machine PATH before it can start, with custom validation logic. + */ + + withRequiredCommandValidation(command: string, validationCallback: (arg: RequiredCommandValidationContext) => Promise, helpLink?: string): this; /** * Configures a resource to use a session lifetime. */ withSessionLifetime(): this; + /** + * Adds an interactive terminal session to a resource using the default terminal options. + */ + + withTerminal(): this; /** * Adds or modifies displayed URLs */ @@ -15837,6 +16772,11 @@ export interface ContainerResource { */ onResourceStopped(callback: (arg: ResourceStoppedEvent) => Promise): this; + /** + * Subscribes to the `BeforeStartEvent` and invokes the specified callback when an HTTPS certificate is determined to be available for the resource. This is used to conditionally update endpoint URI schemes or perform other HTTPS-related configuration at startup. + */ + + subscribeHttpsEndpointsUpdate(callback: (obj: HttpsEndpointUpdateCallbackContext) => Promise): IResource; /** * Waits for another resource to be ready */ @@ -15887,6 +16827,11 @@ export interface ContainerResource { */ withComputeEnvironment(computeEnvironmentResource: IComputeEnvironmentResource): this; + /** + * Configures container build options for a compute resource using an async callback. + */ + + withContainerBuildOptions(callback: (arg: ContainerBuildOptionsCallbackContext) => Promise): this; /** * Configures the resource to use the specified container registry for container image operations. */ @@ -16017,6 +16962,11 @@ export interface ContainerResource { */ withHttpProbe(probeType: ProbeType, path?: string, initialDelaySeconds?: number, periodSeconds?: number, timeoutSeconds?: number, failureThreshold?: number, successThreshold?: number, endpointName?: string): this; + /** + * Adds a callback that allows configuring the resource to use a specific HTTPS/TLS certificate key pair for server authentication. + */ + + withHttpsCertificateConfiguration(callback: (arg: HttpsCertificateConfigurationCallbackAnnotationContext) => Promise): this; /** * Indicates that a resource should use the developer certificate key pair for HTTPS endpoints at run time. Currently this indicates use of the ASP.NET Core developer certificate. The developer certificate will only be used when running in local development scenarios; in publish mode resources will use their default certificate configuration. */ @@ -16172,11 +17122,26 @@ export interface ContainerResource { */ withRequiredCommand(command: string, helpLink?: string): this; + /** + * Declares that a resource requires a specific command/executable to be available on the local machine PATH before it can start, with custom validation logic. + */ + + withRequiredCommandValidation(command: string, validationCallback: (arg: RequiredCommandValidationContext) => Promise, options?: { helpLink?: string }): this; + /** + * Declares that a resource requires a specific command/executable to be available on the local machine PATH before it can start, with custom validation logic. + */ + + withRequiredCommandValidation(command: string, validationCallback: (arg: RequiredCommandValidationContext) => Promise, helpLink?: string): this; /** * Configures a resource to use a session lifetime. */ withSessionLifetime(): this; + /** + * Adds an interactive terminal session to a resource using the default terminal options. + */ + + withTerminal(): this; /** * Adds or modifies displayed URLs */ @@ -16197,10 +17162,6 @@ export interface ContainerResource { */ withUrls(callback: (obj: ResourceUrlsCallbackContext) => Promise): this; - - withAWSSDKConfigReference(awsSdkConfig: IAWSSDKConfig): this; - - withDynamoDBLocalReference(dynamoDBLocalResourceBuilder: DynamoDBLocalResource): this; /** * Associates an Azure user-assigned identity with a compute resource */ @@ -16346,6 +17307,21 @@ export interface ContainerResource { */ publishAsKubernetesService(configure: (obj: KubernetesResource) => Promise): this; + /** + * Binds a workload to a Kubernetes persistent volume by matching volume name + */ + + withKubernetesPersistentVolume(volume: KubernetesPersistentVolumeResource): this; + /** + * Binds a workload to a Kubernetes persistent volume and mounts it at a path + */ + + withKubernetesPersistentVolumeMount(volume: KubernetesPersistentVolumeResource, mountPath: string, options?: { isReadOnly?: boolean }): this; + /** + * Binds a workload to a Kubernetes persistent volume and mounts it at a path + */ + + withKubernetesPersistentVolumeMount(volume: KubernetesPersistentVolumeResource, mountPath: string, isReadOnly?: boolean): this; /** * Schedules a compute resource's workload on the specified Kubernetes node pool. This translates to a Kubernetes `nodeSelector` in the pod specification targeting the named node pool. */ @@ -16520,6 +17496,11 @@ export interface CSharpAppResource { */ publishWithContainerFiles(source: IResourceWithContainerFiles, destinationPath: string): this; + /** + * Subscribes to the `BeforeStartEvent` and invokes the specified callback when an HTTPS certificate is determined to be available for the resource. This is used to conditionally update endpoint URI schemes or perform other HTTPS-related configuration at startup. + */ + + subscribeHttpsEndpointsUpdate(callback: (obj: HttpsEndpointUpdateCallbackContext) => Promise): IResource; /** * Waits for another resource to be ready */ @@ -16570,6 +17551,11 @@ export interface CSharpAppResource { */ withComputeEnvironment(computeEnvironmentResource: IComputeEnvironmentResource): this; + /** + * Configures container build options for a compute resource using an async callback. + */ + + withContainerBuildOptions(callback: (arg: ContainerBuildOptionsCallbackContext) => Promise): this; /** * Configures the resource to use the specified container registry for container image operations. */ @@ -16615,6 +17601,11 @@ export interface CSharpAppResource { */ withEndpointProxySupport(proxyEnabled: boolean): this; + /** + * Includes only the specified project endpoint names in environment-variable injection. + */ + + withEndpointsInEnvironment(endpointNames: string[]): this; /** * Sets an environment variable */ @@ -16700,6 +17691,11 @@ export interface CSharpAppResource { */ withHttpProbe(probeType: ProbeType, path?: string, initialDelaySeconds?: number, periodSeconds?: number, timeoutSeconds?: number, failureThreshold?: number, successThreshold?: number, endpointName?: string): this; + /** + * Adds a callback that allows configuring the resource to use a specific HTTPS/TLS certificate key pair for server authentication. + */ + + withHttpsCertificateConfiguration(callback: (arg: HttpsCertificateConfigurationCallbackAnnotationContext) => Promise): this; /** * Indicates that a resource should use the developer certificate key pair for HTTPS endpoints at run time. Currently this indicates use of the ASP.NET Core developer certificate. The developer certificate will only be used when running in local development scenarios; in publish mode resources will use their default certificate configuration. */ @@ -16860,11 +17856,26 @@ export interface CSharpAppResource { */ withRequiredCommand(command: string, helpLink?: string): this; + /** + * Declares that a resource requires a specific command/executable to be available on the local machine PATH before it can start, with custom validation logic. + */ + + withRequiredCommandValidation(command: string, validationCallback: (arg: RequiredCommandValidationContext) => Promise, options?: { helpLink?: string }): this; + /** + * Declares that a resource requires a specific command/executable to be available on the local machine PATH before it can start, with custom validation logic. + */ + + withRequiredCommandValidation(command: string, validationCallback: (arg: RequiredCommandValidationContext) => Promise, helpLink?: string): this; /** * Configures a resource to use a session lifetime. */ withSessionLifetime(): this; + /** + * Adds an interactive terminal session to a resource using the default terminal options. + */ + + withTerminal(): this; /** * Adds or modifies displayed URLs */ @@ -16885,10 +17896,6 @@ export interface CSharpAppResource { */ withUrls(callback: (obj: ResourceUrlsCallbackContext) => Promise): this; - - withAWSSDKConfigReference(awsSdkConfig: IAWSSDKConfig): this; - - withDynamoDBLocalReference(dynamoDBLocalResourceBuilder: DynamoDBLocalResource): this; /** * Associates an Azure user-assigned identity with a compute resource */ @@ -17054,6 +18061,21 @@ export interface CSharpAppResource { */ publishAsKubernetesService(configure: (obj: KubernetesResource) => Promise): this; + /** + * Binds a workload to a Kubernetes persistent volume by matching volume name + */ + + withKubernetesPersistentVolume(volume: KubernetesPersistentVolumeResource): this; + /** + * Binds a workload to a Kubernetes persistent volume and mounts it at a path + */ + + withKubernetesPersistentVolumeMount(volume: KubernetesPersistentVolumeResource, mountPath: string, options?: { isReadOnly?: boolean }): this; + /** + * Binds a workload to a Kubernetes persistent volume and mounts it at a path + */ + + withKubernetesPersistentVolumeMount(volume: KubernetesPersistentVolumeResource, mountPath: string, isReadOnly?: boolean): this; /** * Schedules a compute resource's workload on the specified Kubernetes node pool. This translates to a Kubernetes `nodeSelector` in the pod specification targeting the named node pool. */ @@ -17069,6 +18091,11 @@ export interface CSharpAppResource { */ withOrleansReference(orleansService: OrleansService): this; + /** + * Associates a pre-built container image reference with a project resource so the Aspire.Hosting.Radius publisher can emit a valid Radius container manifest for it. + */ + + withContainerImage(image: string): this; /** * Overrides the Bitwarden access token injected into the connection for `source`. By default the management token is used. Supply a least-privilege read-only token here. */ @@ -17212,6 +18239,11 @@ export interface DotnetToolResource { */ publishAsDockerFile(configure: (obj: ContainerResource) => Promise): this; + /** + * Subscribes to the `BeforeStartEvent` and invokes the specified callback when an HTTPS certificate is determined to be available for the resource. This is used to conditionally update endpoint URI schemes or perform other HTTPS-related configuration at startup. + */ + + subscribeHttpsEndpointsUpdate(callback: (obj: HttpsEndpointUpdateCallbackContext) => Promise): IResource; /** * Waits for another resource to be ready */ @@ -17262,6 +18294,11 @@ export interface DotnetToolResource { */ withComputeEnvironment(computeEnvironmentResource: IComputeEnvironmentResource): this; + /** + * Configures container build options for a compute resource using an async callback. + */ + + withContainerBuildOptions(callback: (arg: ContainerBuildOptionsCallbackContext) => Promise): this; /** * Configures the resource to use the specified container registry for container image operations. */ @@ -17397,6 +18434,11 @@ export interface DotnetToolResource { */ withHttpProbe(probeType: ProbeType, path?: string, initialDelaySeconds?: number, periodSeconds?: number, timeoutSeconds?: number, failureThreshold?: number, successThreshold?: number, endpointName?: string): this; + /** + * Adds a callback that allows configuring the resource to use a specific HTTPS/TLS certificate key pair for server authentication. + */ + + withHttpsCertificateConfiguration(callback: (arg: HttpsCertificateConfigurationCallbackAnnotationContext) => Promise): this; /** * Indicates that a resource should use the developer certificate key pair for HTTPS endpoints at run time. Currently this indicates use of the ASP.NET Core developer certificate. The developer certificate will only be used when running in local development scenarios; in publish mode resources will use their default certificate configuration. */ @@ -17552,11 +18594,26 @@ export interface DotnetToolResource { */ withRequiredCommand(command: string, helpLink?: string): this; + /** + * Declares that a resource requires a specific command/executable to be available on the local machine PATH before it can start, with custom validation logic. + */ + + withRequiredCommandValidation(command: string, validationCallback: (arg: RequiredCommandValidationContext) => Promise, options?: { helpLink?: string }): this; + /** + * Declares that a resource requires a specific command/executable to be available on the local machine PATH before it can start, with custom validation logic. + */ + + withRequiredCommandValidation(command: string, validationCallback: (arg: RequiredCommandValidationContext) => Promise, helpLink?: string): this; /** * Configures a resource to use a session lifetime. */ withSessionLifetime(): this; + /** + * Adds an interactive terminal session to a resource using the default terminal options. + */ + + withTerminal(): this; /** * Adds or modifies displayed URLs */ @@ -17582,10 +18639,6 @@ export interface DotnetToolResource { */ withWorkingDirectory(workingDirectory: string): this; - - withAWSSDKConfigReference(awsSdkConfig: IAWSSDKConfig): this; - - withDynamoDBLocalReference(dynamoDBLocalResourceBuilder: DynamoDBLocalResource): this; /** * Associates an Azure user-assigned identity with a compute resource */ @@ -17731,6 +18784,21 @@ export interface DotnetToolResource { */ publishAsKubernetesService(configure: (obj: KubernetesResource) => Promise): this; + /** + * Binds a workload to a Kubernetes persistent volume by matching volume name + */ + + withKubernetesPersistentVolume(volume: KubernetesPersistentVolumeResource): this; + /** + * Binds a workload to a Kubernetes persistent volume and mounts it at a path + */ + + withKubernetesPersistentVolumeMount(volume: KubernetesPersistentVolumeResource, mountPath: string, options?: { isReadOnly?: boolean }): this; + /** + * Binds a workload to a Kubernetes persistent volume and mounts it at a path + */ + + withKubernetesPersistentVolumeMount(volume: KubernetesPersistentVolumeResource, mountPath: string, isReadOnly?: boolean): this; /** * Schedules a compute resource's workload on the specified Kubernetes node pool. This translates to a Kubernetes `nodeSelector` in the pod specification targeting the named node pool. */ @@ -17818,14 +18886,6 @@ export interface DotnetToolResource { withStripeReference(source: StripeResource, webhookSigningSecretEnvVarName?: string): this; } -// augments handle type DynamoDBLocalResource with extension methods -export interface DynamoDBLocalResource { - - withAWSSDKConfigReference(awsSdkConfig: IAWSSDKConfig): this; - - withDynamoDBLocalReference(dynamoDBLocalResourceBuilder: DynamoDBLocalResource): this; -} - export interface ElasticsearchResource { /** * Adds an administration and development platform for Elasticsearch to the application model using Elasticvue. @@ -17896,6 +18956,11 @@ export interface ExecutableResource { */ onResourceStopped(callback: (arg: ResourceStoppedEvent) => Promise): this; + /** + * Subscribes to the `BeforeStartEvent` and invokes the specified callback when an HTTPS certificate is determined to be available for the resource. This is used to conditionally update endpoint URI schemes or perform other HTTPS-related configuration at startup. + */ + + subscribeHttpsEndpointsUpdate(callback: (obj: HttpsEndpointUpdateCallbackContext) => Promise): IResource; /** * Waits for another resource to be ready */ @@ -17946,6 +19011,11 @@ export interface ExecutableResource { */ withComputeEnvironment(computeEnvironmentResource: IComputeEnvironmentResource): this; + /** + * Configures container build options for a compute resource using an async callback. + */ + + withContainerBuildOptions(callback: (arg: ContainerBuildOptionsCallbackContext) => Promise): this; /** * Configures the resource to use the specified container registry for container image operations. */ @@ -18076,6 +19146,11 @@ export interface ExecutableResource { */ withHttpProbe(probeType: ProbeType, path?: string, initialDelaySeconds?: number, periodSeconds?: number, timeoutSeconds?: number, failureThreshold?: number, successThreshold?: number, endpointName?: string): this; + /** + * Adds a callback that allows configuring the resource to use a specific HTTPS/TLS certificate key pair for server authentication. + */ + + withHttpsCertificateConfiguration(callback: (arg: HttpsCertificateConfigurationCallbackAnnotationContext) => Promise): this; /** * Indicates that a resource should use the developer certificate key pair for HTTPS endpoints at run time. Currently this indicates use of the ASP.NET Core developer certificate. The developer certificate will only be used when running in local development scenarios; in publish mode resources will use their default certificate configuration. */ @@ -18231,11 +19306,26 @@ export interface ExecutableResource { */ withRequiredCommand(command: string, helpLink?: string): this; + /** + * Declares that a resource requires a specific command/executable to be available on the local machine PATH before it can start, with custom validation logic. + */ + + withRequiredCommandValidation(command: string, validationCallback: (arg: RequiredCommandValidationContext) => Promise, options?: { helpLink?: string }): this; + /** + * Declares that a resource requires a specific command/executable to be available on the local machine PATH before it can start, with custom validation logic. + */ + + withRequiredCommandValidation(command: string, validationCallback: (arg: RequiredCommandValidationContext) => Promise, helpLink?: string): this; /** * Configures a resource to use a session lifetime. */ withSessionLifetime(): this; + /** + * Adds an interactive terminal session to a resource using the default terminal options. + */ + + withTerminal(): this; /** * Adds or modifies displayed URLs */ @@ -18256,10 +19346,6 @@ export interface ExecutableResource { */ withUrls(callback: (obj: ResourceUrlsCallbackContext) => Promise): this; - - withAWSSDKConfigReference(awsSdkConfig: IAWSSDKConfig): this; - - withDynamoDBLocalReference(dynamoDBLocalResourceBuilder: DynamoDBLocalResource): this; /** * Associates an Azure user-assigned identity with a compute resource */ @@ -18405,6 +19491,21 @@ export interface ExecutableResource { */ publishAsKubernetesService(configure: (obj: KubernetesResource) => Promise): this; + /** + * Binds a workload to a Kubernetes persistent volume by matching volume name + */ + + withKubernetesPersistentVolume(volume: KubernetesPersistentVolumeResource): this; + /** + * Binds a workload to a Kubernetes persistent volume and mounts it at a path + */ + + withKubernetesPersistentVolumeMount(volume: KubernetesPersistentVolumeResource, mountPath: string, options?: { isReadOnly?: boolean }): this; + /** + * Binds a workload to a Kubernetes persistent volume and mounts it at a path + */ + + withKubernetesPersistentVolumeMount(volume: KubernetesPersistentVolumeResource, mountPath: string, isReadOnly?: boolean): this; /** * Schedules a compute resource's workload on the specified Kubernetes node pool. This translates to a Kubernetes `nodeSelector` in the pod specification targeting the named node pool. */ @@ -18534,6 +19635,11 @@ export interface ExternalServiceResource { */ onResourceStopped(callback: (arg: ResourceStoppedEvent) => Promise): this; + /** + * Subscribes to the `BeforeStartEvent` and invokes the specified callback when an HTTPS certificate is determined to be available for the resource. This is used to conditionally update endpoint URI schemes or perform other HTTPS-related configuration at startup. + */ + + subscribeHttpsEndpointsUpdate(callback: (obj: HttpsEndpointUpdateCallbackContext) => Promise): IResource; /** * Sets a child relationship */ @@ -18549,6 +19655,11 @@ export interface ExternalServiceResource { */ withCommand(name: string, displayName: string, executeCommand: (arg: ExecuteCommandContext) => Promise, commandOptions?: CommandOptions): this; + /** + * Configures container build options for a compute resource using an async callback. + */ + + withContainerBuildOptions(callback: (arg: ContainerBuildOptionsCallbackContext) => Promise): this; /** * Configures the resource to use the specified container registry for container image operations. */ @@ -18659,11 +19770,26 @@ export interface ExternalServiceResource { */ withRequiredCommand(command: string, helpLink?: string): this; + /** + * Declares that a resource requires a specific command/executable to be available on the local machine PATH before it can start, with custom validation logic. + */ + + withRequiredCommandValidation(command: string, validationCallback: (arg: RequiredCommandValidationContext) => Promise, options?: { helpLink?: string }): this; + /** + * Declares that a resource requires a specific command/executable to be available on the local machine PATH before it can start, with custom validation logic. + */ + + withRequiredCommandValidation(command: string, validationCallback: (arg: RequiredCommandValidationContext) => Promise, helpLink?: string): this; /** * Configures a resource to use a session lifetime. */ withSessionLifetime(): this; + /** + * Adds an interactive terminal session to a resource using the default terminal options. + */ + + withTerminal(): this; /** * Adds or modifies displayed URLs */ @@ -18904,6 +20030,21 @@ export interface IComputeResource { */ publishAsKubernetesService(configure: (obj: KubernetesResource) => Promise): this; + /** + * Binds a workload to a Kubernetes persistent volume by matching volume name + */ + + withKubernetesPersistentVolume(volume: KubernetesPersistentVolumeResource): this; + /** + * Binds a workload to a Kubernetes persistent volume and mounts it at a path + */ + + withKubernetesPersistentVolumeMount(volume: KubernetesPersistentVolumeResource, mountPath: string, options?: { isReadOnly?: boolean }): this; + /** + * Binds a workload to a Kubernetes persistent volume and mounts it at a path + */ + + withKubernetesPersistentVolumeMount(volume: KubernetesPersistentVolumeResource, mountPath: string, isReadOnly?: boolean): this; } export interface IConfiguration { @@ -19036,6 +20177,15 @@ export interface IMauiPlatformResource { withOtlpDevTunnel(): this; } +// augments handle type IResourceWithConnectionString with extension methods +export interface IResourceWithConnectionString { + /** + * Configures a resource to use the specified Orleans provider type. + */ + + withOrleansProviderType(providerType: string): this; +} + // augments handle type IResourceWithEndpoints with extension methods export interface IResourceWithEndpoints { /** @@ -19057,10 +20207,6 @@ export interface IResourceWithEndpoints { // augments handle type IResourceWithEnvironment with extension methods export interface IResourceWithEnvironment { - - withAWSSDKConfigReference(awsSdkConfig: IAWSSDKConfig): this; - - withDynamoDBLocalReference(dynamoDBLocalResourceBuilder: DynamoDBLocalResource): this; /** * Adds an Orleans client to the resource. */ @@ -19159,6 +20305,11 @@ export interface IServiceProvider { */ getEventing(): IDistributedApplicationEventing; + /** + * Gets the interaction service from the service provider. + */ + + getInteractionService(): IInteractionService; /** * Gets the logger factory from the service provider. */ @@ -19300,6 +20451,21 @@ export interface KubernetesAspireDashboardResource { */ publishAsKubernetesService(configure: (obj: KubernetesResource) => Promise): this; + /** + * Binds a workload to a Kubernetes persistent volume by matching volume name + */ + + withKubernetesPersistentVolume(volume: KubernetesPersistentVolumeResource): this; + /** + * Binds a workload to a Kubernetes persistent volume and mounts it at a path + */ + + withKubernetesPersistentVolumeMount(volume: KubernetesPersistentVolumeResource, mountPath: string, options?: { isReadOnly?: boolean }): this; + /** + * Binds a workload to a Kubernetes persistent volume and mounts it at a path + */ + + withKubernetesPersistentVolumeMount(volume: KubernetesPersistentVolumeResource, mountPath: string, isReadOnly?: boolean): this; /** * Schedules a compute resource's workload on the specified Kubernetes node pool. This translates to a Kubernetes `nodeSelector` in the pod specification targeting the named node pool. */ @@ -19382,8 +20548,8 @@ export interface KubernetesNodePoolResource { withNodePool(nodePool: KubernetesNodePoolResource): this; } -// augments handle type KubernetesResource with extension methods -export interface KubernetesResource { +// augments handle type KubernetesPersistentVolumeResource with extension methods +export interface KubernetesPersistentVolumeResource { /** * Schedules a compute resource's workload on the specified Kubernetes node pool. This translates to a Kubernetes `nodeSelector` in the pod specification targeting the named node pool. */ @@ -19391,20 +20557,13 @@ export interface KubernetesResource { withNodePool(nodePool: KubernetesNodePoolResource): this; } -// augments handle type LambdaEmulatorResource with extension methods -export interface LambdaEmulatorResource { - - withAWSSDKConfigReference(awsSdkConfig: IAWSSDKConfig): this; - - withDynamoDBLocalReference(dynamoDBLocalResourceBuilder: DynamoDBLocalResource): this; -} - -// augments handle type LambdaProjectResource with extension methods -export interface LambdaProjectResource { - - withAWSSDKConfigReference(awsSdkConfig: IAWSSDKConfig): this; +// augments handle type KubernetesResource with extension methods +export interface KubernetesResource { + /** + * Schedules a compute resource's workload on the specified Kubernetes node pool. This translates to a Kubernetes `nodeSelector` in the pod specification targeting the named node pool. + */ - withDynamoDBLocalReference(dynamoDBLocalResourceBuilder: DynamoDBLocalResource): this; + withNodePool(nodePool: KubernetesNodePoolResource): this; } // augments handle type MauiAndroidDeviceResource with extension methods @@ -19850,6 +21009,11 @@ export interface ParameterResource { */ onResourceStopped(callback: (arg: ResourceStoppedEvent) => Promise): this; + /** + * Subscribes to the `BeforeStartEvent` and invokes the specified callback when an HTTPS certificate is determined to be available for the resource. This is used to conditionally update endpoint URI schemes or perform other HTTPS-related configuration at startup. + */ + + subscribeHttpsEndpointsUpdate(callback: (obj: HttpsEndpointUpdateCallbackContext) => Promise): IResource; /** * Sets a child relationship */ @@ -19865,6 +21029,11 @@ export interface ParameterResource { */ withCommand(name: string, displayName: string, executeCommand: (arg: ExecuteCommandContext) => Promise, commandOptions?: CommandOptions): this; + /** + * Configures container build options for a compute resource using an async callback. + */ + + withContainerBuildOptions(callback: (arg: ContainerBuildOptionsCallbackContext) => Promise): this; /** * Configures the resource to use the specified container registry for container image operations. */ @@ -19975,11 +21144,26 @@ export interface ParameterResource { */ withRequiredCommand(command: string, helpLink?: string): this; + /** + * Declares that a resource requires a specific command/executable to be available on the local machine PATH before it can start, with custom validation logic. + */ + + withRequiredCommandValidation(command: string, validationCallback: (arg: RequiredCommandValidationContext) => Promise, options?: { helpLink?: string }): this; + /** + * Declares that a resource requires a specific command/executable to be available on the local machine PATH before it can start, with custom validation logic. + */ + + withRequiredCommandValidation(command: string, validationCallback: (arg: RequiredCommandValidationContext) => Promise, helpLink?: string): this; /** * Configures a resource to use a session lifetime. */ withSessionLifetime(): this; + /** + * Adds an interactive terminal session to a resource using the default terminal options. + */ + + withTerminal(): this; /** * Adds or modifies displayed URLs */ @@ -20169,6 +21353,11 @@ export interface ProjectResource { */ publishWithContainerFiles(source: IResourceWithContainerFiles, destinationPath: string): this; + /** + * Subscribes to the `BeforeStartEvent` and invokes the specified callback when an HTTPS certificate is determined to be available for the resource. This is used to conditionally update endpoint URI schemes or perform other HTTPS-related configuration at startup. + */ + + subscribeHttpsEndpointsUpdate(callback: (obj: HttpsEndpointUpdateCallbackContext) => Promise): IResource; /** * Waits for another resource to be ready */ @@ -20219,6 +21408,11 @@ export interface ProjectResource { */ withComputeEnvironment(computeEnvironmentResource: IComputeEnvironmentResource): this; + /** + * Configures container build options for a compute resource using an async callback. + */ + + withContainerBuildOptions(callback: (arg: ContainerBuildOptionsCallbackContext) => Promise): this; /** * Configures the resource to use the specified container registry for container image operations. */ @@ -20349,6 +21543,11 @@ export interface ProjectResource { */ withHttpProbe(probeType: ProbeType, path?: string, initialDelaySeconds?: number, periodSeconds?: number, timeoutSeconds?: number, failureThreshold?: number, successThreshold?: number, endpointName?: string): this; + /** + * Adds a callback that allows configuring the resource to use a specific HTTPS/TLS certificate key pair for server authentication. + */ + + withHttpsCertificateConfiguration(callback: (arg: HttpsCertificateConfigurationCallbackAnnotationContext) => Promise): this; /** * Indicates that a resource should use the developer certificate key pair for HTTPS endpoints at run time. Currently this indicates use of the ASP.NET Core developer certificate. The developer certificate will only be used when running in local development scenarios; in publish mode resources will use their default certificate configuration. */ @@ -20504,11 +21703,26 @@ export interface ProjectResource { */ withRequiredCommand(command: string, helpLink?: string): this; + /** + * Declares that a resource requires a specific command/executable to be available on the local machine PATH before it can start, with custom validation logic. + */ + + withRequiredCommandValidation(command: string, validationCallback: (arg: RequiredCommandValidationContext) => Promise, options?: { helpLink?: string }): this; + /** + * Declares that a resource requires a specific command/executable to be available on the local machine PATH before it can start, with custom validation logic. + */ + + withRequiredCommandValidation(command: string, validationCallback: (arg: RequiredCommandValidationContext) => Promise, helpLink?: string): this; /** * Configures a resource to use a session lifetime. */ withSessionLifetime(): this; + /** + * Adds an interactive terminal session to a resource using the default terminal options. + */ + + withTerminal(): this; /** * Adds or modifies displayed URLs */ @@ -20529,10 +21743,6 @@ export interface ProjectResource { */ withUrls(callback: (obj: ResourceUrlsCallbackContext) => Promise): this; - - withAWSSDKConfigReference(awsSdkConfig: IAWSSDKConfig): this; - - withDynamoDBLocalReference(dynamoDBLocalResourceBuilder: DynamoDBLocalResource): this; /** * Associates an Azure user-assigned identity with a compute resource */ @@ -20698,6 +21908,21 @@ export interface ProjectResource { */ publishAsKubernetesService(configure: (obj: KubernetesResource) => Promise): this; + /** + * Binds a workload to a Kubernetes persistent volume by matching volume name + */ + + withKubernetesPersistentVolume(volume: KubernetesPersistentVolumeResource): this; + /** + * Binds a workload to a Kubernetes persistent volume and mounts it at a path + */ + + withKubernetesPersistentVolumeMount(volume: KubernetesPersistentVolumeResource, mountPath: string, options?: { isReadOnly?: boolean }): this; + /** + * Binds a workload to a Kubernetes persistent volume and mounts it at a path + */ + + withKubernetesPersistentVolumeMount(volume: KubernetesPersistentVolumeResource, mountPath: string, isReadOnly?: boolean): this; /** * Schedules a compute resource's workload on the specified Kubernetes node pool. This translates to a Kubernetes `nodeSelector` in the pod specification targeting the named node pool. */ @@ -20713,6 +21938,11 @@ export interface ProjectResource { */ withOrleansReference(orleansService: OrleansService): this; + /** + * Associates a pre-built container image reference with a project resource so the Aspire.Hosting.Radius publisher can emit a valid Radius container manifest for it. + */ + + withContainerImage(image: string): this; /** * Overrides the Bitwarden access token injected into the connection for `source`. By default the management token is used. Supply a least-privilege read-only token here. */ @@ -20785,28 +22015,8 @@ export interface ProjectResource { withStripeReference(source: StripeResource, webhookSigningSecretEnvVarName?: string): this; } -// augments handle type RedisCommanderResource with extension methods -export interface RedisCommanderResource { - - withAWSSDKConfigReference(awsSdkConfig: IAWSSDKConfig): this; - - withDynamoDBLocalReference(dynamoDBLocalResourceBuilder: DynamoDBLocalResource): this; -} - -// augments handle type RedisInsightResource with extension methods -export interface RedisInsightResource { - - withAWSSDKConfigReference(awsSdkConfig: IAWSSDKConfig): this; - - withDynamoDBLocalReference(dynamoDBLocalResourceBuilder: DynamoDBLocalResource): this; -} - // augments handle type RedisResource with extension methods export interface RedisResource { - - withAWSSDKConfigReference(awsSdkConfig: IAWSSDKConfig): this; - - withDynamoDBLocalReference(dynamoDBLocalResourceBuilder: DynamoDBLocalResource): this; /** * Adds an administration and development platform for Redis to the application model using DbGate. */ @@ -20924,14 +22134,6 @@ export interface UvicornAppResource { withVirtualEnvironment(virtualEnvironmentPath: string, createIfNotExists?: boolean): this; } -// augments handle type ValkeyResource with extension methods -export interface ValkeyResource { - - withAWSSDKConfigReference(awsSdkConfig: IAWSSDKConfig): this; - - withDynamoDBLocalReference(dynamoDBLocalResourceBuilder: DynamoDBLocalResource): this; -} - // augments handle type ViteAppResource with extension methods export interface ViteAppResource { /** @@ -21170,7 +22372,6 @@ export interface IConfigurationSection {} export interface IContainerRegistry {} export interface IConvertible {} export interface IDisposable {} -export interface IDynamoDBLocalResource {} export interface IEnumerable {} export interface IFormattable {} export interface IFoundryTool {} @@ -21185,7 +22386,6 @@ export interface IResourceWithServiceDiscovery extends IResource {} export interface ISpanFormattable {} export interface IValueProvider {} export interface IValueWithReferences {} -export interface InputLoadOptions {} export interface KeyValuePair {} export interface List {} export interface NetworkSecurityPerimeterAccessRuleDirection {} diff --git a/src/frontend/tests/unit/aspire-version-placeholders.vitest.test.ts b/src/frontend/tests/unit/aspire-version-placeholders.vitest.test.ts new file mode 100644 index 000000000..20ef2e16f --- /dev/null +++ b/src/frontend/tests/unit/aspire-version-placeholders.vitest.test.ts @@ -0,0 +1,158 @@ +import { mkdir, mkdtemp, readFile, rm, writeFile } from 'node:fs/promises'; +import os from 'node:os'; +import path from 'node:path'; +import { describe, expect, test } from 'vitest'; +import { replaceAspireVersionPlaceholdersInDirectory } from '../../config/aspire-version-placeholders-integration.mjs'; +import { + currentAspireMajorMinorVersion, + currentAspireVersion, +} from '../../config/aspire-versions.mjs'; +import { + remarkAspireVersionPlaceholders, + replaceAspireVersionPlaceholders, +} from '../../config/remark-aspire-version-placeholders.mjs'; + +describe('Aspire version placeholders', () => { + test('replaces current Aspire major.minor and patch placeholders', () => { + expect( + replaceAspireVersionPlaceholders( + 'Aspire %ASPIRE_VERSION_MAJOR_MINOR% ships as %ASPIRE_VERSION%.' + ) + ).toBe(`Aspire ${currentAspireMajorMinorVersion} ships as ${currentAspireVersion}.`); + }); + + test('replaces placeholders in markdown text, code fences, and MDX attributes', () => { + const tree = { + type: 'root', + children: [ + { + type: 'paragraph', + children: [{ type: 'text', value: 'Aspire %ASPIRE_VERSION_MAJOR_MINOR%' }], + }, + { type: 'code', lang: 'bash', value: 'aspire %ASPIRE_VERSION%' }, + { + type: 'mdxJsxFlowElement', + name: 'Code', + attributes: [{ type: 'mdxJsxAttribute', name: 'code', value: '%ASPIRE_VERSION%' }], + children: [], + }, + ], + }; + + remarkAspireVersionPlaceholders()(tree); + + expect(tree.children[0].children[0].value).toBe( + `Aspire ${currentAspireMajorMinorVersion}` + ); + expect(tree.children[1].value).toBe(`aspire ${currentAspireVersion}`); + expect(tree.children[2].attributes[0].value).toBe(currentAspireVersion); + }); + + test('replaces placeholders only in Markdown copies, leaving other assets untouched', async () => { + const tempDir = await mkdtemp(path.join(os.tmpdir(), 'aspire-version-placeholders-')); + + try { + const markdownPath = path.join(tempDir, 'example.md'); + const htmlPath = path.join(tempDir, 'example.html'); + const textPath = path.join(tempDir, 'example.txt'); + const mdxPath = path.join(tempDir, 'example.mdx'); + const jsonPath = path.join(tempDir, 'example.json'); + + const placeholderContent = 'Aspire %ASPIRE_VERSION_MAJOR_MINOR%: %ASPIRE_VERSION%'; + + await Promise.all([ + writeFile(markdownPath, placeholderContent), + writeFile(htmlPath, placeholderContent), + writeFile(textPath, placeholderContent), + writeFile(mdxPath, placeholderContent), + writeFile(jsonPath, '{"version":"%ASPIRE_VERSION%"}'), + ]); + + await replaceAspireVersionPlaceholdersInDirectory(tempDir); + + // Only the `.md` copy (which bypasses the remark pipeline) is rewritten. + await expect(readFile(markdownPath, 'utf8')).resolves.toBe( + `Aspire ${currentAspireMajorMinorVersion}: ${currentAspireVersion}` + ); + + // The post-build pass intentionally rewrites only `.md` files. In the real + // build `.html`/`.txt`/`.mdx` are produced through the remark pipeline (so + // they're already replaced before this pass runs) and `.json` is never a + // placeholder target; this test seeds them with raw placeholders to assert + // that this pass leaves every non-`.md` extension untouched. + await expect(readFile(htmlPath, 'utf8')).resolves.toBe(placeholderContent); + await expect(readFile(textPath, 'utf8')).resolves.toBe(placeholderContent); + await expect(readFile(mdxPath, 'utf8')).resolves.toBe(placeholderContent); + await expect(readFile(jsonPath, 'utf8')).resolves.toBe('{"version":"%ASPIRE_VERSION%"}'); + } finally { + await rm(tempDir, { recursive: true, force: true }); + } + }); + + test('replaces Markdown placeholders recursively under a bounded concurrency limit', async () => { + const tempDir = await mkdtemp(path.join(os.tmpdir(), 'aspire-version-placeholders-')); + + try { + // Spread more `.md` files than the worker-pool concurrency across nested + // directories so the bounded recursive traversal is exercised, alongside + // non-`.md` assets that must be left untouched. + const placeholderContent = 'Aspire %ASPIRE_VERSION_MAJOR_MINOR% is %ASPIRE_VERSION%.'; + const ignoredExtensions = ['.html', '.txt', '.mdx', '.json']; + const markdownPaths: string[] = []; + const ignoredPaths: string[] = []; + + for (let depth = 0; depth < 4; depth++) { + const dir = path.join(tempDir, ...Array.from({ length: depth }, (_, i) => `level-${i}`)); + await mkdir(dir, { recursive: true }); + + for (let index = 0; index < 5; index++) { + const markdownPath = path.join(dir, `asset-${index}.md`); + await writeFile(markdownPath, placeholderContent); + markdownPaths.push(markdownPath); + + const extension = ignoredExtensions[index % ignoredExtensions.length]; + const ignoredPath = path.join(dir, `asset-${index}${extension}`); + await writeFile(ignoredPath, placeholderContent); + ignoredPaths.push(ignoredPath); + } + } + + await replaceAspireVersionPlaceholdersInDirectory(tempDir, 2); + + await Promise.all( + markdownPaths.map(async (markdownPath) => { + await expect(readFile(markdownPath, 'utf8')).resolves.toBe( + `Aspire ${currentAspireMajorMinorVersion} is ${currentAspireVersion}.` + ); + }) + ); + + await Promise.all( + ignoredPaths.map(async (ignoredPath) => { + await expect(readFile(ignoredPath, 'utf8')).resolves.toBe(placeholderContent); + }) + ); + } finally { + await rm(tempDir, { recursive: true, force: true }); + } + }); + + test('falls back to a valid worker count when given a non-finite concurrency', async () => { + const tempDir = await mkdtemp(path.join(os.tmpdir(), 'aspire-version-placeholders-')); + + try { + const markdownPath = path.join(tempDir, 'example.md'); + await writeFile(markdownPath, 'Aspire %ASPIRE_VERSION_MAJOR_MINOR%: %ASPIRE_VERSION%'); + + // A non-finite concurrency must not collapse the worker pool to an empty + // array and silently skip every file. + await replaceAspireVersionPlaceholdersInDirectory(tempDir, Number.NaN); + + await expect(readFile(markdownPath, 'utf8')).resolves.toBe( + `Aspire ${currentAspireMajorMinorVersion}: ${currentAspireVersion}` + ); + } finally { + await rm(tempDir, { recursive: true, force: true }); + } + }); +}); diff --git a/src/tools/AtsJsonGenerator/generate-ts-api-json.ps1 b/src/tools/AtsJsonGenerator/generate-ts-api-json.ps1 index 9c097194b..c7508c053 100644 --- a/src/tools/AtsJsonGenerator/generate-ts-api-json.ps1 +++ b/src/tools/AtsJsonGenerator/generate-ts-api-json.ps1 @@ -67,7 +67,11 @@ param( Set-StrictMode -Version Latest $ErrorActionPreference = "Stop" -$NuGetOrgServiceIndex = "https://api.nuget.org/v3/index.json" +$NuGetOrgServiceIndex = if ([string]::IsNullOrWhiteSpace($env:ASPIRE_PUBLIC_NUGET_INDEX)) { + "https://api.nuget.org/v3/index.json" +} else { + $env:ASPIRE_PUBLIC_NUGET_INDEX.Trim() +} $AspireRepoCandidates = @( $env:ASPIRE_GITHUB_REPO_URL, "https://github.com/microsoft/aspire" @@ -78,6 +82,14 @@ $RepoRoot = (Resolve-Path (Join-Path $ScriptDir "..\..\..")).Path $ToolProject = Join-Path $ScriptDir "AtsJsonGenerator.csproj" $AspireCliPath = if ([string]::IsNullOrWhiteSpace($env:ASPIRE_CLI_PATH)) { "aspire" } else { $env:ASPIRE_CLI_PATH } +# Opt-in resilience: when ASPIRE_TS_API_CARRY_FORWARD=1, a package whose ATS dump +# fails does not abort the whole run. Its previously committed module in the final +# output directory is preserved (carried forward) and every package that succeeded +# is still synced. Off by default so CI keeps failing hard on unexpected dump +# errors. Intended for constrained environments where a package's transitive +# restore requires a feed that is unreachable (e.g. an authenticated internal feed). +$CarryForwardOnDumpFailure = ($env:ASPIRE_TS_API_CARRY_FORWARD -eq '1') + $FinalOutputDir = if ($OutputDir) { [System.IO.Path]::GetFullPath($OutputDir) } @@ -893,10 +905,13 @@ if ($aspireCliWorkingDirectory -and (Test-Path $aspireCliWorkingDirectory)) { Remove-Item $aspireCliWorkingDirectory -Recurse -Force -ErrorAction SilentlyContinue } -if ($failed -gt 0) { +if ($failed -gt 0 -and -not $CarryForwardOnDumpFailure) { Remove-Item -Path $OutputDir -Recurse -Force -ErrorAction SilentlyContinue exit 1 } +if ($failed -gt 0) { + Write-Host "Carry-forward: $failed package(s) failed to dump; preserving their existing committed modules and syncing the rest." -ForegroundColor Yellow +} New-Item -ItemType Directory -Path $FinalOutputDir -Force | Out-Null $stagedFiles = @(Get-ChildItem -Path $OutputDir -Filter "*.json" -File) @@ -910,6 +925,16 @@ $isFullReconciliation = -not $AspireRepoPath -and -not $PackageFilter -and -not if ($isFullReconciliation) { foreach ($existingFile in Get-ChildItem -Path $FinalOutputDir -Filter "*.json" -File) { if (-not $stagedNames.Contains($existingFile.Name)) { + if ($failedPackageNames.Count -gt 0) { + $belongsToFailed = $false + foreach ($failedName in $failedPackageNames) { + if ($existingFile.Name -match ("^{0}(?:\.\d.*)?\.json$" -f [regex]::Escape($failedName))) { + $belongsToFailed = $true + break + } + } + if ($belongsToFailed) { continue } + } Remove-Item -Path $existingFile.FullName -Force Write-Host "Removed stale module: $($existingFile.Name)" -ForegroundColor DarkYellow } @@ -917,6 +942,7 @@ if ($isFullReconciliation) { } else { foreach ($pkg in $Packages) { + if ($failedPackageNames.Contains($pkg.Name)) { continue } $packageFilePattern = "^{0}(?:\.\d.*)?\.json$" -f [regex]::Escape($pkg.Name) $stagedForPackage = @($stagedFiles | Where-Object { $_.Name -match $packageFilePattern diff --git a/src/tools/PackageJsonGenerator/generate-package-json.ps1 b/src/tools/PackageJsonGenerator/generate-package-json.ps1 index 359672634..07e45265b 100644 --- a/src/tools/PackageJsonGenerator/generate-package-json.ps1 +++ b/src/tools/PackageJsonGenerator/generate-package-json.ps1 @@ -53,7 +53,11 @@ param( Set-StrictMode -Version Latest $ErrorActionPreference = "Stop" -$NuGetOrgServiceIndex = "https://api.nuget.org/v3/index.json" +$NuGetOrgServiceIndex = if ([string]::IsNullOrWhiteSpace($env:ASPIRE_PUBLIC_NUGET_INDEX)) { + "https://api.nuget.org/v3/index.json" +} else { + $env:ASPIRE_PUBLIC_NUGET_INDEX.Trim() +} $AspireRepoCandidates = @( $env:ASPIRE_GITHUB_REPO_URL, "https://github.com/microsoft/aspire"