mirror of
https://github.com/openclaw/openclaw.git
synced 2026-03-19 05:50:47 +00:00
188 lines
6.0 KiB
TypeScript
188 lines
6.0 KiB
TypeScript
import type { ChannelPlugin } from "../channels/plugins/types.plugin.js";
|
|
import { emptyPluginConfigSchema } from "../plugins/config-schema.js";
|
|
import type { PluginRuntime } from "../plugins/runtime/types.js";
|
|
import type {
|
|
OpenClawPluginApi,
|
|
OpenClawPluginCommandDefinition,
|
|
OpenClawPluginConfigSchema,
|
|
OpenClawPluginDefinition,
|
|
PluginInteractiveTelegramHandlerContext,
|
|
} from "../plugins/types.js";
|
|
|
|
export type {
|
|
AnyAgentTool,
|
|
MediaUnderstandingProviderPlugin,
|
|
OpenClawPluginConfigSchema,
|
|
ProviderDiscoveryContext,
|
|
ProviderCatalogContext,
|
|
ProviderCatalogResult,
|
|
ProviderAugmentModelCatalogContext,
|
|
ProviderBuiltInModelSuppressionContext,
|
|
ProviderBuiltInModelSuppressionResult,
|
|
ProviderBuildMissingAuthMessageContext,
|
|
ProviderCacheTtlEligibilityContext,
|
|
ProviderDefaultThinkingPolicyContext,
|
|
ProviderFetchUsageSnapshotContext,
|
|
ProviderModernModelPolicyContext,
|
|
ProviderPreparedRuntimeAuth,
|
|
ProviderResolvedUsageAuth,
|
|
ProviderPrepareExtraParamsContext,
|
|
ProviderPrepareDynamicModelContext,
|
|
ProviderPrepareRuntimeAuthContext,
|
|
ProviderResolveUsageAuthContext,
|
|
ProviderResolveDynamicModelContext,
|
|
ProviderNormalizeResolvedModelContext,
|
|
ProviderRuntimeModel,
|
|
SpeechProviderPlugin,
|
|
ProviderThinkingPolicyContext,
|
|
ProviderWrapStreamFnContext,
|
|
OpenClawPluginService,
|
|
ProviderAuthContext,
|
|
ProviderAuthDoctorHintContext,
|
|
ProviderAuthMethodNonInteractiveContext,
|
|
ProviderAuthMethod,
|
|
ProviderAuthResult,
|
|
OpenClawPluginCommandDefinition,
|
|
OpenClawPluginDefinition,
|
|
PluginInteractiveTelegramHandlerContext,
|
|
} from "../plugins/types.js";
|
|
export type { OpenClawConfig } from "../config/config.js";
|
|
export type { GatewayRequestHandlerOptions } from "../gateway/server-methods/types.js";
|
|
export type {
|
|
ProviderUsageSnapshot,
|
|
UsageProviderId,
|
|
UsageWindow,
|
|
} from "../infra/provider-usage.types.js";
|
|
export type { ChannelMessageActionContext } from "../channels/plugins/types.js";
|
|
export type { ChannelPlugin } from "../channels/plugins/types.plugin.js";
|
|
export type { OpenClawPluginApi } from "../plugins/types.js";
|
|
export type { PluginRuntime } from "../plugins/runtime/types.js";
|
|
|
|
export { emptyPluginConfigSchema } from "../plugins/config-schema.js";
|
|
export { DEFAULT_ACCOUNT_ID, normalizeAccountId } from "../routing/session-key.js";
|
|
export { buildChannelConfigSchema } from "../channels/plugins/config-schema.js";
|
|
export {
|
|
applyAccountNameToChannelSection,
|
|
migrateBaseNameToDefaultAccount,
|
|
} from "../channels/plugins/setup-helpers.js";
|
|
export {
|
|
deleteAccountFromConfigSection,
|
|
setAccountEnabledInConfigSection,
|
|
} from "../channels/plugins/config-helpers.js";
|
|
export { formatPairingApproveHint } from "../channels/plugins/helpers.js";
|
|
export { getChatChannelMeta } from "../channels/registry.js";
|
|
export { buildOauthProviderAuthResult } from "./provider-auth-result.js";
|
|
export {
|
|
channelTargetSchema,
|
|
channelTargetsSchema,
|
|
optionalStringEnum,
|
|
stringEnum,
|
|
} from "../agents/schema/typebox.js";
|
|
export {
|
|
DEFAULT_SECRET_FILE_MAX_BYTES,
|
|
loadSecretFileSync,
|
|
readSecretFileSync,
|
|
tryReadSecretFileSync,
|
|
} from "../infra/secret-file.js";
|
|
export type { SecretFileReadOptions, SecretFileReadResult } from "../infra/secret-file.js";
|
|
|
|
export { resolveGatewayBindUrl } from "../shared/gateway-bind-url.js";
|
|
export type { GatewayBindUrlResult } from "../shared/gateway-bind-url.js";
|
|
|
|
export { resolveTailnetHostWithRunner } from "../shared/tailscale-status.js";
|
|
export type {
|
|
TailscaleStatusCommandResult,
|
|
TailscaleStatusCommandRunner,
|
|
} from "../shared/tailscale-status.js";
|
|
export {
|
|
buildAgentSessionKey,
|
|
type RoutePeer,
|
|
type RoutePeerKind,
|
|
} from "../routing/resolve-route.js";
|
|
export { buildOutboundBaseSessionKey } from "../infra/outbound/base-session-key.js";
|
|
export { normalizeOutboundThreadId } from "../infra/outbound/thread-id.js";
|
|
export { resolveThreadSessionKeys } from "../routing/session-key.js";
|
|
|
|
type DefineChannelPluginEntryOptions<TPlugin extends ChannelPlugin = ChannelPlugin> = {
|
|
id: string;
|
|
name: string;
|
|
description: string;
|
|
plugin: TPlugin;
|
|
configSchema?: DefinePluginEntryOptions["configSchema"];
|
|
setRuntime?: (runtime: PluginRuntime) => void;
|
|
registerFull?: (api: OpenClawPluginApi) => void;
|
|
};
|
|
|
|
type DefinePluginEntryOptions = {
|
|
id: string;
|
|
name: string;
|
|
description: string;
|
|
kind?: OpenClawPluginDefinition["kind"];
|
|
configSchema?: OpenClawPluginConfigSchema | (() => OpenClawPluginConfigSchema);
|
|
register: (api: OpenClawPluginApi) => void;
|
|
};
|
|
|
|
type DefinedPluginEntry = {
|
|
id: string;
|
|
name: string;
|
|
description: string;
|
|
configSchema: OpenClawPluginConfigSchema;
|
|
register: NonNullable<OpenClawPluginDefinition["register"]>;
|
|
} & Pick<OpenClawPluginDefinition, "kind">;
|
|
|
|
function resolvePluginConfigSchema(
|
|
configSchema: DefinePluginEntryOptions["configSchema"] = emptyPluginConfigSchema,
|
|
): OpenClawPluginConfigSchema {
|
|
return typeof configSchema === "function" ? configSchema() : configSchema;
|
|
}
|
|
|
|
// Shared generic plugin-entry boilerplate for bundled and third-party plugins.
|
|
export function definePluginEntry({
|
|
id,
|
|
name,
|
|
description,
|
|
kind,
|
|
configSchema = emptyPluginConfigSchema,
|
|
register,
|
|
}: DefinePluginEntryOptions): DefinedPluginEntry {
|
|
return {
|
|
id,
|
|
name,
|
|
description,
|
|
...(kind ? { kind } : {}),
|
|
configSchema: resolvePluginConfigSchema(configSchema),
|
|
register,
|
|
};
|
|
}
|
|
|
|
// Shared channel-plugin entry boilerplate for bundled and third-party channels.
|
|
export function defineChannelPluginEntry<TPlugin extends ChannelPlugin>({
|
|
id,
|
|
name,
|
|
description,
|
|
plugin,
|
|
configSchema = emptyPluginConfigSchema,
|
|
setRuntime,
|
|
registerFull,
|
|
}: DefineChannelPluginEntryOptions<TPlugin>) {
|
|
return definePluginEntry({
|
|
id,
|
|
name,
|
|
description,
|
|
configSchema,
|
|
register(api: OpenClawPluginApi) {
|
|
setRuntime?.(api.runtime);
|
|
api.registerChannel({ plugin });
|
|
if (api.registrationMode !== "full") {
|
|
return;
|
|
}
|
|
registerFull?.(api);
|
|
},
|
|
});
|
|
}
|
|
|
|
// Shared setup-entry shape so bundled channels do not duplicate `{ plugin }`.
|
|
export function defineSetupPluginEntry<TPlugin>(plugin: TPlugin) {
|
|
return { plugin };
|
|
}
|