1
This commit is contained in:
@@ -0,0 +1,99 @@
|
||||
import type {
|
||||
CompileVisualNovelWorkProfileRequest,
|
||||
CreateVisualNovelSessionRequest,
|
||||
ExecuteVisualNovelAgentActionRequest,
|
||||
SendVisualNovelMessageRequest,
|
||||
VisualNovelAgentSessionSnapshot,
|
||||
VisualNovelCompileResponse,
|
||||
VisualNovelSessionResponse,
|
||||
} from '../../../packages/shared/src/contracts/visualNovel';
|
||||
import type { TextStreamOptions } from '../aiTypes';
|
||||
import { type ApiRetryOptions, requestJson } from '../apiClient';
|
||||
import { createCreationAgentClient } from '../creation-agent';
|
||||
|
||||
const VISUAL_NOVEL_AGENT_API_BASE = '/api/creation/visual-novel/sessions';
|
||||
const VISUAL_NOVEL_CREATION_WRITE_RETRY: ApiRetryOptions = {
|
||||
maxRetries: 1,
|
||||
baseDelayMs: 240,
|
||||
maxDelayMs: 640,
|
||||
retryUnsafeMethods: true,
|
||||
};
|
||||
|
||||
const visualNovelAgentHttpClient = createCreationAgentClient<
|
||||
CreateVisualNovelSessionRequest,
|
||||
VisualNovelSessionResponse,
|
||||
VisualNovelSessionResponse,
|
||||
VisualNovelAgentSessionSnapshot,
|
||||
SendVisualNovelMessageRequest,
|
||||
VisualNovelSessionResponse,
|
||||
ExecuteVisualNovelAgentActionRequest,
|
||||
VisualNovelSessionResponse
|
||||
>({
|
||||
apiBase: VISUAL_NOVEL_AGENT_API_BASE,
|
||||
messages: {
|
||||
createSession: '创建视觉小说共创会话失败',
|
||||
getSession: '读取视觉小说共创会话失败',
|
||||
sendMessage: '发送视觉小说共创消息失败',
|
||||
streamIncomplete: '视觉小说共创消息流式结果不完整',
|
||||
executeAction: '执行视觉小说创作操作失败',
|
||||
},
|
||||
});
|
||||
|
||||
export function createVisualNovelSession(
|
||||
payload: CreateVisualNovelSessionRequest,
|
||||
) {
|
||||
return visualNovelAgentHttpClient.createSession(payload);
|
||||
}
|
||||
|
||||
export function getVisualNovelSession(sessionId: string) {
|
||||
return visualNovelAgentHttpClient.getSession(sessionId);
|
||||
}
|
||||
|
||||
export function sendVisualNovelMessage(
|
||||
sessionId: string,
|
||||
payload: SendVisualNovelMessageRequest,
|
||||
) {
|
||||
return visualNovelAgentHttpClient.sendMessage(sessionId, payload);
|
||||
}
|
||||
|
||||
export function streamVisualNovelMessage(
|
||||
sessionId: string,
|
||||
payload: SendVisualNovelMessageRequest,
|
||||
options: TextStreamOptions = {},
|
||||
) {
|
||||
return visualNovelAgentHttpClient.streamMessage(sessionId, payload, options);
|
||||
}
|
||||
|
||||
export function executeVisualNovelAction(
|
||||
sessionId: string,
|
||||
payload: ExecuteVisualNovelAgentActionRequest,
|
||||
) {
|
||||
return visualNovelAgentHttpClient.executeAction(sessionId, payload);
|
||||
}
|
||||
|
||||
export function compileVisualNovelWorkProfile(
|
||||
sessionId: string,
|
||||
payload: CompileVisualNovelWorkProfileRequest,
|
||||
) {
|
||||
return requestJson<VisualNovelCompileResponse>(
|
||||
`${VISUAL_NOVEL_AGENT_API_BASE}/${encodeURIComponent(sessionId)}/compile`,
|
||||
{
|
||||
method: 'POST',
|
||||
headers: { 'Content-Type': 'application/json' },
|
||||
body: JSON.stringify(payload),
|
||||
},
|
||||
'编译视觉小说作品草稿失败',
|
||||
{
|
||||
retry: VISUAL_NOVEL_CREATION_WRITE_RETRY,
|
||||
},
|
||||
);
|
||||
}
|
||||
|
||||
export const visualNovelCreationClient = {
|
||||
compileWorkProfile: compileVisualNovelWorkProfile,
|
||||
createSession: createVisualNovelSession,
|
||||
executeAction: executeVisualNovelAction,
|
||||
getSession: getVisualNovelSession,
|
||||
sendMessage: sendVisualNovelMessage,
|
||||
streamMessage: streamVisualNovelMessage,
|
||||
};
|
||||
Reference in New Issue
Block a user