Download packages/coding-agent/src/core/provider-attribution.ts from SaylorTwift/pi: direct link, hf CLI and curl.
- Browser
- Download file 2.65 kB
-
https://huggingface.co/SaylorTwift/pi/resolve/main/packages/coding-agent/src/core/provider-attribution.ts
- Command line
-
hf download hf://SaylorTwift/pi/packages/coding-agent/src/core/provider-attribution.ts
-
curl -L -o provider-attribution.ts https://huggingface.co/SaylorTwift/pi/resolve/main/packages/coding-agent/src/core/provider-attribution.ts
2.65 kB
| import type { Api, Model, ProviderHeaders } from "@earendil-works/pi-ai"; | |
| import type { SettingsManager } from "./settings-manager.ts"; | |
| import { isInstallTelemetryEnabled } from "./telemetry.ts"; | |
| const OPENROUTER_HOST = "openrouter.ai"; | |
| const NVIDIA_NIM_HOST = "integrate.api.nvidia.com"; | |
| const CLOUDFLARE_API_HOST = "api.cloudflare.com"; | |
| const CLOUDFLARE_AI_GATEWAY_HOST = "gateway.ai.cloudflare.com"; | |
| const OPENCODE_HOST = "opencode.ai"; | |
| function matchesHost(baseUrl: string, expectedHost: string): boolean { | |
| try { | |
| return new URL(baseUrl).hostname === expectedHost; | |
| } catch { | |
| return false; | |
| } | |
| } | |
| function isOpenRouterModel(model: Model<Api>): boolean { | |
| return model.provider === "openrouter" || model.baseUrl.includes(OPENROUTER_HOST); | |
| } | |
| function isNvidiaNimModel(model: Model<Api>): boolean { | |
| return model.provider === "nvidia" || matchesHost(model.baseUrl, NVIDIA_NIM_HOST); | |
| } | |
| function isCloudflareModel(model: Model<Api>): boolean { | |
| return ( | |
| model.provider === "cloudflare-workers-ai" || | |
| model.provider === "cloudflare-ai-gateway" || | |
| matchesHost(model.baseUrl, CLOUDFLARE_API_HOST) || | |
| matchesHost(model.baseUrl, CLOUDFLARE_AI_GATEWAY_HOST) | |
| ); | |
| } | |
| function getDefaultAttributionHeaders( | |
| model: Model<Api>, | |
| settingsManager: SettingsManager, | |
| ): Record<string, string> | undefined { | |
| if (!isInstallTelemetryEnabled(settingsManager)) { | |
| return undefined; | |
| } | |
| if (isOpenRouterModel(model)) { | |
| return { | |
| "HTTP-Referer": "https://pi.dev", | |
| "X-OpenRouter-Title": "pi", | |
| "X-OpenRouter-Categories": "cli-agent", | |
| }; | |
| } | |
| if (isNvidiaNimModel(model)) { | |
| return { | |
| "X-BILLING-INVOKE-ORIGIN": "Pi", | |
| }; | |
| } | |
| if (isCloudflareModel(model)) { | |
| return { | |
| "User-Agent": "pi-coding-agent", | |
| }; | |
| } | |
| return undefined; | |
| } | |
| function getSessionHeaders(model: Model<Api>, sessionId: string | undefined): Record<string, string> | undefined { | |
| if (!sessionId) return undefined; | |
| if ( | |
| model.provider !== "opencode" && | |
| model.provider !== "opencode-go" && | |
| !matchesHost(model.baseUrl, OPENCODE_HOST) | |
| ) { | |
| return undefined; | |
| } | |
| return { "x-opencode-session": sessionId, "x-opencode-client": "pi" }; | |
| } | |
| export function mergeProviderAttributionHeaders( | |
| model: Model<Api>, | |
| settingsManager: SettingsManager, | |
| sessionId: string | undefined, | |
| ...headerSources: Array<ProviderHeaders | undefined> | |
| ): ProviderHeaders | undefined { | |
| const merged: ProviderHeaders = { | |
| ...getSessionHeaders(model, sessionId), | |
| ...getDefaultAttributionHeaders(model, settingsManager), | |
| }; | |
| for (const headers of headerSources) { | |
| if (headers) { | |
| Object.assign(merged, headers); | |
| } | |
| } | |
| return Object.keys(merged).length > 0 ? merged : undefined; | |
| } | |