Files
git.stella-ops.org/src/AdvisoryAI/StellaOps.AdvisoryAI/KnowledgeSearch/KnowledgeSearchModels.cs

165 lines
3.8 KiB
C#

using System.Collections.Immutable;
using System.Text.Json;
namespace StellaOps.AdvisoryAI.KnowledgeSearch;
public sealed record KnowledgeSearchRequest(
string Q,
int? K = null,
KnowledgeSearchFilter? Filters = null,
bool IncludeDebug = false);
public sealed record KnowledgeSearchFilter
{
public IReadOnlyList<string>? Type { get; init; }
public string? Product { get; init; }
public string? Version { get; init; }
public string? Service { get; init; }
public IReadOnlyList<string>? Tags { get; init; }
}
public sealed record KnowledgeSearchResponse(
string Query,
int TopK,
IReadOnlyList<KnowledgeSearchResult> Results,
KnowledgeSearchDiagnostics Diagnostics);
public sealed record KnowledgeSearchResult(
string Type,
string Title,
string Snippet,
double Score,
KnowledgeOpenAction Open,
IReadOnlyDictionary<string, string>? Debug = null);
public sealed record KnowledgeOpenAction(
KnowledgeOpenActionType Kind,
KnowledgeOpenDocAction? Docs = null,
KnowledgeOpenApiAction? Api = null,
KnowledgeOpenDoctorAction? Doctor = null);
public enum KnowledgeOpenActionType
{
Docs = 1,
Api = 2,
Doctor = 3
}
public sealed record KnowledgeOpenDocAction(
string Path,
string Anchor,
int SpanStart,
int SpanEnd);
public sealed record KnowledgeOpenApiAction(
string Service,
string Method,
string Path,
string OperationId);
public sealed record KnowledgeOpenDoctorAction(
string CheckCode,
string Severity,
bool CanRun,
string RunCommand);
public sealed record KnowledgeSearchDiagnostics(
int FtsMatches,
int VectorMatches,
long DurationMs,
bool UsedVector,
string Mode);
internal sealed record KnowledgeSourceDocument(
string DocId,
string DocType,
string Product,
string Version,
string SourceRef,
string Path,
string Title,
string ContentHash,
JsonDocument Metadata);
internal sealed record KnowledgeChunkDocument(
string ChunkId,
string DocId,
string Kind,
string? Anchor,
string? SectionPath,
int SpanStart,
int SpanEnd,
string Title,
string Body,
float[]? Embedding,
JsonDocument Metadata);
internal sealed record KnowledgeApiSpec(
string SpecId,
string DocId,
string Service,
string? OpenApiVersion,
string? Title,
string? Version,
string SourcePath,
JsonDocument Content);
internal sealed record KnowledgeApiOperation(
string OperationKey,
string SpecId,
string ChunkId,
string Service,
string Method,
string Path,
string? OperationId,
IReadOnlyList<string> Tags,
string? Summary,
JsonDocument RequestJson,
JsonDocument ResponsesJson,
JsonDocument SecurityJson);
internal sealed record KnowledgeDoctorProjection(
string CheckCode,
string ChunkId,
string Title,
string Severity,
string Remediation,
string RunCommand,
IReadOnlyList<string> Symptoms,
JsonDocument ReferencesJson,
JsonDocument MetadataJson);
internal sealed record KnowledgeIndexSnapshot(
IReadOnlyList<KnowledgeSourceDocument> Documents,
IReadOnlyList<KnowledgeChunkDocument> Chunks,
IReadOnlyList<KnowledgeApiSpec> ApiSpecs,
IReadOnlyList<KnowledgeApiOperation> ApiOperations,
IReadOnlyList<KnowledgeDoctorProjection> DoctorProjections);
public sealed record KnowledgeRebuildSummary(
int DocumentCount,
int ChunkCount,
int ApiSpecCount,
int ApiOperationCount,
int DoctorProjectionCount,
long DurationMs);
internal sealed record KnowledgeChunkRow(
string ChunkId,
string DocId,
string Kind,
string? Anchor,
string? SectionPath,
int SpanStart,
int SpanEnd,
string Title,
string Body,
string Snippet,
JsonDocument Metadata,
float[]? Embedding,
double LexicalScore);