feat: add model reconciliation hook
parent
3f1c96a0bb
commit
c32c2e8a8f
|
|
@ -110,9 +110,9 @@ export namespace Plugin {
|
|||
})
|
||||
|
||||
export async function trigger<
|
||||
Name extends Exclude<keyof Required<Hooks>, "auth" | "event" | "tool">,
|
||||
Input = Parameters<Required<Hooks>[Name]>[0],
|
||||
Output = Parameters<Required<Hooks>[Name]>[1],
|
||||
Name extends Exclude<keyof Required<Hooks>, "auth" | "event" | "tool" | "provider">,
|
||||
Input = Parameters<Extract<Required<Hooks>[Name], (...args: any) => any>>[0],
|
||||
Output = Parameters<Extract<Required<Hooks>[Name], (...args: any) => any>>[1],
|
||||
>(name: Name, input: Input, output: Output): Promise<Output> {
|
||||
if (!name) return output
|
||||
for (const hook of await state().then((x) => x.hooks)) {
|
||||
|
|
|
|||
|
|
@ -159,6 +159,16 @@ export type AuthOuathResult = { url: string; instructions: string } & (
|
|||
}
|
||||
)
|
||||
|
||||
export type ProviderHook = {
|
||||
id: string
|
||||
models?: {
|
||||
reconcile?: (input: {
|
||||
provider: Provider
|
||||
models: Record<string, Model>
|
||||
}) => Promise<Record<string, Model> | undefined>
|
||||
}
|
||||
}
|
||||
|
||||
export interface Hooks {
|
||||
event?: (input: { event: Event }) => Promise<void>
|
||||
config?: (input: Config) => Promise<void>
|
||||
|
|
@ -166,6 +176,7 @@ export interface Hooks {
|
|||
[key: string]: ToolDefinition
|
||||
}
|
||||
auth?: AuthHook
|
||||
provider?: ProviderHook
|
||||
/**
|
||||
* Called when a new message is received
|
||||
*/
|
||||
|
|
|
|||
Loading…
Reference in New Issue