openclaw
Version:
Multi-channel AI gateway with extensible messaging integrations
53 lines • 2.69 kB
TypeScript
import { Gs as PluginCommandContext, Ju as PluginSessionActionContext, Ks as PluginCommandResult, Nu as OpenClawPluginToolContext, as as OpenClawPluginConfigSchema, is as OpenClawPluginDefinition, os as OpenClawPluginApi } from "../agent-harness-runtime-CZIVRpx-.js";
import "../index-DrZymUhy.js";
import { i as AgentToolUpdateCallback } from "../types-DMarHODc.js";
import { FeatureContract, FeatureEvent, FeatureEventName, FeatureInput, FeatureOperationName, FeatureOutput } from "./feature-contract.js";
//#region src/plugin-sdk/feature-plugin.d.ts
export type FeatureInvocationContext = {
api: OpenClawPluginApi;
} & ({
source: "session-action";
action: PluginSessionActionContext;
} | {
source: "tool";
tool: OpenClawPluginToolContext;
toolCallId: string;
signal?: AbortSignal;
onUpdate?: AgentToolUpdateCallback;
} | {
source: "command";
command: PluginCommandContext;
});
export type FeatureHandlers<C extends FeatureContract> = { [K in FeatureOperationName<C>]: (input: FeatureInput<C, K>, context: FeatureInvocationContext) => FeatureOutput<C, K> | Promise<FeatureOutput<C, K>>; };
export type FeatureEventEmitter<C extends FeatureContract> = {
emit: <K extends FeatureEventName<C>>(event: K, payload: FeatureEvent<C, K>) => void;
};
export type FeatureCommandAdapter<C extends FeatureContract, K extends FeatureOperationName<C>> = {
name: string;
description?: string;
parse: (context: PluginCommandContext) => FeatureInput<C, K>;
format?: (output: FeatureOutput<C, K>, context: PluginCommandContext) => PluginCommandResult;
};
export type DefineFeaturePluginOptions<C extends FeatureContract> = {
contract: C;
name: string;
description: string;
/** Registration is synchronous; long-lived work belongs to api.registerService. */
setup: (api: OpenClawPluginApi, events: FeatureEventEmitter<C>) => FeatureHandlers<C>;
commands?: Partial<{ [K in FeatureOperationName<C>]: FeatureCommandAdapter<C, K>; }>;
};
/** One implementation serves each declared surface without relaying through privileged RPC. */
export declare function defineFeaturePlugin<C extends FeatureContract>(definition: DefineFeaturePluginOptions<C>): Omit<{
id: string;
name: string;
description: string;
kind?: OpenClawPluginDefinition["kind"];
configSchema?: OpenClawPluginConfigSchema | (() => OpenClawPluginConfigSchema);
reload?: OpenClawPluginDefinition["reload"];
nodeHostCommands?: OpenClawPluginDefinition["nodeHostCommands"];
securityAuditCollectors?: OpenClawPluginDefinition["securityAuditCollectors"];
register: NonNullable<OpenClawPluginDefinition["register"]>;
}, "configSchema"> & {
configSchema: OpenClawPluginConfigSchema;
};
//#endregion