@juspay/neurolink
Version:
The pipe layer of an AI nervous system: one interface connecting provider neurons to your application, across three inference types — generate, stream and decide. `decide` returns typed, calibrated judgements from a non-generative model (~400ms, ~$0.00002
135 lines (134 loc) • 5.72 kB
TypeScript
/**
* zod validator for the single-JSON provider catalog authoring format.
* Mirrors src/lib/types/providerCatalog.ts field-for-field with
* z.strictObject (unknown keys are authoring mistakes) plus the
* cross-field refinements the plain types cannot express. See
* docs/superpowers/plans/2026-08-28-provider-json-catalog-spec.md.
*
* provider-catalog.schema.json is a hand-kept JSON Schema mirror for
* editor validation only — this file is the authoritative validator.
*/
import { z } from "zod";
import type { ProviderCatalogJson } from "../../types/index.js";
export declare const providerCatalogJsonSchema: z.ZodObject<{
$schema: z.ZodOptional<z.ZodString>;
id: z.ZodString;
displayName: z.ZodString;
enumTypeName: z.ZodOptional<z.ZodString>;
credentialsKey: z.ZodOptional<z.ZodString>;
aliases: z.ZodArray<z.ZodString>;
tier: z.ZodLiteral<2>;
wire: z.ZodObject<{
baseURL: z.ZodOptional<z.ZodString>;
baseURLTemplate: z.ZodOptional<z.ZodString>;
extraCredentials: z.ZodOptional<z.ZodArray<z.ZodString>>;
missingCredentialMessage: z.ZodOptional<z.ZodString>;
apiKeyFallbackEnvVars: z.ZodOptional<z.ZodArray<z.ZodString>>;
envOverrides: z.ZodOptional<z.ZodObject<{
apiKey: z.ZodOptional<z.ZodString>;
baseURL: z.ZodOptional<z.ZodString>;
model: z.ZodOptional<z.ZodString>;
}, z.core.$strict>>;
}, z.core.$strict>;
models: z.ZodObject<{
default: z.ZodString;
fallbacks: z.ZodArray<z.ZodString>;
fallbackModelName: z.ZodOptional<z.ZodString>;
registryDefaultModel: z.ZodOptional<z.ZodString>;
defaultContextWindow: z.ZodNumber;
defaultMaxOutputTokens: z.ZodNumber;
catalog: z.ZodRecord<z.ZodString, z.ZodObject<{
contextWindow: z.ZodOptional<z.ZodNumber>;
maxOutputTokens: z.ZodOptional<z.ZodNumber>;
pricingPerMTok: z.ZodOptional<z.ZodObject<{
input: z.ZodNumber;
output: z.ZodNumber;
cachedInput: z.ZodOptional<z.ZodNumber>;
}, z.core.$strict>>;
vision: z.ZodBoolean;
status: z.ZodEnum<{
production: "production";
preview: "preview";
retired: "retired";
}>;
description: z.ZodString;
enumMember: z.ZodOptional<z.ZodString>;
}, z.core.$strict>>;
topModels: z.ZodOptional<z.ZodArray<z.ZodString>>;
visionModel: z.ZodOptional<z.ZodString>;
testModel: z.ZodOptional<z.ZodString>;
}, z.core.$strict>;
capabilities: z.ZodObject<{
text: z.ZodBoolean;
streaming: z.ZodBoolean;
tools: z.ZodUnion<readonly [z.ZodBoolean, z.ZodLiteral<"model-dependent">]>;
toolsWithStreaming: z.ZodBoolean;
structuredOutput: z.ZodBoolean;
structuredOutputWithTools: z.ZodBoolean;
embeddings: z.ZodBoolean;
thinking: z.ZodBoolean;
}, z.core.$strict>;
errorRules: z.ZodArray<z.ZodObject<{
status: z.ZodOptional<z.ZodNumber>;
pattern: z.ZodOptional<z.ZodString>;
patternStatuses: z.ZodOptional<z.ZodArray<z.ZodNumber>>;
class: z.ZodEnum<{
network: "network";
provider: "provider";
authentication: "authentication";
"invalid-model": "invalid-model";
"rate-limit": "rate-limit";
}>;
message: z.ZodString;
}, z.core.$strict>>;
quirks: z.ZodOptional<z.ZodObject<{
timeoutErrorClass: z.ZodOptional<z.ZodLiteral<"provider">>;
messageContentFormat: z.ZodOptional<z.ZodLiteral<"string">>;
registryDefaultIgnoresModelEnvVar: z.ZodOptional<z.ZodBoolean>;
responseFormatDowngrade: z.ZodOptional<z.ZodLiteral<"json-schema-to-json-object">>;
replayReasoningContent: z.ZodOptional<z.ZodBoolean>;
authHeaderStyle: z.ZodOptional<z.ZodLiteral<"x-api-key">>;
}, z.core.$strict>>;
timeouts: z.ZodOptional<z.ZodObject<{
generateMs: z.ZodOptional<z.ZodNumber>;
streamMs: z.ZodOptional<z.ZodNumber>;
}, z.core.$strict>>;
autoSelectPriority: z.ZodOptional<z.ZodNumber>;
setup: z.ZodObject<{
url: z.ZodString;
apiKeyFormat: z.ZodNullable<z.ZodString>;
billingPolicy: z.ZodEnum<{
"no-free-tier": "no-free-tier";
"free-tier": "free-tier";
"free-with-card": "free-with-card";
}>;
instructions: z.ZodArray<z.ZodString>;
description: z.ZodOptional<z.ZodString>;
}, z.core.$strict>;
evidence: z.ZodObject<{
rosterVerified: z.ZodObject<{
date: z.ZodString;
status: z.ZodOptional<z.ZodNumber>;
code: z.ZodOptional<z.ZodString>;
method: z.ZodOptional<z.ZodString>;
}, z.core.$strict>;
authProbe: z.ZodOptional<z.ZodObject<{
date: z.ZodString;
status: z.ZodOptional<z.ZodNumber>;
code: z.ZodOptional<z.ZodString>;
method: z.ZodOptional<z.ZodString>;
}, z.core.$strict>>;
billingProbe: z.ZodOptional<z.ZodObject<{
date: z.ZodString;
status: z.ZodOptional<z.ZodNumber>;
code: z.ZodOptional<z.ZodString>;
method: z.ZodOptional<z.ZodString>;
}, z.core.$strict>>;
liveMatrix: z.ZodNullable<z.ZodObject<{
date: z.ZodString;
result: z.ZodString;
}, z.core.$strict>>;
addedInPR: z.ZodString;
}, z.core.$strict>;
}, z.core.$strict>;
export declare function parseProviderCatalogJson(raw: unknown, sourcePath: string): ProviderCatalogJson;