@trops/dash-core 0.1.506 → 0.1.507

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -25,7 +25,6 @@ var require$$1$4 = require('croner');
25
25
  var require$$2$3 = require('algoliasearch');
26
26
  var require$$3$3 = require('node:path');
27
27
  var require$$0$7 = require('openai');
28
- require('live-plugin-manager');
29
28
  var require$$0$a = require('@anthropic-ai/sdk');
30
29
  var require$$3$4 = require('crypto');
31
30
  var require$$8$1 = require('zod');
@@ -1054,7 +1053,7 @@ var secureStoreController$1 = {
1054
1053
  decryptString,
1055
1054
  };
1056
1055
 
1057
- const path$n = require$$1$1;
1056
+ const path$m = require$$1$1;
1058
1057
  const {
1059
1058
  readFileSync,
1060
1059
  writeFileSync: writeFileSync$3,
@@ -1072,7 +1071,7 @@ const {
1072
1071
  function ensureDirectoryExistence$1(filePath) {
1073
1072
  try {
1074
1073
  // isDirectory
1075
- var dirname = path$n.dirname(filePath);
1074
+ var dirname = path$m.dirname(filePath);
1076
1075
  // check if the directory exists...return true
1077
1076
  // if not, we can pass in the dirname as the filepath
1078
1077
  // and check each directory recursively.
@@ -1187,7 +1186,7 @@ function removeFilesFromDirectory(directory, excludeFiles = []) {
1187
1186
 
1188
1187
  for (const file of files) {
1189
1188
  if (!excludeFiles.includes(file)) {
1190
- unlinkSync(path$n.join(directory, file), (err) => {
1189
+ unlinkSync(path$m.join(directory, file), (err) => {
1191
1190
  if (err) throw err;
1192
1191
  });
1193
1192
  }
@@ -1204,8 +1203,8 @@ var file = {
1204
1203
  checkDirectory: checkDirectory$1,
1205
1204
  };
1206
1205
 
1207
- const { app: app$f } = require$$0$1;
1208
- const path$m = require$$1$1;
1206
+ const { app: app$e } = require$$0$1;
1207
+ const path$l = require$$1$1;
1209
1208
  const { writeFileSync: writeFileSync$2 } = require$$0$2;
1210
1209
  const { getFileContents: getFileContents$7 } = file;
1211
1210
 
@@ -1252,8 +1251,8 @@ const workspaceController$3 = {
1252
1251
  saveWorkspaceForApplication: (win, appId, workspaceObject) => {
1253
1252
  try {
1254
1253
  // filename to the pages file (live pages)
1255
- const filename = path$m.join(
1256
- app$f.getPath("userData"),
1254
+ const filename = path$l.join(
1255
+ app$e.getPath("userData"),
1257
1256
  appName$7,
1258
1257
  appId,
1259
1258
  configFilename$5,
@@ -1301,8 +1300,8 @@ const workspaceController$3 = {
1301
1300
  saveMenuItemsForApplication: (win, appId, menuItems) => {
1302
1301
  try {
1303
1302
  // filename to the workspaces file
1304
- const filename = path$m.join(
1305
- app$f.getPath("userData"),
1303
+ const filename = path$l.join(
1304
+ app$e.getPath("userData"),
1306
1305
  appName$7,
1307
1306
  appId,
1308
1307
  configFilename$5,
@@ -1350,8 +1349,8 @@ const workspaceController$3 = {
1350
1349
  */
1351
1350
  deleteWorkspaceForApplication: (win, appId, workspaceId) => {
1352
1351
  try {
1353
- const filename = path$m.join(
1354
- app$f.getPath("userData"),
1352
+ const filename = path$l.join(
1353
+ app$e.getPath("userData"),
1355
1354
  appName$7,
1356
1355
  appId,
1357
1356
  configFilename$5,
@@ -1384,8 +1383,8 @@ const workspaceController$3 = {
1384
1383
 
1385
1384
  listWorkspacesForApplication: (win, appId) => {
1386
1385
  try {
1387
- const filename = path$m.join(
1388
- app$f.getPath("userData"),
1386
+ const filename = path$l.join(
1387
+ app$e.getPath("userData"),
1389
1388
  appName$7,
1390
1389
  appId,
1391
1390
  configFilename$5,
@@ -1412,8 +1411,8 @@ const workspaceController$3 = {
1412
1411
 
1413
1412
  listMenuItemsForApplication: (win, appId) => {
1414
1413
  try {
1415
- const filename = path$m.join(
1416
- app$f.getPath("userData"),
1414
+ const filename = path$l.join(
1415
+ app$e.getPath("userData"),
1417
1416
  appName$7,
1418
1417
  appId,
1419
1418
  configFilename$5,
@@ -1456,8 +1455,8 @@ const workspaceController$3 = {
1456
1455
 
1457
1456
  var workspaceController_1 = workspaceController$3;
1458
1457
 
1459
- const { app: app$e } = require$$0$1;
1460
- const path$l = require$$1$1;
1458
+ const { app: app$d } = require$$0$1;
1459
+ const path$k = require$$1$1;
1461
1460
  const { writeFileSync: writeFileSync$1 } = require$$0$2;
1462
1461
  const { getFileContents: getFileContents$6 } = file;
1463
1462
 
@@ -1477,8 +1476,8 @@ const themeController$5 = {
1477
1476
  saveThemeForApplication: (win, appId, name, obj) => {
1478
1477
  try {
1479
1478
  // filename to the pages file (live pages)
1480
- const filename = path$l.join(
1481
- app$e.getPath("userData"),
1479
+ const filename = path$k.join(
1480
+ app$d.getPath("userData"),
1482
1481
  appName$6,
1483
1482
  appId,
1484
1483
  configFilename$4,
@@ -1523,8 +1522,8 @@ const themeController$5 = {
1523
1522
  */
1524
1523
  listThemesForApplication: (win, appId) => {
1525
1524
  try {
1526
- const filename = path$l.join(
1527
- app$e.getPath("userData"),
1525
+ const filename = path$k.join(
1526
+ app$d.getPath("userData"),
1528
1527
  appName$6,
1529
1528
  appId,
1530
1529
  configFilename$4,
@@ -1565,8 +1564,8 @@ const themeController$5 = {
1565
1564
  */
1566
1565
  deleteThemeForApplication: (win, appId, themeKey) => {
1567
1566
  try {
1568
- const filename = path$l.join(
1569
- app$e.getPath("userData"),
1567
+ const filename = path$k.join(
1568
+ app$d.getPath("userData"),
1570
1569
  appName$6,
1571
1570
  appId,
1572
1571
  configFilename$4,
@@ -1642,9 +1641,9 @@ var themeController_1 = themeController$5;
1642
1641
  * `/data/`.
1643
1642
  */
1644
1643
 
1645
- const path$k = require$$1$1;
1644
+ const path$j = require$$1$1;
1646
1645
  const fs$f = require$$0$2;
1647
- const { app: app$d } = require$$0$1;
1646
+ const { app: app$c } = require$$0$1;
1648
1647
 
1649
1648
  const APP_NAME = "Dashboard";
1650
1649
 
@@ -1653,10 +1652,10 @@ const APP_NAME = "Dashboard";
1653
1652
  * @returns {string[]} ordered allowed roots for that category
1654
1653
  */
1655
1654
  function getAllowedRoots$2(category) {
1656
- const userData = app$d.getPath("userData");
1655
+ const userData = app$c.getPath("userData");
1657
1656
  switch (category) {
1658
1657
  case "data": {
1659
- const def = path$k.join(userData, APP_NAME, "data");
1658
+ const def = path$j.join(userData, APP_NAME, "data");
1660
1659
  // The user can configure a custom data directory in
1661
1660
  // Settings → General → Data Directory. If set, that
1662
1661
  // location is ALSO an allowed root. We don't replace the
@@ -1666,13 +1665,13 @@ function getAllowedRoots$2(category) {
1666
1665
  return override ? [def, override] : [def];
1667
1666
  }
1668
1667
  case "themes":
1669
- return [path$k.join(userData, APP_NAME, "themes")];
1668
+ return [path$j.join(userData, APP_NAME, "themes")];
1670
1669
  case "widgets":
1671
- return [path$k.join(userData, "widgets")];
1670
+ return [path$j.join(userData, "widgets")];
1672
1671
  case "plugins":
1673
- return [path$k.join(userData, "plugins")];
1672
+ return [path$j.join(userData, "plugins")];
1674
1673
  case "downloads":
1675
- return [app$d.getPath("downloads")];
1674
+ return [app$c.getPath("downloads")];
1676
1675
  default:
1677
1676
  throw new Error("safePath: unknown allowed-roots category: " + category);
1678
1677
  }
@@ -1687,8 +1686,8 @@ function getAllowedRoots$2(category) {
1687
1686
  */
1688
1687
  function readDataDirectoryFromSettings() {
1689
1688
  try {
1690
- const settingsPath = path$k.join(
1691
- app$d.getPath("userData"),
1689
+ const settingsPath = path$j.join(
1690
+ app$c.getPath("userData"),
1692
1691
  APP_NAME,
1693
1692
  "settings.json",
1694
1693
  );
@@ -1719,7 +1718,7 @@ function safePath$3(requested, allowedRoots) {
1719
1718
  throw new Error("safePath: allowedRoots must be a non-empty array");
1720
1719
  }
1721
1720
 
1722
- const resolved = path$k.resolve(requested);
1721
+ const resolved = path$j.resolve(requested);
1723
1722
 
1724
1723
  // Real-path through symlinks. If the file doesn't exist yet (a
1725
1724
  // create-new operation), real-path the parent so a symlink in the
@@ -1729,8 +1728,8 @@ function safePath$3(requested, allowedRoots) {
1729
1728
  real = fs$f.realpathSync(resolved);
1730
1729
  } catch (_e) {
1731
1730
  try {
1732
- const parent = fs$f.realpathSync(path$k.dirname(resolved));
1733
- real = path$k.join(parent, path$k.basename(resolved));
1731
+ const parent = fs$f.realpathSync(path$j.dirname(resolved));
1732
+ real = path$j.join(parent, path$j.basename(resolved));
1734
1733
  } catch (_e2) {
1735
1734
  // Parent doesn't exist either. Use the resolved-but-not-
1736
1735
  // real path; the caller's mkdirSync will happen inside the
@@ -1749,7 +1748,7 @@ function safePath$3(requested, allowedRoots) {
1749
1748
  }
1750
1749
  // Exact match OR strictly-inside (with separator to prevent
1751
1750
  // /data-evil/ matching /data/).
1752
- if (real === realRoot || real.startsWith(realRoot + path$k.sep)) {
1751
+ if (real === realRoot || real.startsWith(realRoot + path$j.sep)) {
1753
1752
  return real;
1754
1753
  }
1755
1754
  }
@@ -1811,8 +1810,8 @@ var safePath_1 = {
1811
1810
  */
1812
1811
 
1813
1812
  const fs$e = require$$0$2;
1814
- const path$j = require$$1$1;
1815
- const { app: app$c } = require$$0$1;
1813
+ const path$i = require$$1$1;
1814
+ const { app: app$b } = require$$0$1;
1816
1815
 
1817
1816
  const FILE_NAME = "widgetMcpGrants.json";
1818
1817
 
@@ -1821,7 +1820,7 @@ const FILE_NAME = "widgetMcpGrants.json";
1821
1820
  let _cache$1 = null;
1822
1821
 
1823
1822
  function grantsFilePath() {
1824
- return path$j.join(app$c.getPath("userData"), FILE_NAME);
1823
+ return path$i.join(app$b.getPath("userData"), FILE_NAME);
1825
1824
  }
1826
1825
 
1827
1826
  function loadFromDisk() {
@@ -1848,7 +1847,7 @@ function writeToDisk(data) {
1848
1847
  const tmp = p + ".tmp";
1849
1848
  // Ensure parent dir exists (userData should already, but be defensive
1850
1849
  // for first-launch / freshly-cleared profile cases).
1851
- fs$e.mkdirSync(path$j.dirname(p), { recursive: true });
1850
+ fs$e.mkdirSync(path$i.dirname(p), { recursive: true });
1852
1851
  fs$e.writeFileSync(tmp, JSON.stringify(data, null, 2), "utf8");
1853
1852
  fs$e.renameSync(tmp, p);
1854
1853
  }
@@ -3490,9 +3489,9 @@ function requireTransform () {
3490
3489
  return transform;
3491
3490
  }
3492
3491
 
3493
- const { app: app$b } = require$$0$1;
3492
+ const { app: app$a } = require$$0$1;
3494
3493
  var fs$d = require$$0$2;
3495
- const path$i = require$$1$1;
3494
+ const path$h = require$$1$1;
3496
3495
  const events$5 = events$8;
3497
3496
  const { getFileContents: getFileContents$5, writeToFile: writeToFile$2 } = file;
3498
3497
  const { safePath: safePath$2, getAllowedRoots: getAllowedRoots$1 } = safePath_1;
@@ -3509,8 +3508,8 @@ const { readEnforceFlag: readEnforceFlag$2, readJitFlag: readJitFlag$2 } = secur
3509
3508
  // domain-neutral name is a separate slice).
3510
3509
  function _loadFlags$1() {
3511
3510
  try {
3512
- const settingsPath = path$i.join(
3513
- app$b.getPath("userData"),
3511
+ const settingsPath = path$h.join(
3512
+ app$a.getPath("userData"),
3514
3513
  appName$5,
3515
3514
  "settings.json",
3516
3515
  );
@@ -3589,8 +3588,8 @@ const dataController$1 = {
3589
3588
  // Validate the renderer-supplied filename is contained within
3590
3589
  // the data directory. path.join doesn't reject `..` segments;
3591
3590
  // safePath does.
3592
- const candidate = path$i.join(
3593
- app$b.getPath("userData"),
3591
+ const candidate = path$h.join(
3592
+ app$a.getPath("userData"),
3594
3593
  appName$5,
3595
3594
  appId,
3596
3595
  "data",
@@ -3941,8 +3940,8 @@ const dataController$1 = {
3941
3940
  if (data) {
3942
3941
  // Validate filename is contained within the data directory.
3943
3942
  // path.join doesn't reject `..` segments; safePath does.
3944
- const candidate = path$i.join(
3945
- app$b.getPath("userData"),
3943
+ const candidate = path$h.join(
3944
+ app$a.getPath("userData"),
3946
3945
  appName$5,
3947
3946
  "data",
3948
3947
  filename,
@@ -4043,8 +4042,8 @@ const dataController$1 = {
4043
4042
  try {
4044
4043
  if (filename) {
4045
4044
  // filename to the pages file (live pages)
4046
- const fromFilename = path$i.join(
4047
- app$b.getPath("userData"),
4045
+ const fromFilename = path$h.join(
4046
+ app$a.getPath("userData"),
4048
4047
  appName$5,
4049
4048
  "data",
4050
4049
  filename,
@@ -4124,8 +4123,8 @@ var dataController_1 = dataController$1;
4124
4123
  * settingsController
4125
4124
  */
4126
4125
 
4127
- const { app: app$a } = require$$0$1;
4128
- const path$h = require$$1$1;
4126
+ const { app: app$9 } = require$$0$1;
4127
+ const path$g = require$$1$1;
4129
4128
  const fs$c = require$$0$2;
4130
4129
  const { getFileContents: getFileContents$4, writeToFile: writeToFile$1 } = file;
4131
4130
 
@@ -4140,8 +4139,8 @@ function copyDirectory(source, destination) {
4140
4139
 
4141
4140
  const files = fs$c.readdirSync(source);
4142
4141
  for (const file of files) {
4143
- const srcPath = path$h.join(source, file);
4144
- const destPath = path$h.join(destination, file);
4142
+ const srcPath = path$g.join(source, file);
4143
+ const destPath = path$g.join(destination, file);
4145
4144
  const stat = fs$c.lstatSync(srcPath);
4146
4145
 
4147
4146
  // Skip symlinks to prevent following links to sensitive files
@@ -4169,8 +4168,8 @@ const settingsController$4 = {
4169
4168
  try {
4170
4169
  if (data) {
4171
4170
  // <appId>/settings.json
4172
- const filename = path$h.join(
4173
- app$a.getPath("userData"),
4171
+ const filename = path$g.join(
4172
+ app$9.getPath("userData"),
4174
4173
  appName$4,
4175
4174
  configFilename$3,
4176
4175
  );
@@ -4205,8 +4204,8 @@ const settingsController$4 = {
4205
4204
  getSettingsForApplication: (win) => {
4206
4205
  try {
4207
4206
  // <appId>/settings.json
4208
- const filename = path$h.join(
4209
- app$a.getPath("userData"),
4207
+ const filename = path$g.join(
4208
+ app$9.getPath("userData"),
4210
4209
  appName$4,
4211
4210
  configFilename$3,
4212
4211
  );
@@ -4236,15 +4235,15 @@ const settingsController$4 = {
4236
4235
  */
4237
4236
  getDataDirectory: (win) => {
4238
4237
  try {
4239
- const settingsPath = path$h.join(
4240
- app$a.getPath("userData"),
4238
+ const settingsPath = path$g.join(
4239
+ app$9.getPath("userData"),
4241
4240
  appName$4,
4242
4241
  configFilename$3,
4243
4242
  );
4244
4243
  const settings = getFileContents$4(settingsPath, {});
4245
4244
  const userDataDir =
4246
4245
  settings.userDataDirectory ||
4247
- path$h.join(app$a.getPath("userData"), appName$4);
4246
+ path$g.join(app$9.getPath("userData"), appName$4);
4248
4247
 
4249
4248
  console.log("[settingsController] Data directory retrieved successfully");
4250
4249
  // Return the data for ipcMain.handle() - modern promise-based approach
@@ -4281,8 +4280,8 @@ const settingsController$4 = {
4281
4280
  }
4282
4281
 
4283
4282
  // Update settings
4284
- const settingsPath = path$h.join(
4285
- app$a.getPath("userData"),
4283
+ const settingsPath = path$g.join(
4284
+ app$9.getPath("userData"),
4286
4285
  appName$4,
4287
4286
  configFilename$3,
4288
4287
  );
@@ -4315,20 +4314,20 @@ const settingsController$4 = {
4315
4314
  migrateDataDirectory: (win, oldPath, newPath) => {
4316
4315
  try {
4317
4316
  // Resolve paths to prevent traversal
4318
- const resolvedOldPath = path$h.resolve(oldPath);
4319
- const resolvedNewPath = path$h.resolve(newPath);
4317
+ const resolvedOldPath = path$g.resolve(oldPath);
4318
+ const resolvedNewPath = path$g.resolve(newPath);
4320
4319
 
4321
4320
  // Validate oldPath is the current configured data directory
4322
- const settingsCheckPath = path$h.join(
4323
- app$a.getPath("userData"),
4321
+ const settingsCheckPath = path$g.join(
4322
+ app$9.getPath("userData"),
4324
4323
  appName$4,
4325
4324
  configFilename$3,
4326
4325
  );
4327
4326
  const currentSettings = getFileContents$4(settingsCheckPath, {});
4328
4327
  const currentDataDir =
4329
4328
  currentSettings.userDataDirectory ||
4330
- path$h.join(app$a.getPath("userData"), appName$4);
4331
- if (resolvedOldPath !== path$h.resolve(currentDataDir)) {
4329
+ path$g.join(app$9.getPath("userData"), appName$4);
4330
+ if (resolvedOldPath !== path$g.resolve(currentDataDir)) {
4332
4331
  throw new Error("Source path must be the current data directory");
4333
4332
  }
4334
4333
 
@@ -4364,8 +4363,8 @@ const settingsController$4 = {
4364
4363
  copyDirectory(resolvedOldPath, resolvedNewPath);
4365
4364
 
4366
4365
  // Update settings to use new path
4367
- const settingsPath = path$h.join(
4368
- app$a.getPath("userData"),
4366
+ const settingsPath = path$g.join(
4367
+ app$9.getPath("userData"),
4369
4368
  appName$4,
4370
4369
  configFilename$3,
4371
4370
  );
@@ -5029,8 +5028,8 @@ function requireProviderController () {
5029
5028
  return providerController_1;
5030
5029
  }
5031
5030
 
5032
- const { app: app$9 } = require$$0$1;
5033
- const path$g = require$$1$1;
5031
+ const { app: app$8 } = require$$0$1;
5032
+ const path$f = require$$1$1;
5034
5033
  const events$4 = events$8;
5035
5034
  const { getFileContents: getFileContents$3 } = file;
5036
5035
 
@@ -5046,8 +5045,8 @@ const layoutController$1 = {
5046
5045
  */
5047
5046
  listLayoutsForApplication: (win, appId) => {
5048
5047
  try {
5049
- const filename = path$g.join(
5050
- app$9.getPath("userData"),
5048
+ const filename = path$f.join(
5049
+ app$8.getPath("userData"),
5051
5050
  appName$3,
5052
5051
  appId,
5053
5052
  configFilename$2,
@@ -22710,7 +22709,7 @@ const {
22710
22709
  const {
22711
22710
  StreamableHTTPClientTransport,
22712
22711
  } = streamableHttp$1;
22713
- const path$f = require$$1$1;
22712
+ const path$e = require$$1$1;
22714
22713
  const fs$b = require$$0$2;
22715
22714
  const os$2 = require$$2$1;
22716
22715
  const responseCache$2 = responseCache_1;
@@ -22718,7 +22717,7 @@ const { gateToolCall, gateToolCallWithJit } = permissionGate;
22718
22717
  const { serverKey, parseServerKey } = mcpServerKey;
22719
22718
  const { applyPathScopeToCredentials } = mcpScopeResolver;
22720
22719
  const { readEnforceFlag: readEnforceFlag$1, readJitFlag: readJitFlag$1 } = securityFlags;
22721
- const { app: app$8 } = require$$0$1;
22720
+ const { app: app$7 } = require$$0$1;
22722
22721
 
22723
22722
  /**
22724
22723
  * Load the user's settings.json (or null on absence/parse error). The
@@ -22727,8 +22726,8 @@ const { app: app$8 } = require$$0$1;
22727
22726
  */
22728
22727
  function loadSettingsForFlags() {
22729
22728
  try {
22730
- const settingsPath = path$f.join(
22731
- app$8.getPath("userData"),
22729
+ const settingsPath = path$e.join(
22730
+ app$7.getPath("userData"),
22732
22731
  "Dashboard",
22733
22732
  "settings.json",
22734
22733
  );
@@ -23300,7 +23299,7 @@ const mcpController$3 = {
23300
23299
  }
23301
23300
 
23302
23301
  // Interpolate {{MCP_DIR}} in args to resolve local MCP server scripts
23303
- const mcpDir = path$f.join(__dirname, "..", "mcp");
23302
+ const mcpDir = path$e.join(__dirname, "..", "mcp");
23304
23303
  for (let i = 0; i < args.length; i++) {
23305
23304
  if (
23306
23305
  typeof args[i] === "string" &&
@@ -23751,7 +23750,7 @@ const mcpController$3 = {
23751
23750
  */
23752
23751
  getCatalog: (win) => {
23753
23752
  try {
23754
- const catalogPath = path$f.join(
23753
+ const catalogPath = path$e.join(
23755
23754
  __dirname,
23756
23755
  "..",
23757
23756
  "mcp",
@@ -23792,7 +23791,7 @@ const mcpController$3 = {
23792
23791
  */
23793
23792
  getKnownExternalCatalog: () => {
23794
23793
  try {
23795
- const catalogPath = path$f.join(
23794
+ const catalogPath = path$e.join(
23796
23795
  __dirname,
23797
23796
  "..",
23798
23797
  "mcp",
@@ -23905,7 +23904,7 @@ const mcpController$3 = {
23905
23904
  }
23906
23905
 
23907
23906
  // Interpolate {{MCP_DIR}} in authCommand args (same as startServer)
23908
- const mcpDir = path$f.join(__dirname, "..", "mcp");
23907
+ const mcpDir = path$e.join(__dirname, "..", "mcp");
23909
23908
  const resolvedArgs = (authCommand.args || []).map((arg) =>
23910
23909
  typeof arg === "string" && arg.includes("{{MCP_DIR}}")
23911
23910
  ? arg.replace(/\{\{MCP_DIR\}\}/g, mcpDir)
@@ -24454,7 +24453,7 @@ function commonjsRequire(path) {
24454
24453
  */
24455
24454
 
24456
24455
  const fs$a = require$$0$2;
24457
- const path$e = require$$1$1;
24456
+ const path$d = require$$1$1;
24458
24457
 
24459
24458
  /**
24460
24459
  * Structured error thrown by compileWidget() when the underlying
@@ -24489,7 +24488,7 @@ function getEsbuildDiagnostics() {
24489
24488
 
24490
24489
  try {
24491
24490
  const pkgJsonPath = require.resolve("esbuild/package.json");
24492
- diagnostics.esbuildPackageDir = path$e.dirname(pkgJsonPath);
24491
+ diagnostics.esbuildPackageDir = path$d.dirname(pkgJsonPath);
24493
24492
  diagnostics.esbuildVersion = commonjsRequire(pkgJsonPath).version;
24494
24493
  } catch (err) {
24495
24494
  diagnostics.esbuildResolveError = err.message;
@@ -24499,13 +24498,13 @@ function getEsbuildDiagnostics() {
24499
24498
  const archPkgJson = require.resolve(
24500
24499
  `${diagnostics.archPackage}/package.json`,
24501
24500
  );
24502
- const archDir = path$e.dirname(archPkgJson);
24501
+ const archDir = path$d.dirname(archPkgJson);
24503
24502
  // esbuild's native binary on macOS/Linux is bin/esbuild;
24504
24503
  // on Windows it's esbuild.exe at the package root.
24505
24504
  const candidate =
24506
24505
  process.platform === "win32"
24507
- ? path$e.join(archDir, "esbuild.exe")
24508
- : path$e.join(archDir, "bin", "esbuild");
24506
+ ? path$d.join(archDir, "esbuild.exe")
24507
+ : path$d.join(archDir, "bin", "esbuild");
24509
24508
  diagnostics.nativeBinaryPath = candidate;
24510
24509
  diagnostics.nativeBinaryExists = fs$a.existsSync(candidate);
24511
24510
  } catch (err) {
@@ -24553,19 +24552,19 @@ async function healthCheck() {
24553
24552
  * @returns {string|null} Path to the widgets/ directory, or null
24554
24553
  */
24555
24554
  function findWidgetsDir$2(widgetPath) {
24556
- const direct = path$e.join(widgetPath, "widgets");
24555
+ const direct = path$d.join(widgetPath, "widgets");
24557
24556
  if (fs$a.existsSync(direct)) {
24558
24557
  return direct;
24559
24558
  }
24560
24559
 
24561
24560
  // Check configs/widgets/ (packageZip.js nests .dash.js files here)
24562
- const configsWidgets = path$e.join(widgetPath, "configs", "widgets");
24561
+ const configsWidgets = path$d.join(widgetPath, "configs", "widgets");
24563
24562
  if (fs$a.existsSync(configsWidgets)) {
24564
24563
  return configsWidgets;
24565
24564
  }
24566
24565
 
24567
24566
  // Check configs/ directory (used by packageZip.js for distributed widgets)
24568
- const configs = path$e.join(widgetPath, "configs");
24567
+ const configs = path$d.join(widgetPath, "configs");
24569
24568
  if (fs$a.existsSync(configs)) {
24570
24569
  return configs;
24571
24570
  }
@@ -24582,7 +24581,7 @@ function findWidgetsDir$2(widgetPath) {
24582
24581
  );
24583
24582
 
24584
24583
  for (const subdir of subdirs) {
24585
- const nested = path$e.join(widgetPath, subdir.name, "widgets");
24584
+ const nested = path$d.join(widgetPath, subdir.name, "widgets");
24586
24585
  if (fs$a.existsSync(nested)) {
24587
24586
  console.log(`[WidgetCompiler] Found nested widgets/ at ${nested}`);
24588
24587
  return nested;
@@ -24631,14 +24630,14 @@ async function compileWidget$1(widgetPath) {
24631
24630
  // Compute relative path from the entry file (in widgetPath) to widgetsDir,
24632
24631
  // since widgetsDir may be nested (e.g., ./weather-widget/widgets/).
24633
24632
  const relWidgetsDir =
24634
- "./" + path$e.relative(widgetPath, widgetsDir).split(path$e.sep).join("/");
24633
+ "./" + path$d.relative(widgetPath, widgetsDir).split(path$d.sep).join("/");
24635
24634
  const imports = [];
24636
24635
  const exportParts = [];
24637
24636
 
24638
24637
  for (const dashFile of dashFiles) {
24639
24638
  const componentName = dashFile.replace(".dash.js", "");
24640
24639
  const componentFile = `${componentName}.js`;
24641
- const componentFilePath = path$e.join(widgetsDir, componentFile);
24640
+ const componentFilePath = path$d.join(widgetsDir, componentFile);
24642
24641
  const hasComponent = fs$a.existsSync(componentFilePath);
24643
24642
 
24644
24643
  // Import the config (always)
@@ -24671,9 +24670,9 @@ async function compileWidget$1(widgetPath) {
24671
24670
  const entryContent = [...imports, "", ...exportParts, ""].join("\n");
24672
24671
 
24673
24672
  // Write temporary entry file in the widget root
24674
- const entryPath = path$e.join(widgetPath, "__compile_entry.js");
24675
- const distDir = path$e.join(widgetPath, "dist");
24676
- const outPath = path$e.join(distDir, "index.cjs.js");
24673
+ const entryPath = path$d.join(widgetPath, "__compile_entry.js");
24674
+ const distDir = path$d.join(widgetPath, "dist");
24675
+ const outPath = path$d.join(distDir, "index.cjs.js");
24677
24676
 
24678
24677
  try {
24679
24678
  // Ensure dist/ directory exists
@@ -24771,7 +24770,7 @@ var widgetCompiler$1 = {
24771
24770
  */
24772
24771
 
24773
24772
  const fs$9 = require$$0$2;
24774
- const path$d = require$$1$1;
24773
+ const path$c = require$$1$1;
24775
24774
  const vm = require$$2$2;
24776
24775
  const { findWidgetsDir: findWidgetsDir$1 } = widgetCompiler$1;
24777
24776
 
@@ -24859,9 +24858,9 @@ class DynamicWidgetLoader {
24859
24858
  );
24860
24859
 
24861
24860
  const widgetsDir =
24862
- findWidgetsDir$1(widgetPath) || path$d.join(widgetPath, "widgets");
24863
- const componentPath = path$d.join(widgetsDir, `${componentName}.js`);
24864
- const configPath = path$d.join(widgetsDir, `${componentName}.dash.js`);
24861
+ findWidgetsDir$1(widgetPath) || path$c.join(widgetPath, "widgets");
24862
+ const componentPath = path$c.join(widgetsDir, `${componentName}.js`);
24863
+ const configPath = path$c.join(widgetsDir, `${componentName}.dash.js`);
24865
24864
 
24866
24865
  if (!fs$9.existsSync(componentPath)) {
24867
24866
  throw new Error(`Component file not found: ${componentPath}`);
@@ -25062,9 +25061,9 @@ var dynamicWidgetLoaderExports = dynamicWidgetLoader$3.exports;
25062
25061
  */
25063
25062
 
25064
25063
  const fs$8 = require$$0$2;
25065
- const path$c = require$$1$1;
25064
+ const path$b = require$$1$1;
25066
25065
  const os$1 = require$$2$1;
25067
- const { app: app$7 } = require$$0$1;
25066
+ const { app: app$6 } = require$$0$1;
25068
25067
 
25069
25068
  // Cache: widgetId → permissions | null. Populated lazily on first
25070
25069
  // lookup; invalidated when a widget is installed/uninstalled (the
@@ -25079,7 +25078,7 @@ function expandHome(p) {
25079
25078
  if (typeof p !== "string" || !p) return p;
25080
25079
  if (p === "~") return os$1.homedir();
25081
25080
  if (p.startsWith("~/") || p.startsWith("~\\")) {
25082
- return path$c.join(os$1.homedir(), p.slice(2));
25081
+ return path$b.join(os$1.homedir(), p.slice(2));
25083
25082
  }
25084
25083
  return p;
25085
25084
  }
@@ -25119,10 +25118,10 @@ function parseManifestPermissions(packageJson) {
25119
25118
  */
25120
25119
  function resolveWidgetPackagePath(widgetId) {
25121
25120
  if (typeof widgetId !== "string" || !widgetId) return null;
25122
- const widgetsRoot = path$c.join(app$7.getPath("userData"), "widgets");
25121
+ const widgetsRoot = path$b.join(app$6.getPath("userData"), "widgets");
25123
25122
  // Split scope from name for "@scope/name" form.
25124
25123
  const parts = widgetId.startsWith("@") ? widgetId.split("/") : [widgetId];
25125
- return path$c.join(widgetsRoot, ...parts, "package.json");
25124
+ return path$b.join(widgetsRoot, ...parts, "package.json");
25126
25125
  }
25127
25126
 
25128
25127
  /**
@@ -25191,7 +25190,7 @@ var widgetPermissions = {
25191
25190
  */
25192
25191
 
25193
25192
  const fs$7 = require$$0$2;
25194
- const path$b = require$$1$1;
25193
+ const path$a = require$$1$1;
25195
25194
 
25196
25195
  const SOURCE_EXTENSIONS = new Set([
25197
25196
  ".js",
@@ -25249,13 +25248,13 @@ function readSourceFiles(dir) {
25249
25248
  return;
25250
25249
  }
25251
25250
  for (const entry of entries) {
25252
- const abs = path$b.join(current, entry.name);
25253
- const rel = relBase ? path$b.join(relBase, entry.name) : entry.name;
25251
+ const abs = path$a.join(current, entry.name);
25252
+ const rel = relBase ? path$a.join(relBase, entry.name) : entry.name;
25254
25253
  if (entry.isDirectory()) {
25255
25254
  if (skipDirs.has(entry.name)) continue;
25256
25255
  walk(abs, rel);
25257
25256
  } else if (entry.isFile()) {
25258
- const ext = path$b.extname(entry.name).toLowerCase();
25257
+ const ext = path$a.extname(entry.name).toLowerCase();
25259
25258
  if (!SOURCE_EXTENSIONS.has(ext)) continue;
25260
25259
  if (result.length >= SCAN_FILE_LIMIT) return;
25261
25260
  try {
@@ -25281,7 +25280,7 @@ function scanForMcpUsage(input) {
25281
25280
  let fileList = [];
25282
25281
  if (input.files && typeof input.files === "object") {
25283
25282
  for (const [relPath, source] of Object.entries(input.files)) {
25284
- const ext = path$b.extname(relPath).toLowerCase();
25283
+ const ext = path$a.extname(relPath).toLowerCase();
25285
25284
  if (!SOURCE_EXTENSIONS.has(ext)) continue;
25286
25285
  if (typeof source !== "string") continue;
25287
25286
  fileList.push({ relPath, source });
@@ -27417,7 +27416,7 @@ var widgetRegistryExports = widgetRegistry$1.exports;
27417
27416
  * - Support two-level browsing: packages (bundles) and widgets within packages
27418
27417
  */
27419
27418
 
27420
- const path$a = require$$1$1;
27419
+ const path$9 = require$$1$1;
27421
27420
  const fs$6 = require$$0$2;
27422
27421
  const os = require$$2$1;
27423
27422
  const { toPackageId } = packageId;
@@ -27454,7 +27453,7 @@ function getCacheKey() {
27454
27453
  * Get the local test registry path for dev mode
27455
27454
  */
27456
27455
  function getTestRegistryPath() {
27457
- return path$a.join(__dirname, "..", "registry", "test-registry-index.json");
27456
+ return path$9.join(__dirname, "..", "registry", "test-registry-index.json");
27458
27457
  }
27459
27458
 
27460
27459
  /**
@@ -27912,7 +27911,7 @@ async function fetchPackageSource(packageName, componentName = null) {
27912
27911
 
27913
27912
  const zip = new AdmZip(buffer);
27914
27913
  const safeName = (pkg.name || "pkg").replace(/[^a-zA-Z0-9-_]/g, "_");
27915
- const tempDir = path$a.join(
27914
+ const tempDir = path$9.join(
27916
27915
  os.tmpdir(),
27917
27916
  `dash-registry-preview-${safeName}-${Date.now()}`,
27918
27917
  );
@@ -27921,7 +27920,7 @@ async function fetchPackageSource(packageName, componentName = null) {
27921
27920
  validateZipEntries(zip, tempDir);
27922
27921
  zip.extractAllTo(tempDir, true);
27923
27922
 
27924
- const widgetsDir = path$a.join(tempDir, "widgets");
27923
+ const widgetsDir = path$9.join(tempDir, "widgets");
27925
27924
  let componentCode = "";
27926
27925
  let configCode = "";
27927
27926
  let widgetName = null;
@@ -27949,7 +27948,7 @@ async function fetchPackageSource(packageName, componentName = null) {
27949
27948
  if (!configFile) configFile = dashFiles[0];
27950
27949
 
27951
27950
  if (configFile) {
27952
- configCode = fs$6.readFileSync(path$a.join(widgetsDir, configFile), "utf8");
27951
+ configCode = fs$6.readFileSync(path$9.join(widgetsDir, configFile), "utf8");
27953
27952
  widgetName = configFile.replace(/\.dash\.js$/, "");
27954
27953
  }
27955
27954
 
@@ -27964,7 +27963,7 @@ async function fetchPackageSource(packageName, componentName = null) {
27964
27963
 
27965
27964
  if (componentFile) {
27966
27965
  componentCode = fs$6.readFileSync(
27967
- path$a.join(widgetsDir, componentFile),
27966
+ path$9.join(widgetsDir, componentFile),
27968
27967
  "utf8",
27969
27968
  );
27970
27969
  if (!widgetName) widgetName = componentFile.replace(/\.js$/, "");
@@ -27972,13 +27971,13 @@ async function fetchPackageSource(packageName, componentName = null) {
27972
27971
  }
27973
27972
 
27974
27973
  let bundleSource = null;
27975
- const bundlePath = path$a.join(tempDir, "dist", "index.cjs.js");
27974
+ const bundlePath = path$9.join(tempDir, "dist", "index.cjs.js");
27976
27975
  if (fs$6.existsSync(bundlePath)) {
27977
27976
  bundleSource = fs$6.readFileSync(bundlePath, "utf8");
27978
27977
  }
27979
27978
 
27980
27979
  let dashMeta = {};
27981
- const dashPath = path$a.join(tempDir, "dash.json");
27980
+ const dashPath = path$9.join(tempDir, "dash.json");
27982
27981
  if (fs$6.existsSync(dashPath)) {
27983
27982
  try {
27984
27983
  dashMeta = JSON.parse(fs$6.readFileSync(dashPath, "utf8"));
@@ -28023,7 +28022,7 @@ var registryController$3 = {
28023
28022
  var fs$5 = require$$0$2;
28024
28023
  var JSONStream = require$$4;
28025
28024
  const algoliasearch$1 = require$$2$3;
28026
- const path$9 = require$$3$3;
28025
+ const path$8 = require$$3$3;
28027
28026
  const { ensureDirectoryExistence, checkDirectory } = file;
28028
28027
 
28029
28028
  let AlgoliaIndex$1 = class AlgoliaIndex {
@@ -28130,7 +28129,7 @@ let AlgoliaIndex$1 = class AlgoliaIndex {
28130
28129
  if (err) reject(err);
28131
28130
  if (files) {
28132
28131
  files.forEach((file) => {
28133
- fs$5.unlinkSync(path$9.join(directoryPath, file));
28132
+ fs$5.unlinkSync(path$8.join(directoryPath, file));
28134
28133
  });
28135
28134
  resolve();
28136
28135
  }
@@ -28153,7 +28152,7 @@ let AlgoliaIndex$1 = class AlgoliaIndex {
28153
28152
  let results = [];
28154
28153
  for (const fileIndex in files) {
28155
28154
  // for each file lets read the file and then push to algolia
28156
- const pathToBatch = path$9.join(batchFilepath, files[fileIndex]);
28155
+ const pathToBatch = path$8.join(batchFilepath, files[fileIndex]);
28157
28156
  const fileContents = await this.readFile(pathToBatch);
28158
28157
  if (fileContents) {
28159
28158
  if ("data" in fileContents && "filepath" in fileContents) {
@@ -28690,8 +28689,8 @@ function upsertMenuItem$1(items, menuItem) {
28690
28689
 
28691
28690
  var upsertMenuItem_1 = { upsertMenuItem: upsertMenuItem$1 };
28692
28691
 
28693
- const { app: app$6 } = require$$0$1;
28694
- const path$8 = require$$1$1;
28692
+ const { app: app$5 } = require$$0$1;
28693
+ const path$7 = require$$1$1;
28695
28694
  const { writeFileSync } = require$$0$2;
28696
28695
  const { getFileContents: getFileContents$2 } = file;
28697
28696
  const { upsertMenuItem } = upsertMenuItem_1;
@@ -28702,8 +28701,8 @@ const appName$2 = "Dashboard";
28702
28701
  const menuItemsController$1 = {
28703
28702
  saveMenuItemForApplication: (win, appId, menuItem) => {
28704
28703
  try {
28705
- const filename = path$8.join(
28706
- app$6.getPath("userData"),
28704
+ const filename = path$7.join(
28705
+ app$5.getPath("userData"),
28707
28706
  appName$2,
28708
28707
  appId,
28709
28708
  configFilename$1,
@@ -28721,8 +28720,8 @@ const menuItemsController$1 = {
28721
28720
 
28722
28721
  listMenuItemsForApplication: (win, appId) => {
28723
28722
  try {
28724
- const filename = path$8.join(
28725
- app$6.getPath("userData"),
28723
+ const filename = path$7.join(
28724
+ app$5.getPath("userData"),
28726
28725
  appName$2,
28727
28726
  appId,
28728
28727
  configFilename$1,
@@ -28747,25 +28746,6 @@ const menuItemsController$1 = {
28747
28746
 
28748
28747
  var menuItemsController_1 = menuItemsController$1;
28749
28748
 
28750
- const path$7 = require$$1$1;
28751
- const { app: app$5 } = require$$0$1;
28752
-
28753
- const pluginController$1 = {
28754
- install: (win, packageName, filepath) => {
28755
- try {
28756
- const rootPath = path$7.join(
28757
- app$5.getPath("userData"),
28758
- "plugins",
28759
- packageName,
28760
- );
28761
- } catch (e) {
28762
- win.webContents.send("plugin-install-error", { error: e.message });
28763
- }
28764
- },
28765
- };
28766
-
28767
- var pluginController_1 = pluginController$1;
28768
-
28769
28749
  var mcp = {};
28770
28750
 
28771
28751
  var server$1 = {};
@@ -62743,7 +62723,6 @@ const {
62743
62723
  saveMenuItemForApplication,
62744
62724
  listMenuItemsForApplication,
62745
62725
  } = menuItemsController_1;
62746
- const { install: pluginInstall } = pluginController_1;
62747
62726
  const {
62748
62727
  exportDashboardConfig,
62749
62728
  selectDashboardFile,
@@ -62845,7 +62824,6 @@ var controller = {
62845
62824
  describeImage,
62846
62825
  saveMenuItemForApplication,
62847
62826
  listMenuItemsForApplication,
62848
- pluginInstall,
62849
62827
  searchIndex,
62850
62828
  exportDashboardConfig,
62851
62829
  selectDashboardFile,
@@ -62897,7 +62875,7 @@ var controller = {
62897
62875
  mcpDashServerController: mcpDashServerController$2,
62898
62876
  };
62899
62877
 
62900
- const { ipcRenderer: ipcRenderer$p } = require$$0$1;
62878
+ const { ipcRenderer: ipcRenderer$o } = require$$0$1;
62901
62879
  const { SECURE_STORE_ENCRYPTION_CHECK } = events$8;
62902
62880
  /**
62903
62881
  * secureStoreApi
@@ -62919,7 +62897,7 @@ const { SECURE_STORE_ENCRYPTION_CHECK } = events$8;
62919
62897
  */
62920
62898
  const secureStoreApi$2 = {
62921
62899
  isEncryptionAvailable: () =>
62922
- ipcRenderer$p.invoke(SECURE_STORE_ENCRYPTION_CHECK, {}),
62900
+ ipcRenderer$o.invoke(SECURE_STORE_ENCRYPTION_CHECK, {}),
62923
62901
  };
62924
62902
 
62925
62903
  var secureStoreApi_1 = secureStoreApi$2;
@@ -62930,7 +62908,7 @@ var secureStoreApi_1 = secureStoreApi$2;
62930
62908
  * Handle the workspace configuration file
62931
62909
  */
62932
62910
 
62933
- const { ipcRenderer: ipcRenderer$o } = require$$0$1;
62911
+ const { ipcRenderer: ipcRenderer$n } = require$$0$1;
62934
62912
  const {
62935
62913
  WORKSPACE_LIST,
62936
62914
  WORKSPACE_SAVE,
@@ -62947,7 +62925,7 @@ const workspaceApi$2 = {
62947
62925
  */
62948
62926
  listWorkspacesForApplication: (appId) => {
62949
62927
  console.log("listWorkspacesForApplication called with appId:", appId);
62950
- return ipcRenderer$o.invoke(WORKSPACE_LIST, { appId });
62928
+ return ipcRenderer$n.invoke(WORKSPACE_LIST, { appId });
62951
62929
  },
62952
62930
 
62953
62931
  /**
@@ -62958,7 +62936,7 @@ const workspaceApi$2 = {
62958
62936
  * @returns
62959
62937
  */
62960
62938
  saveWorkspaceForApplication: (appId, data) =>
62961
- ipcRenderer$o.invoke(WORKSPACE_SAVE, { appId, data }),
62939
+ ipcRenderer$n.invoke(WORKSPACE_SAVE, { appId, data }),
62962
62940
 
62963
62941
  /**
62964
62942
  * deleteWorkspaceForApplication
@@ -62968,7 +62946,7 @@ const workspaceApi$2 = {
62968
62946
  * @returns
62969
62947
  */
62970
62948
  deleteWorkspaceForApplication: (appId, workspaceId) =>
62971
- ipcRenderer$o.invoke(WORKSPACE_DELETE, { appId, workspaceId }),
62949
+ ipcRenderer$n.invoke(WORKSPACE_DELETE, { appId, workspaceId }),
62972
62950
  };
62973
62951
 
62974
62952
  var workspaceApi_1 = workspaceApi$2;
@@ -62980,13 +62958,13 @@ var workspaceApi_1 = workspaceApi$2;
62980
62958
  */
62981
62959
 
62982
62960
  // ipcRenderer that must be used to invoke the events
62983
- const { ipcRenderer: ipcRenderer$n } = require$$0$1;
62961
+ const { ipcRenderer: ipcRenderer$m } = require$$0$1;
62984
62962
 
62985
62963
  const { LAYOUT_LIST } = events$8;
62986
62964
 
62987
62965
  const layoutApi$2 = {
62988
62966
  listLayoutsForApplication: (appId) =>
62989
- ipcRenderer$n.invoke(LAYOUT_LIST, { appId }),
62967
+ ipcRenderer$m.invoke(LAYOUT_LIST, { appId }),
62990
62968
  };
62991
62969
 
62992
62970
  var layoutApi_1 = layoutApi$2;
@@ -62998,7 +62976,7 @@ var layoutApi_1 = layoutApi$2;
62998
62976
  */
62999
62977
 
63000
62978
  // ipcRenderer that must be used to invoke the events
63001
- const { ipcRenderer: ipcRenderer$m } = require$$0$1;
62979
+ const { ipcRenderer: ipcRenderer$l } = require$$0$1;
63002
62980
 
63003
62981
  const {
63004
62982
  DATA_JSON_TO_CSV_FILE,
@@ -63016,7 +62994,7 @@ const {
63016
62994
  const dataApi$2 = {
63017
62995
  // convert a json array of objects to a csv string and save to file
63018
62996
  convertJsonToCsvFile: (appId, jsonObject, filename) =>
63019
- ipcRenderer$m.invoke(DATA_JSON_TO_CSV_FILE, {
62997
+ ipcRenderer$l.invoke(DATA_JSON_TO_CSV_FILE, {
63020
62998
  appId,
63021
62999
  jsonObject,
63022
63000
  filename,
@@ -63024,10 +63002,10 @@ const dataApi$2 = {
63024
63002
 
63025
63003
  // convert a json array of objects to a csv string and return a string
63026
63004
  convertJsonToCsvString: (appId, jsonObject) =>
63027
- ipcRenderer$m.invoke(DATA_JSON_TO_CSV_STRING, { appId, jsonObject }),
63005
+ ipcRenderer$l.invoke(DATA_JSON_TO_CSV_STRING, { appId, jsonObject }),
63028
63006
 
63029
63007
  parseXMLStream: (filepath, outpath, start) =>
63030
- ipcRenderer$m.invoke(PARSE_XML_STREAM, {
63008
+ ipcRenderer$l.invoke(PARSE_XML_STREAM, {
63031
63009
  filepath,
63032
63010
  outpath,
63033
63011
  start,
@@ -63041,7 +63019,7 @@ const dataApi$2 = {
63041
63019
  headers = null,
63042
63020
  limit = null,
63043
63021
  ) => {
63044
- ipcRenderer$m.invoke(PARSE_CSV_STREAM, {
63022
+ ipcRenderer$l.invoke(PARSE_CSV_STREAM, {
63045
63023
  filepath,
63046
63024
  outpath,
63047
63025
  delimiter,
@@ -63052,15 +63030,15 @@ const dataApi$2 = {
63052
63030
  },
63053
63031
 
63054
63032
  readLinesFromFile: (filepath, lineCount) => {
63055
- ipcRenderer$m.invoke(READ_LINES, { filepath, lineCount });
63033
+ ipcRenderer$l.invoke(READ_LINES, { filepath, lineCount });
63056
63034
  },
63057
63035
 
63058
63036
  readJSONFromFile: (filepath, objectCount = null) => {
63059
- ipcRenderer$m.invoke(READ_JSON, { filepath, objectCount });
63037
+ ipcRenderer$l.invoke(READ_JSON, { filepath, objectCount });
63060
63038
  },
63061
63039
 
63062
63040
  readDataFromURL: (url, toFilepath, widgetId = null) => {
63063
- ipcRenderer$m.invoke(READ_DATA_URL, { url, toFilepath, widgetId });
63041
+ ipcRenderer$l.invoke(READ_DATA_URL, { url, toFilepath, widgetId });
63064
63042
  },
63065
63043
 
63066
63044
  /*
@@ -63069,7 +63047,7 @@ const dataApi$2 = {
63069
63047
  * @param {object} returnEmpty the return empty object
63070
63048
  */
63071
63049
  saveData: (data, filename, append, returnEmpty, widgetId = null) =>
63072
- ipcRenderer$m.invoke(DATA_SAVE_TO_FILE, {
63050
+ ipcRenderer$l.invoke(DATA_SAVE_TO_FILE, {
63073
63051
  data,
63074
63052
  filename,
63075
63053
  append,
@@ -63087,7 +63065,7 @@ const dataApi$2 = {
63087
63065
  * gates the gate itself).
63088
63066
  */
63089
63067
  readData: (filename, returnEmpty = [], widgetId = null) =>
63090
- ipcRenderer$m.invoke(DATA_READ_FROM_FILE, {
63068
+ ipcRenderer$l.invoke(DATA_READ_FROM_FILE, {
63091
63069
  filename,
63092
63070
  returnEmpty,
63093
63071
  widgetId,
@@ -63098,7 +63076,7 @@ const dataApi$2 = {
63098
63076
  * @returns
63099
63077
  */
63100
63078
  transformFile: (filepath, outFilepath, mappingFunctionBody, args) => {
63101
- ipcRenderer$m.invoke(TRANSFORM_FILE, {
63079
+ ipcRenderer$l.invoke(TRANSFORM_FILE, {
63102
63080
  filepath,
63103
63081
  outFilepath,
63104
63082
  mappingFunctionBody,
@@ -63116,7 +63094,7 @@ var dataApi_1 = dataApi$2;
63116
63094
  */
63117
63095
 
63118
63096
  // ipcRenderer that must be used to invoke the events
63119
- const { ipcRenderer: ipcRenderer$l } = require$$0$1;
63097
+ const { ipcRenderer: ipcRenderer$k } = require$$0$1;
63120
63098
 
63121
63099
  const {
63122
63100
  SETTINGS_GET,
@@ -63127,14 +63105,14 @@ const {
63127
63105
  } = events$8;
63128
63106
 
63129
63107
  const settingsApi$2 = {
63130
- getSettingsForApplication: () => ipcRenderer$l.invoke(SETTINGS_GET, {}),
63108
+ getSettingsForApplication: () => ipcRenderer$k.invoke(SETTINGS_GET, {}),
63131
63109
  saveSettingsForApplication: (data) =>
63132
- ipcRenderer$l.invoke(SETTINGS_SAVE, { data }),
63133
- getDataDirectory: () => ipcRenderer$l.invoke(SETTINGS_GET_DATA_DIR, {}),
63110
+ ipcRenderer$k.invoke(SETTINGS_SAVE, { data }),
63111
+ getDataDirectory: () => ipcRenderer$k.invoke(SETTINGS_GET_DATA_DIR, {}),
63134
63112
  setDataDirectory: (dataDirectory) =>
63135
- ipcRenderer$l.invoke(SETTINGS_SET_DATA_DIR, { dataDirectory }),
63113
+ ipcRenderer$k.invoke(SETTINGS_SET_DATA_DIR, { dataDirectory }),
63136
63114
  migrateDataDirectory: (oldDirectory, newDirectory) =>
63137
- ipcRenderer$l.invoke(SETTINGS_MIGRATE_DATA_DIR, {
63115
+ ipcRenderer$k.invoke(SETTINGS_MIGRATE_DATA_DIR, {
63138
63116
  oldDirectory,
63139
63117
  newDirectory,
63140
63118
  }),
@@ -63149,7 +63127,7 @@ var settingsApi_1 = settingsApi$2;
63149
63127
  * Provides file/folder chooser dialogs.
63150
63128
  */
63151
63129
 
63152
- const { ipcRenderer: ipcRenderer$k } = require$$0$1;
63130
+ const { ipcRenderer: ipcRenderer$j } = require$$0$1;
63153
63131
 
63154
63132
  const { CHOOSE_FILE } = events$8;
63155
63133
 
@@ -63162,7 +63140,7 @@ const dialogApi$2 = {
63162
63140
  * @returns {Promise<string|null>} selected file/folder path, or null if cancelled
63163
63141
  */
63164
63142
  chooseFile: (allowFile = true, extensions = ["*"]) => {
63165
- return ipcRenderer$k.invoke(CHOOSE_FILE, { allowFile, extensions });
63143
+ return ipcRenderer$j.invoke(CHOOSE_FILE, { allowFile, extensions });
63166
63144
  },
63167
63145
 
63168
63146
  /**
@@ -63187,7 +63165,7 @@ const dialogApi$2 = {
63187
63165
  typeof options.allowFile === "boolean" ? options.allowFile : allowFile;
63188
63166
  const resolvedExtensions = options.extensions || extensions;
63189
63167
 
63190
- const filePath = await ipcRenderer$k.invoke(CHOOSE_FILE, {
63168
+ const filePath = await ipcRenderer$j.invoke(CHOOSE_FILE, {
63191
63169
  allowFile: resolvedAllowFile,
63192
63170
  extensions: resolvedExtensions,
63193
63171
  });
@@ -63214,7 +63192,7 @@ var dialogApi_1 = dialogApi$2;
63214
63192
  * mainApi.widgets.uninstall('Weather')
63215
63193
  */
63216
63194
 
63217
- const { ipcRenderer: ipcRenderer$j } = require$$0$1;
63195
+ const { ipcRenderer: ipcRenderer$i } = require$$0$1;
63218
63196
 
63219
63197
  const widgetApi$2 = {
63220
63198
  /**
@@ -63223,7 +63201,7 @@ const widgetApi$2 = {
63223
63201
  */
63224
63202
  list: async () => {
63225
63203
  try {
63226
- return await ipcRenderer$j.invoke("widget:list");
63204
+ return await ipcRenderer$i.invoke("widget:list");
63227
63205
  } catch (error) {
63228
63206
  console.error("[WidgetApi] Error listing widgets:", error);
63229
63207
  throw error;
@@ -63237,7 +63215,7 @@ const widgetApi$2 = {
63237
63215
  */
63238
63216
  get: async (widgetName) => {
63239
63217
  try {
63240
- return await ipcRenderer$j.invoke("widget:get", widgetName);
63218
+ return await ipcRenderer$i.invoke("widget:get", widgetName);
63241
63219
  } catch (error) {
63242
63220
  console.error(`[WidgetApi] Error getting widget ${widgetName}:`, error);
63243
63221
  throw error;
@@ -63268,7 +63246,7 @@ const widgetApi$2 = {
63268
63246
  console.log(
63269
63247
  `[WidgetApi] Installing widget: ${widgetName} from ${downloadUrl}`,
63270
63248
  );
63271
- const config = await ipcRenderer$j.invoke(
63249
+ const config = await ipcRenderer$i.invoke(
63272
63250
  "widget:install",
63273
63251
  widgetName,
63274
63252
  downloadUrl,
@@ -63308,7 +63286,7 @@ const widgetApi$2 = {
63308
63286
  console.log(
63309
63287
  `[WidgetApi] Installing local widget: ${widgetName} from ${localPath}`,
63310
63288
  );
63311
- const config = await ipcRenderer$j.invoke(
63289
+ const config = await ipcRenderer$i.invoke(
63312
63290
  "widget:install-local",
63313
63291
  widgetName,
63314
63292
  localPath,
@@ -63339,7 +63317,7 @@ const widgetApi$2 = {
63339
63317
  loadFolder: async (folderPath) => {
63340
63318
  try {
63341
63319
  console.log(`[WidgetApi] Loading widgets from folder: ${folderPath}`);
63342
- const results = await ipcRenderer$j.invoke(
63320
+ const results = await ipcRenderer$i.invoke(
63343
63321
  "widget:load-folder",
63344
63322
  folderPath,
63345
63323
  );
@@ -63363,7 +63341,7 @@ const widgetApi$2 = {
63363
63341
  uninstall: async (widgetName) => {
63364
63342
  try {
63365
63343
  console.log(`[WidgetApi] Uninstalling widget: ${widgetName}`);
63366
- const success = await ipcRenderer$j.invoke("widget:uninstall", widgetName);
63344
+ const success = await ipcRenderer$i.invoke("widget:uninstall", widgetName);
63367
63345
  if (success) {
63368
63346
  console.log(`[WidgetApi] ✓ Widget ${widgetName} uninstalled`);
63369
63347
  } else {
@@ -63386,7 +63364,7 @@ const widgetApi$2 = {
63386
63364
  */
63387
63365
  getCachePath: async () => {
63388
63366
  try {
63389
- return await ipcRenderer$j.invoke("widget:cache-path");
63367
+ return await ipcRenderer$i.invoke("widget:cache-path");
63390
63368
  } catch (error) {
63391
63369
  console.error("[WidgetApi] Error getting cache path:", error);
63392
63370
  throw error;
@@ -63400,7 +63378,7 @@ const widgetApi$2 = {
63400
63378
  */
63401
63379
  getStoragePath: async () => {
63402
63380
  try {
63403
- return await ipcRenderer$j.invoke("widget:storage-path");
63381
+ return await ipcRenderer$i.invoke("widget:storage-path");
63404
63382
  } catch (error) {
63405
63383
  console.error("[WidgetApi] Error getting storage path:", error);
63406
63384
  throw error;
@@ -63417,7 +63395,7 @@ const widgetApi$2 = {
63417
63395
  setStoragePath: async (customPath) => {
63418
63396
  try {
63419
63397
  console.log(`[WidgetApi] Setting storage path to: ${customPath}`);
63420
- const result = await ipcRenderer$j.invoke(
63398
+ const result = await ipcRenderer$i.invoke(
63421
63399
  "widget:set-storage-path",
63422
63400
  customPath,
63423
63401
  );
@@ -63439,7 +63417,7 @@ const widgetApi$2 = {
63439
63417
  */
63440
63418
  getComponentConfigs: async () => {
63441
63419
  try {
63442
- return await ipcRenderer$j.invoke("widget:get-component-configs");
63420
+ return await ipcRenderer$i.invoke("widget:get-component-configs");
63443
63421
  } catch (error) {
63444
63422
  console.error("[WidgetApi] Error getting component configs:", error);
63445
63423
  return [];
@@ -63454,7 +63432,7 @@ const widgetApi$2 = {
63454
63432
  */
63455
63433
  readBundle: async (widgetName) => {
63456
63434
  try {
63457
- return await ipcRenderer$j.invoke("widget:read-bundle", widgetName);
63435
+ return await ipcRenderer$i.invoke("widget:read-bundle", widgetName);
63458
63436
  } catch (error) {
63459
63437
  console.error(
63460
63438
  `[WidgetApi] Error reading bundle for ${widgetName}:`,
@@ -63473,7 +63451,7 @@ const widgetApi$2 = {
63473
63451
  */
63474
63452
  readSources: async (widgetName, componentName) => {
63475
63453
  try {
63476
- return await ipcRenderer$j.invoke("widget:read-sources", {
63454
+ return await ipcRenderer$i.invoke("widget:read-sources", {
63477
63455
  widgetName,
63478
63456
  componentName,
63479
63457
  });
@@ -63493,7 +63471,7 @@ const widgetApi$2 = {
63493
63471
  */
63494
63472
  readAllBundles: async () => {
63495
63473
  try {
63496
- return await ipcRenderer$j.invoke("widget:read-all-bundles");
63474
+ return await ipcRenderer$i.invoke("widget:read-all-bundles");
63497
63475
  } catch (error) {
63498
63476
  console.error("[WidgetApi] Error reading all bundles:", error);
63499
63477
  return [];
@@ -63513,7 +63491,7 @@ const widgetApi$2 = {
63513
63491
  * });
63514
63492
  */
63515
63493
  onInstalled: (callback) => {
63516
- ipcRenderer$j.on("widget:installed", (event, data) => {
63494
+ ipcRenderer$i.on("widget:installed", (event, data) => {
63517
63495
  callback(data);
63518
63496
  });
63519
63497
  },
@@ -63530,7 +63508,7 @@ const widgetApi$2 = {
63530
63508
  * });
63531
63509
  */
63532
63510
  onUninstalled: (callback) => {
63533
- ipcRenderer$j.on("widget:uninstalled", (event, data) => {
63511
+ ipcRenderer$i.on("widget:uninstalled", (event, data) => {
63534
63512
  callback(data);
63535
63513
  });
63536
63514
  },
@@ -63548,7 +63526,7 @@ const widgetApi$2 = {
63548
63526
  * });
63549
63527
  */
63550
63528
  onLoaded: (callback) => {
63551
- ipcRenderer$j.on("widgets:loaded", (event, data) => {
63529
+ ipcRenderer$i.on("widgets:loaded", (event, data) => {
63552
63530
  callback(data);
63553
63531
  });
63554
63532
  },
@@ -63559,7 +63537,7 @@ const widgetApi$2 = {
63559
63537
  * @param {Function} callback - The callback to remove
63560
63538
  */
63561
63539
  removeInstalledListener: (callback) => {
63562
- ipcRenderer$j.removeListener("widget:installed", callback);
63540
+ ipcRenderer$i.removeListener("widget:installed", callback);
63563
63541
  },
63564
63542
 
63565
63543
  /**
@@ -63568,7 +63546,7 @@ const widgetApi$2 = {
63568
63546
  * @param {Function} callback - The callback to remove
63569
63547
  */
63570
63548
  removeUninstalledListener: (callback) => {
63571
- ipcRenderer$j.removeListener("widget:uninstalled", callback);
63549
+ ipcRenderer$i.removeListener("widget:uninstalled", callback);
63572
63550
  },
63573
63551
 
63574
63552
  /**
@@ -63577,7 +63555,7 @@ const widgetApi$2 = {
63577
63555
  * @param {Function} callback - The callback to remove
63578
63556
  */
63579
63557
  removeLoadedListener: (callback) => {
63580
- ipcRenderer$j.removeListener("widgets:loaded", callback);
63558
+ ipcRenderer$i.removeListener("widgets:loaded", callback);
63581
63559
  },
63582
63560
  };
63583
63561
 
@@ -63590,7 +63568,7 @@ var widgetApi_1 = widgetApi$2;
63590
63568
  * Communicates with main process via IPC to handle encryption and file storage
63591
63569
  */
63592
63570
 
63593
- const { ipcRenderer: ipcRenderer$i } = require$$0$1;
63571
+ const { ipcRenderer: ipcRenderer$h } = require$$0$1;
63594
63572
  const {
63595
63573
  PROVIDER_SAVE,
63596
63574
  PROVIDER_LIST,
@@ -63628,7 +63606,7 @@ const providerApi$2 = {
63628
63606
  // value, preserve what's on disk" from "caller explicitly unset it".
63629
63607
  isDefaultForType = undefined,
63630
63608
  ) =>
63631
- ipcRenderer$i.invoke(PROVIDER_SAVE, {
63609
+ ipcRenderer$h.invoke(PROVIDER_SAVE, {
63632
63610
  appId,
63633
63611
  providerName,
63634
63612
  providerType,
@@ -63648,7 +63626,7 @@ const providerApi$2 = {
63648
63626
  * @param {String} appId - the appId specified in the dash initialization
63649
63627
  * @returns {Promise<Array>} Array of provider objects with name, type, credentials
63650
63628
  */
63651
- listProviders: (appId) => ipcRenderer$i.invoke(PROVIDER_LIST, { appId }),
63629
+ listProviders: (appId) => ipcRenderer$h.invoke(PROVIDER_LIST, { appId }),
63652
63630
 
63653
63631
  /**
63654
63632
  * getProvider
@@ -63660,7 +63638,7 @@ const providerApi$2 = {
63660
63638
  * @returns {Promise<Object>} Provider object with name, type, credentials
63661
63639
  */
63662
63640
  getProvider: (appId, providerName) =>
63663
- ipcRenderer$i.invoke(PROVIDER_GET, { appId, providerName }),
63641
+ ipcRenderer$h.invoke(PROVIDER_GET, { appId, providerName }),
63664
63642
 
63665
63643
  /**
63666
63644
  * deleteProvider
@@ -63672,7 +63650,7 @@ const providerApi$2 = {
63672
63650
  * @returns {Promise}
63673
63651
  */
63674
63652
  deleteProvider: (appId, providerName) =>
63675
- ipcRenderer$i.invoke(PROVIDER_DELETE, { appId, providerName }),
63653
+ ipcRenderer$h.invoke(PROVIDER_DELETE, { appId, providerName }),
63676
63654
 
63677
63655
  /**
63678
63656
  * listProvidersForApplication
@@ -63682,14 +63660,14 @@ const providerApi$2 = {
63682
63660
  * @param {String} appId - the appId specified in the dash initialization
63683
63661
  */
63684
63662
  listProvidersForApplication: (appId) => {
63685
- ipcRenderer$i
63663
+ ipcRenderer$h
63686
63664
  .invoke(PROVIDER_LIST, { appId })
63687
63665
  .then((result) => {
63688
63666
  // Emit the event for ElectronDashboardApi to listen to
63689
- ipcRenderer$i.send("PROVIDER_LIST_COMPLETE", result);
63667
+ ipcRenderer$h.send("PROVIDER_LIST_COMPLETE", result);
63690
63668
  })
63691
63669
  .catch((error) => {
63692
- ipcRenderer$i.send("PROVIDER_LIST_ERROR", {
63670
+ ipcRenderer$h.send("PROVIDER_LIST_ERROR", {
63693
63671
  error: error.message,
63694
63672
  });
63695
63673
  });
@@ -63706,7 +63684,7 @@ const providerApi$2 = {
63706
63684
  providerType,
63707
63685
  credentials,
63708
63686
  ) => {
63709
- ipcRenderer$i
63687
+ ipcRenderer$h
63710
63688
  .invoke(PROVIDER_SAVE, {
63711
63689
  appId,
63712
63690
  providerName,
@@ -63714,10 +63692,10 @@ const providerApi$2 = {
63714
63692
  credentials,
63715
63693
  })
63716
63694
  .then((result) => {
63717
- ipcRenderer$i.send("PROVIDER_SAVE_COMPLETE", result);
63695
+ ipcRenderer$h.send("PROVIDER_SAVE_COMPLETE", result);
63718
63696
  })
63719
63697
  .catch((error) => {
63720
- ipcRenderer$i.send("PROVIDER_SAVE_ERROR", {
63698
+ ipcRenderer$h.send("PROVIDER_SAVE_ERROR", {
63721
63699
  error: error.message,
63722
63700
  });
63723
63701
  });
@@ -63729,13 +63707,13 @@ const providerApi$2 = {
63729
63707
  * Event-listener-based version for use with ElectronDashboardApi
63730
63708
  */
63731
63709
  getProviderForApplication: (appId, providerName) => {
63732
- ipcRenderer$i
63710
+ ipcRenderer$h
63733
63711
  .invoke(PROVIDER_GET, { appId, providerName })
63734
63712
  .then((result) => {
63735
- ipcRenderer$i.send("PROVIDER_GET_COMPLETE", result);
63713
+ ipcRenderer$h.send("PROVIDER_GET_COMPLETE", result);
63736
63714
  })
63737
63715
  .catch((error) => {
63738
- ipcRenderer$i.send("PROVIDER_GET_ERROR", {
63716
+ ipcRenderer$h.send("PROVIDER_GET_ERROR", {
63739
63717
  error: error.message,
63740
63718
  });
63741
63719
  });
@@ -63747,13 +63725,13 @@ const providerApi$2 = {
63747
63725
  * Event-listener-based version for use with ElectronDashboardApi
63748
63726
  */
63749
63727
  deleteProviderForApplication: (appId, providerName) => {
63750
- ipcRenderer$i
63728
+ ipcRenderer$h
63751
63729
  .invoke(PROVIDER_DELETE, { appId, providerName })
63752
63730
  .then((result) => {
63753
- ipcRenderer$i.send("PROVIDER_DELETE_COMPLETE", result);
63731
+ ipcRenderer$h.send("PROVIDER_DELETE_COMPLETE", result);
63754
63732
  })
63755
63733
  .catch((error) => {
63756
- ipcRenderer$i.send("PROVIDER_DELETE_ERROR", {
63734
+ ipcRenderer$h.send("PROVIDER_DELETE_ERROR", {
63757
63735
  error: error.message,
63758
63736
  });
63759
63737
  });
@@ -63769,7 +63747,7 @@ var providerApi_1 = providerApi$2;
63769
63747
  * Communicates with main process via IPC to manage MCP server lifecycle.
63770
63748
  */
63771
63749
 
63772
- const { ipcRenderer: ipcRenderer$h } = require$$0$1;
63750
+ const { ipcRenderer: ipcRenderer$g } = require$$0$1;
63773
63751
  const {
63774
63752
  MCP_START_SERVER,
63775
63753
  MCP_STOP_SERVER,
@@ -63808,7 +63786,7 @@ const mcpApi$2 = {
63808
63786
  workspaceId = null,
63809
63787
  pathScope = null,
63810
63788
  ) =>
63811
- ipcRenderer$h.invoke(MCP_START_SERVER, {
63789
+ ipcRenderer$g.invoke(MCP_START_SERVER, {
63812
63790
  serverName,
63813
63791
  mcpConfig,
63814
63792
  credentials,
@@ -63825,7 +63803,7 @@ const mcpApi$2 = {
63825
63803
  * @returns {Promise<{ success, serverName } | { error, message }>}
63826
63804
  */
63827
63805
  stopServer: (serverName, workspaceId = null) =>
63828
- ipcRenderer$h.invoke(MCP_STOP_SERVER, { serverName, workspaceId }),
63806
+ ipcRenderer$g.invoke(MCP_STOP_SERVER, { serverName, workspaceId }),
63829
63807
 
63830
63808
  /**
63831
63809
  * listTools
@@ -63836,7 +63814,7 @@ const mcpApi$2 = {
63836
63814
  * @returns {Promise<{ tools } | { error, message }>}
63837
63815
  */
63838
63816
  listTools: (serverName, workspaceId = null) =>
63839
- ipcRenderer$h.invoke(MCP_LIST_TOOLS, { serverName, workspaceId }),
63817
+ ipcRenderer$g.invoke(MCP_LIST_TOOLS, { serverName, workspaceId }),
63840
63818
 
63841
63819
  /**
63842
63820
  * callTool
@@ -63864,7 +63842,7 @@ const mcpApi$2 = {
63864
63842
  widgetId = null,
63865
63843
  workspaceId = null,
63866
63844
  ) =>
63867
- ipcRenderer$h.invoke(MCP_CALL_TOOL, {
63845
+ ipcRenderer$g.invoke(MCP_CALL_TOOL, {
63868
63846
  serverName,
63869
63847
  toolName,
63870
63848
  args,
@@ -63882,7 +63860,7 @@ const mcpApi$2 = {
63882
63860
  * @returns {Promise<{ resources } | { error, message }>}
63883
63861
  */
63884
63862
  listResources: (serverName, workspaceId = null) =>
63885
- ipcRenderer$h.invoke(MCP_LIST_RESOURCES, { serverName, workspaceId }),
63863
+ ipcRenderer$g.invoke(MCP_LIST_RESOURCES, { serverName, workspaceId }),
63886
63864
 
63887
63865
  /**
63888
63866
  * readResource
@@ -63894,7 +63872,7 @@ const mcpApi$2 = {
63894
63872
  * @returns {Promise<{ resource } | { error, message }>}
63895
63873
  */
63896
63874
  readResource: (serverName, uri, workspaceId = null) =>
63897
- ipcRenderer$h.invoke(MCP_READ_RESOURCE, { serverName, uri, workspaceId }),
63875
+ ipcRenderer$g.invoke(MCP_READ_RESOURCE, { serverName, uri, workspaceId }),
63898
63876
 
63899
63877
  /**
63900
63878
  * getServerStatus
@@ -63905,7 +63883,7 @@ const mcpApi$2 = {
63905
63883
  * @returns {Promise<{ status, tools, error }>}
63906
63884
  */
63907
63885
  getServerStatus: (serverName, workspaceId = null) =>
63908
- ipcRenderer$h.invoke(MCP_SERVER_STATUS, { serverName, workspaceId }),
63886
+ ipcRenderer$g.invoke(MCP_SERVER_STATUS, { serverName, workspaceId }),
63909
63887
 
63910
63888
  /**
63911
63889
  * getCatalog
@@ -63913,7 +63891,7 @@ const mcpApi$2 = {
63913
63891
  *
63914
63892
  * @returns {Promise<{ catalog } | { error, message }>}
63915
63893
  */
63916
- getCatalog: () => ipcRenderer$h.invoke(MCP_GET_CATALOG),
63894
+ getCatalog: () => ipcRenderer$g.invoke(MCP_GET_CATALOG),
63917
63895
 
63918
63896
  /**
63919
63897
  * getKnownExternalCatalog
@@ -63925,7 +63903,7 @@ const mcpApi$2 = {
63925
63903
  *
63926
63904
  * @returns {Promise<{ success, servers } | { error, message, servers }>}
63927
63905
  */
63928
- getKnownExternalCatalog: () => ipcRenderer$h.invoke(MCP_GET_KNOWN_EXTERNAL),
63906
+ getKnownExternalCatalog: () => ipcRenderer$g.invoke(MCP_GET_KNOWN_EXTERNAL),
63929
63907
 
63930
63908
  /**
63931
63909
  * onInstallKnownExternalConfirm
@@ -63939,9 +63917,9 @@ const mcpApi$2 = {
63939
63917
  */
63940
63918
  onInstallKnownExternalConfirm: (callback) => {
63941
63919
  const handler = (_e, data) => callback(data);
63942
- ipcRenderer$h.on(MCP_INSTALL_KNOWN_EXTERNAL_CONFIRM$1, handler);
63920
+ ipcRenderer$g.on(MCP_INSTALL_KNOWN_EXTERNAL_CONFIRM$1, handler);
63943
63921
  return () =>
63944
- ipcRenderer$h.removeListener(MCP_INSTALL_KNOWN_EXTERNAL_CONFIRM$1, handler);
63922
+ ipcRenderer$g.removeListener(MCP_INSTALL_KNOWN_EXTERNAL_CONFIRM$1, handler);
63945
63923
  },
63946
63924
 
63947
63925
  /**
@@ -63952,7 +63930,7 @@ const mcpApi$2 = {
63952
63930
  * @param {{ confirmed: boolean, credentials?: object, error?: string }} result
63953
63931
  */
63954
63932
  sendInstallKnownExternalResult: (requestId, result) =>
63955
- ipcRenderer$h.send(MCP_INSTALL_KNOWN_EXTERNAL_RESULT$1, { requestId, result }),
63933
+ ipcRenderer$g.send(MCP_INSTALL_KNOWN_EXTERNAL_RESULT$1, { requestId, result }),
63956
63934
 
63957
63935
  /**
63958
63936
  * runAuth
@@ -63964,7 +63942,7 @@ const mcpApi$2 = {
63964
63942
  * @returns {Promise<{ success } | { error, message }>}
63965
63943
  */
63966
63944
  runAuth: (mcpConfig, credentials, authCommand) =>
63967
- ipcRenderer$h.invoke(MCP_RUN_AUTH, { mcpConfig, credentials, authCommand }),
63945
+ ipcRenderer$g.invoke(MCP_RUN_AUTH, { mcpConfig, credentials, authCommand }),
63968
63946
  };
63969
63947
 
63970
63948
  var mcpApi_1 = mcpApi$2;
@@ -63982,7 +63960,7 @@ var mcpApi_1 = mcpApi$2;
63982
63960
  * mainApi.registry.checkUpdates([{ name: "weather-widgets", version: "1.0.0" }])
63983
63961
  */
63984
63962
 
63985
- const { ipcRenderer: ipcRenderer$g } = require$$0$1;
63963
+ const { ipcRenderer: ipcRenderer$f } = require$$0$1;
63986
63964
 
63987
63965
  const registryApi$2 = {
63988
63966
  /**
@@ -63992,7 +63970,7 @@ const registryApi$2 = {
63992
63970
  */
63993
63971
  fetchIndex: async (forceRefresh = false) => {
63994
63972
  try {
63995
- return await ipcRenderer$g.invoke("registry:fetch-index", forceRefresh);
63973
+ return await ipcRenderer$f.invoke("registry:fetch-index", forceRefresh);
63996
63974
  } catch (error) {
63997
63975
  console.error("[RegistryApi] Error fetching index:", error);
63998
63976
  throw error;
@@ -64007,7 +63985,7 @@ const registryApi$2 = {
64007
63985
  */
64008
63986
  search: async (query = "", filters = {}) => {
64009
63987
  try {
64010
- return await ipcRenderer$g.invoke("registry:search", query, filters);
63988
+ return await ipcRenderer$f.invoke("registry:search", query, filters);
64011
63989
  } catch (error) {
64012
63990
  console.error("[RegistryApi] Error searching registry:", error);
64013
63991
  throw error;
@@ -64021,7 +63999,7 @@ const registryApi$2 = {
64021
63999
  */
64022
64000
  getPackage: async (packageName) => {
64023
64001
  try {
64024
- return await ipcRenderer$g.invoke("registry:get-package", packageName);
64002
+ return await ipcRenderer$f.invoke("registry:get-package", packageName);
64025
64003
  } catch (error) {
64026
64004
  console.error(
64027
64005
  `[RegistryApi] Error getting package ${packageName}:`,
@@ -64038,7 +64016,7 @@ const registryApi$2 = {
64038
64016
  */
64039
64017
  checkUpdates: async (installedWidgets = []) => {
64040
64018
  try {
64041
- return await ipcRenderer$g.invoke(
64019
+ return await ipcRenderer$f.invoke(
64042
64020
  "registry:check-updates",
64043
64021
  installedWidgets,
64044
64022
  );
@@ -64056,7 +64034,7 @@ const registryApi$2 = {
64056
64034
  */
64057
64035
  searchDashboards: async (query = "", filters = {}) => {
64058
64036
  try {
64059
- return await ipcRenderer$g.invoke(
64037
+ return await ipcRenderer$f.invoke(
64060
64038
  "registry:search-dashboards",
64061
64039
  query,
64062
64040
  filters,
@@ -64075,7 +64053,7 @@ const registryApi$2 = {
64075
64053
  */
64076
64054
  searchThemes: async (query = "", filters = {}) => {
64077
64055
  try {
64078
- return await ipcRenderer$g.invoke("registry:search-themes", query, filters);
64056
+ return await ipcRenderer$f.invoke("registry:search-themes", query, filters);
64079
64057
  } catch (error) {
64080
64058
  console.error("[RegistryApi] Error searching themes:", error);
64081
64059
  throw error;
@@ -64097,7 +64075,7 @@ const registryApi$2 = {
64097
64075
  */
64098
64076
  publishWidget: async (appId, packageId, options = {}) => {
64099
64077
  try {
64100
- return await ipcRenderer$g.invoke("registry:publish-widget", {
64078
+ return await ipcRenderer$f.invoke("registry:publish-widget", {
64101
64079
  appId,
64102
64080
  packageId,
64103
64081
  options,
@@ -64118,7 +64096,7 @@ const registryApi$2 = {
64118
64096
  */
64119
64097
  inspectWidgetPackage: async (packageId) => {
64120
64098
  try {
64121
- return await ipcRenderer$g.invoke("registry:inspect-widget-package", {
64099
+ return await ipcRenderer$f.invoke("registry:inspect-widget-package", {
64122
64100
  packageId,
64123
64101
  });
64124
64102
  } catch (error) {
@@ -64139,7 +64117,7 @@ const registryApi$2 = {
64139
64117
  */
64140
64118
  scanWidgetDefaults: async (packageId) => {
64141
64119
  try {
64142
- return await ipcRenderer$g.invoke("registry:scan-widget-defaults", {
64120
+ return await ipcRenderer$f.invoke("registry:scan-widget-defaults", {
64143
64121
  packageId,
64144
64122
  });
64145
64123
  } catch (error) {
@@ -64162,7 +64140,7 @@ const registryApi$2 = {
64162
64140
  */
64163
64141
  previewFetch: async (packageName, componentName = null) => {
64164
64142
  try {
64165
- return await ipcRenderer$g.invoke(
64143
+ return await ipcRenderer$f.invoke(
64166
64144
  "registry:preview-fetch",
64167
64145
  packageName,
64168
64146
  componentName,
@@ -64185,7 +64163,7 @@ var registryApi_1 = registryApi$2;
64185
64163
  * Handle the theme configuration file
64186
64164
  */
64187
64165
 
64188
- const { ipcRenderer: ipcRenderer$f } = require$$0$1;
64166
+ const { ipcRenderer: ipcRenderer$e } = require$$0$1;
64189
64167
 
64190
64168
  const {
64191
64169
  THEME_LIST,
@@ -64198,17 +64176,17 @@ const {
64198
64176
 
64199
64177
  const themeApi$2 = {
64200
64178
  listThemesForApplication: (appId) =>
64201
- ipcRenderer$f.invoke(THEME_LIST, { appId }),
64179
+ ipcRenderer$e.invoke(THEME_LIST, { appId }),
64202
64180
  saveThemeForApplication: (appId, themeName, themeObject) =>
64203
- ipcRenderer$f.invoke(THEME_SAVE, { appId, themeName, themeObject }),
64181
+ ipcRenderer$e.invoke(THEME_SAVE, { appId, themeName, themeObject }),
64204
64182
  deleteThemeForApplication: (appId, themeKey) =>
64205
- ipcRenderer$f.invoke(THEME_DELETE, { appId, themeKey }),
64183
+ ipcRenderer$e.invoke(THEME_DELETE, { appId, themeKey }),
64206
64184
  publishTheme: (appId, themeKey, options) =>
64207
- ipcRenderer$f.invoke(THEME_PUBLISH, { appId, themeKey, options }),
64185
+ ipcRenderer$e.invoke(THEME_PUBLISH, { appId, themeKey, options }),
64208
64186
  installThemeFromRegistry: (appId, packageName) =>
64209
- ipcRenderer$f.invoke(THEME_INSTALL_FROM_REGISTRY, { appId, packageName }),
64187
+ ipcRenderer$e.invoke(THEME_INSTALL_FROM_REGISTRY, { appId, packageName }),
64210
64188
  getThemePublishPreview: (appId, themeKey) =>
64211
- ipcRenderer$f.invoke(THEME_PUBLISH_PREVIEW, { appId, themeKey }),
64189
+ ipcRenderer$e.invoke(THEME_PUBLISH_PREVIEW, { appId, themeKey }),
64212
64190
  };
64213
64191
 
64214
64192
  var themeApi_1 = themeApi$2;
@@ -64220,7 +64198,7 @@ var themeApi_1 = themeApi$2;
64220
64198
  */
64221
64199
 
64222
64200
  // ipcRenderer that must be used to invoke the events
64223
- const { ipcRenderer: ipcRenderer$e } = require$$0$1;
64201
+ const { ipcRenderer: ipcRenderer$d } = require$$0$1;
64224
64202
 
64225
64203
  const {
64226
64204
  ALGOLIA_LIST_INDICES,
@@ -64233,10 +64211,10 @@ const {
64233
64211
 
64234
64212
  const algoliaApi$2 = {
64235
64213
  listIndices: (application) =>
64236
- ipcRenderer$e.invoke(ALGOLIA_LIST_INDICES, application),
64214
+ ipcRenderer$d.invoke(ALGOLIA_LIST_INDICES, application),
64237
64215
 
64238
64216
  browseObjects: (appId, apiKey, indexName) => {
64239
- ipcRenderer$e.invoke(ALGOLIA_BROWSE_OBJECTS, {
64217
+ ipcRenderer$d.invoke(ALGOLIA_BROWSE_OBJECTS, {
64240
64218
  appId,
64241
64219
  apiKey,
64242
64220
  indexName,
@@ -64245,7 +64223,7 @@ const algoliaApi$2 = {
64245
64223
  },
64246
64224
 
64247
64225
  getAnalyticsForQuery: (application, indexName, query) =>
64248
- ipcRenderer$e.invoke(ALGOLIA_ANALYTICS_FOR_QUERY, {
64226
+ ipcRenderer$d.invoke(ALGOLIA_ANALYTICS_FOR_QUERY, {
64249
64227
  application,
64250
64228
  indexName,
64251
64229
  query,
@@ -64258,7 +64236,7 @@ const algoliaApi$2 = {
64258
64236
  dir,
64259
64237
  createIfNotExists = false,
64260
64238
  ) =>
64261
- ipcRenderer$e.invoke(ALGOLIA_PARTIAL_UPDATE_OBJECTS, {
64239
+ ipcRenderer$d.invoke(ALGOLIA_PARTIAL_UPDATE_OBJECTS, {
64262
64240
  appId,
64263
64241
  apiKey,
64264
64242
  indexName,
@@ -64267,7 +64245,7 @@ const algoliaApi$2 = {
64267
64245
  }),
64268
64246
 
64269
64247
  createBatchesFromFile: (filepath, batchFilepath, batchSize) => {
64270
- ipcRenderer$e.invoke(ALGOLIA_CREATE_BATCH, {
64248
+ ipcRenderer$d.invoke(ALGOLIA_CREATE_BATCH, {
64271
64249
  filepath,
64272
64250
  batchFilepath,
64273
64251
  batchSize,
@@ -64275,7 +64253,7 @@ const algoliaApi$2 = {
64275
64253
  },
64276
64254
 
64277
64255
  browseObjectsToFile: (appId, apiKey, indexName, toFilename, query = "") => {
64278
- ipcRenderer$e.invoke(ALGOLIA_BROWSE_OBJECTS, {
64256
+ ipcRenderer$d.invoke(ALGOLIA_BROWSE_OBJECTS, {
64279
64257
  appId,
64280
64258
  apiKey,
64281
64259
  indexName,
@@ -64285,7 +64263,7 @@ const algoliaApi$2 = {
64285
64263
  },
64286
64264
 
64287
64265
  search: (appId, apiKey, indexName, query = "", options = {}) =>
64288
- ipcRenderer$e.invoke(ALGOLIA_SEARCH, {
64266
+ ipcRenderer$d.invoke(ALGOLIA_SEARCH, {
64289
64267
  appId,
64290
64268
  apiKey,
64291
64269
  indexName,
@@ -64300,14 +64278,14 @@ var algoliaApi_1 = algoliaApi$2;
64300
64278
  * openAI
64301
64279
  */
64302
64280
 
64303
- const { ipcRenderer: ipcRenderer$d } = require$$0$1;
64281
+ const { ipcRenderer: ipcRenderer$c } = require$$0$1;
64304
64282
 
64305
64283
  const { OPENAI_DESCRIBE_IMAGE } = openaiEvents$1;
64306
64284
 
64307
64285
  const openaiApi$2 = {
64308
64286
  // convert a json array of objects to a csv string and save to file
64309
64287
  describeImage: (imageUrl, apiKey, prompt = "What's in this image?") =>
64310
- ipcRenderer$d.invoke(OPENAI_DESCRIBE_IMAGE, { imageUrl, apiKey, prompt }),
64288
+ ipcRenderer$c.invoke(OPENAI_DESCRIBE_IMAGE, { imageUrl, apiKey, prompt }),
64311
64289
  };
64312
64290
 
64313
64291
  var openaiApi_1 = openaiApi$2;
@@ -64318,35 +64296,18 @@ var openaiApi_1 = openaiApi$2;
64318
64296
  */
64319
64297
 
64320
64298
  // ipcRenderer that must be used to invoke the events
64321
- const { ipcRenderer: ipcRenderer$c } = require$$0$1;
64299
+ const { ipcRenderer: ipcRenderer$b } = require$$0$1;
64322
64300
 
64323
64301
  const { MENU_ITEMS_SAVE, MENU_ITEMS_LIST } = events$8;
64324
64302
 
64325
64303
  const menuItemsApi$2 = {
64326
64304
  saveMenuItem: (appId, menuItem) =>
64327
- ipcRenderer$c.invoke(MENU_ITEMS_SAVE, { appId, menuItem }),
64328
- listMenuItems: (appId) => ipcRenderer$c.invoke(MENU_ITEMS_LIST, { appId }),
64305
+ ipcRenderer$b.invoke(MENU_ITEMS_SAVE, { appId, menuItem }),
64306
+ listMenuItems: (appId) => ipcRenderer$b.invoke(MENU_ITEMS_LIST, { appId }),
64329
64307
  };
64330
64308
 
64331
64309
  var menuItemsApi_1 = menuItemsApi$2;
64332
64310
 
64333
- /**
64334
- * pluginApi.js
64335
- *
64336
- * Plugin management API for the renderer process.
64337
- */
64338
-
64339
- // ipcRenderer that must be used to invoke the events
64340
- const { ipcRenderer: ipcRenderer$b } = require$$0$1;
64341
-
64342
- const pluginApi$2 = {
64343
- install: (packageName, filepath) =>
64344
- ipcRenderer$b.invoke("plugin-install", { packageName, filepath }),
64345
- uninstall: (filepath) => ipcRenderer$b.invoke("plugin-uninstall", filepath),
64346
- };
64347
-
64348
- var pluginApi_1 = pluginApi$2;
64349
-
64350
64311
  /**
64351
64312
  * llmApi.js
64352
64313
  *
@@ -66439,7 +66400,6 @@ const themeApi$1 = themeApi_1;
66439
66400
  const algoliaApi$1 = algoliaApi_1;
66440
66401
  const openaiApi$1 = openaiApi_1;
66441
66402
  const menuItemsApi$1 = menuItemsApi_1;
66442
- const pluginApi$1 = pluginApi_1;
66443
66403
  const llmApi$1 = llmApi_1;
66444
66404
  const dashboardConfigApi$1 = dashboardConfigApi_1;
66445
66405
  const dashboardRatingsApi = dashboardRatingsApi_1;
@@ -66519,7 +66479,6 @@ function createMainApi$1(extensions = {}) {
66519
66479
  algolia: algoliaApi$1,
66520
66480
  openai: openaiApi$1,
66521
66481
  menuItems: menuItemsApi$1,
66522
- plugins: pluginApi$1,
66523
66482
  dashboardConfig: dashboardConfigApi$1,
66524
66483
  dashboardRatings: dashboardRatingsApi,
66525
66484
  registryAuth: registryAuthApi$1,
@@ -66572,7 +66531,6 @@ const registryController = registryController$3;
66572
66531
  const algoliaController = algoliaController_1;
66573
66532
  const openaiController = openaiController_1;
66574
66533
  const menuItemsController = menuItemsController_1;
66575
- const pluginController = pluginController_1;
66576
66534
  const llmController = llmController_1;
66577
66535
  const cliController = cliController_1;
66578
66536
  const dashboardConfigController = dashboardConfigController$1;
@@ -66615,7 +66573,6 @@ const themeApi = themeApi_1;
66615
66573
  const algoliaApi = algoliaApi_1;
66616
66574
  const openaiApi = openaiApi_1;
66617
66575
  const menuItemsApi = menuItemsApi_1;
66618
- const pluginApi = pluginApi_1;
66619
66576
  const llmApi = llmApi_1;
66620
66577
  const dashboardConfigApi = dashboardConfigApi_1;
66621
66578
  const registryAuthApi = registryAuthApi_1;
@@ -66677,7 +66634,6 @@ var electron = {
66677
66634
  algoliaController,
66678
66635
  openaiController,
66679
66636
  menuItemsController,
66680
- pluginController,
66681
66637
  llmController,
66682
66638
  cliController,
66683
66639
  dashboardConfigController,
@@ -66712,7 +66668,6 @@ var electron = {
66712
66668
  algoliaApi,
66713
66669
  openaiApi,
66714
66670
  menuItemsApi,
66715
- pluginApi,
66716
66671
  llmApi,
66717
66672
  dashboardConfigApi,
66718
66673
  registryAuthApi,