Download src/api/agent-server-client-options.ts from SaylorTwift/openhands: direct link, hf CLI and curl.
- Browser
- Download file 2.31 kB
-
https://huggingface.co/SaylorTwift/openhands/resolve/main/src/api/agent-server-client-options.ts
- Command line
-
hf download hf://SaylorTwift/openhands/src/api/agent-server-client-options.ts
-
curl -L -o agent-server-client-options.ts https://huggingface.co/SaylorTwift/openhands/resolve/main/src/api/agent-server-client-options.ts
2.31 kB
| import { buildHttpBaseUrl } from "#/utils/websocket-url"; | |
| import { getAgentServerWorkingDir } from "./agent-server-config"; | |
| import { getEffectiveLocalBackend } from "./backend-registry/active-store"; | |
| import type { Backend } from "./backend-registry/types"; | |
| export interface AgentServerClientOverrides { | |
| host?: string; | |
| apiKey?: string | null; | |
| sessionApiKey?: string | null; | |
| workingDir?: string; | |
| conversationUrl?: string | null; | |
| timeout?: number; | |
| } | |
| export interface AgentServerClientOptions { | |
| host: string; | |
| apiKey?: string; | |
| workingDir: string; | |
| timeout?: number; | |
| } | |
| export class NoBackendAvailableError extends Error { | |
| constructor() { | |
| super("No backend is configured."); | |
| this.name = "NoBackendAvailableError"; | |
| } | |
| } | |
| export const isNoBackendAvailableError = ( | |
| error: unknown, | |
| ): error is NoBackendAvailableError => | |
| error instanceof NoBackendAvailableError || | |
| (typeof error === "object" && | |
| error !== null && | |
| "name" in error && | |
| error.name === "NoBackendAvailableError"); | |
| function normalizeHost(host: string): string { | |
| return host.replace(/\/+$/, ""); | |
| } | |
| function resolveHost( | |
| overrides: AgentServerClientOverrides, | |
| backend: Backend | null, | |
| ): string { | |
| if (overrides.host) return normalizeHost(overrides.host); | |
| if (overrides.conversationUrl) | |
| return normalizeHost(buildHttpBaseUrl(overrides.conversationUrl)); | |
| return normalizeHost(backend?.host ?? ""); | |
| } | |
| export function getAgentServerClientOptions( | |
| overrides: AgentServerClientOverrides = {}, | |
| ): AgentServerClientOptions { | |
| const backend = getEffectiveLocalBackend(); | |
| if (!backend && !overrides.host && !overrides.conversationUrl) { | |
| throw new NoBackendAvailableError(); | |
| } | |
| const apiKey = | |
| overrides.sessionApiKey ?? overrides.apiKey ?? backend?.apiKey ?? undefined; | |
| return { | |
| host: resolveHost(overrides, backend), | |
| ...(apiKey ? { apiKey } : {}), | |
| workingDir: overrides.workingDir ?? getAgentServerWorkingDir(), | |
| ...(overrides.timeout !== undefined ? { timeout: overrides.timeout } : {}), | |
| }; | |
| } | |
| export function getAgentServerHttpClientOptions( | |
| overrides?: AgentServerClientOverrides, | |
| ) { | |
| const { host, apiKey, timeout } = getAgentServerClientOptions(overrides); | |
| return { | |
| baseUrl: host, | |
| ...(apiKey ? { apiKey } : {}), | |
| timeout: timeout ?? 60000, | |
| }; | |
| } | |