1
Some checks failed
CI / verify (push) Has been cancelled

This commit is contained in:
2026-04-20 09:54:17 +08:00
parent 67c584b4df
commit 50759f3c1e
159 changed files with 16938 additions and 16925 deletions

View File

@@ -68,6 +68,8 @@ export interface CustomWorldWorkSummary {
subtitle: string;
summary: string;
coverImageSrc?: string | null;
coverRenderMode?: 'image' | 'scene_with_roles';
coverCharacterImageSrcs?: string[];
updatedAt: string;
publishedAt?: string | null;
stage?: string | null;

View File

@@ -9,8 +9,7 @@ export const QUEST_NARRATIVE_TYPES = [
'relationship',
'trial',
] as const;
export type SharedQuestNarrativeType =
(typeof QUEST_NARRATIVE_TYPES)[number];
export type SharedQuestNarrativeType = (typeof QUEST_NARRATIVE_TYPES)[number];
export const QUEST_OBJECTIVE_KINDS = [
'defeat_hostile_npc',
@@ -20,8 +19,7 @@ export const QUEST_OBJECTIVE_KINDS = [
'reach_scene',
'deliver_item',
] as const;
export type SharedQuestObjectiveKind =
(typeof QUEST_OBJECTIVE_KINDS)[number];
export type SharedQuestObjectiveKind = (typeof QUEST_OBJECTIVE_KINDS)[number];
export const QUEST_URGENCY_LEVELS = ['low', 'medium', 'high'] as const;
export type SharedQuestUrgency = (typeof QUEST_URGENCY_LEVELS)[number];
@@ -40,8 +38,7 @@ export const QUEST_REWARD_THEMES = [
'intel',
'rare_item',
] as const;
export type SharedQuestRewardTheme =
(typeof QUEST_REWARD_THEMES)[number];
export type SharedQuestRewardTheme = (typeof QUEST_REWARD_THEMES)[number];
export const RUNTIME_ITEM_FUNCTIONAL_BIAS_VALUES = [
'heal',
@@ -60,8 +57,7 @@ export const RUNTIME_ITEM_TONE_VALUES = [
'ritual',
'survival',
] as const;
export type SharedRuntimeItemTone =
(typeof RUNTIME_ITEM_TONE_VALUES)[number];
export type SharedRuntimeItemTone = (typeof RUNTIME_ITEM_TONE_VALUES)[number];
export type StoryRequestOptionsPayload = {
availableOptions?: JsonObject[];
@@ -164,6 +160,8 @@ export type NpcChatTurnRequest<
TContext = unknown,
TConversationTurn = unknown,
TNpcState = unknown,
TQuestOfferState = unknown,
TQuestOfferEncounter = unknown,
> = {
worldType: string;
character?: TCharacter;
@@ -176,13 +174,24 @@ export type NpcChatTurnRequest<
dialogue?: TConversationTurn[];
playerMessage: string;
npcState: TNpcState;
questOfferContext?: {
state: TQuestOfferState;
encounter: TQuestOfferEncounter;
turnCount: number;
} | null;
};
export type NpcChatTurnResult = {
export type NpcChatPendingQuestOffer<TQuest = unknown> = {
quest: TQuest;
introText?: string;
};
export type NpcChatTurnResult<TQuest = unknown> = {
npcReply: string;
affinityDelta: number;
affinityText: string;
suggestions: string[];
pendingQuestOffer?: NpcChatPendingQuestOffer<TQuest> | null;
};
export type NpcRecruitDialogueRequest<
@@ -315,6 +324,28 @@ export type RuntimeStoryChoicePayload = JsonObject & {
note?: string;
};
export type RuntimeStoryOptionInteraction =
| {
kind: 'npc';
npcId: string;
action:
| 'chat'
| 'help'
| 'fight'
| 'leave'
| 'recruit'
| 'spar'
| 'trade'
| 'gift'
| 'quest_accept'
| 'quest_turn_in';
questId?: string;
}
| {
kind: 'treasure';
action: 'inspect' | 'leave' | 'secure';
};
export type RuntimeStoryChoiceAction = RuntimeAction<
'story_choice',
RuntimeStoryChoicePayload
@@ -328,6 +359,7 @@ export type RuntimeStoryOptionView = {
actionText: string;
detailText?: string;
scope: Task5RuntimeOptionScope;
interaction?: RuntimeStoryOptionInteraction;
payload?: RuntimeStoryChoicePayload;
disabled?: boolean;
reason?: string;