37 lines
1.2 KiB
TypeScript
37 lines
1.2 KiB
TypeScript
import { expect, test } from "vitest";
|
|
import { migrateWorkspaceV3Yaml, parseWorkspaceYaml } from "../src/workspaces/schema.js";
|
|
|
|
const legacy = `workspace:
|
|
schema_version: 3
|
|
id: abc
|
|
name: Example
|
|
language: en
|
|
dwh:
|
|
engine: postgres
|
|
database: warehouse
|
|
schema: public
|
|
supported_transports: [postgres_direct]
|
|
semantic_index:
|
|
vector_store: {engine: qdrant, collection: abc, dimensions: 1024, distance: cosine}
|
|
embedding: {provider: ollama_internal, model: qwen3-embedding:0.6b, dimensions: 1024}
|
|
llm_policy:
|
|
default: zai/glm-5.3
|
|
allowed: [zai/glm-5.3]
|
|
`;
|
|
|
|
test("strict workspace v4 rejects model-bearing v3 descriptors", () => {
|
|
expect(() => parseWorkspaceYaml(legacy)).toThrow();
|
|
});
|
|
|
|
test("v3 to v4 migration removes only model/vector policy and bumps the version", () => {
|
|
const migrated = migrateWorkspaceV3Yaml(legacy);
|
|
const workspace = parseWorkspaceYaml(migrated);
|
|
|
|
expect(workspace.workspace).toMatchObject({ schema_version: 4, id: "abc" });
|
|
expect(migrated).not.toMatch(/semantic_index|llm_policy/);
|
|
expect(workspace.dwh).toEqual({
|
|
engine: "postgres", database: "warehouse", schema: "public",
|
|
supported_transports: ["postgres_direct"],
|
|
});
|
|
});
|