zframes 0.4.0 → 0.5.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.
- package/README.md +30 -18
- package/dist/index.js +170 -10
- package/package.json +4 -4
- package/runtime/assets/{bitcoin-dominance-DVZsIJ3y.js → bitcoin-dominance-DoQXKqiB.js} +1 -1
- package/runtime/assets/{breakeven-lskbHkqb.js → breakeven-C-RPYpuB.js} +1 -1
- package/runtime/assets/{breathing-BeUkCUAJ.js → breathing-y5-8SC9y.js} +1 -1
- package/runtime/assets/{btc-blocks-fXBgGo4z.js → btc-blocks-Sw7Iyo4-.js} +1 -1
- package/runtime/assets/{btc-difficulty-BwyxgI0e.js → btc-difficulty-BYmWqBxZ.js} +1 -1
- package/runtime/assets/{btc-fees-Bg1rcXtN.js → btc-fees-D8mISVeZ.js} +1 -1
- package/runtime/assets/{btc-hashrate-Xg8QNlTO.js → btc-hashrate-BEJQmdg9.js} +1 -1
- package/runtime/assets/{btc-mempool-8Mfa77fO.js → btc-mempool-1XmL6cRJ.js} +1 -1
- package/runtime/assets/{calculator-CiXyJA9p.js → calculator-DXo_2gkF.js} +1 -1
- package/runtime/assets/{checklist-D0dKSdmf.js → checklist-BdYa9ZOP.js} +1 -1
- package/runtime/assets/{clock-CNQTNh4L.js → clock-D-I4lQmb.js} +1 -1
- package/runtime/assets/{coin-movers-DulAF_oo.js → coin-movers-DOacvI6E.js} +1 -1
- package/runtime/assets/{countdown-BzZ2L6bw.js → countdown-BUHtC8Ve.js} +1 -1
- package/runtime/assets/{daily-analysis-RyI5KL4T.js → daily-analysis-CfKUC2nL.js} +1 -1
- package/runtime/assets/{day-meter-2bAj77Kz.js → day-meter-Bf2cGHVR.js} +1 -1
- package/runtime/assets/dex-volume-chart-61eDevFa.js +1 -0
- package/runtime/assets/dex-volume-treemap-DlwxBY_b.js +1 -0
- package/runtime/assets/{dice-wg979Skm.js → dice-Dl2uLedD.js} +1 -1
- package/runtime/assets/{dino-game-DlACWmE_.js → dino-game-Cx4Nc7AZ.js} +1 -1
- package/runtime/assets/{divider-Chz1UsWJ.js → divider-HYdZwv9D.js} +1 -1
- package/runtime/assets/{drawdy-Ce7P47cx.js → drawdy-C42tJRAO.js} +1 -1
- package/runtime/assets/editor-BMMobjrE.css +1 -0
- package/runtime/assets/editor-COIEaoVd.js +68 -0
- package/runtime/assets/{fear-greed-CENzXdIk.js → fear-greed-BkmVWoHA.js} +1 -1
- package/runtime/assets/{filings-feed-2aIKzUUY.js → filings-feed-ChiZiKYE.js} +1 -1
- package/runtime/assets/{financial-stress--ezsCpfR.js → financial-stress-BQJoviQU.js} +1 -1
- package/runtime/assets/{flappy-bird-DDe-IXt9.js → flappy-bird-DphWPPwp.js} +1 -1
- package/runtime/assets/{fundamentals-v8f81ZNS.js → fundamentals-D20TvQN_.js} +1 -1
- package/runtime/assets/funding-heatmap-DxH9NYjL.js +1 -0
- package/runtime/assets/{funding-rate-chart-CjDA4nj7.js → funding-rate-chart-BJ2jiIb4.js} +1 -1
- package/runtime/assets/fx-board-DXTpvuXF.js +1 -0
- package/runtime/assets/{heading-DMxdj9LK.js → heading-Cr4OaUt7.js} +1 -1
- package/runtime/assets/{holiday-calendar-DxB-fxG5.js → holiday-calendar-DHK0jzQc.js} +1 -1
- package/runtime/assets/{image-DLg33JpH.js → image-DVddTOkv.js} +1 -1
- package/runtime/assets/{index-DRTPEQtR.css → index-BqHx9BjX.css} +1 -1
- package/runtime/assets/index-DK7jWlTL.js +1 -0
- package/runtime/assets/index-DNLPQoS7.js +936 -0
- package/runtime/assets/inflation-pulse-NCyRMTQV.js +1 -0
- package/runtime/assets/{journal-log-BX5Z_yte.js → journal-log-C_W9xs_w.js} +1 -1
- package/runtime/assets/{journal-open-XFQGIRkw.js → journal-open-CVlbbryx.js} +1 -1
- package/runtime/assets/{journal-results-J1WCmyH2.js → journal-results-Bsk6nwKi.js} +1 -1
- package/runtime/assets/{journal-score-CKhBSfYY.js → journal-score-C6Aj9hWs.js} +1 -1
- package/runtime/assets/{journal-ui-Cogk2Wkt.js → journal-ui-DgGd2Foc.js} +1 -1
- package/runtime/assets/{labor-market-BV20Rl-4.js → labor-market-BvFWS_YO.js} +1 -1
- package/runtime/assets/{lightning-stats-h4fquhAg.js → lightning-stats-DyRwU2-5.js} +1 -1
- package/runtime/assets/{link-grid-a6NWj1Hu.js → link-grid-DxPMWWbo.js} +1 -1
- package/runtime/assets/live-tick-9Q3ubPF9.js +1 -0
- package/runtime/assets/liveline-bcaEuskN.js +1 -0
- package/runtime/assets/market-cap-treemap-LEDlsNnm.js +1 -0
- package/runtime/assets/{market-hours-6srwf0-r.js → market-hours-DlTlbyBC.js} +1 -1
- package/runtime/assets/{marquee-DDurk6bj.js → marquee-Ds-0N_-6.js} +1 -1
- package/runtime/assets/mini-line-chart-CHM5UBjJ.js +1 -0
- package/runtime/assets/{mining-pools-BPjCy4ZW.js → mining-pools-Dg55Tg1-.js} +1 -1
- package/runtime/assets/{mover-row-kQ9xt3Sp.js → mover-row-CunANlxa.js} +1 -1
- package/runtime/assets/{national-debt-DkOnmfd1.js → national-debt-G2V6-Lef.js} +1 -1
- package/runtime/assets/news-feed-RKSA0wsz.js +1 -0
- package/runtime/assets/note-CDlwRqhL.js +1 -0
- package/runtime/assets/{open-interest-fxHh_T-V.js → open-interest-Bs6LXeca.js} +1 -1
- package/runtime/assets/{options-iv-CDArg1Op.js → options-iv-BClv6xRB.js} +1 -1
- package/runtime/assets/{options-oi-strike-D_XIgUkk.js → options-oi-strike-DbhE95-7.js} +1 -1
- package/runtime/assets/{options-put-call-DG4RXjzD.js → options-put-call-C7tt191v.js} +1 -1
- package/runtime/assets/{pomodoro-B-Jk-51G.js → pomodoro-DpIO5pex.js} +1 -1
- package/runtime/assets/{portfolio-allocation-BJepNj1X.js → portfolio-allocation-DqSXNMYF.js} +1 -1
- package/runtime/assets/{portfolio-common-D5L06PNC.js → portfolio-common-CCGvaNdA.js} +1 -1
- package/runtime/assets/{portfolio-holdings-DSkAZALG.js → portfolio-holdings-Bxvf91Yo.js} +1 -1
- package/runtime/assets/portfolio-value-C6TFZyPZ.js +1 -0
- package/runtime/assets/price-chart-D4wf9Yju.js +1 -0
- package/runtime/assets/price-compare-B-mjV1jP.js +1 -0
- package/runtime/assets/price-liveline-K4S4XpSX.js +1 -0
- package/runtime/assets/{price-ticker-BXSeNYf9.js → price-ticker-BNDRtpS8.js} +1 -1
- package/runtime/assets/protocol-fees-treemap-vjLiXJ6x.js +1 -0
- package/runtime/assets/{protocol-tvl-chart-CEjUOIY5.js → protocol-tvl-chart-Dz8JtyuD.js} +1 -1
- package/runtime/assets/protocol-tvl-treemap-BrA0oXqV.js +1 -0
- package/runtime/assets/{quote-cehyepdm.js → quote-PcP5IX9V.js} +1 -1
- package/runtime/assets/{rates-board-Du4k0z1i.js → rates-board-BNAw2Iei.js} +1 -1
- package/runtime/assets/{returns-projector-DXnRFAES.js → returns-projector-BSTPBgMR.js} +1 -1
- package/runtime/assets/{risk-reward-DZWyCrbv.js → risk-reward-Dnp2JQr7.js} +1 -1
- package/runtime/assets/{rules-card-BXJjNTqj.js → rules-card-BNInaYxt.js} +1 -1
- package/runtime/assets/{session-progress-bA45Q3wk.js → session-progress-D1mhPWWM.js} +1 -1
- package/runtime/assets/{short-volume-C6cWknyR.js → short-volume-Dsm5jHLL.js} +1 -1
- package/runtime/assets/{snake-DYTa97hl.js → snake-CyxVfmbr.js} +1 -1
- package/runtime/assets/{spotify-embed-BaH6UHeG.js → spotify-embed-DcnZGDEz.js} +1 -1
- package/runtime/assets/{stopwatch-CS6n0bY9.js → stopwatch-ggIRtWfw.js} +1 -1
- package/runtime/assets/top-movers-CanKFls6.js +1 -0
- package/runtime/assets/{treasury-auctions-CGM8hAuU.js → treasury-auctions-BBHz7Mbe.js} +1 -1
- package/runtime/assets/treemap-leaf-DNIoJEK-.js +1 -0
- package/runtime/assets/tvl-treemap-D-LqgfI7.js +1 -0
- package/runtime/assets/{video-WCnvLwQ_.js → video-DqWW_aoH.js} +1 -1
- package/runtime/assets/{yield-curve-CpitTQ9L.js → yield-curve-Dpm8XDwi.js} +1 -1
- package/runtime/index.html +2 -2
- package/runtime/assets/dex-volume-chart-DDPf1YAN.js +0 -1
- package/runtime/assets/dex-volume-treemap-jZCgRREu.js +0 -1
- package/runtime/assets/editor-BlGZ_tel.js +0 -68
- package/runtime/assets/editor-CHAAJRb1.css +0 -1
- package/runtime/assets/funding-heatmap-DUoeFNGr.js +0 -1
- package/runtime/assets/fx-board-CmXYQZi4.js +0 -1
- package/runtime/assets/index-C_O7gp2F.js +0 -822
- package/runtime/assets/index-jnySFpSv.js +0 -1
- package/runtime/assets/inflation-pulse-gcw-84PM.js +0 -1
- package/runtime/assets/liveline-C5zt2WuS.js +0 -1
- package/runtime/assets/market-cap-treemap-CAi49oc_.js +0 -1
- package/runtime/assets/mini-line-chart-D-i1QqSe.js +0 -1
- package/runtime/assets/news-feed-CFWKKqrH.js +0 -1
- package/runtime/assets/note-_cGEXAru.js +0 -1
- package/runtime/assets/portfolio-value-BJw2csWV.js +0 -1
- package/runtime/assets/price-chart-khxI-9vJ.js +0 -1
- package/runtime/assets/price-compare-C-uEckke.js +0 -1
- package/runtime/assets/price-liveline-BDesEIbL.js +0 -1
- package/runtime/assets/protocol-fees-treemap-YtWbL1Kn.js +0 -1
- package/runtime/assets/protocol-tvl-treemap-b31QlpnS.js +0 -1
- package/runtime/assets/top-movers-CQNx9EH5.js +0 -1
- package/runtime/assets/treemap-leaf-DLQawrx4.js +0 -1
- package/runtime/assets/tvl-treemap-C3SUFzdj.js +0 -1
package/dist/index.js
CHANGED
|
@@ -9,6 +9,10 @@ function catalogueForAI(input) {
|
|
|
9
9
|
const metas = input instanceof Map ? [...input.values()] : [...input];
|
|
10
10
|
return metas.map((meta) => ({
|
|
11
11
|
name: meta.name,
|
|
12
|
+
// The frame's default card title. An instance that omits `title` renders
|
|
13
|
+
// this, so the agent should leave `title` unset unless it wants a custom
|
|
14
|
+
// label — never re-state the default or hand-author an abbreviation.
|
|
15
|
+
label: meta.label,
|
|
12
16
|
category: meta.category,
|
|
13
17
|
description: meta.description,
|
|
14
18
|
iconUrl: meta.iconUrl,
|
|
@@ -55,7 +59,7 @@ var FrameInstanceSchema = z2.object({
|
|
|
55
59
|
id: z2.string().describe("Unique instance id within the dashboard"),
|
|
56
60
|
frame: z2.string().describe("Name of a registered frame"),
|
|
57
61
|
title: z2.string().optional().describe(
|
|
58
|
-
|
|
62
|
+
'Optional custom card title. Omit it to use the frame\'s own polished default label (its catalogue `label`, e.g. "OI by Strike") \u2014 that is the norm. Only set this for a genuinely instance-specific label the default can\'t know, e.g. the ticker on a price-chart ("TSLA") or which outlet a news-feed shows. Never abbreviate. Ignored by chrome-less frames like heading.'
|
|
59
63
|
),
|
|
60
64
|
position: GridPositionSchema,
|
|
61
65
|
layouts: z2.record(z2.string(), GridPositionSchema).optional().describe(
|
|
@@ -426,6 +430,7 @@ var SOURCES = {
|
|
|
426
430
|
};
|
|
427
431
|
var clockMeta = defineFrameMeta({
|
|
428
432
|
name: "clock",
|
|
433
|
+
label: "Clock",
|
|
429
434
|
category: "tools",
|
|
430
435
|
iconUrl: widgetIcon("clock"),
|
|
431
436
|
layout: { w: 3, h: 2, minW: 2, minH: 1 },
|
|
@@ -451,6 +456,7 @@ var clockMeta = defineFrameMeta({
|
|
|
451
456
|
});
|
|
452
457
|
var marketHoursMeta = defineFrameMeta({
|
|
453
458
|
name: "market-hours",
|
|
459
|
+
label: "Market Hours",
|
|
454
460
|
category: "tools",
|
|
455
461
|
iconUrl: widgetIcon("market-hours"),
|
|
456
462
|
layout: { w: 4, h: 4, minW: 3, minH: 3 },
|
|
@@ -467,6 +473,7 @@ var marketHoursMeta = defineFrameMeta({
|
|
|
467
473
|
});
|
|
468
474
|
var fearGreedMeta = defineFrameMeta({
|
|
469
475
|
name: "fear-greed",
|
|
476
|
+
label: "Fear & Greed",
|
|
470
477
|
category: "sentiment",
|
|
471
478
|
iconUrl: widgetIcon("fear-greed"),
|
|
472
479
|
layout: { w: 3, h: 3, minW: 2, minH: 2 },
|
|
@@ -479,6 +486,7 @@ var fearGreedMeta = defineFrameMeta({
|
|
|
479
486
|
});
|
|
480
487
|
var fundingRateChartMeta = defineFrameMeta({
|
|
481
488
|
name: "funding-rate-chart",
|
|
489
|
+
label: "Funding Rate Chart",
|
|
482
490
|
category: "derivatives",
|
|
483
491
|
iconUrl: widgetIcon("funding-rate-chart"),
|
|
484
492
|
layout: { w: 6, h: 3, minW: 3, minH: 2 },
|
|
@@ -494,6 +502,7 @@ var fundingRateChartMeta = defineFrameMeta({
|
|
|
494
502
|
});
|
|
495
503
|
var noteMeta = defineFrameMeta({
|
|
496
504
|
name: "note",
|
|
505
|
+
label: "Note",
|
|
497
506
|
category: "layout",
|
|
498
507
|
iconUrl: widgetIcon("note"),
|
|
499
508
|
layout: { w: 4, h: 3, minW: 2, minH: 2 },
|
|
@@ -506,6 +515,7 @@ var noteMeta = defineFrameMeta({
|
|
|
506
515
|
});
|
|
507
516
|
var priceChartMeta = defineFrameMeta({
|
|
508
517
|
name: "price-chart",
|
|
518
|
+
label: "Price Chart",
|
|
509
519
|
category: "markets",
|
|
510
520
|
iconUrl: widgetIcon("price-chart"),
|
|
511
521
|
layout: { w: 6, h: 3, minW: 3, minH: 2 },
|
|
@@ -523,6 +533,7 @@ var priceChartMeta = defineFrameMeta({
|
|
|
523
533
|
});
|
|
524
534
|
var priceLivelineMeta = defineFrameMeta({
|
|
525
535
|
name: "price-liveline",
|
|
536
|
+
label: "Price Liveline",
|
|
526
537
|
category: "markets",
|
|
527
538
|
iconUrl: widgetIcon("price-liveline"),
|
|
528
539
|
layout: { w: 6, h: 3, minW: 4, minH: 2 },
|
|
@@ -543,6 +554,7 @@ var priceLivelineMeta = defineFrameMeta({
|
|
|
543
554
|
});
|
|
544
555
|
var priceTickerMeta = defineFrameMeta({
|
|
545
556
|
name: "price-ticker",
|
|
557
|
+
label: "Price Ticker",
|
|
546
558
|
category: "markets",
|
|
547
559
|
iconUrl: widgetIcon("price-ticker"),
|
|
548
560
|
layout: { w: 3, h: 3, minW: 2, minH: 2 },
|
|
@@ -557,6 +569,7 @@ var priceTickerMeta = defineFrameMeta({
|
|
|
557
569
|
});
|
|
558
570
|
var topMoversMeta = defineFrameMeta({
|
|
559
571
|
name: "top-movers",
|
|
572
|
+
label: "Top Movers",
|
|
560
573
|
category: "markets",
|
|
561
574
|
iconUrl: widgetIcon("top-movers"),
|
|
562
575
|
layout: { w: 5, h: 3, minW: 3, minH: 3 },
|
|
@@ -569,6 +582,7 @@ var topMoversMeta = defineFrameMeta({
|
|
|
569
582
|
});
|
|
570
583
|
var tvlTreemapMeta = defineFrameMeta({
|
|
571
584
|
name: "tvl-treemap",
|
|
585
|
+
label: "TVL Treemap",
|
|
572
586
|
category: "crypto",
|
|
573
587
|
iconUrl: widgetIcon("tvl-treemap"),
|
|
574
588
|
layout: { w: 6, h: 4, minW: 3, minH: 3 },
|
|
@@ -581,6 +595,7 @@ var tvlTreemapMeta = defineFrameMeta({
|
|
|
581
595
|
});
|
|
582
596
|
var bitcoinDominanceMeta = defineFrameMeta({
|
|
583
597
|
name: "bitcoin-dominance",
|
|
598
|
+
label: "Bitcoin Dominance",
|
|
584
599
|
category: "crypto",
|
|
585
600
|
iconUrl: widgetIcon("bitcoin-dominance"),
|
|
586
601
|
layout: { w: 4, h: 2, minW: 3, minH: 2 },
|
|
@@ -595,6 +610,7 @@ var bitcoinDominanceMeta = defineFrameMeta({
|
|
|
595
610
|
});
|
|
596
611
|
var ratesBoardMeta = defineFrameMeta({
|
|
597
612
|
name: "rates-board",
|
|
613
|
+
label: "Rates Board",
|
|
598
614
|
category: "macro",
|
|
599
615
|
iconUrl: widgetIcon("rates-board"),
|
|
600
616
|
layout: { w: 4, h: 4, minW: 3, minH: 3 },
|
|
@@ -611,6 +627,7 @@ var ratesBoardMeta = defineFrameMeta({
|
|
|
611
627
|
});
|
|
612
628
|
var fxBoardMeta = defineFrameMeta({
|
|
613
629
|
name: "fx-board",
|
|
630
|
+
label: "FX Board",
|
|
614
631
|
category: "macro",
|
|
615
632
|
iconUrl: widgetIcon("fx-board"),
|
|
616
633
|
layout: { w: 4, h: 4, minW: 3, minH: 3 },
|
|
@@ -629,6 +646,7 @@ var fxBoardMeta = defineFrameMeta({
|
|
|
629
646
|
});
|
|
630
647
|
var inflationPulseMeta = defineFrameMeta({
|
|
631
648
|
name: "inflation-pulse",
|
|
649
|
+
label: "Inflation Pulse",
|
|
632
650
|
category: "macro",
|
|
633
651
|
iconUrl: widgetIcon("inflation-pulse"),
|
|
634
652
|
layout: { w: 4, h: 3, minW: 3, minH: 2 },
|
|
@@ -641,6 +659,7 @@ var inflationPulseMeta = defineFrameMeta({
|
|
|
641
659
|
});
|
|
642
660
|
var financialStressMeta = defineFrameMeta({
|
|
643
661
|
name: "financial-stress",
|
|
662
|
+
label: "Financial Stress",
|
|
644
663
|
category: "macro",
|
|
645
664
|
iconUrl: widgetIcon("financial-stress"),
|
|
646
665
|
layout: { w: 4, h: 3, minW: 3, minH: 2 },
|
|
@@ -656,6 +675,7 @@ var financialStressMeta = defineFrameMeta({
|
|
|
656
675
|
});
|
|
657
676
|
var nationalDebtMeta = defineFrameMeta({
|
|
658
677
|
name: "national-debt",
|
|
678
|
+
label: "National Debt",
|
|
659
679
|
category: "macro",
|
|
660
680
|
iconUrl: widgetIcon("national-debt"),
|
|
661
681
|
layout: { w: 4, h: 3, minW: 3, minH: 2 },
|
|
@@ -673,6 +693,7 @@ var nationalDebtMeta = defineFrameMeta({
|
|
|
673
693
|
});
|
|
674
694
|
var laborMarketMeta = defineFrameMeta({
|
|
675
695
|
name: "labor-market",
|
|
696
|
+
label: "Labor Market",
|
|
676
697
|
category: "macro",
|
|
677
698
|
iconUrl: widgetIcon("labor-market"),
|
|
678
699
|
layout: { w: 4, h: 3, minW: 3, minH: 2 },
|
|
@@ -685,6 +706,7 @@ var laborMarketMeta = defineFrameMeta({
|
|
|
685
706
|
});
|
|
686
707
|
var treasuryAuctionsMeta = defineFrameMeta({
|
|
687
708
|
name: "treasury-auctions",
|
|
709
|
+
label: "Treasury Auctions",
|
|
688
710
|
category: "macro",
|
|
689
711
|
iconUrl: widgetIcon("treasury-auctions"),
|
|
690
712
|
layout: { w: 5, h: 4, minW: 3, minH: 3 },
|
|
@@ -697,6 +719,7 @@ var treasuryAuctionsMeta = defineFrameMeta({
|
|
|
697
719
|
});
|
|
698
720
|
var filingsFeedMeta = defineFrameMeta({
|
|
699
721
|
name: "filings-feed",
|
|
722
|
+
label: "Filings Feed",
|
|
700
723
|
category: "equities",
|
|
701
724
|
iconUrl: widgetIcon("filings-feed"),
|
|
702
725
|
layout: { w: 5, h: 4, minW: 3, minH: 3 },
|
|
@@ -715,6 +738,7 @@ var filingsFeedMeta = defineFrameMeta({
|
|
|
715
738
|
});
|
|
716
739
|
var yieldCurveMeta = defineFrameMeta({
|
|
717
740
|
name: "yield-curve",
|
|
741
|
+
label: "Yield Curve",
|
|
718
742
|
category: "macro",
|
|
719
743
|
iconUrl: widgetIcon("yield-curve"),
|
|
720
744
|
layout: { w: 4, h: 3, minW: 3, minH: 3 },
|
|
@@ -745,6 +769,7 @@ var yieldCurveMeta = defineFrameMeta({
|
|
|
745
769
|
});
|
|
746
770
|
var fundamentalsMeta = defineFrameMeta({
|
|
747
771
|
name: "fundamentals",
|
|
772
|
+
label: "Fundamentals",
|
|
748
773
|
category: "equities",
|
|
749
774
|
iconUrl: widgetIcon("fundamentals"),
|
|
750
775
|
layout: { w: 4, h: 3, minW: 3, minH: 3 },
|
|
@@ -759,6 +784,7 @@ var fundamentalsMeta = defineFrameMeta({
|
|
|
759
784
|
});
|
|
760
785
|
var shortVolumeMeta = defineFrameMeta({
|
|
761
786
|
name: "short-volume",
|
|
787
|
+
label: "Short Volume",
|
|
762
788
|
category: "equities",
|
|
763
789
|
iconUrl: widgetIcon("short-volume"),
|
|
764
790
|
layout: { w: 5, h: 4, minW: 3, minH: 3 },
|
|
@@ -776,6 +802,7 @@ var shortVolumeMeta = defineFrameMeta({
|
|
|
776
802
|
});
|
|
777
803
|
var fundingHeatmapMeta = defineFrameMeta({
|
|
778
804
|
name: "funding-heatmap",
|
|
805
|
+
label: "Funding Heatmap",
|
|
779
806
|
category: "derivatives",
|
|
780
807
|
iconUrl: widgetIcon("funding-heatmap"),
|
|
781
808
|
layout: { w: 6, h: 3, minW: 4, minH: 3 },
|
|
@@ -790,6 +817,7 @@ var fundingHeatmapMeta = defineFrameMeta({
|
|
|
790
817
|
});
|
|
791
818
|
var dinoGameMeta = defineFrameMeta({
|
|
792
819
|
name: "dino-game",
|
|
820
|
+
label: "Dino Game",
|
|
793
821
|
category: "games",
|
|
794
822
|
iconUrl: widgetIcon("dino-game"),
|
|
795
823
|
layout: { w: 4, h: 3, minW: 3, minH: 3 },
|
|
@@ -799,6 +827,7 @@ var dinoGameMeta = defineFrameMeta({
|
|
|
799
827
|
});
|
|
800
828
|
var imageMeta = defineFrameMeta({
|
|
801
829
|
name: "image",
|
|
830
|
+
label: "Image",
|
|
802
831
|
category: "layout",
|
|
803
832
|
iconUrl: widgetIcon("image"),
|
|
804
833
|
layout: { w: 3, h: 3, minW: 1, minH: 1 },
|
|
@@ -814,6 +843,7 @@ var imageMeta = defineFrameMeta({
|
|
|
814
843
|
});
|
|
815
844
|
var headingMeta = defineFrameMeta({
|
|
816
845
|
name: "heading",
|
|
846
|
+
label: "Heading",
|
|
817
847
|
category: "layout",
|
|
818
848
|
iconUrl: widgetIcon("heading"),
|
|
819
849
|
layout: { w: 12, h: 1, minW: 2, minH: 1, maxH: 1 },
|
|
@@ -827,6 +857,7 @@ var headingMeta = defineFrameMeta({
|
|
|
827
857
|
});
|
|
828
858
|
var dailyAnalysisMeta = defineFrameMeta({
|
|
829
859
|
name: "daily-analysis",
|
|
860
|
+
label: "Daily Analysis",
|
|
830
861
|
category: "tools",
|
|
831
862
|
iconUrl: widgetIcon("daily-analysis"),
|
|
832
863
|
layout: { w: 6, h: 3, minW: 3, minH: 2 },
|
|
@@ -846,6 +877,7 @@ var dailyAnalysisMeta = defineFrameMeta({
|
|
|
846
877
|
});
|
|
847
878
|
var journalLogMeta = defineFrameMeta({
|
|
848
879
|
name: "journal-log",
|
|
880
|
+
label: "Journal \xB7 Log",
|
|
849
881
|
category: "journal",
|
|
850
882
|
iconUrl: widgetIcon("journal-log"),
|
|
851
883
|
layout: { w: 4, h: 5, minW: 3, minH: 4 },
|
|
@@ -856,6 +888,7 @@ var journalLogMeta = defineFrameMeta({
|
|
|
856
888
|
});
|
|
857
889
|
var journalOpenMeta = defineFrameMeta({
|
|
858
890
|
name: "journal-open",
|
|
891
|
+
label: "Journal \xB7 Open",
|
|
859
892
|
category: "journal",
|
|
860
893
|
iconUrl: widgetIcon("journal-open"),
|
|
861
894
|
layout: { w: 4, h: 4, minW: 3, minH: 3 },
|
|
@@ -868,6 +901,7 @@ var journalOpenMeta = defineFrameMeta({
|
|
|
868
901
|
});
|
|
869
902
|
var journalResultsMeta = defineFrameMeta({
|
|
870
903
|
name: "journal-results",
|
|
904
|
+
label: "Journal \xB7 Results",
|
|
871
905
|
category: "journal",
|
|
872
906
|
iconUrl: widgetIcon("journal-results"),
|
|
873
907
|
layout: { w: 4, h: 4, minW: 3, minH: 3 },
|
|
@@ -879,6 +913,7 @@ var journalResultsMeta = defineFrameMeta({
|
|
|
879
913
|
});
|
|
880
914
|
var journalScoreMeta = defineFrameMeta({
|
|
881
915
|
name: "journal-score",
|
|
916
|
+
label: "Journal \xB7 Scoreboard",
|
|
882
917
|
category: "journal",
|
|
883
918
|
iconUrl: widgetIcon("journal-score"),
|
|
884
919
|
layout: { w: 4, h: 2, minW: 3, minH: 2 },
|
|
@@ -888,6 +923,7 @@ var journalScoreMeta = defineFrameMeta({
|
|
|
888
923
|
});
|
|
889
924
|
var priceCompareMeta = defineFrameMeta({
|
|
890
925
|
name: "price-compare",
|
|
926
|
+
label: "Price Compare",
|
|
891
927
|
category: "markets",
|
|
892
928
|
iconUrl: widgetIcon("price-compare"),
|
|
893
929
|
layout: { w: 6, h: 3, minW: 3, minH: 2 },
|
|
@@ -914,6 +950,7 @@ var portfolioConfigShape = {
|
|
|
914
950
|
};
|
|
915
951
|
var portfolioValueMeta = defineFrameMeta({
|
|
916
952
|
name: "portfolio-value",
|
|
953
|
+
label: "Portfolio Value",
|
|
917
954
|
category: "portfolio",
|
|
918
955
|
iconUrl: widgetIcon("portfolio-value"),
|
|
919
956
|
layout: { w: 5, h: 4, minW: 3, minH: 3 },
|
|
@@ -929,6 +966,7 @@ var portfolioValueMeta = defineFrameMeta({
|
|
|
929
966
|
});
|
|
930
967
|
var portfolioAllocationMeta = defineFrameMeta({
|
|
931
968
|
name: "portfolio-allocation",
|
|
969
|
+
label: "Portfolio Allocation",
|
|
932
970
|
category: "portfolio",
|
|
933
971
|
iconUrl: widgetIcon("portfolio-allocation"),
|
|
934
972
|
layout: { w: 4, h: 4, minW: 3, minH: 3 },
|
|
@@ -939,6 +977,7 @@ var portfolioAllocationMeta = defineFrameMeta({
|
|
|
939
977
|
});
|
|
940
978
|
var portfolioHoldingsMeta = defineFrameMeta({
|
|
941
979
|
name: "portfolio-holdings",
|
|
980
|
+
label: "Portfolio Holdings",
|
|
942
981
|
category: "portfolio",
|
|
943
982
|
iconUrl: widgetIcon("portfolio-holdings"),
|
|
944
983
|
layout: { w: 4, h: 4, minW: 3, minH: 3 },
|
|
@@ -949,6 +988,7 @@ var portfolioHoldingsMeta = defineFrameMeta({
|
|
|
949
988
|
});
|
|
950
989
|
var newsFeedMeta = defineFrameMeta({
|
|
951
990
|
name: "news-feed",
|
|
991
|
+
label: "News Feed",
|
|
952
992
|
category: "sentiment",
|
|
953
993
|
iconUrl: widgetIcon("news-feed"),
|
|
954
994
|
layout: { w: 4, h: 4, minW: 3, minH: 3 },
|
|
@@ -973,6 +1013,7 @@ var newsFeedMeta = defineFrameMeta({
|
|
|
973
1013
|
});
|
|
974
1014
|
var dexVolumeTreemapMeta = defineFrameMeta({
|
|
975
1015
|
name: "dex-volume-treemap",
|
|
1016
|
+
label: "DEX Volume Treemap",
|
|
976
1017
|
category: "crypto",
|
|
977
1018
|
iconUrl: widgetIcon("dex-volume-treemap"),
|
|
978
1019
|
layout: { w: 6, h: 4, minW: 3, minH: 3 },
|
|
@@ -985,6 +1026,7 @@ var dexVolumeTreemapMeta = defineFrameMeta({
|
|
|
985
1026
|
});
|
|
986
1027
|
var dexVolumeChartMeta = defineFrameMeta({
|
|
987
1028
|
name: "dex-volume-chart",
|
|
1029
|
+
label: "DEX Volume Chart",
|
|
988
1030
|
category: "crypto",
|
|
989
1031
|
iconUrl: widgetIcon("dex-volume-chart"),
|
|
990
1032
|
layout: { w: 6, h: 3, minW: 3, minH: 2 },
|
|
@@ -1000,6 +1042,7 @@ var dexVolumeChartMeta = defineFrameMeta({
|
|
|
1000
1042
|
});
|
|
1001
1043
|
var protocolTvlTreemapMeta = defineFrameMeta({
|
|
1002
1044
|
name: "protocol-tvl-treemap",
|
|
1045
|
+
label: "Protocol TVL Treemap",
|
|
1003
1046
|
category: "crypto",
|
|
1004
1047
|
iconUrl: widgetIcon("protocol-tvl-treemap"),
|
|
1005
1048
|
layout: { w: 6, h: 4, minW: 3, minH: 3 },
|
|
@@ -1012,6 +1055,7 @@ var protocolTvlTreemapMeta = defineFrameMeta({
|
|
|
1012
1055
|
});
|
|
1013
1056
|
var protocolTvlChartMeta = defineFrameMeta({
|
|
1014
1057
|
name: "protocol-tvl-chart",
|
|
1058
|
+
label: "Protocol TVL Chart",
|
|
1015
1059
|
category: "crypto",
|
|
1016
1060
|
iconUrl: widgetIcon("protocol-tvl-chart"),
|
|
1017
1061
|
layout: { w: 6, h: 3, minW: 3, minH: 2 },
|
|
@@ -1027,6 +1071,7 @@ var protocolTvlChartMeta = defineFrameMeta({
|
|
|
1027
1071
|
});
|
|
1028
1072
|
var protocolFeesTreemapMeta = defineFrameMeta({
|
|
1029
1073
|
name: "protocol-fees-treemap",
|
|
1074
|
+
label: "Protocol Fees Treemap",
|
|
1030
1075
|
category: "crypto",
|
|
1031
1076
|
iconUrl: widgetIcon("protocol-fees-treemap"),
|
|
1032
1077
|
layout: { w: 6, h: 4, minW: 3, minH: 3 },
|
|
@@ -1039,6 +1084,7 @@ var protocolFeesTreemapMeta = defineFrameMeta({
|
|
|
1039
1084
|
});
|
|
1040
1085
|
var marketCapTreemapMeta = defineFrameMeta({
|
|
1041
1086
|
name: "market-cap-treemap",
|
|
1087
|
+
label: "Market Cap Treemap",
|
|
1042
1088
|
category: "crypto",
|
|
1043
1089
|
iconUrl: widgetIcon("market-cap-treemap"),
|
|
1044
1090
|
layout: { w: 6, h: 4, minW: 3, minH: 3 },
|
|
@@ -1053,6 +1099,7 @@ var marketCapTreemapMeta = defineFrameMeta({
|
|
|
1053
1099
|
});
|
|
1054
1100
|
var openInterestMeta = defineFrameMeta({
|
|
1055
1101
|
name: "open-interest",
|
|
1102
|
+
label: "Open Interest",
|
|
1056
1103
|
category: "derivatives",
|
|
1057
1104
|
iconUrl: widgetIcon("open-interest"),
|
|
1058
1105
|
layout: { w: 4, h: 3, minW: 3, minH: 2 },
|
|
@@ -1067,6 +1114,7 @@ var openInterestMeta = defineFrameMeta({
|
|
|
1067
1114
|
});
|
|
1068
1115
|
var snakeMeta = defineFrameMeta({
|
|
1069
1116
|
name: "snake",
|
|
1117
|
+
label: "Snake",
|
|
1070
1118
|
category: "games",
|
|
1071
1119
|
iconUrl: widgetIcon("snake"),
|
|
1072
1120
|
layout: { w: 4, h: 4, minW: 3, minH: 3 },
|
|
@@ -1076,6 +1124,7 @@ var snakeMeta = defineFrameMeta({
|
|
|
1076
1124
|
});
|
|
1077
1125
|
var flappyBirdMeta = defineFrameMeta({
|
|
1078
1126
|
name: "flappy-bird",
|
|
1127
|
+
label: "Flappy Bird",
|
|
1079
1128
|
category: "games",
|
|
1080
1129
|
iconUrl: widgetIcon("flappy-bird"),
|
|
1081
1130
|
layout: { w: 4, h: 4, minW: 3, minH: 3 },
|
|
@@ -1085,6 +1134,7 @@ var flappyBirdMeta = defineFrameMeta({
|
|
|
1085
1134
|
});
|
|
1086
1135
|
var videoMeta = defineFrameMeta({
|
|
1087
1136
|
name: "video",
|
|
1137
|
+
label: "Video",
|
|
1088
1138
|
category: "layout",
|
|
1089
1139
|
iconUrl: widgetIcon("video"),
|
|
1090
1140
|
layout: { w: 4, h: 3, minW: 2, minH: 2 },
|
|
@@ -1099,6 +1149,7 @@ var videoMeta = defineFrameMeta({
|
|
|
1099
1149
|
});
|
|
1100
1150
|
var drawdyMeta = defineFrameMeta({
|
|
1101
1151
|
name: "drawdy",
|
|
1152
|
+
label: "Drawdy",
|
|
1102
1153
|
category: "layout",
|
|
1103
1154
|
iconUrl: widgetIcon("drawdy"),
|
|
1104
1155
|
layout: { w: 8, h: 6, minW: 2, minH: 2 },
|
|
@@ -1108,6 +1159,7 @@ var drawdyMeta = defineFrameMeta({
|
|
|
1108
1159
|
});
|
|
1109
1160
|
var countdownMeta = defineFrameMeta({
|
|
1110
1161
|
name: "countdown",
|
|
1162
|
+
label: "Countdown",
|
|
1111
1163
|
category: "tools",
|
|
1112
1164
|
iconUrl: widgetIcon("countdown"),
|
|
1113
1165
|
layout: { w: 3, h: 2, minW: 2, minH: 1 },
|
|
@@ -1125,6 +1177,7 @@ var countdownMeta = defineFrameMeta({
|
|
|
1125
1177
|
});
|
|
1126
1178
|
var linkGridMeta = defineFrameMeta({
|
|
1127
1179
|
name: "link-grid",
|
|
1180
|
+
label: "Quick Links",
|
|
1128
1181
|
category: "tools",
|
|
1129
1182
|
iconUrl: widgetIcon("link-grid"),
|
|
1130
1183
|
layout: { w: 3, h: 2, minW: 2, minH: 1 },
|
|
@@ -1156,6 +1209,7 @@ var linkGridMeta = defineFrameMeta({
|
|
|
1156
1209
|
});
|
|
1157
1210
|
var calculatorMeta = defineFrameMeta({
|
|
1158
1211
|
name: "calculator",
|
|
1212
|
+
label: "Position Calculator",
|
|
1159
1213
|
category: "tools",
|
|
1160
1214
|
iconUrl: widgetIcon("calculator"),
|
|
1161
1215
|
layout: { w: 3, h: 3, minW: 2, minH: 2 },
|
|
@@ -1173,6 +1227,7 @@ var calculatorMeta = defineFrameMeta({
|
|
|
1173
1227
|
});
|
|
1174
1228
|
var quoteMeta = defineFrameMeta({
|
|
1175
1229
|
name: "quote",
|
|
1230
|
+
label: "Quote",
|
|
1176
1231
|
category: "layout",
|
|
1177
1232
|
iconUrl: widgetIcon("quote"),
|
|
1178
1233
|
layout: { w: 4, h: 2, minW: 2, minH: 1 },
|
|
@@ -1193,6 +1248,7 @@ var quoteMeta = defineFrameMeta({
|
|
|
1193
1248
|
});
|
|
1194
1249
|
var dividerMeta = defineFrameMeta({
|
|
1195
1250
|
name: "divider",
|
|
1251
|
+
label: "Divider",
|
|
1196
1252
|
category: "layout",
|
|
1197
1253
|
iconUrl: widgetIcon("divider"),
|
|
1198
1254
|
layout: { w: 12, h: 1, minW: 1, minH: 1 },
|
|
@@ -1211,6 +1267,7 @@ var dividerMeta = defineFrameMeta({
|
|
|
1211
1267
|
});
|
|
1212
1268
|
var diceMeta = defineFrameMeta({
|
|
1213
1269
|
name: "dice",
|
|
1270
|
+
label: "Dice",
|
|
1214
1271
|
category: "tools",
|
|
1215
1272
|
iconUrl: widgetIcon("dice"),
|
|
1216
1273
|
layout: { w: 2, h: 2, minW: 1, minH: 1 },
|
|
@@ -1226,6 +1283,7 @@ var diceMeta = defineFrameMeta({
|
|
|
1226
1283
|
});
|
|
1227
1284
|
var riskRewardMeta = defineFrameMeta({
|
|
1228
1285
|
name: "risk-reward",
|
|
1286
|
+
label: "Risk / Reward",
|
|
1229
1287
|
category: "tools",
|
|
1230
1288
|
iconUrl: widgetIcon("risk-reward"),
|
|
1231
1289
|
layout: { w: 3, h: 3, minW: 2, minH: 2 },
|
|
@@ -1243,6 +1301,7 @@ var riskRewardMeta = defineFrameMeta({
|
|
|
1243
1301
|
});
|
|
1244
1302
|
var marqueeMeta = defineFrameMeta({
|
|
1245
1303
|
name: "marquee",
|
|
1304
|
+
label: "Marquee",
|
|
1246
1305
|
category: "layout",
|
|
1247
1306
|
iconUrl: widgetIcon("marquee"),
|
|
1248
1307
|
layout: { w: 6, h: 1, minW: 2, minH: 1 },
|
|
@@ -1257,6 +1316,7 @@ var marqueeMeta = defineFrameMeta({
|
|
|
1257
1316
|
});
|
|
1258
1317
|
var stopwatchMeta = defineFrameMeta({
|
|
1259
1318
|
name: "stopwatch",
|
|
1319
|
+
label: "Stopwatch",
|
|
1260
1320
|
layout: { w: 3, h: 2, minW: 2, minH: 1 },
|
|
1261
1321
|
category: "tools",
|
|
1262
1322
|
iconUrl: widgetIcon("stopwatch"),
|
|
@@ -1274,6 +1334,7 @@ var stopwatchMeta = defineFrameMeta({
|
|
|
1274
1334
|
});
|
|
1275
1335
|
var sessionProgressMeta = defineFrameMeta({
|
|
1276
1336
|
name: "session-progress",
|
|
1337
|
+
label: "Session Progress",
|
|
1277
1338
|
category: "tools",
|
|
1278
1339
|
iconUrl: widgetIcon("session-progress"),
|
|
1279
1340
|
layout: { w: 3, h: 2, minW: 2, minH: 1 },
|
|
@@ -1287,6 +1348,7 @@ var sessionProgressMeta = defineFrameMeta({
|
|
|
1287
1348
|
});
|
|
1288
1349
|
var holidayCalendarMeta = defineFrameMeta({
|
|
1289
1350
|
name: "holiday-calendar",
|
|
1351
|
+
label: "Holiday Calendar",
|
|
1290
1352
|
category: "tools",
|
|
1291
1353
|
iconUrl: widgetIcon("holiday-calendar"),
|
|
1292
1354
|
layout: { w: 3, h: 4, minW: 2, minH: 2 },
|
|
@@ -1300,6 +1362,7 @@ var holidayCalendarMeta = defineFrameMeta({
|
|
|
1300
1362
|
});
|
|
1301
1363
|
var dayMeterMeta = defineFrameMeta({
|
|
1302
1364
|
name: "day-meter",
|
|
1365
|
+
label: "Day Meter",
|
|
1303
1366
|
category: "tools",
|
|
1304
1367
|
iconUrl: widgetIcon("day-meter"),
|
|
1305
1368
|
layout: { w: 4, h: 2, minW: 2, minH: 1 },
|
|
@@ -1315,6 +1378,7 @@ var dayMeterMeta = defineFrameMeta({
|
|
|
1315
1378
|
});
|
|
1316
1379
|
var returnsProjectorMeta = defineFrameMeta({
|
|
1317
1380
|
name: "returns-projector",
|
|
1381
|
+
label: "Returns Projector",
|
|
1318
1382
|
category: "tools",
|
|
1319
1383
|
iconUrl: widgetIcon("returns-projector"),
|
|
1320
1384
|
layout: { w: 3, h: 4, minW: 2, minH: 3 },
|
|
@@ -1330,6 +1394,7 @@ var returnsProjectorMeta = defineFrameMeta({
|
|
|
1330
1394
|
});
|
|
1331
1395
|
var breakevenMeta = defineFrameMeta({
|
|
1332
1396
|
name: "breakeven",
|
|
1397
|
+
label: "Break-even",
|
|
1333
1398
|
category: "tools",
|
|
1334
1399
|
iconUrl: widgetIcon("breakeven"),
|
|
1335
1400
|
layout: { w: 3, h: 4, minW: 2, minH: 2 },
|
|
@@ -1352,6 +1417,7 @@ var breakevenMeta = defineFrameMeta({
|
|
|
1352
1417
|
});
|
|
1353
1418
|
var checklistMeta = defineFrameMeta({
|
|
1354
1419
|
name: "checklist",
|
|
1420
|
+
label: "Checklist",
|
|
1355
1421
|
category: "tools",
|
|
1356
1422
|
iconUrl: widgetIcon("checklist"),
|
|
1357
1423
|
layout: { w: 3, h: 3, minW: 2, minH: 2 },
|
|
@@ -1371,6 +1437,7 @@ var checklistMeta = defineFrameMeta({
|
|
|
1371
1437
|
});
|
|
1372
1438
|
var pomodoroMeta = defineFrameMeta({
|
|
1373
1439
|
name: "pomodoro",
|
|
1440
|
+
label: "Pomodoro",
|
|
1374
1441
|
category: "tools",
|
|
1375
1442
|
iconUrl: widgetIcon("pomodoro"),
|
|
1376
1443
|
layout: { w: 3, h: 3, minW: 2, minH: 2 },
|
|
@@ -1385,6 +1452,7 @@ var pomodoroMeta = defineFrameMeta({
|
|
|
1385
1452
|
});
|
|
1386
1453
|
var rulesCardMeta = defineFrameMeta({
|
|
1387
1454
|
name: "rules-card",
|
|
1455
|
+
label: "Rules",
|
|
1388
1456
|
category: "layout",
|
|
1389
1457
|
iconUrl: widgetIcon("rules-card"),
|
|
1390
1458
|
layout: { w: 3, h: 3, minW: 2, minH: 2 },
|
|
@@ -1401,6 +1469,7 @@ var rulesCardMeta = defineFrameMeta({
|
|
|
1401
1469
|
});
|
|
1402
1470
|
var breathingMeta = defineFrameMeta({
|
|
1403
1471
|
name: "breathing",
|
|
1472
|
+
label: "Breathing",
|
|
1404
1473
|
category: "layout",
|
|
1405
1474
|
iconUrl: widgetIcon("breathing"),
|
|
1406
1475
|
chrome: "bare",
|
|
@@ -1416,6 +1485,7 @@ var breathingMeta = defineFrameMeta({
|
|
|
1416
1485
|
});
|
|
1417
1486
|
var spotifyEmbedMeta = defineFrameMeta({
|
|
1418
1487
|
name: "spotify-embed",
|
|
1488
|
+
label: "Spotify",
|
|
1419
1489
|
category: "layout",
|
|
1420
1490
|
iconUrl: widgetIcon("spotify-embed"),
|
|
1421
1491
|
layout: { w: 3, h: 4, minW: 2, minH: 2 },
|
|
@@ -1430,6 +1500,7 @@ var spotifyEmbedMeta = defineFrameMeta({
|
|
|
1430
1500
|
});
|
|
1431
1501
|
var btcFeesMeta = defineFrameMeta({
|
|
1432
1502
|
name: "btc-fees",
|
|
1503
|
+
label: "BTC Fees",
|
|
1433
1504
|
category: "bitcoin",
|
|
1434
1505
|
iconUrl: widgetIcon("btc-fees"),
|
|
1435
1506
|
layout: { w: 3, h: 2, minW: 2, minH: 2 },
|
|
@@ -1444,6 +1515,7 @@ var btcFeesMeta = defineFrameMeta({
|
|
|
1444
1515
|
});
|
|
1445
1516
|
var btcMempoolMeta = defineFrameMeta({
|
|
1446
1517
|
name: "btc-mempool",
|
|
1518
|
+
label: "BTC Mempool",
|
|
1447
1519
|
category: "bitcoin",
|
|
1448
1520
|
iconUrl: widgetIcon("btc-mempool"),
|
|
1449
1521
|
layout: { w: 5, h: 3, minW: 3, minH: 2 },
|
|
@@ -1458,6 +1530,7 @@ var btcMempoolMeta = defineFrameMeta({
|
|
|
1458
1530
|
});
|
|
1459
1531
|
var btcBlocksMeta = defineFrameMeta({
|
|
1460
1532
|
name: "btc-blocks",
|
|
1533
|
+
label: "BTC Blocks",
|
|
1461
1534
|
category: "bitcoin",
|
|
1462
1535
|
iconUrl: widgetIcon("btc-blocks"),
|
|
1463
1536
|
layout: { w: 5, h: 4, minW: 3, minH: 3 },
|
|
@@ -1470,6 +1543,7 @@ var btcBlocksMeta = defineFrameMeta({
|
|
|
1470
1543
|
});
|
|
1471
1544
|
var btcHashrateMeta = defineFrameMeta({
|
|
1472
1545
|
name: "btc-hashrate",
|
|
1546
|
+
label: "BTC Hashrate",
|
|
1473
1547
|
category: "bitcoin",
|
|
1474
1548
|
iconUrl: widgetIcon("btc-hashrate"),
|
|
1475
1549
|
layout: { w: 6, h: 3, minW: 3, minH: 2 },
|
|
@@ -1482,6 +1556,7 @@ var btcHashrateMeta = defineFrameMeta({
|
|
|
1482
1556
|
});
|
|
1483
1557
|
var btcDifficultyMeta = defineFrameMeta({
|
|
1484
1558
|
name: "btc-difficulty",
|
|
1559
|
+
label: "BTC Difficulty",
|
|
1485
1560
|
category: "bitcoin",
|
|
1486
1561
|
iconUrl: widgetIcon("btc-difficulty"),
|
|
1487
1562
|
layout: { w: 4, h: 3, minW: 3, minH: 2 },
|
|
@@ -1496,6 +1571,7 @@ var btcDifficultyMeta = defineFrameMeta({
|
|
|
1496
1571
|
});
|
|
1497
1572
|
var miningPoolsMeta = defineFrameMeta({
|
|
1498
1573
|
name: "mining-pools",
|
|
1574
|
+
label: "Mining Pools",
|
|
1499
1575
|
category: "bitcoin",
|
|
1500
1576
|
iconUrl: widgetIcon("mining-pools"),
|
|
1501
1577
|
layout: { w: 6, h: 4, minW: 3, minH: 3 },
|
|
@@ -1511,6 +1587,7 @@ var miningPoolsMeta = defineFrameMeta({
|
|
|
1511
1587
|
});
|
|
1512
1588
|
var lightningStatsMeta = defineFrameMeta({
|
|
1513
1589
|
name: "lightning-stats",
|
|
1590
|
+
label: "Lightning Network",
|
|
1514
1591
|
category: "bitcoin",
|
|
1515
1592
|
iconUrl: widgetIcon("lightning-stats"),
|
|
1516
1593
|
layout: { w: 4, h: 3, minW: 3, minH: 2 },
|
|
@@ -1525,6 +1602,7 @@ var lightningStatsMeta = defineFrameMeta({
|
|
|
1525
1602
|
});
|
|
1526
1603
|
var optionsPutCallMeta = defineFrameMeta({
|
|
1527
1604
|
name: "options-put-call",
|
|
1605
|
+
label: "Put / Call Ratio",
|
|
1528
1606
|
category: "derivatives",
|
|
1529
1607
|
iconUrl: widgetIcon("options-put-call"),
|
|
1530
1608
|
layout: { w: 4, h: 3, minW: 3, minH: 2 },
|
|
@@ -1542,6 +1620,7 @@ var optionsPutCallMeta = defineFrameMeta({
|
|
|
1542
1620
|
});
|
|
1543
1621
|
var optionsIvMeta = defineFrameMeta({
|
|
1544
1622
|
name: "options-iv",
|
|
1623
|
+
label: "Implied Volatility",
|
|
1545
1624
|
category: "derivatives",
|
|
1546
1625
|
iconUrl: widgetIcon("options-iv"),
|
|
1547
1626
|
layout: { w: 6, h: 3, minW: 3, minH: 2 },
|
|
@@ -1555,6 +1634,7 @@ var optionsIvMeta = defineFrameMeta({
|
|
|
1555
1634
|
});
|
|
1556
1635
|
var optionsOiStrikeMeta = defineFrameMeta({
|
|
1557
1636
|
name: "options-oi-strike",
|
|
1637
|
+
label: "OI by Strike",
|
|
1558
1638
|
category: "derivatives",
|
|
1559
1639
|
iconUrl: widgetIcon("options-oi-strike"),
|
|
1560
1640
|
layout: { w: 6, h: 4, minW: 4, minH: 3 },
|
|
@@ -1570,6 +1650,7 @@ var optionsOiStrikeMeta = defineFrameMeta({
|
|
|
1570
1650
|
});
|
|
1571
1651
|
var coinMoversMeta = defineFrameMeta({
|
|
1572
1652
|
name: "coin-movers",
|
|
1653
|
+
label: "Coin Movers",
|
|
1573
1654
|
category: "markets",
|
|
1574
1655
|
iconUrl: widgetIcon("coin-movers"),
|
|
1575
1656
|
layout: { w: 5, h: 4, minW: 3, minH: 3 },
|
|
@@ -2093,6 +2174,21 @@ function claudeDelta(line) {
|
|
|
2093
2174
|
const delta = o.event?.type === "content_block_delta" ? o.event.delta : void 0;
|
|
2094
2175
|
return delta?.type === "text_delta" && typeof delta.text === "string" ? delta.text : null;
|
|
2095
2176
|
}
|
|
2177
|
+
function claudeStatus(line) {
|
|
2178
|
+
const o = tryParse(line);
|
|
2179
|
+
if (o?.type !== "stream_event") return null;
|
|
2180
|
+
if (o.event?.type !== "content_block_start") return null;
|
|
2181
|
+
const block = o.event.content_block;
|
|
2182
|
+
if (block?.type !== "tool_use") return null;
|
|
2183
|
+
switch (block.name) {
|
|
2184
|
+
case "WebSearch":
|
|
2185
|
+
return "searching the web\u2026";
|
|
2186
|
+
case "WebFetch":
|
|
2187
|
+
return "reading a page\u2026";
|
|
2188
|
+
default:
|
|
2189
|
+
return null;
|
|
2190
|
+
}
|
|
2191
|
+
}
|
|
2096
2192
|
function claudeResult(stdout) {
|
|
2097
2193
|
let result = null;
|
|
2098
2194
|
let deltas = "";
|
|
@@ -2118,15 +2214,24 @@ var RUNNERS = [
|
|
|
2118
2214
|
// answer is generated; --verbose is required alongside it under -p, and
|
|
2119
2215
|
// --include-partial-messages adds the token-level `content_block_delta`
|
|
2120
2216
|
// events we relay live. The canonical answer is the closing `result` event.
|
|
2217
|
+
// --allowedTools whitelists WebSearch/WebFetch so zAI can look up news +
|
|
2218
|
+
// context; in headless -p that also KEEPS Bash/Write/Edit blocked (only
|
|
2219
|
+
// allowlisted tools auto-approve), so it can search the web but can't wander
|
|
2220
|
+
// the dashboard folder we run it in. Search results interleave as tool
|
|
2221
|
+
// events the delta parser ignores, then the text answer streams as usual.
|
|
2121
2222
|
buildArgs: (prompt) => [
|
|
2122
2223
|
"-p",
|
|
2123
2224
|
prompt,
|
|
2124
2225
|
"--output-format",
|
|
2125
2226
|
"stream-json",
|
|
2126
2227
|
"--verbose",
|
|
2127
|
-
"--include-partial-messages"
|
|
2228
|
+
"--include-partial-messages",
|
|
2229
|
+
"--allowedTools",
|
|
2230
|
+
"WebSearch",
|
|
2231
|
+
"WebFetch"
|
|
2128
2232
|
],
|
|
2129
2233
|
parseDelta: claudeDelta,
|
|
2234
|
+
parseStatus: claudeStatus,
|
|
2130
2235
|
readResult: async (stdout) => claudeResult(stdout)
|
|
2131
2236
|
},
|
|
2132
2237
|
{
|
|
@@ -2136,7 +2241,12 @@ var RUNNERS = [
|
|
|
2136
2241
|
// `exec` is non-interactive; read-only sandbox so a Q&A can't mutate
|
|
2137
2242
|
// anything, and -o writes ONLY the final message to a file (stdout carries
|
|
2138
2243
|
// session noise). --skip-git-repo-check so it runs outside a repo too.
|
|
2244
|
+
// --search enables the native web_search tool for news + context (a network
|
|
2245
|
+
// read, orthogonal to the read-only filesystem sandbox). It's a TOP-LEVEL
|
|
2246
|
+
// codex flag, so it must precede the `exec` subcommand — after it, exec's
|
|
2247
|
+
// parser rejects it as an unknown argument.
|
|
2139
2248
|
buildArgs: (prompt, outFile) => [
|
|
2249
|
+
"--search",
|
|
2140
2250
|
"exec",
|
|
2141
2251
|
"--skip-git-repo-check",
|
|
2142
2252
|
"-s",
|
|
@@ -2228,13 +2338,15 @@ ${frameCatalogue}${grounding}
|
|
|
2228
2338
|
|
|
2229
2339
|
${transcript}Stay strictly on topic. Only answer questions about zframes itself (its frames, data, dashboard, and how to use it) and about markets and finance \u2014 stocks, crypto, prices, funding, market caps, on-chain and macro data, and the symbols on screen. If the question is about anything else (general knowledge, coding, personal advice, writing, other software, etc.), do not answer it: reply in one sentence that you only cover zframes and the markets it tracks, and invite a market or dashboard question instead.
|
|
2230
2340
|
|
|
2231
|
-
|
|
2341
|
+
You may use web search when it helps \u2014 for news, catalysts, or context not in the live readings above. Be explicit in your answer about where each fact comes from: say when a number or fact is from the live dashboard readings above versus from the web, and name the web source (e.g. "per Reuters"). For anything shown on the dashboard, treat the live readings above as the source of truth \u2014 don't override them with a web figure.
|
|
2342
|
+
|
|
2343
|
+
Answer the user's question in 2\u20134 sentences of plain text \u2014 no markdown headings, no preamble.
|
|
2232
2344
|
|
|
2233
2345
|
Question: ${question}`
|
|
2234
2346
|
);
|
|
2235
2347
|
}
|
|
2236
2348
|
var askCounter = 0;
|
|
2237
|
-
function runAgent(runner, prompt, cwd, onDelta) {
|
|
2349
|
+
function runAgent(runner, prompt, cwd, onDelta, onStatus) {
|
|
2238
2350
|
const outFile = join2(
|
|
2239
2351
|
tmpdir(),
|
|
2240
2352
|
`zframes-ask-${process.pid}-${++askCounter}.txt`
|
|
@@ -2264,10 +2376,14 @@ function runAgent(runner, prompt, cwd, onDelta) {
|
|
|
2264
2376
|
child.kill("SIGKILL");
|
|
2265
2377
|
finish({ ok: false, error: `${runner.label} timed out` });
|
|
2266
2378
|
}, RUN_TIMEOUT_MS);
|
|
2267
|
-
const streaming = Boolean(
|
|
2379
|
+
const streaming = Boolean(
|
|
2380
|
+
onDelta && runner.parseDelta || onStatus && runner.parseStatus
|
|
2381
|
+
);
|
|
2268
2382
|
const emit = (line) => {
|
|
2269
2383
|
const delta = runner.parseDelta?.(line);
|
|
2270
2384
|
if (delta) onDelta?.(delta);
|
|
2385
|
+
const status = runner.parseStatus?.(line);
|
|
2386
|
+
if (status) onStatus?.(status);
|
|
2271
2387
|
};
|
|
2272
2388
|
child.stdout?.on("data", (d) => {
|
|
2273
2389
|
stdout += d;
|
|
@@ -2390,7 +2506,8 @@ function handleAsk(req, res, specFile, catalogue) {
|
|
|
2390
2506
|
runner,
|
|
2391
2507
|
prompt,
|
|
2392
2508
|
dirname2(specFile),
|
|
2393
|
-
(text) => send({ type: "delta", text })
|
|
2509
|
+
(text) => send({ type: "delta", text }),
|
|
2510
|
+
(text) => send({ type: "status", text })
|
|
2394
2511
|
);
|
|
2395
2512
|
if (result.ok)
|
|
2396
2513
|
send({ type: "done", agent: runner.id, answer: result.answer });
|
|
@@ -3185,6 +3302,25 @@ async function info(body) {
|
|
|
3185
3302
|
}
|
|
3186
3303
|
});
|
|
3187
3304
|
}
|
|
3305
|
+
var dayStatsCache = new TtlCache({
|
|
3306
|
+
namespace: "zframes:hyperliquid:daystats",
|
|
3307
|
+
ttlMs: 25e3
|
|
3308
|
+
});
|
|
3309
|
+
var openInterestCache = new TtlCache({
|
|
3310
|
+
namespace: "zframes:hyperliquid:oi",
|
|
3311
|
+
ttlMs: 25e3
|
|
3312
|
+
});
|
|
3313
|
+
var candlesCache = new TtlCache({
|
|
3314
|
+
namespace: "zframes:hyperliquid:candles",
|
|
3315
|
+
ttlMs: 55e3,
|
|
3316
|
+
persist: true
|
|
3317
|
+
});
|
|
3318
|
+
var fundingCache = new TtlCache({
|
|
3319
|
+
namespace: "zframes:hyperliquid:funding",
|
|
3320
|
+
ttlMs: 4.5 * 6e4,
|
|
3321
|
+
persist: true
|
|
3322
|
+
});
|
|
3323
|
+
var sortedKey = (symbols) => symbols ? [...symbols].sort().join(",") : "*";
|
|
3188
3324
|
var HyperliquidProvider = class {
|
|
3189
3325
|
name = "hyperliquid";
|
|
3190
3326
|
capabilities = [
|
|
@@ -3214,7 +3350,13 @@ var HyperliquidProvider = class {
|
|
|
3214
3350
|
if (this.listeners.size === 0) this.teardown();
|
|
3215
3351
|
};
|
|
3216
3352
|
}
|
|
3217
|
-
|
|
3353
|
+
getDayStats(symbols) {
|
|
3354
|
+
return dayStatsCache.get(
|
|
3355
|
+
sortedKey(symbols),
|
|
3356
|
+
() => this.fetchDayStats(symbols)
|
|
3357
|
+
);
|
|
3358
|
+
}
|
|
3359
|
+
async fetchDayStats(symbols) {
|
|
3218
3360
|
const wholeDexes = /* @__PURE__ */ new Set();
|
|
3219
3361
|
const concrete = /* @__PURE__ */ new Set();
|
|
3220
3362
|
if (!symbols) {
|
|
@@ -3251,7 +3393,13 @@ var HyperliquidProvider = class {
|
|
|
3251
3393
|
);
|
|
3252
3394
|
return out;
|
|
3253
3395
|
}
|
|
3254
|
-
|
|
3396
|
+
getOpenInterest(symbols) {
|
|
3397
|
+
return openInterestCache.get(
|
|
3398
|
+
sortedKey(symbols),
|
|
3399
|
+
() => this.fetchOpenInterest(symbols)
|
|
3400
|
+
);
|
|
3401
|
+
}
|
|
3402
|
+
async fetchOpenInterest(symbols) {
|
|
3255
3403
|
const wholeDexes = /* @__PURE__ */ new Set();
|
|
3256
3404
|
const concrete = /* @__PURE__ */ new Set();
|
|
3257
3405
|
if (!symbols) {
|
|
@@ -3284,7 +3432,13 @@ var HyperliquidProvider = class {
|
|
|
3284
3432
|
);
|
|
3285
3433
|
return out.sort((a, b) => b.openInterestUsd - a.openInterestUsd);
|
|
3286
3434
|
}
|
|
3287
|
-
|
|
3435
|
+
getFundingHistory(symbols, startTimeMs) {
|
|
3436
|
+
return fundingCache.get(
|
|
3437
|
+
`${[...symbols].sort().join(",")}|${startTimeMs}`,
|
|
3438
|
+
() => this.fetchFundingHistory(symbols, startTimeMs)
|
|
3439
|
+
);
|
|
3440
|
+
}
|
|
3441
|
+
async fetchFundingHistory(symbols, startTimeMs) {
|
|
3288
3442
|
const results = await Promise.all(
|
|
3289
3443
|
symbols.map(async (coin) => {
|
|
3290
3444
|
const entries = await info({
|
|
@@ -3303,7 +3457,13 @@ var HyperliquidProvider = class {
|
|
|
3303
3457
|
);
|
|
3304
3458
|
return Object.fromEntries(results);
|
|
3305
3459
|
}
|
|
3306
|
-
|
|
3460
|
+
getCandles(symbol, interval, startTimeMs) {
|
|
3461
|
+
return candlesCache.get(
|
|
3462
|
+
`${symbol}|${interval}|${startTimeMs}`,
|
|
3463
|
+
() => this.fetchCandles(symbol, interval, startTimeMs)
|
|
3464
|
+
);
|
|
3465
|
+
}
|
|
3466
|
+
async fetchCandles(symbol, interval, startTimeMs) {
|
|
3307
3467
|
const entries = await info({
|
|
3308
3468
|
type: "candleSnapshot",
|
|
3309
3469
|
req: { coin: symbol, interval, startTime: startTimeMs }
|