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.
44 lines
1.9 KiB
TypeScript
44 lines
1.9 KiB
TypeScript
/**
|
|
* llm domain contract: host-scoped provider topology for configuration
|
|
* surfaces. `llm.providers` merges the configurable-provider directory
|
|
* (which providers CAN be configured, and where their settings live) with the
|
|
* live route registry; `llm.models` is the session-independent model catalog
|
|
* (`session.models` minus the per-session current/unlisted logic). Both
|
|
* invalidate on the `host/models-changed` frame.
|
|
*/
|
|
|
|
import type { RpcRequest, RpcResponse } from './rpc.ts'
|
|
import type { ModelCatalogFailure, ModelProviderGroup } from './sessions.ts'
|
|
|
|
/** Wire view of one configurable provider. */
|
|
export interface ConfigurableProviderView {
|
|
/** Provider route key (`deepseek-official`, `openai`, …). */
|
|
provider: string
|
|
/** Human-readable name for configuration surfaces. */
|
|
displayName: string
|
|
/** Settings namespace whose section configures this provider. */
|
|
settingsNs: string
|
|
/** Path from that section's root to the provider's profile object (empty = whole section). */
|
|
settingsPath: string[]
|
|
/** Whether the route is currently registered (its models are requestable). */
|
|
active: boolean
|
|
}
|
|
|
|
/** Llm-domain unary methods (the map keys llm.* of RpcMethodMap). */
|
|
export interface LlmApi {
|
|
/**
|
|
* List every configurable provider with its live/dormant state, in
|
|
* directory declaration order. Routes registered outside the directory
|
|
* (an adapter that never declared configurability) are appended with their
|
|
* registration identity and no settings address.
|
|
*/
|
|
providers(request: RpcRequest<{}>): Promise<RpcResponse<{ providers: ConfigurableProviderView[] }>>
|
|
|
|
/**
|
|
* Host-scoped model catalog over every registered provider route: the
|
|
* settings surface's models view, needing no session. Per-provider listing
|
|
* failures ride `failures` without failing the sound groups.
|
|
*/
|
|
models(request: RpcRequest<{}>): Promise<RpcResponse<{ groups: ModelProviderGroup[]; failures: ModelCatalogFailure[] }>>
|
|
}
|