refactor(plugin-sdk): add managed task flow runtime

This commit is contained in:
Peter Steinberger
2026-04-28 05:32:23 +01:00
parent d987e153fe
commit b60eb1711a
16 changed files with 35 additions and 23 deletions

View File

@@ -13,8 +13,8 @@ export default definePluginEntry({
return null;
}
const taskFlow =
api.runtime?.taskFlow && ctx.sessionKey
? api.runtime.taskFlow.fromToolContext(ctx)
api.runtime?.tasks.managedFlows && ctx.sessionKey
? api.runtime.tasks.managedFlows.fromToolContext(ctx)
: undefined;
return createLobsterTool(api, { taskFlow }) as AnyAgentTool;
}) as OpenClawPluginToolFactory,

View File

@@ -12,7 +12,7 @@ type JsonLike =
};
type BoundTaskFlow = ReturnType<
NonNullable<OpenClawPluginApi["runtime"]>["taskFlow"]["bindSession"]
NonNullable<OpenClawPluginApi["runtime"]>["tasks"]["managedFlows"]["bindSession"]
>;
type FlowRecord = ReturnType<BoundTaskFlow["createManaged"]>;

View File

@@ -13,7 +13,7 @@ import {
} from "./lobster-taskflow.js";
type BoundTaskFlow = ReturnType<
NonNullable<OpenClawPluginApi["runtime"]>["taskFlow"]["bindSession"]
NonNullable<OpenClawPluginApi["runtime"]>["tasks"]["managedFlows"]["bindSession"]
>;
type JsonLike =

View File

@@ -2,7 +2,7 @@ import { vi } from "vitest";
import type { OpenClawPluginApi } from "../runtime-api.js";
export type BoundTaskFlow = ReturnType<
NonNullable<OpenClawPluginApi["runtime"]>["taskFlow"]["bindSession"]
NonNullable<OpenClawPluginApi["runtime"]>["tasks"]["managedFlows"]["bindSession"]
>;
export function createFakeTaskFlow(overrides?: Partial<BoundTaskFlow>): BoundTaskFlow {

View File

@@ -14,8 +14,10 @@ function createApi(params?: {
source: "test",
pluginConfig: params?.pluginConfig ?? {},
runtime: {
taskFlow: {
bindSession: vi.fn(({ sessionKey }: { sessionKey: string }) => ({ sessionKey })),
tasks: {
managedFlows: {
bindSession: vi.fn(({ sessionKey }: { sessionKey: string }) => ({ sessionKey })),
},
},
} as unknown as OpenClawPluginApi["runtime"],
registerHttpRoute: params?.registerHttpRoute ?? vi.fn(),

View File

@@ -17,7 +17,7 @@ function registerWebhookRoutes(api: OpenClawPluginApi): void {
});
for (const route of routes) {
const taskFlow = api.runtime.taskFlow.bindSession({
const taskFlow = api.runtime.tasks.managedFlows.bindSession({
sessionKey: route.sessionKey,
});
const target: TaskFlowWebhookTarget = {

View File

@@ -18,7 +18,7 @@ import {
} from "../runtime-api.js";
import type { WebhookSecretInput } from "./config.js";
type BoundTaskFlowRuntime = ReturnType<PluginRuntime["taskFlow"]["bindSession"]>;
type BoundTaskFlowRuntime = ReturnType<PluginRuntime["tasks"]["managedFlows"]["bindSession"]>;
type JsonValue = null | boolean | number | string | JsonValue[] | { [key: string]: JsonValue };