import { invoke } from "@tauri-apps/api/core";
let _currentPluginId = "";
export function _setPluginId(id) {
_currentPluginId = id;
}
export function _getPluginId() {
return _currentPluginId;
}
export async function invokePlugin(command, args) {
if (!_currentPluginId) {
throw new Error("[plugin-sdk] invokePlugin: plugin ID not set. Did you call registerPlugin()?");
}
const wireName = `plugin_${_currentPluginId.replace(/[.\-]/g, "_")}_${command}`;
return invoke("plugin_invoke", {
args: { wire_name: wireName, args: args ?? {} },
});
}
export async function invokeOtherPlugin(targetPluginId, command, args) {
const wireName = `plugin_${targetPluginId.replace(/[.\-]/g, "_")}_${command}`;
return invoke("plugin_invoke", {
args: { wire_name: wireName, args: args ?? {} },
});
}
export async function invokeHost(command, args) {
return invoke(command, args);
}
function getPluginHostBridge() {
const bridge = window.__HALOFORGE_PLUGIN_HOST__;
return bridge?.version === 1 ? bridge : null;
}
function requireCurrentPluginId(feature) {
if (!_currentPluginId) {
throw new Error(`[plugin-sdk] ${feature}: plugin ID not set. Did you call registerPlugin()?`);
}
return _currentPluginId;
}
function requireEnterpriseGateway() {
const gateway = getPluginHostBridge()?.enterpriseGateway;
if (!gateway) {
throw new Error("[plugin-sdk] enterpriseGateway: host enterprise gateway bridge is unavailable.");
}
return gateway;
}
export function enterpriseGateway() {
const pluginId = requireCurrentPluginId("enterpriseGateway");
const gateway = requireEnterpriseGateway();
return {
generateImages: (request) => gateway.generateImages(pluginId, request),
editImages: (request) => gateway.editImages(pluginId, request),
listOutputs: (limit) => gateway.listOutputs(pluginId, limit),
};
}