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
188 changes: 94 additions & 94 deletions eng/Version.Details.xml

Large diffs are not rendered by default.

124 changes: 62 additions & 62 deletions eng/Versions.props
Original file line number Diff line number Diff line change
Expand Up @@ -11,14 +11,14 @@
<!--
When StabilizePackageVersion is set to 'true', this branch will produce stable outputs for 'Shipping' packages
-->
<StabilizePackageVersion Condition="'$(StabilizePackageVersion)' == ''">false</StabilizePackageVersion>
<StabilizePackageVersion Condition="'$(StabilizePackageVersion)' == ''">true</StabilizePackageVersion>
<!--
When DotNetFinalVersionKind is set to 'release' (only for the release branches),
the build will produce stable outputs for 'Shipping' packages.

This is used by the Arcade SDK (Publish.proj) to determine if the build is a release build or not.
-->
<DotNetFinalVersionKind />
<DotNetFinalVersionKind>release</DotNetFinalVersionKind>
<!-- Enabling this rule will cause build failures on undocumented public APIs. -->
<SkipArcadeNoWarnCS1591>true</SkipArcadeNoWarnCS1591>
</PropertyGroup>
Expand All @@ -34,55 +34,55 @@
-->
<PropertyGroup Label="Automated Maestro dependency updates">
<!-- Packages from dotnet/runtime -->
<MicrosoftBclAsyncInterfacesVersion>9.0.6</MicrosoftBclAsyncInterfacesVersion>
<MicrosoftBclTimeProviderVersion>9.0.6</MicrosoftBclTimeProviderVersion>
<MicrosoftExtensionsCachingAbstractionsVersion>9.0.6</MicrosoftExtensionsCachingAbstractionsVersion>
<MicrosoftExtensionsCachingMemoryVersion>9.0.6</MicrosoftExtensionsCachingMemoryVersion>
<MicrosoftExtensionsConfigurationAbstractionsVersion>9.0.6</MicrosoftExtensionsConfigurationAbstractionsVersion>
<MicrosoftExtensionsConfigurationBinderVersion>9.0.6</MicrosoftExtensionsConfigurationBinderVersion>
<MicrosoftExtensionsConfigurationJsonVersion>9.0.6</MicrosoftExtensionsConfigurationJsonVersion>
<MicrosoftExtensionsConfigurationVersion>9.0.6</MicrosoftExtensionsConfigurationVersion>
<MicrosoftExtensionsDependencyInjectionAbstractionsVersion>9.0.6</MicrosoftExtensionsDependencyInjectionAbstractionsVersion>
<MicrosoftExtensionsDependencyInjectionVersion>9.0.6</MicrosoftExtensionsDependencyInjectionVersion>
<MicrosoftExtensionsDiagnosticsVersion>9.0.6</MicrosoftExtensionsDiagnosticsVersion>
<MicrosoftExtensionsHostingAbstractionsVersion>9.0.6</MicrosoftExtensionsHostingAbstractionsVersion>
<MicrosoftExtensionsHostingVersion>9.0.6</MicrosoftExtensionsHostingVersion>
<MicrosoftExtensionsHttpVersion>9.0.6</MicrosoftExtensionsHttpVersion>
<MicrosoftExtensionsLoggingAbstractionsVersion>9.0.6</MicrosoftExtensionsLoggingAbstractionsVersion>
<MicrosoftExtensionsLoggingConfigurationVersion>9.0.6</MicrosoftExtensionsLoggingConfigurationVersion>
<MicrosoftExtensionsLoggingConsoleVersion>9.0.6</MicrosoftExtensionsLoggingConsoleVersion>
<MicrosoftExtensionsLoggingVersion>9.0.6</MicrosoftExtensionsLoggingVersion>
<MicrosoftExtensionsOptionsConfigurationExtensionsVersion>9.0.6</MicrosoftExtensionsOptionsConfigurationExtensionsVersion>
<MicrosoftExtensionsOptionsVersion>9.0.6</MicrosoftExtensionsOptionsVersion>
<MicrosoftNETCoreAppRefVersion>9.0.6</MicrosoftNETCoreAppRefVersion>
<MicrosoftNETCoreAppRuntimewinx64Version>9.0.6</MicrosoftNETCoreAppRuntimewinx64Version>
<SystemCollectionsImmutableVersion>9.0.6</SystemCollectionsImmutableVersion>
<SystemConfigurationConfigurationManagerVersion>9.0.6</SystemConfigurationConfigurationManagerVersion>
<SystemDiagnosticsDiagnosticSourceVersion>9.0.6</SystemDiagnosticsDiagnosticSourceVersion>
<SystemDiagnosticsPerformanceCounterVersion>9.0.6</SystemDiagnosticsPerformanceCounterVersion>
<SystemIOHashingVersion>9.0.6</SystemIOHashingVersion>
<SystemIOPipelinesVersion>9.0.6</SystemIOPipelinesVersion>
<SystemMemoryDataVersion>9.0.6</SystemMemoryDataVersion>
<SystemNetHttpJsonVersion>9.0.6</SystemNetHttpJsonVersion>
<SystemRuntimeCachingVersion>9.0.6</SystemRuntimeCachingVersion>
<SystemSecurityCryptographyPkcsVersion>9.0.6</SystemSecurityCryptographyPkcsVersion>
<SystemSecurityCryptographyXmlVersion>9.0.6</SystemSecurityCryptographyXmlVersion>
<SystemTextEncodingsWebVersion>9.0.6</SystemTextEncodingsWebVersion>
<SystemNumericsTensorsVersion>9.0.6</SystemNumericsTensorsVersion>
<SystemTextJsonVersion>9.0.6</SystemTextJsonVersion>
<SystemThreadingChannelsVersion>9.0.6</SystemThreadingChannelsVersion>
<MicrosoftBclAsyncInterfacesVersion>9.0.7</MicrosoftBclAsyncInterfacesVersion>
<MicrosoftBclTimeProviderVersion>9.0.7</MicrosoftBclTimeProviderVersion>
<MicrosoftExtensionsCachingAbstractionsVersion>9.0.7</MicrosoftExtensionsCachingAbstractionsVersion>
<MicrosoftExtensionsCachingMemoryVersion>9.0.7</MicrosoftExtensionsCachingMemoryVersion>
<MicrosoftExtensionsConfigurationAbstractionsVersion>9.0.7</MicrosoftExtensionsConfigurationAbstractionsVersion>
<MicrosoftExtensionsConfigurationBinderVersion>9.0.7</MicrosoftExtensionsConfigurationBinderVersion>
<MicrosoftExtensionsConfigurationJsonVersion>9.0.7</MicrosoftExtensionsConfigurationJsonVersion>
<MicrosoftExtensionsConfigurationVersion>9.0.7</MicrosoftExtensionsConfigurationVersion>
<MicrosoftExtensionsDependencyInjectionAbstractionsVersion>9.0.7</MicrosoftExtensionsDependencyInjectionAbstractionsVersion>
<MicrosoftExtensionsDependencyInjectionVersion>9.0.7</MicrosoftExtensionsDependencyInjectionVersion>
<MicrosoftExtensionsDiagnosticsVersion>9.0.7</MicrosoftExtensionsDiagnosticsVersion>
<MicrosoftExtensionsHostingAbstractionsVersion>9.0.7</MicrosoftExtensionsHostingAbstractionsVersion>
<MicrosoftExtensionsHostingVersion>9.0.7</MicrosoftExtensionsHostingVersion>
<MicrosoftExtensionsHttpVersion>9.0.7</MicrosoftExtensionsHttpVersion>
<MicrosoftExtensionsLoggingAbstractionsVersion>9.0.7</MicrosoftExtensionsLoggingAbstractionsVersion>
<MicrosoftExtensionsLoggingConfigurationVersion>9.0.7</MicrosoftExtensionsLoggingConfigurationVersion>
<MicrosoftExtensionsLoggingConsoleVersion>9.0.7</MicrosoftExtensionsLoggingConsoleVersion>
<MicrosoftExtensionsLoggingVersion>9.0.7</MicrosoftExtensionsLoggingVersion>
<MicrosoftExtensionsOptionsConfigurationExtensionsVersion>9.0.7</MicrosoftExtensionsOptionsConfigurationExtensionsVersion>
<MicrosoftExtensionsOptionsVersion>9.0.7</MicrosoftExtensionsOptionsVersion>
<MicrosoftNETCoreAppRefVersion>9.0.7</MicrosoftNETCoreAppRefVersion>
<MicrosoftNETCoreAppRuntimewinx64Version>9.0.7</MicrosoftNETCoreAppRuntimewinx64Version>
<SystemCollectionsImmutableVersion>9.0.7</SystemCollectionsImmutableVersion>
<SystemConfigurationConfigurationManagerVersion>9.0.7</SystemConfigurationConfigurationManagerVersion>
<SystemDiagnosticsDiagnosticSourceVersion>9.0.7</SystemDiagnosticsDiagnosticSourceVersion>
<SystemDiagnosticsPerformanceCounterVersion>9.0.7</SystemDiagnosticsPerformanceCounterVersion>
<SystemIOHashingVersion>9.0.7</SystemIOHashingVersion>
<SystemIOPipelinesVersion>9.0.7</SystemIOPipelinesVersion>
<SystemMemoryDataVersion>9.0.7</SystemMemoryDataVersion>
<SystemNetHttpJsonVersion>9.0.7</SystemNetHttpJsonVersion>
<SystemRuntimeCachingVersion>9.0.7</SystemRuntimeCachingVersion>
<SystemSecurityCryptographyPkcsVersion>9.0.7</SystemSecurityCryptographyPkcsVersion>
<SystemSecurityCryptographyXmlVersion>9.0.7</SystemSecurityCryptographyXmlVersion>
<SystemTextEncodingsWebVersion>9.0.7</SystemTextEncodingsWebVersion>
<SystemNumericsTensorsVersion>9.0.7</SystemNumericsTensorsVersion>
<SystemTextJsonVersion>9.0.7</SystemTextJsonVersion>
<SystemThreadingChannelsVersion>9.0.7</SystemThreadingChannelsVersion>
<!-- Dependencies from https://github.com/aspnet/AspNetCore -->
<MicrosoftAspNetCoreAppRefVersion>9.0.6</MicrosoftAspNetCoreAppRefVersion>
<MicrosoftAspNetCoreAppRuntimewinx64Version>9.0.6</MicrosoftAspNetCoreAppRuntimewinx64Version>
<MicrosoftAspNetCoreMvcTestingVersion>9.0.6</MicrosoftAspNetCoreMvcTestingVersion>
<MicrosoftAspNetCoreTestHostVersion>9.0.6</MicrosoftAspNetCoreTestHostVersion>
<MicrosoftExtensionsCachingSqlServerVersion>9.0.6</MicrosoftExtensionsCachingSqlServerVersion>
<MicrosoftExtensionsCachingStackExchangeRedisVersion>9.0.6</MicrosoftExtensionsCachingStackExchangeRedisVersion>
<MicrosoftExtensionsDiagnosticsHealthChecksVersion>9.0.6</MicrosoftExtensionsDiagnosticsHealthChecksVersion>
<MicrosoftExtensionsHttpPollyVersion>9.0.6</MicrosoftExtensionsHttpPollyVersion>
<MicrosoftExtensionsObjectPoolVersion>9.0.6</MicrosoftExtensionsObjectPoolVersion>
<MicrosoftAspNetCoreAppRefVersion>9.0.7</MicrosoftAspNetCoreAppRefVersion>
<MicrosoftAspNetCoreAppRuntimewinx64Version>9.0.7</MicrosoftAspNetCoreAppRuntimewinx64Version>
<MicrosoftAspNetCoreMvcTestingVersion>9.0.7</MicrosoftAspNetCoreMvcTestingVersion>
<MicrosoftAspNetCoreTestHostVersion>9.0.7</MicrosoftAspNetCoreTestHostVersion>
<MicrosoftExtensionsCachingSqlServerVersion>9.0.7</MicrosoftExtensionsCachingSqlServerVersion>
<MicrosoftExtensionsCachingStackExchangeRedisVersion>9.0.7</MicrosoftExtensionsCachingStackExchangeRedisVersion>
<MicrosoftExtensionsDiagnosticsHealthChecksVersion>9.0.7</MicrosoftExtensionsDiagnosticsHealthChecksVersion>
<MicrosoftExtensionsHttpPollyVersion>9.0.7</MicrosoftExtensionsHttpPollyVersion>
<MicrosoftExtensionsObjectPoolVersion>9.0.7</MicrosoftExtensionsObjectPoolVersion>
<!-- Dependencies from https://github.com/dotnet/efcore -->
<MicrosoftEntityFrameworkCoreSqliteVersion>9.0.6</MicrosoftEntityFrameworkCoreSqliteVersion>
<MicrosoftEntityFrameworkCoreSqliteVersion>9.0.7</MicrosoftEntityFrameworkCoreSqliteVersion>
<!-- Dependencies from https://github.com/dotnet/arcade -->
<MicrosoftDotNetBuildTasksTemplatingVersion>9.0.0-beta.25325.4</MicrosoftDotNetBuildTasksTemplatingVersion>
</PropertyGroup>
Expand All @@ -108,8 +108,8 @@
<MicrosoftExtensionsLoggingLTSVersion>8.0.1</MicrosoftExtensionsLoggingLTSVersion>
<MicrosoftExtensionsOptionsConfigurationExtensionsLTSVersion>8.0.0</MicrosoftExtensionsOptionsConfigurationExtensionsLTSVersion>
<MicrosoftExtensionsOptionsLTSVersion>8.0.2</MicrosoftExtensionsOptionsLTSVersion>
<MicrosoftNETCoreAppRefLTSVersion>8.0.17</MicrosoftNETCoreAppRefLTSVersion>
<MicrosoftNETCoreAppRuntimewinx64LTSVersion>8.0.17</MicrosoftNETCoreAppRuntimewinx64LTSVersion>
<MicrosoftNETCoreAppRefLTSVersion>8.0.18</MicrosoftNETCoreAppRefLTSVersion>
<MicrosoftNETCoreAppRuntimewinx64LTSVersion>8.0.18</MicrosoftNETCoreAppRuntimewinx64LTSVersion>
<SystemCollectionsImmutableLTSVersion>8.0.0</SystemCollectionsImmutableLTSVersion>
<SystemConfigurationConfigurationManagerLTSVersion>8.0.1</SystemConfigurationConfigurationManagerLTSVersion>
<SystemDiagnosticsDiagnosticSourceLTSVersion>8.0.1</SystemDiagnosticsDiagnosticSourceLTSVersion>
Expand All @@ -123,20 +123,20 @@
<SystemSecurityCryptographyXmlLTSVersion>8.0.2</SystemSecurityCryptographyXmlLTSVersion>
<SystemTextEncodingsWebLTSVersion>8.0.0</SystemTextEncodingsWebLTSVersion>
<SystemNumericsTensorsLTSVersion>8.0.0</SystemNumericsTensorsLTSVersion>
<SystemTextJsonLTSVersion>8.0.5</SystemTextJsonLTSVersion>
<SystemTextJsonLTSVersion>8.0.6</SystemTextJsonLTSVersion>
<SystemThreadingChannelsLTSVersion>8.0.0</SystemThreadingChannelsLTSVersion>
<!-- Dependencies from https://github.com/aspnet/AspNetCore -->
<MicrosoftAspNetCoreAppRefLTSVersion>8.0.17</MicrosoftAspNetCoreAppRefLTSVersion>
<MicrosoftAspNetCoreAppRuntimewinx64LTSVersion>8.0.17</MicrosoftAspNetCoreAppRuntimewinx64LTSVersion>
<MicrosoftAspNetCoreMvcTestingLTSVersion>8.0.17</MicrosoftAspNetCoreMvcTestingLTSVersion>
<MicrosoftAspNetCoreTestHostLTSVersion>8.0.17</MicrosoftAspNetCoreTestHostLTSVersion>
<MicrosoftExtensionsCachingSqlServerLTSVersion>8.0.17</MicrosoftExtensionsCachingSqlServerLTSVersion>
<MicrosoftExtensionsCachingStackExchangeRedisLTSVersion>8.0.17</MicrosoftExtensionsCachingStackExchangeRedisLTSVersion>
<MicrosoftExtensionsDiagnosticsHealthChecksLTSVersion>8.0.17</MicrosoftExtensionsDiagnosticsHealthChecksLTSVersion>
<MicrosoftExtensionsHttpPollyLTSVersion>8.0.17</MicrosoftExtensionsHttpPollyLTSVersion>
<MicrosoftExtensionsObjectPoolLTSVersion>8.0.17</MicrosoftExtensionsObjectPoolLTSVersion>
<MicrosoftAspNetCoreAppRefLTSVersion>8.0.18</MicrosoftAspNetCoreAppRefLTSVersion>
<MicrosoftAspNetCoreAppRuntimewinx64LTSVersion>8.0.18</MicrosoftAspNetCoreAppRuntimewinx64LTSVersion>
<MicrosoftAspNetCoreMvcTestingLTSVersion>8.0.18</MicrosoftAspNetCoreMvcTestingLTSVersion>
<MicrosoftAspNetCoreTestHostLTSVersion>8.0.18</MicrosoftAspNetCoreTestHostLTSVersion>
<MicrosoftExtensionsCachingSqlServerLTSVersion>8.0.18</MicrosoftExtensionsCachingSqlServerLTSVersion>
<MicrosoftExtensionsCachingStackExchangeRedisLTSVersion>8.0.18</MicrosoftExtensionsCachingStackExchangeRedisLTSVersion>
<MicrosoftExtensionsDiagnosticsHealthChecksLTSVersion>8.0.18</MicrosoftExtensionsDiagnosticsHealthChecksLTSVersion>
<MicrosoftExtensionsHttpPollyLTSVersion>8.0.18</MicrosoftExtensionsHttpPollyLTSVersion>
<MicrosoftExtensionsObjectPoolLTSVersion>8.0.18</MicrosoftExtensionsObjectPoolLTSVersion>
<!-- Dependencies from https://github.com/dotnet/efcore -->
<MicrosoftEntityFrameworkCoreSqliteLTSVersion>8.0.17</MicrosoftEntityFrameworkCoreSqliteLTSVersion>
<MicrosoftEntityFrameworkCoreSqliteLTSVersion>8.0.18</MicrosoftEntityFrameworkCoreSqliteLTSVersion>
</PropertyGroup>
<!--

Expand Down
2 changes: 1 addition & 1 deletion eng/packages/General.props
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@
<PackageVersion Include="Microsoft.ML.Tokenizers" Version="$(MicrosoftMLTokenizersVersion)" />
<PackageVersion Include="Newtonsoft.Json" Version="13.0.3" />
<PackageVersion Include="OllamaSharp" Version="5.1.9" />
<PackageVersion Include="OpenAI" Version="2.2.0-beta.4" />
<PackageVersion Include="OpenAI" Version="2.2.0" />
<PackageVersion Include="Polly" Version="8.4.2" />
<PackageVersion Include="Polly.Core" Version="8.4.2" />
<PackageVersion Include="Polly.Extensions" Version="8.4.2" />
Expand Down
2 changes: 1 addition & 1 deletion scripts/ConfigureEvaluationTests.ps1
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ if ($Configure -and $Unconfigure) {
Exit 1
}

if (!(Test-Path $ConfigRoot)) {
if (-not $ConfigRoot -or -not (Test-Path $ConfigRoot)) {
$ConfigRoot = "$HOME/.config/dotnet-extensions"
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@
#pragma warning disable S2333 // Redundant modifiers should not be used
#pragma warning disable S3011 // Reflection should not be used to increase accessibility of classes, methods, or fields
#pragma warning disable SA1202 // Public members should come before private members
#pragma warning disable SA1203 // Constants should appear before fields

namespace Microsoft.Extensions.AI;

Expand Down Expand Up @@ -825,6 +826,23 @@ static bool IsAsyncMethod(MethodInfo method)
{
try
{
if (value is string text && IsPotentiallyJson(text))
{
Debug.Assert(typeInfo.Type != typeof(string), "string parameters should not enter this branch.");

// Account for the parameter potentially being a JSON string.
// The value is a string but the type is not. Try to deserialize it under the assumption that it's JSON.
// If it's not, we'll fall through to the default path that makes it valid JSON and then tries to deserialize.
try
{
return JsonSerializer.Deserialize(text, typeInfo);
}
catch (JsonException)
{
// If the string is not valid JSON, fall through to the round-trip.
}
}

string json = JsonSerializer.Serialize(value, serializerOptions.GetTypeInfo(value.GetType()));
return JsonSerializer.Deserialize(json, typeInfo);
}
Expand Down Expand Up @@ -1021,6 +1039,34 @@ private record struct DescriptorKey(
AIJsonSchemaCreateOptions SchemaOptions);
}

/// <summary>
/// Quickly checks if the specified string is potentially JSON
/// by checking if the first non-whitespace characters are valid JSON start tokens.
/// </summary>
/// <param name="value">The string to check.</param>
/// <returns>If <see langword="false"/> then the string is definitely not valid JSON.</returns>
private static bool IsPotentiallyJson(string value) => PotentiallyJsonRegex().IsMatch(value);
#if NET
[GeneratedRegex(PotentiallyJsonRegexString, RegexOptions.IgnorePatternWhitespace)]
private static partial Regex PotentiallyJsonRegex();
#else
private static Regex PotentiallyJsonRegex() => _potentiallyJsonRegex;
private static readonly Regex _potentiallyJsonRegex = new(PotentiallyJsonRegexString, RegexOptions.IgnorePatternWhitespace | RegexOptions.Compiled);
#endif
private const string PotentiallyJsonRegexString = """
^\s* # Optional whitespace at the start of the string
( null # null literal
| false # false literal
| true # true literal
| -?[0-9]# number
| " # string
| \[ # start array
| { # start object
| // # Start of single-line comment
| /\* # Start of multi-line comment
)
""";

/// <summary>
/// Removes characters from a .NET member name that shouldn't be used in an AI function name.
/// </summary>
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,61 @@
// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.

using System;
using System.Collections.Generic;
using System.Reflection;
using System.Text.Json;
using System.Threading;
using System.Threading.Tasks;
using Microsoft.Shared.Diagnostics;

#pragma warning disable SA1202 // Elements should be ordered by access

namespace Microsoft.Extensions.AI;

/// <summary>
/// Provides an optional base class for an <see cref="AIFunction"/> that passes through calls to another instance.
/// </summary>
public class DelegatingAIFunction : AIFunction
{
/// <summary>
/// Initializes a new instance of the <see cref="DelegatingAIFunction"/> class as a wrapper around <paramref name="innerFunction"/>.
/// </summary>
/// <param name="innerFunction">The inner AI function to which all calls are delegated by default.</param>
/// <exception cref="ArgumentNullException"><paramref name="innerFunction"/> is <see langword="null"/>.</exception>
protected DelegatingAIFunction(AIFunction innerFunction)
{
InnerFunction = Throw.IfNull(innerFunction);
}

/// <summary>Gets the inner <see cref="AIFunction" />.</summary>
protected AIFunction InnerFunction { get; }

/// <inheritdoc />
public override string Name => InnerFunction.Name;

/// <inheritdoc />
public override string Description => InnerFunction.Description;

/// <inheritdoc />
public override JsonElement JsonSchema => InnerFunction.JsonSchema;

/// <inheritdoc />
public override JsonElement? ReturnJsonSchema => InnerFunction.ReturnJsonSchema;

/// <inheritdoc />
public override JsonSerializerOptions JsonSerializerOptions => InnerFunction.JsonSerializerOptions;

/// <inheritdoc />
public override MethodInfo? UnderlyingMethod => InnerFunction.UnderlyingMethod;

/// <inheritdoc />
public override IReadOnlyDictionary<string, object?> AdditionalProperties => InnerFunction.AdditionalProperties;

/// <inheritdoc />
public override string ToString() => InnerFunction.ToString();

/// <inheritdoc />
protected override ValueTask<object?> InvokeCoreAsync(AIFunctionArguments arguments, CancellationToken cancellationToken) =>
InnerFunction.InvokeAsync(arguments, cancellationToken);
}
Loading
Loading