Skip to content
Open
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
5 changes: 5 additions & 0 deletions .editorconfig
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,8 @@ indent_size = 2

# Dotnet code style settings:
[*.{cs,vb}]
tab_width = 4

# Sort using and Import directives with System.* appearing first
dotnet_sort_system_directives_first = true
# Avoid "this." and "Me." if not necessary
Expand Down Expand Up @@ -57,6 +59,9 @@ dotnet_style_require_accessibility_modifiers = omit_if_default:error
# IDE0040: Add accessibility modifiers
dotnet_diagnostic.IDE0040.severity = error

# IDE1100: Error reading content of source file 'Project.TargetFrameworkMoniker' (i.e. from ThisAssembly)
dotnet_diagnostic.IDE1100.severity = none

[*.cs]
# Top-level files are definitely OK
csharp_using_directive_placement = outside_namespace:silent
Expand Down
1 change: 1 addition & 0 deletions .gitattributes
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
# normalize by default
* text=auto encoding=UTF-8
*.sh text eol=lf
*.sbn eol=lf

# These are windows specific files which we may as well ensure are
# always crlf on checkout
Expand Down
5 changes: 5 additions & 0 deletions .github/dependabot.yml
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,11 @@ updates:
Extensions:
patterns:
- "Microsoft.Extensions*"
exclude-patterns:
- "Microsoft.Extensions.AI*"
ExtensionsAI:
patterns:
- "Microsoft.Extensions.AI*"
Web:
patterns:
- "Microsoft.AspNetCore*"
Expand Down
44 changes: 44 additions & 0 deletions .github/workflows/dotnet-env.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
name: dotnet-env
on:
workflow_dispatch:
push:
branches:
- main
paths:
- '**/*.*proj'

jobs:
which-dotnet:
runs-on: ubuntu-latest
permissions:
contents: write
pull-requests: write

steps:
- name: 🤖 defaults
uses: devlooped/actions-bot@v1
with:
name: ${{ secrets.BOT_NAME }}
email: ${{ secrets.BOT_EMAIL }}
gh_token: ${{ secrets.GH_TOKEN }}
github_token: ${{ secrets.GITHUB_TOKEN }}

- name: 🤘 checkout
uses: actions/checkout@v4
with:
token: ${{ env.GH_TOKEN }}

- name: 🤌 dotnet
uses: devlooped/actions-which-dotnet@v1

- name: ✍ pull request
uses: peter-evans/create-pull-request@v7
with:
base: main
branch: which-dotnet
delete-branch: true
labels: dependencies
title: "⚙ Update dotnet versions"
body: "Update dotnet versions"
commit-message: "Update dotnet versions"
token: ${{ env.GH_TOKEN }}
24 changes: 22 additions & 2 deletions .github/workflows/includes.yml
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,9 @@ on:
branches:
- 'main'
paths:
- '**.md'
- '**.md'
- '!changelog.md'
- 'osmfeula.txt'

jobs:
includes:
Expand All @@ -31,10 +32,29 @@ jobs:
- name: +Mᐁ includes
uses: devlooped/actions-includes@v1

- name: 📝 OSMF EULA
shell: pwsh
run: |
$file = "osmfeula.txt"
$props = "src/Directory.Build.props"
if (-not (test-path $file) -or -not (test-path $props)) {
exit 0
}

$product = dotnet msbuild $props -getproperty:Product
if (-not $product) {
write-error 'To use OSMF EULA, ensure the $(Product) property is set in Directory.props'
exit 1
}

((get-content -raw $file) -replace '\$product\$',$product).trim() | set-content $file

- name: ✍ pull request
uses: peter-evans/create-pull-request@v6
with:
add-paths: '**.md'
add-paths: |
**.md
osmfeula.txt
base: main
branch: markdown-includes
delete-branch: true
Expand Down
2 changes: 2 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -4,12 +4,14 @@ artifacts
pack
TestResults
results
BenchmarkDotNet.Artifacts
/app
.vs
.vscode
.genaiscript
.idea
local.settings.json
.env

*.suo
*.sdf
Expand Down
33 changes: 19 additions & 14 deletions .netconfig
Original file line number Diff line number Diff line change
Expand Up @@ -14,18 +14,18 @@
skip
[file ".editorconfig"]
url = https://github.com/devlooped/oss/blob/main/.editorconfig
sha = e81ab754b366d52d92bd69b24bef1d5b1c610634
etag = 7298c6450967975a8782b5c74f3071e1910fc59686e48f9c9d5cd7c68213cf59
sha = a62c45934ac2952f2f5d54d8aea4a7ebc1babaff
etag = b5e919b472a52d4b522f86494f0f2c0ba74a6d9601454e20e4cbaf744317ff62
weak
[file ".gitattributes"]
url = https://github.com/devlooped/oss/blob/main/.gitattributes
sha = 5f92a68e302bae675b394ef343114139c075993e
etag = 338ba6d92c8d1774363396739c2be4257bfc58026f4b0fe92cb0ae4460e1eff7
sha = 4a9aa321c4982b83c185cf8dffed181ff84667d5
etag = 09cad18280ed04b67f7f87591e5481510df04d44c3403231b8af885664d8fd58
weak
[file ".github/dependabot.yml"]
url = https://github.com/devlooped/oss/blob/main/.github/dependabot.yml
sha = 917ff5486e25bec90038e7ab6d146fd82c61f846
etag = 50bf50df5a6eeb1705baea50f4c6e06d167a89cb5a590887ff939bd4120bd442
sha = e733294084fb3e75d517a2e961e87df8faae7dc6
etag = 3bf8d9214a15c049ca5cfe80d212a8cbe4753b8a638a9804ef73d34c7def9618
weak
[file ".github/release.yml"]
url = https://github.com/devlooped/oss/blob/main/.github/release.yml
Expand All @@ -46,8 +46,8 @@
weak
[file ".github/workflows/includes.yml"]
url = https://github.com/devlooped/oss/blob/main/.github/workflows/includes.yml
sha = 85829f2510f335f4a411867f3dbaaa116c3ab3de
etag = 086f6b6316cc6ea7089c0dcc6980be519e6ed6e6201e65042ef41b82634ec0ee
sha = 26e8cb798ce72dec7072db826cc9694d456797bd
etag = df06492eeb2daaae4168d71bbb643f5da2693b67cdd58c42ffa44a191ee99b69
weak
[file ".github/workflows/publish.yml"]
url = https://github.com/devlooped/oss/blob/main/.github/workflows/publish.yml
Expand All @@ -57,8 +57,8 @@
skip
[file ".gitignore"]
url = https://github.com/devlooped/oss/blob/main/.gitignore
sha = e0be248fff1d39133345283b8227372b36574b75
etag = c449ec6f76803e1891357ca2b8b4fcb5b2e5deeff8311622fd92ca9fbf1e6575
sha = 3776526342afb3f57da7e80f2095e5fdca3c31c9
etag = 11767f73556aa4c6c8bcc153b77ee8e8114f99fa3b885b0a7d66d082f91e77b3
weak
[file "Directory.Build.rsp"]
url = https://github.com/devlooped/oss/blob/main/Directory.Build.rsp
Expand All @@ -77,13 +77,13 @@
weak
[file "src/Directory.Build.props"]
url = https://github.com/devlooped/oss/blob/main/src/Directory.Build.props
sha = 2fff747a9673b499c99f2da183cdd5263fdc9333
etag = 0fccddf04f282fe98122ab2610dc2972c205a521254559bf013655c6271b0017
sha = c509be4378ff6789df4f66338cb88119453c0975
etag = cbbdc1a4d3030f353f3e5306a6c380238dd4ed0945aad2d56ba87b49fcfcd66d
weak
[file "src/Directory.Build.targets"]
url = https://github.com/devlooped/oss/blob/main/src/Directory.Build.targets
sha = a8b208093599263b7f2d1fe3854634c588ea5199
etag = 19087699f05396205e6b050d999a43b175bd242f6e8fac86f6df936310178b03
sha = 4339749ef4b8f66def75931df09ef99c149f8421
etag = 8b4492765755c030c4c351e058a92f53ab493cab440c1c0ef431f6635c4dae0e
weak
[file ".github/workflows/dotnet-file-core.yml"]
url = https://github.com/devlooped/oss/blob/main/.github/workflows/dotnet-file-core.yml
Expand All @@ -104,3 +104,8 @@
sha = f2b690ce307acb76c5b8d7faec1a5b971a93653e
etag = 27ea11baa2397b3ec9e643a935832da97719c4e44215cfd135c49cad4c29373f
weak
[file ".github/workflows/dotnet-env.yml"]
url = https://github.com/devlooped/oss/blob/main/.github/workflows/dotnet-env.yml
sha = 77e83f238196d2723640abef0c7b6f43994f9747
etag = fcb9759a96966df40dcd24906fd328ddec05953b7e747a6bb8d0d1e4c3865274
weak
27 changes: 15 additions & 12 deletions readme.md
Original file line number Diff line number Diff line change
Expand Up @@ -28,22 +28,25 @@ Results:
<!-- include artifacts/results/AI.Benchmarks.ModelPerformance-report-github.md -->
```

BenchmarkDotNet v0.14.0, Windows 11 (10.0.22631.4890/23H2/2023Update/SunValley3)
BenchmarkDotNet v0.14.0, Windows 11 (10.0.26100.3775)
Intel Core i9-10900T CPU 1.90GHz, 1 CPU, 20 logical and 10 physical cores
.NET SDK 9.0.200
[Host] : .NET 8.0.13 (8.0.1325.6609), X64 RyuJIT AVX2
DefaultJob : .NET 8.0.13 (8.0.1325.6609), X64 RyuJIT AVX2
.NET SDK 9.0.201
[Host] : .NET 8.0.15 (8.0.1525.16413), X64 RyuJIT AVX2
DefaultJob : .NET 8.0.15 (8.0.1525.16413), X64 RyuJIT AVX2


```
| Method | Client | Provider | Model | Mean | Error | StdDev | Median |
|------- |---------------- |--------- |------------ |---------:|---------:|----------:|---------:|
| **Chat** | **aai-gpt-4o** | **Azure AI** | **gpt-4o** | **20.170 s** | **6.4958 s** | **19.1529 s** | **13.888 s** |
| **Chat** | **aai-gpt-4o-mini** | **Azure AI** | **gpt-4o-mini** | **20.221 s** | **5.3235 s** | **15.6966 s** | **18.061 s** |
| **Chat** | **oai-gpt-4o** | **OpenAI** | **gpt-4o** | **2.387 s** | **0.1910 s** | **0.5540 s** | **2.269 s** |
| **Chat** | **oai-gpt-4o-mini** | **OpenAI** | **gpt-4o-mini** | **2.620 s** | **0.1723 s** | **0.4859 s** | **2.573 s** |
| **Chat** | **xai-grok-2** | **xAI** | **grok-2** | **1.876 s** | **0.1525 s** | **0.4447 s** | **1.770 s** |
| **Chat** | **xai-grok-beta** | **xAI** | **grok-beta** | **1.661 s** | **0.1001 s** | **0.2919 s** | **1.655 s** |
| Method | Client | Provider | Model | Mean | Error | StdDev | Median |
|------- |--------------------- |--------- |----------------- |---------:|---------:|----------:|--------:|
| **Chat** | **aai-gpt-4o** | **Azure AI** | **gpt-4o** | **20.181 s** | **7.8701 s** | **23.2052 s** | **5.630 s** |
| **Chat** | **aai-gpt-4o-mini** | **Azure AI** | **gpt-4o-mini** | **20.171 s** | **6.6035 s** | **19.4707 s** | **9.726 s** |
| **Chat** | **oai-gpt-4o** | **OpenAI** | **gpt-4o** | **2.013 s** | **0.1394 s** | **0.4000 s** | **1.937 s** |
| **Chat** | **oai-gpt-4o-mini** | **OpenAI** | **gpt-4o-mini** | **2.930 s** | **0.1641 s** | **0.4736 s** | **2.916 s** |
| **Chat** | **xai-grok-3-beta** | **xAI** | **grok-3-beta** | **NA** | **NA** | **NA** | **NA** |
| **Chat** | **xai-grok-3-mini-beta** | **xAI** | **grok-3-mini-beta** | **5.666 s** | **0.2034 s** | **0.5964 s** | **5.699 s** |

Benchmarks with issues:
ModelPerformance.Chat: DefaultJob [Client=xai-grok-3-beta]

<!-- artifacts/results/AI.Benchmarks.ModelPerformance-report-github.md -->

Expand Down
3 changes: 3 additions & 0 deletions src/Directory.Build.props
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@

<PropertyGroup Label="NuGet">
<Authors>Daniel Cazzulino</Authors>
<Company>Devlooped</Company>
<Copyright>Copyright (C) Daniel Cazzulino and Contributors. All rights reserved.</Copyright>
<PackageRequireLicenseAcceptance>false</PackageRequireLicenseAcceptance>
<PackageLicenseExpression>MIT</PackageLicenseExpression>
Expand Down Expand Up @@ -126,6 +127,8 @@
<_VersionLabel>$(_VersionLabel.Replace('/merge', ''))</_VersionLabel>
<!-- Finally sanitize the branch with dashes, so we can build path-separated branches, like rel/v1.0.0 or feature/foo -->
<_VersionLabel>$(_VersionLabel.Replace('/', '-'))</_VersionLabel>
<!-- And underscores which are also invalid labels, so we can use branches like dev/feature_foo -->
<_VersionLabel>$(_VersionLabel.Replace('_', '-'))</_VersionLabel>

<!-- Set sanitized version to the actual version suffix used in build/pack -->
<VersionSuffix Condition="!$(VersionLabel.Contains('refs/tags/'))">$(_VersionLabel)</VersionSuffix>
Expand Down
7 changes: 5 additions & 2 deletions src/Directory.Build.targets
Original file line number Diff line number Diff line change
Expand Up @@ -165,6 +165,9 @@

<PropertyGroup>
<RepositoryRoot>@(_GitSourceRoot)</RepositoryRoot>
<!-- Only change if it wasn't just the default from Microsoft.NET.DefaultAssemblyInfo.targets -->
<ProductFromUrl Condition="'$(SourceControlInformationFeatureSupported)' == 'true'">$([System.IO.Path]::GetFileNameWithoutExtension($(PrivateRepositoryUrl)))</ProductFromUrl>
<Product Condition="'$(Product)' == '$(AssemblyName)' and '$(ProductFromUrl)' != ''">$(ProductFromUrl)</Product>
</PropertyGroup>

</Target>
Expand All @@ -175,9 +178,9 @@
Condition="'$(SourceControlInformationFeatureSupported)' == 'true' And
'$(IsPackable)' == 'true'">
<PropertyGroup>
<PackageProjectUrl Condition="'$(PackageProjectUrl)' == '' and '$(PublishRepositoryUrl)' == 'true'">$(RepositoryUrl)</PackageProjectUrl>
<PackageProjectUrl Condition="'$(PackageProjectUrl)' == '' and '$(PublishRepositoryUrl)' == 'true'">$(RepositoryUrl.Replace('.git', ''))</PackageProjectUrl>
<PackageDescription>$(Description)</PackageDescription>
<PackageReleaseNotes Condition="'$(RepositoryUrl)' != '' and Exists('$(MSBuildThisFileDirectory)..\changelog.md')">$(RepositoryUrl)/blob/main/changelog.md</PackageReleaseNotes>
<PackageReleaseNotes Condition="'$(RepositoryUrl)' != '' and Exists('$(MSBuildThisFileDirectory)..\changelog.md')">$(RepositoryUrl.Replace('.git', ''))/blob/main/changelog.md</PackageReleaseNotes>
</PropertyGroup>
</Target>

Expand Down