gloomberb 0.15.4 → 0.15.6
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 +3 -1
- package/package.json +4 -3
- package/src/api-client/askg.ts +2 -2
- package/src/api-client/auth.ts +28 -0
- package/src/api-client/cot.ts +3 -3
- package/src/api-client/crypto-markets.ts +1 -1
- package/src/api-client/data.ts +17 -0
- package/src/api-client/debt-maturities.ts +2 -2
- package/src/api-client/earnings.ts +3 -3
- package/src/api-client/equity-screener.ts +2 -2
- package/src/api-client/estimate-revisions.ts +5 -5
- package/src/api-client/index.ts +12 -11
- package/src/api-client/ipo.ts +4 -4
- package/src/api-client/market-movers.ts +1 -1
- package/src/api-client/mna.ts +2 -2
- package/src/api-client/normalizers.ts +1 -1
- package/src/api-client/paths.ts +2 -2
- package/src/api-client/plan-rules.ts +2 -2
- package/src/api-client/rates.ts +1 -1
- package/src/api-client/request.ts +1 -1
- package/src/api-client/research-activity.ts +4 -1
- package/src/api-client/social-mentions.ts +1 -1
- package/src/api-client/types.ts +40 -32
- package/src/api-client/yield-curves.ts +47 -0
- package/src/app/app-bootstrap-state.ts +0 -2
- package/src/app/global-shortcuts.ts +21 -0
- package/src/app/keybindings/actions.ts +9 -1
- package/src/app/keybindings/chord.ts +1 -1
- package/src/app/keybindings/index.ts +0 -14
- package/src/app/keybindings/labels.ts +1 -1
- package/src/app/keybindings/resolve.ts +1 -8
- package/src/app/pane-runtime/index.tsx +9 -14
- package/src/app/pane-runtime/layout-placement.ts +1 -30
- package/src/app/pane-runtime/plugin-bindings.ts +184 -180
- package/src/app/pane-runtime/ticker-inspector-runtime.ts +5 -5
- package/src/app/pane-runtime/ticker-open-runtime.ts +5 -5
- package/src/app/pane-template-dialog-wizard.tsx +13 -5
- package/src/app/runtime/broker-import.ts +5 -3
- package/src/app/runtime/desktop-deeplink.ts +4 -4
- package/src/app/runtime/desktop-menu.ts +4 -4
- package/src/app/runtime/layout-warmup.ts +1 -1
- package/src/app/runtime/plugin-bindings.ts +187 -188
- package/src/app/runtime/update.ts +1 -1
- package/src/app.tsx +3 -3
- package/src/brokers/signed-in/adapter.ts +1 -1
- package/src/brokers/signed-in/client.ts +1 -1
- package/src/brokers/signed-in/connect.ts +1 -1
- package/src/brokers/signed-in/sign-in.ts +1 -1
- package/src/cli/commands/plugins.ts +3 -3
- package/src/cli/desktop-pane-shot.ts +3 -3
- package/src/cli/errors.ts +3 -3
- package/src/cli/pane-functions/capabilities.ts +2 -2
- package/src/cli/pane-functions/dom.ts +1 -1
- package/src/cli/pane-functions/function-help.ts +1038 -0
- package/src/cli/pane-functions/headless.ts +1 -1
- package/src/cli/pane-functions/options.ts +1 -1
- package/src/cli/pane-functions/report.ts +1 -1
- package/src/cli/pane-functions/screenshot-evidence.ts +3 -3
- package/src/cli/pane-functions/screenshot.ts +5 -6
- package/src/cli/restore-plugins.ts +1 -1
- package/src/components/chart/composite/column-layout.ts +1 -1
- package/src/components/chart/composite/composite-chart.tsx +302 -26
- package/src/components/chart/composite/downsample.ts +1 -1
- package/src/components/chart/composite/index.ts +0 -1
- package/src/components/chart/composite/interactions.ts +2 -0
- package/src/components/chart/composite/levels.ts +154 -0
- package/src/components/chart/composite/rasterizer.ts +78 -10
- package/src/components/chart/composite/scene.ts +60 -1
- package/src/components/chart/composite/session-shading.ts +99 -0
- package/src/components/chart/composite/text-renderer.ts +5 -0
- package/src/components/chart/composite/time-axis.ts +1 -1
- package/src/components/chart/composite/tools.ts +1 -1
- package/src/components/chart/composite/types.ts +42 -3
- package/src/components/chart/composite/volume-profile-paint.ts +77 -0
- package/src/components/chart/curve/index.ts +2 -2
- package/src/components/chart/curve/model.ts +7 -4
- package/src/components/chart/native/kitty/support.ts +1 -1
- package/src/components/chart/static/index.ts +0 -2
- package/src/components/chart/static/series.ts +3 -0
- package/src/components/chart/static/trail-chart-surface.tsx +1 -1
- package/src/components/chart/surface3d/model.ts +4 -4
- package/src/components/chart/surface3d/software.ts +1 -1
- package/src/components/chart-table/axis.ts +20 -0
- package/src/components/chart-table/index.ts +4 -8
- package/src/components/chart-table/layout.ts +3 -3
- package/src/components/chart-table/selection.ts +1 -1
- package/src/components/command-bar/assist/model.ts +1 -1
- package/src/components/command-bar/commands/registry.ts +4 -1
- package/src/components/command-bar/keyboard-handlers.ts +1 -1
- package/src/components/command-bar/keyboard-shortcuts.ts +1 -1
- package/src/components/command-bar/layout-items/current-layout.ts +12 -2
- package/src/components/command-bar/layout-items/focused-pane.ts +3 -3
- package/src/components/command-bar/layout-items.ts +1 -1
- package/src/components/command-bar/list/badge.ts +1 -1
- package/src/components/command-bar/multi-select-picker.tsx +1 -1
- package/src/components/command-bar/pane-actions.ts +3 -3
- package/src/components/command-bar/pane-settings.ts +1 -1
- package/src/components/command-bar/pane-templates/workflow.ts +1 -1
- package/src/components/command-bar/panel/layout.ts +1 -1
- package/src/components/command-bar/panel/runtime.ts +1 -1
- package/src/components/command-bar/panel/types.ts +1 -1
- package/src/components/command-bar/picker-activation.ts +3 -3
- package/src/components/command-bar/routes/root/help-items.ts +66 -0
- package/src/components/command-bar/routes/root/results.ts +9 -0
- package/src/components/command-bar/routes/root/search-report.ts +1 -1
- package/src/components/command-bar/routes/root/selection.ts +7 -1
- package/src/components/command-bar/routes/ticker-search/results.ts +1 -1
- package/src/components/command-bar/surface/environment.ts +0 -4
- package/src/components/command-bar/surface/index.tsx +3 -4
- package/src/components/command-bar/workflow/collection-actions.ts +17 -9
- package/src/components/command-bar/workflow/fields.ts +35 -13
- package/src/components/command-bar/workflow/ops.ts +52 -8
- package/src/components/command-bar/workflow/route-actions.ts +2 -3
- package/src/components/command-bar/workflow/submit.ts +2 -2
- package/src/components/feedback-dialog.tsx +1 -1
- package/src/components/layout/detached-pane-shell.tsx +4 -10
- package/src/components/layout/pane/cycle-order.ts +1 -1
- package/src/components/layout/pane/footer/index.tsx +0 -3
- package/src/components/layout/pane/footer/registration.tsx +0 -12
- package/src/components/layout/pane/frame.tsx +2 -1
- package/src/components/layout/pane/header.tsx +1 -1
- package/src/components/layout/pane/sidebar.tsx +0 -1
- package/src/components/layout/pane/surface.ts +26 -0
- package/src/components/layout/pane/title.ts +21 -5
- package/src/components/layout/shell/active-drag.ts +1 -1
- package/src/components/layout/shell/chrome.ts +1 -1
- package/src/components/layout/shell/cursor-occlusion.ts +1 -1
- package/src/components/layout/shell/drag/index.ts +1 -1
- package/src/components/layout/shell/drag/overlays.tsx +1 -1
- package/src/components/layout/shell/drag/runtime.ts +1 -1
- package/src/components/layout/shell/fullscreen.ts +1 -1
- package/src/components/layout/shell/index.tsx +8 -19
- package/src/components/layout/shell/layout-state.ts +1 -1
- package/src/components/layout/shell/menu.ts +1 -1
- package/src/components/layout/shell/native/pointer-runtime.ts +1 -1
- package/src/components/layout/shell/native/surfaces.ts +1 -1
- package/src/components/layout/shell/native/window-state.ts +1 -1
- package/src/components/layout/shell/pane/actions.ts +3 -3
- package/src/components/layout/shell/pane/layers.tsx +1 -1
- package/src/components/layout/shell/pane-occlusion.ts +1 -1
- package/src/components/layout/shell/terminal-pointer-runtime.ts +1 -1
- package/src/components/layout/shell/ticker-link-menu.ts +46 -23
- package/src/components/layout/shell/visible-layout.ts +1 -1
- package/src/components/layout/shell/window-mode/index.ts +2 -9
- package/src/components/layout/shell/window-mode/overlays.tsx +1 -1
- package/src/components/layout/status-bar-groups.ts +1 -1
- package/src/components/layout/status-bar.tsx +10 -6
- package/src/components/layout/titlebar-overlay.ts +1 -1
- package/src/components/layout/window-edit/mode.ts +1 -1
- package/src/components/layout/window-edit/presentation.ts +1 -1
- package/src/components/layout/window-edit/status.tsx +1 -1
- package/src/components/layout/window-fullscreen.ts +1 -1
- package/src/components/onboarding/desks-step.tsx +43 -0
- package/src/components/onboarding/first-run-workspace.ts +2 -2
- package/src/components/onboarding/onboarding-wizard.tsx +151 -26
- package/src/components/onboarding/wizard-account.ts +43 -132
- package/src/components/onboarding/wizard-broker-sync.ts +1 -1
- package/src/components/onboarding/wizard-positions.ts +20 -7
- package/src/components/quote-flash.ts +2 -2
- package/src/components/ticker/badge/index.tsx +2 -2
- package/src/components/toggle-list.tsx +18 -10
- package/src/components/ui/data-table/stable-columns.ts +1 -1
- package/src/components/ui/data-table/types.ts +1 -1
- package/src/components/ui/external-link.tsx +6 -2
- package/src/components/ui/index.ts +0 -1
- package/src/components/ui/multi-select/dialog.tsx +18 -8
- package/src/components/ui/number-prompt-dialog.tsx +1 -1
- package/src/components/ui/split-bar.tsx +1 -1
- package/src/components/ui/table-layout.ts +1 -1
- package/src/components/ui/text-prompt-dialog.tsx +4 -1
- package/src/core/app-runtime.ts +8 -6
- package/src/core/connection-health.ts +2 -2
- package/src/core/state/app/layout-reducer.ts +0 -12
- package/src/core/state/app/layout.ts +9 -19
- package/src/core/state/app/state.ts +6 -13
- package/src/core/state/app/types.ts +10 -2
- package/src/core/state/session-persistence.ts +3 -5
- package/src/data/config/chart-settings.ts +1 -1
- package/src/data/config/home.ts +1 -1
- package/src/data/config/store/node.ts +1 -1
- package/src/data/config/store/normalize.ts +3 -3
- package/src/i18n/es.ts +37 -0
- package/src/i18n/index.ts +0 -2
- package/src/i18n/ja.ts +37 -0
- package/src/i18n/ko.ts +37 -0
- package/src/i18n/languages.ts +1 -1
- package/src/i18n/zh-cn.ts +37 -0
- package/src/i18n/zh-tw.ts +37 -0
- package/src/layout/desks.ts +335 -0
- package/src/{plugins → layout}/launch-layout.ts +0 -1
- package/src/layout/pane-follow.ts +47 -0
- package/src/{plugins/pane-manager.ts → layout/pane-manager/index.ts} +8 -9
- package/src/{plugins → layout}/ticker-navigation.ts +13 -0
- package/src/layout-marketplace/api.ts +1 -1
- package/src/layout-marketplace/cloud.ts +3 -3
- package/src/layout-marketplace/gallery.tsx +1 -1
- package/src/layout-marketplace/geometry.ts +1 -1
- package/src/layout-marketplace/linked-sync.ts +1 -1
- package/src/layout-marketplace/linked.ts +2 -2
- package/src/layout-marketplace/model.ts +2 -2
- package/src/layout-marketplace/use-marketplace.ts +3 -3
- package/src/market-data/coordinator/index.ts +0 -1
- package/src/market-data/coordinator/quotes.ts +3 -3
- package/src/market-data/frame-scheduler.ts +1 -1
- package/src/market-data/history-session.ts +1 -1
- package/src/market-data/market/format.ts +15 -9
- package/src/market-data/market/freshness.ts +64 -0
- package/src/market-data/market/trading-sessions.ts +72 -0
- package/src/market-data/realized-volatility.ts +2 -2
- package/src/market-data/snapshot-provider.ts +1 -1
- package/src/news/hooks.ts +1 -1
- package/src/news/news-model.ts +1 -1
- package/src/news/types.ts +1 -1
- package/src/plugins/auto-update.ts +2 -2
- package/src/plugins/builtin/account-management/calendar-tab.tsx +196 -0
- package/src/plugins/builtin/account-management/footer.ts +5 -2
- package/src/plugins/builtin/account-management/index.tsx +2 -2
- package/src/plugins/builtin/account-management/navigation.ts +1 -1
- package/src/plugins/builtin/account-management/pane.tsx +11 -1
- package/src/plugins/builtin/alerts/levels.ts +60 -0
- package/src/plugins/builtin/alerts/research-rules.ts +2 -2
- package/src/plugins/builtin/analytics/index.tsx +16 -10
- package/src/plugins/builtin/analytics/pane-model.ts +21 -12
- package/src/plugins/builtin/analytics/risk-client.ts +2 -2
- package/src/plugins/builtin/analytics/risk-evidence.ts +4 -4
- package/src/plugins/builtin/analytics/risk-math.ts +3 -3
- package/src/plugins/builtin/analytics/risk-model.ts +2 -2
- package/src/plugins/builtin/analytics/risk-test-data.ts +1 -0
- package/src/plugins/builtin/analytics/sharpe-cadence.ts +1 -1
- package/src/plugins/builtin/backtest/client.ts +1 -1
- package/src/plugins/builtin/backtest/engine.ts +1 -1
- package/src/plugins/builtin/backtest/index.tsx +1 -1
- package/src/plugins/builtin/backtest/rules.ts +5 -5
- package/src/plugins/builtin/bond-calculator/math.ts +3 -3
- package/src/plugins/builtin/buildout/detail/company.tsx +1 -1
- package/src/plugins/builtin/buildout/format.ts +1 -1
- package/src/plugins/builtin/cds/client.ts +1 -1
- package/src/plugins/builtin/cds/headless.ts +1 -1
- package/src/plugins/builtin/chart-composer/catalog-inventory.ts +2 -2
- package/src/plugins/builtin/chart-composer/chart-spec-edit.ts +502 -0
- package/src/plugins/builtin/chart-composer/editor/controller.ts +6 -7
- package/src/plugins/builtin/chart-composer/editor/model.ts +2 -2
- package/src/plugins/builtin/chart-composer/follow-binding.ts +1 -1
- package/src/plugins/builtin/chart-composer/headless.ts +5 -3
- package/src/plugins/builtin/chart-composer/index.tsx +20 -0
- package/src/plugins/builtin/chart-composer/pane.tsx +307 -32
- package/src/plugins/builtin/chart-composer/presets.ts +7 -836
- package/src/plugins/builtin/chart-composer/price-levels.ts +80 -0
- package/src/plugins/builtin/chart-composer/quick-add.tsx +4 -4
- package/src/plugins/builtin/chart-composer/series-catalog.ts +1 -4
- package/src/plugins/builtin/chart-composer/series-expression.ts +189 -0
- package/src/{time-series → plugins/builtin/chart-composer}/session-history.ts +14 -14
- package/src/plugins/builtin/chart-composer/settings.ts +35 -14
- package/src/plugins/builtin/chart-composer/studies.ts +242 -0
- package/src/plugins/builtin/chat/channel-labels.ts +1 -1
- package/src/plugins/builtin/chat/channels.ts +1 -1
- package/src/plugins/builtin/chat/content/transcript.tsx +0 -1
- package/src/plugins/builtin/chat/layout.ts +2 -2
- package/src/plugins/builtin/chat/message/profile-popover.tsx +1 -1
- package/src/plugins/builtin/chat/pane.tsx +0 -2
- package/src/plugins/builtin/chat/profile-popover.ts +1 -1
- package/src/plugins/builtin/chat/sidebar-store.ts +2 -2
- package/src/plugins/builtin/cloud/askg/executor.ts +3 -3
- package/src/plugins/builtin/cloud/askg/manifest.ts +3 -3
- package/src/plugins/builtin/cloud/askg/model.ts +5 -5
- package/src/plugins/builtin/cloud/askg/pane.tsx +1 -1
- package/src/plugins/builtin/cloud/askg/protocol.ts +14 -14
- package/src/plugins/builtin/cloud/auth-dialog.tsx +1 -1
- package/src/plugins/builtin/cloud/auth-form.tsx +31 -94
- package/src/plugins/builtin/cloud/auth-model.ts +1 -1
- package/src/plugins/builtin/cloud/device-signin-dialog.tsx +1 -1
- package/src/plugins/builtin/cloud/email-auth-attempt.ts +173 -0
- package/src/plugins/builtin/cloud/team/capability.ts +1 -1
- package/src/plugins/builtin/cloud/team/collections.ts +1 -1
- package/src/plugins/builtin/cloud/team/command.ts +2 -2
- package/src/plugins/builtin/cloud/team/model.ts +1 -1
- package/src/plugins/builtin/cloud/team/pane-sections.tsx +1 -1
- package/src/plugins/builtin/cloud/team/pane-ui.tsx +1 -1
- package/src/plugins/builtin/cloud/team/pane.tsx +1 -1
- package/src/plugins/builtin/cloud/team/views.ts +2 -2
- package/src/plugins/builtin/cloud/thesis/exposure.ts +2 -2
- package/src/plugins/builtin/cloud/thesis/ticker-tab.tsx +0 -1
- package/src/plugins/builtin/cloud/upgrade-dialog.tsx +2 -2
- package/src/plugins/builtin/cloud-tweets/model.ts +1 -1
- package/src/{utils → plugins/builtin/cloud-tweets}/tweet-text.ts +1 -1
- package/src/plugins/builtin/composite-plugins.ts +4 -0
- package/src/plugins/builtin/congress-trades/detail.tsx +1 -1
- package/src/plugins/builtin/congress-trades/model.ts +1 -1
- package/src/plugins/builtin/congress-trades/table.tsx +1 -1
- package/src/plugins/builtin/connections/pane.tsx +1 -1
- package/src/plugins/builtin/correlation/index.tsx +2 -2
- package/src/plugins/builtin/correlation/relationship/pane.tsx +1 -1
- package/src/plugins/builtin/correlation/relationship/view-model.ts +1 -1
- package/src/plugins/builtin/cot/client.ts +1 -1
- package/src/plugins/builtin/credit-boards/client.ts +2 -2
- package/src/plugins/builtin/credit-boards/model.ts +5 -11
- package/src/plugins/builtin/credit-conditions/client.ts +1 -1
- package/src/plugins/builtin/credit-conditions/headless.ts +2 -2
- package/src/plugins/builtin/crypto-board/model.ts +4 -4
- package/src/plugins/builtin/crypto-board/pane.tsx +1 -1
- package/src/plugins/builtin/custom-view/live-quotes.ts +1 -1
- package/src/plugins/builtin/custom-view/pane.tsx +35 -23
- package/src/plugins/builtin/custom-view/view-spec.ts +9 -9
- package/src/plugins/builtin/debt-maturities/index.tsx +1 -0
- package/src/plugins/builtin/debt-maturities/model.ts +2 -18
- package/src/plugins/builtin/debt-maturities/pane.tsx +2 -2
- package/src/plugins/builtin/dividend-yield/index.tsx +1 -0
- package/src/plugins/builtin/earnings/board-model.ts +1 -1
- package/src/plugins/builtin/earnings/client.ts +2 -2
- package/src/plugins/builtin/earnings/data/cache.ts +1 -1
- package/src/plugins/builtin/earnings/estimate-basis.ts +2 -7
- package/src/plugins/builtin/earnings/headless.ts +3 -3
- package/src/plugins/builtin/earnings/history-model.ts +1 -1
- package/src/plugins/builtin/earnings-calls/headless.ts +1 -1
- package/src/plugins/builtin/econ/detail-view.tsx +1 -1
- package/src/plugins/builtin/econ/index.tsx +1 -1
- package/src/plugins/builtin/econ-statistics/detail.tsx +1 -1
- package/src/plugins/builtin/econ-statistics/pane.tsx +1 -1
- package/src/plugins/builtin/econ-statistics/view.ts +3 -3
- package/src/plugins/builtin/estimate-revisions/index.tsx +1 -0
- package/src/plugins/builtin/executives/index.tsx +1 -0
- package/src/plugins/builtin/fear-greed/headless.ts +1 -1
- package/src/plugins/builtin/fear-greed/index.tsx +0 -2
- package/src/plugins/builtin/filing-events/index.tsx +1 -0
- package/src/plugins/builtin/futures/index.tsx +1 -1
- package/src/plugins/builtin/futures/returns.ts +1 -1
- package/src/plugins/builtin/futures/use-front-returns.ts +1 -1
- package/src/plugins/builtin/futures-curve/model.ts +2 -2
- package/src/plugins/builtin/help/function-card.tsx +202 -0
- package/src/plugins/builtin/help/function-index.ts +193 -0
- package/src/plugins/builtin/help/index.tsx +31 -1
- package/src/plugins/builtin/help/shortcut-model.ts +1 -1
- package/src/plugins/builtin/help/table-cells.tsx +1 -1
- package/src/plugins/builtin/holders/index.tsx +1 -0
- package/src/plugins/builtin/insider/client.ts +1 -1
- package/src/plugins/builtin/insider/index.tsx +1 -0
- package/src/plugins/builtin/insider/model.ts +1 -1
- package/src/plugins/builtin/ipo-calendar/headless.ts +1 -1
- package/src/plugins/builtin/ipo-calendar/model.ts +1 -1
- package/src/plugins/builtin/iv-history/charts.tsx +1 -1
- package/src/plugins/builtin/iv-history/client.ts +2 -2
- package/src/plugins/builtin/iv-history/index.tsx +1 -1
- package/src/plugins/builtin/iv-history/model.ts +4 -4
- package/src/plugins/builtin/jobs/client.ts +1 -1
- package/src/plugins/builtin/jobs/model.ts +3 -3
- package/src/plugins/builtin/jobs/pane.tsx +2 -2
- package/src/plugins/builtin/kelly-sizer/model.ts +1 -1
- package/src/plugins/builtin/kelly-sizer/test-support.tsx +1 -1
- package/src/plugins/builtin/kelly-sizer/types.ts +1 -1
- package/src/plugins/builtin/layout-manager/index.tsx +76 -2
- package/src/plugins/builtin/macro-resources.ts +1 -1
- package/src/plugins/builtin/market-halts/pane.tsx +5 -1
- package/src/plugins/builtin/market-heatmap/data.ts +4 -4
- package/src/plugins/builtin/market-movers/screener.ts +1 -1
- package/src/plugins/builtin/market-valuation/align.ts +1 -1
- package/src/plugins/builtin/market-valuation/chart-projection.ts +1 -1
- package/src/plugins/builtin/market-valuation/defs.ts +3 -3
- package/src/plugins/builtin/market-valuation/headless.ts +1 -1
- package/src/plugins/builtin/market-valuation/indicators.ts +4 -4
- package/src/plugins/builtin/market-valuation/series.ts +1 -1
- package/src/plugins/builtin/market-valuation/settings.ts +1 -1
- package/src/plugins/builtin/market-valuation/sources.ts +1 -1
- package/src/plugins/builtin/market-valuation/view.ts +1 -1
- package/src/plugins/builtin/market-valuation/zone-scale/model.ts +1 -1
- package/src/plugins/builtin/mna/client.ts +3 -3
- package/src/plugins/builtin/mna/detail.tsx +1 -1
- package/src/plugins/builtin/mna/model.ts +2 -7
- package/src/plugins/builtin/mna/pane.tsx +2 -2
- package/src/plugins/builtin/news/headless.ts +1 -1
- package/src/plugins/builtin/news/index.tsx +1 -0
- package/src/plugins/builtin/news/wire/breaking/filters.ts +5 -5
- package/src/plugins/builtin/notes/store.ts +1 -1
- package/src/plugins/builtin/options/enrichment.ts +1 -1
- package/src/plugins/builtin/options/footer.ts +2 -2
- package/src/plugins/builtin/options/index.tsx +1 -0
- package/src/plugins/builtin/options/live-quotes.ts +4 -4
- package/src/plugins/builtin/options/types.ts +1 -1
- package/src/plugins/builtin/options-positioning/client.ts +105 -0
- package/src/plugins/builtin/options-positioning/headless.ts +113 -0
- package/src/plugins/builtin/options-positioning/index.tsx +70 -0
- package/src/plugins/builtin/options-positioning/model.ts +158 -0
- package/src/plugins/builtin/options-positioning/pane.tsx +597 -0
- package/src/plugins/builtin/options-scenario/client.ts +78 -21
- package/src/plugins/builtin/options-scenario/headless.ts +14 -2
- package/src/plugins/builtin/options-scenario/model.ts +5 -3
- package/src/plugins/builtin/options-scenario/pane.tsx +14 -5
- package/src/plugins/builtin/plugin-marketplace/model.ts +1 -1
- package/src/plugins/builtin/plugin-marketplace/store.ts +1 -1
- package/src/plugins/builtin/portfolio-list/account-metrics.ts +1 -1
- package/src/plugins/builtin/portfolio-list/cli/portfolio-command.ts +7 -1
- package/src/plugins/builtin/portfolio-list/cli/render.ts +13 -13
- package/src/plugins/builtin/portfolio-list/column-values.ts +1 -0
- package/src/plugins/builtin/portfolio-list/metrics.ts +1 -1
- package/src/plugins/builtin/portfolio-list/mutations.ts +71 -0
- package/src/plugins/builtin/portfolio-list/pane/index.tsx +26 -15
- package/src/plugins/builtin/portfolio-list/position-metrics.ts +1 -1
- package/src/plugins/builtin/portfolio-list/summary/index.tsx +18 -9
- package/src/plugins/builtin/portfolio-list/summary/live-accounts.ts +1 -1
- package/src/plugins/builtin/portfolio-list/summary/totals.ts +49 -8
- package/src/plugins/builtin/rate-path/model.ts +1 -1
- package/src/plugins/builtin/realized-vol/chart-model.ts +1 -1
- package/src/plugins/builtin/realized-vol/evidence.ts +1 -1
- package/src/plugins/builtin/realized-vol/index.tsx +1 -1
- package/src/plugins/builtin/realized-vol/model.ts +2 -2
- package/src/plugins/builtin/relative-rotation/model.ts +3 -3
- package/src/plugins/builtin/research/corporate-actions-pane.tsx +1 -1
- package/src/plugins/builtin/research/events-headless.ts +1 -1
- package/src/plugins/builtin/research/headless.ts +1 -1
- package/src/plugins/builtin/research/index.tsx +4 -0
- package/src/plugins/builtin/research-search/model.ts +1 -1
- package/src/plugins/builtin/revenue-breakdown/bars.tsx +1 -1
- package/src/plugins/builtin/revenue-breakdown/client.ts +1 -1
- package/src/plugins/builtin/revenue-breakdown/index.tsx +1 -0
- package/src/plugins/builtin/revenue-breakdown/model.ts +1 -1
- package/src/plugins/builtin/revenue-breakdown/pane.tsx +1 -1
- package/src/plugins/builtin/risk-factors/index.tsx +1 -0
- package/src/plugins/builtin/scanner/flow-model.ts +3 -3
- package/src/plugins/builtin/scanner/flow-pane.tsx +1 -1
- package/src/plugins/builtin/scanner/headless.ts +5 -5
- package/src/plugins/builtin/scanner/hilo-model.ts +3 -3
- package/src/plugins/builtin/seasonality/client.ts +41 -0
- package/src/plugins/builtin/seasonality/headless.ts +38 -0
- package/src/plugins/builtin/seasonality/index.tsx +20 -0
- package/src/plugins/builtin/seasonality/model.ts +124 -0
- package/src/plugins/builtin/seasonality/pane.tsx +156 -0
- package/src/plugins/builtin/sec/index.tsx +1 -0
- package/src/plugins/builtin/sec/model.ts +1 -1
- package/src/plugins/builtin/shared/cloud-upgrade.ts +2 -2
- package/src/plugins/builtin/shared/mine-tickers.ts +1 -1
- package/src/plugins/builtin/shared/series-cache.ts +2 -2
- package/src/plugins/builtin/shared/use-quote-board.ts +1 -1
- package/src/plugins/builtin/shared/volatility/options.ts +1 -1
- package/src/plugins/builtin/short-interest/index.tsx +2 -1
- package/src/plugins/builtin/short-interest/model.ts +1 -1
- package/src/plugins/builtin/short-volume/index.tsx +6 -1
- package/src/plugins/builtin/short-volume/model.ts +1 -1
- package/src/plugins/builtin/social-mentions/index.tsx +1 -1
- package/src/plugins/builtin/social-mentions/model.ts +1 -1
- package/src/plugins/builtin/thirteenf/model.ts +1 -1
- package/src/plugins/builtin/thirteenf/signals.ts +1 -1
- package/src/plugins/builtin/ticker-detail/data-panes/historical-prices.tsx +1 -1
- package/src/plugins/builtin/ticker-detail/financials/ratios.ts +1 -1
- package/src/plugins/builtin/ticker-detail/financials/schema.ts +0 -1
- package/src/plugins/builtin/ticker-detail/index.tsx +3 -0
- package/src/plugins/builtin/ticker-detail/overview/components.tsx +1 -1
- package/src/plugins/builtin/time-sales/index.tsx +1 -1
- package/src/plugins/builtin/time-sales/model.ts +1 -1
- package/src/plugins/builtin/treasury-auctions/headless.ts +2 -2
- package/src/plugins/builtin/treasury-auctions/model.ts +1 -1
- package/src/plugins/builtin/vol-surface/client.ts +4 -4
- package/src/plugins/builtin/vol-surface/live.ts +1 -1
- package/src/plugins/builtin/vol-surface/model.ts +7 -7
- package/src/plugins/builtin/vol-surface/pane.tsx +1 -1
- package/src/plugins/builtin/vol-surface/stored.ts +1 -1
- package/src/plugins/builtin/volatility/client.ts +4 -4
- package/src/plugins/builtin/volatility/headless.ts +1 -1
- package/src/plugins/builtin/volatility/model.ts +5 -5
- package/src/plugins/builtin/world-indices/headless.ts +3 -3
- package/src/plugins/builtin/yield-curve/chart.ts +61 -16
- package/src/plugins/builtin/yield-curve/curves.ts +171 -0
- package/src/plugins/builtin/yield-curve/forward.ts +102 -0
- package/src/plugins/builtin/yield-curve/headless.ts +96 -41
- package/src/plugins/builtin/yield-curve/index.tsx +331 -120
- package/src/plugins/builtin/yield-curve/world.ts +53 -0
- package/src/plugins/bundle.ts +1 -1
- package/src/plugins/catalog-browser.ts +4 -0
- package/src/plugins/catalog-manifest.ts +1 -1
- package/src/plugins/compat.ts +7 -3
- package/src/plugins/dependencies.ts +26 -6
- package/src/plugins/external-runtime.ts +1 -1
- package/src/plugins/host-link.ts +20 -1
- package/src/plugins/host-modules.ts +4 -1
- package/src/plugins/host-resolver.ts +4 -1
- package/src/plugins/installer.ts +11 -2
- package/src/plugins/loader.ts +1 -1
- package/src/plugins/ownership.ts +1 -1
- package/src/plugins/plugin-names.ts +1 -1
- package/src/plugins/registry/host-actions.ts +237 -0
- package/src/plugins/registry/index.ts +79 -146
- package/src/plugins/registry/plugin-state.ts +1 -1
- package/src/plugins/runtime/context.tsx +2 -25
- package/src/plugins/runtime/state.ts +2 -2
- package/src/public/__snapshots__/public-api.test.ts.snap +1 -0
- package/src/public/layout.ts +2 -2
- package/src/public/test-support.ts +9 -1
- package/src/react/ticker-source.ts +1 -1
- package/src/remote/controller-utils.ts +2 -3
- package/src/remote/controller.ts +14 -14
- package/src/remote/resources.ts +10 -4
- package/src/remote/schema.ts +2 -2
- package/src/remote/semantic-helpers.ts +1 -1
- package/src/remote/types.ts +3 -3
- package/src/renderers/browser/bundled-plugins.ts +31 -1
- package/src/renderers/browser/main.tsx +4 -4
- package/src/renderers/browser/ui-host.tsx +1 -1
- package/src/renderers/{electrobun/view → dom}/build-assets.ts +3 -2
- package/src/renderers/{electrobun/view → dom}/data-frames.ts +2 -2
- package/src/renderers/{electrobun/view → dom}/data-table/dom.ts +3 -3
- package/src/renderers/{electrobun/view → dom}/data-table/index.tsx +9 -9
- package/src/renderers/{electrobun/view → dom}/data-table/row.tsx +5 -5
- package/src/renderers/{electrobun/view → dom}/desktop/control-styles.ts +2 -2
- package/src/renderers/{electrobun/view → dom}/desktop/controls.tsx +16 -16
- package/src/renderers/{electrobun/view → dom}/desktop/icons.tsx +1 -1
- package/src/renderers/{electrobun/view → dom}/desktop/list-view.tsx +5 -5
- package/src/renderers/{electrobun/view → dom}/desktop/menu.tsx +1 -1
- package/src/renderers/{electrobun/view → dom}/desktop/popover.tsx +3 -3
- package/src/renderers/{electrobun/view → dom}/desktop/query-bar.tsx +1 -1
- package/src/renderers/{electrobun/view → dom}/desktop/select-field.tsx +6 -6
- package/src/renderers/{electrobun/view → dom}/dialog-host.tsx +4 -4
- package/src/renderers/{electrobun/view → dom}/dom-host-providers.tsx +2 -2
- package/src/renderers/{electrobun/view → dom}/dom-ui-host.tsx +3 -3
- package/src/renderers/{electrobun/view → dom}/host/ascii-text.ts +2 -2
- package/src/renderers/{electrobun/view → dom}/host/chart-surface.tsx +1 -1
- package/src/renderers/{electrobun/view → dom}/host/input.tsx +3 -3
- package/src/renderers/{electrobun/view → dom}/host/media-surface.tsx +1 -1
- package/src/renderers/{electrobun/view → dom}/host/mouse.ts +2 -2
- package/src/renderers/{electrobun/view → dom}/host/scroll-box.tsx +2 -2
- package/src/renderers/{electrobun/view → dom}/host/style.ts +2 -2
- package/src/renderers/{electrobun/view → dom}/host/surface-3d.tsx +4 -4
- package/src/renderers/{electrobun/view → dom}/host/tabs.tsx +2 -2
- package/src/renderers/{electrobun/view → dom}/host/text.tsx +3 -3
- package/src/renderers/{electrobun/view → dom}/input-host.tsx +3 -3
- package/src/renderers/{electrobun/view → dom}/native-renderer.ts +2 -2
- package/src/renderers/{electrobun/view → dom}/test-utils.tsx +3 -3
- package/src/renderers/{electrobun/view → dom}/toast-host.tsx +2 -2
- package/src/renderers/electrobun/bun/application-menu/index.ts +1 -0
- package/src/{theme → renderers/electrobun/bun/desktop}/app-icon.ts +5 -5
- package/src/renderers/electrobun/bun/desktop/backend-requests.ts +45 -93
- package/src/renderers/electrobun/bun/desktop/backend.ts +514 -0
- package/src/renderers/electrobun/bun/desktop/capability-bridge.ts +1 -1
- package/src/renderers/electrobun/bun/desktop/detached-windows.ts +36 -54
- package/src/renderers/electrobun/bun/desktop/host-requests.ts +62 -53
- package/src/renderers/electrobun/bun/desktop/initialization.ts +25 -78
- package/src/renderers/electrobun/bun/desktop/macos-dock-icon.ts +1 -1
- package/src/renderers/electrobun/bun/desktop/state-broadcaster.ts +1 -1
- package/src/renderers/electrobun/bun/desktop/workspace/index.ts +2 -10
- package/src/renderers/electrobun/bun/desktop/workspace/requests.ts +20 -47
- package/src/renderers/electrobun/bun/index.ts +14 -648
- package/src/renderers/electrobun/bun/window/frame.ts +1 -1
- package/src/renderers/electrobun/shared/protocol.ts +11 -11
- package/src/renderers/electrobun/view/backend-rpc.ts +1 -1
- package/src/renderers/electrobun/view/cli-pane-shot-entry.tsx +3 -4
- package/src/renderers/electrobun/view/main.tsx +3 -3
- package/src/renderers/electrobun/view/ui-host.tsx +1 -1
- package/src/renderers/opentui/host.tsx +12 -6
- package/src/renderers/opentui/test-utils.tsx +104 -3
- package/src/renderers/share/layout-view.tsx +1 -1
- package/src/renderers/share/main.tsx +1 -1
- package/src/shares/pane.ts +3 -3
- package/src/shares/payload.ts +7 -7
- package/src/{layout-marketplace/payload.ts → shares/portable-layout.ts} +7 -9
- package/src/{data → sources/gloomberb-cloud}/fred-series.ts +4 -4
- package/src/sources/gloomberb-cloud/normalizers.ts +1 -1
- package/src/sources/history-retention.ts +2 -2
- package/src/sources/provider-router/financial-routes.ts +0 -1
- package/src/sources/yahoo-finance/mappers.ts +1 -1
- package/src/state/app/bootstrap.ts +1 -1
- package/src/state/app/context/index.tsx +1 -5
- package/src/state/hooks/inline-tickers.ts +1 -1
- package/src/state/hooks/live-ticker-financials.ts +2 -2
- package/src/state/hooks/quote-streaming.ts +1 -1
- package/src/state/hooks/session-snapshot.ts +0 -2
- package/src/sync/controller.ts +1 -1
- package/src/sync/core-contributors.ts +40 -2
- package/src/sync/types.ts +4 -4
- package/src/telemetry/crash-reports-node.ts +5 -5
- package/src/test-support/broker.ts +4 -3
- package/src/test-support/plugin-runtime.ts +2 -18
- package/src/theme/font-scale.ts +2 -2
- package/src/{plugins/builtin/correlation/colors.ts → theme/heat-colors.ts} +19 -16
- package/src/time-series/alignment.ts +1 -1
- package/src/time-series/fundamentals.ts +2 -2
- package/src/time-series/hooks.ts +2 -2
- package/src/time-series/live-bars.ts +1 -1
- package/src/time-series/price-comparison.ts +1 -1
- package/src/time-series/resolve.ts +12 -4
- package/src/time-series/spec.ts +5 -1
- package/src/time-series/studies.ts +330 -2
- package/src/time-series/trader-studies.ts +188 -0
- package/src/time-series/types.ts +18 -0
- package/src/types/config.ts +23 -12
- package/src/types/desktop-deeplink.ts +1 -0
- package/src/types/desktop-window.ts +2 -1
- package/src/types/plugin.ts +8 -0
- package/src/ui/context-menu.tsx +1 -1
- package/src/ui/host.tsx +5 -1
- package/src/ui/toast.tsx +2 -0
- package/src/utils/back-navigation.ts +1 -1
- package/src/utils/futures-generic.ts +23 -2
- package/src/utils/http-proxy-response.ts +1 -1
- package/src/utils/sec-eps-basis.ts +1 -1
- /package/src/{plugins → layout}/pane-manager/dock-tree.ts +0 -0
- /package/src/{plugins → layout}/pane-manager/docking.ts +0 -0
- /package/src/{plugins → layout}/pane-manager/floating-actions.ts +0 -0
- /package/src/{plugins → layout}/pane-manager/floating.ts +0 -0
- /package/src/{plugins → layout}/pane-manager/gridlock-inference.ts +0 -0
- /package/src/{plugins → layout}/pane-manager/gridlock.ts +0 -0
- /package/src/{plugins → layout}/pane-manager/layout-state.ts +0 -0
- /package/src/{plugins → layout}/pane-manager/queries.ts +0 -0
- /package/src/{plugins → layout}/pane-manager/types.ts +0 -0
- /package/src/{plugins → layout}/pane-state.ts +0 -0
- /package/src/plugins/{seed.ts → extracted-plugins.ts} +0 -0
- /package/src/renderers/{electrobun/view → dom}/data-table/frozen-column.ts +0 -0
- /package/src/renderers/{electrobun/view → dom}/desktop/stack-header.ts +0 -0
- /package/src/renderers/{electrobun/view → dom}/host/block-glyph-canvas.tsx +0 -0
- /package/src/renderers/{electrobun/view → dom}/host/box.tsx +0 -0
- /package/src/renderers/{electrobun/view → dom}/host/focus-scope.ts +0 -0
- /package/src/renderers/{electrobun/view → dom}/host/overflow-fade.ts +0 -0
- /package/src/renderers/{electrobun/view → dom}/host/top-surface.ts +0 -0
- /package/src/renderers/{electrobun/view → dom}/key-event.ts +0 -0
- /package/src/renderers/{electrobun/view → dom}/scrollbar-activity.ts +0 -0
- /package/src/renderers/{electrobun/view → dom}/styles.css +0 -0
- /package/src/renderers/electrobun/{view → shared}/rpc-codec.ts +0 -0
- /package/src/{utils → renderers/opentui}/terminal-input-reset.ts +0 -0
package/README.md
CHANGED
|
@@ -72,7 +72,9 @@ Press `Ctrl+P` to open the command bar, or press `` ` `` to search for a ticker.
|
|
|
72
72
|
| `DES AAPL` | Company details |
|
|
73
73
|
| `GP NVDA` | Price chart |
|
|
74
74
|
| `OVDV AAPL` | Implied-volatility surface and options term structure |
|
|
75
|
+
| `OPX SPY` / `GEX SPY` | Open interest by strike and expiry, max pain and dealer gamma ([method](docs/options-positioning.md)) |
|
|
75
76
|
| `HVG AAPL` / `HVT AAPL` | Realized volatility and volatility cones |
|
|
77
|
+
| `SEAS AAPL` | Seasonality: monthly returns by year and year overlays |
|
|
76
78
|
| `COT [code or root]` | CFTC positioning and cross-market extremes |
|
|
77
79
|
| `TOP` | Market stories |
|
|
78
80
|
| `WIRP` / `FFIP` | US rate path and conditional FOMC probabilities |
|
|
@@ -117,7 +119,7 @@ The app also counts how often you open each function, from the command bar, a me
|
|
|
117
119
|
|
|
118
120
|
Neither contains anything from your workspace: no tickers, arguments, portfolios, watchlists, layouts, settings or queries. Both carry a random install id stored in `~/.gloomberb/install-id` (in the browser, in local storage).
|
|
119
121
|
|
|
120
|
-
The usage setting also covers command bar searches. When you are signed in, a search you finish in the command bar (you pause typing or run something, never each keystroke) is stored with your account to improve search: its text, the AI suggestions it got and the result you picked. Searches are
|
|
122
|
+
The usage setting also covers command bar searches. When you are signed in, a search you finish in the command bar (you pause typing or run something, never each keystroke) is stored with your account to improve search: its text, the AI suggestions it got and the result you picked. Searches are deleted with your account.
|
|
121
123
|
|
|
122
124
|
To turn either off, run `Crash Reports` or `Usage Counts` from the command bar, or:
|
|
123
125
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "gloomberb",
|
|
3
|
-
"version": "0.15.
|
|
3
|
+
"version": "0.15.6",
|
|
4
4
|
"packageManager": "bun@1.3.11",
|
|
5
5
|
"description": "Market research and portfolio tracker for the terminal",
|
|
6
6
|
"module": "src/public/index.ts",
|
|
@@ -67,11 +67,13 @@
|
|
|
67
67
|
"plugins:registry:check": "bun run scripts/check-registry-plugins.ts",
|
|
68
68
|
"web:proxy-hosts": "bun run scripts/generate-web-proxy-hosts.ts",
|
|
69
69
|
"web:proxy-hosts:check": "bun run scripts/generate-web-proxy-hosts.ts --check",
|
|
70
|
-
"typecheck": "bun run typecheck:opentui && bun run typecheck:dom && bun run typecheck:cloudflare && bun run typecheck:scripts",
|
|
70
|
+
"typecheck": "bun run typecheck:opentui && bun run typecheck:dom && bun run typecheck:cloudflare && bun run typecheck:scripts && bun run typecheck:plugin-tests",
|
|
71
71
|
"typecheck:opentui": "tsc --project tsconfig.opentui.json",
|
|
72
72
|
"typecheck:dom": "tsc --project tsconfig.dom.json",
|
|
73
73
|
"typecheck:cloudflare": "tsc --project tsconfig.cloudflare.json",
|
|
74
74
|
"typecheck:scripts": "tsc --project tsconfig.scripts.json",
|
|
75
|
+
"typecheck:plugin-tests": "tsc --project tsconfig.plugin-tests.json",
|
|
76
|
+
"knip": "bunx knip@6.39.0",
|
|
75
77
|
"test": "bun test",
|
|
76
78
|
"benchmark:tui:navigation": "bun run scripts/benchmark-tui-navigation.ts",
|
|
77
79
|
"benchmark:tui:compare": "bun run scripts/benchmark-tui-compare.ts",
|
|
@@ -108,7 +110,6 @@
|
|
|
108
110
|
"@opentui/core": "^0.3.2",
|
|
109
111
|
"@opentui/react": "^0.3.2",
|
|
110
112
|
"@tanstack/react-virtual": "^3.14.2",
|
|
111
|
-
"fast-xml-parser": "5.7.3",
|
|
112
113
|
"hls.js": "1.6.13",
|
|
113
114
|
"jimp": "1.6.1",
|
|
114
115
|
"qrcode-generator": "^2.0.4",
|
package/src/api-client/askg.ts
CHANGED
|
@@ -83,7 +83,7 @@ export interface ASKGConversationTool {
|
|
|
83
83
|
note?: string;
|
|
84
84
|
}
|
|
85
85
|
|
|
86
|
-
|
|
86
|
+
interface ASKGConversationMessage {
|
|
87
87
|
seq: number;
|
|
88
88
|
role: "user" | "assistant";
|
|
89
89
|
text: string;
|
|
@@ -224,7 +224,7 @@ function isAskgEvent(value: unknown): value is ASKGSseEvent {
|
|
|
224
224
|
}
|
|
225
225
|
|
|
226
226
|
/** Parses one frame payload, ignoring keep-alives and unknown shapes. */
|
|
227
|
-
|
|
227
|
+
function parseASKGFrame(frame: SseFrame): ASKGSseEvent | null {
|
|
228
228
|
const data = frame.data.trim();
|
|
229
229
|
if (!data || data === "[DONE]") return null;
|
|
230
230
|
try {
|
package/src/api-client/auth.ts
CHANGED
|
@@ -6,6 +6,7 @@ import type {
|
|
|
6
6
|
AuthUser,
|
|
7
7
|
BuildoutAccountResponse,
|
|
8
8
|
BuildoutTokenResponse,
|
|
9
|
+
CalendarFeed,
|
|
9
10
|
CloudAccountPlan,
|
|
10
11
|
CloudBrowserHandoffResponse,
|
|
11
12
|
CloudPricing,
|
|
@@ -250,6 +251,33 @@ export class CloudAuthApi {
|
|
|
250
251
|
);
|
|
251
252
|
}
|
|
252
253
|
|
|
254
|
+
/** The private calendar feed link, or null until it is first created. */
|
|
255
|
+
async getCalendarFeed(): Promise<CalendarFeed | null> {
|
|
256
|
+
const result = await this.options.request<{ feed: CalendarFeed | null }>(
|
|
257
|
+
"/account/calendar-feed",
|
|
258
|
+
{ method: "GET" },
|
|
259
|
+
);
|
|
260
|
+
return result.feed;
|
|
261
|
+
}
|
|
262
|
+
|
|
263
|
+
/** The calendar feed link, created on first use. */
|
|
264
|
+
async ensureCalendarFeed(): Promise<CalendarFeed> {
|
|
265
|
+
const result = await this.options.request<{ feed: CalendarFeed }>(
|
|
266
|
+
"/account/calendar-feed",
|
|
267
|
+
{ method: "POST", body: JSON.stringify({}) },
|
|
268
|
+
);
|
|
269
|
+
return result.feed;
|
|
270
|
+
}
|
|
271
|
+
|
|
272
|
+
/** A new calendar feed link; the old one stops working. */
|
|
273
|
+
async rotateCalendarFeed(): Promise<CalendarFeed> {
|
|
274
|
+
const result = await this.options.request<{ feed: CalendarFeed }>(
|
|
275
|
+
"/account/calendar-feed/rotate",
|
|
276
|
+
{ method: "POST", body: JSON.stringify({}) },
|
|
277
|
+
);
|
|
278
|
+
return result.feed;
|
|
279
|
+
}
|
|
280
|
+
|
|
253
281
|
async updateAccountProfile(
|
|
254
282
|
update: AccountProfileUpdate,
|
|
255
283
|
): Promise<AccountProfile> {
|
package/src/api-client/cot.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
export type CotFamily = "legacy" | "disaggregated"
|
|
2
2
|
export type CotClass = "noncommercial" | "commercial" | "producer" | "swap" | "managed-money" | "other-reportable" | "nonreportable"
|
|
3
|
-
|
|
4
|
-
|
|
3
|
+
interface CotPosition { long: number | null; short: number | null; spreading: number | null }
|
|
4
|
+
interface CotPercentile {
|
|
5
5
|
value: number | null
|
|
6
6
|
rank: number | null
|
|
7
7
|
sampleCount: number
|
|
@@ -24,7 +24,7 @@ export interface CotClassSummary extends CotPosition {
|
|
|
24
24
|
percentile1Y: CotPercentile
|
|
25
25
|
percentile3Y: CotPercentile
|
|
26
26
|
}
|
|
27
|
-
|
|
27
|
+
interface CotMarket {
|
|
28
28
|
contractCode: string
|
|
29
29
|
marketName: string
|
|
30
30
|
exchangeCode: string
|
package/src/api-client/data.ts
CHANGED
|
@@ -6,6 +6,7 @@ import type { CryptoMarketsPayload } from "./crypto-markets";
|
|
|
6
6
|
import type { CentralBankRatesPayload } from "./central-bank-rates";
|
|
7
7
|
import type { EstimateRevisionsPayload } from "./estimate-revisions";
|
|
8
8
|
import type { MoneyMarketsPayload } from "./money-markets";
|
|
9
|
+
import type { CloudCurveId, CloudCurveView, CloudWorldCurves } from "./yield-curves";
|
|
9
10
|
import type { CdxBoardPayload, CloudCreditBoardParams, SovrBoardPayload } from "./credit-boards";
|
|
10
11
|
import type { ShortVolumePayload, ShortVolumeScope } from "./short-volume";
|
|
11
12
|
import type { SocialMentionDayPosts, SocialMentionsPayload, SocialMentionsRange } from "./social-mentions";
|
|
@@ -159,6 +160,11 @@ export class CloudDataApi {
|
|
|
159
160
|
return this.request<T>(`/cloud/iv/${path}`, init);
|
|
160
161
|
}
|
|
161
162
|
|
|
163
|
+
/** Options positioning (OPX): open interest by strike and expiry, max pain, dealer gamma. */
|
|
164
|
+
optionsPositioning<T>(path: string, init?: RequestInit) {
|
|
165
|
+
return this.request<T>(`/cloud/options/${path}`, init);
|
|
166
|
+
}
|
|
167
|
+
|
|
162
168
|
async searchInstruments(
|
|
163
169
|
query: string,
|
|
164
170
|
limit = 10,
|
|
@@ -360,6 +366,17 @@ export class CloudDataApi {
|
|
|
360
366
|
return this.request<CloudYieldPointPayload[]>("/cloud/econ/yield-curve");
|
|
361
367
|
}
|
|
362
368
|
|
|
369
|
+
/** A curve's session on or before `date` (latest without one), with look-backs and spreads. */
|
|
370
|
+
async getCloudCurve(curve: CloudCurveId, date?: string | null): Promise<CloudCurveView> {
|
|
371
|
+
const query = date ? `?${new URLSearchParams({ date })}` : "";
|
|
372
|
+
return this.request<CloudCurveView>(`/cloud/econ/curves/${encodeURIComponent(curve)}${query}`, { signal: AbortSignal.timeout(30_000) });
|
|
373
|
+
}
|
|
374
|
+
|
|
375
|
+
/** Each market's latest curve and the session before, each on its own date. */
|
|
376
|
+
async getCloudWorldCurves(): Promise<CloudWorldCurves> {
|
|
377
|
+
return this.request<CloudWorldCurves>("/cloud/econ/curves", { signal: AbortSignal.timeout(30_000) });
|
|
378
|
+
}
|
|
379
|
+
|
|
363
380
|
async getCloudCryptoMarkets(): Promise<CryptoMarketsPayload> {
|
|
364
381
|
return this.request<CryptoMarketsPayload>("/cloud/crypto/markets", { signal: AbortSignal.timeout(45_000) });
|
|
365
382
|
}
|
|
@@ -8,7 +8,7 @@ export interface DebtFact {
|
|
|
8
8
|
filed: string;
|
|
9
9
|
form: string;
|
|
10
10
|
}
|
|
11
|
-
|
|
11
|
+
interface DebtBorrowingCost {
|
|
12
12
|
value: number;
|
|
13
13
|
interest: DebtFact;
|
|
14
14
|
opening: DebtFact[];
|
|
@@ -16,7 +16,7 @@ export interface DebtBorrowingCost {
|
|
|
16
16
|
periodStart: string;
|
|
17
17
|
periodEnd: string;
|
|
18
18
|
}
|
|
19
|
-
|
|
19
|
+
interface DebtPercentile {
|
|
20
20
|
value: number | null;
|
|
21
21
|
rank: number | null;
|
|
22
22
|
sampleCount: number;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/** Before the open, during the session, after the close. */
|
|
2
2
|
export type EarningsTiming = "bmo" | "dmh" | "amc";
|
|
3
3
|
|
|
4
|
-
|
|
4
|
+
interface EarningsImpliedMove {
|
|
5
5
|
/** Straddle over spot, the move priced in either direction. */
|
|
6
6
|
move: number;
|
|
7
7
|
straddle: number;
|
|
@@ -16,7 +16,7 @@ export interface EarningsImpliedMove {
|
|
|
16
16
|
at: string;
|
|
17
17
|
}
|
|
18
18
|
|
|
19
|
-
|
|
19
|
+
interface EarningsRealizedMove {
|
|
20
20
|
/** Signed: the close after the report over the close before it, minus one. */
|
|
21
21
|
move: number;
|
|
22
22
|
baseSession: string;
|
|
@@ -59,7 +59,7 @@ export interface EarningsCalendarPayload {
|
|
|
59
59
|
reports: EarningsCalendarReport[];
|
|
60
60
|
}
|
|
61
61
|
|
|
62
|
-
|
|
62
|
+
interface EarningsHistoryReport extends EarningsReport {
|
|
63
63
|
revenueActual: number | null;
|
|
64
64
|
}
|
|
65
65
|
|
|
@@ -56,7 +56,7 @@ export const CATEGORY_FIELDS = [
|
|
|
56
56
|
"industry",
|
|
57
57
|
] as const;
|
|
58
58
|
export type NumericField = (typeof NUMERIC_FIELDS)[number];
|
|
59
|
-
|
|
59
|
+
type CategoryField = (typeof CATEGORY_FIELDS)[number];
|
|
60
60
|
export type ScreenField = NumericField | CategoryField;
|
|
61
61
|
export type ScreenOperator =
|
|
62
62
|
"gte" | "lte" | "gt" | "lt" | "eq" | "between" | "in" | "present" | "missing";
|
|
@@ -110,7 +110,7 @@ export interface ScreenRow {
|
|
|
110
110
|
metrics: Record<NumericField, ScreenMetric>;
|
|
111
111
|
warnings: string[];
|
|
112
112
|
}
|
|
113
|
-
|
|
113
|
+
interface ScreenCoverage {
|
|
114
114
|
covered: number;
|
|
115
115
|
skipped: number;
|
|
116
116
|
knownByField: Record<NumericField, number>;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
|
|
1
|
+
interface PercentileStatistics {
|
|
2
2
|
percentile: number | null;
|
|
3
3
|
rank: number | null;
|
|
4
4
|
samples: number;
|
|
@@ -6,8 +6,8 @@ export interface PercentileStatistics {
|
|
|
6
6
|
max: number | null;
|
|
7
7
|
mean: number | null;
|
|
8
8
|
}
|
|
9
|
-
|
|
10
|
-
|
|
9
|
+
type EstimateStatus = "available" | "partial" | "unavailable";
|
|
10
|
+
interface EstimateSourceState {
|
|
11
11
|
status: EstimateStatus;
|
|
12
12
|
fetchedAt: string | null;
|
|
13
13
|
stale: boolean;
|
|
@@ -24,7 +24,7 @@ export interface EstimateObservation {
|
|
|
24
24
|
relativeRange: number | null;
|
|
25
25
|
source: "yahoo" | "yahoo-eps-trend";
|
|
26
26
|
}
|
|
27
|
-
|
|
27
|
+
interface RevisionBreadth {
|
|
28
28
|
days: 7 | 30;
|
|
29
29
|
up: number | null;
|
|
30
30
|
down: number | null;
|
|
@@ -76,7 +76,7 @@ export interface EstimateSurprise {
|
|
|
76
76
|
samples: number;
|
|
77
77
|
source: string;
|
|
78
78
|
}
|
|
79
|
-
|
|
79
|
+
interface EstimateGuidance {
|
|
80
80
|
callDate: string | null;
|
|
81
81
|
fiscalYear: number;
|
|
82
82
|
fiscalQuarter: number;
|
package/src/api-client/index.ts
CHANGED
|
@@ -4,7 +4,7 @@ import {
|
|
|
4
4
|
parseMarketplaceLayoutList,
|
|
5
5
|
type LayoutMarketplaceEntry,
|
|
6
6
|
type LayoutMarketplacePayload,
|
|
7
|
-
} from "../layout
|
|
7
|
+
} from "../shares/portable-layout";
|
|
8
8
|
import {
|
|
9
9
|
type CloudLayoutEntry,
|
|
10
10
|
type LayoutRequirement,
|
|
@@ -38,18 +38,14 @@ import type {
|
|
|
38
38
|
PersistedAuthUser
|
|
39
39
|
} from "./types";
|
|
40
40
|
|
|
41
|
-
export { ASKGTransportError } from "./askg";
|
|
42
|
-
export type { ASKGToolResultOutcome, ASKGTransport } from "./askg";
|
|
43
41
|
export { setCloudApiFetchTransport } from "./request";
|
|
44
42
|
export { NoteConflictError } from "./notes";
|
|
45
43
|
export { ThesisConflictError, ThesisGoalpostError } from "./theses";
|
|
46
44
|
export { TeamRevisionConflictError } from "./views";
|
|
47
|
-
export { TEAM_ACCENT_COLORS } from "./types";
|
|
48
45
|
export type * from "./types";
|
|
49
46
|
export type {
|
|
50
47
|
CommandSearchChoice,
|
|
51
48
|
CommandSearchOutcome,
|
|
52
|
-
CommandSearchReport,
|
|
53
49
|
CrashReportError,
|
|
54
50
|
CrashReportKind,
|
|
55
51
|
CrashReportSurface,
|
|
@@ -364,7 +360,7 @@ class GloomApiClient {
|
|
|
364
360
|
event: import("./research-activity").ResearchActivity; eventId: string;
|
|
365
361
|
surface: "web" | "desktop" | "tui" | "cli"; anonymousId?: string;
|
|
366
362
|
attribution?: Record<string, string>; feature?: import("./research-activity").ResearchFeature;
|
|
367
|
-
tab?: string;
|
|
363
|
+
tab?: string; desks?: readonly string[];
|
|
368
364
|
}): Promise<void> {
|
|
369
365
|
await this.request("/activity/research", { method: "POST", body: JSON.stringify(payload) });
|
|
370
366
|
}
|
|
@@ -409,6 +405,9 @@ class GloomApiClient {
|
|
|
409
405
|
getBuildoutAccount = this.auth.getBuildoutAccount.bind(this.auth);
|
|
410
406
|
getBuildoutToken = this.auth.getBuildoutToken.bind(this.auth);
|
|
411
407
|
updateAccountProfile = this.auth.updateAccountProfile.bind(this.auth);
|
|
408
|
+
getCalendarFeed = this.auth.getCalendarFeed.bind(this.auth);
|
|
409
|
+
ensureCalendarFeed = this.auth.ensureCalendarFeed.bind(this.auth);
|
|
410
|
+
rotateCalendarFeed = this.auth.rotateCalendarFeed.bind(this.auth);
|
|
412
411
|
|
|
413
412
|
async getSyncSnapshot(): Promise<CloudSyncSnapshotResponse> {
|
|
414
413
|
return this.request<CloudSyncSnapshotResponse>("/sync/snapshot", { method: "GET" });
|
|
@@ -542,8 +541,9 @@ class GloomApiClient {
|
|
|
542
541
|
* Resolves a natural-language command-bar query into runnable command-bar
|
|
543
542
|
* inputs. Requires a verified session; free accounts are included. The
|
|
544
543
|
* request is bounded client-side so a stalled upstream cannot hold the
|
|
545
|
-
* command bar in its loading state. The server keeps the query
|
|
546
|
-
*
|
|
544
|
+
* command bar in its loading state. The server keeps the query and answers
|
|
545
|
+
* with a `searchId` unless told `log: false`, so an opt-out has to be sent
|
|
546
|
+
* explicitly.
|
|
547
547
|
*/
|
|
548
548
|
async assistCommand(
|
|
549
549
|
query: string,
|
|
@@ -565,7 +565,7 @@ class GloomApiClient {
|
|
|
565
565
|
body: JSON.stringify({
|
|
566
566
|
query: query.trim().slice(0, ASSIST_QUERY_MAX_LENGTH),
|
|
567
567
|
commands: commands.slice(0, ASSIST_COMMAND_LIMIT).map(capAssistArgOptions),
|
|
568
|
-
...(options?.log
|
|
568
|
+
...(options?.log !== undefined ? { log: options.log } : {}),
|
|
569
569
|
}),
|
|
570
570
|
signal: controller.signal,
|
|
571
571
|
});
|
|
@@ -700,6 +700,7 @@ class GloomApiClient {
|
|
|
700
700
|
getCloudMoneyMarkets = this.data.getCloudMoneyMarkets.bind(this.data);
|
|
701
701
|
equityScreener = this.data.equityScreener.bind(this.data);
|
|
702
702
|
impliedVolatility = this.data.impliedVolatility.bind(this.data);
|
|
703
|
+
optionsPositioning = this.data.optionsPositioning.bind(this.data);
|
|
703
704
|
getCloudDebtMaturities = this.data.getCloudDebtMaturities.bind(this.data);
|
|
704
705
|
getCloudRevenueBreakdown = this.data.getCloudRevenueBreakdown.bind(this.data);
|
|
705
706
|
getCloudMnaDeals = this.data.getCloudMnaDeals.bind(this.data);
|
|
@@ -716,6 +717,8 @@ class GloomApiClient {
|
|
|
716
717
|
getCloudCotContract = this.data.getCloudCotContract.bind(this.data);
|
|
717
718
|
getCloudTape = this.data.getCloudTape.bind(this.data);
|
|
718
719
|
getCloudYieldCurve = this.data.getCloudYieldCurve.bind(this.data);
|
|
720
|
+
getCloudCurve = this.data.getCloudCurve.bind(this.data);
|
|
721
|
+
getCloudWorldCurves = this.data.getCloudWorldCurves.bind(this.data);
|
|
719
722
|
getCloudCds = this.data.getCloudCds.bind(this.data);
|
|
720
723
|
getCloudCdsHistory = this.data.getCloudCdsHistory.bind(this.data);
|
|
721
724
|
getCloudCdxBoard = this.data.getCloudCdxBoard.bind(this.data);
|
|
@@ -748,5 +751,3 @@ class GloomApiClient {
|
|
|
748
751
|
}
|
|
749
752
|
|
|
750
753
|
export const apiClient = new GloomApiClient();
|
|
751
|
-
|
|
752
|
-
export type { FuturesCurveAsOfPayload, FuturesCurvePayload, FuturesContract } from "./futures-curve";
|
package/src/api-client/ipo.ts
CHANGED
|
@@ -6,10 +6,10 @@
|
|
|
6
6
|
/** Where a deal is in its life. A deal moves forward, except to postponed or withdrawn. */
|
|
7
7
|
export type IpoStatus = "filed" | "upcoming" | "priced" | "listed" | "postponed" | "withdrawn";
|
|
8
8
|
|
|
9
|
-
|
|
9
|
+
type IpoListingType = "ipo" | "spac" | "direct" | "reit" | "introduction" | "dual" | "other";
|
|
10
10
|
|
|
11
11
|
/** How sure the listing date is: a target, a date the venue has set, or the day it traded. */
|
|
12
|
-
|
|
12
|
+
type IpoDateKind = "expected" | "confirmed" | "actual";
|
|
13
13
|
|
|
14
14
|
export type IpoRegion = "us" | "apac" | "europe" | "other";
|
|
15
15
|
|
|
@@ -17,9 +17,9 @@ export type IpoRegion = "us" | "apac" | "europe" | "other";
|
|
|
17
17
|
* ISO 10383 MIC of a listing venue, such as `XNAS`, `XHKG` or `XTKS`. The
|
|
18
18
|
* server adds venues over time, so any code may arrive.
|
|
19
19
|
*/
|
|
20
|
-
|
|
20
|
+
type IpoMic = string;
|
|
21
21
|
|
|
22
|
-
|
|
22
|
+
interface IpoFirstDay {
|
|
23
23
|
/** The first session's venue-local date. */
|
|
24
24
|
session: string;
|
|
25
25
|
open: number | null;
|
|
@@ -13,7 +13,7 @@ export type CloudSessionMoversSide = "up" | "down" | "active";
|
|
|
13
13
|
export type CloudSessionPhase = "pre" | "regular" | "post" | "closed";
|
|
14
14
|
|
|
15
15
|
/** A trading halt, an 8-K, or a news story in the list's own window (see docs/quote-board-data.md). */
|
|
16
|
-
|
|
16
|
+
type CloudSessionCatalyst = "halt" | "filing" | "news";
|
|
17
17
|
|
|
18
18
|
export interface CloudSessionMoverItem {
|
|
19
19
|
rank: number;
|
package/src/api-client/mna.ts
CHANGED
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
/** Reported talks, a signed or launched deal, or its end. */
|
|
8
8
|
export type MnaStatus = "talks" | "pending" | "completed" | "terminated";
|
|
9
9
|
|
|
10
|
-
|
|
10
|
+
type MnaConsideration = "cash" | "stock" | "mixed" | "undisclosed";
|
|
11
11
|
|
|
12
12
|
export interface MnaParty {
|
|
13
13
|
name: string;
|
|
@@ -88,7 +88,7 @@ export interface MnaDealsPayload {
|
|
|
88
88
|
asOf: string;
|
|
89
89
|
}
|
|
90
90
|
|
|
91
|
-
|
|
91
|
+
type MnaEventKind =
|
|
92
92
|
| "talks"
|
|
93
93
|
| "announced"
|
|
94
94
|
| "amended"
|
|
@@ -38,7 +38,7 @@ export function normalizeSavedSearchResponse(
|
|
|
38
38
|
* join it into search text, and hand it to a badge, and a null reaches each of
|
|
39
39
|
* those as an empty chip, the literal "null", or a crash.
|
|
40
40
|
*/
|
|
41
|
-
|
|
41
|
+
function normalizeSearchHit(hit: CloudSearchHit): CloudSearchHit {
|
|
42
42
|
return hit.ticker ? hit : { ...hit, ticker: "" };
|
|
43
43
|
}
|
|
44
44
|
|
package/src/api-client/paths.ts
CHANGED
|
@@ -35,7 +35,7 @@ export type CloudCdsHistoryParams = {
|
|
|
35
35
|
days?: number;
|
|
36
36
|
};
|
|
37
37
|
|
|
38
|
-
|
|
38
|
+
type CloudCongressChamber = "all" | "house" | "senate";
|
|
39
39
|
|
|
40
40
|
export type CloudCongressHouseParams = {
|
|
41
41
|
/** Which feed to read; House when omitted. */
|
|
@@ -104,7 +104,7 @@ const CRYPTO_QUOTE = /[-/](USD|USDT|USDC|EUR|GBP|BTC)$/;
|
|
|
104
104
|
|
|
105
105
|
export type CloudLogoKind = "ticker" | "crypto";
|
|
106
106
|
|
|
107
|
-
|
|
107
|
+
function normalizeCloudLogoSymbol(
|
|
108
108
|
kind: CloudLogoKind,
|
|
109
109
|
symbol: string,
|
|
110
110
|
): string | null {
|
|
@@ -41,7 +41,7 @@ export function resolveTrialEndsAt(user: PlanAccessUser | null | undefined): Dat
|
|
|
41
41
|
return Number.isNaN(endsAt.getTime()) ? null : endsAt;
|
|
42
42
|
}
|
|
43
43
|
|
|
44
|
-
|
|
44
|
+
function isTrialActive(user: PlanAccessUser | null | undefined, now = Date.now()): boolean {
|
|
45
45
|
if (user?.emailVerified !== true) return false;
|
|
46
46
|
// Card-backed trials run as plan "pro" with a trialing subscription; the server
|
|
47
47
|
// only sends `trialEndsAt` while the subscription is actually in its trial.
|
|
@@ -49,7 +49,7 @@ export function isTrialActive(user: PlanAccessUser | null | undefined, now = Dat
|
|
|
49
49
|
return !!endsAt && endsAt.getTime() > now;
|
|
50
50
|
}
|
|
51
51
|
|
|
52
|
-
|
|
52
|
+
function trialDaysLeft(user: PlanAccessUser | null | undefined, now = Date.now()): number {
|
|
53
53
|
const endsAt = resolveTrialEndsAt(user);
|
|
54
54
|
if (!endsAt) return 0;
|
|
55
55
|
const remainingMs = endsAt.getTime() - now;
|
package/src/api-client/rates.ts
CHANGED
|
@@ -66,7 +66,7 @@ export function setCloudApiFetchTransport(
|
|
|
66
66
|
* The fetch to use for a response that must be read while it arrives, or null
|
|
67
67
|
* when the installed transport buffers whole responses.
|
|
68
68
|
*/
|
|
69
|
-
|
|
69
|
+
function getCloudApiStreamFetch(): CloudApiStreamFetch | null {
|
|
70
70
|
if (cloudApiTransportInstalled) {
|
|
71
71
|
if (cloudApiStreamFetch) return cloudApiStreamFetch;
|
|
72
72
|
// A transport that declares streaming returns a real Response.
|
|
@@ -318,12 +318,14 @@ function attributionPayload(): Record<string, string> | undefined {
|
|
|
318
318
|
/**
|
|
319
319
|
* Counts milestones once per feature/session/account, never their content.
|
|
320
320
|
* Native surfaces report anonymously only with an identifier the website
|
|
321
|
-
* handed over; they still never mint one of their own.
|
|
321
|
+
* handed over; they still never mint one of their own. `desks` rides on the
|
|
322
|
+
* end of the first-run funnel: the desks picked at "What do you trade?".
|
|
322
323
|
*/
|
|
323
324
|
export function recordResearchActivity(
|
|
324
325
|
event: ResearchActivity,
|
|
325
326
|
feature?: ResearchFeature,
|
|
326
327
|
tab?: string,
|
|
328
|
+
desks?: readonly string[],
|
|
327
329
|
): void {
|
|
328
330
|
const target = getCurrentPluginTarget();
|
|
329
331
|
const user = apiClient.getCurrentUser();
|
|
@@ -342,6 +344,7 @@ export function recordResearchActivity(
|
|
|
342
344
|
attribution: attributionPayload(),
|
|
343
345
|
feature,
|
|
344
346
|
tab,
|
|
347
|
+
desks,
|
|
345
348
|
})
|
|
346
349
|
.catch(() => {
|
|
347
350
|
sent.delete(key);
|