mirror of
https://github.com/openclaw/openclaw.git
synced 2026-06-06 14:01:24 +08:00
Repairs a batch of narrow model/provider edge cases:
- honor OpenAI and Anthropic base URL environment overrides when provider config does not set an explicit base URL
- preserve OpenRouter Anthropic cache retention while stripping unsupported transport options
- allow apply_patch for non-OpenAI providers when the tool config otherwise permits it
- prune stale same-provider model selections from configure/model picker state
- expose GitHub Copilot bundled thinking policy metadata to offline/provider-policy lookups
- repair additive SQLite shared-state upgrades for existing databases
- keep same-size rotated log readers from reusing stale content in CI tooling
Proof:
- GitHub PR checks green on exact head 46514909b0
- Crabbox delegated Blacksmith Testbox tbx_01kt3em5r9vd7g0bnykrff6jdk exited 0
- Focused local Vitest/oxlint/format proof recorded in PR body and land-ready comment
Fixes #80347.
Fixes #88357.
Fixes #45269.
Supersedes #74427, #74432, #79370, #79894, #80366, and #88359.
40 lines
1.4 KiB
TypeScript
40 lines
1.4 KiB
TypeScript
import type { ProviderDefaultThinkingPolicyContext } from "openclaw/plugin-sdk/core";
|
|
import { normalizeOptionalLowercaseString } from "openclaw/plugin-sdk/string-coerce-runtime";
|
|
import { resolveStaticCopilotModelOverride } from "./model-metadata.js";
|
|
|
|
const COPILOT_XHIGH_MODEL_IDS = ["gpt-5.4", "gpt-5.3-codex"] as const;
|
|
|
|
function compatSupportsXHigh(
|
|
compat: { supportedReasoningEfforts?: readonly string[] | null } | null | undefined,
|
|
) {
|
|
return (
|
|
Array.isArray(compat?.supportedReasoningEfforts) &&
|
|
compat.supportedReasoningEfforts.some(
|
|
(effort) => normalizeOptionalLowercaseString(effort) === "xhigh",
|
|
)
|
|
);
|
|
}
|
|
|
|
export function resolveThinkingProfile(context: ProviderDefaultThinkingPolicyContext) {
|
|
if (context.provider.trim().toLowerCase() !== "github-copilot") {
|
|
return null;
|
|
}
|
|
const normalizedModelId = normalizeOptionalLowercaseString(context.modelId) ?? "";
|
|
const staticCompat = resolveStaticCopilotModelOverride(normalizedModelId)?.compat;
|
|
const modelSupportsXHigh =
|
|
COPILOT_XHIGH_MODEL_IDS.includes(normalizedModelId as never) ||
|
|
compatSupportsXHigh(context.compat) ||
|
|
compatSupportsXHigh(staticCompat);
|
|
|
|
return {
|
|
levels: [
|
|
{ id: "off" as const },
|
|
{ id: "minimal" as const },
|
|
{ id: "low" as const },
|
|
{ id: "medium" as const },
|
|
{ id: "high" as const },
|
|
...(modelSupportsXHigh ? [{ id: "xhigh" as const }] : []),
|
|
],
|
|
};
|
|
}
|