mirror of
https://github.com/openclaw/openclaw.git
synced 2026-04-18 04:31:10 +00:00
build: align plugin sdk package boundaries
This commit is contained in:
@@ -3,11 +3,17 @@
|
||||
"compilerOptions": {
|
||||
"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"],
|
||||
"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/account-id": ["../src/plugin-sdk/account-id.ts"],
|
||||
"@openclaw/*": ["../packages/plugin-sdk/dist/extensions/*", "../extensions/*"],
|
||||
"@openclaw/plugin-sdk/*": ["../packages/plugin-sdk/dist/src/plugin-sdk/*.d.ts"]
|
||||
"@openclaw/plugin-sdk/*": [
|
||||
"../packages/plugin-sdk/dist/packages/plugin-sdk/src/src/plugin-sdk/*.d.ts"
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -4,14 +4,17 @@
|
||||
"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/packages/plugin-sdk/src/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"
|
||||
"../../packages/plugin-sdk/dist/packages/plugin-sdk/src/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/*.d.ts"],
|
||||
"@openclaw/plugin-sdk/*": [
|
||||
"../../packages/plugin-sdk/dist/packages/plugin-sdk/src/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"],
|
||||
|
||||
@@ -5,63 +5,63 @@
|
||||
"type": "module",
|
||||
"exports": {
|
||||
"./config-runtime": {
|
||||
"types": "./dist/src/plugin-sdk/config-runtime.d.ts",
|
||||
"types": "./dist/packages/plugin-sdk/src/src/plugin-sdk/config-runtime.d.ts",
|
||||
"default": "./src/config-runtime.ts"
|
||||
},
|
||||
"./plugin-entry": {
|
||||
"types": "./dist/src/plugin-sdk/plugin-entry.d.ts",
|
||||
"types": "./dist/packages/plugin-sdk/src/src/plugin-sdk/plugin-entry.d.ts",
|
||||
"default": "./src/plugin-entry.ts"
|
||||
},
|
||||
"./provider-auth": {
|
||||
"types": "./dist/src/plugin-sdk/provider-auth.d.ts",
|
||||
"types": "./dist/packages/plugin-sdk/src/src/plugin-sdk/provider-auth.d.ts",
|
||||
"default": "./src/provider-auth.ts"
|
||||
},
|
||||
"./provider-auth-runtime": {
|
||||
"types": "./dist/src/plugin-sdk/provider-auth-runtime.d.ts",
|
||||
"types": "./dist/packages/plugin-sdk/src/src/plugin-sdk/provider-auth-runtime.d.ts",
|
||||
"default": "./src/provider-auth-runtime.ts"
|
||||
},
|
||||
"./provider-entry": {
|
||||
"types": "./dist/src/plugin-sdk/provider-entry.d.ts",
|
||||
"types": "./dist/packages/plugin-sdk/src/src/plugin-sdk/provider-entry.d.ts",
|
||||
"default": "./src/provider-entry.ts"
|
||||
},
|
||||
"./provider-http": {
|
||||
"types": "./dist/src/plugin-sdk/provider-http.d.ts",
|
||||
"types": "./dist/packages/plugin-sdk/src/src/plugin-sdk/provider-http.d.ts",
|
||||
"default": "./src/provider-http.ts"
|
||||
},
|
||||
"./provider-model-shared": {
|
||||
"types": "./dist/src/plugin-sdk/provider-model-shared.d.ts",
|
||||
"types": "./dist/packages/plugin-sdk/src/src/plugin-sdk/provider-model-shared.d.ts",
|
||||
"default": "./src/provider-model-shared.ts"
|
||||
},
|
||||
"./provider-onboard": {
|
||||
"types": "./dist/src/plugin-sdk/provider-onboard.d.ts",
|
||||
"types": "./dist/packages/plugin-sdk/src/src/plugin-sdk/provider-onboard.d.ts",
|
||||
"default": "./src/provider-onboard.ts"
|
||||
},
|
||||
"./provider-stream-shared": {
|
||||
"types": "./dist/src/plugin-sdk/provider-stream-shared.d.ts",
|
||||
"types": "./dist/packages/plugin-sdk/src/src/plugin-sdk/provider-stream-shared.d.ts",
|
||||
"default": "./src/provider-stream-shared.ts"
|
||||
},
|
||||
"./provider-tools": {
|
||||
"types": "./dist/src/plugin-sdk/provider-tools.d.ts",
|
||||
"types": "./dist/packages/plugin-sdk/src/src/plugin-sdk/provider-tools.d.ts",
|
||||
"default": "./src/provider-tools.ts"
|
||||
},
|
||||
"./provider-web-search": {
|
||||
"types": "./dist/src/plugin-sdk/provider-web-search.d.ts",
|
||||
"types": "./dist/packages/plugin-sdk/src/src/plugin-sdk/provider-web-search.d.ts",
|
||||
"default": "./src/provider-web-search.ts"
|
||||
},
|
||||
"./runtime-env": {
|
||||
"types": "./dist/src/plugin-sdk/runtime-env.d.ts",
|
||||
"types": "./dist/packages/plugin-sdk/src/src/plugin-sdk/runtime-env.d.ts",
|
||||
"default": "./src/runtime-env.ts"
|
||||
},
|
||||
"./secret-input": {
|
||||
"types": "./dist/src/plugin-sdk/secret-input.d.ts",
|
||||
"types": "./dist/packages/plugin-sdk/src/src/plugin-sdk/secret-input.d.ts",
|
||||
"default": "./src/secret-input.ts"
|
||||
},
|
||||
"./testing": {
|
||||
"types": "./dist/src/plugin-sdk/testing.d.ts",
|
||||
"types": "./dist/packages/plugin-sdk/src/src/plugin-sdk/testing.d.ts",
|
||||
"default": "./src/testing.ts"
|
||||
},
|
||||
"./video-generation": {
|
||||
"types": "./dist/src/plugin-sdk/video-generation.d.ts",
|
||||
"types": "./dist/packages/plugin-sdk/src/src/plugin-sdk/video-generation.d.ts",
|
||||
"default": "./src/video-generation.ts"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -12,6 +12,7 @@
|
||||
},
|
||||
"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",
|
||||
|
||||
@@ -1,19 +1,143 @@
|
||||
// Public video-generation helpers and types for provider plugins.
|
||||
//
|
||||
// Keep these public type declarations local to the plugin-sdk entrypoint so the
|
||||
// emitted declaration surface stays stable for package-boundary consumers.
|
||||
|
||||
export type {
|
||||
GeneratedVideoAsset,
|
||||
VideoGenerationMode,
|
||||
VideoGenerationModeCapabilities,
|
||||
VideoGenerationProvider,
|
||||
VideoGenerationProviderCapabilities,
|
||||
VideoGenerationProviderConfiguredContext,
|
||||
VideoGenerationRequest,
|
||||
VideoGenerationResolution,
|
||||
VideoGenerationResult,
|
||||
VideoGenerationSourceAsset,
|
||||
VideoGenerationTransformCapabilities,
|
||||
import type { AuthProfileStore } from "../agents/auth-profiles.js";
|
||||
import type { OpenClawConfig } from "../config/config.js";
|
||||
import type {
|
||||
GeneratedVideoAsset as CoreGeneratedVideoAsset,
|
||||
VideoGenerationMode as CoreVideoGenerationMode,
|
||||
VideoGenerationModeCapabilities as CoreVideoGenerationModeCapabilities,
|
||||
VideoGenerationProvider as CoreVideoGenerationProvider,
|
||||
VideoGenerationProviderCapabilities as CoreVideoGenerationProviderCapabilities,
|
||||
VideoGenerationProviderConfiguredContext as CoreVideoGenerationProviderConfiguredContext,
|
||||
VideoGenerationRequest as CoreVideoGenerationRequest,
|
||||
VideoGenerationResolution as CoreVideoGenerationResolution,
|
||||
VideoGenerationResult as CoreVideoGenerationResult,
|
||||
VideoGenerationSourceAsset as CoreVideoGenerationSourceAsset,
|
||||
VideoGenerationTransformCapabilities as CoreVideoGenerationTransformCapabilities,
|
||||
} from "../video-generation/types.js";
|
||||
|
||||
export type GeneratedVideoAsset = {
|
||||
buffer: Buffer;
|
||||
mimeType: string;
|
||||
fileName?: string;
|
||||
metadata?: Record<string, unknown>;
|
||||
};
|
||||
|
||||
export type VideoGenerationResolution = "480P" | "720P" | "768P" | "1080P";
|
||||
|
||||
export type VideoGenerationSourceAsset = {
|
||||
url?: string;
|
||||
buffer?: Buffer;
|
||||
mimeType?: string;
|
||||
fileName?: string;
|
||||
metadata?: Record<string, unknown>;
|
||||
};
|
||||
|
||||
export type VideoGenerationProviderConfiguredContext = {
|
||||
cfg?: OpenClawConfig;
|
||||
agentDir?: string;
|
||||
};
|
||||
|
||||
export type VideoGenerationRequest = {
|
||||
provider: string;
|
||||
model: string;
|
||||
prompt: string;
|
||||
cfg: OpenClawConfig;
|
||||
agentDir?: string;
|
||||
authStore?: AuthProfileStore;
|
||||
timeoutMs?: number;
|
||||
size?: string;
|
||||
aspectRatio?: string;
|
||||
resolution?: VideoGenerationResolution;
|
||||
durationSeconds?: number;
|
||||
audio?: boolean;
|
||||
watermark?: boolean;
|
||||
inputImages?: VideoGenerationSourceAsset[];
|
||||
inputVideos?: VideoGenerationSourceAsset[];
|
||||
};
|
||||
|
||||
export type VideoGenerationResult = {
|
||||
videos: GeneratedVideoAsset[];
|
||||
model?: string;
|
||||
metadata?: Record<string, unknown>;
|
||||
};
|
||||
|
||||
export type VideoGenerationMode = "generate" | "imageToVideo" | "videoToVideo";
|
||||
|
||||
export type VideoGenerationModeCapabilities = {
|
||||
maxVideos?: number;
|
||||
maxInputImages?: number;
|
||||
maxInputVideos?: number;
|
||||
maxDurationSeconds?: number;
|
||||
supportedDurationSeconds?: readonly number[];
|
||||
supportedDurationSecondsByModel?: Readonly<Record<string, readonly number[]>>;
|
||||
sizes?: readonly string[];
|
||||
aspectRatios?: readonly string[];
|
||||
resolutions?: readonly VideoGenerationResolution[];
|
||||
supportsSize?: boolean;
|
||||
supportsAspectRatio?: boolean;
|
||||
supportsResolution?: boolean;
|
||||
supportsAudio?: boolean;
|
||||
supportsWatermark?: boolean;
|
||||
};
|
||||
|
||||
export type VideoGenerationTransformCapabilities = VideoGenerationModeCapabilities & {
|
||||
enabled: boolean;
|
||||
};
|
||||
|
||||
export type VideoGenerationProviderCapabilities = VideoGenerationModeCapabilities & {
|
||||
generate?: VideoGenerationModeCapabilities;
|
||||
imageToVideo?: VideoGenerationTransformCapabilities;
|
||||
videoToVideo?: VideoGenerationTransformCapabilities;
|
||||
};
|
||||
|
||||
export type VideoGenerationProvider = {
|
||||
id: string;
|
||||
aliases?: string[];
|
||||
label?: string;
|
||||
defaultModel?: string;
|
||||
models?: string[];
|
||||
capabilities: VideoGenerationProviderCapabilities;
|
||||
isConfigured?: (ctx: VideoGenerationProviderConfiguredContext) => boolean;
|
||||
generateVideo: (req: VideoGenerationRequest) => Promise<VideoGenerationResult>;
|
||||
};
|
||||
|
||||
type AssertAssignable<_Left extends _Right, _Right> = true;
|
||||
|
||||
type _VideoGenerationSdkCompat = [
|
||||
AssertAssignable<GeneratedVideoAsset, CoreGeneratedVideoAsset>,
|
||||
AssertAssignable<CoreGeneratedVideoAsset, GeneratedVideoAsset>,
|
||||
AssertAssignable<VideoGenerationMode, CoreVideoGenerationMode>,
|
||||
AssertAssignable<CoreVideoGenerationMode, VideoGenerationMode>,
|
||||
AssertAssignable<VideoGenerationModeCapabilities, CoreVideoGenerationModeCapabilities>,
|
||||
AssertAssignable<CoreVideoGenerationModeCapabilities, VideoGenerationModeCapabilities>,
|
||||
AssertAssignable<VideoGenerationProvider, CoreVideoGenerationProvider>,
|
||||
AssertAssignable<CoreVideoGenerationProvider, VideoGenerationProvider>,
|
||||
AssertAssignable<VideoGenerationProviderCapabilities, CoreVideoGenerationProviderCapabilities>,
|
||||
AssertAssignable<CoreVideoGenerationProviderCapabilities, VideoGenerationProviderCapabilities>,
|
||||
AssertAssignable<
|
||||
VideoGenerationProviderConfiguredContext,
|
||||
CoreVideoGenerationProviderConfiguredContext
|
||||
>,
|
||||
AssertAssignable<
|
||||
CoreVideoGenerationProviderConfiguredContext,
|
||||
VideoGenerationProviderConfiguredContext
|
||||
>,
|
||||
AssertAssignable<VideoGenerationRequest, CoreVideoGenerationRequest>,
|
||||
AssertAssignable<CoreVideoGenerationRequest, VideoGenerationRequest>,
|
||||
AssertAssignable<VideoGenerationResolution, CoreVideoGenerationResolution>,
|
||||
AssertAssignable<CoreVideoGenerationResolution, VideoGenerationResolution>,
|
||||
AssertAssignable<VideoGenerationResult, CoreVideoGenerationResult>,
|
||||
AssertAssignable<CoreVideoGenerationResult, VideoGenerationResult>,
|
||||
AssertAssignable<VideoGenerationSourceAsset, CoreVideoGenerationSourceAsset>,
|
||||
AssertAssignable<CoreVideoGenerationSourceAsset, VideoGenerationSourceAsset>,
|
||||
AssertAssignable<VideoGenerationTransformCapabilities, CoreVideoGenerationTransformCapabilities>,
|
||||
AssertAssignable<CoreVideoGenerationTransformCapabilities, VideoGenerationTransformCapabilities>,
|
||||
];
|
||||
|
||||
export {
|
||||
DEFAULT_VIDEO_GENERATION_DURATION_SECONDS,
|
||||
DEFAULT_VIDEO_GENERATION_TIMEOUT_MS,
|
||||
|
||||
@@ -37,11 +37,17 @@ 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/src/plugin-sdk/index.d.ts"],
|
||||
"openclaw/plugin-sdk/*": ["../packages/plugin-sdk/dist/src/plugin-sdk/*.d.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/account-id": ["../src/plugin-sdk/account-id.ts"],
|
||||
"@openclaw/*": ["../packages/plugin-sdk/dist/extensions/*", "../extensions/*"],
|
||||
"@openclaw/plugin-sdk/*": ["../packages/plugin-sdk/dist/src/plugin-sdk/*.d.ts"],
|
||||
"@openclaw/plugin-sdk/*": [
|
||||
"../packages/plugin-sdk/dist/packages/plugin-sdk/src/src/plugin-sdk/*.d.ts",
|
||||
],
|
||||
});
|
||||
|
||||
const baseConfig = readJsonFile<TsConfigJson>(EXTENSION_PACKAGE_BOUNDARY_BASE_CONFIG);
|
||||
@@ -88,6 +94,7 @@ describe("opt-in extension package boundaries", () => {
|
||||
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",
|
||||
@@ -117,13 +124,13 @@ 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/src/plugin-sdk/plugin-entry.d.ts",
|
||||
"./dist/packages/plugin-sdk/src/src/plugin-sdk/plugin-entry.d.ts",
|
||||
);
|
||||
expect(packageJson.exports?.["./provider-http"]?.types).toBe(
|
||||
"./dist/src/plugin-sdk/provider-http.d.ts",
|
||||
"./dist/packages/plugin-sdk/src/src/plugin-sdk/provider-http.d.ts",
|
||||
);
|
||||
expect(packageJson.exports?.["./video-generation"]?.types).toBe(
|
||||
"./dist/src/plugin-sdk/video-generation.d.ts",
|
||||
"./dist/packages/plugin-sdk/src/src/plugin-sdk/video-generation.d.ts",
|
||||
);
|
||||
expect(existsSync(resolve(REPO_ROOT, "packages/plugin-sdk/types/plugin-entry.d.ts"))).toBe(
|
||||
false,
|
||||
|
||||
Reference in New Issue
Block a user