fix(auth/session): preserve override reset behavior and repair oauth profile-id drift (openclaw#18820) thanks @Glucksberg

Verified:
- pnpm build
- pnpm check
- pnpm test:macmini

Co-authored-by: Glucksberg <80581902+Glucksberg@users.noreply.github.com>
Co-authored-by: Tak Hoffman <781889+Takhoffman@users.noreply.github.com>
This commit is contained in:
Glucksberg
2026-02-19 23:16:26 -04:00
committed by GitHub
parent f1e1cc4ee3
commit 38b4fb5d55
16 changed files with 376 additions and 46 deletions

View File

@@ -1,12 +1,15 @@
import type { Message, ReactionTypeEmoji } from "@grammyjs/types";
import { resolveDefaultAgentId } from "../agents/agent-scope.js";
import { resolveAgentDir, resolveDefaultAgentId } from "../agents/agent-scope.js";
import { hasControlCommand } from "../auto-reply/command-detection.js";
import {
createInboundDebouncer,
resolveInboundDebounceMs,
} from "../auto-reply/inbound-debounce.js";
import { buildCommandsPaginationKeyboard } from "../auto-reply/reply/commands-info.js";
import { buildModelsProviderData } from "../auto-reply/reply/commands-models.js";
import {
buildModelsProviderData,
formatModelsAvailableHeader,
} from "../auto-reply/reply/commands-models.js";
import { resolveStoredModelOverride } from "../auto-reply/reply/model-selection.js";
import { listSkillCommandsForAgents } from "../auto-reply/skill-commands.js";
import { buildCommandsMessagePaginated } from "../auto-reply/status.js";
@@ -182,13 +185,17 @@ export const registerTelegramHandlers = ({
},
});
const resolveTelegramSessionModel = (params: {
const resolveTelegramSessionState = (params: {
chatId: number | string;
isGroup: boolean;
isForum: boolean;
messageThreadId?: number;
resolvedThreadId?: number;
}): string | undefined => {
}): {
agentId: string;
sessionEntry: ReturnType<typeof loadSessionStore>[string];
model?: string;
} => {
const resolvedThreadId =
params.resolvedThreadId ??
resolveTelegramForumThreadId({
@@ -229,17 +236,29 @@ export const registerTelegramHandlers = ({
sessionKey,
});
if (storedOverride) {
return storedOverride.provider
? `${storedOverride.provider}/${storedOverride.model}`
: storedOverride.model;
return {
agentId: route.agentId,
sessionEntry: entry,
model: storedOverride.provider
? `${storedOverride.provider}/${storedOverride.model}`
: storedOverride.model,
};
}
const provider = entry?.modelProvider?.trim();
const model = entry?.model?.trim();
if (provider && model) {
return `${provider}/${model}`;
return {
agentId: route.agentId,
sessionEntry: entry,
model: `${provider}/${model}`,
};
}
const modelCfg = cfg.agents?.defaults?.model;
return typeof modelCfg === "string" ? modelCfg : modelCfg?.primary;
return {
agentId: route.agentId,
sessionEntry: entry,
model: typeof modelCfg === "string" ? modelCfg : modelCfg?.primary,
};
};
const processMediaGroup = async (entry: MediaGroupEntry) => {
@@ -933,13 +952,14 @@ export const registerTelegramHandlers = ({
const safePage = Math.max(1, Math.min(page, totalPages));
// Resolve current model from session (prefer overrides)
const currentModel = resolveTelegramSessionModel({
const sessionState = resolveTelegramSessionState({
chatId,
isGroup,
isForum,
messageThreadId,
resolvedThreadId,
});
const currentModel = sessionState.model;
const buttons = buildModelsKeyboard({
provider,
@@ -949,7 +969,13 @@ export const registerTelegramHandlers = ({
totalPages,
pageSize,
});
const text = `Models (${provider}) — ${models.length} available`;
const text = formatModelsAvailableHeader({
provider,
total: models.length,
cfg,
agentDir: resolveAgentDir(cfg, sessionState.agentId),
sessionEntry: sessionState.sessionEntry,
});
await editMessageWithButtons(text, buttons);
return;
}