Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
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
28 changes: 14 additions & 14 deletions Directory.Packages.props
Original file line number Diff line number Diff line change
Expand Up @@ -33,13 +33,13 @@
<!-- Application -->
<PackageVersion Include="FluentValidation.DependencyInjectionExtensions" Version="12.1.1" />
<PackageVersion Include="Riok.Mapperly" Version="4.3.1" />
<PackageVersion Include="Microsoft.FeatureManagement" Version="4.7.0" />
<PackageVersion Include="Microsoft.FeatureManagement.AspNetCore" Version="4.7.0" />
<PackageVersion Include="Microsoft.FeatureManagement" Version="4.8.0" />
<PackageVersion Include="Microsoft.FeatureManagement.AspNetCore" Version="4.8.0" />
<!-- Application references MiniProfiler.Shared only (host-agnostic); the ASP.NET Core / MVC
package is referenced by MMCA.Common.API, which owns the profiler UI and middleware. -->
<PackageVersion Include="MiniProfiler.Shared" Version="4.5.4" />
<PackageVersion Include="MiniProfiler.AspNetCore.Mvc" Version="4.5.4" />
<PackageVersion Include="Scalar.AspNetCore" Version="2.17.7" />
<PackageVersion Include="Scalar.AspNetCore" Version="2.17.10" />
<PackageVersion Include="Scrutor" Version="7.0.0" />
<PackageVersion Include="System.Linq.Dynamic.Core" Version="1.7.4" />
<!-- Infrastructure -->
Expand All @@ -51,7 +51,7 @@
OpenTelemetry.Api below) so the fix flows to consumers through the published package graph.
Moved to the 3.x line on 2026-08-28: both dependents constrain MessagePack with a lower
bound only, so the major bump restores and builds clean and carries the same fix. -->
<PackageVersion Include="MessagePack" Version="3.1.9" />
<PackageVersion Include="MessagePack" Version="3.1.10" />
<PackageVersion Include="Microsoft.EntityFrameworkCore.Cosmos" Version="10.0.12" />
<PackageVersion Include="Microsoft.EntityFrameworkCore.Design" Version="10.0.12" />
<PackageVersion Include="Microsoft.EntityFrameworkCore.Sqlite" Version="10.0.12" />
Expand All @@ -67,7 +67,7 @@
<PackageVersion Include="Npgsql.EntityFrameworkCore.PostgreSQL" Version="10.0.3" />
<PackageVersion Include="Microsoft.EntityFrameworkCore.Tools" Version="10.0.12" />
<PackageVersion Include="MiniProfiler.EntityFrameworkCore" Version="4.5.4" />
<PackageVersion Include="StackExchange.Redis" Version="3.3.0" />
<PackageVersion Include="StackExchange.Redis" Version="3.3.1" />
<!-- Two-level cache (L1 in-process + L2 distributed) behind the opt-in AddCommonHybridCache
(HybridCacheService). Deliberately writes under its own disjoint 'hc:' keyspace so it can
never cross-read an entry DistributedCacheService wrote: two serialization formats sharing
Expand Down Expand Up @@ -112,12 +112,12 @@
hand-rolled HttpClient against the Messages API, and the request/response shapes track the
API from the vendor instead of from this repo. Its only non-BCL dependency is
Microsoft.Extensions.AI.Abstractions, the same package the entry above already brings. -->
<PackageVersion Include="Anthropic" Version="12.49.0" />
<PackageVersion Include="Anthropic" Version="12.51.0" />
<!-- The OpenAI adapter (MMCA.Common.AI.OpenAI): Microsoft.Extensions.AI.OpenAI is Microsoft's
AsIChatClient adapter over the official OpenAI .NET SDK and tracks the Microsoft.Extensions.AI
line above, so the two bump together; OpenAI is referenced directly by the adapter project so
the vendor SDK is pinned here like Anthropic is, not floated by the adapter's own floor. -->
<PackageVersion Include="Microsoft.Extensions.AI.OpenAI" Version="10.10.0" />
<PackageVersion Include="Microsoft.Extensions.AI.OpenAI" Version="10.10.1" />
<PackageVersion Include="OpenAI" Version="2.14.0" />
<!-- Messaging (MassTransit) -->
<!-- Pinned to v8 (free). v9.x introduced a commercial license requirement; the bus fails the
Expand All @@ -132,7 +132,7 @@
clients the MassTransit v8 custom-clients Host() overload takes. 7.20.2 is the first line with
working emulator admin-plane support (>= 7.20.1 required), and it also lifts the older
transitive MassTransit.Azure.ServiceBus.Core would otherwise resolve. -->
<PackageVersion Include="Azure.Messaging.ServiceBus" Version="7.20.2" />
<PackageVersion Include="Azure.Messaging.ServiceBus" Version="7.21.0" />
<!-- Native push (ADR-044): Azure Notification Hubs installations + FCM v1 / APNs native sends. -->
<PackageVersion Include="Microsoft.Azure.NotificationHubs" Version="4.2.0" />
<!-- Managed file storage + avatar image normalization (ADR-045). ImageSharp is under the
Expand Down Expand Up @@ -177,7 +177,7 @@
<PackageVersion Include="Microsoft.Extensions.Http" Version="10.0.12" />
<PackageVersion Include="Microsoft.Extensions.Localization" Version="10.0.12" />
<PackageVersion Include="Microsoft.Extensions.Options.DataAnnotations" Version="10.0.12" />
<PackageVersion Include="MudBlazor" Version="9.10.0" />
<PackageVersion Include="MudBlazor" Version="9.11.0" />
<PackageVersion Include="Polly" Version="8.8.0" />
<!-- Circuit breaker on the outbox broker-publish path (MMCA.Common.Infrastructure). Polly.Core
rather than the Polly meta-package: Core carries the v8 resilience-pipeline API on its own,
Expand Down Expand Up @@ -224,15 +224,15 @@
binds to the MAUI train: bump together with Microsoft.Maui.Controls. -->
<PackageVersion Include="ZXing.Net.Maui.Controls" Version="0.10.4" />
<!-- Analyzers -->
<PackageVersion Include="Meziantou.Analyzer" Version="3.0.270" />
<PackageVersion Include="Meziantou.Analyzer" Version="3.0.290" />
<!-- Public API surface gate (RS0016/RS0017): every packable Source project carries a
PublicAPI.Shipped.txt baseline, so adding or removing a public member is a deliberate,
reviewable diff instead of an accident discovered by a consumer. Source-only (see the
PublicApiAnalyzers ItemGroup in Directory.Build.props). -->
<PackageVersion Include="Microsoft.CodeAnalysis.PublicApiAnalyzers" Version="5.6.0" />
<PackageVersion Include="Microsoft.VisualStudio.Threading.Analyzers" Version="18.7.23" />
<PackageVersion Include="Roslynator.Analyzers" Version="5.0.0" />
<PackageVersion Include="SonarAnalyzer.CSharp" Version="10.34.0.3385" />
<PackageVersion Include="SonarAnalyzer.CSharp" Version="10.35.0.4138" />
<PackageVersion Include="StyleCop.Analyzers" Version="1.2.0-beta.556" />
<!-- Testing -->
<!-- bUnit v2 (BunitContext / Render API) is the line compatible with xUnit v3 / Microsoft Testing Platform. -->
Expand All @@ -245,7 +245,7 @@
<!-- Pin the transitive Commons explicitly to 4.12.0 (= Playwright 4.12.0's floor): CPM does not pin
transitives, so a stale-cache restore could otherwise drift it down to 4.7.2 and dirty the lock. -->
<PackageVersion Include="Deque.AxeCore.Commons" Version="4.13.0" />
<PackageVersion Include="Microsoft.Playwright" Version="1.62.0" />
<PackageVersion Include="Microsoft.Playwright" Version="1.63.0" />
<!-- Redis integration tier only (Tests/Core/MMCA.Common.Infrastructure.Redis.Tests, outside the
.slnx, own CI job): a real Redis is the only way to assert the storage FORMAT the cache
writes, which a Mock<IDistributedCache> answers for and therefore cannot get wrong.
Expand Down Expand Up @@ -276,7 +276,7 @@
<PackageVersion Include="SSH.NET" Version="2026.0.0" />
<PackageVersion Include="Microsoft.Extensions.Caching.StackExchangeRedis" Version="10.0.11" />
<PackageVersion Include="NetArchTest.eNhancedEdition" Version="1.4.5" />
<PackageVersion Include="coverlet.collector" Version="10.0.1" />
<PackageVersion Include="coverlet.collector" Version="10.1.0" />
<PackageVersion Include="AwesomeAssertions" Version="9.6.0" />
<!-- Benchmark smoke harness only (Tests/Performance, outside the .slnx) — rubric §12. -->
<PackageVersion Include="BenchmarkDotNet" Version="0.15.8" />
Expand All @@ -285,7 +285,7 @@
expiry); version matches the Microsoft.Extensions dotnet/extensions family (Http.Resilience,
ServiceDiscovery) above. -->
<PackageVersion Include="Microsoft.Extensions.TimeProvider.Testing" Version="10.10.0" />
<PackageVersion Include="Moq" Version="4.20.72" />
<PackageVersion Include="Moq" Version="4.21.0" />
<!-- Test tier only (Tests/Hosting/MMCA.Common.Aspire.Tests): an in-memory metric reader is the
only way to prove that the Telemetry:Disable*Metrics knobs actually drop a stream, rather
than merely skipping one AddXInstrumentation call that another component re-adds. Version
Expand Down
18 changes: 9 additions & 9 deletions Source/Core/MMCA.Common.AI.Anthropic/packages.lock.json
Original file line number Diff line number Diff line change
Expand Up @@ -4,18 +4,18 @@
"net10.0": {
"Anthropic": {
"type": "Direct",
"requested": "[12.49.0, )",
"resolved": "12.49.0",
"contentHash": "uPz9LkpCfelVXZUxmnBKgdn6SyHwmdD0IYnJsvwJOk8SIlTEX62V1kr1EoxnmHSlUIcKIhGnZzvmuMHz+B9MMQ==",
"requested": "[12.51.0, )",
"resolved": "12.51.0",
"contentHash": "Lf8WgFhsqNzVkfj87LsLxdXpa2KdJ2/JB433eA1MuCN+3lX5gSGjM3oBcdSDgd3SBEI3xsdihBAPijuq5b6FAg==",
"dependencies": {
"Microsoft.Extensions.AI.Abstractions": "10.5.1"
}
},
"Meziantou.Analyzer": {
"type": "Direct",
"requested": "[3.0.270, )",
"resolved": "3.0.270",
"contentHash": "E2OnRZmSZ3ZLhhFj0q/En47RhWrmLEVtsRsNZIW12ecQLT9y4Wimo+A8x/kuhtzLlePJ9yPp7aPiSQx8a8H5mw=="
"requested": "[3.0.290, )",
"resolved": "3.0.290",
"contentHash": "vdSXgMEPil67EFwkcicjSCMnB7TdhUNiR1Fjw1P8MN+UeX6yP8wTb7cNT20H/ejHuUxkrxQS1Rz4QcJuMLmCkA=="
},
"Microsoft.CodeAnalysis.PublicApiAnalyzers": {
"type": "Direct",
Expand Down Expand Up @@ -43,9 +43,9 @@
},
"SonarAnalyzer.CSharp": {
"type": "Direct",
"requested": "[10.34.0.3385, )",
"resolved": "10.34.0.3385",
"contentHash": "FfjaQa9G9xdEyh14AYWeG6vLQ+2PZWkooI/w3cH5aGBGGeWmhjeWS+/luYoJDYgrXMI2ciBj42y6buhJJHO2ow=="
"requested": "[10.35.0.4138, )",
"resolved": "10.35.0.4138",
"contentHash": "T5o/tuyPw9pHRkyWxW07TkSri4I4pLpqwH922JuhphDjHAM7BUHaGE67h/w+65evHsIar8mYB2Ey6OmOLj9QDw=="
},
"StyleCop.Analyzers": {
"type": "Direct",
Expand Down
26 changes: 13 additions & 13 deletions Source/Core/MMCA.Common.AI.OpenAI/packages.lock.json
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,9 @@
"net10.0": {
"Meziantou.Analyzer": {
"type": "Direct",
"requested": "[3.0.270, )",
"resolved": "3.0.270",
"contentHash": "E2OnRZmSZ3ZLhhFj0q/En47RhWrmLEVtsRsNZIW12ecQLT9y4Wimo+A8x/kuhtzLlePJ9yPp7aPiSQx8a8H5mw=="
"requested": "[3.0.290, )",
"resolved": "3.0.290",
"contentHash": "vdSXgMEPil67EFwkcicjSCMnB7TdhUNiR1Fjw1P8MN+UeX6yP8wTb7cNT20H/ejHuUxkrxQS1Rz4QcJuMLmCkA=="
},
"Microsoft.CodeAnalysis.PublicApiAnalyzers": {
"type": "Direct",
Expand All @@ -16,12 +16,12 @@
},
"Microsoft.Extensions.AI.OpenAI": {
"type": "Direct",
"requested": "[10.10.0, )",
"resolved": "10.10.0",
"contentHash": "Z5uwqIJ0tGp50P+ark1/qb7wFa6inIRKvaR3L9Frtf7M9uGIil/cz4k9S7va8HMrXzE/xjIJqd6A9cJ7WlMpgg==",
"requested": "[10.10.1, )",
"resolved": "10.10.1",
"contentHash": "0cYykDvDaTyLHA73DzjVzsNO/GNOutuliPrhQ5kzKSK4BuUnpFyHnPU63XqD4jsz+FCNZefi19TGc+zkaabIBA==",
"dependencies": {
"Microsoft.Extensions.AI.Abstractions": "10.10.0",
"OpenAI": "2.13.0"
"Microsoft.Extensions.AI.Abstractions": "10.10.1",
"OpenAI": "2.14.0"
}
},
"Microsoft.VisualStudio.Threading.Analyzers": {
Expand Down Expand Up @@ -53,9 +53,9 @@
},
"SonarAnalyzer.CSharp": {
"type": "Direct",
"requested": "[10.34.0.3385, )",
"resolved": "10.34.0.3385",
"contentHash": "FfjaQa9G9xdEyh14AYWeG6vLQ+2PZWkooI/w3cH5aGBGGeWmhjeWS+/luYoJDYgrXMI2ciBj42y6buhJJHO2ow=="
"requested": "[10.35.0.4138, )",
"resolved": "10.35.0.4138",
"contentHash": "T5o/tuyPw9pHRkyWxW07TkSri4I4pLpqwH922JuhphDjHAM7BUHaGE67h/w+65evHsIar8mYB2Ey6OmOLj9QDw=="
},
"StyleCop.Analyzers": {
"type": "Direct",
Expand All @@ -68,8 +68,8 @@
},
"Microsoft.Extensions.AI.Abstractions": {
"type": "Transitive",
"resolved": "10.10.0",
"contentHash": "frBHj2ckpevA+KdDLikxv8oxGPrJiyTvaiblYp+vtVEt0q6J73XP5m2SICm86nFK6rl+L1GCKxIy4S5Lb3p2kQ=="
"resolved": "10.10.1",
"contentHash": "Kz6ezQfRb9x2TkIWyaXkVAfpvyoAlEDfC59klPrdr2XD5WM4HNw+PREAZ+Fo43GPldtX+E0i1aYzMFQ/zXYMLg=="
},
"Microsoft.Extensions.Caching.Abstractions": {
"type": "Transitive",
Expand Down
12 changes: 6 additions & 6 deletions Source/Core/MMCA.Common.AI/packages.lock.json
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,9 @@
"net10.0": {
"Meziantou.Analyzer": {
"type": "Direct",
"requested": "[3.0.270, )",
"resolved": "3.0.270",
"contentHash": "E2OnRZmSZ3ZLhhFj0q/En47RhWrmLEVtsRsNZIW12ecQLT9y4Wimo+A8x/kuhtzLlePJ9yPp7aPiSQx8a8H5mw=="
"requested": "[3.0.290, )",
"resolved": "3.0.290",
"contentHash": "vdSXgMEPil67EFwkcicjSCMnB7TdhUNiR1Fjw1P8MN+UeX6yP8wTb7cNT20H/ejHuUxkrxQS1Rz4QcJuMLmCkA=="
},
"Microsoft.CodeAnalysis.PublicApiAnalyzers": {
"type": "Direct",
Expand Down Expand Up @@ -44,9 +44,9 @@
},
"SonarAnalyzer.CSharp": {
"type": "Direct",
"requested": "[10.34.0.3385, )",
"resolved": "10.34.0.3385",
"contentHash": "FfjaQa9G9xdEyh14AYWeG6vLQ+2PZWkooI/w3cH5aGBGGeWmhjeWS+/luYoJDYgrXMI2ciBj42y6buhJJHO2ow=="
"requested": "[10.35.0.4138, )",
"resolved": "10.35.0.4138",
"contentHash": "T5o/tuyPw9pHRkyWxW07TkSri4I4pLpqwH922JuhphDjHAM7BUHaGE67h/w+65evHsIar8mYB2Ey6OmOLj9QDw=="
},
"StyleCop.Analyzers": {
"type": "Direct",
Expand Down
18 changes: 9 additions & 9 deletions Source/Core/MMCA.Common.Application/packages.lock.json
Original file line number Diff line number Diff line change
Expand Up @@ -14,9 +14,9 @@
},
"Meziantou.Analyzer": {
"type": "Direct",
"requested": "[3.0.270, )",
"resolved": "3.0.270",
"contentHash": "E2OnRZmSZ3ZLhhFj0q/En47RhWrmLEVtsRsNZIW12ecQLT9y4Wimo+A8x/kuhtzLlePJ9yPp7aPiSQx8a8H5mw=="
"requested": "[3.0.290, )",
"resolved": "3.0.290",
"contentHash": "vdSXgMEPil67EFwkcicjSCMnB7TdhUNiR1Fjw1P8MN+UeX6yP8wTb7cNT20H/ejHuUxkrxQS1Rz4QcJuMLmCkA=="
},
"Microsoft.CodeAnalysis.PublicApiAnalyzers": {
"type": "Direct",
Expand All @@ -38,9 +38,9 @@
},
"Microsoft.FeatureManagement": {
"type": "Direct",
"requested": "[4.7.0, )",
"resolved": "4.7.0",
"contentHash": "f+XutOuZZLNq6OJV8z7nys+k89W3PUsoJJgrbYTXd20GvDyJfQ9A8o2MSU8FZT7DY6jQOq3I4KO/+NHsXHdACw==",
"requested": "[4.8.0, )",
"resolved": "4.8.0",
"contentHash": "p1dzpXano+DTet2/hQGb+J91QonETabPYmO5BdqpsWOPq2C3WsWbm1BICTNlWqL81EVGrRrjpQh9mRNX55ZKmQ==",
"dependencies": {
"Microsoft.Extensions.Caching.Memory": "10.0.11",
"Microsoft.Extensions.Configuration": "10.0.11",
Expand Down Expand Up @@ -93,9 +93,9 @@
},
"SonarAnalyzer.CSharp": {
"type": "Direct",
"requested": "[10.34.0.3385, )",
"resolved": "10.34.0.3385",
"contentHash": "FfjaQa9G9xdEyh14AYWeG6vLQ+2PZWkooI/w3cH5aGBGGeWmhjeWS+/luYoJDYgrXMI2ciBj42y6buhJJHO2ow=="
"requested": "[10.35.0.4138, )",
"resolved": "10.35.0.4138",
"contentHash": "T5o/tuyPw9pHRkyWxW07TkSri4I4pLpqwH922JuhphDjHAM7BUHaGE67h/w+65evHsIar8mYB2Ey6OmOLj9QDw=="
},
"StyleCop.Analyzers": {
"type": "Direct",
Expand Down
12 changes: 6 additions & 6 deletions Source/Core/MMCA.Common.Domain/packages.lock.json
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,9 @@
"net10.0": {
"Meziantou.Analyzer": {
"type": "Direct",
"requested": "[3.0.270, )",
"resolved": "3.0.270",
"contentHash": "E2OnRZmSZ3ZLhhFj0q/En47RhWrmLEVtsRsNZIW12ecQLT9y4Wimo+A8x/kuhtzLlePJ9yPp7aPiSQx8a8H5mw=="
"requested": "[3.0.290, )",
"resolved": "3.0.290",
"contentHash": "vdSXgMEPil67EFwkcicjSCMnB7TdhUNiR1Fjw1P8MN+UeX6yP8wTb7cNT20H/ejHuUxkrxQS1Rz4QcJuMLmCkA=="
},
"Microsoft.CodeAnalysis.PublicApiAnalyzers": {
"type": "Direct",
Expand Down Expand Up @@ -34,9 +34,9 @@
},
"SonarAnalyzer.CSharp": {
"type": "Direct",
"requested": "[10.34.0.3385, )",
"resolved": "10.34.0.3385",
"contentHash": "FfjaQa9G9xdEyh14AYWeG6vLQ+2PZWkooI/w3cH5aGBGGeWmhjeWS+/luYoJDYgrXMI2ciBj42y6buhJJHO2ow=="
"requested": "[10.35.0.4138, )",
"resolved": "10.35.0.4138",
"contentHash": "T5o/tuyPw9pHRkyWxW07TkSri4I4pLpqwH922JuhphDjHAM7BUHaGE67h/w+65evHsIar8mYB2Ey6OmOLj9QDw=="
},
"StyleCop.Analyzers": {
"type": "Direct",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@
<FrameworkReference Include="Microsoft.AspNetCore.App" />
</ItemGroup>
<ItemGroup>
<PackageReference Include="Azure.Messaging.ServiceBus" VersionOverride="7.21.0" />
<PackageReference Include="Microsoft.AspNetCore.SignalR.StackExchangeRedis" />
<!-- Security pin: forces the transitive MessagePack (pulled by SignalR.StackExchangeRedis) to a
patched version. See the MessagePack note in Directory.Packages.props. -->
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -77,7 +77,7 @@ public DataSourceResolver(

_substituteEngine = EnginePreference
.Where(_configuredEngines.Contains)
.Select(engine => (DataSource?)engine)
.Cast<DataSource?>()
.FirstOrDefault();

if (_substituteEngine is { } substitute && substitute != DataSource.SQLServer)
Expand Down
Loading
Loading