mirror of
https://github.com/openclaw/openclaw.git
synced 2026-05-09 22:34:32 +00:00
refactor: extract shared dedupe helpers for runtime paths
This commit is contained in:
@@ -200,6 +200,21 @@ function parseSessionKeyFromPayloadJSON(payloadJSON: string): string | null {
|
||||
return sessionKey.length > 0 ? sessionKey : null;
|
||||
}
|
||||
|
||||
function parsePayloadObject(payloadJSON?: string | null): Record<string, unknown> | null {
|
||||
if (!payloadJSON) {
|
||||
return null;
|
||||
}
|
||||
let payload: unknown;
|
||||
try {
|
||||
payload = JSON.parse(payloadJSON) as unknown;
|
||||
} catch {
|
||||
return null;
|
||||
}
|
||||
return typeof payload === "object" && payload !== null
|
||||
? (payload as Record<string, unknown>)
|
||||
: null;
|
||||
}
|
||||
|
||||
async function sendReceiptAck(params: {
|
||||
cfg: ReturnType<typeof loadConfig>;
|
||||
deps: NodeEventContext["deps"];
|
||||
@@ -232,17 +247,10 @@ async function sendReceiptAck(params: {
|
||||
export const handleNodeEvent = async (ctx: NodeEventContext, nodeId: string, evt: NodeEvent) => {
|
||||
switch (evt.event) {
|
||||
case "voice.transcript": {
|
||||
if (!evt.payloadJSON) {
|
||||
const obj = parsePayloadObject(evt.payloadJSON);
|
||||
if (!obj) {
|
||||
return;
|
||||
}
|
||||
let payload: unknown;
|
||||
try {
|
||||
payload = JSON.parse(evt.payloadJSON) as unknown;
|
||||
} catch {
|
||||
return;
|
||||
}
|
||||
const obj =
|
||||
typeof payload === "object" && payload !== null ? (payload as Record<string, unknown>) : {};
|
||||
const text = typeof obj.text === "string" ? obj.text.trim() : "";
|
||||
if (!text) {
|
||||
return;
|
||||
@@ -455,17 +463,10 @@ export const handleNodeEvent = async (ctx: NodeEventContext, nodeId: string, evt
|
||||
case "exec.started":
|
||||
case "exec.finished":
|
||||
case "exec.denied": {
|
||||
if (!evt.payloadJSON) {
|
||||
const obj = parsePayloadObject(evt.payloadJSON);
|
||||
if (!obj) {
|
||||
return;
|
||||
}
|
||||
let payload: unknown;
|
||||
try {
|
||||
payload = JSON.parse(evt.payloadJSON) as unknown;
|
||||
} catch {
|
||||
return;
|
||||
}
|
||||
const obj =
|
||||
typeof payload === "object" && payload !== null ? (payload as Record<string, unknown>) : {};
|
||||
const sessionKey =
|
||||
typeof obj.sessionKey === "string" ? obj.sessionKey.trim() : `node-${nodeId}`;
|
||||
if (!sessionKey) {
|
||||
@@ -519,17 +520,10 @@ export const handleNodeEvent = async (ctx: NodeEventContext, nodeId: string, evt
|
||||
return;
|
||||
}
|
||||
case "push.apns.register": {
|
||||
if (!evt.payloadJSON) {
|
||||
const obj = parsePayloadObject(evt.payloadJSON);
|
||||
if (!obj) {
|
||||
return;
|
||||
}
|
||||
let payload: unknown;
|
||||
try {
|
||||
payload = JSON.parse(evt.payloadJSON) as unknown;
|
||||
} catch {
|
||||
return;
|
||||
}
|
||||
const obj =
|
||||
typeof payload === "object" && payload !== null ? (payload as Record<string, unknown>) : {};
|
||||
const token = typeof obj.token === "string" ? obj.token : "";
|
||||
const topic = typeof obj.topic === "string" ? obj.topic : "";
|
||||
const environment = obj.environment;
|
||||
|
||||
@@ -1,23 +1,9 @@
|
||||
import { vi } from "vitest";
|
||||
import type { PluginRegistry } from "../plugins/registry.js";
|
||||
import { createEmptyPluginRegistry, type PluginRegistry } from "../plugins/registry.js";
|
||||
import { setActivePluginRegistry } from "../plugins/runtime.js";
|
||||
|
||||
export const registryState: { registry: PluginRegistry } = {
|
||||
registry: {
|
||||
plugins: [],
|
||||
tools: [],
|
||||
hooks: [],
|
||||
typedHooks: [],
|
||||
channels: [],
|
||||
providers: [],
|
||||
gatewayHandlers: {},
|
||||
httpHandlers: [],
|
||||
httpRoutes: [],
|
||||
cliRegistrars: [],
|
||||
services: [],
|
||||
commands: [],
|
||||
diagnostics: [],
|
||||
} as PluginRegistry,
|
||||
registry: createEmptyPluginRegistry(),
|
||||
};
|
||||
|
||||
export function setRegistry(registry: PluginRegistry) {
|
||||
|
||||
Reference in New Issue
Block a user