mirror of
https://github.com/openclaw/openclaw.git
synced 2026-04-14 10:41:23 +00:00
76 lines
2.2 KiB
TypeScript
76 lines
2.2 KiB
TypeScript
import type { PluginRuntime } from "openclaw/plugin-sdk/core";
|
|
|
|
type SessionRecord = {
|
|
sessionKey: string;
|
|
body: string;
|
|
};
|
|
|
|
export function createQaRunnerRuntime(): PluginRuntime {
|
|
const sessions = new Map<string, SessionRecord>();
|
|
return {
|
|
channel: {
|
|
routing: {
|
|
resolveAgentRoute({
|
|
accountId,
|
|
peer,
|
|
}: {
|
|
accountId?: string | null;
|
|
peer?: { kind?: string; id?: string } | null;
|
|
}) {
|
|
return {
|
|
agentId: "qa-agent",
|
|
accountId: accountId ?? "default",
|
|
sessionKey: `qa-agent:${peer?.kind ?? "direct"}:${peer?.id ?? "default"}`,
|
|
mainSessionKey: "qa-agent:main",
|
|
lastRoutePolicy: "session",
|
|
matchedBy: "default",
|
|
channel: "qa-channel",
|
|
};
|
|
},
|
|
},
|
|
session: {
|
|
resolveStorePath(_store: string | undefined, { agentId }: { agentId: string }) {
|
|
return agentId;
|
|
},
|
|
readSessionUpdatedAt({ sessionKey }: { sessionKey: string }) {
|
|
return sessions.has(sessionKey) ? Date.now() : undefined;
|
|
},
|
|
recordInboundSession({
|
|
sessionKey,
|
|
ctx,
|
|
}: {
|
|
sessionKey: string;
|
|
ctx: { BodyForAgent?: string; Body?: string };
|
|
}) {
|
|
sessions.set(sessionKey, {
|
|
sessionKey,
|
|
body: String(ctx.BodyForAgent ?? ctx.Body ?? ""),
|
|
});
|
|
},
|
|
},
|
|
reply: {
|
|
resolveEnvelopeFormatOptions() {
|
|
return {};
|
|
},
|
|
formatAgentEnvelope({ body }: { body: string }) {
|
|
return body;
|
|
},
|
|
finalizeInboundContext(ctx: Record<string, unknown>) {
|
|
return ctx as typeof ctx & { CommandAuthorized: boolean };
|
|
},
|
|
async dispatchReplyWithBufferedBlockDispatcher({
|
|
ctx,
|
|
dispatcherOptions,
|
|
}: {
|
|
ctx: { BodyForAgent?: string; Body?: string };
|
|
dispatcherOptions: { deliver: (payload: { text: string }) => Promise<void> };
|
|
}) {
|
|
await dispatcherOptions.deliver({
|
|
text: `qa-echo: ${String(ctx.BodyForAgent ?? ctx.Body ?? "")}`,
|
|
});
|
|
},
|
|
},
|
|
},
|
|
} as unknown as PluginRuntime;
|
|
}
|