mirror of
https://github.com/openclaw/openclaw.git
synced 2026-04-15 11:11:09 +00:00
64 lines
1.8 KiB
TypeScript
64 lines
1.8 KiB
TypeScript
// Shared provider catalog helpers for provider plugins.
|
|
//
|
|
// Keep provider-owned exports out of this subpath so plugin loaders can import it
|
|
// without recursing through provider-specific facades.
|
|
|
|
import { resolveProviderRequestCapabilities } from "./provider-http.js";
|
|
import type { ModelProviderConfig } from "./provider-model-shared.js";
|
|
|
|
export type { ProviderCatalogContext, ProviderCatalogResult } from "../plugins/types.js";
|
|
|
|
export {
|
|
buildPairedProviderApiKeyCatalog,
|
|
buildSingleProviderApiKeyCatalog,
|
|
findCatalogTemplate,
|
|
} from "../plugins/provider-catalog.js";
|
|
|
|
function withStreamingUsageCompat(provider: ModelProviderConfig): ModelProviderConfig {
|
|
if (!Array.isArray(provider.models) || provider.models.length === 0) {
|
|
return provider;
|
|
}
|
|
|
|
let changed = false;
|
|
const models = provider.models.map((model) => {
|
|
if (model.compat?.supportsUsageInStreaming !== undefined) {
|
|
return model;
|
|
}
|
|
changed = true;
|
|
return {
|
|
...model,
|
|
compat: {
|
|
...model.compat,
|
|
supportsUsageInStreaming: true,
|
|
},
|
|
};
|
|
});
|
|
|
|
return changed ? { ...provider, models } : provider;
|
|
}
|
|
|
|
export function supportsNativeStreamingUsageCompat(params: {
|
|
providerId: string;
|
|
baseUrl: string | undefined;
|
|
}): boolean {
|
|
return resolveProviderRequestCapabilities({
|
|
provider: params.providerId,
|
|
api: "openai-completions",
|
|
baseUrl: params.baseUrl,
|
|
capability: "llm",
|
|
transport: "stream",
|
|
}).supportsNativeStreamingUsageCompat;
|
|
}
|
|
|
|
export function applyProviderNativeStreamingUsageCompat(params: {
|
|
providerId: string;
|
|
providerConfig: ModelProviderConfig;
|
|
}): ModelProviderConfig {
|
|
return supportsNativeStreamingUsageCompat({
|
|
providerId: params.providerId,
|
|
baseUrl: params.providerConfig.baseUrl,
|
|
})
|
|
? withStreamingUsageCompat(params.providerConfig)
|
|
: params.providerConfig;
|
|
}
|