feat: add canonical workspace schema

This commit is contained in:
2026-08-03 21:31:07 +02:00
parent 6434c9c4e1
commit 92cb0545be
4 changed files with 414 additions and 0 deletions
+68
View File
@@ -0,0 +1,68 @@
import { expect, test } from "vitest";
import { buildInstallationContract, renderWorkspaceDocs } from "../src/workspaces/contracts.js";
import { parseWorkspaceYaml } from "../src/workspaces/schema.js";
const validWorkspace = parseWorkspaceYaml(`workspace:
schema_version: 1
id: psd-clinical
name: Policlinico San Donato
language: it
dwh:
engine: postgres
database: postgres
schema: datawarehouse
supported_transports:
- postgres_direct
- rest_api
semantic_index:
vector_store:
engine: pgvector
collection: clinical_documents
dimensions: 768
distance: cosine
supported_transports:
- pgvector_direct
- rest_api
embedding:
provider: ollama_compatible
model: nomic-embed-text-v2-moe
dimensions: 768
llm_policy:
default: zai/glm-5.2
allowed:
- zai/glm-5.2
- openai/gpt-5
`);
test("generates stable FILE-based secret requirements from an immutable ID", () => {
const contract = buildInstallationContract(validWorkspace);
expect(contract.variables.map((variable) => variable.name))
.toContain("THT_WS_PSD_CLINICAL_DWH_PASSWORD_FILE");
expect(contract.variables.filter((variable) => variable.secret).every((variable) => (
variable.name.endsWith("_FILE")
))).toBe(true);
expect(renderWorkspaceDocs(validWorkspace).envExample).not.toContain("secret-value");
});
test("derives variable names from fixed role and suffix metadata", () => {
const contract = buildInstallationContract(validWorkspace);
const password = contract.variables.find((variable) => (
variable.role === "DWH" && variable.suffix === "PASSWORD_FILE"
));
expect(password).toMatchObject({
name: "THT_WS_PSD_CLINICAL_DWH_PASSWORD_FILE",
role: "DWH",
suffix: "PASSWORD_FILE",
secret: true,
});
});
test("renders English UI headings and workspace-language Italian prose", () => {
const docs = renderWorkspaceDocs(validWorkspace);
expect(docs.markdown).toContain("# Installation requirements");
expect(docs.markdown).toContain("Configurazione dell'installazione");
expect(docs.envExample).toContain("THT_WS_PSD_CLINICAL_VECTOR_TRANSPORT=");
});