Files
worldmonitor/scripts/shared/commodities.json
Elie Habib ba54dc12d7 feat(commodity): gold layer enhancements (#2464)
* feat(commodity): add gold layer enhancements from fork review

Enrich the commodity variant with learnings from Yazan-Abuawwad/gold-monitor fork:

- Add 10 missing gold mines to MINING_SITES: Muruntau (world's largest
  open-pit gold mine), Kibali (DRC), Sukhoi Log (Russia, development),
  Ahafo (Ghana), Loulo-Gounkoto (Mali), South Deep (SA), Kumtor
  (Kyrgyzstan), Yanacocha (Peru), Cerro Negro (Argentina), Tropicana
  (Australia). Covers ~40% of top-20 global mines previously absent.

- Add XAUUSD=X spot gold and 9 FX pairs (EUR, GBP, JPY, CNY, INR, AUD,
  CHF, CAD, TRY) to shared/commodities.json. All =X symbols auto-seeded
  via existing seedCommodityQuotes() — no new seeder needed. Registered
  in YAHOO_ONLY_SYMBOLS in both _shared.ts and ais-relay.cjs.

- Add XAU/FX tab to CommoditiesPanel showing gold priced in 10 currencies.
  Computed live from GC=F * FX rates. Commodity variant only.

- Fix InsightsPanel brief title: commodity variant now shows
  "⛏️ COMMODITY BRIEF" instead of "🌍 WORLD BRIEF".

- Route commodity variant daily market brief to commodity feed categories
  (commodity-news, gold-silver, mining-news, energy, critical-minerals)
  via new newsCategories option on BuildDailyMarketBriefOptions.

- Add Gold Silver Worlds + FX Empire Gold direct RSS feeds to gold-silver
  panel (9 sources total, up from 7).

* fix(commodity): address review findings from PR #2464

- Fix USDCHF=X multiply direction: was true (wrong), now false (USD/CHF is USD-per-CHF convention)
- Fix newsCategories augments BRIEF_NEWS_CATEGORIES instead of replacing (preserves macro/Fed context in commodity brief)
- Add goldsilverworlds.com + www.fxempire.com to RSS allowlist (api + shared + scripts/shared)
- Rename "Metals" tab label conditionally: commodity variant gets "Metals", others keep "Commodities"
- Reset _tab to "commodities" when hasXau becomes false (prevent stale XAU tab re-activation)
- Add Number.isFinite() guard in _renderXau() before computing xauPrice
- Narrow fxMap filter to =X symbols only
- Collapse redundant two-branch number formatter to Math.round().toLocaleString()
- Remove XAUUSD=X from shared/commodities.json: seeded but never displayed (saves 150ms/cycle)

* feat(mcp): add get_commodity_geo tool and update get_market_data description

* fix(commodity): correct USDCHF direction, replace headline categories, restore dep overrides

* fix(commodity): empty XAU grid fallback and restore FRED timeout to 20s

* fix(commodity): remove XAU/USD from MCP description, revert Metals tab label

* fix(commodity): remove dead XAUUSD=X from YAHOO_ONLY_SYMBOLS

XAU widget uses GC=F as base price, not XAUUSD=X. Symbol was never
seeded (not in commodities.json) and never referenced in the UI.
2026-03-29 11:13:40 +04:00

37 lines
2.2 KiB
JSON

{
"commodities": [
{ "symbol": "^VIX", "name": "VIX", "display": "VIX" },
{ "symbol": "GC=F", "name": "Gold", "display": "GOLD" },
{ "symbol": "SI=F", "name": "Silver", "display": "SILVER" },
{ "symbol": "HG=F", "name": "Copper", "display": "COPPER" },
{ "symbol": "PL=F", "name": "Platinum", "display": "PLATINUM" },
{ "symbol": "PA=F", "name": "Palladium", "display": "PALLADIUM" },
{ "symbol": "ALI=F", "name": "Aluminum", "display": "ALUMINUM" },
{ "symbol": "CL=F", "name": "Crude Oil WTI", "display": "OIL" },
{ "symbol": "BZ=F", "name": "Brent Crude", "display": "BRENT" },
{ "symbol": "NG=F", "name": "Natural Gas", "display": "NATGAS" },
{ "symbol": "RB=F", "name": "Gasoline RBOB", "display": "GASOLINE" },
{ "symbol": "HO=F", "name": "Heating Oil", "display": "HEATING OIL" },
{ "symbol": "URA", "name": "Uranium (Global X)", "display": "URANIUM" },
{ "symbol": "LIT", "name": "Lithium & Battery", "display": "LITHIUM" },
{ "symbol": "MTF=F", "name": "Newcastle Coal", "display": "COAL" },
{ "symbol": "ZW=F", "name": "Wheat", "display": "WHEAT" },
{ "symbol": "ZC=F", "name": "Corn", "display": "CORN" },
{ "symbol": "ZS=F", "name": "Soybeans", "display": "SOYBEANS" },
{ "symbol": "ZR=F", "name": "Rough Rice", "display": "RICE" },
{ "symbol": "KC=F", "name": "Coffee", "display": "COFFEE" },
{ "symbol": "SB=F", "name": "Sugar No. 11", "display": "SUGAR" },
{ "symbol": "CC=F", "name": "Cocoa", "display": "COCOA" },
{ "symbol": "CT=F", "name": "Cotton", "display": "COTTON" },
{ "symbol": "EURUSD=X", "name": "EUR/USD", "display": "EUR/USD" },
{ "symbol": "GBPUSD=X", "name": "GBP/USD", "display": "GBP/USD" },
{ "symbol": "USDJPY=X", "name": "USD/JPY", "display": "USD/JPY" },
{ "symbol": "USDCNY=X", "name": "USD/CNY", "display": "USD/CNY" },
{ "symbol": "USDINR=X", "name": "USD/INR", "display": "USD/INR" },
{ "symbol": "AUDUSD=X", "name": "AUD/USD", "display": "AUD/USD" },
{ "symbol": "USDCHF=X", "name": "USD/CHF", "display": "USD/CHF" },
{ "symbol": "USDCAD=X", "name": "USD/CAD", "display": "USD/CAD" },
{ "symbol": "USDTRY=X", "name": "USD/TRY", "display": "USD/TRY" }
]
}