Add Prompt Builder sequence section order.
Copied scene text and the scene editor follow a persisted sectionOrder, with legacy saves keeping the default style/settings/set/characters/prompt order. Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -7,10 +7,13 @@ import {
|
||||
normalizeCharacter,
|
||||
normalizeSet,
|
||||
normalizeScene,
|
||||
normalizeSectionOrder,
|
||||
emptyCharacter,
|
||||
emptyScene,
|
||||
DEFAULT_PROMPT_SEQUENCE_SECTION_ORDER,
|
||||
type PromptSequence,
|
||||
type PromptSequenceCharacter,
|
||||
type PromptSequenceSectionKey,
|
||||
type PromptSequenceSet,
|
||||
type PromptSequenceScene
|
||||
} from '~/utils/promptSequences'
|
||||
@@ -91,6 +94,7 @@ export function getPromptSequence(owner: string, id: string) {
|
||||
|
||||
export async function savePromptSequence(owner: string, input: {
|
||||
name: string
|
||||
sectionOrder?: unknown
|
||||
characters?: unknown
|
||||
sets?: unknown
|
||||
scenes?: unknown
|
||||
@@ -101,6 +105,9 @@ export async function savePromptSequence(owner: string, input: {
|
||||
const characters = normalizeCharactersInput(input.characters)
|
||||
const sets = normalizeSetsInput(input.sets)
|
||||
const scenes = normalizeScenesInput(input.scenes, characters, sets)
|
||||
const sectionOrder = input.sectionOrder !== undefined
|
||||
? normalizeSectionOrder(input.sectionOrder)
|
||||
: [...DEFAULT_PROMPT_SEQUENCE_SECTION_ORDER]
|
||||
const now = Date.now()
|
||||
return mutate(owner, (sequences) => {
|
||||
const existing = sequences.find(item => item.name.toLowerCase() === name.toLowerCase())
|
||||
@@ -108,6 +115,7 @@ export async function savePromptSequence(owner: string, input: {
|
||||
throw createError({ statusCode: 409, statusMessage: `Overwrite sequence “${existing.name}”?` })
|
||||
}
|
||||
if (existing) {
|
||||
existing.sectionOrder = sectionOrder
|
||||
existing.characters = characters
|
||||
existing.sets = sets
|
||||
existing.scenes = scenes
|
||||
@@ -117,6 +125,7 @@ export async function savePromptSequence(owner: string, input: {
|
||||
const created: PromptSequence = {
|
||||
id: crypto.randomUUID(),
|
||||
name,
|
||||
sectionOrder,
|
||||
characters,
|
||||
sets,
|
||||
scenes,
|
||||
@@ -130,6 +139,7 @@ export async function savePromptSequence(owner: string, input: {
|
||||
|
||||
export async function updatePromptSequence(owner: string, id: string, input: {
|
||||
name?: string
|
||||
sectionOrder?: unknown
|
||||
characters?: unknown
|
||||
sets?: unknown
|
||||
scenes?: unknown
|
||||
@@ -146,6 +156,11 @@ export async function updatePromptSequence(owner: string, id: string, input: {
|
||||
if (clash) throw createError({ statusCode: 409, statusMessage: `A sequence named “${clash.name}” already exists` })
|
||||
existing.name = name
|
||||
}
|
||||
if (input.sectionOrder !== undefined) {
|
||||
existing.sectionOrder = normalizeSectionOrder(input.sectionOrder)
|
||||
} else if (!existing.sectionOrder?.length) {
|
||||
existing.sectionOrder = [...DEFAULT_PROMPT_SEQUENCE_SECTION_ORDER] as PromptSequenceSectionKey[]
|
||||
}
|
||||
if (input.characters !== undefined || input.sets !== undefined || input.scenes !== undefined) {
|
||||
const characters = input.characters !== undefined
|
||||
? normalizeCharactersInput(input.characters)
|
||||
|
||||
Reference in New Issue
Block a user