feat: complete catalog-driven preprocessing
Publish documentation / publish (push) Successful in 2m12s
Publish documentation / publish (push) Successful in 2m12s
This commit is contained in:
@@ -12,6 +12,7 @@ import {
|
||||
import type { WorkspaceErrorCode } from "./types.js";
|
||||
import type { SemanticRuntimeConfig } from "./runtime-renderer.js";
|
||||
import type { AuthDiagnostics } from "../auth/diagnostics.js";
|
||||
import { workspaceVectorCollections } from "./vector-collections.js";
|
||||
|
||||
export interface Diagnostic {
|
||||
level: "error" | "warning" | "info";
|
||||
@@ -447,6 +448,9 @@ async function diagnoseValidatedWorkspace(
|
||||
|
||||
let activatable = true;
|
||||
if (!skipDwh) {
|
||||
if (!descriptor.dwh) {
|
||||
return { activatable: false, diagnostics: [diagnosticError("binding_missing", "dwh")] };
|
||||
}
|
||||
const dwhTimeout = boundedTimeout(descriptor.dwh.timeout_ms, timeoutMs);
|
||||
const dwhValues = bindings.dwh.values;
|
||||
const dwhField = (suffix: string) => bindingName(descriptor, suffix);
|
||||
@@ -514,20 +518,18 @@ async function diagnoseValidatedWorkspace(
|
||||
}
|
||||
|
||||
try {
|
||||
const vector = await withTimeout(timeoutMs, (signal) => adapters.inspectQdrant({
|
||||
baseUrl: semanticRuntime.internalQdrantUrl,
|
||||
collection: descriptor.workspace.id,
|
||||
timeoutMs,
|
||||
signal,
|
||||
}));
|
||||
const expected = {
|
||||
collection: descriptor.workspace.id,
|
||||
dimensions: semanticRuntime.internalEmbeddingDimensions,
|
||||
distance: "cosine",
|
||||
};
|
||||
if (vector.collection !== expected.collection
|
||||
|| vector.dimensions !== expected.dimensions
|
||||
|| vector.distance !== expected.distance) {
|
||||
const expectedCollections = Object.values(workspaceVectorCollections(descriptor.workspace.id));
|
||||
const vectors = await Promise.all(expectedCollections.map(async (collection) =>
|
||||
await withTimeout(timeoutMs, (signal) => adapters.inspectQdrant({
|
||||
baseUrl: semanticRuntime.internalQdrantUrl,
|
||||
collection,
|
||||
timeoutMs,
|
||||
signal,
|
||||
}))));
|
||||
if (vectors.some((vector, index) =>
|
||||
vector.collection !== expectedCollections[index]
|
||||
|| vector.dimensions !== semanticRuntime.internalEmbeddingDimensions
|
||||
|| vector.distance !== "cosine")) {
|
||||
diagnostics.push(diagnosticError("semantic_index_incompatible"));
|
||||
activatable = false;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user