mirror of
https://github.com/deepseek-ai/deepseek-harness
synced 2026-08-15 21:04:50 +00:00
A row's stored profile could not tell a hand-declared gateway from a shipped provider whose models someone narrowed — both look identical from outside the adapter — so the Models page had no way to mark the routes a deployment added itself. The directory entry now carries `declared`, answered by the owning adapter against its own installed catalog, and the page renders a Custom tag from it. Absence stays "this adapter draws no such distinction" rather than "shipped", so a route no adapter claims is labelled neither way. Also records the default-route work's Agent Note and the e2e evidence for all three changes: the composer switch writing the section, and the Models page declaring a route with its own reasoning effort.
65 lines
2.8 KiB
TypeScript
65 lines
2.8 KiB
TypeScript
/**
|
|
* llm domain zod schemas (names derived from map keys: llmProvidersRequestSchema /
|
|
* llmProvidersValueSchema / llmModelsRequestSchema / llmModelsValueSchema).
|
|
*/
|
|
|
|
import { z } from 'zod'
|
|
import type { RequestPayload, ResponseValue } from './rpc-map.ts'
|
|
import type { Wire } from './rpc.schema.ts'
|
|
import type { ConfigurableProviderView, DiscoveredModelView } from './llm.ts'
|
|
import { modelCatalogFailureSchema, modelProviderGroupSchema } from './sessions.schema.ts'
|
|
|
|
/** ConfigurableProviderView row of llm.providers. */
|
|
export const configurableProviderViewSchema = z.object({
|
|
provider: z.string().min(1),
|
|
displayName: z.string().min(1),
|
|
settingsNs: z.string(),
|
|
settingsPath: z.array(z.string()),
|
|
active: z.boolean(),
|
|
declared: z.boolean().optional(),
|
|
}) satisfies z.ZodType<Wire<ConfigurableProviderView>>
|
|
|
|
/** llm.providers request payload. */
|
|
export const llmProvidersRequestSchema = z.object({}) satisfies z.ZodType<Wire<RequestPayload<'llm.providers'>>>
|
|
|
|
/** llm.providers response value. */
|
|
export const llmProvidersValueSchema = z.object({
|
|
providers: z.array(configurableProviderViewSchema),
|
|
}) satisfies z.ZodType<Wire<ResponseValue<'llm.providers'>>>
|
|
|
|
/** llm.models request payload. */
|
|
export const llmModelsRequestSchema = z.object({}) satisfies z.ZodType<Wire<RequestPayload<'llm.models'>>>
|
|
|
|
/** llm.models response value. */
|
|
export const llmModelsValueSchema = z.object({
|
|
groups: z.array(modelProviderGroupSchema),
|
|
failures: z.array(modelCatalogFailureSchema),
|
|
}) satisfies z.ZodType<Wire<ResponseValue<'llm.models'>>>
|
|
|
|
/** DiscoveredModelView row of llm.discoverModels. */
|
|
export const discoveredModelViewSchema = z.object({
|
|
id: z.string().min(1),
|
|
name: z.string().min(1).optional(),
|
|
contextWindow: z.number().int().positive().optional(),
|
|
maxTokens: z.number().int().positive().optional(),
|
|
}) satisfies z.ZodType<Wire<DiscoveredModelView>>
|
|
|
|
/** llm.discoverModels request payload. */
|
|
export const llmDiscoverModelsRequestSchema = z.object({
|
|
settingsNs: z.string().min(1),
|
|
provider: z.string().min(1).optional(),
|
|
baseURL: z.string().min(1).optional(),
|
|
api: z.string().min(1).optional(),
|
|
// Write-only at the host: used for this one interrogation, never stored and
|
|
// never returned. It does ride the client's outgoing envelope like every
|
|
// other secret-bearing payload (`credentials.set`, `settings.update`), which
|
|
// `subscribeEnvelopes()` observers can see — redacting that tap is a
|
|
// configuration-plane-wide change, not this method's to make alone.
|
|
apiKey: z.string().min(1).optional(),
|
|
}) satisfies z.ZodType<Wire<RequestPayload<'llm.discoverModels'>>>
|
|
|
|
/** llm.discoverModels response value. */
|
|
export const llmDiscoverModelsValueSchema = z.object({
|
|
models: z.array(discoveredModelViewSchema),
|
|
}) satisfies z.ZodType<Wire<ResponseValue<'llm.discoverModels'>>>
|