src / tools / pluginBridge.ts
import crypto from 'crypto';
interface BridgeMessage {
id: string;
source_plugin: string;
target_plugin: string;
tool_name: string;
params: any;
timestamp: number;
}
const messageQueue = new Map<string, BridgeMessage[]>();
export async function plugin_bridge_send(targetPlugin: string, toolName: string, params: any): Promise<{ success: boolean; message_id?: string }> {
const id = `bridge_${Date.now()}_${Math.random().toString(36).substr(2, 9)}`;
const message: BridgeMessage = {
id,
source_plugin: 'beledarians-lm-studio-tools',
target_plugin: targetPlugin,
tool_name: toolName,
params,
timestamp: Date.now()
};
if (!messageQueue.has(targetPlugin)) messageQueue.set(targetPlugin, []);
messageQueue.get(targetPlugin)!.push(message);
return { success: true, message_id: id };
}
export async function plugin_bridge_receive(targetPlugin?: string): Promise<{ messages: BridgeMessage[] }> {
if (targetPlugin) {
const msgs = messageQueue.get(targetPlugin) || [];
messageQueue.delete(targetPlugin);
return { messages: msgs };
}
const allMessages: BridgeMessage[] = [];
for (const msgs of messageQueue.values()) {
allMessages.push(...msgs);
}
messageQueue.clear();
return { messages: allMessages };
}
export async function plugin_bridge_status(): Promise<{ queue_sizes: Record<string, number> }> {
const sizes: Record<string, number> = {};
for (const [plugin, msgs] of messageQueue.entries()) {
sizes[plugin] = msgs.length;
}
return { queue_sizes: sizes };
}
export async function plugin_bridge_clear(targetPlugin?: string): Promise<{ success: boolean }> {
if (targetPlugin) {
messageQueue.delete(targetPlugin);
} else {
messageQueue.clear();
}
return { success: true };
}
src / tools / pluginBridge.ts
import crypto from 'crypto';
interface BridgeMessage {
id: string;
source_plugin: string;
target_plugin: string;
tool_name: string;
params: any;
timestamp: number;
}
const messageQueue = new Map<string, BridgeMessage[]>();
export async function plugin_bridge_send(targetPlugin: string, toolName: string, params: any): Promise<{ success: boolean; message_id?: string }> {
const id = `bridge_${Date.now()}_${Math.random().toString(36).substr(2, 9)}`;
const message: BridgeMessage = {
id,
source_plugin: 'beledarians-lm-studio-tools',
target_plugin: targetPlugin,
tool_name: toolName,
params,
timestamp: Date.now()
};
if (!messageQueue.has(targetPlugin)) messageQueue.set(targetPlugin, []);
messageQueue.get(targetPlugin)!.push(message);
return { success: true, message_id: id };
}
export async function plugin_bridge_receive(targetPlugin?: string): Promise<{ messages: BridgeMessage[] }> {
if (targetPlugin) {
const msgs = messageQueue.get(targetPlugin) || [];
messageQueue.delete(targetPlugin);
return { messages: msgs };
}
const allMessages: BridgeMessage[] = [];
for (const msgs of messageQueue.values()) {
allMessages.push(...msgs);
}
messageQueue.clear();
return { messages: allMessages };
}
export async function plugin_bridge_status(): Promise<{ queue_sizes: Record<string, number> }> {
const sizes: Record<string, number> = {};
for (const [plugin, msgs] of messageQueue.entries()) {
sizes[plugin] = msgs.length;
}
return { queue_sizes: sizes };
}
export async function plugin_bridge_clear(targetPlugin?: string): Promise<{ success: boolean }> {
if (targetPlugin) {
messageQueue.delete(targetPlugin);
} else {
messageQueue.clear();
}
return { success: true };
}