feat: define internal semantic workspace schema

This commit is contained in:
2026-08-08 16:43:54 +02:00
parent 4fe4049a24
commit 2f7f923c4d
9 changed files with 463 additions and 154 deletions
@@ -8,6 +8,7 @@ import {
migrateLegacyWorkspace,
writeMigratedWorkspace,
} from "../src/workspaces/migrate-legacy.js";
import * as workspaceSchema from "../src/workspaces/schema.js";
import { parseWorkspaceYaml } from "../src/workspaces/schema.js";
const temporaryRoots: string[] = [];
@@ -30,10 +31,15 @@ test("migrates the current local PSD descriptor without copying secret values",
test("keeps an incomplete legacy vector identity readable and explicitly migration-required", () => {
const result = migrateLegacyWorkspace(readFixture("tht.example.yaml"), { id: "example" });
const isOperationalWorkspace = (workspaceSchema as { isOperationalWorkspace?: unknown }).isOperationalWorkspace;
expect(result.state).toBe("migration_required");
expect(result.workspace.workspace.schema_version).toBe(1);
expect(parseWorkspaceYaml(result.source).workspace.schema_version).toBe(1);
expect(isOperationalWorkspace).toBeTypeOf("function");
expect((isOperationalWorkspace as (workspace: ReturnType<typeof parseWorkspaceYaml>) => boolean)(
parseWorkspaceYaml(result.source),
)).toBe(false);
});
test("writes versioned repository artifacts atomically without replacing a prior migration", async () => {