Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
79 commits
Select commit Hold shift + click to select a range
172591d
sdk_v2/cpp/telemetry: extend ITelemetry with typed payloads and trackers
bmehta001 Jun 11, 2026
339bcd1
sdk_v2/cpp/telemetry: add OneDsTelemetry 1DS upload bridge
bmehta001 Jun 11, 2026
7b9588a
sdk_v2/cpp: wire ITelemetry into Manager, EpDetector and DownloadManager
bmehta001 Jun 11, 2026
bd401e6
sdk_v2/cpp/telemetry: bump vcpkg baseline + fix ILogger collision
bmehta001 Jun 15, 2026
979220a
build: enable linker dead-code stripping for foundry_local.dll
bmehta001 Jun 16, 2026
a483898
sdk_v2/cpp/telemetry: add InvocationContext (correlation id + indirec…
bmehta001 Jun 20, 2026
a1bb6f9
sdk_v2/cpp/telemetry: emit the Model event + wire the chat route end-…
bmehta001 Jun 20, 2026
ea5aebb
sdk_v2/cpp/telemetry: wire all service routes (indirect, kClientError…
bmehta001 Jun 20, 2026
b93dd85
sdk_v2/cpp/telemetry: add router catch-all for unmatched requests + t…
bmehta001 Jun 20, 2026
87a2686
sdk_v2/cpp/telemetry: track Azure Catalog accesses (CatalogFetch event)
bmehta001 Jun 20, 2026
efc7f16
sdk_v2/cpp/telemetry: plain AppSessionGuid + ext.app.sesId usage sess…
bmehta001 Jun 22, 2026
554b25b
sdk_v2/cpp/telemetry: extend ITelemetry with typed payloads and trackers
bmehta001 Jun 11, 2026
9435ff4
sdk_v2/cpp/telemetry: add OneDsTelemetry 1DS upload bridge
bmehta001 Jun 11, 2026
d38f2f3
sdk_v2/cpp: wire ITelemetry into Manager, EpDetector and DownloadManager
bmehta001 Jun 11, 2026
df59a13
sdk_v2/cpp/telemetry: bump vcpkg baseline + fix ILogger collision
bmehta001 Jun 15, 2026
753a10d
build: enable linker dead-code stripping for foundry_local.dll
bmehta001 Jun 16, 2026
91e9a0b
sdk_v2/cpp/telemetry: add InvocationContext (correlation id + indirec…
bmehta001 Jun 20, 2026
139e97c
sdk_v2/cpp/telemetry: emit the Model event + wire the chat route end-…
bmehta001 Jun 20, 2026
4668b66
sdk_v2/cpp/telemetry: wire all service routes (indirect, kClientError…
bmehta001 Jun 20, 2026
2b406e1
sdk_v2/cpp/telemetry: add router catch-all for unmatched requests + t…
bmehta001 Jun 20, 2026
9989d31
sdk_v2/cpp/telemetry: track Azure Catalog accesses (CatalogFetch event)
bmehta001 Jun 20, 2026
5433c9e
sdk_v2/cpp/telemetry: plain AppSessionGuid + ext.app.sesId usage sess…
bmehta001 Jun 22, 2026
91711cd
Merge telemetry branch with main
bmehta001 Jul 9, 2026
bb372c7
Fix telemetry merge validation issues
bmehta001 Jul 9, 2026
de660d5
Harden WinML fetch and model selection refresh
bmehta001 Jul 9, 2026
e4a518a
Close final telemetry review gaps
bmehta001 Jul 9, 2026
5353ec9
Bump C ABI and scrub URL telemetry
bmehta001 Jul 9, 2026
b44dff9
Redact catalog logs and package WinML runtime
bmehta001 Jul 10, 2026
16ec313
Harden catalog logging and WinML acquisition
bmehta001 Jul 10, 2026
47a18d8
Sanitize catalog errors and unsafe resume state
bmehta001 Jul 10, 2026
e82b4b5
Secure telemetry token and EP snapshots
bmehta001 Jul 10, 2026
d530ae4
Finish telemetry and download hardening
bmehta001 Jul 10, 2026
ba34351
Preserve variant intent and reject cached tokens
bmehta001 Jul 10, 2026
02f8323
Guard fetch content and streaming cleanup
bmehta001 Jul 10, 2026
a59accf
Package C++ runtime dependencies
bmehta001 Jul 10, 2026
f861d9c
Package ORT companions and harden resume skips
bmehta001 Jul 10, 2026
d8e825c
Reap completed streams and optional providers
bmehta001 Jul 10, 2026
b56a815
Complete runtime packaging and stream aborts
bmehta001 Jul 10, 2026
2dafa79
Complete WinML and CUDA packaging hardening
bmehta001 Jul 10, 2026
2dc4ebd
Fix shutdown and platform loader edge cases
bmehta001 Jul 10, 2026
5e12c10
Harden platform and constructor edges
bmehta001 Jul 10, 2026
dc56837
Fix Python RID and session telemetry edges
bmehta001 Jul 10, 2026
3c5e74e
Force catalog refresh and stream registration safety
bmehta001 Jul 10, 2026
e3ad607
Let C++ wrapper version errors propagate
bmehta001 Jul 10, 2026
aead427
Fix JS metadata and safe EP/download snapshots
bmehta001 Jul 11, 2026
e447b9c
Close shutdown and wrapper review gaps
bmehta001 Jul 11, 2026
630e475
Drop response session check-ins during shutdown
bmehta001 Jul 11, 2026
8fd7c3e
Harden telemetry redaction and refresh fallback
bmehta001 Jul 11, 2026
d64200a
Make telemetry emission best-effort
bmehta001 Jul 11, 2026
ff1dc5f
Validate blob identity during resume
bmehta001 Jul 11, 2026
63a7815
Treat cancelled response streams as failures
bmehta001 Jul 11, 2026
224f2f4
Treat cancelled chat audio streams as failures
bmehta001 Jul 11, 2026
69093b5
Sanitize catalog names and JS exit cleanup
bmehta001 Jul 11, 2026
10744b3
Close pre-PR telemetry review findings
bmehta001 Jul 12, 2026
97839ad
Harden endpoint snapshots and binding lifetimes
bmehta001 Jul 12, 2026
055cba3
Fix native lifetime races
bmehta001 Jul 12, 2026
df72097
Release disposed JS session keepalives
bmehta001 Jul 12, 2026
ae6d8f0
Separate JS disposal state from native leases
bmehta001 Jul 12, 2026
98d0b70
Guard JS session creation after manager disposal
bmehta001 Jul 12, 2026
a816c55
Validate latest-version model lifecycle
bmehta001 Jul 12, 2026
b0ea28e
Block manager disposal with live JS sessions
bmehta001 Jul 12, 2026
17aa2c9
Back off failed forced catalog refreshes
bmehta001 Jul 12, 2026
0092ff4
Preserve progress monotonicity on resume reset
bmehta001 Jul 12, 2026
83343ba
Align shutdown disposal and telemetry input handling
bmehta001 Jul 12, 2026
6dc0d8e
Tighten catalog download and EP edge cases
bmehta001 Jul 12, 2026
7ce6e37
Expect unknown EP requests to fail in JS tests
bmehta001 Jul 12, 2026
e5ab67d
Close final material edge cases
bmehta001 Jul 13, 2026
cf6fa2e
Keep response continuations on matching models
bmehta001 Jul 13, 2026
7c6a6bf
Harden shutdown and streaming cleanup
bmehta001 Jul 13, 2026
bb6842e
Persist streaming responses before done signal
bmehta001 Jul 13, 2026
f70c003
Finish unload and wheel artifact hardening
bmehta001 Jul 13, 2026
ad5315f
Close shutdown load and JS packaging gaps
bmehta001 Jul 13, 2026
f8c2e2a
Gate blob skipping to sidecar-safe retries
bmehta001 Jul 13, 2026
a82a885
Keep legacy download repairs untrusted after failure
bmehta001 Jul 13, 2026
515e285
Preserve fresh retry trust and catalog names
bmehta001 Jul 13, 2026
bbacc36
Merge origin/main into telemetry branch
bmehta001 Jul 13, 2026
41005c9
Retain URL snapshots and harden user agents
bmehta001 Jul 13, 2026
34ba2bc
Reuse URL snapshots and notify completed streams
bmehta001 Jul 13, 2026
bc4bf4d
Stage Linux GenAI provider runtimes
bmehta001 Jul 13, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 8 additions & 0 deletions .pipelines/v2/templates/steps-build-js.yml
Original file line number Diff line number Diff line change
Expand Up @@ -156,6 +156,14 @@ steps:
throw "WinML runtime DLL not found in native artifact: $winmlDll"
}

$directMlDll = Join-Path "${{ parameters.nativeArtifactDir }}" 'DirectML.dll'
if (Test-Path $directMlDll) {
Copy-Item $directMlDll -Destination $dst -Force
Write-Host " staged DirectML.dll"
} else {
throw "DirectML.dll not found in native artifact: $directMlDll"
}

Get-ChildItem $dst | ForEach-Object { Write-Host " $($_.Name) $($_.Length) bytes" }
displayName: 'Stage prebuild directory'

Expand Down
46 changes: 32 additions & 14 deletions .pipelines/v2/templates/steps-build-linux.yml
Original file line number Diff line number Diff line change
Expand Up @@ -75,24 +75,42 @@ steps:
displayName: 'Dump vcpkg error logs'
condition: failed()

# Stage the redistributable native artifact. Vcpkg uses static linkage on
# Linux (see sdk_v2/cpp/triplets/x64-linux.cmake), so libfoundry_local.so
# carries its transitive deps (azure-*, spdlog, fmt, libcurl, libssl/libcrypto,
# zlib, brotli*) inside itself — the only file we need to forward downstream
# is libfoundry_local.so. ORT/GenAI .so files are also present in bin/ but are
# supplied to consumers separately (pip on the Python side, NuGet on the C#
# side); test/example binaries are not part of the redistributable surface.
# Stage the redistributable native artifacts for standalone C++ consumers.
- bash: |
set -euo pipefail
src='$(Build.SourcesDirectory)/sdk_v2/cpp/build/Linux/${{ parameters.buildConfig }}/bin'
dst='$(Build.ArtifactStagingDirectory)/native'
mkdir -p "$dst"

primary="$src/libfoundry_local.so"
if [ ! -f "$primary" ]; then
echo "ERROR: libfoundry_local.so not found at $primary" >&2
exit 1
fi
cp -P "$primary" "$dst/"
echo " staged libfoundry_local.so"
required=(
"$src/libfoundry_local.so"
"$src/libonnxruntime-genai.so"
"$src/libonnxruntime.so"
)
for f in "${required[@]}"; do
if [ ! -e "$f" ]; then
echo "ERROR: required native artifact not found: $f" >&2
exit 1
fi
cp -P "$f" "$dst/"
echo " staged $(basename "$f")"
done
for f in "$src"/libonnxruntime.so.*; do
if [ -e "$f" ]; then
cp -P "$f" "$dst/"
echo " staged $(basename "$f")"
fi
done
for f in "$src"/libonnxruntime-genai*.so; do
if [ -e "$f" ] && [ "$(basename "$f")" != "libonnxruntime-genai.so" ]; then
cp -P "$f" "$dst/"
echo " staged $(basename "$f")"
fi
done
for f in "$src"/libonnxruntime_providers_*.so; do
if [ -e "$f" ]; then
cp -P "$f" "$dst/"
echo " staged $(basename "$f")"
fi
done
displayName: 'Stage native artifacts'
39 changes: 26 additions & 13 deletions .pipelines/v2/templates/steps-build-macos.yml
Original file line number Diff line number Diff line change
Expand Up @@ -81,23 +81,36 @@ steps:
displayName: 'Dump vcpkg error logs'
condition: failed()

# Stage the redistributable native artifact. macOS has no triplet overlay so
# vcpkg uses its default arm64-osx triplet, which is static — libfoundry_local.dylib
# carries its transitive deps (azure-*, spdlog, fmt, libcurl, libssl/libcrypto,
# zlib, brotli*) inside itself. ORT/GenAI .dylib files are supplied to consumers
# separately (pip on the Python side, NuGet on the C# side); test/example binaries
# are not part of the redistributable surface.
# Stage the redistributable native artifacts for standalone C++ consumers.
- bash: |
set -euo pipefail
src='$(Build.SourcesDirectory)/sdk_v2/cpp/build/macOS/${{ parameters.buildConfig }}/bin'
dst='$(Build.ArtifactStagingDirectory)/native'
mkdir -p "$dst"

primary="$src/libfoundry_local.dylib"
if [ ! -f "$primary" ]; then
echo "ERROR: libfoundry_local.dylib not found at $primary" >&2
exit 1
fi
cp -P "$primary" "$dst/"
echo " staged libfoundry_local.dylib"
required=(
"$src/libfoundry_local.dylib"
"$src/libonnxruntime-genai.dylib"
"$src/libonnxruntime.dylib"
)
for f in "${required[@]}"; do
if [ ! -e "$f" ]; then
echo "ERROR: required native artifact not found: $f" >&2
exit 1
fi
cp -P "$f" "$dst/"
echo " staged $(basename "$f")"
done
for f in "$src"/libonnxruntime.*.dylib; do
if [ -e "$f" ]; then
cp -P "$f" "$dst/"
echo " staged $(basename "$f")"
fi
done
for f in "$src"/libonnxruntime_providers_*.dylib; do
if [ -e "$f" ]; then
cp -P "$f" "$dst/"
echo " staged $(basename "$f")"
fi
done
displayName: 'Stage native artifacts'
24 changes: 23 additions & 1 deletion .pipelines/v2/templates/steps-build-python.yml
Original file line number Diff line number Diff line change
Expand Up @@ -106,10 +106,32 @@ steps:
# deps (onnxruntime-{core,gpu} / onnxruntime-genai-{core,cuda}). Test
# and example binaries are also filtered out upstream. We just copy
# the curated artifact contents straight in.
$files = Get-ChildItem -Path "${{ parameters.nativeArtifactDir }}" -Recurse -File
$rid = '${{ parameters.rid }}'
if ($rid -like 'win-*') {
$allowed = @('foundry_local.dll', 'foundry_local.lib', 'Microsoft.Windows.AI.MachineLearning.dll', 'DirectML.dll')
} elseif ($rid -like 'linux-*') {
$allowed = @('libfoundry_local.so')
} elseif ($rid -like 'osx-*') {
$allowed = @('libfoundry_local.dylib')
} else {
throw "Unsupported Python wheel RID: $rid"
}
$files = foreach ($name in $allowed) {
Get-ChildItem -Path "${{ parameters.nativeArtifactDir }}" -Filter $name -File -ErrorAction SilentlyContinue
}
if ($files.Count -eq 0) {
throw "No native artifacts found under ${{ parameters.nativeArtifactDir }}"
}
if ($rid -like 'win-*') {
$found = @{}
foreach ($f in $files) {
$found[$f.Name] = $true
}
$missing = @($allowed | Where-Object { -not $found.ContainsKey($_) })
if ($missing.Count -gt 0) {
throw "Missing required Windows native artifact(s): $($missing -join ', ') under ${{ parameters.nativeArtifactDir }}"
}
}
foreach ($f in $files) {
Copy-Item $f.FullName -Destination $dest -Force
}
Expand Down
14 changes: 13 additions & 1 deletion .pipelines/v2/templates/steps-build-windows.yml
Original file line number Diff line number Diff line change
Expand Up @@ -138,7 +138,13 @@ steps:
(Join-Path $binDir 'foundry_local.dll'),
(Join-Path $binDir 'foundry_local.pdb'),
(Join-Path $linkDir 'foundry_local.lib'),
(Join-Path $binDir 'Microsoft.Windows.AI.MachineLearning.dll')
(Join-Path $binDir 'Microsoft.Windows.AI.MachineLearning.dll'),
(Join-Path $binDir 'DirectML.dll'),
(Join-Path $binDir 'onnxruntime.dll'),
(Join-Path $binDir 'onnxruntime-genai.dll')
)
$optionalPatterns = @(
'onnxruntime_providers_*.dll'
)

foreach ($s in $sources) {
Expand All @@ -149,6 +155,12 @@ steps:
Copy-Item -Path $s -Destination $dst -Force
Write-Host " staged $(Split-Path -Leaf $s)"
}
foreach ($pattern in $optionalPatterns) {
Get-ChildItem -Path $binDir -Filter $pattern -File -ErrorAction SilentlyContinue | ForEach-Object {
Copy-Item -Path $_.FullName -Destination $dst -Force
Write-Host " staged $($_.Name)"
}
}

- ${{ if eq(parameters.stageHeaders, true) }}:
- task: CopyFiles@2
Expand Down
44 changes: 32 additions & 12 deletions .pipelines/v2/templates/steps-pack-cpp-sdk.yml
Original file line number Diff line number Diff line change
Expand Up @@ -57,9 +57,8 @@ steps:

Copy-Item -Path (Join-Path $includeSrc '*') -Destination $includeDst -Recurse -Force

# The SDK tgz should include only public wrapper headers.
# The SDK tgz should include public wrapper headers and their header-only dependencies.
$pathsToPrune = @(
(Join-Path $includeDst 'gsl'),
(Join-Path $includeDst '_manifest')
)
foreach ($pathToPrune in $pathsToPrune) {
Expand All @@ -68,13 +67,17 @@ steps:
}
}

foreach ($f in $Files) {
$src = Join-Path $nativeSrc $f
if (-not (Test-Path $src)) {
throw "Required native file not found: $src"
foreach ($entry in $Files) {
$optional = $entry.StartsWith('?')
$pattern = if ($optional) { $entry.Substring(1) } else { $entry }
$matches = @(Get-ChildItem -Path $nativeSrc -Filter $pattern -File -ErrorAction SilentlyContinue)
if ($matches.Count -eq 0 -and -not $optional) {
throw "Required native file not found: $(Join-Path $nativeSrc $pattern)"
}
foreach ($match in $matches) {
$dst = Join-Path $libDst $match.Name
Copy-Item -Path $match.FullName -Destination $dst -Force
}
$dst = Join-Path $libDst (Split-Path -Leaf $src)
Copy-Item -Path $src -Destination $dst -Force
}

$archive = Join-Path $outDir ("cpp-sdk-v2-{0}.tgz" -f $Rid)
Expand All @@ -96,21 +99,38 @@ steps:
New-SdkArchive -Rid 'win-x64' -NativeArtifact 'cpp-native-win-x64' -Files @(
'foundry_local.dll',
'foundry_local.pdb',
'foundry_local.lib'
'foundry_local.lib',
'Microsoft.Windows.AI.MachineLearning.dll',
'DirectML.dll',
'onnxruntime.dll',
'onnxruntime-genai.dll',
'?onnxruntime_providers_*.dll'
)

New-SdkArchive -Rid 'win-arm64' -NativeArtifact 'cpp-native-win-arm64' -Files @(
'foundry_local.dll',
'foundry_local.pdb',
'foundry_local.lib'
'foundry_local.lib',
'Microsoft.Windows.AI.MachineLearning.dll',
'DirectML.dll',
'onnxruntime.dll',
'onnxruntime-genai.dll',
'?onnxruntime_providers_*.dll'
)

New-SdkArchive -Rid 'linux-x64' -NativeArtifact 'cpp-native-linux-x64' -Files @(
'libfoundry_local.so'
'libfoundry_local.so',
'libonnxruntime-genai.so',
'?libonnxruntime-genai*.so',
'?libonnxruntime_providers_*.so',
'libonnxruntime.so*'
)

New-SdkArchive -Rid 'osx-arm64' -NativeArtifact 'cpp-native-osx-arm64' -Files @(
'libfoundry_local.dylib'
'libfoundry_local.dylib',
'libonnxruntime-genai.dylib',
'libonnxruntime*.dylib',
'?libonnxruntime_providers_*.dylib'
)

Write-Host "Staged archives:"
Expand Down
1 change: 1 addition & 0 deletions .pipelines/v2/templates/steps-pack-js.yml
Original file line number Diff line number Diff line change
Expand Up @@ -74,6 +74,7 @@ steps:
$dst = '${{ parameters.outputDir }}'
New-Item -ItemType Directory -Force -Path $dst | Out-Null
Set-Location "$(Build.SourcesDirectory)/sdk_v2/js"
Copy-Item "$(Build.SourcesDirectory)/sdk_v2/deps_versions.json" -Destination "deps_versions.json" -Force
npm pack --pack-destination $dst
if ($LASTEXITCODE -ne 0) { exit $LASTEXITCODE }
Get-ChildItem $dst | ForEach-Object { Write-Host " $($_.Name) $($_.Length) bytes" }
Expand Down
Loading
Loading