Eight compiler-locked methods: settings.describe/update/replace serve redacted layered namespace views (secrets structurally absent from every layer, write-only in the update direction) and fold seam refusals into settings-rejected; credentials.describe/set/unset expose value-free views with credential-rejected on shadowed writes; llm.providers merges the configurable directory with live routes and llm.models claims the host-scoped catalog reservation through the buildModelCatalog extraction session.models now shares. Three HostFrame invalidations bridge the seam events (host/settings-changed, host/credentials-changed, host/models-changed), and the connection route generalizes the native- dialog check into a privileged-method set covering all four writes. The fixture and both fake clients grow the same face.
37 lines
1.5 KiB
TypeScript
37 lines
1.5 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 } 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(),
|
|
}) 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'>>>
|