fix: repair latest main gates

This commit is contained in:
Peter Steinberger
2026-04-06 20:30:09 +01:00
parent 78a948ee32
commit a89f171865
10 changed files with 119 additions and 16 deletions

View File

@@ -6,7 +6,7 @@
<title>2026.4.5</title>
<pubDate>Mon, 06 Apr 2026 04:55:17 +0100</pubDate>
<link>https://raw.githubusercontent.com/openclaw/openclaw/main/appcast.xml</link>
<sparkle:version>2026040501</sparkle:version>
<sparkle:version>2026040590</sparkle:version>
<sparkle:shortVersionString>2026.4.5</sparkle:shortVersionString>
<sparkle:minimumSystemVersion>15.0</sparkle:minimumSystemVersion>
<description><![CDATA[<h2>OpenClaw 2026.4.5</h2>
@@ -436,4 +436,4 @@
<enclosure url="https://github.com/openclaw/openclaw/releases/download/v2026.4.1/OpenClaw-2026.4.1.zip" length="25841903" type="application/octet-stream" sparkle:edSignature="0TPiyshScmwDbgs626JU08NOUUFJmIsVFa5g0xmizfl64Fr+IoT4l/dkXarFqbZAJidtj5WN7Bff7fG8ye/7AA=="/>
</item>
</channel>
</rss>
</rss>

View File

@@ -3,8 +3,11 @@
"compilerOptions": {
"paths": {
"openclaw/extension-api": ["../src/extensionAPI.ts"],
"openclaw/plugin-sdk": ["../src/plugin-sdk/index.ts"],
"openclaw/plugin-sdk/*": ["../src/plugin-sdk/*.ts"],
"openclaw/plugin-sdk": ["../packages/plugin-sdk/dist/src/plugin-sdk/index.d.ts"],
"openclaw/plugin-sdk/*": [
"../packages/plugin-sdk/dist/src/plugin-sdk/*.d.ts",
"../packages/plugin-sdk/dist/packages/plugin-sdk/src/*.d.ts"
],
"openclaw/plugin-sdk/account-id": ["../src/plugin-sdk/account-id.ts"],
"@openclaw/*": ["../extensions/*"],
"@openclaw/plugin-sdk/*": ["../packages/plugin-sdk/dist/packages/plugin-sdk/src/*.d.ts"]

View File

@@ -0,0 +1,2 @@
export const resolveAnthropicVertexClientRegion: (...args: unknown[]) => unknown;
export const resolveAnthropicVertexProjectId: (...args: unknown[]) => unknown;

View File

@@ -0,0 +1 @@
export const resolveOllamaApiBase: (...args: unknown[]) => unknown;

View File

@@ -0,0 +1,16 @@
export type OllamaEmbeddingClient = unknown;
export const buildAssistantMessage: (...args: unknown[]) => unknown;
export const buildOllamaChatRequest: (...args: unknown[]) => unknown;
export const convertToOllamaMessages: (...args: unknown[]) => unknown;
export const createConfiguredOllamaCompatNumCtxWrapper: (...args: unknown[]) => unknown;
export const createConfiguredOllamaCompatStreamWrapper: (...args: unknown[]) => unknown;
export const createConfiguredOllamaStreamFn: (...args: unknown[]) => unknown;
export const createOllamaStreamFn: (...args: unknown[]) => unknown;
export const createOllamaEmbeddingProvider: (...args: unknown[]) => unknown;
export const isOllamaCompatProvider: (...args: unknown[]) => unknown;
export const resolveOllamaBaseUrlForRun: (...args: unknown[]) => unknown;
export const resolveOllamaCompatNumCtxEnabled: (...args: unknown[]) => unknown;
export const shouldInjectOllamaCompatNumCtx: (...args: unknown[]) => unknown;
export const parseNdjsonStream: (...args: unknown[]) => unknown;
export const wrapOllamaCompatNumCtx: (...args: unknown[]) => unknown;

View File

@@ -0,0 +1,32 @@
export type ResolvedTtsConfig = unknown;
export type ResolvedTtsModelOverrides = unknown;
export type TtsDirectiveOverrides = unknown;
export type TtsDirectiveParseResult = unknown;
export type TtsResult = unknown;
export type TtsSynthesisResult = unknown;
export type TtsTelephonyResult = unknown;
export const _test: unknown;
export const buildTtsSystemPromptHint: (...args: unknown[]) => unknown;
export const getLastTtsAttempt: (...args: unknown[]) => unknown;
export const getResolvedSpeechProviderConfig: (...args: unknown[]) => unknown;
export const getTtsMaxLength: (...args: unknown[]) => unknown;
export const getTtsProvider: (...args: unknown[]) => unknown;
export const isSummarizationEnabled: (...args: unknown[]) => unknown;
export const isTtsEnabled: (...args: unknown[]) => unknown;
export const isTtsProviderConfigured: (...args: unknown[]) => unknown;
export const listSpeechVoices: (...args: unknown[]) => unknown;
export const maybeApplyTtsToPayload: (...args: unknown[]) => unknown;
export const resolveTtsAutoMode: (...args: unknown[]) => unknown;
export const resolveTtsConfig: (...args: unknown[]) => unknown;
export const resolveTtsPrefsPath: (...args: unknown[]) => unknown;
export const resolveTtsProviderOrder: (...args: unknown[]) => unknown;
export const setLastTtsAttempt: (...args: unknown[]) => unknown;
export const setSummarizationEnabled: (...args: unknown[]) => unknown;
export const setTtsAutoMode: (...args: unknown[]) => unknown;
export const setTtsEnabled: (...args: unknown[]) => unknown;
export const setTtsMaxLength: (...args: unknown[]) => unknown;
export const setTtsProvider: (...args: unknown[]) => unknown;
export const synthesizeSpeech: (...args: unknown[]) => unknown;
export const textToSpeech: (...args: unknown[]) => unknown;
export const textToSpeechTelephony: (...args: unknown[]) => unknown;

View File

@@ -1,7 +1,22 @@
{
"extends": "../tsconfig.package-boundary.base.json",
"compilerOptions": {
"rootDir": "."
"rootDir": ".",
"paths": {
"openclaw/extension-api": ["../../src/extensionAPI.ts"],
"openclaw/plugin-sdk": ["../../packages/plugin-sdk/dist/src/plugin-sdk/index.d.ts"],
"openclaw/plugin-sdk/*": [
"../../packages/plugin-sdk/dist/src/plugin-sdk/*.d.ts",
"../../packages/plugin-sdk/dist/packages/plugin-sdk/src/*.d.ts"
],
"openclaw/plugin-sdk/account-id": ["../../src/plugin-sdk/account-id.ts"],
"@openclaw/*": ["../*"],
"@openclaw/plugin-sdk/*": ["../../packages/plugin-sdk/dist/packages/plugin-sdk/src/*.d.ts"],
"@openclaw/anthropic-vertex/api.js": ["./.boundary-stubs/anthropic-vertex-api.d.ts"],
"@openclaw/ollama/api.js": ["./.boundary-stubs/ollama-api.d.ts"],
"@openclaw/ollama/runtime-api.js": ["./.boundary-stubs/ollama-runtime-api.d.ts"],
"@openclaw/speech-core/runtime-api.js": ["./.boundary-stubs/speech-core-runtime-api.d.ts"]
}
},
"include": ["./*.ts", "./src/**/*.ts"],
"exclude": ["./**/*.test.ts", "./dist/**", "./node_modules/**"]

View File

@@ -1,5 +1,12 @@
import { beforeAll, beforeEach, describe, expect, it, vi } from "vitest";
const INLINE_EVAL_HIT = {
executable: "python3",
normalizedExecutable: "python3",
flag: "-c",
argv: ["python3", "-c", "print(1)"],
};
const createAndRegisterDefaultExecApprovalRequestMock = vi.hoisted(() => vi.fn());
const buildExecApprovalPendingToolResultMock = vi.hoisted(() => vi.fn());
const buildExecApprovalFollowupTargetMock = vi.hoisted(() => vi.fn(() => null));
@@ -58,7 +65,14 @@ const enforceStrictInlineEvalApprovalBoundaryMock = vi.hoisted(() =>
),
);
const detectInterpreterInlineEvalArgvMock = vi.hoisted(() =>
vi.fn((): { kind: string } | null => null),
vi.fn(
(): {
executable: string;
normalizedExecutable: string;
flag: string;
argv: string[];
} | null => null,
),
);
vi.mock("../infra/exec-approvals.js", () => ({
@@ -295,7 +309,7 @@ describe("processGatewayAllowlist", () => {
hostAsk: "always",
askFallback: "full",
});
detectInterpreterInlineEvalArgvMock.mockReturnValue({ kind: "python-c" });
detectInterpreterInlineEvalArgvMock.mockReturnValue(INLINE_EVAL_HIT);
resolveApprovalDecisionOrUndefinedMock.mockResolvedValue(null);
createExecApprovalDecisionStateMock.mockReturnValue({
baseDecision: { timedOut: true },
@@ -341,7 +355,7 @@ describe("processGatewayAllowlist", () => {
hostAsk: "always",
askFallback: "allowlist",
});
detectInterpreterInlineEvalArgvMock.mockReturnValue({ kind: "python-c" });
detectInterpreterInlineEvalArgvMock.mockReturnValue(INLINE_EVAL_HIT);
resolveApprovalDecisionOrUndefinedMock.mockResolvedValue(null);
createExecApprovalDecisionStateMock.mockReturnValue({
baseDecision: { timedOut: true },

View File

@@ -1,5 +1,12 @@
import { beforeAll, beforeEach, describe, expect, it, vi } from "vitest";
const INLINE_EVAL_HIT = {
executable: "python3",
normalizedExecutable: "python3",
flag: "-c",
argv: ["python3", "-c", "print(1)"],
};
const preparedPlan = vi.hoisted(() => ({
argv: ["bun", "./script.ts"],
cwd: "/tmp/work",
@@ -60,7 +67,14 @@ const registerExecApprovalRequestForHostOrThrowMock = vi.hoisted(() =>
vi.fn(async () => undefined),
);
const detectInterpreterInlineEvalArgvMock = vi.hoisted(() =>
vi.fn((): { kind: string } | null => null),
vi.fn(
(): {
executable: string;
normalizedExecutable: string;
flag: string;
argv: string[];
} | null => null,
),
);
vi.mock("../infra/exec-approvals.js", () => ({
@@ -264,7 +278,7 @@ describe("executeNodeHostCommand", () => {
});
it("denies timed-out inline-eval requests instead of invoking the node", async () => {
detectInterpreterInlineEvalArgvMock.mockReturnValue({ kind: "python-c" });
detectInterpreterInlineEvalArgvMock.mockReturnValue(INLINE_EVAL_HIT);
resolveApprovalDecisionOrUndefinedMock.mockResolvedValue(null);
createExecApprovalDecisionStateMock.mockReturnValue({
baseDecision: { timedOut: true },

View File

@@ -71,11 +71,17 @@ describe("installTestEnv", () => {
},
channels: {
telegram: {
streamMode: "block",
chunkMode: "newline",
blockStreaming: true,
draftChunk: {
minChars: 120,
streaming: {
mode: "block",
chunkMode: "newline",
block: {
enabled: true,
},
preview: {
chunk: {
minChars: 120,
},
},
},
},
},
@@ -127,7 +133,7 @@ describe("installTestEnv", () => {
expect(copiedConfig.agents?.defaults?.agentDir).toBeUndefined();
expect(copiedConfig.agents?.list?.[0]?.workspace).toBeUndefined();
expect(copiedConfig.agents?.list?.[0]?.agentDir).toBeUndefined();
expect(copiedConfig.channels?.telegram?.streaming).toMatchObject({
expect(copiedConfig.channels?.telegram?.streaming).toEqual({
mode: "block",
chunkMode: "newline",
block: { enabled: true },