import {z} from 'zod' export type GetApiApiV1betaRegistryNameServersArgs = {name: string}; export type GetApiApiV1betaRegistryNameServersOptions = {baseUrl: string, fetch?: typeof fetch | undefined}; export const registryEnvVar = z.object({default: z.string().optional(), description: z.string().optional(), name: z.string().optional(), required: z.boolean().optional(), secret: z.boolean().optional()}); export const registryHeader = z.object({choices: z.array(z.string()).optional(), default: z.string().optional(), description: z.string().optional(), name: z.string().optional(), required: z.boolean().optional(), secret: z.boolean().optional()}); export const registryKubernetesMetadata = z.object({image: z.string().optional(), kind: z.string().optional(), name: z.string().optional(), namespace: z.string().optional(), transport: z.string().optional(), uid: z.string().optional()}); export const registryMetadata = z.object({kubernetes: registryKubernetesMetadata.optional(), last_updated: z.string().optional(), stars: z.number().int().optional()}); export const registryOAuthConfig = z.object({authorize_url: z.string().optional(), callback_port: z.number().int().optional(), client_id: z.string().optional(), issuer: z.string().optional(), oauth_params: z.record(z.string(), z.string()).optional(), resource: z.string().optional(), scopes: z.array(z.string()).optional(), token_url: z.string().optional(), use_pkce: z.boolean().optional()}); export const registryRemoteServerMetadata = z.object({custom_metadata: z.record(z.string(), z.unknown()).optional(), description: z.string().optional(), env_vars: z.array(registryEnvVar).optional(), headers: z.array(registryHeader).optional(), metadata: registryMetadata.optional(), name: z.string().optional(), oauth_config: registryOAuthConfig.optional(), overview: z.string().optional(), proxy_port: z.number().int().optional(), repository_url: z.string().optional(), stateless: z.boolean().optional(), status: z.string().optional(), tags: z.array(z.string()).optional(), tier: z.string().optional(), title: z.string().optional(), tools: z.array(z.string()).optional(), transport: z.string().optional(), url: z.string().optional()}); export const permissionsInboundNetworkPermissions = z.object({allow_host: z.array(z.string()).optional()}); export const permissionsOutboundNetworkPermissions = z.object({allow_host: z.array(z.string()).optional(), allow_port: z.array(z.number().int()).optional(), insecure_allow_all: z.boolean().optional()}); export const permissionsNetworkPermissions = z.object({inbound: permissionsInboundNetworkPermissions.optional(), mode: z.string().optional(), outbound: permissionsOutboundNetworkPermissions.optional()}); export const permissionsProfile = z.object({name: z.string().optional(), network: permissionsNetworkPermissions.optional(), privileged: z.boolean().optional(), read: z.array(z.string()).optional(), write: z.array(z.string()).optional()}); export const registryVerifiedAttestation = z.object({predicate: z.unknown(), predicate_type: z.string().optional()}); export const registryProvenance = z.object({attestation: registryVerifiedAttestation.optional(), cert_issuer: z.string().optional(), repository_ref: z.string().optional(), repository_uri: z.string().optional(), runner_environment: z.string().optional(), signer_identity: z.string().optional(), sigstore_url: z.string().optional()}); export const registryImageMetadata = z.object({args: z.array(z.string()).optional(), custom_metadata: z.record(z.string(), z.unknown()).optional(), description: z.string().optional(), docker_tags: z.array(z.string()).optional(), env_vars: z.array(registryEnvVar).optional(), image: z.string().optional(), metadata: registryMetadata.optional(), name: z.string().optional(), overview: z.string().optional(), permissions: permissionsProfile.optional(), provenance: registryProvenance.optional(), proxy_port: z.number().int().optional(), repository_url: z.string().optional(), stateless: z.boolean().optional(), status: z.string().optional(), tags: z.array(z.string()).optional(), target_port: z.number().int().optional(), tier: z.string().optional(), title: z.string().optional(), tools: z.array(z.string()).optional(), transport: z.string().optional()}); export const pkgApiV1ListServersResponse = z.object({remote_servers: z.array(registryRemoteServerMetadata).optional(), servers: z.array(registryImageMetadata).optional()}); export const validateResponse = async ( schema: { readonly '~standard': { readonly validate: (value: unknown) => ({ readonly value: Output; readonly issues?: undefined } | { readonly issues: ReadonlyArray<{ readonly message: string; readonly path?: ReadonlyArray | undefined }> }) | Promise<{ readonly value: Output; readonly issues?: undefined } | { readonly issues: ReadonlyArray<{ readonly message: string; readonly path?: ReadonlyArray | undefined }> }> } }, value: unknown ): Promise => { const result = await schema['~standard'].validate(value) if (result.issues !== undefined) { const detail = result.issues .map(({ message, path }) => path?.length ? `${path.map((segment) => String(typeof segment === 'object' ? segment.key : segment)).join('.')}: ${message}` : message ) .join('; ') throw new Error(`Response does not match the schema: ${detail}`, { cause: { issues: result.issues } }) } return result.value }; /** * List servers in a registry * * GET /api/v1beta/registry/{name}/servers */ export const getApiApiV1betaRegistryNameServers = async (args: GetApiApiV1betaRegistryNameServersArgs, options: GetApiApiV1betaRegistryNameServersOptions) => { const {baseUrl, fetch: fetchFn = fetch} = options ?? {} const query = new URLSearchParams() const headers = new Headers() headers.set('accept', "application/json") const url = `${baseUrl.replace(/\/+$/, '')}/api/v1beta/registry/${encodeURIComponent(String(args.name))}/servers${query.size > 0 ? `?${query}` : ''}` const res = await fetchFn(url, {method: "GET", headers}) if (!res.ok) throw new Error(`Request failed with status ${res.status}`, {cause: {status: res.status, body: await res.text()}}) return validateResponse(pkgApiV1ListServersResponse, await res.json()) };