You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

52 lines
1.1 KiB

import { defineWrappedResponseHandler } from "#server/utils/handler";
import { R } from "#server/utils/response";
import { requireAdmin } from "#server/utils/admin-guard";
import { createCharacterCard, type CreateCharacterCardInput } from "#server/service/character/character-card";
export default defineWrappedResponseHandler(async (event) => {
await requireAdmin(event);
const body = await readBody(event);
const {
slug,
name,
avatar,
description,
personality,
scenario,
firstMessage,
exampleDialogue,
systemPrompt,
defaultModelId,
tags,
isPublic,
enabled,
sortOrder,
} = body as CreateCharacterCardInput;
if (!slug || !name) {
return R.error("slug、name 为必填", null);
}
try {
const card = await createCharacterCard({
slug,
name,
avatar,
description,
personality,
scenario,
firstMessage,
exampleDialogue,
systemPrompt,
defaultModelId,
tags,
isPublic,
enabled,
sortOrder,
});
return R.success(card);
} catch (e) {
return R.error(e instanceof Error ? e.message : String(e), null);
}
});