Download packages/coding-agent/src/cli/auth-check.ts from SaylorTwift/pi: direct link, hf CLI and curl.
- Browser
- Download file 2.72 kB
-
https://huggingface.co/SaylorTwift/pi/resolve/main/packages/coding-agent/src/cli/auth-check.ts
- Command line
-
hf download hf://SaylorTwift/pi/packages/coding-agent/src/cli/auth-check.ts
-
curl -L -o auth-check.ts https://huggingface.co/SaylorTwift/pi/resolve/main/packages/coding-agent/src/cli/auth-check.ts
2.72 kB
| import type { CredentialStore } from "@earendil-works/pi-ai"; | |
| import { resolveCliModel } from "../core/model-resolver.ts"; | |
| import { ModelRuntime } from "../core/model-runtime.ts"; | |
| import { InMemoryCodingAgentModelsStore } from "../core/models-store.ts"; | |
| import type { Args } from "./args.ts"; | |
| import { AuthCommandError, getAuthCredential, validateAuthCommandArgs } from "./auth-command.ts"; | |
| export type AuthCheckStatus = "ready" | "not_ready" | "invalid"; | |
| export type AuthCheckReason = | |
| | "provider_not_found" | |
| | "credentials_not_configured" | |
| | "credential_not_available" | |
| | "invalid_state"; | |
| export interface AuthCheckResult { | |
| status: AuthCheckStatus; | |
| provider: string; | |
| reason?: AuthCheckReason; | |
| authType?: "api_key" | "oauth"; | |
| } | |
| export async function checkProviderAuth( | |
| args: Args, | |
| modelRuntime: ModelRuntime, | |
| options: { refresh: boolean } = { refresh: false }, | |
| ): Promise<AuthCheckResult> { | |
| const { provider: cliProvider, model: cliModel } = validateAuthCommandArgs(args, "check"); | |
| let provider = cliProvider; | |
| if (cliModel) { | |
| const resolved = resolveCliModel({ cliProvider, cliModel, modelRuntime }); | |
| if (resolved.error || !resolved.model) { | |
| throw new AuthCommandError(resolved.error ?? `Unable to resolve model "${cliModel}"`); | |
| } | |
| provider = resolved.model.provider; | |
| } | |
| if (!provider) throw new AuthCommandError("Unable to resolve an auth provider"); | |
| if (modelRuntime.getError()) { | |
| return { status: "invalid", provider, reason: "invalid_state" }; | |
| } | |
| if (!modelRuntime.getProvider(provider)) { | |
| return { status: "not_ready", provider, reason: "provider_not_found" }; | |
| } | |
| try { | |
| const auth = await modelRuntime.checkAuth(provider); | |
| if (!auth) return { status: "not_ready", provider, reason: "credentials_not_configured" }; | |
| if (options.refresh && !(await modelRuntime.getAuth(provider))) { | |
| return { status: "not_ready", provider, reason: "credentials_not_configured" }; | |
| } | |
| return { status: "ready", provider, authType: auth.type }; | |
| } catch { | |
| return { status: "invalid", provider, reason: "invalid_state" }; | |
| } | |
| } | |
| export async function getProviderCredential( | |
| providerId: string, | |
| modelRuntime: ModelRuntime, | |
| credentials: CredentialStore, | |
| options: { refresh: boolean }, | |
| ): Promise<string | undefined> { | |
| const credential = await credentials.read(providerId); | |
| if (!options.refresh && credential?.type === "oauth") return credential.access; | |
| return getAuthCredential(await modelRuntime.getAuth(providerId)); | |
| } | |
| export async function createAuthCheckModelRuntime(credentials: CredentialStore): Promise<ModelRuntime> { | |
| return ModelRuntime.create({ | |
| credentials, | |
| modelsStore: new InMemoryCodingAgentModelsStore(), | |
| allowModelNetwork: false, | |
| refreshOnCreate: false, | |
| }); | |
| } | |