(function (root, factory) { if (typeof module === "object" && module.exports) module.exports = factory(); else root.DSH_BRIDGE = factory(); }(typeof globalThis !== "undefined" ? globalThis : this, function () { "use strict"; const TOKEN_KEY = "dshmem-bridge-token"; const ENABLED_KEY = "dsh-memory-enabled"; function available() { return typeof chrome !== "undefined" && chrome.runtime && typeof chrome.runtime.sendMessage === "function"; } function send(payload) { return new Promise(function (resolve) { if (!available()) { resolve({ ok: false, error: { code: "E_NO_RUNTIME", message: "chrome.runtime unavailable" } }); return; } chrome.runtime.sendMessage({ type: "DSH_BRIDGE_CALL", payload: payload }, function (resp) { const last = chrome.runtime.lastError; if (last) resolve({ ok: false, error: { code: "E_RUNTIME", message: last.message } }); else resolve(resp || { ok: false, error: { code: "E_NO_RESPONSE", message: "empty" } }); }); }); } function sendCall(call) { if (!call || typeof call !== "object" || typeof call.tool !== "string") { return Promise.resolve({ ok: false, error: { code: "E_ARGS_INVALID", message: "call.tool required" } }); } const payload = { tool: call.tool, args: call.args || {} }; if (call.workspace) payload.workspace = call.workspace; if (call.confirmToken) payload.confirmToken = call.confirmToken; return send(payload); } function health() { return new Promise(function (resolve) { if (!available()) { resolve({ ok: false, error: { code: "E_NO_RUNTIME", message: "chrome.runtime unavailable" } }); return; } chrome.runtime.sendMessage({ type: "DSH_BRIDGE_HEALTH" }, function (resp) { const last = chrome.runtime.lastError; if (last) resolve({ ok: false, error: { code: "E_RUNTIME", message: last.message } }); else resolve(resp || { ok: false, error: { code: "E_NO_RESPONSE", message: "empty" } }); }); }); } function hasToken() { return new Promise(function (resolve) { if (typeof chrome === "undefined" || !chrome.storage) { resolve(false); return; } chrome.storage.local.get(TOKEN_KEY, function (v) { resolve(Boolean(v && v[TOKEN_KEY])); }); }); } function isEnabled() { return new Promise(function (resolve) { if (typeof chrome === "undefined" || !chrome.storage) { resolve(false); return; } chrome.storage.local.get(ENABLED_KEY, function (v) { resolve(Boolean(v && v[ENABLED_KEY])); }); }); } return { sendCall: sendCall, health: health, hasToken: hasToken, isEnabled: isEnabled, available: available, TOKEN_KEY: TOKEN_KEY, ENABLED_KEY: ENABLED_KEY }; }));