Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
Show all changes
32 commits
Select commit Hold shift + click to select a range
70b2573
Migrate Microsoft.Maui.Essentials.AI from dotnet/maui into maui-labs
mattleibow Apr 28, 2026
ad8574c
Add EssentialsAI job and publish stage to devflow-official.yml
mattleibow Apr 28, 2026
c76adda
Fix build: Controls.Maps package, platform entry points, strip Catego…
mattleibow Apr 28, 2026
3a647e5
Address PR review comments
mattleibow Apr 28, 2026
c7a470b
Merge branch 'main' into mattleibow/ai-migration-plan
mattleibow Apr 29, 2026
341dac6
Remove direct nuget.org feed from NuGet.config
mattleibow Apr 29, 2026
94a8648
Enable cross-platform Windows TFM restore and remove nuget.org
mattleibow Apr 29, 2026
d39547c
Retry CI - packages should be mirrored now
mattleibow Apr 29, 2026
998ad5f
Retry CI - Maps package now mirrored
mattleibow Apr 29, 2026
a161b10
Retry CI - Microsoft.Maui.Maps now mirrored
mattleibow Apr 29, 2026
42fe5aa
Select Xcode 26 for EssentialsAI CI build
mattleibow Apr 29, 2026
0afb5e7
Use Xcode 26.3 for EssentialsAI CI
mattleibow Apr 29, 2026
785cc44
Fix sample build: conditional Windows TFM and duplicate splash screen
mattleibow Apr 29, 2026
2279b97
Suppress CA1416 in EssentialsAI library
mattleibow Apr 29, 2026
663adc3
Suppress CA1416 in device tests project
mattleibow Apr 29, 2026
b7a0450
Fix duplicate dotnet_bot.png bundle resource in device tests
mattleibow Apr 29, 2026
e5fbaed
Add Apple native artifact flow for EssentialsAI CI
mattleibow Apr 30, 2026
237c907
Eliminate macOS job duplication via dynamic matrix
mattleibow Apr 30, 2026
8dfe708
Eliminate Windows step duplication with dynamic needs
mattleibow Apr 30, 2026
03c841d
Merge branch 'main' into mattleibow/ai-migration-plan
mattleibow Apr 30, 2026
7696aa6
Reset _build.yml to main
mattleibow Apr 30, 2026
e8a7f24
Custom EssentialsAI CI with sequential macOS→Windows flow
mattleibow Apr 30, 2026
447b0a9
Eliminate duplication: add pre-build-artifact input to _build.yml
mattleibow Apr 30, 2026
5b23d74
Use JSON array for pre-build-artifacts input
mattleibow Apr 30, 2026
a78e655
Simplify pre-build-artifact to plain string
mattleibow Apr 30, 2026
def9d3a
Trigger CI workflows
mattleibow Apr 30, 2026
faaab46
Address review findings and rename sample project
mattleibow Apr 30, 2026
c149a3b
Fix benchmark build: remove unused EssentialsAISample.Models using
mattleibow Apr 30, 2026
cc3103a
Pack product README instead of repo-root README
mattleibow Apr 30, 2026
f4140b9
Add NuGet consumer README, move dev docs to CONTRIBUTING
mattleibow Apr 30, 2026
80ac06d
Merge branch 'main' into mattleibow/ai-migration-plan
mattleibow Apr 30, 2026
a31202b
Merge remote-tracking branch 'origin/main' into mattleibow/ai-migrati…
Copilot May 2, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
37 changes: 37 additions & 0 deletions .github/workflows/ci-essentialsai.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
name: CI - EssentialsAI

on:
push:
branches: [main]
paths:
- 'src/AI/**'
- 'tests/AI/**'
- 'samples/Microsoft.Maui.Essentials.AI.Sample/**'
- 'eng/**'
- 'Directory.Build.props'
- 'Directory.Build.targets'
- 'Directory.Packages.props'
- 'global.json'
- 'NuGet.config'
pull_request:
types: [opened, synchronize, reopened, edited]
branches: [main]
paths:
- 'src/AI/**'
- 'tests/AI/**'
- 'samples/Microsoft.Maui.Essentials.AI.Sample/**'
- 'eng/**'
- 'Directory.Build.props'
- 'Directory.Build.targets'
- 'Directory.Packages.props'
- 'global.json'
- 'NuGet.config'

jobs:
build:
uses: ./.github/workflows/_build.yml
with:
project-path: src/AI/EssentialsAI.slnf
project-name: essentialsai
Comment thread
mattleibow marked this conversation as resolved.
run-tests: true
pack: true
29 changes: 29 additions & 0 deletions Directory.Packages.props
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,8 @@

<!-- Microsoft Extensions (versions from eng/Versions.props, flowing via maestro) -->
<ItemGroup Label="Extensions">
<PackageVersion Include="Microsoft.Extensions.DependencyInjection.Abstractions" Version="$(MicrosoftExtensionsLoggingAbstractionsVersion)" />
<PackageVersion Include="Microsoft.Extensions.Hosting.Abstractions" Version="$(MicrosoftExtensionsLoggingAbstractionsVersion)" />
Comment thread
mattleibow marked this conversation as resolved.
Outdated
<PackageVersion Include="Microsoft.Extensions.Http" Version="$(MicrosoftExtensionsHttpVersion)" />
<PackageVersion Include="Microsoft.Extensions.Hosting" Version="$(MicrosoftExtensionsHostingVersion)" />
<PackageVersion Include="Microsoft.Extensions.Logging.Abstractions" Version="$(MicrosoftExtensionsLoggingAbstractionsVersion)" />
Expand Down Expand Up @@ -53,6 +55,33 @@
<PackageVersion Include="GirCore.GdkPixbuf-2.0" Version="0.7.0" />
</ItemGroup>

<!-- EssentialsAI dependencies -->
<ItemGroup Label="EssentialsAI">
<PackageVersion Include="Microsoft.Extensions.AI.Abstractions" Version="$(MicrosoftExtensionsAIAbstractionsVersion)" />
<PackageVersion Include="Microsoft.Extensions.AI" Version="$(MicrosoftExtensionsAIVersion)" />
<!-- Sample app: Microsoft Agents AI -->
<PackageVersion Include="Microsoft.Agents.AI" Version="$(MicrosoftAgentsAIVersion)" />
<PackageVersion Include="Microsoft.Agents.AI.Hosting" Version="$(MicrosoftAgentsAIHostingVersion)" />
<PackageVersion Include="Microsoft.Agents.AI.Workflows" Version="$(MicrosoftAgentsAIWorkflowsVersion)" />
<PackageVersion Include="Microsoft.Agents.AI.Workflows.Generators" Version="$(MicrosoftAgentsAIWorkflowsGeneratorsVersion)" />
<!-- Sample app: additional packages (pinned) -->
<PackageVersion Include="CommunityToolkit.Mvvm" Version="8.4.0" />
<PackageVersion Include="Markdig" Version="0.31.0" />
<PackageVersion Include="Microsoft.Extensions.AI.OpenAI" Version="10.0.0-preview.1.25560.10" />
Comment thread
mattleibow marked this conversation as resolved.
<PackageVersion Include="OpenAI" Version="2.6.0" />
<!-- Unit tests -->
<PackageVersion Include="NSubstitute" Version="5.3.0" />
<!-- Benchmarks -->
<PackageVersion Include="BenchmarkDotNet" Version="0.13.10" />
<!-- Device test runner (OSS) -->
<PackageVersion Include="DeviceRunners.UITesting.Maui" Version="$(DeviceRunnersVersion)" />
<PackageVersion Include="DeviceRunners.UITesting.Xunit" Version="$(DeviceRunnersVersion)" />
<PackageVersion Include="DeviceRunners.VisualRunners.Xunit" Version="$(DeviceRunnersVersion)" />
<PackageVersion Include="DeviceRunners.VisualRunners.Maui" Version="$(DeviceRunnersVersion)" />
<PackageVersion Include="DeviceRunners.XHarness.Xunit" Version="$(DeviceRunnersVersion)" />
<PackageVersion Include="DeviceRunners.XHarness.Maui" Version="$(DeviceRunnersVersion)" />
</ItemGroup>

<!-- Testing (Microsoft.NET.Test.Sdk and xunit.runner.visualstudio are
implicitly provided by the Arcade SDK — do not define PackageVersion for them) -->
<ItemGroup Label="Testing">
Expand Down
9 changes: 9 additions & 0 deletions MauiLabs.slnx
Original file line number Diff line number Diff line change
Expand Up @@ -11,8 +11,12 @@
<Project Path="samples/DevFlow.Sample.Linux/DevFlow.Sample.Linux.csproj" />
<Project Path="samples/DevFlow.Sample.MacOS/DevFlow.Sample.MacOS.csproj" />
<Project Path="samples/DevFlow.Sample/DevFlow.Sample.csproj" />
<Project Path="samples/Microsoft.Maui.Essentials.AI.Sample/Microsoft.Maui.Essentials.AI.Sample.csproj" />
</Folder>
<Folder Name="/src/" />
<Folder Name="/src/AI/">
<Project Path="src/AI/Microsoft.Maui.Essentials.AI/Microsoft.Maui.Essentials.AI.csproj" />
</Folder>
<Folder Name="/src/Cli/">
<Project Path="src/Cli/Microsoft.Maui.Cli.UnitTests/Microsoft.Maui.Cli.UnitTests.csproj" />
<Project Path="src/Cli/Microsoft.Maui.Cli/Microsoft.Maui.Cli.csproj" />
Expand All @@ -30,5 +34,10 @@
<Project Path="src/DevFlow/Microsoft.Maui.DevFlow.Tests/Microsoft.Maui.DevFlow.Tests.csproj" />
</Folder>
<Folder Name="/tests/" />
<Folder Name="/tests/AI/">
<Project Path="tests/AI/Microsoft.Maui.Essentials.AI.Benchmarks/Microsoft.Maui.Essentials.AI.Benchmarks.csproj" />
<Project Path="tests/AI/Microsoft.Maui.Essentials.AI.DeviceTests/Microsoft.Maui.Essentials.AI.DeviceTests.csproj" />
<Project Path="tests/AI/Microsoft.Maui.Essentials.AI.UnitTests/Microsoft.Maui.Essentials.AI.UnitTests.csproj" />
</Folder>
<Folder Name="/tests/DevFlow/" />
</Solution>
1 change: 1 addition & 0 deletions NuGet.config
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@
<add key="dotnet-eng" value="https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-eng/nuget/v3/index.json" protocolVersion="3" />
<add key="dotnet10" value="https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet10/nuget/v3/index.json" protocolVersion="3" />
<add key="dotnet11" value="https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet11/nuget/v3/index.json" protocolVersion="3" />
<add key="nuget.org" value="https://api.nuget.org/v3/index.json" protocolVersion="3" />

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🔴 CRITICAL — Direct nuget.org feed violates repo policy (3/3 reviewers)

Repo policy (AGENTS.md, NuGet.config instructions) explicitly states: "Do NOT add nuget.org as a direct source." The official Azure DevOps build (eng/pipelines/devflow-official.yml) uses enableMicrobuild: true which enforces CFS network isolation — direct nuget.org will be blocked in official signed builds, causing restore failures.

Recommendation: Remove this line. All public packages (DeviceRunners, Microsoft.Extensions.AI, OpenAI, etc.) should be available via the existing dotnet-public dnceng proxy feed. If specific packages are missing, request they be added to the dnceng feed configuration.

@mattleibow mattleibow Apr 28, 2026

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Acknowledged — the policy violation is real. The nuget.org feed was added because DeviceRunners.* packages (mattleibow/DeviceRunners) and Microsoft.Agents.AI.* packages are not yet available on the dnceng proxy feeds. Once they are proxied, nuget.org can be removed. Tracking this as a follow-up item.

</packageSources>
<disabledPackageSources>
<clear />
Expand Down
Loading
Loading