mirror of
https://github.com/openclaw/openclaw.git
synced 2026-04-12 01:31:08 +00:00
fix: repair latest main gates
This commit is contained in:
@@ -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>
|
||||
|
||||
@@ -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"]
|
||||
|
||||
2
extensions/xai/.boundary-stubs/anthropic-vertex-api.d.ts
vendored
Normal file
2
extensions/xai/.boundary-stubs/anthropic-vertex-api.d.ts
vendored
Normal file
@@ -0,0 +1,2 @@
|
||||
export const resolveAnthropicVertexClientRegion: (...args: unknown[]) => unknown;
|
||||
export const resolveAnthropicVertexProjectId: (...args: unknown[]) => unknown;
|
||||
1
extensions/xai/.boundary-stubs/ollama-api.d.ts
vendored
Normal file
1
extensions/xai/.boundary-stubs/ollama-api.d.ts
vendored
Normal file
@@ -0,0 +1 @@
|
||||
export const resolveOllamaApiBase: (...args: unknown[]) => unknown;
|
||||
16
extensions/xai/.boundary-stubs/ollama-runtime-api.d.ts
vendored
Normal file
16
extensions/xai/.boundary-stubs/ollama-runtime-api.d.ts
vendored
Normal 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;
|
||||
32
extensions/xai/.boundary-stubs/speech-core-runtime-api.d.ts
vendored
Normal file
32
extensions/xai/.boundary-stubs/speech-core-runtime-api.d.ts
vendored
Normal 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;
|
||||
@@ -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/**"]
|
||||
|
||||
@@ -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 },
|
||||
|
||||
@@ -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 },
|
||||
|
||||
@@ -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 },
|
||||
|
||||
Reference in New Issue
Block a user