From d1ab57cb6047cebe616d1f159710c86a877f393b Mon Sep 17 00:00:00 2001 From: Thorsten Sommer Date: Fri, 31 Jul 2026 20:20:45 +0200 Subject: [PATCH] Fixed compilation after migration --- ...sualBriefingBuildOrchestrator.Recompile.cs | 2 +- .../VisualBriefingBuildOrchestrator.cs | 2 +- .../VisualBriefingStore.Versions.cs | 44 +++++++++++++++---- 3 files changed, 37 insertions(+), 11 deletions(-) diff --git a/app/MindWork AI Studio/Assistants/VisualBriefing/VisualBriefingBuildOrchestrator.Recompile.cs b/app/MindWork AI Studio/Assistants/VisualBriefing/VisualBriefingBuildOrchestrator.Recompile.cs index fb7b3b30..f0ea4323 100644 --- a/app/MindWork AI Studio/Assistants/VisualBriefing/VisualBriefingBuildOrchestrator.Recompile.cs +++ b/app/MindWork AI Studio/Assistants/VisualBriefing/VisualBriefingBuildOrchestrator.Recompile.cs @@ -231,7 +231,7 @@ internal sealed partial class VisualBriefingBuildOrchestrator var commitStage = GetStage(build, VisualBriefingBuildStage.COMMIT); if (!revision.Success || revision.Version is null) - throw new VisualBriefingBuildException(VisualBriefingFailureCode.STORE_FAILED, VisualBriefingBuildStage.COMMIT, revision.Issue, "The immutable recompiled revision commit was rejected."); + throw new VisualBriefingBuildException(VisualBriefingFailureCode.STORE_FAILED, VisualBriefingBuildStage.COMMIT, revision.Issue, $"The immutable recompiled revision commit was rejected. StoreIssue={revision.Issue}"); assemblyStage.Status = VisualBriefingBuildStageStatus.COMPLETED; assemblyStage.FinishedAtUtc = DateTimeOffset.UtcNow; diff --git a/app/MindWork AI Studio/Assistants/VisualBriefing/VisualBriefingBuildOrchestrator.cs b/app/MindWork AI Studio/Assistants/VisualBriefing/VisualBriefingBuildOrchestrator.cs index b91bdfc7..a036f34f 100644 --- a/app/MindWork AI Studio/Assistants/VisualBriefing/VisualBriefingBuildOrchestrator.cs +++ b/app/MindWork AI Studio/Assistants/VisualBriefing/VisualBriefingBuildOrchestrator.cs @@ -389,7 +389,7 @@ internal sealed partial class VisualBriefingBuildOrchestrator if (!revision.Success || revision.Version is null) { var code = revision.Issue.Contains("did not change", StringComparison.OrdinalIgnoreCase) ? VisualBriefingFailureCode.NO_CHANGES : VisualBriefingFailureCode.STORE_FAILED; - throw new VisualBriefingBuildException(code, VisualBriefingBuildStage.COMMIT, revision.Issue, "The immutable revision commit was rejected."); + throw new VisualBriefingBuildException(code, VisualBriefingBuildStage.COMMIT, revision.Issue, $"The immutable revision commit was rejected. StoreIssue={revision.Issue}"); } assemblyStage.Status = VisualBriefingBuildStageStatus.COMPLETED; diff --git a/app/MindWork AI Studio/Assistants/VisualBriefing/VisualBriefingStore.Versions.cs b/app/MindWork AI Studio/Assistants/VisualBriefing/VisualBriefingStore.Versions.cs index 1be0b6a5..beb678b3 100644 --- a/app/MindWork AI Studio/Assistants/VisualBriefing/VisualBriefingStore.Versions.cs +++ b/app/MindWork AI Studio/Assistants/VisualBriefing/VisualBriefingStore.Versions.cs @@ -38,9 +38,12 @@ public sealed partial class VisualBriefingStore VisualBriefingArtifactParts? parentParts = null; if (parent is not null) { - parentParts = request.EditMode is VisualBriefingEditMode.RECOMPILE - ? await this.ReadVersionPartsForRecompileAsync(manifest.BriefingId, parent.RevisionId, token) - : await this.ReadVersionPartsAsync(manifest.BriefingId, parent.RevisionId, token); + parentParts = request.EditMode switch + { + VisualBriefingEditMode.RECOMPILE => await this.ReadVersionPartsForRecompileAsync(manifest.BriefingId, parent.RevisionId, token), + VisualBriefingEditMode.REBUILD => await this.ReadVersionPartsForRebuildAsync(manifest.BriefingId, parent.RevisionId, token), + _ => await this.ReadVersionPartsAsync(manifest.BriefingId, parent.RevisionId, token), + }; if (parentParts is null) return VisualBriefingRevisionResult.Failure("The selected parent revision is invalid or damaged."); @@ -172,9 +175,31 @@ public sealed partial class VisualBriefingStore } /// - /// Defines ReadVersionPartsAsync for the visual briefing feature. + /// Reads a local immutable version that is compatible with the current semantic schema. /// - public async Task ReadVersionPartsAsync(Guid briefingId, Guid revisionId, CancellationToken token = default) + public Task ReadVersionPartsAsync(Guid briefingId, Guid revisionId, CancellationToken token = default) => + this.ReadVersionPartsCoreAsync(briefingId, revisionId, requireCurrentSchema: true, token: token); + + /// + /// Reads an intact historical parent for rebuild lineage without requiring its semantic schema + /// to match the newly generated revision. + /// + /// The briefing identifier. + /// The historical parent revision identifier. + /// The cancellation token. + /// The verified parent artifact parts, or . + private Task ReadVersionPartsForRebuildAsync(Guid briefingId, Guid revisionId, CancellationToken token) => + this.ReadVersionPartsCoreAsync(briefingId, revisionId, requireCurrentSchema: false, token: token); + + /// + /// Reads and integrity-checks one local immutable version with the requested schema policy. + /// + /// The briefing identifier. + /// The revision identifier. + /// Whether the current semantic schema is required. + /// The cancellation token. + /// The verified artifact parts, or . + private async Task ReadVersionPartsCoreAsync(Guid briefingId, Guid revisionId, bool requireCurrentSchema, CancellationToken token) { var manifest = await this.LoadAsync(briefingId, token); var version = manifest?.Versions.FirstOrDefault(candidate => candidate.RevisionId == revisionId); @@ -186,10 +211,11 @@ public sealed partial class VisualBriefingStore return null; var html = await File.ReadAllTextAsync(path, token); - if (!VisualBriefingArtifactService.TryParseForRecompile(html, out var parts, out _) || - parts.ExportManifest.BriefingId != briefingId || - parts.ExportManifest.RevisionId != revisionId || - !string.Equals(parts.DocumentHash, version.DocumentHash, StringComparison.OrdinalIgnoreCase)) + var parsed = requireCurrentSchema + ? VisualBriefingArtifactService.TryParseForRecompile(html, out var parts, out _) + : VisualBriefingArtifactService.TryParse(html, out parts, out _); + + if (!parsed || parts.ExportManifest.BriefingId != briefingId || parts.ExportManifest.RevisionId != revisionId || !string.Equals(parts.DocumentHash, version.DocumentHash, StringComparison.OrdinalIgnoreCase)) return null; return parts;