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
|
|
* (the same groups as `session.models`, without the per-session current
|
|
* target). 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[] }>>
|
|
}
|