1
This commit is contained in:
244
packages/shared/src/contracts/creativeAgent.ts
Normal file
244
packages/shared/src/contracts/creativeAgent.ts
Normal file
@@ -0,0 +1,244 @@
|
||||
import type { PuzzleResultDraft } from './puzzleAgentDraft';
|
||||
import type { PuzzleAgentSessionSnapshot } from './puzzleAgentSession';
|
||||
import type {
|
||||
PuzzleCreativeTemplateProtocol,
|
||||
PuzzleCreativeTemplateSelection,
|
||||
PuzzleDraftFieldPatch,
|
||||
PuzzleImageGenerationPlan,
|
||||
PuzzleTemplateCostRange,
|
||||
} from './puzzleCreativeTemplate';
|
||||
|
||||
export type CreativeAgentStage =
|
||||
| 'idle'
|
||||
| 'perceiving'
|
||||
| 'thinking'
|
||||
| 'remembering'
|
||||
| 'selecting_puzzle_template'
|
||||
| 'waiting_template_confirmation'
|
||||
| 'planning_puzzle_levels'
|
||||
| 'acting'
|
||||
| 'reflecting'
|
||||
| 'collaborating'
|
||||
| 'target_ready'
|
||||
| 'waiting_user'
|
||||
| 'failed';
|
||||
|
||||
export type CreativeAgentEntryContext =
|
||||
| 'creation_home'
|
||||
| 'puzzle_workspace'
|
||||
| 'gallery_remix'
|
||||
| 'draft_restore';
|
||||
|
||||
export type CreativeAgentMessageRole = 'user' | 'assistant' | 'system';
|
||||
|
||||
export type CreativeAgentMessageKind =
|
||||
| 'chat'
|
||||
| 'stage'
|
||||
| 'action_result'
|
||||
| 'warning';
|
||||
|
||||
export type CreativeAgentInputPart =
|
||||
| {
|
||||
type: 'input_text';
|
||||
text: string;
|
||||
}
|
||||
| {
|
||||
type: 'input_image';
|
||||
imageUrl: string;
|
||||
assetId?: string | null;
|
||||
thumbnailUrl?: string | null;
|
||||
};
|
||||
|
||||
export interface CreativeImageInput {
|
||||
assetId: string;
|
||||
readUrl: string;
|
||||
thumbnailUrl?: string | null;
|
||||
width?: number | null;
|
||||
height?: number | null;
|
||||
}
|
||||
|
||||
export interface CreativeImageSummary {
|
||||
assetId: string | null;
|
||||
readUrl: string | null;
|
||||
thumbnailUrl: string | null;
|
||||
width: number | null;
|
||||
height: number | null;
|
||||
summary: string | null;
|
||||
}
|
||||
|
||||
export type CreativeUnsupportedPlayType =
|
||||
| 'rpg'
|
||||
| 'match3d'
|
||||
| 'big_fish'
|
||||
| 'square_hole';
|
||||
|
||||
export interface CreativeUnsupportedCapability {
|
||||
playType: CreativeUnsupportedPlayType;
|
||||
title: string;
|
||||
status: 'unsupported';
|
||||
reason: string;
|
||||
}
|
||||
|
||||
export interface CreativeInputSummary {
|
||||
text: string | null;
|
||||
entryContext: CreativeAgentEntryContext;
|
||||
images: CreativeImageSummary[];
|
||||
materialSummary: string | null;
|
||||
unsupportedCapabilities: CreativeUnsupportedCapability[];
|
||||
}
|
||||
|
||||
export interface CreativeAgentMessage {
|
||||
id: string;
|
||||
role: CreativeAgentMessageRole;
|
||||
kind: CreativeAgentMessageKind;
|
||||
text: string;
|
||||
createdAt: string;
|
||||
}
|
||||
|
||||
export interface CreativeTargetSessionBinding {
|
||||
playType: 'puzzle';
|
||||
targetSessionId: string;
|
||||
targetStage: 'puzzle-agent-workspace' | 'puzzle-result' | 'puzzle-runtime';
|
||||
resultProfileId: string | null;
|
||||
}
|
||||
|
||||
export interface CreativeAgentSessionSnapshot {
|
||||
sessionId: string;
|
||||
stage: CreativeAgentStage;
|
||||
inputSummary: CreativeInputSummary;
|
||||
messages: CreativeAgentMessage[];
|
||||
puzzleTemplateCatalog: PuzzleCreativeTemplateProtocol[];
|
||||
puzzleTemplateSelection: PuzzleCreativeTemplateSelection | null;
|
||||
puzzleImageGenerationPlan: PuzzleImageGenerationPlan | null;
|
||||
targetBinding: CreativeTargetSessionBinding | null;
|
||||
updatedAt: string;
|
||||
}
|
||||
|
||||
export interface CreateCreativeAgentSessionRequest {
|
||||
text?: string | null;
|
||||
images?: CreativeImageInput[];
|
||||
entryContext?: CreativeAgentEntryContext;
|
||||
}
|
||||
|
||||
export interface CreativeAgentSessionResponse {
|
||||
session: CreativeAgentSessionSnapshot;
|
||||
}
|
||||
|
||||
export interface StreamCreativeAgentMessageRequest {
|
||||
clientMessageId: string;
|
||||
content: CreativeAgentInputPart[];
|
||||
}
|
||||
|
||||
export interface ConfirmCreativePuzzleTemplateRequest {
|
||||
selection: PuzzleCreativeTemplateSelection;
|
||||
}
|
||||
|
||||
export interface CreativeDraftEditStreamRequest {
|
||||
clientMessageId: string;
|
||||
instruction: string;
|
||||
targetPuzzleSessionId: string;
|
||||
currentDraft: PuzzleResultDraft;
|
||||
}
|
||||
|
||||
export interface CreativeDraftEditResult {
|
||||
editInstructions: PuzzleDraftFieldPatch[];
|
||||
session: CreativeAgentSessionSnapshot;
|
||||
puzzleSession: PuzzleAgentSessionSnapshot;
|
||||
}
|
||||
|
||||
export interface CreativeAgentStageEvent {
|
||||
sessionId: string;
|
||||
stage: CreativeAgentStage;
|
||||
}
|
||||
|
||||
export interface CreativeAgentMessageDeltaEvent {
|
||||
sessionId: string;
|
||||
messageId: string;
|
||||
role: CreativeAgentMessageRole;
|
||||
kind: CreativeAgentMessageKind;
|
||||
textDelta: string;
|
||||
}
|
||||
|
||||
export interface CreativeAgentThoughtSummaryDeltaEvent {
|
||||
sessionId: string;
|
||||
thoughtId: string;
|
||||
textDelta: string;
|
||||
}
|
||||
|
||||
export interface CreativeAgentTemplateCatalogEvent {
|
||||
sessionId: string;
|
||||
templates: PuzzleCreativeTemplateProtocol[];
|
||||
}
|
||||
|
||||
export interface CreativeAgentTemplateSelectionEvent {
|
||||
sessionId: string;
|
||||
selection: PuzzleCreativeTemplateSelection;
|
||||
}
|
||||
|
||||
export interface CreativeAgentCostRangeEvent {
|
||||
sessionId: string;
|
||||
costRange: PuzzleTemplateCostRange;
|
||||
}
|
||||
|
||||
export interface CreativeAgentLevelPlanEvent {
|
||||
sessionId: string;
|
||||
plan: PuzzleImageGenerationPlan;
|
||||
}
|
||||
|
||||
export interface CreativeAgentToolEvent {
|
||||
sessionId: string;
|
||||
toolCallId: string;
|
||||
toolName: string;
|
||||
summary: string | null;
|
||||
}
|
||||
|
||||
export interface CreativeAgentReflectionEvent {
|
||||
sessionId: string;
|
||||
pass: boolean;
|
||||
summary: string;
|
||||
warnings: string[];
|
||||
}
|
||||
|
||||
export interface CreativeAgentTargetSessionEvent {
|
||||
sessionId: string;
|
||||
binding: CreativeTargetSessionBinding;
|
||||
}
|
||||
|
||||
export interface CreativeAgentErrorEvent {
|
||||
sessionId: string | null;
|
||||
code: string;
|
||||
message: string;
|
||||
recoverable: boolean;
|
||||
}
|
||||
|
||||
export interface CreativeAgentDoneEvent {
|
||||
sessionId: string;
|
||||
}
|
||||
|
||||
export type CreativeAgentSseEvent =
|
||||
| { event: 'stage'; data: CreativeAgentStageEvent }
|
||||
| { event: 'agent_message_delta'; data: CreativeAgentMessageDeltaEvent }
|
||||
| {
|
||||
event: 'thought_summary_delta';
|
||||
data: CreativeAgentThoughtSummaryDeltaEvent;
|
||||
}
|
||||
| {
|
||||
event: 'puzzle_template_catalog';
|
||||
data: CreativeAgentTemplateCatalogEvent;
|
||||
}
|
||||
| {
|
||||
event: 'puzzle_template_selection';
|
||||
data: CreativeAgentTemplateSelectionEvent;
|
||||
}
|
||||
| { event: 'puzzle_cost_range'; data: CreativeAgentCostRangeEvent }
|
||||
| { event: 'puzzle_level_plan'; data: CreativeAgentLevelPlanEvent }
|
||||
| { event: 'tool_started'; data: CreativeAgentToolEvent }
|
||||
| { event: 'tool_completed'; data: CreativeAgentToolEvent }
|
||||
| { event: 'reflection'; data: CreativeAgentReflectionEvent }
|
||||
| { event: 'target_session'; data: CreativeAgentTargetSessionEvent }
|
||||
| {
|
||||
event: 'session';
|
||||
data: { session: CreativeAgentSessionSnapshot };
|
||||
}
|
||||
| { event: 'error'; data: CreativeAgentErrorEvent }
|
||||
| { event: 'done'; data: CreativeAgentDoneEvent };
|
||||
Reference in New Issue
Block a user