@brainst0rm/cli 0.13.0 → 0.14.0

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.
Files changed (57) hide show
  1. package/dist/{App-SSKWB7CT.js → App-HGJSYIVS.js} +133 -62
  2. package/dist/App-HGJSYIVS.js.map +1 -0
  3. package/dist/{App-DPXJYXKH.js → App-XCJW3A4I.js} +133 -62
  4. package/dist/App-XCJW3A4I.js.map +1 -0
  5. package/dist/brainstorm.js +1428 -150
  6. package/dist/brainstorm.js.map +1 -1
  7. package/dist/{chunk-7D4SUZUM.js → chunk-PR4QN5HX.js} +6 -1
  8. package/dist/{chunk-ZWE3DS7E.js → chunk-SEGVTWSK.js} +6 -1
  9. package/dist/{chunk-5NA3GH6X.js → chunk-WYQU3HAB.js} +175 -10
  10. package/dist/chunk-WYQU3HAB.js.map +1 -0
  11. package/dist/{chunk-55ITCWZZ.js → chunk-Z2QIGVYT.js} +175 -10
  12. package/dist/chunk-Z2QIGVYT.js.map +1 -0
  13. package/dist/{dist-GNHTH2DH.js → dist-3BC75XHW.js} +2 -2
  14. package/dist/dist-42TQFHMB.js +1640 -0
  15. package/dist/dist-42TQFHMB.js.map +1 -0
  16. package/dist/dist-BULARAL3.js +7308 -0
  17. package/dist/dist-BULARAL3.js.map +1 -0
  18. package/dist/{dist-JUDVPE7G.js → dist-ET6CSS7O.js} +2 -2
  19. package/dist/{dist-DUDO3RDM.js → dist-GVK5Q4YK.js} +62 -16
  20. package/dist/{dist-V5DTSTKJ.js.map → dist-GVK5Q4YK.js.map} +1 -1
  21. package/dist/{dist-V5DTSTKJ.js → dist-K7BDAMTO.js} +62 -16
  22. package/dist/{dist-DUDO3RDM.js.map → dist-K7BDAMTO.js.map} +1 -1
  23. package/dist/{dist-WLTQTLFO.js → dist-OYQTULIU.js} +2 -2
  24. package/dist/dist-S5JYXFUW.js +7307 -0
  25. package/dist/dist-S5JYXFUW.js.map +1 -0
  26. package/dist/{dist-YIGU37Q2.js → dist-Y25MC2VO.js} +2 -2
  27. package/dist/dist-Z4SBSK4Q.js +1639 -0
  28. package/dist/dist-Z4SBSK4Q.js.map +1 -0
  29. package/dist/index.js +1428 -150
  30. package/dist/index.js.map +1 -1
  31. package/dist/mcp-server-CROPNYHI.js +4252 -0
  32. package/dist/mcp-server-CROPNYHI.js.map +1 -0
  33. package/dist/mcp-server-IJVEG6CS.js +4251 -0
  34. package/dist/mcp-server-IJVEG6CS.js.map +1 -0
  35. package/dist/{recorder-D6ILEOZP.js → recorder-33N4U6TO.js} +2 -2
  36. package/dist/{recorder-SPYYF4DL.js → recorder-APOOXJYA.js} +2 -2
  37. package/dist/{roles-2DGF4PZU.js → roles-GKDCLP5G.js} +2 -2
  38. package/dist/{roles-UIPX7GBC.js → roles-UUIISXEW.js} +2 -2
  39. package/dist/{slash-PDWKCZOQ.js → slash-4XSR3SJD.js} +3 -3
  40. package/dist/{slash-ZDC4DKL4.js → slash-CVWH3LTR.js} +3 -3
  41. package/package.json +4 -2
  42. package/dist/App-DPXJYXKH.js.map +0 -1
  43. package/dist/App-SSKWB7CT.js.map +0 -1
  44. package/dist/chunk-55ITCWZZ.js.map +0 -1
  45. package/dist/chunk-5NA3GH6X.js.map +0 -1
  46. /package/dist/{chunk-7D4SUZUM.js.map → chunk-PR4QN5HX.js.map} +0 -0
  47. /package/dist/{chunk-ZWE3DS7E.js.map → chunk-SEGVTWSK.js.map} +0 -0
  48. /package/dist/{dist-GNHTH2DH.js.map → dist-3BC75XHW.js.map} +0 -0
  49. /package/dist/{dist-JUDVPE7G.js.map → dist-ET6CSS7O.js.map} +0 -0
  50. /package/dist/{dist-WLTQTLFO.js.map → dist-OYQTULIU.js.map} +0 -0
  51. /package/dist/{dist-YIGU37Q2.js.map → dist-Y25MC2VO.js.map} +0 -0
  52. /package/dist/{recorder-D6ILEOZP.js.map → recorder-33N4U6TO.js.map} +0 -0
  53. /package/dist/{recorder-SPYYF4DL.js.map → recorder-APOOXJYA.js.map} +0 -0
  54. /package/dist/{roles-2DGF4PZU.js.map → roles-GKDCLP5G.js.map} +0 -0
  55. /package/dist/{roles-UIPX7GBC.js.map → roles-UUIISXEW.js.map} +0 -0
  56. /package/dist/{slash-PDWKCZOQ.js.map → slash-4XSR3SJD.js.map} +0 -0
  57. /package/dist/{slash-ZDC4DKL4.js.map → slash-CVWH3LTR.js.map} +0 -0
@@ -1,13 +1,13 @@
1
- import {
2
- MarkdownRenderer
3
- } from "./chunk-GJXEX2A3.js";
4
1
  import {
5
2
  executeSlashCommand,
6
3
  getSlashCommands,
7
4
  isSlashCommand
8
- } from "./chunk-55ITCWZZ.js";
5
+ } from "./chunk-Z2QIGVYT.js";
6
+ import {
7
+ MarkdownRenderer
8
+ } from "./chunk-GJXEX2A3.js";
9
9
  import "./chunk-YWXOPUDW.js";
10
- import "./chunk-7D4SUZUM.js";
10
+ import "./chunk-PR4QN5HX.js";
11
11
 
12
12
  // src/components/App.tsx
13
13
  import { useState as useState9, useRef as useRef2 } from "react";
@@ -1446,6 +1446,19 @@ function timeAgo(ts) {
1446
1446
  if (secs < 60) return `${secs}s ago`;
1447
1447
  return `${Math.floor(secs / 60)}m ago`;
1448
1448
  }
1449
+ function groupToolsByDomain(systems) {
1450
+ const groups = [];
1451
+ for (const sys of systems) {
1452
+ for (const cap of sys.capabilities) {
1453
+ groups.push({
1454
+ domain: cap,
1455
+ product: sys.name,
1456
+ count: Math.ceil(sys.toolCount / Math.max(sys.capabilities.length, 1))
1457
+ });
1458
+ }
1459
+ }
1460
+ return groups;
1461
+ }
1449
1462
  function DashboardMode({
1450
1463
  sessionCost,
1451
1464
  tokenCount,
@@ -1455,10 +1468,13 @@ function DashboardMode({
1455
1468
  turnCount,
1456
1469
  sessionStart,
1457
1470
  brData,
1458
- onRefreshBR
1471
+ onRefreshBR,
1472
+ godModeInfo
1459
1473
  }) {
1460
1474
  const elapsed = Date.now() - sessionStart;
1461
1475
  const costPerHour = elapsed > 6e4 ? sessionCost / elapsed * 36e5 : 0;
1476
+ const gm = godModeInfo;
1477
+ const domainGroups = gm ? groupToolsByDomain(gm.connectedSystems) : [];
1462
1478
  useEffect2(() => {
1463
1479
  if (onRefreshBR && (!brData || brData.lastFetched === 0)) {
1464
1480
  onRefreshBR();
@@ -1512,11 +1528,28 @@ function DashboardMode({
1512
1528
  }
1513
1529
  )
1514
1530
  ] }),
1515
- brData?.forecast && /* @__PURE__ */ jsxs10(Box11, { flexDirection: "column", children: [
1516
- /* @__PURE__ */ jsx12(Text12, { color: "gray", children: "Forecast" }),
1517
- /* @__PURE__ */ jsxs10(Text12, { color: brData.forecast.will_exceed ? "red" : "green", bold: true, children: [
1518
- "$",
1519
- brData.forecast.projected_spend.toFixed(2)
1531
+ /* @__PURE__ */ jsxs10(Box11, { flexDirection: "column", children: [
1532
+ /* @__PURE__ */ jsx12(Text12, { color: "gray", children: "Products" }),
1533
+ /* @__PURE__ */ jsx12(
1534
+ Text12,
1535
+ {
1536
+ color: gm && gm.connectedSystems.length > 0 ? "green" : "gray",
1537
+ bold: true,
1538
+ children: gm?.connectedSystems.length ?? 0
1539
+ }
1540
+ )
1541
+ ] }),
1542
+ /* @__PURE__ */ jsxs10(Box11, { flexDirection: "column", children: [
1543
+ /* @__PURE__ */ jsx12(Text12, { color: "gray", children: "Tools" }),
1544
+ /* @__PURE__ */ jsx12(Text12, { bold: true, children: gm?.totalTools ?? 0 })
1545
+ ] }),
1546
+ /* @__PURE__ */ jsxs10(Box11, { flexDirection: "column", children: [
1547
+ /* @__PURE__ */ jsx12(Text12, { color: "gray", children: "Models" }),
1548
+ /* @__PURE__ */ jsxs10(Text12, { children: [
1549
+ modelCount.local,
1550
+ "L/",
1551
+ modelCount.cloud,
1552
+ "C"
1520
1553
  ] })
1521
1554
  ] })
1522
1555
  ]
@@ -1533,15 +1566,40 @@ function DashboardMode({
1533
1566
  flexDirection: "column",
1534
1567
  children: [
1535
1568
  /* @__PURE__ */ jsxs10(Text12, { bold: true, color: "green", children: [
1569
+ " ",
1570
+ "Connected Systems"
1571
+ ] }),
1572
+ gm && gm.connectedSystems.length > 0 ? gm.connectedSystems.map((sys) => /* @__PURE__ */ jsxs10(Box11, { children: [
1573
+ /* @__PURE__ */ jsx12(Text12, { color: "green", children: "\u25CF " }),
1574
+ /* @__PURE__ */ jsx12(Text12, { bold: true, children: sys.displayName.padEnd(18) }),
1575
+ /* @__PURE__ */ jsxs10(Text12, { color: "gray", children: [
1576
+ String(sys.toolCount).padStart(2),
1577
+ "t "
1578
+ ] }),
1579
+ /* @__PURE__ */ jsxs10(Text12, { color: "gray", dimColor: true, children: [
1580
+ sys.latencyMs,
1581
+ "ms"
1582
+ ] })
1583
+ ] }, sys.name)) : /* @__PURE__ */ jsxs10(Text12, { color: "gray", dimColor: true, children: [
1584
+ " ",
1585
+ "No products connected"
1586
+ ] }),
1587
+ gm && gm.errors.length > 0 && gm.errors.map((err) => /* @__PURE__ */ jsxs10(Box11, { children: [
1588
+ /* @__PURE__ */ jsx12(Text12, { color: "red", children: "\u25CB " }),
1589
+ /* @__PURE__ */ jsx12(Text12, { color: "gray", children: err.name.padEnd(18) }),
1590
+ /* @__PURE__ */ jsx12(Text12, { color: "red", dimColor: true, children: err.error.slice(0, 25) })
1591
+ ] }, err.name)),
1592
+ /* @__PURE__ */ jsx12(Text12, { children: " " }),
1593
+ /* @__PURE__ */ jsxs10(Text12, { bold: true, color: "blue", children: [
1536
1594
  " ",
1537
1595
  "Routing Log"
1538
1596
  ] }),
1539
1597
  routingHistory.length === 0 ? /* @__PURE__ */ jsxs10(Text12, { color: "gray", dimColor: true, children: [
1540
1598
  " ",
1541
1599
  "Send a message to start."
1542
- ] }) : routingHistory.slice(0, 6).map((entry, i) => /* @__PURE__ */ jsxs10(Box11, { children: [
1600
+ ] }) : routingHistory.slice(0, 5).map((entry, i) => /* @__PURE__ */ jsxs10(Box11, { children: [
1543
1601
  /* @__PURE__ */ jsx12(Text12, { color: "gray", dimColor: true, children: timeAgo(entry.timestamp).padEnd(8) }),
1544
- /* @__PURE__ */ jsx12(Text12, { color: getProviderColor(entry.model), bold: true, children: entry.model.padEnd(18) }),
1602
+ /* @__PURE__ */ jsx12(Text12, { color: getProviderColor(entry.model), bold: true, children: entry.model.padEnd(16) }),
1545
1603
  /* @__PURE__ */ jsx12(Text12, { color: "gray", children: entry.strategy })
1546
1604
  ] }, i)),
1547
1605
  brData && brData.leaderboard.length > 0 && /* @__PURE__ */ jsxs10(Fragment2, { children: [
@@ -1550,19 +1608,17 @@ function DashboardMode({
1550
1608
  " ",
1551
1609
  "Leaderboard"
1552
1610
  ] }),
1553
- brData.leaderboard.slice(0, 5).map((entry, i) => /* @__PURE__ */ jsxs10(Box11, { children: [
1611
+ brData.leaderboard.filter((e) => e?.model).slice(0, 4).map((entry, i) => /* @__PURE__ */ jsxs10(Box11, { children: [
1554
1612
  /* @__PURE__ */ jsxs10(Text12, { color: "gray", children: [
1555
1613
  String(i + 1).padStart(2),
1556
1614
  ". "
1557
1615
  ] }),
1558
- /* @__PURE__ */ jsx12(Text12, { color: getProviderColor(entry.provider), bold: true, children: entry.model.split("/").pop()?.padEnd(18) ?? entry.model.padEnd(18) }),
1616
+ /* @__PURE__ */ jsx12(Text12, { color: getProviderColor(entry.provider ?? ""), bold: true, children: (entry.model ?? "unknown").split("/").pop()?.padEnd(16) ?? "unknown".padEnd(16) }),
1559
1617
  /* @__PURE__ */ jsxs10(Text12, { color: "gray", children: [
1560
1618
  "Q",
1561
- entry.quality_rank,
1619
+ entry.quality_rank ?? "?",
1562
1620
  " S",
1563
- entry.speed_rank,
1564
- " V",
1565
- entry.value_rank
1621
+ entry.speed_rank ?? "?"
1566
1622
  ] })
1567
1623
  ] }, i))
1568
1624
  ] })
@@ -1581,43 +1637,51 @@ function DashboardMode({
1581
1637
  children: [
1582
1638
  /* @__PURE__ */ jsxs10(Text12, { bold: true, color: "cyan", children: [
1583
1639
  " ",
1584
- "Tool Health"
1640
+ "Tool Registry (",
1641
+ gm?.totalTools ?? 0,
1642
+ ")"
1585
1643
  ] }),
1586
- toolStats.length === 0 ? /* @__PURE__ */ jsxs10(Text12, { color: "gray", dimColor: true, children: [
1644
+ domainGroups.length > 0 ? domainGroups.slice(0, 8).map((g) => /* @__PURE__ */ jsxs10(Box11, { children: [
1645
+ /* @__PURE__ */ jsx12(Text12, { color: "gray", children: g.product.padEnd(6) }),
1646
+ /* @__PURE__ */ jsx12(Text12, { children: g.domain.padEnd(20) }),
1647
+ /* @__PURE__ */ jsxs10(Text12, { color: "gray", dimColor: true, children: [
1648
+ g.count,
1649
+ "t"
1650
+ ] })
1651
+ ] }, `${g.product}-${g.domain}`)) : /* @__PURE__ */ jsxs10(Text12, { color: "gray", dimColor: true, children: [
1587
1652
  " ",
1588
- "No tool calls yet."
1589
- ] }) : toolStats.sort((a, b) => b.calls - a.calls).slice(0, 8).map((tool) => {
1590
- const rate = tool.calls > 0 ? Math.round(tool.successes / tool.calls * 100) : 0;
1591
- const color = rate >= 90 ? "green" : rate >= 70 ? "yellow" : "red";
1592
- return /* @__PURE__ */ jsxs10(Box11, { children: [
1593
- /* @__PURE__ */ jsxs10(Text12, { color, children: [
1594
- rate >= 90 ? "\u25CF" : rate >= 70 ? "\u25D0" : "\u25CB",
1595
- " "
1596
- ] }),
1597
- /* @__PURE__ */ jsx12(Text12, { children: tool.name.padEnd(14) }),
1598
- /* @__PURE__ */ jsxs10(Text12, { color: "gray", children: [
1599
- String(tool.calls).padStart(3),
1600
- " "
1601
- ] }),
1602
- /* @__PURE__ */ jsx12(Gauge, { value: rate, width: 8, showPercent: false }),
1603
- /* @__PURE__ */ jsxs10(Text12, { color, children: [
1604
- " ",
1605
- rate,
1606
- "%"
1607
- ] })
1608
- ] }, tool.name);
1609
- }),
1653
+ "No tools registered"
1654
+ ] }),
1655
+ toolStats.length > 0 && /* @__PURE__ */ jsxs10(Fragment2, { children: [
1656
+ /* @__PURE__ */ jsx12(Text12, { children: " " }),
1657
+ /* @__PURE__ */ jsxs10(Text12, { bold: true, color: "magenta", children: [
1658
+ " ",
1659
+ "Tool Health"
1660
+ ] }),
1661
+ toolStats.sort((a, b) => b.calls - a.calls).slice(0, 6).map((tool) => {
1662
+ const rate = tool.calls > 0 ? Math.round(tool.successes / tool.calls * 100) : 0;
1663
+ const color = rate >= 90 ? "green" : rate >= 70 ? "yellow" : "red";
1664
+ return /* @__PURE__ */ jsxs10(Box11, { children: [
1665
+ /* @__PURE__ */ jsxs10(Text12, { color, children: [
1666
+ rate >= 90 ? "\u25CF" : rate >= 70 ? "\u25D0" : "\u25CB",
1667
+ " "
1668
+ ] }),
1669
+ /* @__PURE__ */ jsx12(Text12, { children: tool.name.padEnd(18) }),
1670
+ /* @__PURE__ */ jsxs10(Text12, { color: "gray", children: [
1671
+ String(tool.calls).padStart(3),
1672
+ " "
1673
+ ] }),
1674
+ /* @__PURE__ */ jsx12(Gauge, { value: rate, width: 6, showPercent: false })
1675
+ ] }, tool.name);
1676
+ })
1677
+ ] }),
1610
1678
  brData?.waste && brData.waste.total_waste_usd > 0 && /* @__PURE__ */ jsxs10(Fragment2, { children: [
1611
1679
  /* @__PURE__ */ jsx12(Text12, { children: " " }),
1612
1680
  /* @__PURE__ */ jsxs10(Text12, { bold: true, color: "red", children: [
1613
1681
  " ",
1614
1682
  "Waste: $",
1615
- brData.waste.total_waste_usd.toFixed(2)
1616
- ] }),
1617
- brData.waste.suggestions.slice(0, 3).map((s, i) => /* @__PURE__ */ jsxs10(Text12, { color: "gray", dimColor: true, children: [
1618
- " ",
1619
- s.description.slice(0, 50)
1620
- ] }, i))
1683
+ (brData.waste?.total_waste_usd ?? 0).toFixed(2)
1684
+ ] })
1621
1685
  ] })
1622
1686
  ]
1623
1687
  }
@@ -1634,22 +1698,22 @@ function DashboardMode({
1634
1698
  children: [
1635
1699
  /* @__PURE__ */ jsxs10(Text12, { bold: true, color: "magenta", children: [
1636
1700
  " ",
1637
- "Guardian Audit"
1701
+ "Audit Trail"
1638
1702
  ] }),
1639
1703
  !brData || brData.audit.length === 0 ? /* @__PURE__ */ jsxs10(Text12, { color: "gray", dimColor: true, children: [
1640
1704
  " ",
1641
1705
  "No audit data. Press r to refresh."
1642
- ] }) : brData.audit.slice(0, 6).map((entry, i) => {
1706
+ ] }) : brData.audit.filter((e) => e != null).slice(0, 5).map((entry, i) => {
1643
1707
  const statusColor2 = entry.guardian_status === "safe" ? "green" : entry.guardian_status === "flagged" ? "yellow" : "red";
1644
1708
  return /* @__PURE__ */ jsxs10(Box11, { children: [
1645
1709
  /* @__PURE__ */ jsxs10(Text12, { color: statusColor2, children: [
1646
1710
  entry.guardian_status === "safe" ? "\u25CF" : "\u26A0",
1647
1711
  " "
1648
1712
  ] }),
1649
- /* @__PURE__ */ jsx12(Text12, { color: getProviderColor(entry.model), children: entry.model.split("/").pop()?.padEnd(14) ?? "" }),
1713
+ /* @__PURE__ */ jsx12(Text12, { color: getProviderColor(entry.model ?? ""), children: (entry.model ?? "").split("/").pop()?.padEnd(12) ?? "" }),
1650
1714
  /* @__PURE__ */ jsxs10(Text12, { color: "gray", children: [
1651
1715
  "$",
1652
- entry.cost_usd.toFixed(4)
1716
+ (entry.cost_usd ?? 0).toFixed(4)
1653
1717
  ] })
1654
1718
  ] }, i);
1655
1719
  }),
@@ -1657,31 +1721,37 @@ function DashboardMode({
1657
1721
  /* @__PURE__ */ jsx12(Text12, { children: " " }),
1658
1722
  /* @__PURE__ */ jsxs10(Text12, { bold: true, color: "blue", children: [
1659
1723
  " ",
1660
- "7-Day Trend"
1724
+ "7-Day Cost"
1661
1725
  ] }),
1662
1726
  /* @__PURE__ */ jsxs10(Box11, { children: [
1663
1727
  /* @__PURE__ */ jsx12(
1664
1728
  Sparkline,
1665
1729
  {
1666
- data: brData.dailyTrend.map((d) => d.cost_usd),
1730
+ data: brData.dailyTrend.map((d) => d?.cost_usd ?? 0),
1667
1731
  color: "yellow",
1668
- width: 20
1732
+ width: 18
1669
1733
  }
1670
1734
  ),
1671
1735
  /* @__PURE__ */ jsxs10(Text12, { color: "gray", children: [
1672
1736
  " ",
1673
1737
  "$",
1674
- brData.dailyTrend.reduce((s, d) => s + d.cost_usd, 0).toFixed(2),
1675
- " ",
1676
- "total"
1738
+ brData.dailyTrend.reduce((s, d) => s + d.cost_usd, 0).toFixed(2)
1677
1739
  ] })
1678
1740
  ] })
1741
+ ] }),
1742
+ brData?.forecast && /* @__PURE__ */ jsxs10(Fragment2, { children: [
1743
+ /* @__PURE__ */ jsx12(Text12, { children: " " }),
1744
+ /* @__PURE__ */ jsxs10(Text12, { bold: true, color: brData.forecast?.will_exceed ? "red" : "green", children: [
1745
+ " ",
1746
+ "Forecast: $",
1747
+ (brData.forecast?.projected_spend ?? 0).toFixed(2)
1748
+ ] })
1679
1749
  ] })
1680
1750
  ]
1681
1751
  }
1682
1752
  )
1683
1753
  ] }),
1684
- /* @__PURE__ */ jsx12(Box11, { paddingX: 1, children: /* @__PURE__ */ jsx12(Text12, { color: "gray", dimColor: true, children: brData?.loading ? "Loading BR data..." : brData?.error ? `BR: ${brData.error}` : `r refresh \u2502 ${modelCount.local}L/${modelCount.cloud}C` }) })
1754
+ /* @__PURE__ */ jsx12(Box11, { paddingX: 1, children: /* @__PURE__ */ jsx12(Text12, { color: "gray", dimColor: true, children: brData?.loading ? "Loading..." : brData?.error ? `BR: ${brData.error}` : `r refresh \u2502 Esc chat \u2502 ${gm ? `${gm.connectedSystems.length} products \u2502 ${gm.totalTools} tools` : "godmode off"} \u2502 ${modelCount.local}L/${modelCount.cloud}C` }) })
1685
1755
  ] });
1686
1756
  }
1687
1757
 
@@ -2752,7 +2822,8 @@ function App(props) {
2752
2822
  turnCount,
2753
2823
  sessionStart,
2754
2824
  brData,
2755
- onRefreshBR: refreshBR
2825
+ onRefreshBR: refreshBR,
2826
+ godModeInfo: props.godModeInfo
2756
2827
  }
2757
2828
  ),
2758
2829
  mode === "models" && /* @__PURE__ */ jsx18(
@@ -2791,4 +2862,4 @@ function App(props) {
2791
2862
  export {
2792
2863
  App
2793
2864
  };
2794
- //# sourceMappingURL=App-DPXJYXKH.js.map
2865
+ //# sourceMappingURL=App-XCJW3A4I.js.map