TypeSafe.AI.Sdk
0.3.0
dotnet add package TypeSafe.AI.Sdk --version 0.3.0
NuGet\Install-Package TypeSafe.AI.Sdk -Version 0.3.0
<PackageReference Include="TypeSafe.AI.Sdk" Version="0.3.0" />
<PackageVersion Include="TypeSafe.AI.Sdk" Version="0.3.0" />
<PackageReference Include="TypeSafe.AI.Sdk" />
paket add TypeSafe.AI.Sdk --version 0.3.0
#r "nuget: TypeSafe.AI.Sdk, 0.3.0"
#:package TypeSafe.AI.Sdk@0.3.0
#addin nuget:?package=TypeSafe.AI.Sdk&version=0.3.0
#tool nuget:?package=TypeSafe.AI.Sdk&version=0.3.0
TypeSafe.AI.Sdk
Community .NET client for TypeSafe AI — a Hardkoded port of @typesafe-ai/sdk.
This is not an official TypeSafe product and is not endorsed by TypeSafe. Behavior is aligned with the JavaScript SDK and the TypeSafe docs.
Package id: TypeSafe.AI.Sdk
Docs site: https://hardkoded.github.io/typesafe-sdk-dotnet/
Install
dotnet add package TypeSafe.AI.Sdk
Targets net10.0 (latest LTS) and netstandard2.0. Requires the .NET 10 SDK to build (global.json).
Quickstart
Set TYPESAFE_API_KEY in your environment, then:
using TypeSafe.AI.Sdk;
using var client = new TypeSafeClient();
var response = await client.SystemOneAsync(
new { document = "I was charged twice. Please fix this ASAP." },
("category", Question.Choice("What is this ticket about?",
("billing", null),
("technical", null),
("other", null))));
Console.WriteLine(response.GetChoice("category").Choice);
That mirrors the JavaScript quickstart. You can also pass apiKey to the constructor.
Questions
| Type | Builder | Answer |
|---|---|---|
| Choice | Question.Choice(instructions, criteria) |
choice, probabilities, confidence |
| Score | Question.Score(instructions, level0, level1, …) |
score, legend, probabilities, confidence |
| Noul | Question.Noul(instructions, criteria?) |
noul (P(yes), 0–1) |
Batch independent questions in one SystemOneAsync call. See primitives.
Configuration
Explicit options win, then environment variables, then SDK defaults (same as JS).
| Option | Environment | Default |
|---|---|---|
ApiKey |
TYPESAFE_API_KEY |
required |
BaseUrl |
TYPESAFE_BASE_URL |
https://api.typesafe.ai |
DefaultModel |
TYPESAFE_DEFAULT_MODEL |
jev-latest |
LogLevel |
TYPESAFE_LOG_LEVEL |
warn |
TimeoutMs |
— | 10000 per attempt |
Retry |
— | 2 retries, 500–5000ms backoff, 25% jitter |
Retryable HTTP statuses: 408, 429, 500–599. Connection errors and timeouts retry by default. Retry-After / retry-after-ms are honored up to 60s.
using var client = new TypeSafeClient(new TypeSafeClientOptions
{
ApiKey = "tsk_...",
TimeoutMs = 20_000,
Retry = new RetryPolicy { MaxRetries = 4 },
});
Dependency injection
services.AddTypeSafeClient(options =>
{
options.ApiKey = builder.Configuration["TYPESAFE_API_KEY"];
});
public sealed class Tickets(ITypeSafeClient typesafe) { /* ... */ }
Uses IHttpClientFactory and the named client TypeSafe.AI.
Errors
Exceptions mirror the JS hierarchy (TypeSafeError → TypeSafeException, and so on):
TypeSafeException— validation / configurationApiException— non-2xx after retries (BadRequestException,AuthenticationException,PermissionDeniedException,NotFoundException,UnprocessableEntityException,RateLimitException,InternalServerException)ApiConnectionException/ApiTimeoutExceptionApiUserAbortException— cancelledCancellationToken
Pack
Versioning is MinVer from git tags prefixed with v:
git tag v0.3.0
dotnet pack src/TypeSafe.AI.Sdk/TypeSafe.AI.Sdk.csproj -c Release -o artifacts
Without a tag, packs are 0.3.0-preview.0 (or a later preview derived from height).
Tests
dotnet test
Unit tests mock HTTP and do not need a key. Live tests in tests/TypeSafe.AI.Sdk.IntegrationTests skip unless TYPESAFE_API_KEY is set.
Sample
export TYPESAFE_API_KEY=tsk_...
dotnet run --project samples/TypeSafe.AI.Sdk.Sample
Documentation
- TypeSafe concepts and HTTP API: https://docs.typesafe.ai/sdk · https://docs.typesafe.ai/api.md
- JavaScript SDK (parity source): https://github.com/typesafe-ai/typesafe-sdk-js
- This port: docs site (DocFX) · CONTRIBUTING.md · agent skill
Build the docs site locally with dotnet tool update -g docfx && docfx docs/docfx.json --serve.
License
MIT. Upstream JS SDK is also MIT.
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net5.0 was computed. net5.0-windows was computed. net6.0 was computed. net6.0-android was computed. net6.0-ios was computed. net6.0-maccatalyst was computed. net6.0-macos was computed. net6.0-tvos was computed. net6.0-windows was computed. net7.0 was computed. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. net8.0 was computed. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. net9.0 was computed. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. net10.0 is compatible. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
| .NET Core | netcoreapp2.0 was computed. netcoreapp2.1 was computed. netcoreapp2.2 was computed. netcoreapp3.0 was computed. netcoreapp3.1 was computed. |
| .NET Standard | netstandard2.0 is compatible. netstandard2.1 was computed. |
| .NET Framework | net461 was computed. net462 was computed. net463 was computed. net47 was computed. net471 was computed. net472 was computed. net48 was computed. net481 was computed. |
| MonoAndroid | monoandroid was computed. |
| MonoMac | monomac was computed. |
| MonoTouch | monotouch was computed. |
| Tizen | tizen40 was computed. tizen60 was computed. |
| Xamarin.iOS | xamarinios was computed. |
| Xamarin.Mac | xamarinmac was computed. |
| Xamarin.TVOS | xamarintvos was computed. |
| Xamarin.WatchOS | xamarinwatchos was computed. |
-
.NETStandard 2.0
- Microsoft.Extensions.Http (>= 10.0.0)
- Microsoft.Extensions.Logging.Abstractions (>= 10.0.0)
- System.Text.Json (>= 10.0.0)
-
net10.0
- Microsoft.Extensions.Http (>= 10.0.0)
- Microsoft.Extensions.Logging.Abstractions (>= 10.0.0)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.