mirror of
https://github.com/openclaw/openclaw.git
synced 2026-05-08 22:48:27 +00:00
Mattermost: add interactive model picker (#38767)
Merged via squash.
Prepared head SHA: 0883654e88
Co-authored-by: mukhtharcm <56378562+mukhtharcm@users.noreply.github.com>
Co-authored-by: mukhtharcm <56378562+mukhtharcm@users.noreply.github.com>
Reviewed-by: @mukhtharcm
This commit is contained in:
committed by
GitHub
parent
33e7394861
commit
4f08dcccfd
@@ -61,15 +61,17 @@ function renderRecentsViewRows(
|
||||
}
|
||||
|
||||
describe("loadDiscordModelPickerData", () => {
|
||||
it("reuses buildModelsProviderData as source of truth", async () => {
|
||||
it("reuses buildModelsProviderData as source of truth with agent scope", async () => {
|
||||
const expected = createModelsProviderData({ openai: ["gpt-4o"] });
|
||||
const cfg = {} as OpenClawConfig;
|
||||
const spy = vi
|
||||
.spyOn(modelsCommandModule, "buildModelsProviderData")
|
||||
.mockResolvedValue(expected);
|
||||
|
||||
const result = await loadDiscordModelPickerData({} as OpenClawConfig);
|
||||
const result = await loadDiscordModelPickerData(cfg, "support");
|
||||
|
||||
expect(spy).toHaveBeenCalledTimes(1);
|
||||
expect(spy).toHaveBeenCalledWith(cfg, "support");
|
||||
expect(result).toBe(expected);
|
||||
});
|
||||
});
|
||||
|
||||
@@ -541,8 +541,11 @@ function buildModelRows(params: {
|
||||
* Source-of-truth data for Discord picker views. This intentionally reuses the
|
||||
* same provider/model resolver used by text and Telegram model commands.
|
||||
*/
|
||||
export async function loadDiscordModelPickerData(cfg: OpenClawConfig): Promise<ModelsProviderData> {
|
||||
return buildModelsProviderData(cfg);
|
||||
export async function loadDiscordModelPickerData(
|
||||
cfg: OpenClawConfig,
|
||||
agentId?: string,
|
||||
): Promise<ModelsProviderData> {
|
||||
return buildModelsProviderData(cfg, agentId);
|
||||
}
|
||||
|
||||
export function buildDiscordModelPickerCustomId(params: {
|
||||
|
||||
@@ -476,13 +476,13 @@ async function replyWithDiscordModelPickerProviders(params: {
|
||||
threadBindings: ThreadBindingManager;
|
||||
preferFollowUp: boolean;
|
||||
}) {
|
||||
const data = await loadDiscordModelPickerData(params.cfg);
|
||||
const route = await resolveDiscordModelPickerRoute({
|
||||
interaction: params.interaction,
|
||||
cfg: params.cfg,
|
||||
accountId: params.accountId,
|
||||
threadBindings: params.threadBindings,
|
||||
});
|
||||
const data = await loadDiscordModelPickerData(params.cfg, route.agentId);
|
||||
const currentModel = resolveDiscordModelPickerCurrentModel({
|
||||
cfg: params.cfg,
|
||||
route,
|
||||
@@ -637,13 +637,13 @@ async function handleDiscordModelPickerInteraction(
|
||||
return;
|
||||
}
|
||||
|
||||
const pickerData = await loadDiscordModelPickerData(ctx.cfg);
|
||||
const route = await resolveDiscordModelPickerRoute({
|
||||
interaction,
|
||||
cfg: ctx.cfg,
|
||||
accountId: ctx.accountId,
|
||||
threadBindings: ctx.threadBindings,
|
||||
});
|
||||
const pickerData = await loadDiscordModelPickerData(ctx.cfg, route.agentId);
|
||||
const currentModelRef = resolveDiscordModelPickerCurrentModel({
|
||||
cfg: ctx.cfg,
|
||||
route,
|
||||
|
||||
Reference in New Issue
Block a user