Keep creation as a living DAG and archive playable products separately.

Opening accept no longer locks the graph; session.json stays creation-only while play starts from an instance snapshot. Sidebar products nest run saves, and play reading fills the feed at a denser type size.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
2026-09-01 00:52:05 +08:00
co-authored by Cursor
parent bd5d88abfa
commit f37388761b
22 changed files with 930 additions and 303 deletions
+17 -1
View File
@@ -2292,7 +2292,23 @@ export function isCloserModule(
name?: string,
): boolean {
if (module?.closer === true) return true;
return (name ?? "").trim() === "开场白与开场变量";
const t = (name ?? "").trim();
return t === "开场白与开场变量" || t.startsWith("开场白与开场变量#") || t === "开场白";
}
export function hasAcceptedCloserStep(
flow: CreationFlow | null | undefined,
acceptedStepIds: readonly string[],
catalog?: ModuleCatalog | null,
): boolean {
if (flow?.steps.length) {
return flow.steps.some(
(s) =>
isCloserModule(findModuleByName(catalog, s.name), s.name) &&
isStepAccepted(s, acceptedStepIds),
);
}
return acceptedStepIds.some((id) => isCloserModule(null, id));
}
export function findCloserStepIndex(