Tests: fix package boundary and runtime drift

This commit is contained in:
Peter Steinberger
2026-04-07 14:03:14 +08:00
parent 68e421c487
commit 9a66b9cd54
12 changed files with 60 additions and 53 deletions

View File

@@ -9,7 +9,7 @@ export const OPENAI_CODEX_DEFAULT_MODEL = "openai-codex/gpt-5.4";
export const OPENAI_DEFAULT_IMAGE_MODEL = "gpt-image-1";
export const OPENAI_DEFAULT_TTS_MODEL = "gpt-4o-mini-tts";
export const OPENAI_DEFAULT_TTS_VOICE = "alloy";
export const OPENAI_DEFAULT_AUDIO_TRANSCRIPTION_MODEL = "gpt-4o-mini-transcribe";
export const OPENAI_DEFAULT_AUDIO_TRANSCRIPTION_MODEL = "gpt-4o-transcribe";
export const OPENAI_DEFAULT_EMBEDDING_MODEL = "text-embedding-3-small";
export function applyOpenAIProviderConfig(cfg: OpenClawConfig): OpenClawConfig {

View File

@@ -43,7 +43,7 @@ describe("transcribeOpenAiAudio", () => {
});
const { url: seenUrl, init: seenInit } = getRequest();
expect(result.model).toBe("gpt-4o-mini-transcribe");
expect(result.model).toBe("gpt-4o-transcribe");
expect(result.text).toBe("hello");
expect(seenUrl).toBe("https://api.example.com/v1/audio/transcriptions");
expect(seenInit?.method).toBe("POST");
@@ -55,7 +55,7 @@ describe("transcribeOpenAiAudio", () => {
const form = seenInit?.body as FormData;
expect(form).toBeInstanceOf(FormData);
expect(form.get("model")).toBe("gpt-4o-mini-transcribe");
expect(form.get("model")).toBe("gpt-4o-transcribe");
expect(form.get("language")).toBe("en");
expect(form.get("prompt")).toBe("hello");
const file = form.get("file") as Blob | { type?: string; name?: string } | null;

View File

@@ -3,17 +3,11 @@
"compilerOptions": {
"paths": {
"openclaw/extension-api": ["../src/extensionAPI.ts"],
"openclaw/plugin-sdk": [
"../packages/plugin-sdk/dist/packages/plugin-sdk/src/src/plugin-sdk/index.d.ts"
],
"openclaw/plugin-sdk/*": [
"../packages/plugin-sdk/dist/packages/plugin-sdk/src/src/plugin-sdk/*.d.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"],
"openclaw/plugin-sdk/account-id": ["../src/plugin-sdk/account-id.ts"],
"@openclaw/*": ["../packages/plugin-sdk/dist/extensions/*", "../extensions/*"],
"@openclaw/plugin-sdk/*": [
"../packages/plugin-sdk/dist/packages/plugin-sdk/src/src/plugin-sdk/*.d.ts"
]
"@openclaw/plugin-sdk/*": ["../packages/plugin-sdk/dist/src/plugin-sdk/*.d.ts"]
}
}
}

View File

@@ -4,17 +4,11 @@
"rootDir": ".",
"paths": {
"openclaw/extension-api": ["../../src/extensionAPI.ts"],
"openclaw/plugin-sdk": [
"../../packages/plugin-sdk/dist/packages/plugin-sdk/src/src/plugin-sdk/index.d.ts"
],
"openclaw/plugin-sdk/*": [
"../../packages/plugin-sdk/dist/packages/plugin-sdk/src/src/plugin-sdk/*.d.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"],
"openclaw/plugin-sdk/account-id": ["../../src/plugin-sdk/account-id.ts"],
"@openclaw/*": ["../*"],
"@openclaw/plugin-sdk/*": [
"../../packages/plugin-sdk/dist/packages/plugin-sdk/src/src/plugin-sdk/*.d.ts"
],
"@openclaw/plugin-sdk/*": ["../../packages/plugin-sdk/dist/src/plugin-sdk/*.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"],

View File

@@ -5,63 +5,71 @@
"type": "module",
"exports": {
"./config-runtime": {
"types": "./dist/packages/plugin-sdk/src/src/plugin-sdk/config-runtime.d.ts",
"types": "./dist/src/plugin-sdk/config-runtime.d.ts",
"default": "./src/config-runtime.ts"
},
"./plugin-entry": {
"types": "./dist/packages/plugin-sdk/src/src/plugin-sdk/plugin-entry.d.ts",
"types": "./dist/src/plugin-sdk/plugin-entry.d.ts",
"default": "./src/plugin-entry.ts"
},
"./provider-auth": {
"types": "./dist/packages/plugin-sdk/src/src/plugin-sdk/provider-auth.d.ts",
"types": "./dist/src/plugin-sdk/provider-auth.d.ts",
"default": "./src/provider-auth.ts"
},
"./provider-auth-runtime": {
"types": "./dist/packages/plugin-sdk/src/src/plugin-sdk/provider-auth-runtime.d.ts",
"types": "./dist/src/plugin-sdk/provider-auth-runtime.d.ts",
"default": "./src/provider-auth-runtime.ts"
},
"./provider-entry": {
"types": "./dist/packages/plugin-sdk/src/src/plugin-sdk/provider-entry.d.ts",
"types": "./dist/src/plugin-sdk/provider-entry.d.ts",
"default": "./src/provider-entry.ts"
},
"./provider-http": {
"types": "./dist/packages/plugin-sdk/src/src/plugin-sdk/provider-http.d.ts",
"types": "./dist/src/plugin-sdk/provider-http.d.ts",
"default": "./src/provider-http.ts"
},
"./provider-model-shared": {
"types": "./dist/packages/plugin-sdk/src/src/plugin-sdk/provider-model-shared.d.ts",
"types": "./dist/src/plugin-sdk/provider-model-shared.d.ts",
"default": "./src/provider-model-shared.ts"
},
"./provider-onboard": {
"types": "./dist/packages/plugin-sdk/src/src/plugin-sdk/provider-onboard.d.ts",
"types": "./dist/src/plugin-sdk/provider-onboard.d.ts",
"default": "./src/provider-onboard.ts"
},
"./provider-stream-shared": {
"types": "./dist/packages/plugin-sdk/src/src/plugin-sdk/provider-stream-shared.d.ts",
"types": "./dist/src/plugin-sdk/provider-stream-shared.d.ts",
"default": "./src/provider-stream-shared.ts"
},
"./provider-tools": {
"types": "./dist/packages/plugin-sdk/src/src/plugin-sdk/provider-tools.d.ts",
"types": "./dist/src/plugin-sdk/provider-tools.d.ts",
"default": "./src/provider-tools.ts"
},
"./provider-web-search": {
"types": "./dist/packages/plugin-sdk/src/src/plugin-sdk/provider-web-search.d.ts",
"types": "./dist/src/plugin-sdk/provider-web-search.d.ts",
"default": "./src/provider-web-search.ts"
},
"./runtime-doctor": {
"types": "./dist/src/plugin-sdk/runtime-doctor.d.ts",
"default": "./src/runtime-doctor.ts"
},
"./runtime-env": {
"types": "./dist/packages/plugin-sdk/src/src/plugin-sdk/runtime-env.d.ts",
"types": "./dist/src/plugin-sdk/runtime-env.d.ts",
"default": "./src/runtime-env.ts"
},
"./secret-input": {
"types": "./dist/packages/plugin-sdk/src/src/plugin-sdk/secret-input.d.ts",
"types": "./dist/src/plugin-sdk/secret-input.d.ts",
"default": "./src/secret-input.ts"
},
"./testing": {
"types": "./dist/packages/plugin-sdk/src/src/plugin-sdk/testing.d.ts",
"types": "./dist/src/plugin-sdk/testing.d.ts",
"default": "./src/testing.ts"
},
"./text-runtime": {
"types": "./dist/src/plugin-sdk/text-runtime.d.ts",
"default": "./src/text-runtime.ts"
},
"./video-generation": {
"types": "./dist/packages/plugin-sdk/src/src/plugin-sdk/video-generation.d.ts",
"types": "./dist/src/plugin-sdk/video-generation.d.ts",
"default": "./src/video-generation.ts"
}
}

View File

@@ -27,11 +27,13 @@
"../../src/plugin-sdk/provider-stream-shared.ts",
"../../src/plugin-sdk/provider-tools.ts",
"../../src/plugin-sdk/provider-web-search.ts",
"../../src/plugin-sdk/runtime-doctor.ts",
"../../src/plugin-sdk/runtime-env.ts",
"../../src/plugin-sdk/secret-input-schema.ts",
"../../src/plugin-sdk/secret-input.ts",
"../../src/plugin-sdk/telegram-command-config.ts",
"../../src/plugin-sdk/testing.ts",
"../../src/plugin-sdk/text-runtime.ts",
"../../src/plugin-sdk/video-generation.ts",
"../../src/video-generation/dashscope-compatible.ts",
"../../src/video-generation/types.ts",

View File

@@ -19,7 +19,7 @@ describe("transcribeOpenAiCompatibleAudio", () => {
fetchFn,
provider: "openai",
defaultBaseUrl: "https://api.openai.com/v1",
defaultModel: "gpt-4o-mini-transcribe",
defaultModel: "gpt-4o-transcribe",
});
const headers = new Headers(getRequest().init?.headers);
@@ -40,7 +40,7 @@ describe("transcribeOpenAiCompatibleAudio", () => {
provider: "openai",
baseUrl: "https://proxy.example.com/v1",
defaultBaseUrl: "https://api.openai.com/v1",
defaultModel: "gpt-4o-mini-transcribe",
defaultModel: "gpt-4o-transcribe",
});
const headers = new Headers(getRequest().init?.headers);

View File

@@ -75,7 +75,7 @@ describe("runCapability auto audio entries", () => {
},
});
expect(result.outputs[0]?.text).toBe("ok");
expect(seenModel).toBe("gpt-4o-mini-transcribe");
expect(seenModel).toBe("gpt-4o-transcribe");
expect(result.decision.outcome).toBe("success");
});
@@ -144,7 +144,7 @@ describe("runCapability auto audio entries", () => {
capabilities: ["audio"],
transcribeAudio: async () => ({
text: "openai",
model: "gpt-4o-mini-transcribe",
model: "gpt-4o-transcribe",
}),
},
mistral: {

View File

@@ -27,6 +27,12 @@ export * from "../utils/chunk-items.js";
export * from "../utils/fetch-timeout.js";
export * from "../utils/reaction-level.js";
export * from "../utils/with-timeout.js";
export {
hasNonEmptyString,
normalizeNullableString,
normalizeOptionalString,
readStringValue,
} from "../shared/string-coerce.js";
export {
CONFIG_DIR,
clamp,

View File

@@ -37,17 +37,11 @@ describe("opt-in extension package boundaries", () => {
expect(pathsConfig.extends).toBe("../tsconfig.json");
expect(pathsConfig.compilerOptions?.paths).toEqual({
"openclaw/extension-api": ["../src/extensionAPI.ts"],
"openclaw/plugin-sdk": [
"../packages/plugin-sdk/dist/packages/plugin-sdk/src/src/plugin-sdk/index.d.ts",
],
"openclaw/plugin-sdk/*": [
"../packages/plugin-sdk/dist/packages/plugin-sdk/src/src/plugin-sdk/*.d.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"],
"openclaw/plugin-sdk/account-id": ["../src/plugin-sdk/account-id.ts"],
"@openclaw/*": ["../packages/plugin-sdk/dist/extensions/*", "../extensions/*"],
"@openclaw/plugin-sdk/*": [
"../packages/plugin-sdk/dist/packages/plugin-sdk/src/src/plugin-sdk/*.d.ts",
],
"@openclaw/plugin-sdk/*": ["../packages/plugin-sdk/dist/src/plugin-sdk/*.d.ts"],
});
const baseConfig = readJsonFile<TsConfigJson>(EXTENSION_PACKAGE_BOUNDARY_BASE_CONFIG);
@@ -109,11 +103,13 @@ describe("opt-in extension package boundaries", () => {
"../../src/plugin-sdk/provider-stream-shared.ts",
"../../src/plugin-sdk/provider-tools.ts",
"../../src/plugin-sdk/provider-web-search.ts",
"../../src/plugin-sdk/runtime-doctor.ts",
"../../src/plugin-sdk/runtime-env.ts",
"../../src/plugin-sdk/secret-input-schema.ts",
"../../src/plugin-sdk/secret-input.ts",
"../../src/plugin-sdk/telegram-command-config.ts",
"../../src/plugin-sdk/testing.ts",
"../../src/plugin-sdk/text-runtime.ts",
"../../src/plugin-sdk/video-generation.ts",
"../../src/video-generation/dashscope-compatible.ts",
"../../src/video-generation/types.ts",
@@ -124,13 +120,19 @@ describe("opt-in extension package boundaries", () => {
expect(packageJson.name).toBe("@openclaw/plugin-sdk");
expect(packageJson.exports?.["./core"]).toBeUndefined();
expect(packageJson.exports?.["./plugin-entry"]?.types).toBe(
"./dist/packages/plugin-sdk/src/src/plugin-sdk/plugin-entry.d.ts",
"./dist/src/plugin-sdk/plugin-entry.d.ts",
);
expect(packageJson.exports?.["./provider-http"]?.types).toBe(
"./dist/packages/plugin-sdk/src/src/plugin-sdk/provider-http.d.ts",
"./dist/src/plugin-sdk/provider-http.d.ts",
);
expect(packageJson.exports?.["./runtime-doctor"]?.types).toBe(
"./dist/src/plugin-sdk/runtime-doctor.d.ts",
);
expect(packageJson.exports?.["./text-runtime"]?.types).toBe(
"./dist/src/plugin-sdk/text-runtime.d.ts",
);
expect(packageJson.exports?.["./video-generation"]?.types).toBe(
"./dist/packages/plugin-sdk/src/src/plugin-sdk/video-generation.d.ts",
"./dist/src/plugin-sdk/video-generation.d.ts",
);
expect(existsSync(resolve(REPO_ROOT, "packages/plugin-sdk/types/plugin-entry.d.ts"))).toBe(
false,

View File

@@ -11,7 +11,7 @@ export const OPENAI_CODEX_DEFAULT_MODEL = "openai-codex/gpt-5.4";
export const OPENAI_DEFAULT_IMAGE_MODEL = "gpt-image-1";
export const OPENAI_DEFAULT_TTS_MODEL = "gpt-4o-mini-tts";
export const OPENAI_DEFAULT_TTS_VOICE = "alloy";
export const OPENAI_DEFAULT_AUDIO_TRANSCRIPTION_MODEL = "gpt-4o-mini-transcribe";
export const OPENAI_DEFAULT_AUDIO_TRANSCRIPTION_MODEL = "gpt-4o-transcribe";
export const OPENAI_DEFAULT_EMBEDDING_MODEL = "text-embedding-3-small";
export const GOOGLE_GEMINI_DEFAULT_MODEL = "google/gemini-3.1-pro-preview";
export const OLLAMA_DEFAULT_BASE_URL = "http://127.0.0.1:11434";

View File

@@ -84,6 +84,7 @@ export function installSharedTestSetup(options?: SharedTestSetupOptions): {
}
cleaned = true;
testEnv.cleanup();
delete globalState[SHARED_TEST_SETUP];
},
};
globalState[SHARED_TEST_SETUP] = handle;