gloomberb 0.18.2 → 0.18.4
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 +8 -8
- package/README.zh-CN.md +11 -11
- package/bin/{gloomberb → gloom} +3 -1
- package/package.json +6 -2
- package/patches/electrobun@1.18.1.patch +106 -5
- package/src/account/checkout-handoff.tsx +225 -0
- package/src/account/device-signin-dialog.tsx +2 -2
- package/src/account/device-signin.ts +2 -2
- package/src/account/upgrade-dialog.tsx +1 -1
- package/src/api-client/askg.ts +2 -2
- package/src/api-client/auth.ts +2 -2
- package/src/api-client/central-bank-rates.ts +6 -0
- package/src/api-client/collections.ts +5 -1
- package/src/api-client/cot.ts +2 -0
- package/src/api-client/crypto-etf-flows.ts +37 -0
- package/src/api-client/crypto-markets.ts +60 -0
- package/src/api-client/data.ts +99 -5
- package/src/api-client/doe.ts +15 -0
- package/src/api-client/equity-screener.ts +28 -0
- package/src/api-client/exchange-announcements.ts +38 -0
- package/src/api-client/fund-facts.ts +39 -0
- package/src/api-client/futures-curve.ts +9 -1
- package/src/api-client/hiring.ts +301 -0
- package/src/api-client/index.ts +24 -5
- package/src/api-client/market-discovery.ts +14 -0
- package/src/api-client/members.ts +6 -0
- package/src/api-client/mna.ts +6 -0
- package/src/api-client/paths.ts +18 -1
- package/src/api-client/request.ts +26 -7
- package/src/api-client/short-side-publications.ts +37 -0
- package/src/api-client/socket.ts +64 -4
- package/src/api-client/swap-curve.ts +35 -0
- package/src/api-client/telemetry.ts +17 -0
- package/src/api-client/themes.ts +7 -1
- package/src/api-client/types.ts +90 -2
- package/src/app/global-shortcuts.ts +1 -16
- package/src/app/pane-runtime/plugin-bindings.ts +9 -2
- package/src/app/runtime/desktop-deeplink.ts +5 -5
- package/src/app/runtime/plugin-bindings.ts +2 -2
- package/src/app/runtime/startup.ts +13 -0
- package/src/app/runtime/update.ts +28 -8
- package/src/app/star-prompt/status-line.tsx +2 -2
- package/src/architecture/core-builtin-allowlist.json +5 -2
- package/src/architecture/pane-tabs-allowlist.json +65 -0
- package/src/architecture/ui-literals-allowlist.json +3 -3
- package/src/architecture/ui-tokens-allowlist.json +1 -1
- package/src/brokers/broker-portfolio-sync.ts +37 -0
- package/src/brokers/directory.ts +11 -0
- package/src/brokers/logos.ts +3 -1
- package/src/brokers/signed-in/adapter.ts +304 -26
- package/src/brokers/signed-in/client.ts +14 -2
- package/src/brokers/signed-in/connect.ts +10 -2
- package/src/brokers/sync-broker-instance.ts +9 -1
- package/src/capabilities/chart-series.ts +22 -6
- package/src/cli/bank-section.ts +1 -1
- package/src/cli/base-converter.ts +23 -14
- package/src/cli/central-bank-events.ts +1 -1
- package/src/cli/command-options.ts +59 -4
- package/src/cli/commands/api.ts +9 -6
- package/src/cli/commands/broker.ts +2 -2
- package/src/cli/commands/command-utils.ts +2 -2
- package/src/cli/commands/crypto-hints.ts +7 -20
- package/src/cli/commands/fred-series.ts +4 -2
- package/src/cli/commands/keybindings.ts +2 -2
- package/src/cli/commands/market.ts +1189 -296
- package/src/cli/commands/news-hints.ts +2 -2
- package/src/cli/commands/news-search.ts +59 -6
- package/src/cli/commands/options-leaps.ts +41 -26
- package/src/cli/commands/overview.ts +121 -48
- package/src/cli/commands/plugins.ts +9 -9
- package/src/cli/commands/remote.ts +13 -10
- package/src/cli/commands/search.ts +64 -44
- package/src/cli/commands/system.ts +27 -19
- package/src/cli/commands/themes.ts +1 -1
- package/src/cli/commands/ticker.ts +272 -70
- package/src/cli/context.ts +3 -2
- package/src/cli/desktop-pane-shot-view.ts +2 -2
- package/src/cli/desktop-pane-shot.ts +1 -1
- package/src/cli/earnings-calendar.ts +4 -4
- package/src/cli/entry.ts +18 -1
- package/src/cli/errors.ts +20 -2
- package/src/cli/exit-codes.ts +1 -1
- package/src/cli/export-source.ts +10 -4
- package/src/cli/freshness.ts +2 -8
- package/src/cli/fx-forward.ts +130 -0
- package/src/cli/fx-pair.ts +10 -9
- package/src/cli/glossary.ts +64 -20
- package/src/cli/help.ts +20 -14
- package/src/cli/history-export.ts +126 -0
- package/src/cli/history-rows.ts +196 -43
- package/src/cli/index-roots.ts +5 -45
- package/src/cli/index.ts +32 -18
- package/src/cli/issuer-membership.ts +103 -0
- package/src/cli/known-gaps.ts +118 -25
- package/src/cli/listing-arg.ts +315 -43
- package/src/cli/name-entries.ts +73 -22
- package/src/cli/native-smoke.ts +2 -0
- package/src/cli/not-a-ticker.ts +19 -9
- package/src/cli/opentui-libc.ts +5 -0
- package/src/cli/options.ts +12 -0
- package/src/cli/pane-functions/capabilities.ts +77 -20
- package/src/cli/pane-functions/catalog.ts +40 -23
- package/src/cli/pane-functions/discovery.ts +1 -1
- package/src/cli/pane-functions/dom.ts +12 -8
- package/src/cli/pane-functions/financial-ratio-shot.ts +2 -2
- package/src/cli/pane-functions/freshness.ts +174 -23
- package/src/cli/pane-functions/function-help.ts +66 -27
- package/src/cli/pane-functions/headless.ts +48 -16
- package/src/cli/pane-functions/index.ts +82 -21
- package/src/cli/pane-functions/options.ts +22 -2
- package/src/cli/pane-functions/report-notices.ts +12 -4
- package/src/cli/pane-functions/report.ts +5 -5
- package/src/cli/pane-functions/resolver.ts +65 -14
- package/src/cli/pane-functions/screenshot-assessment.ts +322 -0
- package/src/cli/pane-functions/screenshot-bridge.ts +152 -0
- package/src/cli/pane-functions/screenshot-chart-evidence.ts +396 -0
- package/src/cli/pane-functions/screenshot-data-evidence.ts +383 -0
- package/src/cli/pane-functions/screenshot-evidence.ts +1 -1
- package/src/cli/pane-functions/screenshot-payload.ts +453 -0
- package/src/cli/pane-functions/screenshot-render.ts +316 -0
- package/src/cli/pane-functions/screenshot-types.ts +162 -0
- package/src/cli/pane-functions/shot-options.ts +8 -3
- package/src/cli/peso-dollar-rates.ts +79 -0
- package/src/cli/quote-answer.ts +38 -3
- package/src/cli/report-tables.ts +190 -27
- package/src/cli/restore-plugins.ts +29 -14
- package/src/cli/result.ts +122 -25
- package/src/cli/series-search.ts +5 -5
- package/src/cli/statement-filings.ts +19 -0
- package/src/cli/suffixed-listing-rows.ts +49 -0
- package/src/cli/symbol-args.ts +50 -15
- package/src/cli/symbol-cells.ts +120 -0
- package/src/cli/symbol-list.ts +226 -60
- package/src/cli/symbol-rows.ts +131 -25
- package/src/cli/ticker-resolution.ts +108 -11
- package/src/cli/treasury-yields.ts +5 -5
- package/src/cli/types.ts +2 -0
- package/src/cli/uncovered-instrument.ts +3 -3
- package/src/cli/unknown-command.ts +6 -6
- package/src/components/chart/composite/chart-layout.ts +131 -0
- package/src/components/chart/composite/composite-chart.tsx +387 -21
- package/src/components/chart/composite/drawing-store.ts +26 -6
- package/src/components/chart/composite/interactions.ts +9 -3
- package/src/components/chart/composite/legend.tsx +75 -3
- package/src/components/chart/composite/levels.ts +5 -0
- package/src/components/chart/composite/panel-gestures.ts +41 -0
- package/src/components/chart/composite/panel-labels.ts +2 -1
- package/src/components/chart/composite/panel-surface.tsx +316 -11
- package/src/components/chart/composite/price-axis-labels.tsx +27 -3
- package/src/components/chart/composite/rasterizer.ts +44 -19
- package/src/components/chart/composite/scene.ts +16 -4
- package/src/components/chart/composite/text-renderer.ts +48 -21
- package/src/components/chart/composite/toolbar.tsx +52 -5
- package/src/components/chart/composite/types.ts +19 -0
- package/src/components/chart/composite/use-composite-chart-keyboard.ts +120 -13
- package/src/components/chart/composite/use-composite-value-scales.ts +44 -0
- package/src/components/chart/composite/use-composite-viewport.ts +12 -3
- package/src/components/chart/composite/value-scale.ts +149 -0
- package/src/components/chart/composite/volume-profile-paint.ts +6 -3
- package/src/components/chart/core/pointer.ts +2 -0
- package/src/components/chart-table/index.ts +2 -0
- package/src/components/chart-table/read.tsx +74 -0
- package/src/components/command-bar/commands/collection-list.ts +41 -19
- package/src/components/command-bar/commands/collection.ts +9 -3
- package/src/components/command-bar/commands/direct/index.ts +1 -1
- package/src/components/command-bar/commands/direct/runtime.ts +3 -2
- package/src/components/command-bar/pane-templates/items.ts +59 -6
- package/src/components/command-bar/pane-templates/workflow.ts +10 -1
- package/src/components/command-bar/routes/root/command-items.ts +32 -6
- package/src/components/command-bar/routes/root/plugin-install.ts +1 -1
- package/src/components/command-bar/routes/root/provider-search.ts +42 -11
- package/src/components/command-bar/routes/root/results.ts +18 -4
- package/src/components/command-bar/routes/root/runtime.ts +15 -3
- package/src/components/command-bar/routes/root/search-providers.ts +25 -2
- package/src/components/command-bar/routes/root/selection.ts +6 -1
- package/src/components/command-bar/routes/root/shortcut-feedback.ts +4 -1
- package/src/components/command-bar/routes/root/shortcuts.ts +30 -3
- package/src/components/command-bar/routes/ticker-search/results.ts +73 -4
- package/src/components/command-bar/selection-runtime.ts +50 -10
- package/src/components/command-bar/surface/index.tsx +24 -2
- package/src/components/command-bar/view-model.ts +7 -0
- package/src/components/command-bar/workflow/broker.ts +2 -2
- package/src/components/command-bar/workflow/collection-actions.ts +46 -7
- package/src/components/command-bar/workflow/collection-ticker.ts +32 -4
- package/src/components/command-bar/workflow/fields.ts +8 -2
- package/src/components/command-bar/workflow/ops.ts +18 -4
- package/src/components/command-bar/workflow/portfolio-position.ts +53 -4
- package/src/components/command-bar/workflow/submit.ts +3 -2
- package/src/components/command-bar/workflow/tickers.ts +5 -1
- package/src/components/company-logo.tsx +39 -0
- package/src/components/data-table/sections.ts +4 -2
- package/src/components/data-table/view.tsx +23 -3
- package/src/components/form-modal/confirm.tsx +2 -1
- package/src/components/form-modal/request.ts +5 -0
- package/src/components/form-modal/routes.ts +4 -1
- package/src/components/index.ts +13 -6
- package/src/components/layout/detached-pane-shell.tsx +1 -0
- package/src/components/layout/floating-pane.tsx +1 -0
- package/src/components/layout/header.tsx +234 -60
- package/src/components/layout/market-summary.ts +9 -6
- package/src/components/layout/pane/capture-status.ts +1 -1
- package/src/components/layout/pane/footer/model.ts +11 -5
- package/src/components/layout/pane/header.tsx +10 -3
- package/src/components/layout/pane/index.tsx +1 -0
- package/src/components/layout/pane/pane-tabs.tsx +9 -1
- package/src/components/layout/shell/chrome.ts +19 -6
- package/src/components/layout/shell/index.tsx +2 -1
- package/src/components/layout/shell/pane/layers.tsx +19 -1
- package/src/components/layout/status-bar.tsx +2 -2
- package/src/components/market-board/index.tsx +11 -3
- package/src/components/onboarding/onboarding-wizard.tsx +1 -0
- package/src/components/onboarding/portfolio-step/broker-setup-panel.tsx +2 -2
- package/src/components/onboarding/wizard-broker-sync.ts +4 -1
- package/src/components/pane-settings-dialog/desktop.tsx +20 -7
- package/src/components/pane-settings-dialog/tui.tsx +17 -9
- package/src/components/pane-settings-dialog/value.ts +8 -1
- package/src/components/pane-settings-dialog.tsx +44 -13
- package/src/components/sign-in-code-panel.tsx +27 -19
- package/src/components/ui/column-grid.tsx +48 -4
- package/src/components/ui/country-flag-art.tsx +180 -0
- package/src/components/ui/country-flag.tsx +118 -12
- package/src/components/ui/data-table/opentui/index.tsx +61 -2
- package/src/components/ui/data-table/opentui/model.ts +109 -2
- package/src/components/ui/data-table/types.ts +1 -1
- package/src/components/ui/display.tsx +5 -1
- package/src/components/ui/index.ts +3 -1
- package/src/components/ui/logo-mark.tsx +11 -2
- package/src/components/ui/query-bar.tsx +1 -1
- package/src/components/ui/row-notes.ts +79 -0
- package/src/components/ui/stat-grid.tsx +28 -3
- package/src/components/ui/status.tsx +3 -1
- package/src/core/app-services.ts +4 -0
- package/src/core/state/app/layout.ts +4 -4
- package/src/data/cached-query.ts +8 -1
- package/src/data/config/chart-settings.ts +3 -3
- package/src/data/config/home.ts +10 -2
- package/src/data/config/layout.ts +4 -1
- package/src/data/config/store/node.ts +4 -0
- package/src/data/config/store/normalize.ts +13 -3
- package/src/data/config/store/portfolio-as-of-column.ts +2 -2
- package/src/data/json-storage.ts +2 -0
- package/src/data/saved-copies.ts +84 -0
- package/src/docs/snapshot.json +65 -32
- package/src/i18n/es.ts +51 -12
- package/src/i18n/ja.ts +51 -12
- package/src/i18n/ko.ts +51 -12
- package/src/i18n/zh-cn.ts +51 -12
- package/src/i18n/zh-tw.ts +51 -12
- package/src/layout/desks.ts +1 -1
- package/src/layout/launch-layout.ts +1 -1
- package/src/layout/pane-manager/floating-actions.ts +5 -3
- package/src/layout/pane-manager/floating.ts +43 -1
- package/src/layout/pane-manager/index.ts +2 -0
- package/src/layout/selected-ticker.ts +74 -0
- package/src/market-data/depositary-pair.ts +251 -0
- package/src/market-data/futures-board.ts +1 -1
- package/src/market-data/futures-contract.ts +124 -40
- package/src/market-data/fx-closes.ts +17 -2
- package/src/market-data/hooks.tsx +19 -11
- package/src/market-data/market/change-basis.ts +49 -7
- package/src/market-data/market/freshness.ts +34 -5
- package/src/market-data/market/period-return.ts +163 -0
- package/src/market-data/market/trading-sessions.ts +13 -0
- package/src/market-data/market/year-to-date.ts +8 -13
- package/src/market-data/performance.ts +20 -14
- package/src/market-data/perpetual-premium.ts +32 -0
- package/src/market-data/published-apac-sessions.ts +2 -1
- package/src/market-data/published-futures-sessions.ts +69 -0
- package/src/market-data/quotes/contributions.ts +5 -1
- package/src/market-data/quotes/freshness.ts +42 -0
- package/src/market-data/quotes/intraday-bar.ts +37 -0
- package/src/market-data/quotes/regular-session-valuation.ts +13 -8
- package/src/market-data/quotes/resolution.ts +4 -2
- package/src/market-data/tax-equivalent.ts +1 -1
- package/src/market-data/ticker-price-returns.ts +3 -1
- package/src/news/aggregator.ts +5 -1
- package/src/news/news-model.ts +4 -0
- package/src/news/types.ts +11 -0
- package/src/notifications/app-notifier.ts +1 -1
- package/src/plugins/auto-update.ts +2 -2
- package/src/plugins/builtin/account-management/index.tsx +1 -0
- package/src/plugins/builtin/account-management/pane.tsx +9 -8
- package/src/plugins/builtin/alerts/alert-engine.ts +30 -18
- package/src/plugins/builtin/alerts/calendar-events.ts +378 -0
- package/src/plugins/builtin/alerts/cli.ts +485 -76
- package/src/plugins/builtin/alerts/command.ts +5 -10
- package/src/plugins/builtin/alerts/event-rows.ts +9 -5
- package/src/plugins/builtin/alerts/events-pane.tsx +71 -56
- package/src/plugins/builtin/alerts/events.ts +108 -5
- package/src/plugins/builtin/alerts/fired-log.ts +78 -0
- package/src/plugins/builtin/alerts/format.ts +2 -1
- package/src/plugins/builtin/alerts/headless.ts +100 -39
- package/src/plugins/builtin/alerts/history-pane.tsx +105 -62
- package/src/plugins/builtin/alerts/history-rows.ts +89 -0
- package/src/plugins/builtin/alerts/index.tsx +45 -18
- package/src/plugins/builtin/alerts/iv-level.ts +365 -0
- package/src/plugins/builtin/alerts/levels.ts +3 -3
- package/src/plugins/builtin/alerts/pane.tsx +97 -29
- package/src/plugins/builtin/alerts/price.ts +35 -0
- package/src/plugins/builtin/alerts/quotes.ts +24 -0
- package/src/plugins/builtin/alerts/research-builder.ts +84 -11
- package/src/plugins/builtin/alerts/research-rules.ts +77 -3
- package/src/plugins/builtin/alerts/scheduled-check.ts +206 -32
- package/src/plugins/builtin/alerts/scheduled-sources.ts +26 -3
- package/src/plugins/builtin/alerts/scheduled.ts +188 -29
- package/src/plugins/builtin/alerts/storage.ts +13 -10
- package/src/plugins/builtin/alerts/targets.ts +12 -3
- package/src/plugins/builtin/analytics/index.tsx +8 -2
- package/src/plugins/builtin/analytics/metrics.ts +1 -1
- package/src/plugins/builtin/analytics/risk-book.ts +215 -0
- package/src/plugins/builtin/analytics/risk-client.ts +13 -6
- package/src/plugins/builtin/analytics/risk-headless.ts +55 -21
- package/src/plugins/builtin/analytics/risk-math.ts +6 -3
- package/src/plugins/builtin/analytics/risk-model.ts +297 -104
- package/src/plugins/builtin/analytics/risk-options.ts +17 -2
- package/src/plugins/builtin/analytics/risk-pane.tsx +107 -43
- package/src/plugins/builtin/attention/pane.tsx +22 -16
- package/src/plugins/builtin/awards/headless.ts +7 -3
- package/src/plugins/builtin/awards/model.ts +18 -0
- package/src/plugins/builtin/awards/pane.tsx +12 -9
- package/src/plugins/builtin/backtest/export.ts +1 -1
- package/src/plugins/builtin/backtest/headless.ts +3 -3
- package/src/plugins/builtin/backtest/rules.ts +41 -5
- package/src/plugins/builtin/broker-manager/add-flow.tsx +12 -7
- package/src/plugins/builtin/broker-manager/detail.tsx +47 -19
- package/src/plugins/builtin/broker-manager/footer.ts +27 -11
- package/src/plugins/builtin/broker-manager/index.tsx +21 -12
- package/src/plugins/builtin/broker-manager/keyboard.ts +1 -1
- package/src/plugins/builtin/broker-manager/model.ts +12 -2
- package/src/plugins/builtin/broker-manager/pane-actions.tsx +183 -57
- package/src/plugins/builtin/broker-manager/table.ts +28 -12
- package/src/plugins/builtin/broker-trading/account-picker.tsx +2 -1
- package/src/plugins/builtin/broker-trading/chart-levels.ts +82 -13
- package/src/plugins/builtin/broker-trading/controller.ts +45 -13
- package/src/plugins/builtin/broker-trading/dock.tsx +24 -4
- package/src/plugins/builtin/broker-trading/headless.ts +2 -1
- package/src/plugins/builtin/broker-trading/index.tsx +7 -1
- package/src/plugins/builtin/broker-trading/linked-orders.ts +148 -0
- package/src/plugins/builtin/broker-trading/order-feed.ts +75 -7
- package/src/plugins/builtin/broker-trading/orders.tsx +109 -31
- package/src/plugins/builtin/broker-trading/overview-orders.tsx +9 -3
- package/src/plugins/builtin/broker-trading/pane-model.ts +30 -2
- package/src/plugins/builtin/broker-trading/pane.tsx +115 -26
- package/src/plugins/builtin/broker-trading/ticket-parts.tsx +36 -7
- package/src/plugins/builtin/broker-trading/ticket.tsx +122 -36
- package/src/plugins/builtin/buildout/cells.tsx +4 -0
- package/src/plugins/builtin/buildout/detail/index.tsx +5 -1
- package/src/plugins/builtin/buildout/detail/ui.tsx +7 -4
- package/src/plugins/builtin/buildout/pane/index.tsx +34 -18
- package/src/plugins/builtin/buildout/pane/status.tsx +0 -4
- package/src/plugins/builtin/builtin-plugin-meta.ts +1 -1
- package/src/plugins/builtin/catalysts/client.ts +2 -2
- package/src/plugins/builtin/catalysts/detail.tsx +3 -2
- package/src/plugins/builtin/catalysts/index.tsx +1 -1
- package/src/plugins/builtin/catalysts/model.ts +49 -4
- package/src/plugins/builtin/catalysts/pane.tsx +9 -11
- package/src/plugins/builtin/central-bank-rates/client.ts +5 -0
- package/src/plugins/builtin/central-bank-rates/headless.ts +36 -10
- package/src/plugins/builtin/central-bank-rates/model.ts +33 -8
- package/src/plugins/builtin/changelog/index.tsx +1 -0
- package/src/plugins/builtin/chart-composer/catalog-inventory.ts +1 -0
- package/src/plugins/builtin/chart-composer/chart-spec-edit.ts +2 -1
- package/src/plugins/builtin/chart-composer/chart-spec.ts +7 -0
- package/src/plugins/builtin/chart-composer/cli-options.ts +2 -5
- package/src/plugins/builtin/chart-composer/data-catalog-pane.tsx +2 -1
- package/src/plugins/builtin/chart-composer/editor/controller.ts +2 -0
- package/src/plugins/builtin/chart-composer/editor.tsx +4 -1
- package/src/plugins/builtin/chart-composer/headless-schema.ts +28 -26
- package/src/plugins/builtin/chart-composer/headless.ts +253 -35
- package/src/plugins/builtin/chart-composer/index.tsx +12 -2
- package/src/plugins/builtin/chart-composer/leverage-overlay.ts +142 -0
- package/src/plugins/builtin/chart-composer/pane.tsx +128 -28
- package/src/plugins/builtin/chart-composer/series-catalog.ts +1 -0
- package/src/plugins/builtin/chart-composer/series-expression.ts +65 -6
- package/src/plugins/builtin/chart-composer/session-history.ts +15 -21
- package/src/plugins/builtin/chart-composer/session-range.ts +4 -2
- package/src/plugins/builtin/chart-composer/settings.ts +31 -19
- package/src/plugins/builtin/chart-composer/use-series-catalog.ts +5 -6
- package/src/plugins/builtin/chart-composer/viewport-labels.ts +18 -8
- package/src/plugins/builtin/chat/attachments/model.ts +3 -1
- package/src/plugins/builtin/chat/content/index.tsx +1 -1
- package/src/plugins/builtin/chat/pane-links/open.ts +1 -1
- package/src/plugins/builtin/chat/people.ts +1 -1
- package/src/plugins/builtin/clinical-trials/client.ts +5 -2
- package/src/plugins/builtin/clinical-trials/model.ts +13 -4
- package/src/plugins/builtin/clinical-trials/pane.tsx +32 -12
- package/src/plugins/builtin/clinical-trials/ticker-sponsor.ts +17 -0
- package/src/plugins/builtin/cloud/askg/controller.ts +1 -1
- package/src/plugins/builtin/cloud/askg/lock-note.ts +1 -1
- package/src/plugins/builtin/cloud/askg/tool-display.ts +1 -1
- package/src/plugins/builtin/cloud/auth-commands.ts +3 -3
- package/src/plugins/builtin/cloud/team/pane-sections.tsx +105 -47
- package/src/plugins/builtin/cloud/team/pane-ui.tsx +42 -4
- package/src/plugins/builtin/cloud/team/pane.tsx +204 -64
- package/src/plugins/builtin/cloud/thesis/store.ts +45 -22
- package/src/plugins/builtin/cloud-tweets/registration.ts +1 -0
- package/src/plugins/builtin/commodities-energy/index.tsx +29 -2
- package/src/plugins/builtin/commodities-energy/view-state.ts +2 -0
- package/src/plugins/builtin/commodity-balances/pane.tsx +14 -8
- package/src/plugins/builtin/company-attention/app-rank.tsx +11 -10
- package/src/plugins/builtin/company-attention/building-model.ts +222 -0
- package/src/plugins/builtin/company-attention/building.tsx +172 -0
- package/src/plugins/builtin/company-attention/client.ts +117 -1
- package/src/plugins/builtin/company-attention/evidence.ts +16 -3
- package/src/plugins/builtin/company-attention/headless.ts +101 -5
- package/src/plugins/builtin/company-attention/index.tsx +6 -3
- package/src/plugins/builtin/company-attention/model.ts +33 -7
- package/src/plugins/builtin/company-attention/moves-model.ts +253 -0
- package/src/plugins/builtin/company-attention/moves.tsx +159 -0
- package/src/plugins/builtin/company-attention/pane.tsx +89 -31
- package/src/plugins/builtin/company-attention/signals-model.ts +229 -0
- package/src/plugins/builtin/company-attention/signals.tsx +160 -0
- package/src/plugins/builtin/company-kpis/headless.ts +3 -2
- package/src/plugins/builtin/company-kpis/model.ts +2 -2
- package/src/plugins/builtin/company-kpis/pane.tsx +5 -4
- package/src/plugins/builtin/composite-plugins.ts +2 -1
- package/src/plugins/builtin/congress-trades/headless.ts +1 -1
- package/src/plugins/builtin/connections/index.ts +1 -0
- package/src/plugins/builtin/correlation/headless-schema.ts +3 -2
- package/src/plugins/builtin/correlation/headless.ts +7 -4
- package/src/plugins/builtin/correlation/relationship/model.ts +1 -0
- package/src/plugins/builtin/correlation/settings.ts +1 -0
- package/src/plugins/builtin/cot/headless.ts +28 -6
- package/src/plugins/builtin/cot/model.ts +12 -0
- package/src/plugins/builtin/cot/pane.tsx +7 -5
- package/src/plugins/builtin/cpi/headless.ts +5 -1
- package/src/plugins/builtin/cpi/pane.tsx +11 -9
- package/src/plugins/builtin/credit-boards/model.ts +2 -0
- package/src/plugins/builtin/credit-documents/headless.ts +1 -1
- package/src/plugins/builtin/credit-documents/pane.tsx +8 -7
- package/src/plugins/builtin/crypto-board/client.ts +86 -0
- package/src/plugins/builtin/crypto-board/defi-view.tsx +218 -0
- package/src/plugins/builtin/crypto-board/defi.ts +239 -0
- package/src/plugins/builtin/crypto-board/headless.ts +117 -6
- package/src/plugins/builtin/crypto-board/index.tsx +8 -3
- package/src/plugins/builtin/crypto-board/model.ts +40 -8
- package/src/plugins/builtin/crypto-board/pane.tsx +55 -21
- package/src/plugins/builtin/crypto-board/series.ts +19 -1
- package/src/plugins/builtin/crypto-etf-flows/client.ts +60 -0
- package/src/plugins/builtin/crypto-etf-flows/headless.ts +132 -0
- package/src/plugins/builtin/crypto-etf-flows/index.tsx +44 -0
- package/src/plugins/builtin/crypto-etf-flows/model.ts +121 -0
- package/src/plugins/builtin/crypto-etf-flows/pane.tsx +193 -0
- package/src/plugins/builtin/debt-maturities/pane.tsx +4 -3
- package/src/plugins/builtin/debug/index.tsx +1 -0
- package/src/plugins/builtin/dividend-yield/index.tsx +1 -1
- package/src/plugins/builtin/docs/index.tsx +1 -1
- package/src/plugins/builtin/docs/pane.tsx +2 -2
- package/src/plugins/builtin/docs/targets.ts +1 -1
- package/src/plugins/builtin/doe/client.ts +5 -1
- package/src/plugins/builtin/doe/headless.ts +12 -6
- package/src/plugins/builtin/doe/model.ts +43 -6
- package/src/plugins/builtin/doe/pane.tsx +19 -12
- package/src/plugins/builtin/earnings/board-model.ts +13 -6
- package/src/plugins/builtin/earnings/board-table.ts +4 -1
- package/src/plugins/builtin/earnings/board.tsx +253 -50
- package/src/plugins/builtin/earnings/calendar-model.ts +188 -0
- package/src/plugins/builtin/earnings/calendar.tsx +338 -0
- package/src/plugins/builtin/earnings/client.ts +4 -3
- package/src/plugins/builtin/earnings/headless.ts +53 -15
- package/src/plugins/builtin/earnings/history-model.ts +53 -36
- package/src/plugins/builtin/earnings/index.tsx +15 -22
- package/src/plugins/builtin/earnings/model.ts +17 -12
- package/src/plugins/builtin/earnings/scope.ts +89 -0
- package/src/plugins/builtin/earnings-calls/calendar.tsx +310 -0
- package/src/plugins/builtin/earnings-calls/data.ts +146 -2
- package/src/plugins/builtin/earnings-calls/headless.ts +151 -9
- package/src/plugins/builtin/earnings-calls/index.tsx +3 -3
- package/src/plugins/builtin/earnings-calls/lock-note.ts +1 -1
- package/src/plugins/builtin/earnings-calls/pane.tsx +149 -31
- package/src/plugins/builtin/earnings-calls/upcoming.ts +195 -0
- package/src/plugins/builtin/earnings-ripple/pane.tsx +10 -5
- package/src/plugins/builtin/econ/calendar-model.ts +132 -20
- package/src/plugins/builtin/econ/detail-view.tsx +48 -10
- package/src/plugins/builtin/econ/fred-catalog.ts +23 -6
- package/src/plugins/builtin/econ/fred-series-map.ts +4 -0
- package/src/plugins/builtin/econ/index.tsx +112 -25
- package/src/plugins/builtin/econ/print-watch.ts +2 -1
- package/src/plugins/builtin/econ/types.ts +32 -1
- package/src/plugins/builtin/econ-statistics/client.ts +16 -3
- package/src/plugins/builtin/econ-statistics/defs.ts +4 -0
- package/src/plugins/builtin/econ-statistics/detail.tsx +2 -2
- package/src/plugins/builtin/econ-statistics/headless.ts +13 -2
- package/src/plugins/builtin/econ-statistics/index.tsx +3 -3
- package/src/plugins/builtin/econ-statistics/pane.tsx +2 -1
- package/src/plugins/builtin/econ-statistics/stats.ts +103 -0
- package/src/plugins/builtin/econ-statistics/view.ts +16 -1
- package/src/plugins/builtin/equity-screener/client.ts +21 -3
- package/src/plugins/builtin/equity-screener/headless.ts +77 -5
- package/src/plugins/builtin/equity-screener/live.ts +1 -1
- package/src/plugins/builtin/equity-screener/model.ts +34 -0
- package/src/plugins/builtin/equity-screener/pane.tsx +148 -106
- package/src/plugins/builtin/equity-screener/screen-check.ts +90 -0
- package/src/plugins/builtin/equity-screener/ticker-check.tsx +148 -0
- package/src/plugins/builtin/estimate-revisions/headless.ts +3 -1
- package/src/plugins/builtin/estimate-revisions/lock-note.ts +3 -3
- package/src/plugins/builtin/estimate-revisions/model.ts +8 -10
- package/src/plugins/builtin/exposure/headless.ts +51 -6
- package/src/plugins/builtin/exposure/index.tsx +28 -2
- package/src/plugins/builtin/exposure/model.ts +7 -0
- package/src/plugins/builtin/exposure/pane.tsx +16 -10
- package/src/plugins/builtin/fear-greed/index.tsx +1 -1
- package/src/plugins/builtin/filing-events/index.tsx +1 -1
- package/src/plugins/builtin/futures/model.ts +10 -9
- package/src/plugins/builtin/futures/returns.ts +8 -36
- package/src/plugins/builtin/futures/table.tsx +1 -1
- package/src/plugins/builtin/futures-curve/client.ts +40 -9
- package/src/plugins/builtin/futures-curve/headless.ts +39 -17
- package/src/plugins/builtin/futures-curve/model.ts +258 -69
- package/src/plugins/builtin/futures-curve/pane.tsx +46 -17
- package/src/plugins/builtin/fx-matrix/client.ts +15 -8
- package/src/plugins/builtin/fx-matrix/headless.ts +32 -14
- package/src/plugins/builtin/fx-matrix/index.tsx +13 -11
- package/src/plugins/builtin/fx-matrix/live-legs.ts +22 -0
- package/src/plugins/builtin/fx-matrix/settings.ts +2 -1
- package/src/plugins/builtin/gpu/board.tsx +4 -1
- package/src/plugins/builtin/gpu/changes.tsx +10 -10
- package/src/plugins/builtin/gpu/equities.tsx +4 -1
- package/src/plugins/builtin/gpu/headless.ts +9 -4
- package/src/plugins/builtin/gpu/history.tsx +4 -2
- package/src/plugins/builtin/gpu/pane.tsx +5 -3
- package/src/plugins/builtin/help/index.tsx +13 -3
- package/src/plugins/builtin/holders/beneficial-model.ts +8 -11
- package/src/plugins/builtin/holders/beneficial-report.ts +6 -5
- package/src/plugins/builtin/holders/beneficial-view.tsx +7 -3
- package/src/plugins/builtin/holders/client.ts +15 -2
- package/src/plugins/builtin/holders/format.ts +28 -17
- package/src/plugins/builtin/holders/headless.ts +48 -8
- package/src/plugins/builtin/holders/index-holders.ts +264 -0
- package/src/plugins/builtin/holders/pane.tsx +79 -15
- package/src/plugins/builtin/holders/report-rows.ts +35 -7
- package/src/plugins/builtin/holders/table-model.ts +2 -1
- package/src/plugins/builtin/holders/thirteenf-match.ts +3 -1
- package/src/plugins/builtin/holders/treemap.tsx +2 -2
- package/src/plugins/builtin/insider/base-values.ts +11 -7
- package/src/plugins/builtin/insider/client.ts +3 -0
- package/src/plugins/builtin/insider/headless.ts +20 -7
- package/src/plugins/builtin/insider/index.tsx +17 -8
- package/src/plugins/builtin/insider/issuer.ts +34 -4
- package/src/plugins/builtin/insider/signals-client.ts +3 -3
- package/src/plugins/builtin/insider/signals.tsx +1 -1
- package/src/plugins/builtin/insider/table-model.ts +35 -13
- package/src/plugins/builtin/insider/table.tsx +5 -2
- package/src/plugins/builtin/ipo-calendar/pane.tsx +7 -4
- package/src/plugins/builtin/iv-history/client.ts +20 -0
- package/src/plugins/builtin/iv-history/events.ts +145 -0
- package/src/plugins/builtin/iv-history/format.ts +3 -0
- package/src/plugins/builtin/iv-history/headless.ts +91 -7
- package/src/plugins/builtin/iv-history/index.tsx +1 -1
- package/src/plugins/builtin/iv-history/model.ts +13 -4
- package/src/plugins/builtin/iv-history/series.ts +3 -1
- package/src/plugins/builtin/jobs/lock-note.ts +1 -1
- package/src/plugins/builtin/jobs/model.ts +4 -15
- package/src/plugins/builtin/jobs/pane.tsx +7 -5
- package/src/plugins/builtin/jobs/share-bars.tsx +11 -5
- package/src/plugins/builtin/jodi/pane.tsx +14 -8
- package/src/plugins/builtin/layout-manager/index.tsx +1 -0
- package/src/plugins/builtin/macro-day/headless.ts +20 -7
- package/src/plugins/builtin/macro-day/index.tsx +3 -2
- package/src/plugins/builtin/macro-day/model.ts +29 -8
- package/src/plugins/builtin/macro-day/pane.tsx +46 -10
- package/src/plugins/builtin/macro-day/releases.ts +55 -13
- package/src/plugins/builtin/market-heatmap/data.ts +9 -2
- package/src/plugins/builtin/market-heatmap/evidence.ts +1 -1
- package/src/plugins/builtin/market-heatmap/headless.ts +9 -6
- package/src/plugins/builtin/market-heatmap/index.tsx +3 -3
- package/src/plugins/builtin/market-heatmap/model.ts +10 -7
- package/src/plugins/builtin/market-movers/client.ts +36 -21
- package/src/plugins/builtin/market-movers/headless.ts +8 -2
- package/src/plugins/builtin/market-movers/index.tsx +16 -10
- package/src/plugins/builtin/market-movers/screener.ts +33 -11
- package/src/plugins/builtin/market-movers/session-body.tsx +4 -2
- package/src/plugins/builtin/market-movers/session-table.ts +4 -2
- package/src/plugins/builtin/market-movers/table.ts +4 -1
- package/src/plugins/builtin/market-valuation/headless.ts +2 -0
- package/src/plugins/builtin/market-valuation/view.ts +5 -0
- package/src/plugins/builtin/members/headless.ts +6 -5
- package/src/plugins/builtin/members/pane.tsx +11 -4
- package/src/plugins/builtin/mna/client.ts +1 -0
- package/src/plugins/builtin/mna/detail.tsx +20 -32
- package/src/plugins/builtin/mna/distress/detail.tsx +16 -4
- package/src/plugins/builtin/mna/distress/model.ts +3 -2
- package/src/plugins/builtin/mna/distress/pane.tsx +7 -4
- package/src/plugins/builtin/mna/headless.ts +6 -13
- package/src/plugins/builtin/mna/model.ts +93 -15
- package/src/plugins/builtin/mna/pane.tsx +5 -4
- package/src/plugins/builtin/news/headless.ts +12 -6
- package/src/plugins/builtin/news/index.tsx +10 -1
- package/src/plugins/builtin/news/wire/index.tsx +3 -2
- package/src/plugins/builtin/news/wire/news/command-bar-search.ts +26 -10
- package/src/plugins/builtin/news/wire/news/query-presets.ts +6 -2
- package/src/plugins/builtin/news/wire/rss/cli.ts +3 -3
- package/src/plugins/builtin/notes/cli.ts +50 -15
- package/src/plugins/builtin/notes/export.ts +17 -6
- package/src/plugins/builtin/notes/files.ts +16 -5
- package/src/plugins/builtin/openfda/pane.tsx +1 -1
- package/src/plugins/builtin/options/carry.ts +2 -2
- package/src/plugins/builtin/options/enrichment-model.ts +10 -9
- package/src/plugins/builtin/options/index.tsx +1 -1
- package/src/plugins/builtin/options/model-spot.ts +70 -4
- package/src/plugins/builtin/options/view.tsx +51 -23
- package/src/plugins/builtin/options-calculator/headless.ts +46 -7
- package/src/plugins/builtin/options-calculator/pane.tsx +3 -2
- package/src/plugins/builtin/options-positioning/headless.ts +11 -3
- package/src/plugins/builtin/options-positioning/model.ts +24 -0
- package/src/plugins/builtin/options-positioning/pane.tsx +10 -12
- package/src/plugins/builtin/options-scenario/client.ts +142 -29
- package/src/plugins/builtin/options-scenario/collar.ts +8 -6
- package/src/plugins/builtin/options-scenario/csp-screen-headless.ts +127 -0
- package/src/plugins/builtin/options-scenario/csp-screen-pane.tsx +165 -0
- package/src/plugins/builtin/options-scenario/csp-screen.ts +258 -0
- package/src/plugins/builtin/options-scenario/csp.ts +101 -21
- package/src/plugins/builtin/options-scenario/headless.ts +49 -21
- package/src/plugins/builtin/options-scenario/hedge.ts +20 -14
- package/src/plugins/builtin/options-scenario/index.tsx +28 -3
- package/src/plugins/builtin/options-scenario/model.ts +13 -0
- package/src/plugins/builtin/options-scenario/pane.tsx +22 -10
- package/src/plugins/builtin/perps/equity-row.tsx +11 -3
- package/src/plugins/builtin/perps/freshness.ts +8 -5
- package/src/plugins/builtin/perps/headless.ts +3 -1
- package/src/plugins/builtin/perps/list-perpetuals.ts +25 -4
- package/src/plugins/builtin/perps/live-rows.ts +161 -0
- package/src/plugins/builtin/perps/markets-section.tsx +154 -0
- package/src/plugins/builtin/perps/pane.tsx +36 -17
- package/src/plugins/builtin/perps/venue-markets.ts +96 -0
- package/src/plugins/builtin/plugin-marketplace/index.tsx +2 -1
- package/src/plugins/builtin/plugin-marketplace/pane.tsx +145 -60
- package/src/plugins/builtin/portfolio-list/cli/bulk-symbols.ts +78 -27
- package/src/plugins/builtin/portfolio-list/cli/portfolio-command.ts +158 -141
- package/src/plugins/builtin/portfolio-list/cli/render.ts +49 -20
- package/src/plugins/builtin/portfolio-list/cli/shared.ts +3 -3
- package/src/plugins/builtin/portfolio-list/cli/watchlist-command.ts +29 -24
- package/src/plugins/builtin/portfolio-list/headless.ts +6 -3
- package/src/plugins/builtin/portfolio-list/income.ts +13 -2
- package/src/plugins/builtin/portfolio-list/index.tsx +9 -2
- package/src/plugins/builtin/portfolio-list/pane/index.tsx +21 -8
- package/src/plugins/builtin/portfolio-list/pane/purchase-date-fx.ts +46 -0
- package/src/plugins/builtin/portfolio-list/summary/live-accounts.ts +16 -9
- package/src/plugins/builtin/portfolio-list/summary/totals.ts +2 -15
- package/src/plugins/builtin/power/client.ts +6 -3
- package/src/plugins/builtin/power/evidence.ts +22 -7
- package/src/plugins/builtin/power/gas.tsx +5 -1
- package/src/plugins/builtin/power/pane.tsx +44 -32
- package/src/plugins/builtin/power/prices.tsx +10 -3
- package/src/plugins/builtin/research/analyst-headless.ts +25 -8
- package/src/plugins/builtin/research/analyst-model.ts +68 -3
- package/src/plugins/builtin/research/corporate-actions-pane.tsx +63 -14
- package/src/plugins/builtin/research/event-model.ts +3 -1
- package/src/plugins/builtin/research/event-sources.ts +12 -4
- package/src/plugins/builtin/research/index.tsx +2 -1
- package/src/plugins/builtin/research/relative-valuation-basis.ts +58 -0
- package/src/plugins/builtin/research/relative-valuation-columns.ts +31 -2
- package/src/plugins/builtin/research/relative-valuation-currency.ts +12 -5
- package/src/plugins/builtin/research/relative-valuation-headless.ts +84 -26
- package/src/plugins/builtin/research/relative-valuation-model.ts +88 -19
- package/src/plugins/builtin/research/relative-valuation-pane.tsx +76 -9
- package/src/plugins/builtin/research/relative-valuation-peers.ts +1 -1
- package/src/plugins/builtin/reverse-dcf/client.ts +2 -1
- package/src/plugins/builtin/reverse-dcf/model.ts +10 -5
- package/src/plugins/builtin/risk-factors/index.tsx +2 -2
- package/src/plugins/builtin/scanner/lock-note.ts +1 -1
- package/src/plugins/builtin/seasonality/client.ts +2 -1
- package/src/plugins/builtin/sec/forms.ts +13 -0
- package/src/plugins/builtin/sec/fund-abroad.ts +32 -0
- package/src/plugins/builtin/sec/fund-facts.ts +68 -8
- package/src/plugins/builtin/sec/headless.ts +85 -8
- package/src/plugins/builtin/sec/index.tsx +58 -12
- package/src/plugins/builtin/sectors/client.ts +6 -4
- package/src/plugins/builtin/sectors/sector-model.ts +11 -15
- package/src/plugins/builtin/series-inventory.ts +2 -0
- package/src/plugins/builtin/shared/broker-reconnect.ts +107 -22
- package/src/plugins/builtin/shared/cloud-resource.ts +15 -2
- package/src/plugins/builtin/shared/cloud-upgrade.ts +34 -6
- package/src/plugins/builtin/shared/earnings-calendar.ts +375 -0
- package/src/plugins/builtin/{earnings/estimate-basis.ts → shared/earnings-estimate-basis.ts} +1 -1
- package/src/plugins/builtin/shared/earnings-report.ts +3 -3
- package/src/plugins/builtin/shared/fx-rate-freshness.ts +23 -1
- package/src/plugins/builtin/shared/job-posting.ts +129 -0
- package/src/plugins/builtin/shared/pro-lock-note.ts +3 -3
- package/src/plugins/builtin/shared/report-freshness.ts +3 -0
- package/src/plugins/builtin/shared/research-trading.tsx +23 -0
- package/src/plugins/builtin/shared/series-cache.ts +2 -0
- package/src/plugins/builtin/shared/series-list-detail.tsx +3 -1
- package/src/plugins/builtin/shared/ticker-surface.ts +2 -1
- package/src/plugins/builtin/shared/volatility/options.ts +2 -1
- package/src/plugins/builtin/short-interest/client.ts +2 -0
- package/src/plugins/builtin/short-interest/headless.ts +41 -12
- package/src/plugins/builtin/short-interest/index.tsx +23 -1
- package/src/plugins/builtin/short-interest/model.ts +70 -19
- package/src/plugins/builtin/short-interest/pane.tsx +19 -2
- package/src/plugins/builtin/short-interest/publications-client.ts +82 -0
- package/src/plugins/builtin/short-interest/publications-headless.ts +29 -0
- package/src/plugins/builtin/short-interest/publications-model.ts +50 -0
- package/src/plugins/builtin/short-interest/publications-pane.tsx +66 -0
- package/src/plugins/builtin/short-interest/schedule.ts +35 -2
- package/src/plugins/builtin/short-interest/surface.tsx +11 -4
- package/src/plugins/builtin/short-interest/types.ts +9 -0
- package/src/plugins/builtin/short-interest/watch-client.ts +14 -8
- package/src/plugins/builtin/short-interest/watch-model.ts +12 -25
- package/src/plugins/builtin/short-interest/watch-pane.tsx +5 -1
- package/src/plugins/builtin/social-mentions/client.ts +2 -1
- package/src/plugins/builtin/supply-chain/flow.tsx +33 -9
- package/src/plugins/builtin/supply-chain/model.ts +51 -3
- package/src/plugins/builtin/supply-chain/pane.tsx +78 -39
- package/src/plugins/builtin/supply-chain/row-evidence.tsx +1 -1
- package/src/plugins/builtin/themes/headless.ts +8 -5
- package/src/plugins/builtin/themes/model.ts +14 -4
- package/src/plugins/builtin/themes/pane.tsx +24 -5
- package/src/plugins/builtin/thirteenf/headless.ts +5 -5
- package/src/plugins/builtin/thirteenf/signals.ts +3 -1
- package/src/plugins/builtin/ticker-detail/adr-pair/headless.ts +123 -0
- package/src/plugins/builtin/ticker-detail/adr-pair/model.ts +132 -0
- package/src/plugins/builtin/ticker-detail/adr-pair/tab.tsx +87 -0
- package/src/plugins/builtin/ticker-detail/data-panes/historical-prices.tsx +40 -26
- package/src/plugins/builtin/ticker-detail/data-panes/history-bars.ts +8 -4
- package/src/plugins/builtin/ticker-detail/data-panes/returns-history.ts +67 -3
- package/src/plugins/builtin/ticker-detail/data-panes/returns-model.ts +112 -5
- package/src/plugins/builtin/ticker-detail/data-panes/returns-pane.tsx +17 -2
- package/src/plugins/builtin/ticker-detail/financials/aggregation.ts +21 -7
- package/src/plugins/builtin/ticker-detail/financials/model.ts +36 -1
- package/src/plugins/builtin/ticker-detail/financials/offerings.ts +56 -0
- package/src/plugins/builtin/ticker-detail/financials/ratios.ts +62 -13
- package/src/plugins/builtin/ticker-detail/financials/tab.tsx +30 -4
- package/src/plugins/builtin/ticker-detail/headless-schema.ts +14 -2
- package/src/plugins/builtin/ticker-detail/headless.ts +148 -35
- package/src/plugins/builtin/ticker-detail/index.tsx +37 -5
- package/src/plugins/builtin/ticker-detail/overview/model.ts +65 -10
- package/src/plugins/builtin/ticker-detail/overview/pane.tsx +9 -1
- package/src/plugins/builtin/ticker-detail/overview-tab.tsx +68 -11
- package/src/plugins/builtin/ticker-detail/pane.tsx +11 -0
- package/src/plugins/builtin/ticker-detail/quote-footer.ts +8 -3
- package/src/plugins/builtin/ticker-detail/research-tabs.ts +11 -0
- package/src/plugins/builtin/vol-surface/client.ts +28 -7
- package/src/plugins/builtin/vol-surface/headless.ts +43 -15
- package/src/plugins/builtin/vol-surface/model.ts +34 -12
- package/src/plugins/builtin/vol-surface/pane.tsx +33 -13
- package/src/plugins/builtin/vol-surface/stored.ts +34 -3
- package/src/plugins/builtin/vol-surface/tables.ts +14 -0
- package/src/plugins/builtin/volatility/model.ts +5 -10
- package/src/plugins/builtin/world-venue-map/basemap-layer.tsx +4 -3
- package/src/plugins/builtin/world-venue-map/basemap.ts +3 -1
- package/src/plugins/builtin/world-venue-map/chokepoint-chart.ts +40 -0
- package/src/plugins/builtin/world-venue-map/evidence.ts +1 -1
- package/src/plugins/builtin/world-venue-map/geo-series.ts +90 -11
- package/src/plugins/builtin/world-venue-map/headless.ts +1 -1
- package/src/plugins/builtin/world-venue-map/index.ts +3 -26
- package/src/plugins/builtin/world-venue-map/layers.ts +1 -1
- package/src/plugins/builtin/world-venue-map/map.tsx +2 -1
- package/src/plugins/builtin/world-venue-map/pane.tsx +4 -2
- package/src/plugins/builtin/world-venue-map/venue-header.tsx +15 -4
- package/src/plugins/builtin/yield-curve/client.ts +25 -0
- package/src/plugins/builtin/yield-curve/curves.ts +7 -4
- package/src/plugins/builtin/yield-curve/headless.ts +38 -4
- package/src/plugins/builtin/yield-curve/history.ts +4 -3
- package/src/plugins/builtin/yield-curve/index.tsx +12 -6
- package/src/plugins/builtin/yield-curve/swaps-model.ts +93 -0
- package/src/plugins/builtin/yield-curve/swaps.tsx +99 -0
- package/src/plugins/bundle.ts +1 -1
- package/src/plugins/catalog-browser.ts +2 -1
- package/src/plugins/compat.ts +3 -3
- package/src/plugins/dependencies.ts +75 -14
- package/src/plugins/extracted-plugins.ts +132 -34
- package/src/plugins/host-link.ts +149 -34
- package/src/plugins/installer.ts +35 -10
- package/src/plugins/loader.ts +206 -38
- package/src/plugins/manager-node.ts +2 -2
- package/src/plugins/marketplace/deactivation.ts +22 -0
- package/src/plugins/marketplace/model.ts +2 -2
- package/src/plugins/marketplace/packs.ts +1 -1
- package/src/plugins/ownership.ts +1 -1
- package/src/plugins/peer-retry.ts +155 -0
- package/src/plugins/registry/contributions.ts +3 -1
- package/src/plugins/registry/index.ts +4 -3
- package/src/plugins/registry/plugin-state.ts +3 -0
- package/src/plugins/seed-notice.ts +20 -0
- package/src/plugins/shortcut-argument.ts +39 -0
- package/src/portfolio/allocation.ts +1 -1
- package/src/portfolio/collection-name.ts +31 -0
- package/src/portfolio/column-values.ts +10 -8
- package/src/portfolio/cost-fx.ts +296 -19
- package/src/portfolio/manual-lots.ts +75 -0
- package/src/portfolio/mutations.ts +60 -22
- package/src/portfolio/suffixed-listings.ts +209 -0
- package/src/portfolio/totals-currency.ts +24 -0
- package/src/public/__snapshots__/public-api.test.ts.snap +14 -0
- package/src/public/time-series.ts +11 -8
- package/src/remote/schema.ts +1 -1
- package/src/renderers/browser/config-host.ts +3 -0
- package/src/renderers/browser/main.tsx +23 -3
- package/src/renderers/dom/boot-frame-page.ts +187 -0
- package/src/renderers/dom/boot-frame.ts +237 -0
- package/src/renderers/dom/build-assets.ts +46 -8
- package/src/renderers/dom/desktop/controls.tsx +1 -1
- package/src/renderers/dom/desktop/query-bar.tsx +2 -0
- package/src/renderers/dom/dom-ui-host.tsx +4 -29
- package/src/renderers/dom/host/ascii-text.ts +16 -2
- package/src/renderers/dom/host/box.tsx +43 -2
- package/src/renderers/dom/host/chart-surface.tsx +2 -0
- package/src/renderers/dom/host/hls.chunk.ts +3 -0
- package/src/renderers/dom/host/image-surface.tsx +49 -0
- package/src/renderers/dom/host/media-surface.tsx +24 -18
- package/src/renderers/dom/host/mouse.ts +30 -0
- package/src/renderers/dom/host/size-observer.ts +1 -1
- package/src/renderers/dom/host/style.ts +1 -1
- package/src/renderers/dom/host/tabs.tsx +16 -5
- package/src/renderers/dom/host/top-surface.ts +127 -0
- package/src/renderers/dom/styles.css +115 -0
- package/src/renderers/dom/test-utils.tsx +2 -1
- package/src/renderers/electrobun/bun/application-menu/index.ts +3 -3
- package/src/renderers/electrobun/bun/core-capabilities.ts +9 -1
- package/src/renderers/electrobun/bun/desktop/backend-requests.ts +3 -0
- package/src/renderers/electrobun/bun/desktop/backend.ts +56 -3
- package/src/renderers/electrobun/bun/desktop/detached-windows.ts +1 -1
- package/src/renderers/electrobun/bun/desktop/host-requests.ts +9 -3
- package/src/renderers/electrobun/bun/desktop/initialization.ts +81 -18
- package/src/renderers/electrobun/bun/desktop/update.ts +210 -30
- package/src/renderers/electrobun/bun/external-plugins.ts +29 -7
- package/src/renderers/electrobun/bun/index.ts +11 -1
- package/src/renderers/electrobun/bun/window/boot-frame.ts +67 -0
- package/src/renderers/electrobun/bun/window/create.ts +4 -1
- package/src/renderers/electrobun/shared/boot-frame.ts +7 -0
- package/src/renderers/electrobun/shared/protocol.ts +6 -1
- package/src/renderers/electrobun/view/cli-pane-shot-entry.tsx +1 -1
- package/src/renderers/electrobun/view/config-host.ts +3 -0
- package/src/renderers/electrobun/view/fatal-screen.tsx +1 -1
- package/src/renderers/electrobun/view/main.tsx +30 -4
- package/src/renderers/electrobun/view/news-source.ts +9 -7
- package/src/renderers/electrobun/view/remote/asset-data-client.ts +9 -2
- package/src/renderers/electrobun/view/ui-host.tsx +1 -1
- package/src/renderers/opentui/browser-open.ts +88 -0
- package/src/renderers/opentui/host.tsx +5 -14
- package/src/renderers/opentui/image/loader.ts +3 -2
- package/src/renderers/opentui/native-smoke.ts +10 -1
- package/src/renderers/opentui/pane-image/index.ts +2 -1
- package/src/renderers/opentui/render-lib.ts +253 -0
- package/src/renderers/opentui/render-timing-smoke.ts +1 -1
- package/src/renderers/opentui/start.tsx +8 -1
- package/src/renderers/share/layout-view.tsx +2 -2
- package/src/renderers/share/main.tsx +4 -4
- package/src/renderers/share/view.tsx +1 -1
- package/src/series/resolve.ts +22 -6
- package/src/series/standalone.ts +30 -2
- package/src/series/types.ts +8 -1
- package/src/shares/api.ts +4 -1
- package/src/shares/pane.ts +1 -1
- package/src/sources/gloomberb-cloud/fred-series.ts +46 -1
- package/src/sources/gloomberb-cloud/index.ts +39 -16
- package/src/sources/gloomberb-cloud/news.ts +39 -0
- package/src/sources/gloomberb-cloud/normalizers.ts +14 -1
- package/src/sources/gloomberb-cloud/perpetuals.ts +49 -1
- package/src/sources/listing-symbols.ts +37 -0
- package/src/sources/provider-errors.ts +16 -2
- package/src/sources/provider-router/financial-routes.ts +21 -3
- package/src/sources/provider-router/financials.ts +15 -2
- package/src/sources/provider-router/history.ts +30 -8
- package/src/sources/provider-router/index.ts +16 -0
- package/src/sources/provider-router/primary.ts +1 -1
- package/src/state/app/bootstrap.ts +23 -0
- package/src/state/hooks/inline-tickers.ts +30 -5
- package/src/sync/controller.ts +1 -1
- package/src/sync/core-contributors.ts +46 -14
- package/src/team/collections-sync.ts +2 -1
- package/src/team/collections.ts +178 -17
- package/src/telemetry/crash-reports.ts +21 -4
- package/src/telemetry/update-failures-node.ts +59 -0
- package/src/telemetry/update-failures.ts +307 -0
- package/src/test-support/builtin-panes.ts +1 -1
- package/src/theme/colors.ts +3 -30
- package/src/theme/ui-tokens.ts +37 -1
- package/src/tickers/company-name-listing.ts +215 -36
- package/src/tickers/company-name.ts +43 -0
- package/src/tickers/index-roots.ts +47 -0
- package/src/tickers/instrument-label.ts +5 -1
- package/src/tickers/listing-fate.ts +30 -0
- package/src/tickers/metadata.ts +10 -0
- package/src/tickers/perpetual-listing.ts +5 -2
- package/src/tickers/search/home-listing.ts +75 -0
- package/src/tickers/search/index.ts +76 -27
- package/src/tickers/search/ranking.ts +54 -4
- package/src/tickers/search/upsert.ts +29 -0
- package/src/tickers/terminal-codes.ts +416 -40
- package/src/time-series/bar-aggregation.ts +243 -0
- package/src/time-series/base-series.ts +307 -0
- package/src/time-series/chart-bounds.ts +349 -0
- package/src/time-series/chart-seed.ts +142 -0
- package/src/time-series/economic.ts +5 -0
- package/src/time-series/fundamentals.ts +18 -3
- package/src/time-series/history-acquisition.ts +499 -0
- package/src/time-series/leverage.ts +100 -0
- package/src/time-series/market-resolution.ts +4 -2
- package/src/time-series/market.ts +2 -1
- package/src/time-series/price-comparison.ts +175 -30
- package/src/time-series/range.ts +9 -1
- package/src/time-series/resolution.ts +174 -16
- package/src/time-series/resolve-context.ts +157 -0
- package/src/time-series/resolve.ts +126 -1577
- package/src/time-series/series-name.ts +38 -0
- package/src/time-series/series-presentation.ts +208 -0
- package/src/time-series/spec.ts +11 -6
- package/src/time-series/studies.ts +109 -12
- package/src/time-series/tail-reconcile.ts +121 -0
- package/src/time-series/types.ts +29 -2
- package/src/time-series/use-chart-resolution.ts +4 -5
- package/src/types/broker.ts +10 -0
- package/src/types/config.ts +14 -0
- package/src/types/data-provider.ts +20 -0
- package/src/types/exchange-rate.ts +6 -0
- package/src/types/financials.ts +104 -7
- package/src/types/headless.ts +83 -6
- package/src/types/instrument.ts +3 -0
- package/src/types/issuer-listings.ts +28 -0
- package/src/types/plugin.ts +65 -8
- package/src/types/price-history.ts +2 -0
- package/src/types/ticker.ts +13 -0
- package/src/types/trading.ts +59 -1
- package/src/ui/ascii-font.ts +13 -1
- package/src/ui/host.tsx +6 -1
- package/src/updater/command-names.ts +175 -0
- package/src/updater/failure.ts +163 -0
- package/src/updater/index.ts +97 -28
- package/src/utils/calendar-date.ts +32 -15
- package/src/utils/cash-runway.ts +241 -0
- package/src/utils/central-banks.ts +42 -0
- package/src/utils/cli-output.ts +259 -80
- package/src/utils/contract-month.ts +16 -0
- package/src/utils/crypto-pair.ts +61 -3
- package/src/utils/currency-pair.ts +26 -0
- package/src/utils/currency-units.ts +29 -0
- package/src/utils/datetime-format.ts +10 -0
- package/src/utils/debug-log.ts +1 -1
- package/src/utils/decimal-comma.ts +39 -6
- package/src/utils/exchange-announcements.ts +71 -0
- package/src/utils/exchange-rate-snapshot.ts +10 -0
- package/src/utils/financial-statements.ts +83 -4
- package/src/utils/format.ts +34 -16
- package/src/utils/fundamentals.ts +150 -34
- package/src/utils/fx-market-hours.ts +10 -1
- package/src/utils/latest-financial-period.ts +8 -0
- package/src/utils/linux-libc.ts +54 -0
- package/src/utils/market-capitalization.ts +111 -15
- package/src/utils/max-drawdown.ts +64 -0
- package/src/utils/network-failure.ts +83 -0
- package/src/utils/option-expiry.ts +139 -7
- package/src/utils/price-earnings.ts +11 -5
- package/src/utils/price-history.ts +18 -8
- package/src/utils/price-window.ts +131 -0
- package/src/utils/release-date.ts +47 -0
- package/src/utils/sec.ts +71 -0
- package/src/utils/throttled-fetch.ts +11 -4
- package/src/utils/trailing-eps.ts +67 -0
- package/src/utils/typed-text.ts +21 -0
- package/src/utils/utc-time.ts +24 -1
- package/src/version.ts +6 -0
- package/src/cli/pane-functions/screenshot.ts +0 -2122
|
@@ -19,6 +19,7 @@ import {
|
|
|
19
19
|
normalizePaneId,
|
|
20
20
|
removeUnreachablePaneInstances,
|
|
21
21
|
} from "../../types/config";
|
|
22
|
+
import { compactFloatingZ } from "../../layout/pane-manager/floating";
|
|
22
23
|
import {
|
|
23
24
|
migrateChartPaneSettings,
|
|
24
25
|
type LegacyChartMigrationContext,
|
|
@@ -237,7 +238,7 @@ function getDefaultFollowSourceInstanceId(layout: LayoutConfig): string | null {
|
|
|
237
238
|
|
|
238
239
|
function sanitizeFloatingEntries(value: unknown, validInstanceIds: Set<string>): LayoutConfig["floating"] {
|
|
239
240
|
if (!Array.isArray(value)) return [];
|
|
240
|
-
|
|
241
|
+
const entries = value
|
|
241
242
|
.filter((entry): entry is LayoutConfig["floating"][number] =>
|
|
242
243
|
!!entry
|
|
243
244
|
&& typeof entry === "object"
|
|
@@ -256,6 +257,8 @@ function sanitizeFloatingEntries(value: unknown, validInstanceIds: Set<string>):
|
|
|
256
257
|
height: Math.max(1, Math.round(entry.height)),
|
|
257
258
|
zIndex: typeof entry.zIndex === "number" ? Math.round(entry.zIndex) : entry.zIndex,
|
|
258
259
|
}));
|
|
260
|
+
// A stack raised past the shell's menus and previews in an older session is renumbered in the same order.
|
|
261
|
+
return compactFloatingZ(entries);
|
|
259
262
|
}
|
|
260
263
|
|
|
261
264
|
function sanitizeDetachedEntries(value: unknown, validInstanceIds: Set<string>): LayoutConfig["detached"] {
|
|
@@ -15,6 +15,7 @@ import {
|
|
|
15
15
|
} from "./normalize";
|
|
16
16
|
|
|
17
17
|
const configLog = debugLog.createLogger("config");
|
|
18
|
+
const IN_MEMORY_DATA_DIR = ":memory:";
|
|
18
19
|
|
|
19
20
|
/**
|
|
20
21
|
* The config.json for a data directory: the file inside it, except that the
|
|
@@ -130,6 +131,9 @@ async function writeConfigFile(configPath: string, contents: string): Promise<vo
|
|
|
130
131
|
* and the next one still runs.
|
|
131
132
|
*/
|
|
132
133
|
export async function saveConfig(config: AppConfig): Promise<void> {
|
|
134
|
+
// `:memory:` is the data directory of a config kept in memory (tests, as for
|
|
135
|
+
// SQLite): there is no file, and writing one would land under the working directory.
|
|
136
|
+
if (config.dataDir === IN_MEMORY_DATA_DIR) return;
|
|
133
137
|
const configPath = configFileFor(config.dataDir);
|
|
134
138
|
// Written as it was when called, however the caller's object changes while
|
|
135
139
|
// earlier saves are still running.
|
|
@@ -44,7 +44,7 @@ function sanitizeTheme(value: unknown, fallback: string): string {
|
|
|
44
44
|
if (typeof value !== "string") return fallback;
|
|
45
45
|
if (!themes[value] && !reportedUnknownThemes.has(value)) {
|
|
46
46
|
reportedUnknownThemes.add(value);
|
|
47
|
-
configLog.warn(`Unknown theme "${value}" in config; showing ${DEFAULT_THEME}.
|
|
47
|
+
configLog.warn(`Unknown theme "${value}" in config; showing ${DEFAULT_THEME}. gloom config themes lists the ids.`);
|
|
48
48
|
}
|
|
49
49
|
return value;
|
|
50
50
|
}
|
|
@@ -93,6 +93,7 @@ export function normalizeLoadedConfig(
|
|
|
93
93
|
brokerInstances: sanitizeBrokerInstances(candidate.brokerInstances),
|
|
94
94
|
disabledPlugins,
|
|
95
95
|
seededPlugins: sanitizeUniqueStringList(candidate.seededPlugins),
|
|
96
|
+
...sanitizePluginSeedFailure(candidate.pluginSeedFailure),
|
|
96
97
|
...(candidate.portfolioCurrenciesAdopted === true ? { portfolioCurrenciesAdopted: true } : {}),
|
|
97
98
|
...(candidate.presentationMode === true ? { presentationMode: true } : {}),
|
|
98
99
|
...(typeof candidate.timezone === "string" && candidate.timezone.trim() ? { timezone: candidate.timezone.trim() } : {}),
|
|
@@ -160,6 +161,7 @@ export function normalizeConfigForSave(config: AppConfig): AppConfig {
|
|
|
160
161
|
// Older apps read the retired group ids, so a group that is all off is saved as one.
|
|
161
162
|
disabledPlugins: encodeBuiltinDisabledPluginIds(sanitizeUniqueStringList(config.disabledPlugins)),
|
|
162
163
|
seededPlugins: sanitizeUniqueStringList(config.seededPlugins),
|
|
164
|
+
...sanitizePluginSeedFailure(config.pluginSeedFailure),
|
|
163
165
|
disabledSources: sanitizeUniqueStringList(config.disabledSources),
|
|
164
166
|
pluginConfig: sanitizePluginConfig(config.pluginConfig),
|
|
165
167
|
chartPreferences: sanitizeChartPreferences(config.chartPreferences, defaults.chartPreferences),
|
|
@@ -317,6 +319,13 @@ function sanitizeUniqueStringList(value: unknown): string[] {
|
|
|
317
319
|
return [...new Set(sanitizeStringArray(value, []))];
|
|
318
320
|
}
|
|
319
321
|
|
|
322
|
+
/** The last failed plugin seed as saved, or nothing when it is absent or unreadable. */
|
|
323
|
+
function sanitizePluginSeedFailure(value: unknown): Pick<AppConfig, "pluginSeedFailure"> {
|
|
324
|
+
if (!isRecord(value)) return {};
|
|
325
|
+
const plugins = sanitizeUniqueStringList(value.plugins).sort();
|
|
326
|
+
return plugins.length > 0 ? { pluginSeedFailure: { plugins, gitMissing: value.gitMissing === true } } : {};
|
|
327
|
+
}
|
|
328
|
+
|
|
320
329
|
function isPluginConfigMap(value: unknown): value is Record<string, Record<string, unknown>> {
|
|
321
330
|
if (!isRecord(value)) return false;
|
|
322
331
|
return Object.values(value).every((entry) => isRecord(entry));
|
|
@@ -363,10 +372,11 @@ function sanitizePortfolios(value: unknown, fallback: Portfolio[]): Portfolio[]
|
|
|
363
372
|
.map(sanitizePortfolioAllocation);
|
|
364
373
|
}
|
|
365
374
|
|
|
366
|
-
/** Cash, target weights
|
|
375
|
+
/** Cash, target weights, the import source and a fixed currency the portfolio commands write; a malformed one is dropped. */
|
|
367
376
|
function sanitizePortfolioAllocation(entry: Portfolio): Portfolio {
|
|
368
|
-
const { cash, targetWeights, importedFrom, ...portfolio } = entry;
|
|
377
|
+
const { cash, targetWeights, importedFrom, fixedCurrency, ...portfolio } = entry;
|
|
369
378
|
const next: Portfolio = { ...portfolio };
|
|
379
|
+
if (fixedCurrency === true) next.fixedCurrency = true;
|
|
370
380
|
if (isRecord(importedFrom) && importedFrom.kind === "13f"
|
|
371
381
|
&& [importedFrom.cik, importedFrom.name, importedFrom.period, importedFrom.filed].every((value) => typeof value === "string" && value)) {
|
|
372
382
|
next.importedFrom = { kind: "13f", cik: importedFrom.cik, name: importedFrom.name, period: importedFrom.period, filed: importedFrom.filed };
|
|
@@ -3,8 +3,8 @@ import { isRecord } from "../../../utils/guards";
|
|
|
3
3
|
const PORTFOLIO_PANE_ID = "portfolio-list";
|
|
4
4
|
|
|
5
5
|
/**
|
|
6
|
-
* The portfolio pane's default columns before AS OF UTC took AGE's place
|
|
7
|
-
*
|
|
6
|
+
* The portfolio pane's default columns before AS OF UTC took AGE's place.
|
|
7
|
+
* Frozen here: the current default may change again, and only a
|
|
8
8
|
* list still equal to this one was never chosen by the user.
|
|
9
9
|
*/
|
|
10
10
|
const PREVIOUS_DEFAULT_COLUMN_IDS: readonly string[] = [
|
package/src/data/json-storage.ts
CHANGED
|
@@ -52,4 +52,6 @@ export const BROWSER_STORAGE_KEYS = {
|
|
|
52
52
|
session: "gloomberb.web.session.v1",
|
|
53
53
|
/** Broker account snapshots; other caches stay in memory. */
|
|
54
54
|
resources: "gloomberb.web.resources.v1",
|
|
55
|
+
/** The layout the page draws before its script loads (renderers/dom/boot-frame.ts). */
|
|
56
|
+
bootFrame: "gloomberb.web.boot-frame.v1",
|
|
55
57
|
} as const;
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Answers a CLI command gave from a copy saved earlier because refreshing it
|
|
3
|
+
* failed: offline, a refused proxy, a service error. A command answers once,
|
|
4
|
+
* so the line it ends with says "couldn't refresh; saved <time>" instead of
|
|
5
|
+
* reading as live or delayed, but only when what it shows came from such a
|
|
6
|
+
* copy: a saved copy of something else it loaded on the way (a fallback for a
|
|
7
|
+
* pane it does not print) says nothing about the data on screen.
|
|
8
|
+
*
|
|
9
|
+
* The copy served is marked, by a symbol property that object spreads carry
|
|
10
|
+
* along and JSON never writes, and the command's output is searched for the
|
|
11
|
+
* marks. Nothing is marked outside `collectSavedCopies`: the app and its panes
|
|
12
|
+
* keep running for hours and say how current their data is in their own
|
|
13
|
+
* footers.
|
|
14
|
+
*/
|
|
15
|
+
const SAVED_AT = Symbol("gloomberb.savedCopyAt");
|
|
16
|
+
|
|
17
|
+
let collecting = 0;
|
|
18
|
+
let marked = 0;
|
|
19
|
+
|
|
20
|
+
type Marked = { [SAVED_AT]?: number };
|
|
21
|
+
|
|
22
|
+
function mark<T>(value: T, savedAt: number): T {
|
|
23
|
+
if (!value || typeof value !== "object" || Array.isArray(value)) return value;
|
|
24
|
+
marked += 1;
|
|
25
|
+
return { ...value, [SAVED_AT]: savedAt };
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
/**
|
|
29
|
+
* The value a command answers with when it came from a copy saved at
|
|
30
|
+
* `savedAt` (ms) after its refresh failed: a marked copy while a command runs,
|
|
31
|
+
* the value itself otherwise. An array's items are marked one by one, since
|
|
32
|
+
* a report shows its rows rather than the array that held them.
|
|
33
|
+
*/
|
|
34
|
+
export function servedFromSavedCopy<T>(value: T, savedAt: number): T {
|
|
35
|
+
if (collecting === 0 || !Number.isFinite(savedAt) || !value || typeof value !== "object") return value;
|
|
36
|
+
return (Array.isArray(value) ? value.map((item) => mark(item, savedAt)) : mark(value, savedAt)) as T;
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
/**
|
|
40
|
+
* The saved-copy mark of `value`, to spread into what is drawn from it (a
|
|
41
|
+
* report row built from a quote's fields), or nothing when it has none.
|
|
42
|
+
*/
|
|
43
|
+
export function savedCopyMark(value: unknown): object {
|
|
44
|
+
const savedAt = value && typeof value === "object" ? (value as Marked)[SAVED_AT] : undefined;
|
|
45
|
+
return typeof savedAt === "number" ? { [SAVED_AT]: savedAt } : {};
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
/** How far into a command's output the marks are looked for, so a large report is not walked whole. */
|
|
49
|
+
const MAX_DEPTH = 6;
|
|
50
|
+
const MAX_NODES = 50_000;
|
|
51
|
+
|
|
52
|
+
/**
|
|
53
|
+
* When the oldest saved copy among `shown` (what a command prints, or the
|
|
54
|
+
* data its closing line is drawn from) was saved, or null when none of it
|
|
55
|
+
* came from one. The oldest, since that is how old what is shown can be.
|
|
56
|
+
*/
|
|
57
|
+
export function savedCopyShownAt(shown: unknown): number | null {
|
|
58
|
+
if (collecting === 0 || marked === 0) return null;
|
|
59
|
+
let oldest: number | null = null;
|
|
60
|
+
let budget = MAX_NODES;
|
|
61
|
+
const seen = new Set<object>();
|
|
62
|
+
const visit = (node: unknown, depth: number) => {
|
|
63
|
+
if (!node || typeof node !== "object" || seen.has(node) || budget-- <= 0) return;
|
|
64
|
+
seen.add(node);
|
|
65
|
+
const savedAt = (node as Marked)[SAVED_AT];
|
|
66
|
+
if (typeof savedAt === "number") oldest = oldest == null ? savedAt : Math.min(oldest, savedAt);
|
|
67
|
+
if (depth >= MAX_DEPTH) return;
|
|
68
|
+
for (const child of Array.isArray(node) ? node : Object.values(node)) visit(child, depth + 1);
|
|
69
|
+
};
|
|
70
|
+
visit(shown, 0);
|
|
71
|
+
return oldest;
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
/** Runs one command, marking the saved copies it answers from. */
|
|
75
|
+
export async function collectSavedCopies<T>(run: () => Promise<T>): Promise<T> {
|
|
76
|
+
if (collecting === 0) marked = 0;
|
|
77
|
+
collecting += 1;
|
|
78
|
+
try {
|
|
79
|
+
return await run();
|
|
80
|
+
} finally {
|
|
81
|
+
collecting -= 1;
|
|
82
|
+
if (collecting === 0) marked = 0;
|
|
83
|
+
}
|
|
84
|
+
}
|
package/src/docs/snapshot.json
CHANGED
|
@@ -287,12 +287,20 @@
|
|
|
287
287
|
"code": "OSA",
|
|
288
288
|
"name": "Options scenario",
|
|
289
289
|
"description": "Multi-leg payoff and P&L",
|
|
290
|
-
"detail": "Build a multi-leg options position from the chain, from OMON, or by hand, and value it at any spot, date, and vol shift: payoff, P&L grid, breakevens, and Greeks. European pricing, so no early exercise.",
|
|
290
|
+
"detail": "Build a multi-leg options position from the chain, from OMON, or by hand, and value it at any spot, date, and vol shift: payoff, P&L grid, breakevens, and Greeks. It also sells a cash-secured put, with the yield on cash at the mid and at the bid, sizes a protective put to a hedge budget, and collars shares. European pricing, so no early exercise.",
|
|
291
291
|
"category": "research",
|
|
292
292
|
"arg": "AAPL",
|
|
293
293
|
"shot": "https://gloom.sh/screenshots/fn/OSA.png",
|
|
294
294
|
"lesson": "/academy/options-and-volatility/chain-and-strategies/strategy-analyzer"
|
|
295
295
|
},
|
|
296
|
+
{
|
|
297
|
+
"code": "CSP",
|
|
298
|
+
"name": "Cash-secured put screen",
|
|
299
|
+
"description": "Put-selling yield across a list",
|
|
300
|
+
"detail": "For each ticker, the put nearest a delta (0.30) on the expiry about 30 days out, ranked by annualised yield on cash at the bid, with distance out of the money, delta, IV rank, the bid/ask spread (wide ones flagged, never dropped), and whether earnings fall before expiry. Enter opens the put in OSA.",
|
|
301
|
+
"category": "research",
|
|
302
|
+
"arg": "JPM, GS, KO"
|
|
303
|
+
},
|
|
296
304
|
{
|
|
297
305
|
"code": "OVDV",
|
|
298
306
|
"name": "Volatility surface",
|
|
@@ -407,7 +415,7 @@
|
|
|
407
415
|
"code": "GUID",
|
|
408
416
|
"name": "Company guidance",
|
|
409
417
|
"description": "Outlook from the latest call",
|
|
410
|
-
"detail": "The outlook the company gave on its latest earnings call,
|
|
418
|
+
"detail": "The outlook the company gave on its latest earnings call, above consensus for the coming periods. US listings. The Guidance tab of EM.",
|
|
411
419
|
"category": "research",
|
|
412
420
|
"arg": "NVDA",
|
|
413
421
|
"access": "cloud",
|
|
@@ -454,6 +462,24 @@
|
|
|
454
462
|
"shot": "https://gloom.sh/screenshots/fn/SIV.png",
|
|
455
463
|
"lesson": "/academy/compare-screen-follow-money/who-owns-it/short-interest"
|
|
456
464
|
},
|
|
465
|
+
{
|
|
466
|
+
"code": "FTD",
|
|
467
|
+
"name": "Fails to deliver",
|
|
468
|
+
"description": "Outstanding settlement fails",
|
|
469
|
+
"detail": "The Short Interest pane on Fails to deliver: SEC outstanding fail shares by settlement date and CUSIP, with reported prices. Each date is a separate snapshot; never add fails across dates. Published twice monthly with a delay. Missing records do not establish zero fails.",
|
|
470
|
+
"category": "research",
|
|
471
|
+
"arg": "AAPL",
|
|
472
|
+
"access": "cloud"
|
|
473
|
+
},
|
|
474
|
+
{
|
|
475
|
+
"code": "ATS",
|
|
476
|
+
"name": "Weekly ATS / OTC volume",
|
|
477
|
+
"description": "Weekly off-exchange shares and trades",
|
|
478
|
+
"detail": "The Short Interest pane on Weekly ATS/OTC: FINRA ATS and non-ATS shares and trades, including dark-pool activity. ATS % divides ATS shares by published off-exchange shares, not total market volume or short volume. Missing categories stay blank. Published weekly with a two- or four-week delay depending on the security tier.",
|
|
479
|
+
"category": "research",
|
|
480
|
+
"arg": "AAPL",
|
|
481
|
+
"access": "cloud"
|
|
482
|
+
},
|
|
457
483
|
{
|
|
458
484
|
"code": "DIAG",
|
|
459
485
|
"name": "Equity diagnostic",
|
|
@@ -480,7 +506,7 @@
|
|
|
480
506
|
"code": "EXEC",
|
|
481
507
|
"name": "Executives",
|
|
482
508
|
"description": "Officers and pay from the proxy",
|
|
483
|
-
"detail": "Named executive officers and their compensation
|
|
509
|
+
"detail": "Named executive officers and their compensation. Free shows each executive's total pay; Pro adds the breakdown and earlier years.",
|
|
484
510
|
"category": "research",
|
|
485
511
|
"arg": "NVDA",
|
|
486
512
|
"access": "pro",
|
|
@@ -502,7 +528,7 @@
|
|
|
502
528
|
"code": "CALLS",
|
|
503
529
|
"name": "Earnings calls",
|
|
504
530
|
"description": "Transcripts and guidance",
|
|
505
|
-
"detail": "Earnings call transcripts with speaker attribution, the analyst Q&A, and
|
|
531
|
+
"detail": "Earnings call transcripts with speaker attribution, the analyst Q&A, and guidance and notable quotes. Without a ticker it lists new calls as they land.",
|
|
506
532
|
"category": "research",
|
|
507
533
|
"arg": "NVDA",
|
|
508
534
|
"access": "pro",
|
|
@@ -618,7 +644,7 @@
|
|
|
618
644
|
"code": "NI",
|
|
619
645
|
"name": "Topic news",
|
|
620
646
|
"description": "News by topic code or sector",
|
|
621
|
-
"detail": "Market news by topic code (MNA, CB, ENERGY, REG, CRYPTO, EARN, IPO) or by sector. LTR lists public fund and investor letters as links to the publisher's page.",
|
|
647
|
+
"detail": "Market news by topic code (MNA, CB, ENERGY, METALS, REG, CRYPTO, EARN, IPO) or by sector. LTR lists public fund and investor letters as links to the publisher's page.",
|
|
622
648
|
"category": "news",
|
|
623
649
|
"arg": "ENERGY",
|
|
624
650
|
"shot": "https://gloom.sh/screenshots/fn/NI.png",
|
|
@@ -764,6 +790,13 @@
|
|
|
764
790
|
"shot": "https://gloom.sh/screenshots/fn/CRYP.png",
|
|
765
791
|
"lesson": "/academy/crypto-and-prediction-markets/crypto-from-zero"
|
|
766
792
|
},
|
|
793
|
+
{
|
|
794
|
+
"code": "ETFF",
|
|
795
|
+
"name": "Crypto ETF flows",
|
|
796
|
+
"description": "Daily spot bitcoin and ether ETF flows",
|
|
797
|
+
"detail": "Daily net flows of the US spot bitcoin and ether ETFs, fund by fund in US$ millions, as Farside Investors publishes them: the last 5 and 20 days, the running total since launch, and the funds the newest day still waits on.",
|
|
798
|
+
"category": "markets"
|
|
799
|
+
},
|
|
767
800
|
{
|
|
768
801
|
"code": "PERP",
|
|
769
802
|
"name": "Perpetual history",
|
|
@@ -836,7 +869,7 @@
|
|
|
836
869
|
"code": "GPU",
|
|
837
870
|
"name": "GPU Rental Prices",
|
|
838
871
|
"description": "GPU rental rates and asks",
|
|
839
|
-
"detail": "What it costs to rent a GPU by the hour: published prices, spot rates and marketplace asks in USD per GPU-hour, with history and related equities. Pro shows the full board; Free shows
|
|
872
|
+
"detail": "What it costs to rent a GPU by the hour: published prices, spot rates and marketplace asks in USD per GPU-hour, with history and related equities. Pro shows the full board; Free shows a three-row sample led by H100, B200 and H200.",
|
|
840
873
|
"category": "markets",
|
|
841
874
|
"arg": "H100",
|
|
842
875
|
"access": "pro",
|
|
@@ -1684,8 +1717,8 @@
|
|
|
1684
1717
|
"pages": [
|
|
1685
1718
|
{
|
|
1686
1719
|
"slug": "getting-started",
|
|
1687
|
-
"title": "Install
|
|
1688
|
-
"lead": "Install the
|
|
1720
|
+
"title": "Install Gloom: Mac, Windows, Linux, TUI",
|
|
1721
|
+
"lead": "Install the Gloom desktop app on Mac or Windows, or run it in a terminal with one command. Then update it and confirm it runs.",
|
|
1689
1722
|
"category": "Start here",
|
|
1690
1723
|
"tags": [
|
|
1691
1724
|
"install",
|
|
@@ -1853,7 +1886,7 @@
|
|
|
1853
1886
|
},
|
|
1854
1887
|
{
|
|
1855
1888
|
"slug": "first-session",
|
|
1856
|
-
"title": "Your first
|
|
1889
|
+
"title": "Your first Gloom session",
|
|
1857
1890
|
"lead": "Build a market workspace in the desktop app or terminal UI in ten minutes.",
|
|
1858
1891
|
"category": "Start here",
|
|
1859
1892
|
"tags": [
|
|
@@ -1894,7 +1927,7 @@
|
|
|
1894
1927
|
{
|
|
1895
1928
|
"type": "image",
|
|
1896
1929
|
"src": "https://gloom.sh/screenshots/beginner-ticker-search.png",
|
|
1897
|
-
"alt": "Ticker search showing Apple listings inside
|
|
1930
|
+
"alt": "Ticker search showing Apple listings inside Gloom",
|
|
1898
1931
|
"caption": "Ticker search lists each match with its type and exchange."
|
|
1899
1932
|
},
|
|
1900
1933
|
{
|
|
@@ -1913,7 +1946,7 @@
|
|
|
1913
1946
|
{
|
|
1914
1947
|
"type": "image",
|
|
1915
1948
|
"src": "https://gloom.sh/screenshots/beginner-command-bar.png",
|
|
1916
|
-
"alt": "
|
|
1949
|
+
"alt": "Gloom command bar showing the GP AAPL Graph Price command",
|
|
1917
1950
|
"caption": "The command bar accepts prefixes and searchable names."
|
|
1918
1951
|
},
|
|
1919
1952
|
{
|
|
@@ -1970,7 +2003,7 @@
|
|
|
1970
2003
|
{
|
|
1971
2004
|
"type": "image",
|
|
1972
2005
|
"src": "https://gloom.sh/screenshots/beginner-workspace.png",
|
|
1973
|
-
"alt": "Completed beginner
|
|
2006
|
+
"alt": "Completed beginner Gloom workspace",
|
|
1974
2007
|
"caption": "Company research, a price chart, and market movers."
|
|
1975
2008
|
},
|
|
1976
2009
|
{
|
|
@@ -2216,7 +2249,7 @@
|
|
|
2216
2249
|
{
|
|
2217
2250
|
"type": "image",
|
|
2218
2251
|
"src": "https://gloom.sh/screenshots/MOST.png",
|
|
2219
|
-
"alt": "Market movers pane in
|
|
2252
|
+
"alt": "Market movers pane in Gloom",
|
|
2220
2253
|
"caption": "MOST groups gainers, losers, active names, and trending tickers."
|
|
2221
2254
|
},
|
|
2222
2255
|
{
|
|
@@ -2284,7 +2317,7 @@
|
|
|
2284
2317
|
{
|
|
2285
2318
|
"type": "image",
|
|
2286
2319
|
"src": "https://gloom.sh/screenshots/RV.png",
|
|
2287
|
-
"alt": "Relative valuation comparison in
|
|
2320
|
+
"alt": "Relative valuation comparison in Gloom",
|
|
2288
2321
|
"caption": "RV compares valuation and operating metrics across a peer group."
|
|
2289
2322
|
},
|
|
2290
2323
|
{
|
|
@@ -4316,7 +4349,7 @@
|
|
|
4316
4349
|
},
|
|
4317
4350
|
{
|
|
4318
4351
|
"type": "paragraph",
|
|
4319
|
-
"text": "Pro unlocks the full board, history and Changes. Free, signed in or not, shows
|
|
4352
|
+
"text": "Pro unlocks the full board, history and Changes. Free, signed in or not, shows a three-row sample led by H100, B200 and H200. Asks and AWS spot update hourly, other rates every 6 to 24 hours."
|
|
4320
4353
|
},
|
|
4321
4354
|
{
|
|
4322
4355
|
"type": "paragraph",
|
|
@@ -5221,7 +5254,7 @@
|
|
|
5221
5254
|
{
|
|
5222
5255
|
"slug": "cli-functions",
|
|
5223
5256
|
"title": "CLI and pane functions",
|
|
5224
|
-
"lead": "
|
|
5257
|
+
"lead": "Gloom from the shell: market data, local state, plugin capabilities, reports and screenshots of any function.",
|
|
5225
5258
|
"category": "Advanced",
|
|
5226
5259
|
"tags": [
|
|
5227
5260
|
"cli",
|
|
@@ -5524,7 +5557,7 @@
|
|
|
5524
5557
|
{
|
|
5525
5558
|
"slug": "agents",
|
|
5526
5559
|
"title": "Agents and remote control",
|
|
5527
|
-
"lead": "Use the semantic remote API to inspect and control a running
|
|
5560
|
+
"lead": "Use the semantic remote API to inspect and control a running Gloom desktop or TUI session.",
|
|
5528
5561
|
"category": "Advanced",
|
|
5529
5562
|
"tags": [
|
|
5530
5563
|
"agents",
|
|
@@ -5541,7 +5574,7 @@
|
|
|
5541
5574
|
},
|
|
5542
5575
|
{
|
|
5543
5576
|
"type": "paragraph",
|
|
5544
|
-
"text": "The remote API drives a running
|
|
5577
|
+
"text": "The remote API drives a running Gloom app. Agents and scripts read semantic state, open panes, navigate tickers, arrange layouts, and call plugin capabilities, with no screen coordinates."
|
|
5545
5578
|
},
|
|
5546
5579
|
{
|
|
5547
5580
|
"type": "paragraph",
|
|
@@ -6467,7 +6500,7 @@
|
|
|
6467
6500
|
{
|
|
6468
6501
|
"slug": "plugins",
|
|
6469
6502
|
"title": "Plugins",
|
|
6470
|
-
"lead": "Install, build, and publish
|
|
6503
|
+
"lead": "Install, build, and publish Gloom plugins: panes, commands, CLI commands, data capabilities, and UI.",
|
|
6471
6504
|
"category": "Advanced",
|
|
6472
6505
|
"tags": [
|
|
6473
6506
|
"plugins",
|
|
@@ -6487,7 +6520,7 @@
|
|
|
6487
6520
|
},
|
|
6488
6521
|
{
|
|
6489
6522
|
"type": "paragraph",
|
|
6490
|
-
"text": "Import only from the `gloomberb/*` exports, never OpenTUI, Electrobun, DOM, or private
|
|
6523
|
+
"text": "Import only from the `gloomberb/*` exports, never OpenTUI, Electrobun, DOM, or private Gloom source paths. Full API: [PLUGINS.md](https://github.com/gloom-sh/gloomberb/blob/main/PLUGINS.md)."
|
|
6491
6524
|
},
|
|
6492
6525
|
{
|
|
6493
6526
|
"type": "heading",
|
|
@@ -6513,7 +6546,7 @@
|
|
|
6513
6546
|
{
|
|
6514
6547
|
"type": "image",
|
|
6515
6548
|
"src": "https://gloom.sh/screenshots/plugins-manager.png",
|
|
6516
|
-
"alt": "
|
|
6549
|
+
"alt": "Gloom plugin manager",
|
|
6517
6550
|
"caption": "PL toggles first-party and installed plugins from the command bar."
|
|
6518
6551
|
},
|
|
6519
6552
|
{
|
|
@@ -6527,7 +6560,7 @@
|
|
|
6527
6560
|
},
|
|
6528
6561
|
{
|
|
6529
6562
|
"type": "code",
|
|
6530
|
-
"code": "const plugin = {\n id: \"hello-gloom\",\n name: \"Hello Gloom\",\n version: \"0.1.0\",\n description: \"A minimal
|
|
6563
|
+
"code": "const plugin = {\n id: \"hello-gloom\",\n name: \"Hello Gloom\",\n version: \"0.1.0\",\n description: \"A minimal Gloom plugin.\",\n toggleable: true,\n\n cliCommands: [\n {\n name: \"hello\",\n description: \"Print a plugin-owned greeting\",\n help: {\n usage: [\"hello [name]\"],\n examples: [\"hello Vince --json\"],\n },\n execute(args, ctx) {\n ctx.printResult({ data: { greeting: `hello ${args[0] ?? \"gloom\"}` } });\n },\n },\n ],\n\n setup(ctx) {\n ctx.registerCommand({\n id: \"hello-gloom-command\",\n label: \"Hello Gloom\",\n description: \"Show a hello notification\",\n keywords: [\"hello\", \"demo\"],\n category: \"navigation\",\n shortcut: \"HELLO\",\n execute: () => {\n ctx.notify({\n body: \"Hello from your plugin.\",\n type: \"success\",\n });\n },\n });\n },\n};\n\nexport default plugin;"
|
|
6531
6564
|
},
|
|
6532
6565
|
{
|
|
6533
6566
|
"type": "paragraph",
|
|
@@ -6539,7 +6572,7 @@
|
|
|
6539
6572
|
},
|
|
6540
6573
|
{
|
|
6541
6574
|
"type": "paragraph",
|
|
6542
|
-
"text": "Restart
|
|
6575
|
+
"text": "Restart Gloom, then type `HELLO` in the command bar. For an interactive pane, copy [gloom-hackernews](https://github.com/gloom-sh/gloom-hackernews)."
|
|
6543
6576
|
},
|
|
6544
6577
|
{
|
|
6545
6578
|
"type": "heading",
|
|
@@ -6596,7 +6629,7 @@
|
|
|
6596
6629
|
{
|
|
6597
6630
|
"slug": "news-api",
|
|
6598
6631
|
"title": "News API",
|
|
6599
|
-
"lead": "Use
|
|
6632
|
+
"lead": "Use Gloom's standalone market-news API in your own financial product.",
|
|
6600
6633
|
"category": "Advanced",
|
|
6601
6634
|
"tags": [
|
|
6602
6635
|
"news api",
|
|
@@ -6612,7 +6645,7 @@
|
|
|
6612
6645
|
},
|
|
6613
6646
|
{
|
|
6614
6647
|
"type": "paragraph",
|
|
6615
|
-
"text": "The News API is
|
|
6648
|
+
"text": "The News API is Gloom's market news for your own product, backend, model pipeline, or dashboard. It is not needed to use the app and is billed separately from [Gloom Cloud](/docs/cloud-and-data)."
|
|
6616
6649
|
},
|
|
6617
6650
|
{
|
|
6618
6651
|
"type": "paragraph",
|
|
@@ -6882,7 +6915,7 @@
|
|
|
6882
6915
|
},
|
|
6883
6916
|
{
|
|
6884
6917
|
"type": "paragraph",
|
|
6885
|
-
"text": "Gloom Datasets serves the data Gloom stores to your own systems over REST. It is a separate product with its own site
|
|
6918
|
+
"text": "Gloom Datasets serves the data Gloom stores to your own systems over REST. It is a separate product with its own [site](/datasets), keys and plans, billed separately from [Gloom Cloud](/docs/cloud-and-data). The app does not need it."
|
|
6886
6919
|
},
|
|
6887
6920
|
{
|
|
6888
6921
|
"type": "paragraph",
|
|
@@ -6905,7 +6938,7 @@
|
|
|
6905
6938
|
},
|
|
6906
6939
|
{
|
|
6907
6940
|
"type": "paragraph",
|
|
6908
|
-
"text": "See the [full dataset reference](
|
|
6941
|
+
"text": "See the [full dataset reference](/datasets/docs) for routes, parameters, examples and credits."
|
|
6909
6942
|
},
|
|
6910
6943
|
{
|
|
6911
6944
|
"type": "paragraph",
|
|
@@ -6918,7 +6951,7 @@
|
|
|
6918
6951
|
},
|
|
6919
6952
|
{
|
|
6920
6953
|
"type": "paragraph",
|
|
6921
|
-
"text": "Gloom Datasets keys start with `gds_`. They come with a plan and are created in the [console](
|
|
6954
|
+
"text": "Gloom Datasets keys start with `gds_`. They come with a plan and are created in the [console](/datasets/console). Send one as `Authorization: Bearer gds_...` or `x-api-key`."
|
|
6922
6955
|
},
|
|
6923
6956
|
{
|
|
6924
6957
|
"type": "paragraph",
|
|
@@ -6964,7 +6997,7 @@
|
|
|
6964
6997
|
},
|
|
6965
6998
|
{
|
|
6966
6999
|
"type": "paragraph",
|
|
6967
|
-
"text": "Credits, rate limits, usage rights and the founding offer (40% off Basic and Desk for 12 months, for the first 100 paid accounts until December 4, 2026) are on [Pricing](
|
|
7000
|
+
"text": "Credits, rate limits, usage rights and the founding offer (40% off Basic and Desk for 12 months, for the first 100 paid accounts until December 4, 2026) are on [Pricing](/datasets/pricing)."
|
|
6968
7001
|
},
|
|
6969
7002
|
{
|
|
6970
7003
|
"type": "heading",
|
|
@@ -6974,9 +7007,9 @@
|
|
|
6974
7007
|
{
|
|
6975
7008
|
"type": "list",
|
|
6976
7009
|
"items": [
|
|
6977
|
-
"[Quickstart](
|
|
6978
|
-
"[API reference](
|
|
6979
|
-
"[Console](
|
|
7010
|
+
"[Quickstart](/datasets/docs/quickstart): a plan, a key, one call, then the same call from Python and TypeScript.",
|
|
7011
|
+
"[API reference](/datasets/docs): datasets, routes, credits, errors and the OpenAPI document.",
|
|
7012
|
+
"[Console](/datasets/console): account, billing, keys and usage."
|
|
6980
7013
|
]
|
|
6981
7014
|
}
|
|
6982
7015
|
]
|