createAgentAssistAiClient
L2 Agent Assist:配置拉取 + SSE 对话客户端(鉴权与 URL 由应用注入)。
通过 assistantPath 区分产品(如 icon-font、design-document)。
函数签名
typescript
interface CreateAgentAssistAiClientDeps {
doFetch: <T>(path: string) => Promise<T>
waitForPendingTokenRefresh: () => void | Promise<void>
buildApiUrl: (path: string) => string
createAuthRequestInit: (init: AgentAssistAiRequestInitLike) => AgentAssistAiRequestInitLike
fetchWithAuthRecovery: (run: () => Promise<AgentAssistAiResponseLike>) => Promise<AgentAssistAiResponseLike>
parseErrorAndThrow: (res: AgentAssistAiResponseLike) => Promise<never>
fetch: (input: string, init?: AgentAssistAiRequestInitLike) => Promise<AgentAssistAiResponseLike>
}
function createAgentAssistAiClient(
deps: CreateAgentAssistAiClientDeps,
options: { assistantPath: string; includePhase?: boolean },
): {
fetchConfig: () => Promise<AgentAssistAiConfigPayload>
streamChat: (params: StreamAgentAssistAiChatParams) => Promise<StreamAgentAssistAiChatResult>
}Usage
typescript
import { createAgentAssistAiClient } from '@zengchaowu/shared/functions/ai/createAgentAssistAiClient'
const { fetchConfig, streamChat } = createAgentAssistAiClient(
{
doFetch,
waitForPendingTokenRefresh,
buildApiUrl,
createAuthRequestInit: (init) => createBrowserAuthRequestInit(init as RequestInit) as typeof init,
fetchWithAuthRecovery: (run) => fetchWithAuthRecovery(() => run() as Promise<Response>),
parseErrorAndThrow: (res) => parseErrorAndThrow(res as Response),
fetch: (input, init) => fetch(input, init as RequestInit),
},
{ assistantPath: 'icon-font', includePhase: false },
)