

























@@ -7,7 +7,6 @@ import {
77import type { OpenClawConfig } from "openclaw/plugin-sdk/core";
88import { parseStrictInteger } from "openclaw/plugin-sdk/number-runtime";
99import { normalizeProviderId } from "openclaw/plugin-sdk/provider-model-shared";
10-import { parseThreadSessionSuffix } from "openclaw/plugin-sdk/routing";
1110import { getSessionEntry, resolveStorePath } from "openclaw/plugin-sdk/session-store-runtime";
1211import {
1312normalizeOptionalString,
@@ -40,8 +39,6 @@ type MattermostModelPickerRenderedView = {
4039buttons: MattermostInteractiveButtonInput[][];
4140};
424143-type MattermostModelPickerSessionEntry = ReturnType<typeof getSessionEntry>;
44-4542function splitModelRef(modelRef?: string | null): { provider: string; model: string } | null {
4643const trimmed = normalizeOptionalString(modelRef);
4744const match = trimmed?.match(/^([^/]+)\/(.+)$/u);
@@ -80,24 +77,6 @@ function normalizePage(value: number | undefined): number {
8077return Math.max(1, Math.floor(value as number));
8178}
827983-function resolveMattermostModelPickerParentSessionKey(params: {
84-sessionEntry: MattermostModelPickerSessionEntry;
85-sessionKey: string;
86-}): string | undefined {
87-// Preserve inherited model overrides without exposing whole-store reads to the UI path.
88-const persistedParent =
89-typeof params.sessionEntry?.parentSessionKey === "string"
90- ? params.sessionEntry.parentSessionKey.trim()
91- : "";
92-if (persistedParent && persistedParent !== params.sessionKey) {
93-return persistedParent;
94-}
95-const parsed = parseThreadSessionSuffix(params.sessionKey);
96-return parsed.threadId && parsed.baseSessionKey && parsed.baseSessionKey !== params.sessionKey
97- ? parsed.baseSessionKey
98- : undefined;
99-}
100-10180function paginateItems<T>(items: T[], page?: number, pageSize = MODELS_PAGE_SIZE) {
10281const totalPages = Math.max(1, Math.ceil(items.length / pageSize));
10382const safePage = Math.max(1, Math.min(normalizePage(page), totalPages));
@@ -258,38 +237,28 @@ export function resolveMattermostModelPickerCurrentModel(params: {
258237cfg: OpenClawConfig;
259238route: { agentId: string; sessionKey: string };
260239data: ModelsProviderData;
261-skipCache?: boolean;
240+readConsistency?: "latest";
262241}): string {
263242const fallback = `${params.data.resolvedDefault.provider}/${params.data.resolvedDefault.model}`;
264243try {
265244const storePath = resolveStorePath(params.cfg.session?.store, {
266245agentId: params.route.agentId,
267246});
268-const readOptions = {
269- storePath,
270- ...(params.skipCache ? { readConsistency: "latest" as const } : {}),
271-};
272247const sessionEntry = getSessionEntry({
273- ...readOptions,
274-sessionKey: params.route.sessionKey,
275-});
276-const parentSessionKey = resolveMattermostModelPickerParentSessionKey({
277- sessionEntry,
248+ storePath,
278249sessionKey: params.route.sessionKey,
250+ ...(params.readConsistency === "latest" ? { readConsistency: "latest" as const } : {}),
279251});
280-const parentEntry = parentSessionKey
281- ? getSessionEntry({
282- ...readOptions,
283-sessionKey: parentSessionKey,
284-})
285- : undefined;
286252const override = resolveStoredModelOverride({
287253 sessionEntry,
288- ...(parentEntry && parentSessionKey
289- ? { sessionStore: { [parentSessionKey]: parentEntry } }
290- : {}),
254+loadSessionEntry: (sessionKey) =>
255+getSessionEntry({
256+ storePath,
257+ sessionKey,
258+ ...(params.readConsistency === "latest" ? { readConsistency: "latest" as const } : {}),
259+}),
291260sessionKey: params.route.sessionKey,
292- parentSessionKey,
261+parentSessionKey: sessionEntry?.parentSessionKey,
293262defaultProvider: params.data.resolvedDefault.provider,
294263});
295264if (!override?.model) {
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。