From e3cb19d16235dde8109f006b40e977ea9d3667c5 Mon Sep 17 00:00:00 2001 From: Peter Steinberger Date: Tue, 7 Apr 2026 10:24:05 +0100 Subject: [PATCH] test(boundary): unify package sdk type paths --- .../tsconfig.package-boundary.paths.json | 51 ++++++++++++- extensions/xai/tsconfig.json | 57 ++++++++++++++- packages/plugin-sdk/package.json | 68 ++++++++++++++++- packages/plugin-sdk/tsconfig.json | 28 +------ scripts/lib/extension-package-boundary.ts | 49 ++++++++++++- ...tension-package-project-boundaries.test.ts | 73 ++++++++++++------- test/extension-package-tsc-boundary.test.ts | 12 ++- 7 files changed, 266 insertions(+), 72 deletions(-) diff --git a/extensions/tsconfig.package-boundary.paths.json b/extensions/tsconfig.package-boundary.paths.json index 567968c754e..be3d3c089fc 100644 --- a/extensions/tsconfig.package-boundary.paths.json +++ b/extensions/tsconfig.package-boundary.paths.json @@ -3,11 +3,56 @@ "compilerOptions": { "paths": { "openclaw/extension-api": ["../src/extensionAPI.ts"], - "openclaw/plugin-sdk": ["../dist/plugin-sdk/index.d.ts"], - "openclaw/plugin-sdk/*": ["../dist/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": [ + "../packages/plugin-sdk/dist/src/plugin-sdk/account-id.d.ts" + ], + "openclaw/plugin-sdk/channel-entry-contract": [ + "../packages/plugin-sdk/dist/src/plugin-sdk/channel-entry-contract.d.ts" + ], + "openclaw/plugin-sdk/browser-maintenance": [ + "../packages/plugin-sdk/dist/extensions/browser/browser-maintenance.d.ts" + ], + "openclaw/plugin-sdk/browser-config-runtime": [ + "../packages/plugin-sdk/dist/src/plugin-sdk/browser-config-runtime.d.ts" + ], + "openclaw/plugin-sdk/browser-node-runtime": [ + "../packages/plugin-sdk/dist/src/plugin-sdk/browser-node-runtime.d.ts" + ], + "openclaw/plugin-sdk/browser-setup-tools": [ + "../packages/plugin-sdk/dist/src/plugin-sdk/browser-setup-tools.d.ts" + ], + "openclaw/plugin-sdk/browser-security-runtime": [ + "../packages/plugin-sdk/dist/src/plugin-sdk/browser-security-runtime.d.ts" + ], + "openclaw/plugin-sdk/channel-secret-runtime": [ + "../packages/plugin-sdk/dist/src/plugin-sdk/channel-secret-runtime.d.ts" + ], + "openclaw/plugin-sdk/channel-streaming": [ + "../packages/plugin-sdk/dist/src/plugin-sdk/channel-streaming.d.ts" + ], + "openclaw/plugin-sdk/error-runtime": [ + "../packages/plugin-sdk/dist/src/plugin-sdk/error-runtime.d.ts" + ], + "openclaw/plugin-sdk/provider-catalog-shared": [ + "../packages/plugin-sdk/dist/src/plugin-sdk/provider-catalog-shared.d.ts" + ], + "openclaw/plugin-sdk/provider-entry": [ + "../packages/plugin-sdk/dist/src/plugin-sdk/provider-entry.d.ts" + ], + "openclaw/plugin-sdk/provider-web-search-contract": [ + "../packages/plugin-sdk/dist/src/plugin-sdk/provider-web-search-contract.d.ts" + ], + "openclaw/plugin-sdk/secret-ref-runtime": [ + "../packages/plugin-sdk/dist/src/plugin-sdk/secret-ref-runtime.d.ts" + ], + "openclaw/plugin-sdk/ssrf-runtime": [ + "../packages/plugin-sdk/dist/src/plugin-sdk/ssrf-runtime.d.ts" + ], "@openclaw/*.js": ["../packages/plugin-sdk/dist/extensions/*.d.ts", "../extensions/*"], "@openclaw/*": ["../packages/plugin-sdk/dist/extensions/*", "../extensions/*"], - "@openclaw/plugin-sdk/*": ["../dist/plugin-sdk/*.d.ts"] + "@openclaw/plugin-sdk/*": ["../packages/plugin-sdk/dist/src/plugin-sdk/*.d.ts"] } } } diff --git a/extensions/xai/tsconfig.json b/extensions/xai/tsconfig.json index 5fc82ac0bf9..7111d700d71 100644 --- a/extensions/xai/tsconfig.json +++ b/extensions/xai/tsconfig.json @@ -4,11 +4,62 @@ "rootDir": ".", "paths": { "openclaw/extension-api": ["../../src/extensionAPI.ts"], - "openclaw/plugin-sdk": ["../../dist/plugin-sdk/index.d.ts"], - "openclaw/plugin-sdk/*": ["../../dist/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": [ + "../../packages/plugin-sdk/dist/src/plugin-sdk/account-id.d.ts" + ], + "openclaw/plugin-sdk/channel-entry-contract": [ + "../../packages/plugin-sdk/dist/src/plugin-sdk/channel-entry-contract.d.ts" + ], + "openclaw/plugin-sdk/browser-maintenance": [ + "../../packages/plugin-sdk/dist/extensions/browser/browser-maintenance.d.ts" + ], + "openclaw/plugin-sdk/browser-config-runtime": [ + "../../packages/plugin-sdk/dist/src/plugin-sdk/browser-config-runtime.d.ts" + ], + "openclaw/plugin-sdk/browser-node-runtime": [ + "../../packages/plugin-sdk/dist/src/plugin-sdk/browser-node-runtime.d.ts" + ], + "openclaw/plugin-sdk/browser-setup-tools": [ + "../../packages/plugin-sdk/dist/src/plugin-sdk/browser-setup-tools.d.ts" + ], + "openclaw/plugin-sdk/browser-security-runtime": [ + "../../packages/plugin-sdk/dist/src/plugin-sdk/browser-security-runtime.d.ts" + ], + "openclaw/plugin-sdk/channel-secret-runtime": [ + "../../packages/plugin-sdk/dist/src/plugin-sdk/channel-secret-runtime.d.ts" + ], + "openclaw/plugin-sdk/channel-streaming": [ + "../../packages/plugin-sdk/dist/src/plugin-sdk/channel-streaming.d.ts" + ], + "openclaw/plugin-sdk/cli-runtime": [ + "../../packages/plugin-sdk/dist/src/plugin-sdk/cli-runtime.d.ts" + ], + "openclaw/plugin-sdk/error-runtime": [ + "../../packages/plugin-sdk/dist/src/plugin-sdk/error-runtime.d.ts" + ], + "openclaw/plugin-sdk/provider-catalog-shared": [ + "../../packages/plugin-sdk/dist/src/plugin-sdk/provider-catalog-shared.d.ts" + ], + "openclaw/plugin-sdk/provider-env-vars": [ + "../../packages/plugin-sdk/dist/src/plugin-sdk/provider-env-vars.d.ts" + ], + "openclaw/plugin-sdk/provider-entry": [ + "../../packages/plugin-sdk/dist/src/plugin-sdk/provider-entry.d.ts" + ], + "openclaw/plugin-sdk/provider-web-search-contract": [ + "../../packages/plugin-sdk/dist/src/plugin-sdk/provider-web-search-contract.d.ts" + ], + "openclaw/plugin-sdk/secret-ref-runtime": [ + "../../packages/plugin-sdk/dist/src/plugin-sdk/secret-ref-runtime.d.ts" + ], + "openclaw/plugin-sdk/ssrf-runtime": [ + "../../packages/plugin-sdk/dist/src/plugin-sdk/ssrf-runtime.d.ts" + ], "@openclaw/*.js": ["../../packages/plugin-sdk/dist/extensions/*.d.ts", "../*"], "@openclaw/*": ["../*"], - "@openclaw/plugin-sdk/*": ["../../dist/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"], diff --git a/packages/plugin-sdk/package.json b/packages/plugin-sdk/package.json index 4dbefd6f506..e9100c62165 100644 --- a/packages/plugin-sdk/package.json +++ b/packages/plugin-sdk/package.json @@ -4,10 +4,54 @@ "private": true, "type": "module", "exports": { + "./account-id": { + "types": "./dist/src/plugin-sdk/account-id.d.ts", + "default": "./src/account-id.ts" + }, + "./acp-runtime": { + "types": "./dist/src/plugin-sdk/acp-runtime.d.ts", + "default": "./src/acp-runtime.ts" + }, + "./browser-config-runtime": { + "types": "./dist/src/plugin-sdk/browser-config-runtime.d.ts", + "default": "./src/browser-config-runtime.ts" + }, + "./core": { + "types": "./dist/src/plugin-sdk/core.d.ts", + "default": "./src/core.ts" + }, + "./browser-node-runtime": { + "types": "./dist/src/plugin-sdk/browser-node-runtime.d.ts", + "default": "./src/browser-node-runtime.ts" + }, "./config-runtime": { "types": "./dist/src/plugin-sdk/config-runtime.d.ts", "default": "./src/config-runtime.ts" }, + "./browser-setup-tools": { + "types": "./dist/src/plugin-sdk/browser-setup-tools.d.ts", + "default": "./src/browser-setup-tools.ts" + }, + "./browser-security-runtime": { + "types": "./dist/src/plugin-sdk/browser-security-runtime.d.ts", + "default": "./src/browser-security-runtime.ts" + }, + "./channel-secret-runtime": { + "types": "./dist/src/plugin-sdk/channel-secret-runtime.d.ts", + "default": "./src/channel-secret-runtime.ts" + }, + "./channel-streaming": { + "types": "./dist/src/plugin-sdk/channel-streaming.d.ts", + "default": "./src/channel-streaming.ts" + }, + "./cli-runtime": { + "types": "./dist/src/plugin-sdk/cli-runtime.d.ts", + "default": "./src/cli-runtime.ts" + }, + "./error-runtime": { + "types": "./dist/src/plugin-sdk/error-runtime.d.ts", + "default": "./src/error-runtime.ts" + }, "./plugin-entry": { "types": "./dist/src/plugin-sdk/plugin-entry.d.ts", "default": "./src/plugin-entry.ts" @@ -24,10 +68,18 @@ "types": "./dist/src/plugin-sdk/provider-auth-runtime.d.ts", "default": "./src/provider-auth-runtime.ts" }, + "./provider-env-vars": { + "types": "./dist/src/plugin-sdk/provider-env-vars.d.ts", + "default": "./src/provider-env-vars.ts" + }, "./provider-entry": { "types": "./dist/src/plugin-sdk/provider-entry.d.ts", "default": "./src/provider-entry.ts" }, + "./provider-usage": { + "types": "./dist/src/plugin-sdk/provider-usage.d.ts", + "default": "./src/provider-usage.ts" + }, "./provider-http": { "types": "./dist/src/plugin-sdk/provider-http.d.ts", "default": "./src/provider-http.ts" @@ -64,6 +116,14 @@ "types": "./dist/src/plugin-sdk/security-runtime.d.ts", "default": "./src/security-runtime.ts" }, + "./secret-ref-runtime": { + "types": "./dist/src/plugin-sdk/secret-ref-runtime.d.ts", + "default": "./src/secret-ref-runtime.ts" + }, + "./ssrf-runtime": { + "types": "./dist/src/plugin-sdk/ssrf-runtime.d.ts", + "default": "./src/ssrf-runtime.ts" + }, "./secret-input": { "types": "./dist/src/plugin-sdk/secret-input.d.ts", "default": "./src/secret-input.ts" @@ -76,13 +136,13 @@ "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/src/plugin-sdk/video-generation.d.ts", "default": "./src/video-generation.ts" + }, + "./zod": { + "types": "./dist/src/plugin-sdk/zod.d.ts", + "default": "./src/zod.ts" } } } diff --git a/packages/plugin-sdk/tsconfig.json b/packages/plugin-sdk/tsconfig.json index 396b68022a5..a907899cd92 100644 --- a/packages/plugin-sdk/tsconfig.json +++ b/packages/plugin-sdk/tsconfig.json @@ -11,33 +11,7 @@ "rootDir": "../.." }, "include": [ - "../../src/plugin-sdk/config-runtime.ts", - "../../src/plugin-sdk/index.ts", - "../../src/plugin-sdk/lazy-value.ts", - "../../src/plugin-sdk/oauth-utils.ts", - "../../src/plugin-sdk/plugin-entry.ts", - "../../src/plugin-sdk/plugin-runtime.ts", - "../../src/plugin-sdk/provider-auth-result.ts", - "../../src/plugin-sdk/provider-auth-runtime.ts", - "../../src/plugin-sdk/provider-auth.ts", - "../../src/plugin-sdk/provider-catalog-shared.ts", - "../../src/plugin-sdk/provider-entry.ts", - "../../src/plugin-sdk/provider-http.ts", - "../../src/plugin-sdk/provider-model-shared.ts", - "../../src/plugin-sdk/provider-onboard.ts", - "../../src/plugin-sdk/provider-stream-shared.ts", - "../../src/plugin-sdk/provider-tools.ts", - "../../src/plugin-sdk/provider-web-search-contract.ts", - "../../src/plugin-sdk/provider-web-search.ts", - "../../src/plugin-sdk/runtime-doctor.ts", - "../../src/plugin-sdk/runtime-env.ts", - "../../src/plugin-sdk/security-runtime.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/plugin-sdk/**/*.ts", "../../src/video-generation/dashscope-compatible.ts", "../../src/video-generation/types.ts", "../../src/types/**/*.d.ts" diff --git a/scripts/lib/extension-package-boundary.ts b/scripts/lib/extension-package-boundary.ts index 5291e2195ee..58fe11497d5 100644 --- a/scripts/lib/extension-package-boundary.ts +++ b/scripts/lib/extension-package-boundary.ts @@ -16,11 +16,54 @@ export const EXTENSION_PACKAGE_BOUNDARY_EXCLUDE = [ ] as const; export const EXTENSION_PACKAGE_BOUNDARY_BASE_PATHS = { "openclaw/extension-api": ["../src/extensionAPI.ts"], - "openclaw/plugin-sdk": ["../dist/plugin-sdk/index.d.ts"], - "openclaw/plugin-sdk/*": ["../dist/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": ["../packages/plugin-sdk/dist/src/plugin-sdk/account-id.d.ts"], + "openclaw/plugin-sdk/channel-entry-contract": [ + "../packages/plugin-sdk/dist/src/plugin-sdk/channel-entry-contract.d.ts", + ], + "openclaw/plugin-sdk/browser-maintenance": [ + "../packages/plugin-sdk/dist/extensions/browser/browser-maintenance.d.ts", + ], + "openclaw/plugin-sdk/browser-config-runtime": [ + "../packages/plugin-sdk/dist/src/plugin-sdk/browser-config-runtime.d.ts", + ], + "openclaw/plugin-sdk/browser-node-runtime": [ + "../packages/plugin-sdk/dist/src/plugin-sdk/browser-node-runtime.d.ts", + ], + "openclaw/plugin-sdk/browser-setup-tools": [ + "../packages/plugin-sdk/dist/src/plugin-sdk/browser-setup-tools.d.ts", + ], + "openclaw/plugin-sdk/browser-security-runtime": [ + "../packages/plugin-sdk/dist/src/plugin-sdk/browser-security-runtime.d.ts", + ], + "openclaw/plugin-sdk/channel-secret-runtime": [ + "../packages/plugin-sdk/dist/src/plugin-sdk/channel-secret-runtime.d.ts", + ], + "openclaw/plugin-sdk/channel-streaming": [ + "../packages/plugin-sdk/dist/src/plugin-sdk/channel-streaming.d.ts", + ], + "openclaw/plugin-sdk/error-runtime": [ + "../packages/plugin-sdk/dist/src/plugin-sdk/error-runtime.d.ts", + ], + "openclaw/plugin-sdk/provider-catalog-shared": [ + "../packages/plugin-sdk/dist/src/plugin-sdk/provider-catalog-shared.d.ts", + ], + "openclaw/plugin-sdk/provider-entry": [ + "../packages/plugin-sdk/dist/src/plugin-sdk/provider-entry.d.ts", + ], + "openclaw/plugin-sdk/provider-web-search-contract": [ + "../packages/plugin-sdk/dist/src/plugin-sdk/provider-web-search-contract.d.ts", + ], + "openclaw/plugin-sdk/secret-ref-runtime": [ + "../packages/plugin-sdk/dist/src/plugin-sdk/secret-ref-runtime.d.ts", + ], + "openclaw/plugin-sdk/ssrf-runtime": [ + "../packages/plugin-sdk/dist/src/plugin-sdk/ssrf-runtime.d.ts", + ], "@openclaw/*.js": ["../packages/plugin-sdk/dist/extensions/*.d.ts", "../extensions/*"], "@openclaw/*": ["../packages/plugin-sdk/dist/extensions/*", "../extensions/*"], - "@openclaw/plugin-sdk/*": ["../dist/plugin-sdk/*.d.ts"], + "@openclaw/plugin-sdk/*": ["../packages/plugin-sdk/dist/src/plugin-sdk/*.d.ts"], } as const; export type ExtensionPackageBoundaryTsConfigJson = { diff --git a/src/plugins/contracts/extension-package-project-boundaries.test.ts b/src/plugins/contracts/extension-package-project-boundaries.test.ts index 6f9d65d48a6..caf234907db 100644 --- a/src/plugins/contracts/extension-package-project-boundaries.test.ts +++ b/src/plugins/contracts/extension-package-project-boundaries.test.ts @@ -80,33 +80,7 @@ describe("opt-in extension package boundaries", () => { expect(tsconfig.compilerOptions?.outDir).toBe("dist"); expect(tsconfig.compilerOptions?.rootDir).toBe("../.."); expect(tsconfig.include).toEqual([ - "../../src/plugin-sdk/config-runtime.ts", - "../../src/plugin-sdk/index.ts", - "../../src/plugin-sdk/lazy-value.ts", - "../../src/plugin-sdk/oauth-utils.ts", - "../../src/plugin-sdk/plugin-entry.ts", - "../../src/plugin-sdk/plugin-runtime.ts", - "../../src/plugin-sdk/provider-auth-result.ts", - "../../src/plugin-sdk/provider-auth-runtime.ts", - "../../src/plugin-sdk/provider-auth.ts", - "../../src/plugin-sdk/provider-catalog-shared.ts", - "../../src/plugin-sdk/provider-entry.ts", - "../../src/plugin-sdk/provider-http.ts", - "../../src/plugin-sdk/provider-model-shared.ts", - "../../src/plugin-sdk/provider-onboard.ts", - "../../src/plugin-sdk/provider-stream-shared.ts", - "../../src/plugin-sdk/provider-tools.ts", - "../../src/plugin-sdk/provider-web-search-contract.ts", - "../../src/plugin-sdk/provider-web-search.ts", - "../../src/plugin-sdk/runtime-doctor.ts", - "../../src/plugin-sdk/runtime-env.ts", - "../../src/plugin-sdk/security-runtime.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/plugin-sdk/**/*.ts", "../../src/video-generation/dashscope-compatible.ts", "../../src/video-generation/types.ts", "../../src/types/**/*.d.ts", @@ -114,28 +88,71 @@ describe("opt-in extension package boundaries", () => { const packageJson = readJsonFile("packages/plugin-sdk/package.json"); expect(packageJson.name).toBe("@openclaw/plugin-sdk"); - expect(packageJson.exports?.["./core"]).toBeUndefined(); + expect(packageJson.exports?.["./account-id"]?.types).toBe( + "./dist/src/plugin-sdk/account-id.d.ts", + ); + expect(packageJson.exports?.["./acp-runtime"]?.types).toBe( + "./dist/src/plugin-sdk/acp-runtime.d.ts", + ); + expect(packageJson.exports?.["./browser-config-runtime"]?.types).toBe( + "./dist/src/plugin-sdk/browser-config-runtime.d.ts", + ); + expect(packageJson.exports?.["./browser-node-runtime"]?.types).toBe( + "./dist/src/plugin-sdk/browser-node-runtime.d.ts", + ); + expect(packageJson.exports?.["./browser-setup-tools"]?.types).toBe( + "./dist/src/plugin-sdk/browser-setup-tools.d.ts", + ); + expect(packageJson.exports?.["./browser-security-runtime"]?.types).toBe( + "./dist/src/plugin-sdk/browser-security-runtime.d.ts", + ); + expect(packageJson.exports?.["./channel-secret-runtime"]?.types).toBe( + "./dist/src/plugin-sdk/channel-secret-runtime.d.ts", + ); + expect(packageJson.exports?.["./channel-streaming"]?.types).toBe( + "./dist/src/plugin-sdk/channel-streaming.d.ts", + ); + expect(packageJson.exports?.["./cli-runtime"]?.types).toBe( + "./dist/src/plugin-sdk/cli-runtime.d.ts", + ); + expect(packageJson.exports?.["./core"]?.types).toBe("./dist/src/plugin-sdk/core.d.ts"); + expect(packageJson.exports?.["./error-runtime"]?.types).toBe( + "./dist/src/plugin-sdk/error-runtime.d.ts", + ); expect(packageJson.exports?.["./plugin-entry"]?.types).toBe( "./dist/src/plugin-sdk/plugin-entry.d.ts", ); expect(packageJson.exports?.["./plugin-runtime"]?.types).toBe( "./dist/src/plugin-sdk/plugin-runtime.d.ts", ); + expect(packageJson.exports?.["./provider-env-vars"]?.types).toBe( + "./dist/src/plugin-sdk/provider-env-vars.d.ts", + ); expect(packageJson.exports?.["./provider-http"]?.types).toBe( "./dist/src/plugin-sdk/provider-http.d.ts", ); + expect(packageJson.exports?.["./provider-usage"]?.types).toBe( + "./dist/src/plugin-sdk/provider-usage.d.ts", + ); expect(packageJson.exports?.["./runtime-doctor"]?.types).toBe( "./dist/src/plugin-sdk/runtime-doctor.d.ts", ); expect(packageJson.exports?.["./security-runtime"]?.types).toBe( "./dist/src/plugin-sdk/security-runtime.d.ts", ); + expect(packageJson.exports?.["./secret-ref-runtime"]?.types).toBe( + "./dist/src/plugin-sdk/secret-ref-runtime.d.ts", + ); + expect(packageJson.exports?.["./ssrf-runtime"]?.types).toBe( + "./dist/src/plugin-sdk/ssrf-runtime.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/src/plugin-sdk/video-generation.d.ts", ); + expect(packageJson.exports?.["./zod"]?.types).toBe("./dist/src/plugin-sdk/zod.d.ts"); expect(existsSync(resolve(REPO_ROOT, "packages/plugin-sdk/types/plugin-entry.d.ts"))).toBe( false, ); diff --git a/test/extension-package-tsc-boundary.test.ts b/test/extension-package-tsc-boundary.test.ts index 95f15cb7602..de4e02b7d6c 100644 --- a/test/extension-package-tsc-boundary.test.ts +++ b/test/extension-package-tsc-boundary.test.ts @@ -18,10 +18,14 @@ function runNode(args: string[], timeout: number) { } describe("opt-in extension package TypeScript boundaries", () => { - it("typechecks each opt-in extension cleanly through @openclaw/plugin-sdk", () => { - const result = runNode([CHECK_EXTENSION_PACKAGE_BOUNDARY_BIN, "--mode=compile"], 420_000); - expect(result.status, `${result.stdout}\n${result.stderr}`).toBe(0); - }, 300_000); + it( + "typechecks each opt-in extension cleanly through @openclaw/plugin-sdk", + () => { + const result = runNode([CHECK_EXTENSION_PACKAGE_BOUNDARY_BIN, "--mode=compile"], 420_000); + expect(result.status, `${result.stdout}\n${result.stderr}`).toBe(0); + }, + 300_000, + ); it("fails when opt-in extensions import src/cli through a relative path", () => { const result = runNode([CHECK_EXTENSION_PACKAGE_BOUNDARY_BIN, "--mode=canary"], 180_000);