< Summary

Information
Class: Orchestrator.Infrastructure.Langfuse.LangfuseObservationDetail
Assembly: Orchestrator
File(s): /home/runner/work/KicktippAi/KicktippAi/src/Orchestrator/Infrastructure/Langfuse/LangfusePublicApiModels.cs
Line coverage
100%
Covered lines: 7
Uncovered lines: 0
Coverable lines: 7
Total lines: 178
Line coverage: 100%
Branch coverage
N/A
Covered branches: 0
Total branches: 0
Branch coverage: N/A
Method coverage

Feature is only available for sponsors

Upgrade to PRO version

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity Line coverage
.ctor(...)100%11100%

File(s)

/home/runner/work/KicktippAi/KicktippAi/src/Orchestrator/Infrastructure/Langfuse/LangfusePublicApiModels.cs

#LineLine coverage
 1using System.Text.Json;
 2using System.Text.Json.Serialization;
 3
 4namespace Orchestrator.Infrastructure.Langfuse;
 5
 6public sealed record LangfuseCreateDatasetRequest(
 7    [property: JsonPropertyName("name")] string Name,
 8    [property: JsonPropertyName("description")] string? Description = null,
 9    [property: JsonPropertyName("metadata")] object? Metadata = null,
 10    [property: JsonPropertyName("inputSchema")] JsonElement? InputSchema = null,
 11    [property: JsonPropertyName("expectedOutputSchema")] JsonElement? ExpectedOutputSchema = null);
 12
 13public sealed record LangfuseCreateDatasetItemRequest(
 14    [property: JsonPropertyName("id")] string Id,
 15    [property: JsonPropertyName("datasetName")] string? DatasetName = null,
 16    [property: JsonPropertyName("input")] object? Input = null,
 17    [property: JsonPropertyName("expectedOutput")] object? ExpectedOutput = null,
 18    [property: JsonPropertyName("metadata")] object? Metadata = null,
 19    [property: JsonPropertyName("status")] string? Status = null);
 20
 21public sealed record LangfuseCreateDatasetRunItemRequest(
 22    [property: JsonPropertyName("runName")] string RunName,
 23    [property: JsonPropertyName("datasetItemId")] string DatasetItemId,
 24    [property: JsonPropertyName("traceId")] string TraceId,
 25    [property: JsonPropertyName("runDescription")] string? RunDescription = null,
 26    [property: JsonPropertyName("metadata")] object? Metadata = null,
 27    [property: JsonPropertyName("observationId")] string? ObservationId = null,
 28    [property: JsonPropertyName("createdAt")] DateTimeOffset? CreatedAt = null);
 29
 30public sealed record LangfuseCreateScoreRequest(
 31    [property: JsonPropertyName("name")] string Name,
 32    [property: JsonPropertyName("value")] double Value,
 33    [property: JsonPropertyName("traceId")] string? TraceId = null,
 34    [property: JsonPropertyName("observationId")] string? ObservationId = null,
 35    [property: JsonPropertyName("datasetRunId")] string? DatasetRunId = null,
 36    [property: JsonPropertyName("dataType")] string? DataType = null,
 37    [property: JsonPropertyName("comment")] string? Comment = null,
 38    [property: JsonPropertyName("id")] string? Id = null,
 39    [property: JsonPropertyName("metadata")] object? Metadata = null,
 40    [property: JsonPropertyName("configId")] string? ConfigId = null,
 41    [property: JsonPropertyName("environment")] string? Environment = null);
 42
 43public sealed record LangfuseListScoresRequest(
 44    string? Name = null,
 45    string? DatasetRunId = null,
 46    string? SessionId = null,
 47    string? Filter = null,
 48    string? TraceId = null,
 49    int Page = 1,
 50    int Limit = 100,
 51    string? Fields = "score");
 52
 53public sealed record LangfuseListDatasetItemsRequest(
 54    string? DatasetName = null,
 55    string? Version = null,
 56    int Page = 1,
 57    int Limit = 100);
 58
 59public sealed record LangfuseListTracesRequest(
 60    string? SessionId = null,
 61    int Page = 1,
 62    int Limit = 100,
 63    string? Fields = null);
 64
 65public sealed record LangfuseListObservationsRequest(
 66    string? SessionId = null,
 67    int Limit = 1000,
 68    string? Cursor = null,
 69    string? Fields = null);
 70
 71public sealed record LangfuseCreateScoreResponse(
 72    [property: JsonPropertyName("id")] string Id);
 73
 74public sealed record LangfusePrompt(
 75    [property: JsonPropertyName("name")] string Name,
 76    [property: JsonPropertyName("version")] int Version,
 77    [property: JsonPropertyName("type")] string? Type,
 78    [property: JsonPropertyName("prompt")] JsonElement Prompt,
 79    [property: JsonPropertyName("labels")] IReadOnlyList<string>? Labels,
 80    [property: JsonPropertyName("tags")] IReadOnlyList<string>? Tags,
 81    [property: JsonPropertyName("config")] JsonElement Config)
 82{
 83    public string GetTextPrompt()
 84    {
 85        if (Prompt.ValueKind != JsonValueKind.String)
 86        {
 87            throw new InvalidOperationException(
 88                $"Langfuse prompt '{Name}' version {Version} is not a text prompt.");
 89        }
 90
 91        return Prompt.GetString()
 92               ?? throw new InvalidOperationException(
 93                   $"Langfuse prompt '{Name}' version {Version} contains an empty prompt value.");
 94    }
 95}
 96
 97public sealed record LangfuseDataset(
 98    [property: JsonPropertyName("id")] string Id,
 99    [property: JsonPropertyName("name")] string Name,
 100    [property: JsonPropertyName("description")] string? Description,
 101    [property: JsonPropertyName("metadata")] JsonElement Metadata,
 102    [property: JsonPropertyName("inputSchema")] JsonElement InputSchema,
 103    [property: JsonPropertyName("expectedOutputSchema")] JsonElement ExpectedOutputSchema);
 104
 105public sealed record LangfuseDatasetItem(
 106    [property: JsonPropertyName("id")] string Id,
 107    [property: JsonPropertyName("datasetId")] string DatasetId,
 108    [property: JsonPropertyName("datasetName")] string? DatasetName,
 109    [property: JsonPropertyName("input")] JsonElement Input,
 110    [property: JsonPropertyName("expectedOutput")] JsonElement ExpectedOutput,
 111    [property: JsonPropertyName("metadata")] JsonElement Metadata,
 112    [property: JsonPropertyName("status")] string? Status);
 113
 114public sealed record LangfuseDatasetRunItem(
 115    [property: JsonPropertyName("id")] string Id,
 116    [property: JsonPropertyName("datasetRunId")] string DatasetRunId,
 117    [property: JsonPropertyName("datasetRunName")] string DatasetRunName,
 118    [property: JsonPropertyName("datasetItemId")] string DatasetItemId,
 119    [property: JsonPropertyName("traceId")] string TraceId,
 120    [property: JsonPropertyName("observationId")] string? ObservationId,
 121    [property: JsonPropertyName("createdAt")] DateTimeOffset CreatedAt,
 122    [property: JsonPropertyName("updatedAt")] DateTimeOffset UpdatedAt);
 123
 124public sealed record LangfuseDatasetRunWithItems(
 125    [property: JsonPropertyName("id")] string Id,
 126    [property: JsonPropertyName("name")] string Name,
 127    [property: JsonPropertyName("datasetId")] string DatasetId,
 128    [property: JsonPropertyName("datasetName")] string DatasetName,
 129    [property: JsonPropertyName("description")] string? Description,
 130    [property: JsonPropertyName("metadata")] JsonElement Metadata,
 131    [property: JsonPropertyName("datasetRunItems")] IReadOnlyList<LangfuseDatasetRunItem> DatasetRunItems);
 132
 133public sealed record LangfuseScore(
 134    [property: JsonPropertyName("id")] string Id,
 135    [property: JsonPropertyName("name")] string Name,
 136    [property: JsonPropertyName("value")] double? Value,
 137    [property: JsonPropertyName("traceId")] string? TraceId,
 138    [property: JsonPropertyName("observationId")] string? ObservationId,
 139    [property: JsonPropertyName("datasetRunId")] string? DatasetRunId,
 140    [property: JsonPropertyName("dataType")] string? DataType,
 141    [property: JsonPropertyName("source")] string? Source,
 142    [property: JsonPropertyName("metadata")] JsonElement Metadata,
 143    [property: JsonPropertyName("createdAt")] DateTimeOffset? CreatedAt,
 144    [property: JsonPropertyName("updatedAt")] DateTimeOffset? UpdatedAt);
 145
 1146public sealed record LangfuseObservationDetail(
 1147    [property: JsonPropertyName("id")] string Id,
 1148    [property: JsonPropertyName("traceId")] string TraceId,
 1149    [property: JsonPropertyName("type")] string? Type,
 1150    [property: JsonPropertyName("name")] string? Name,
 1151    [property: JsonPropertyName("output")] JsonElement Output,
 1152    [property: JsonPropertyName("metadata")] JsonElement Metadata);
 153
 154public sealed record LangfuseTraceWithDetails(
 155    [property: JsonPropertyName("id")] string Id,
 156    [property: JsonPropertyName("name")] string? Name,
 157    [property: JsonPropertyName("metadata")] JsonElement Metadata,
 158    [property: JsonPropertyName("output")] JsonElement Output,
 159    [property: JsonPropertyName("scores")] IReadOnlyList<LangfuseScore>? Scores,
 160    [property: JsonPropertyName("observations")] IReadOnlyList<LangfuseObservationDetail>? Observations,
 161    [property: JsonPropertyName("tags")] IReadOnlyList<string>? Tags);
 162
 163public sealed record LangfusePaginationMeta(
 164    [property: JsonPropertyName("page")] int Page,
 165    [property: JsonPropertyName("limit")] int Limit,
 166    [property: JsonPropertyName("totalItems")] int TotalItems,
 167    [property: JsonPropertyName("totalPages")] int TotalPages);
 168
 169public sealed record LangfusePaginatedResponse<T>(
 170    [property: JsonPropertyName("data")] IReadOnlyList<T> Data,
 171    [property: JsonPropertyName("meta")] LangfusePaginationMeta Meta);
 172
 173public sealed record LangfuseCursorPaginationMeta(
 174    [property: JsonPropertyName("cursor")] string? Cursor);
 175
 176public sealed record LangfuseCursorPaginatedResponse<T>(
 177    [property: JsonPropertyName("data")] IReadOnlyList<T> Data,
 178    [property: JsonPropertyName("meta")] LangfuseCursorPaginationMeta Meta);