Skip to content

createAgentAssistAiClient

L2 Agent Assist:配置拉取 + SSE 对话客户端(鉴权与 URL 由应用注入)。

通过 assistantPath 区分产品(如 icon-fontdesign-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 },
)