feat: publish and synchronize workspace drafts
This commit is contained in:
@@ -250,7 +250,8 @@ function copyDiagnostics(value: unknown): CanonicalDiagnostics | undefined {
|
||||
return diagnostics;
|
||||
}
|
||||
|
||||
function copyWorkspace(value: unknown): CanonicalWorkspace | undefined {
|
||||
/** Drops unknown fields before a server response can become a browser draft or conflict view. */
|
||||
export function sanitizeCanonicalWorkspace(value: unknown): CanonicalWorkspace | undefined {
|
||||
const source = exactRecord(value, ["workspace", "dwh", "semantic_index", "llm_policy", "diagnostics"]);
|
||||
const metadata = exactRecord(source?.workspace, ["schema_version", "id", "name", "description", "language"]);
|
||||
const dwh = exactRecord(source?.dwh, ["engine", "database", "schema", "port", "timeout_ms", "supported_transports"]);
|
||||
@@ -330,7 +331,7 @@ function copyWorkspace(value: unknown): CanonicalWorkspace | undefined {
|
||||
|
||||
function normalize(value: unknown): WorkspaceDraft | undefined {
|
||||
const source = exactRecord(value, ["workspaceId", "baseCommit", "baseBlob", "workspace", "updatedAt"]);
|
||||
const workspace = copyWorkspace(source?.workspace);
|
||||
const workspace = sanitizeCanonicalWorkspace(source?.workspace);
|
||||
const id = workspaceId(source?.workspaceId);
|
||||
const baseCommit = typeof source?.baseCommit === "string" && /^[0-9a-f]{40}$/.test(source.baseCommit) ? source.baseCommit : undefined;
|
||||
const baseBlob = source?.baseBlob === undefined ? undefined : typeof source.baseBlob === "string" && /^[0-9a-f]{40}$/.test(source.baseBlob) ? source.baseBlob : undefined;
|
||||
|
||||
Reference in New Issue
Block a user