From 1233bd393d2a11a69bd3af99f3feac3d70215c54 Mon Sep 17 00:00:00 2001 From: Sebastian Frank Date: Sat, 17 Oct 2026 14:07:30 +0000 Subject: [PATCH] fix(schema): latencyWindow ist ein String, duration-Muster folgt der Go-Grammatik MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Review-Nachbefunde am neuen embedding-Schema: - latencyWindow war als integer/number deklariert, ist in Go aber ein String (ConfigEmbeddingGroup.OnSingleQuery.LatencyWindow, per Atoi geprüft) — Schema und index.d.ts auf digits-String (>0) umgestellt. - duration-Pattern erlaubte nur eine Einheit und akzeptierte Unsinn wie "1ss": jetzt (Zahl+Einheit)+, damit auch 1m30s/1h1m/1.5h gelten und 1ss/8/abc fallen. - Beispiel examples/server/embedding.yml übt latencyWindow und Mehrfach-Einheiten aus (npm test: 5 YAML gegen 17 Schemas, tsc --noEmit --strict grün). --- examples/server/embedding.yml | 5 ++++- index.d.ts | 3 ++- schemas/config/embedding.schema.json | 10 +++++----- 3 files changed, 11 insertions(+), 7 deletions(-) diff --git a/examples/server/embedding.yml b/examples/server/embedding.yml index 9e56b40..0c0ee3d 100644 --- a/examples/server/embedding.yml +++ b/examples/server/embedding.yml @@ -26,11 +26,14 @@ groups: - bge-m3-external - bge-m3-local timeoutPerAttempt: 8s - timeoutTotal: 25s + timeoutTotal: 25s # Mehrfach-Einheiten sind erlaubt: 1m30s + autoFailback: true retryAttempts: 1 retryBackoff: 200ms retryBackoffMax: 2s + latencyWindow: "100" + onBulkWrite: distribution: lowest-latency maxConcurrentTotal: 6 diff --git a/index.d.ts b/index.d.ts index 2081e61..bce54cf 100644 --- a/index.d.ts +++ b/index.d.ts @@ -780,7 +780,8 @@ declare global { raceDelay?: string raceMaxFanout?: number weights?: number[] - latencyWindow?: number + /** Digits as string (Go field is a string, validated with Atoi; must be > 0) */ + latencyWindow?: string retryAttempts?: number retryBackoff?: string retryBackoffMax?: string diff --git a/schemas/config/embedding.schema.json b/schemas/config/embedding.schema.json index dd212f8..1d3cc93 100644 --- a/schemas/config/embedding.schema.json +++ b/schemas/config/embedding.schema.json @@ -26,8 +26,8 @@ "definitions": { "duration": { "type": "string", - "description": "Go-Duration, z. B. 120s, 800ms, 25s", - "pattern": "^[0-9]+(\\.[0-9]+)?(ns|us|µs|ms|s|m|h)+$" + "description": "Go-Duration (time.ParseDuration), z. B. 120s, 800ms, 25s, 1m30s, 1.5h", + "pattern": "^([0-9]+(\\.[0-9]+)?(ns|us|µs|ms|s|m|h))+$" }, "provider": { "type": "object", @@ -172,9 +172,9 @@ "description": "Nur policy weighted: relative Gewichte je Mitglied, positional zur members-Liste." }, "latencyWindow": { - "type": "integer", - "minimum": 1, - "description": "Fenster für die EWMA-Latenz (lowest-latency)." + "type": "string", + "pattern": "^[0-9]+$", + "description": "Fenster für die EWMA-Latenz (lowest-latency) als Ziffern-String (> 0); Go-Feld ist ein String, der per Atoi geprüft wird." }, "retryAttempts": { "type": "integer",