refactor: make workspace descriptors schema v3 only

This commit is contained in:
2026-08-10 20:21:20 +02:00
parent 5d016ce635
commit 512b0261b1
12 changed files with 187 additions and 295 deletions
+9 -9
View File
@@ -12,9 +12,9 @@ import {
resolveDiagnosticUrl,
validateWorkspaceDescriptor,
type RestDiagnosticRequest,
type WorkspaceV2,
type WorkspaceDescriptor,
} from "./schema.js";
import type { DeprecatedV2Descriptor } from "./deprecated-v2-descriptor.js";
import type { WorkspaceErrorCode } from "./types.js";
import type { SemanticRuntimeConfig } from "./runtime-renderer.js";
@@ -543,7 +543,7 @@ export function createProductionWorkspaceDiagnoser(
options: { writeProbe: boolean },
): Promise<WorkspaceDiagnostics> => {
const descriptor = validateWorkspaceDescriptor(workspace);
if (descriptor.workspace.schema_version !== 3) {
if (Number(descriptor.workspace.schema_version) !== 3) {
return await legacyDiagnoser(descriptor, bindings, options);
}
return await diagnoseSchemaV3Workspace(
@@ -618,11 +618,11 @@ function diagnosticError(code: WorkspaceErrorCode, field?: string): Diagnostic {
}
function bindingName(
workspace: WorkspaceDescriptor,
workspace: WorkspaceDescriptor | DeprecatedV2Descriptor,
role: "DWH" | "VECTOR" | "VECTOR_WRITER" | "EMBEDDING",
suffix: string,
): string {
const entry = buildInstallationContract(workspace).variables.find((variable) => (
const entry = buildInstallationContract(workspace as WorkspaceDescriptor).variables.find((variable) => (
variable.role === role && variable.suffix === suffix
));
if (!entry) throw new Error(`workspace contract is missing ${role}_${suffix}`);
@@ -798,7 +798,7 @@ async function diagnoseSchemaV3Workspace(
}
function diagnosticsForMissingBindings(
workspace: WorkspaceV2,
workspace: DeprecatedV2Descriptor,
bindings: RuntimeBindings,
): Diagnostic[] {
const missing = new Set([
@@ -815,7 +815,7 @@ function diagnosticsForMissingBindings(
}
function connectorRequest(
workspace: WorkspaceV2,
workspace: DeprecatedV2Descriptor,
role: ConnectorRole,
bindings: RuntimeBindings,
timeoutMs: number,
@@ -889,7 +889,7 @@ function connectorRequest(
}
function tunnelProbeRequest(
workspace: WorkspaceV2,
workspace: DeprecatedV2Descriptor,
role: ConnectorRole,
bindings: RuntimeBindings,
timeoutMs: number,
@@ -934,10 +934,10 @@ export function createWorkspaceDiagnoser(
options: { writeProbe: boolean },
): Promise<WorkspaceDiagnostics> {
const descriptor = validateWorkspaceDescriptor(workspace);
if (descriptor.workspace.schema_version !== 2) {
if (Number(descriptor.workspace.schema_version) !== 2) {
return { activatable: false, diagnostics: [diagnosticError("workspace_not_activatable")] };
}
const canonical = descriptor as WorkspaceV2;
const canonical = descriptor as unknown as DeprecatedV2Descriptor;
const diagnostics = diagnosticsForMissingBindings(canonical, bindings);
if (diagnostics.length > 0) return { activatable: false, diagnostics };