gloomberb 0.16.3 → 0.16.5
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 +14 -91
- package/package.json +7 -1
- package/src/{plugins/builtin/cloud → account}/auth-form.tsx +9 -9
- package/src/{plugins/builtin/cloud → account}/auth-model.ts +4 -4
- package/src/account/billing.ts +57 -0
- package/src/{plugins/builtin/cloud → account}/device-signin-dialog.tsx +18 -12
- package/src/{plugins/builtin/cloud → account}/device-signin.ts +2 -2
- package/src/{plugins/builtin/cloud → account}/email-auth-attempt.ts +2 -2
- package/src/account/session.ts +16 -0
- package/src/{plugins/builtin/cloud → account}/upgrade-dialog.tsx +42 -17
- package/src/account/upgrade-personalization.ts +57 -0
- package/src/account/upgrade-tickers.ts +124 -0
- package/src/{plugins/builtin/cloud → account}/verification-panel.tsx +6 -6
- package/src/api-client/askg.ts +43 -0
- package/src/api-client/auth.ts +15 -0
- package/src/api-client/beneficial-owners.ts +4 -0
- package/src/api-client/chat.ts +19 -0
- package/src/api-client/company-kpis.ts +14 -2
- package/src/api-client/data.ts +58 -18
- package/src/api-client/earnings.ts +6 -0
- package/src/api-client/futures-curve.ts +56 -0
- package/src/api-client/index.ts +16 -1
- package/src/api-client/market-discovery.ts +10 -1
- package/src/api-client/normalizers.ts +27 -0
- package/src/api-client/paths.ts +95 -23
- package/src/api-client/request.ts +2 -1
- package/src/api-client/research-activity.ts +46 -10
- package/src/api-client/socket.ts +39 -8
- package/src/api-client/types.ts +74 -2
- package/src/api-client/upgrade-experiment.ts +90 -0
- package/src/api-client/yield-curves.ts +8 -0
- package/src/app/global-shortcuts.ts +26 -2
- package/src/app/keybindings/actions.ts +10 -0
- package/src/app/pane-runtime/index.tsx +8 -0
- package/src/app/pane-runtime/pane-template-runtime.ts +5 -0
- package/src/app/pane-runtime/plugin-bindings.ts +65 -25
- package/src/app/pane-runtime/ticker-inspector-runtime.ts +12 -0
- package/src/app/pane-runtime/ticker-open-runtime.ts +25 -4
- package/src/app/runtime/desktop-deeplink.ts +5 -0
- package/src/app/star-prompt/model.ts +98 -0
- package/src/app/star-prompt/runtime.ts +41 -0
- package/src/app/star-prompt/status-line.tsx +190 -0
- package/src/app.tsx +13 -7
- package/src/architecture/core-builtin-allowlist.json +61 -0
- package/src/brokers/signed-in/adapter.ts +33 -2
- package/src/brokers/signed-in/client.ts +10 -0
- package/src/brokers/signed-in/sign-in-dialog.tsx +34 -14
- package/src/brokers/signed-in/sign-in.ts +62 -5
- package/src/capabilities/chart-series.ts +11 -1
- package/src/capabilities/registry.ts +8 -1
- package/src/capabilities/types.ts +2 -0
- package/src/cli/commands/crypto-hints.ts +19 -4
- package/src/cli/commands/fred-series.ts +61 -0
- package/src/cli/commands/market.ts +744 -181
- package/src/cli/commands/news-hints.ts +62 -0
- package/src/cli/commands/news-search.ts +53 -0
- package/src/cli/commands/options-chain.ts +172 -0
- package/src/cli/commands/options-leaps.ts +425 -0
- package/src/cli/commands/overview.ts +251 -40
- package/src/cli/commands/remote.ts +2 -1
- package/src/cli/commands/search.ts +109 -15
- package/src/cli/commands/system.ts +151 -24
- package/src/cli/commands/themes.ts +64 -0
- package/src/cli/commands/ticker.ts +149 -40
- package/src/cli/context.ts +45 -14
- package/src/cli/desktop-pane-shot.ts +150 -17
- package/src/cli/earnings-calendar.ts +71 -0
- package/src/cli/errors.ts +25 -2
- package/src/cli/freshness.ts +22 -8
- package/src/cli/fx-pair.ts +57 -0
- package/src/cli/glossary.ts +429 -0
- package/src/cli/help.ts +14 -1
- package/src/cli/history-rows.ts +48 -7
- package/src/cli/index-roots.ts +58 -0
- package/src/cli/index.ts +29 -12
- package/src/cli/known-gaps.ts +27 -0
- package/src/cli/listing-arg.ts +595 -26
- package/src/cli/not-a-ticker.ts +44 -0
- package/src/cli/options.ts +50 -6
- package/src/cli/pane-functions/access-gate.ts +5 -0
- package/src/cli/pane-functions/capabilities.ts +11 -4
- package/src/cli/pane-functions/catalog.ts +48 -7
- package/src/cli/pane-functions/data.ts +48 -13
- package/src/cli/pane-functions/discovery.ts +1 -0
- package/src/cli/pane-functions/dom.ts +41 -19
- package/src/cli/pane-functions/freshness.ts +531 -32
- package/src/cli/pane-functions/function-help.ts +77 -25
- package/src/cli/pane-functions/headless.ts +50 -21
- package/src/cli/pane-functions/index.ts +66 -10
- package/src/cli/pane-functions/market-session.ts +147 -0
- package/src/cli/pane-functions/options.ts +77 -25
- package/src/cli/pane-functions/report-notices.ts +81 -0
- package/src/cli/pane-functions/report.ts +19 -8
- package/src/cli/pane-functions/resolver.ts +53 -18
- package/src/cli/pane-functions/screenshot-evidence.ts +2 -0
- package/src/cli/pane-functions/screenshot.ts +199 -30
- package/src/cli/registry.ts +2 -1
- package/src/cli/report-tables.ts +3 -0
- package/src/cli/result.ts +53 -13
- package/src/cli/row-window.ts +76 -0
- package/src/cli/scroll-truncation.ts +34 -0
- package/src/cli/staged-tickers.ts +52 -0
- package/src/cli/symbol-args.ts +9 -0
- package/src/cli/symbol-list.ts +172 -0
- package/src/cli/ticker-resolution.ts +223 -30
- package/src/cli/types.ts +5 -0
- package/src/components/chart/composite/axis-overlays.tsx +6 -2
- package/src/components/chart/composite/composite-chart.tsx +83 -10
- package/src/components/chart/composite/legend.tsx +88 -8
- package/src/components/chart/composite/panel-surface.tsx +44 -17
- package/src/components/chart/composite/price-axis-labels.tsx +3 -1
- package/src/components/chart/composite/rasterizer.ts +64 -4
- package/src/components/chart/composite/series-cues.ts +71 -0
- package/src/components/chart/composite/text-renderer.ts +16 -8
- package/src/components/chart/composite/types.ts +3 -0
- package/src/components/command-bar/commands/direct/index.ts +9 -1
- package/src/components/command-bar/commands/plugin/items.ts +3 -1
- package/src/components/command-bar/commands/registry.ts +7 -0
- package/src/components/command-bar/layout-items/focused-pane.ts +38 -0
- package/src/components/command-bar/pane-templates/workflow.ts +5 -0
- package/src/components/command-bar/panel/index.tsx +11 -3
- package/src/components/command-bar/panel/runtime.ts +3 -0
- package/src/components/command-bar/panel/types.ts +2 -0
- package/src/components/command-bar/routes/root/command-items.ts +2 -0
- package/src/components/command-bar/routes/root/plugin-turn-on.ts +92 -0
- package/src/components/command-bar/routes/root/provider-search.ts +4 -3
- package/src/components/command-bar/routes/root/results.ts +40 -10
- package/src/components/command-bar/routes/root/runtime.ts +8 -0
- package/src/components/command-bar/routes/root/search-providers.ts +97 -14
- package/src/components/command-bar/routes/ticker-search/results.ts +12 -11
- package/src/components/command-bar/routes/ticker-search/route.ts +4 -3
- package/src/components/command-bar/surface/index.tsx +18 -4
- package/src/components/command-bar/theme-picker.tsx +48 -13
- package/src/components/command-bar/workflow/ops.ts +5 -3
- package/src/components/command-bar/workflow/tickers.ts +23 -4
- package/src/components/data-table/view.tsx +28 -9
- package/src/components/layout/detached-pane-shell.tsx +9 -0
- package/src/components/layout/floating-pane.tsx +9 -2
- package/src/components/layout/header.tsx +20 -5
- package/src/components/layout/market-summary.ts +23 -9
- package/src/components/layout/pane/content.tsx +40 -29
- package/src/components/layout/pane/cycle-order.ts +2 -11
- package/src/components/layout/pane/footer/index.tsx +6 -2
- package/src/components/layout/pane/footer/model.ts +35 -1
- package/src/components/layout/pane/header.tsx +26 -2
- package/src/components/layout/pane/index.tsx +12 -2
- package/src/components/layout/pane/sidebar.tsx +78 -10
- package/src/components/layout/pane/title.ts +1 -1
- package/src/components/layout/presentation.ts +22 -0
- package/src/components/layout/shell/active-drag.ts +21 -5
- package/src/components/layout/shell/drag/index.ts +43 -9
- package/src/components/layout/shell/drag/live.ts +87 -6
- package/src/components/layout/shell/drag/runtime.ts +62 -20
- package/src/components/layout/shell/index.tsx +71 -12
- package/src/components/layout/shell/layout-state.ts +5 -11
- package/src/components/layout/shell/menu.ts +33 -1
- package/src/components/layout/shell/native/pointer-runtime.ts +3 -1
- package/src/components/layout/shell/pane/actions.ts +2 -1
- package/src/components/layout/shell/pane/layers.tsx +216 -28
- package/src/components/layout/shell/pane/management-shortcuts.ts +5 -0
- package/src/components/layout/shell/pane/new-layout.ts +116 -0
- package/src/components/layout/shell/shortcuts.ts +5 -2
- package/src/components/layout/shell/terminal-pointer-runtime.ts +24 -0
- package/src/components/layout/shell/visible-layout.ts +44 -1
- package/src/components/layout/status-bar.tsx +4 -1
- package/src/components/markdown-text.tsx +69 -23
- package/src/components/metric-treemap/heat-surface.tsx +37 -9
- package/src/components/metric-treemap/heat-tiles.ts +48 -17
- package/src/components/onboarding/account-step/form-panel.tsx +1 -1
- package/src/components/onboarding/account-step/index.tsx +1 -1
- package/src/components/onboarding/account-step/qr-panel.tsx +1 -1
- package/src/components/onboarding/account-step/signed-in-panel.tsx +1 -1
- package/src/components/onboarding/onboarding-frame.tsx +33 -10
- package/src/components/onboarding/onboarding-keyboard.ts +1 -1
- package/src/components/onboarding/onboarding-wizard.tsx +50 -41
- package/src/components/onboarding/portfolio-step/positions-panel.tsx +5 -2
- package/src/components/onboarding/pro-step-layout.ts +86 -0
- package/src/components/onboarding/use-onboarding-upgrade.ts +8 -4
- package/src/components/onboarding/wizard-account.ts +2 -2
- package/src/components/pane-template-wizard.tsx +9 -1
- package/src/components/price-selector-dialog.tsx +11 -2
- package/src/components/sign-in-gate.tsx +3 -3
- package/src/components/ticker/list-table-view.tsx +24 -1
- package/src/components/ui/action-row.tsx +2 -1
- package/src/components/ui/button.tsx +17 -1
- package/src/components/ui/choice-dialog.tsx +6 -4
- package/src/components/ui/confirm-dialog.tsx +28 -18
- package/src/components/ui/data-table/index.tsx +49 -0
- package/src/components/ui/data-table/opentui/index.tsx +37 -6
- package/src/components/ui/data-table/types.ts +20 -1
- package/src/components/ui/data-table/visible-range.ts +2 -0
- package/src/components/ui/dialog-actions.tsx +64 -0
- package/src/components/ui/display.tsx +17 -3
- package/src/components/ui/frame.tsx +35 -2
- package/src/components/ui/icon.tsx +13 -2
- package/src/components/ui/index.ts +1 -1
- package/src/components/ui/text-prompt-dialog.tsx +11 -9
- package/src/core/connection-health.ts +1 -1
- package/src/core/state/app/layout-reducer.ts +89 -3
- package/src/core/state/app/state.ts +8 -5
- package/src/core/state/app/types.ts +13 -2
- package/src/data/cached-query.ts +2 -0
- package/src/data/config/layout.ts +55 -21
- package/src/data/config/store/fold-panes.ts +149 -0
- package/src/data/config/store/migrations.ts +7 -0
- package/src/data/config/store/node.ts +27 -6
- package/src/data/config/store/normalize.ts +44 -5
- package/src/data/ticker-repository.ts +5 -0
- package/src/data/ticker-store.ts +15 -0
- package/src/docs/content.ts +215 -0
- package/src/docs/load.ts +139 -0
- package/src/docs/requests.ts +39 -0
- package/src/docs/snapshot.chunk.ts +8 -0
- package/src/docs/snapshot.json +7416 -0
- package/src/docs/topics.ts +216 -0
- package/src/i18n/es.ts +75 -5
- package/src/i18n/ja.ts +75 -5
- package/src/i18n/ko.ts +75 -5
- package/src/i18n/zh-cn.ts +75 -5
- package/src/i18n/zh-tw.ts +75 -5
- package/src/layout/desks.ts +2 -3
- package/src/layout/pane-layout-move.ts +264 -0
- package/src/layout/pane-manager/dock-tree.ts +18 -0
- package/src/layout/pane-manager/hidden-panes.ts +160 -0
- package/src/layout/pane-manager/index.ts +2 -0
- package/src/market-data/coordinator/chart.ts +10 -4
- package/src/market-data/coordinator/entries.ts +7 -1
- package/src/market-data/coordinator/index.ts +6 -3
- package/src/market-data/coordinator/quotes.ts +2 -2
- package/src/{plugins/builtin/futures/contracts.ts → market-data/futures-board.ts} +81 -28
- package/src/market-data/futures-contract.ts +151 -0
- package/src/market-data/hooks.tsx +10 -2
- package/src/market-data/market/format.ts +39 -21
- package/src/market-data/market/freshness.ts +193 -30
- package/src/market-data/market/status.ts +59 -23
- package/src/market-data/options-alternatives.ts +69 -0
- package/src/market-data/published-apac-sessions.ts +23 -1
- package/src/market-data/quotes/contributions.ts +22 -2
- package/src/market-data/quotes/metadata.ts +8 -9
- package/src/market-data/quotes/resolution.ts +2 -0
- package/src/market-data/quotes/screener-live-quotes.ts +61 -9
- package/src/market-data/result-types.ts +2 -0
- package/src/plugins/builtin/account-management/keyboard.ts +3 -0
- package/src/plugins/builtin/account-management/model.ts +2 -56
- package/src/plugins/builtin/account-management/navigation.ts +1 -1
- package/src/plugins/builtin/account-management/pane.tsx +37 -8
- package/src/plugins/builtin/account-management/password-dialog.tsx +1 -1
- package/src/plugins/builtin/alerts/cli.ts +313 -47
- package/src/plugins/builtin/alerts/events-pane.tsx +45 -7
- package/src/plugins/builtin/alerts/events.ts +23 -2
- package/src/plugins/builtin/alerts/history-pane.tsx +7 -2
- package/src/plugins/builtin/alerts/history.ts +2 -0
- package/src/plugins/builtin/alerts/index.tsx +41 -9
- package/src/plugins/builtin/alerts/pane.tsx +8 -0
- package/src/plugins/builtin/alerts/quotes.ts +3 -0
- package/src/plugins/builtin/alerts/research-builder.ts +8 -3
- package/src/plugins/builtin/alerts/research-rules.ts +18 -2
- package/src/plugins/builtin/alerts/scheduled-check.ts +122 -0
- package/src/plugins/builtin/alerts/scheduled-sources.ts +25 -0
- package/src/plugins/builtin/alerts/scheduled.ts +254 -0
- package/src/plugins/builtin/alerts/targets.ts +92 -0
- package/src/plugins/builtin/analytics/index.tsx +4 -2
- package/src/plugins/builtin/analytics/risk-headless.ts +33 -13
- package/src/plugins/builtin/analytics/risk-math.ts +91 -27
- package/src/plugins/builtin/analytics/risk-model.ts +71 -12
- package/src/plugins/builtin/analytics/risk-pane.tsx +23 -12
- package/src/plugins/builtin/attention/index.tsx +2 -0
- package/src/plugins/builtin/attention/pane.tsx +3 -1
- package/src/plugins/builtin/attention/series.ts +26 -0
- package/src/plugins/builtin/awards/index.tsx +2 -0
- package/src/plugins/builtin/awards/pane.tsx +3 -1
- package/src/plugins/builtin/awards/series.ts +29 -0
- package/src/plugins/builtin/backtest/pane.tsx +1 -1
- package/src/plugins/builtin/bond-calculator/model.ts +2 -1
- package/src/plugins/builtin/broker-manager/detail.tsx +4 -0
- package/src/plugins/builtin/broker-manager/index.tsx +7 -3
- package/src/plugins/builtin/broker-manager/model.ts +8 -0
- package/src/plugins/builtin/broker-manager/pane-actions.tsx +8 -2
- package/src/plugins/builtin/broker-manager/sign-in-end.ts +82 -0
- package/src/plugins/builtin/broker-manager/table.ts +5 -0
- package/src/plugins/builtin/builtin-plugin-meta.ts +121 -11
- package/src/plugins/builtin/catalysts/pane.tsx +3 -1
- package/src/plugins/builtin/cds/client.ts +70 -13
- package/src/plugins/builtin/cds/headless.ts +116 -19
- package/src/plugins/builtin/cds/index.tsx +3 -1
- package/src/plugins/builtin/cds/model.ts +193 -31
- package/src/plugins/builtin/cds/pane.tsx +56 -14
- package/src/plugins/builtin/cds/series.ts +19 -0
- package/src/plugins/builtin/central-bank-rates/index.tsx +2 -0
- package/src/plugins/builtin/central-bank-rates/series.ts +42 -0
- package/src/plugins/builtin/chart-composer/catalog-inventory.ts +192 -255
- package/src/plugins/builtin/chart-composer/data-catalog-pane.tsx +84 -46
- package/src/plugins/builtin/chart-composer/editor.tsx +5 -4
- package/src/plugins/builtin/chart-composer/field-series.ts +40 -0
- package/src/plugins/builtin/chart-composer/headless.ts +8 -3
- package/src/plugins/builtin/chart-composer/index.tsx +9 -2
- package/src/plugins/builtin/chart-composer/pane.tsx +1 -1
- package/src/plugins/builtin/chart-composer/series-catalog.ts +58 -50
- package/src/plugins/builtin/chart-composer/series-expression.ts +18 -10
- package/src/plugins/builtin/chart-composer/use-series-catalog.ts +59 -3
- package/src/plugins/builtin/chart-composer/user-series.ts +84 -0
- package/src/plugins/builtin/chat/channels.ts +34 -36
- package/src/plugins/builtin/chat/command-bar.ts +138 -0
- package/src/plugins/builtin/chat/composer-commands.ts +21 -1
- package/src/plugins/builtin/chat/content/composer-runtime.ts +11 -1
- package/src/plugins/builtin/chat/content/footer.tsx +5 -3
- package/src/plugins/builtin/chat/content/index.tsx +21 -1
- package/src/plugins/builtin/chat/content/mentions.ts +2 -1
- package/src/plugins/builtin/chat/content/new-dm-dialog.tsx +10 -2
- package/src/plugins/builtin/chat/content/user-map.ts +3 -1
- package/src/plugins/builtin/chat/controller/index.ts +50 -0
- package/src/plugins/builtin/chat/conversations.ts +256 -0
- package/src/plugins/builtin/chat/discord-command.ts +91 -0
- package/src/plugins/builtin/chat/edit-window.ts +12 -6
- package/src/plugins/builtin/chat/ghost-user.ts +14 -0
- package/src/plugins/builtin/chat/index.tsx +40 -2
- package/src/plugins/builtin/chat/layout.ts +2 -0
- package/src/plugins/builtin/chat/message/desktop.tsx +2 -1
- package/src/plugins/builtin/chat/message/header.tsx +24 -15
- package/src/plugins/builtin/chat/message/profile-popover.tsx +2 -1
- package/src/plugins/builtin/chat/message/render-state.ts +3 -0
- package/src/plugins/builtin/chat/pane-requests.ts +60 -0
- package/src/plugins/builtin/chat/pane-state.ts +32 -2
- package/src/plugins/builtin/chat/pane.tsx +8 -0
- package/src/plugins/builtin/cloud/askg/controller.ts +223 -23
- package/src/plugins/builtin/cloud/askg/conversation-store.ts +21 -0
- package/src/plugins/builtin/cloud/askg/executor.ts +57 -3
- package/src/plugins/builtin/cloud/askg/manifest.ts +33 -7
- package/src/plugins/builtin/cloud/askg/model.ts +156 -78
- package/src/plugins/builtin/cloud/askg/pane.tsx +772 -377
- package/src/plugins/builtin/cloud/askg/protocol.ts +50 -3
- package/src/plugins/builtin/cloud/askg/tool-display.ts +440 -0
- package/src/plugins/builtin/cloud/askg/tool-timeline.tsx +403 -0
- package/src/plugins/builtin/cloud/askg/undo.ts +2 -0
- package/src/plugins/builtin/cloud/auth-actions.tsx +1 -1
- package/src/plugins/builtin/cloud/auth-commands.ts +1 -1
- package/src/plugins/builtin/cloud/auth-dialog.tsx +3 -3
- package/src/plugins/builtin/cloud/company-picker.tsx +1 -9
- package/src/plugins/builtin/cloud/mcp-connect/command.ts +24 -0
- package/src/plugins/builtin/cloud/mcp-connect/dialog.tsx +363 -0
- package/src/plugins/builtin/cloud/mcp-connect/model.ts +135 -0
- package/src/plugins/builtin/cloud/mcp-connect/sections.ts +62 -0
- package/src/plugins/builtin/cloud/plugin.tsx +36 -1
- package/src/plugins/builtin/cloud/terminal-relay/acm-tab.tsx +89 -0
- package/src/plugins/builtin/cloud/terminal-relay/client.ts +97 -0
- package/src/plugins/builtin/cloud/terminal-relay/connect-section.tsx +57 -0
- package/src/plugins/builtin/cloud/terminal-relay/engine.ts +734 -0
- package/src/plugins/builtin/cloud/terminal-relay/grants.ts +137 -0
- package/src/plugins/builtin/cloud/terminal-relay/host.tsx +81 -0
- package/src/plugins/builtin/cloud/terminal-relay/indicator.tsx +82 -0
- package/src/plugins/builtin/cloud/terminal-relay/manifest.ts +239 -0
- package/src/plugins/builtin/cloud/terminal-relay/policy.ts +162 -0
- package/src/plugins/builtin/cloud/terminal-relay/prompts.tsx +192 -0
- package/src/plugins/builtin/cloud/terminal-relay/redact.ts +73 -0
- package/src/plugins/builtin/cloud/terminal-relay/summary.ts +62 -0
- package/src/plugins/builtin/cloud/thesis/exposure.ts +1 -1
- package/src/plugins/builtin/cloud/thesis/prompts.tsx +2 -1
- package/src/plugins/builtin/comment-letters/client.ts +1 -3
- package/src/plugins/builtin/company-attention/app-rank.tsx +1 -1
- package/src/plugins/builtin/company-attention/headless.ts +19 -5
- package/src/plugins/builtin/company-attention/index.tsx +2 -0
- package/src/plugins/builtin/company-attention/model.ts +26 -7
- package/src/plugins/builtin/company-attention/pane.tsx +12 -9
- package/src/plugins/builtin/company-attention/series.ts +52 -0
- package/src/plugins/builtin/company-kpis/client.ts +23 -8
- package/src/plugins/builtin/company-kpis/headless.ts +3 -1
- package/src/plugins/builtin/company-kpis/pane.tsx +19 -9
- package/src/plugins/builtin/company-kpis/screenshot-evidence.ts +10 -3
- package/src/plugins/builtin/composite-plugins.ts +116 -67
- package/src/plugins/builtin/cot/index.tsx +3 -1
- package/src/plugins/builtin/cot/model.ts +40 -11
- package/src/plugins/builtin/cot/series.ts +27 -0
- package/src/plugins/builtin/credit-boards/cdx-pane.tsx +4 -4
- package/src/plugins/builtin/credit-boards/index.tsx +23 -21
- package/src/plugins/builtin/credit-boards/model.ts +0 -1
- package/src/plugins/builtin/credit-boards/pane.tsx +30 -0
- package/src/plugins/builtin/credit-boards/series.ts +66 -0
- package/src/plugins/builtin/credit-boards/sovr-pane.tsx +4 -4
- package/src/plugins/builtin/credit-conditions/index.tsx +2 -0
- package/src/plugins/builtin/credit-conditions/series.ts +26 -0
- package/src/plugins/builtin/credit-documents/headless.ts +31 -1
- package/src/plugins/builtin/credit-documents/pane.tsx +3 -1
- package/src/plugins/builtin/crypto-board/headless.ts +2 -3
- package/src/plugins/builtin/crypto-board/index.tsx +2 -0
- package/src/plugins/builtin/crypto-board/model.ts +12 -0
- package/src/plugins/builtin/crypto-board/pane.tsx +19 -12
- package/src/plugins/builtin/crypto-board/series.ts +48 -0
- package/src/plugins/builtin/custom-view/live-quotes.ts +2 -2
- package/src/plugins/builtin/debt-maturities/client.ts +37 -9
- package/src/plugins/builtin/debt-maturities/headless.ts +3 -1
- package/src/plugins/builtin/debt-maturities/index.tsx +2 -0
- package/src/plugins/builtin/debt-maturities/pane.tsx +5 -4
- package/src/plugins/builtin/debt-maturities/series.ts +45 -0
- package/src/plugins/builtin/dividend-yield/headless.ts +2 -2
- package/src/plugins/builtin/dividend-yield/index.tsx +3 -1
- package/src/plugins/builtin/dividend-yield/pane.tsx +1 -1
- package/src/plugins/builtin/dividend-yield/series.ts +20 -0
- package/src/plugins/builtin/docs/blocks.tsx +181 -0
- package/src/plugins/builtin/docs/index.tsx +68 -0
- package/src/plugins/builtin/docs/pane.tsx +426 -0
- package/src/plugins/builtin/docs/targets.ts +72 -0
- package/src/plugins/builtin/docs/use-docs.ts +60 -0
- package/src/plugins/builtin/doe/index.tsx +2 -0
- package/src/plugins/builtin/doe/series.ts +62 -0
- package/src/plugins/builtin/earnings/client.ts +3 -2
- package/src/plugins/builtin/earnings/format.ts +1 -5
- package/src/plugins/builtin/earnings/headless.ts +58 -6
- package/src/plugins/builtin/earnings/history-model.ts +15 -1
- package/src/plugins/builtin/earnings/history-table.ts +13 -2
- package/src/plugins/builtin/earnings/history.tsx +7 -3
- package/src/plugins/builtin/earnings-calls/data.ts +28 -7
- package/src/plugins/builtin/earnings-calls/headless.ts +3 -2
- package/src/plugins/builtin/earnings-calls/pane.tsx +10 -5
- package/src/plugins/builtin/econ/calendar-model.ts +42 -17
- package/src/plugins/builtin/econ/detail-view.tsx +2 -2
- package/src/plugins/builtin/econ/fred-catalog.ts +189 -0
- package/src/plugins/builtin/econ/fred-series-map.ts +0 -46
- package/src/plugins/builtin/econ/index.tsx +70 -22
- package/src/plugins/builtin/econ-statistics/defs.ts +5 -0
- package/src/plugins/builtin/econ-statistics/headless.ts +30 -5
- package/src/plugins/builtin/econ-statistics/pane.tsx +1 -1
- package/src/plugins/builtin/econ-statistics/stats.ts +1 -0
- package/src/plugins/builtin/econ-statistics/view.ts +17 -0
- package/src/plugins/builtin/equity-screener/pane.tsx +4 -11
- package/src/plugins/builtin/executives/data.ts +17 -6
- package/src/plugins/builtin/executives/pane.tsx +16 -7
- package/src/plugins/builtin/exposure/holdings.ts +1 -1
- package/src/plugins/builtin/exposure/pane.tsx +3 -1
- package/src/plugins/builtin/fear-greed/index.tsx +4 -0
- package/src/plugins/builtin/fear-greed/series.ts +52 -0
- package/src/plugins/builtin/filing-events/pane.tsx +22 -5
- package/src/plugins/builtin/futures/index.tsx +43 -3
- package/src/plugins/builtin/futures/model.ts +1 -1
- package/src/plugins/builtin/futures/returns.ts +1 -1
- package/src/plugins/builtin/futures/series.ts +13 -0
- package/src/plugins/builtin/futures/table.tsx +1 -1
- package/src/plugins/builtin/futures/use-front-returns.ts +1 -1
- package/src/plugins/builtin/futures-curve/client.ts +12 -3
- package/src/plugins/builtin/futures-curve/headless.ts +70 -9
- package/src/plugins/builtin/futures-curve/index.tsx +1 -1
- package/src/plugins/builtin/futures-curve/model.ts +66 -11
- package/src/plugins/builtin/futures-curve/pane.tsx +52 -18
- package/src/plugins/builtin/fx-matrix/index.tsx +22 -1
- package/src/plugins/builtin/fx-matrix/pairs.ts +1 -1
- package/src/plugins/builtin/fx-matrix/settings.ts +42 -2
- package/src/plugins/builtin/gpu/board.tsx +13 -10
- package/src/plugins/builtin/gpu/changes.tsx +4 -4
- package/src/plugins/builtin/gpu/client.ts +19 -1
- package/src/plugins/builtin/gpu/equities.tsx +14 -10
- package/src/plugins/builtin/gpu/headless.ts +64 -27
- package/src/plugins/builtin/gpu/history.tsx +3 -3
- package/src/plugins/builtin/gpu/index.tsx +2 -0
- package/src/plugins/builtin/gpu/model.ts +114 -20
- package/src/plugins/builtin/gpu/pane.tsx +28 -12
- package/src/plugins/builtin/gpu/series.ts +38 -0
- package/src/plugins/builtin/help/function-card.tsx +25 -6
- package/src/plugins/builtin/help/index.tsx +18 -8
- package/src/plugins/builtin/holders/beneficial-client.ts +29 -7
- package/src/plugins/builtin/holders/beneficial-model.ts +90 -3
- package/src/plugins/builtin/holders/beneficial-report.ts +57 -5
- package/src/plugins/builtin/holders/beneficial-view.tsx +62 -14
- package/src/plugins/builtin/holders/client.ts +22 -3
- package/src/plugins/builtin/holders/format.ts +18 -3
- package/src/plugins/builtin/holders/headless.ts +42 -134
- package/src/plugins/builtin/holders/pane.tsx +14 -4
- package/src/plugins/builtin/holders/report-header.ts +40 -5
- package/src/plugins/builtin/holders/report-rows.ts +240 -0
- package/src/plugins/builtin/insider/client.ts +35 -20
- package/src/plugins/builtin/insider/headless.ts +41 -11
- package/src/plugins/builtin/insider/index.tsx +27 -10
- package/src/plugins/builtin/insider/insider-data.ts +10 -0
- package/src/plugins/builtin/insider/issuer.ts +49 -0
- package/src/plugins/builtin/insider/model.ts +3 -0
- package/src/plugins/builtin/iv-history/charts.tsx +21 -7
- package/src/plugins/builtin/iv-history/client.ts +26 -6
- package/src/plugins/builtin/iv-history/format.ts +33 -2
- package/src/plugins/builtin/iv-history/headless.ts +27 -12
- package/src/plugins/builtin/iv-history/index.tsx +5 -3
- package/src/plugins/builtin/iv-history/model.ts +172 -20
- package/src/plugins/builtin/iv-history/pane.tsx +11 -3
- package/src/plugins/builtin/iv-history/screen-pane.tsx +45 -25
- package/src/plugins/builtin/iv-history/series.ts +29 -0
- package/src/plugins/builtin/jobs/headless.ts +28 -3
- package/src/plugins/builtin/jobs/index.tsx +3 -1
- package/src/plugins/builtin/jobs/pane.tsx +1 -1
- package/src/plugins/builtin/jobs/series.ts +19 -0
- package/src/plugins/builtin/kelly-sizer/headless.ts +149 -0
- package/src/plugins/builtin/kelly-sizer/history.ts +80 -0
- package/src/plugins/builtin/kelly-sizer/index.tsx +2 -0
- package/src/plugins/builtin/kelly-sizer/pane.tsx +111 -40
- package/src/plugins/builtin/kelly-sizer/portfolio.ts +0 -39
- package/src/plugins/builtin/kelly-sizer/sections.tsx +14 -0
- package/src/plugins/builtin/kelly-sizer/types.ts +9 -1
- package/src/plugins/builtin/layout-manager/index.tsx +9 -1
- package/src/plugins/builtin/macro-day/client.ts +68 -3
- package/src/plugins/builtin/macro-day/headless.ts +18 -12
- package/src/plugins/builtin/macro-day/index.tsx +3 -0
- package/src/plugins/builtin/macro-day/model.ts +66 -15
- package/src/plugins/builtin/macro-day/pane.tsx +34 -20
- package/src/plugins/builtin/macro-day/release-table.ts +40 -0
- package/src/plugins/builtin/macro-day/releases.ts +62 -44
- package/src/plugins/builtin/market-heatmap/data.ts +25 -5
- package/src/plugins/builtin/market-heatmap/evidence.ts +90 -0
- package/src/plugins/builtin/market-heatmap/index.tsx +144 -63
- package/src/plugins/builtin/market-heatmap/model.ts +102 -3
- package/src/plugins/builtin/market-heatmap/portfolio.ts +12 -2
- package/src/plugins/builtin/market-movers/client.ts +7 -5
- package/src/plugins/builtin/market-movers/headless.ts +31 -4
- package/src/plugins/builtin/market-movers/index.tsx +11 -3
- package/src/plugins/builtin/market-movers/model.ts +101 -17
- package/src/plugins/builtin/market-movers/screener.ts +31 -0
- package/src/plugins/builtin/market-movers/table.ts +50 -23
- package/src/plugins/builtin/market-valuation/chart-series.ts +29 -69
- package/src/plugins/builtin/market-valuation/index.tsx +3 -3
- package/src/plugins/builtin/market-valuation/indicators.ts +0 -5
- package/src/plugins/builtin/members/headless.ts +7 -2
- package/src/plugins/builtin/members/model.ts +31 -3
- package/src/plugins/builtin/members/pane.tsx +3 -6
- package/src/plugins/builtin/mna/headless.ts +15 -3
- package/src/plugins/builtin/money-markets/index.tsx +2 -0
- package/src/plugins/builtin/money-markets/series.ts +41 -0
- package/src/plugins/builtin/news/headless.ts +9 -2
- package/src/plugins/builtin/news/wire/news/footer.ts +10 -0
- package/src/plugins/builtin/notes/cli.ts +12 -7
- package/src/plugins/builtin/openfda/client.ts +1 -1
- package/src/plugins/builtin/options/carry.ts +95 -0
- package/src/plugins/builtin/options/index.tsx +58 -5
- package/src/plugins/builtin/options/strike-window.ts +183 -0
- package/src/plugins/builtin/options/table.ts +55 -3
- package/src/plugins/builtin/options/types.ts +8 -1
- package/src/plugins/builtin/options/view.tsx +162 -13
- package/src/plugins/builtin/options-calculator/inputs.ts +2 -1
- package/src/plugins/builtin/options-positioning/client.ts +7 -3
- package/src/plugins/builtin/options-positioning/headless.ts +5 -2
- package/src/plugins/builtin/options-positioning/pane.tsx +2 -2
- package/src/plugins/builtin/options-scenario/charts.tsx +2 -2
- package/src/plugins/builtin/options-scenario/client.ts +75 -18
- package/src/plugins/builtin/options-scenario/headless.ts +72 -24
- package/src/plugins/builtin/options-scenario/hedge.ts +285 -0
- package/src/plugins/builtin/options-scenario/index.tsx +9 -2
- package/src/plugins/builtin/options-scenario/model.ts +33 -0
- package/src/plugins/builtin/options-scenario/pane.tsx +40 -16
- package/src/plugins/builtin/pe-band/model.ts +2 -2
- package/src/plugins/builtin/pe-band/report-dates.ts +11 -7
- package/src/plugins/builtin/perps/client.ts +40 -6
- package/src/plugins/builtin/perps/equity-row.tsx +33 -8
- package/src/plugins/builtin/perps/freshness.ts +66 -0
- package/src/plugins/builtin/perps/headless.ts +45 -30
- package/src/plugins/builtin/perps/index.tsx +18 -1
- package/src/plugins/builtin/perps/model.ts +32 -6
- package/src/plugins/builtin/perps/pane.tsx +76 -20
- package/src/plugins/builtin/perps/series.ts +76 -0
- package/src/plugins/builtin/plugin-marketplace/model.ts +64 -21
- package/src/plugins/builtin/plugin-marketplace/packs.ts +118 -0
- package/src/plugins/builtin/plugin-marketplace/pane.tsx +357 -39
- package/src/plugins/builtin/plugin-marketplace/store.ts +7 -1
- package/src/plugins/builtin/plugin-module.ts +90 -4
- package/src/plugins/builtin/portfolio-list/account-metrics.ts +1 -1
- package/src/plugins/builtin/portfolio-list/cli/bulk-symbols.ts +273 -0
- package/src/plugins/builtin/portfolio-list/cli/import-13f.ts +109 -0
- package/src/plugins/builtin/portfolio-list/cli/portfolio-command.ts +400 -99
- package/src/plugins/builtin/portfolio-list/cli/render.ts +281 -43
- package/src/plugins/builtin/portfolio-list/cli/shared.ts +26 -16
- package/src/plugins/builtin/portfolio-list/cli/watchlist-command.ts +120 -47
- package/src/plugins/builtin/portfolio-list/column-values.ts +1 -1
- package/src/plugins/builtin/portfolio-list/grid.tsx +1 -1
- package/src/plugins/builtin/portfolio-list/headless.ts +70 -9
- package/src/plugins/builtin/portfolio-list/imported-from.ts +8 -0
- package/src/plugins/builtin/portfolio-list/live-valuation.ts +6 -2
- package/src/plugins/builtin/portfolio-list/pane/index.tsx +6 -1
- package/src/plugins/builtin/portfolio-list/quick-add/index.tsx +17 -1
- package/src/plugins/builtin/portfolio-list/summary/totals.ts +1 -1
- package/src/plugins/builtin/portfolio-list/table.tsx +7 -1
- package/src/plugins/builtin/power/client.ts +16 -0
- package/src/plugins/builtin/power/evidence.ts +6 -2
- package/src/plugins/builtin/power/headless.ts +71 -7
- package/src/plugins/builtin/power/index.tsx +4 -1
- package/src/plugins/builtin/power/model.ts +72 -1
- package/src/plugins/builtin/power/pane.tsx +32 -9
- package/src/plugins/builtin/rate-path/headless.ts +11 -3
- package/src/plugins/builtin/realized-vol/headless.ts +8 -0
- package/src/plugins/builtin/realized-vol/pane.tsx +1 -1
- package/src/plugins/builtin/research/corporate-actions-pane.tsx +7 -4
- package/src/plugins/builtin/research/equity-diagnostic-pane.tsx +1 -1
- package/src/plugins/builtin/research/event-model.ts +68 -24
- package/src/plugins/builtin/research/events-headless.ts +2 -1
- package/src/plugins/builtin/research/headless.ts +2 -1
- package/src/plugins/builtin/revenue-breakdown/client.ts +13 -6
- package/src/plugins/builtin/revenue-breakdown/headless.ts +4 -1
- package/src/plugins/builtin/revenue-breakdown/pane.tsx +7 -4
- package/src/plugins/builtin/reverse-dcf/headless.ts +5 -1
- package/src/plugins/builtin/reverse-dcf/pane.tsx +1 -1
- package/src/plugins/builtin/risk-factors/data.ts +23 -9
- package/src/plugins/builtin/risk-factors/headless.ts +5 -2
- package/src/plugins/builtin/risk-factors/pane.tsx +6 -5
- package/src/plugins/builtin/seasonality/client.ts +15 -7
- package/src/plugins/builtin/seasonality/headless.ts +36 -12
- package/src/plugins/builtin/seasonality/index.tsx +2 -2
- package/src/plugins/builtin/seasonality/model.ts +119 -0
- package/src/plugins/builtin/seasonality/pane.tsx +108 -37
- package/src/plugins/builtin/sec/index.tsx +5 -5
- package/src/plugins/builtin/sectors/client.ts +10 -2
- package/src/plugins/builtin/sectors/headless.ts +35 -6
- package/src/plugins/builtin/sectors/index.tsx +18 -1
- package/src/plugins/builtin/sectors/sector-model.ts +150 -41
- package/src/plugins/builtin/series-inventory.ts +91 -0
- package/src/plugins/builtin/shared/cloud-upgrade.ts +1 -1
- package/src/plugins/builtin/shared/command-tab.ts +69 -0
- package/src/plugins/builtin/shared/earnings-report.ts +55 -0
- package/src/plugins/builtin/shared/fred-points.ts +20 -0
- package/src/plugins/builtin/shared/fx-rate-freshness.ts +101 -0
- package/src/plugins/builtin/shared/headless-market-data.ts +33 -1
- package/src/plugins/builtin/shared/members-menu.tsx +4 -4
- package/src/plugins/builtin/shared/open-description.ts +29 -0
- package/src/plugins/builtin/shared/report-freshness.ts +59 -2
- package/src/plugins/builtin/shared/series-warning.ts +5 -0
- package/src/plugins/builtin/shared/ticker-request.ts +25 -1
- package/src/plugins/builtin/shared/use-quote-board.ts +25 -5
- package/src/plugins/builtin/shared/volatility/options.ts +1 -46
- package/src/plugins/builtin/short-interest/headless.ts +1 -0
- package/src/plugins/builtin/short-interest/index.tsx +21 -4
- package/src/plugins/builtin/short-interest/series.ts +36 -0
- package/src/plugins/builtin/short-interest/surface.tsx +4 -4
- package/src/plugins/builtin/short-interest/watch-headless.ts +1 -0
- package/src/plugins/builtin/short-interest/watch-model.ts +9 -5
- package/src/plugins/builtin/short-volume/headless.ts +1 -0
- package/src/plugins/builtin/short-volume/index.tsx +3 -10
- package/src/plugins/builtin/short-volume/series.ts +23 -0
- package/src/plugins/builtin/social-mentions/index.tsx +2 -0
- package/src/plugins/builtin/social-mentions/series.ts +23 -0
- package/src/plugins/builtin/supply-chain/graph-pane.tsx +3 -2
- package/src/plugins/builtin/supply-chain/model.ts +1 -1
- package/src/plugins/builtin/supply-chain/pane.tsx +3 -1
- package/src/plugins/builtin/thirteenf/api.ts +1 -0
- package/src/plugins/builtin/thirteenf/data.ts +6 -4
- package/src/plugins/builtin/thirteenf/headless.ts +217 -36
- package/src/plugins/builtin/thirteenf/model.ts +39 -1
- package/src/plugins/builtin/thirteenf/overlap.ts +75 -0
- package/src/plugins/builtin/thirteenf/pane.tsx +10 -1
- package/src/plugins/builtin/thirteenf/report-notes.ts +103 -1
- package/src/plugins/builtin/thirteenf/types.ts +2 -0
- package/src/plugins/builtin/ticker-detail/headless.ts +43 -21
- 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/ticker-detail/overview/futures-contract.ts +31 -0
- package/src/plugins/builtin/ticker-detail/overview/model.ts +3 -3
- package/src/plugins/builtin/ticker-detail/overview/pane.tsx +2 -1
- package/src/plugins/builtin/ticker-detail/overview-tab.tsx +48 -4
- package/src/plugins/builtin/ticker-detail/pane.tsx +4 -5
- package/src/plugins/builtin/ticker-detail/quote-monitor/card.tsx +94 -6
- package/src/plugins/builtin/ticker-detail/quote-monitor/index.tsx +13 -3
- package/src/plugins/builtin/time-sales/headless.ts +1 -0
- package/src/plugins/builtin/treasury-auctions/cache.ts +5 -2
- package/src/plugins/builtin/treasury-auctions/client.ts +22 -8
- package/src/plugins/builtin/treasury-auctions/headless.ts +56 -6
- package/src/plugins/builtin/treasury-auctions/index.tsx +12 -9
- package/src/plugins/builtin/treasury-auctions/model.ts +205 -30
- package/src/plugins/builtin/treasury-auctions/pane.tsx +35 -11
- package/src/plugins/builtin/treasury-auctions/types.ts +11 -1
- package/src/plugins/builtin/vol-surface/charts.tsx +1 -3
- package/src/plugins/builtin/vol-surface/client.ts +6 -2
- package/src/plugins/builtin/vol-surface/evidence.ts +11 -6
- package/src/plugins/builtin/vol-surface/headless.ts +125 -20
- package/src/plugins/builtin/vol-surface/model.ts +23 -11
- package/src/plugins/builtin/vol-surface/pane.tsx +38 -27
- package/src/plugins/builtin/vol-surface/tables.ts +124 -0
- package/src/plugins/builtin/volatility/index.tsx +2 -0
- package/src/plugins/builtin/volatility/series.ts +84 -0
- package/src/plugins/builtin/world-indices/client.ts +22 -4
- package/src/plugins/builtin/world-indices/headless.ts +54 -27
- package/src/plugins/builtin/world-indices/model.ts +4 -2
- package/src/plugins/builtin/world-indices/table.tsx +13 -2
- package/src/plugins/builtin/world-venue-map/geo-series.ts +27 -2
- package/src/plugins/builtin/world-venue-map/headless.ts +4 -1
- package/src/plugins/builtin/world-venue-map/index.ts +3 -2
- package/src/plugins/builtin/world-venue-map/layered-pane.tsx +8 -4
- package/src/plugins/builtin/world-venue-map/layers.ts +29 -0
- package/src/plugins/builtin/yield-curve/chart.ts +2 -2
- package/src/plugins/builtin/yield-curve/curves.ts +21 -8
- package/src/plugins/builtin/yield-curve/headless.ts +71 -18
- package/src/plugins/builtin/yield-curve/index.tsx +4 -2
- package/src/plugins/builtin/yield-curve/series.ts +86 -0
- package/src/plugins/builtin-editorial.ts +126 -0
- package/src/plugins/catalog-backend.ts +16 -9
- package/src/plugins/catalog-browser.ts +129 -64
- package/src/plugins/catalog-manifest.ts +73 -40
- package/src/plugins/catalog-ui.ts +26 -6
- package/src/plugins/extracted-plugins.ts +7 -1
- package/src/plugins/ownership.ts +150 -7
- package/src/plugins/plugin-functions.ts +54 -0
- package/src/plugins/plugin-off.ts +36 -0
- package/src/plugins/registry/host-actions.ts +16 -0
- package/src/plugins/registry/index.ts +173 -28
- package/src/plugins/registry/plugin-state.ts +25 -1
- package/src/plugins/runtime/context.tsx +29 -0
- package/src/{plugins/builtin/portfolio-list → portfolio}/position-metrics.ts +6 -6
- package/src/portfolio/position-value.ts +40 -0
- package/src/public/__snapshots__/public-api.test.ts.snap +7 -0
- package/src/public/time-series.ts +17 -0
- package/src/react/auto-refresh.ts +13 -3
- package/src/react/input.ts +48 -1
- package/src/remote/app-host.tsx +25 -4
- package/src/remote/confirm-change.tsx +85 -0
- package/src/remote/controller-utils.ts +8 -1
- package/src/remote/controller.ts +126 -59
- package/src/remote/matching.ts +69 -0
- package/src/remote/pane-screenshot.ts +47 -0
- package/src/remote/schema.ts +63 -1
- package/src/remote/semantic-tree.tsx +14 -0
- package/src/remote/types.ts +32 -0
- package/src/remote/watchlist.ts +306 -0
- package/src/renderers/browser/main.tsx +3 -2
- package/src/renderers/cloudflare/worker.ts +1 -1
- package/src/renderers/dom/data-table/frozen-column.ts +3 -1
- package/src/renderers/dom/data-table/index.tsx +33 -6
- package/src/renderers/dom/data-table/row.tsx +27 -1
- package/src/renderers/dom/desktop/control-styles.ts +63 -1
- package/src/renderers/dom/desktop/controls.tsx +30 -23
- package/src/renderers/dom/desktop/dialog-actions.tsx +170 -0
- package/src/renderers/dom/desktop/icons.tsx +21 -0
- package/src/renderers/dom/desktop/query-bar.tsx +59 -32
- package/src/renderers/dom/dom-ui-host.tsx +3 -0
- package/src/renderers/dom/host/box.tsx +4 -1
- package/src/renderers/dom/host/chart-surface.tsx +6 -2
- package/src/renderers/dom/host/drag-shield.ts +17 -6
- package/src/renderers/dom/host/live-frame.ts +14 -2
- package/src/renderers/dom/host/overflow-fade.ts +14 -1
- package/src/renderers/dom/host/size-observer.ts +26 -0
- package/src/renderers/dom/host/surface-3d.tsx +7 -2
- package/src/renderers/dom/host/text.tsx +1 -1
- package/src/renderers/dom/input-host.tsx +6 -1
- package/src/renderers/dom/styles.css +74 -0
- package/src/renderers/electrobun/bun/desktop/backend.ts +5 -1
- package/src/renderers/electrobun/bun/desktop/detached-windows.ts +12 -1
- package/src/renderers/electrobun/bun/desktop/initialization.ts +2 -1
- package/src/renderers/electrobun/shared/protocol.ts +2 -0
- package/src/renderers/electrobun/view/cli-pane-shot-entry.tsx +18 -3
- package/src/renderers/electrobun/view/cli-pane-shot-frame.tsx +109 -5
- package/src/renderers/electrobun/view/cli-pane-shot-health.ts +10 -26
- package/src/renderers/electrobun/view/main.tsx +6 -1
- package/src/renderers/opentui/input-host.tsx +6 -1
- package/src/renderers/opentui/start.tsx +9 -0
- package/src/series/capability.ts +75 -0
- package/src/series/csv.ts +160 -0
- package/src/series/files.ts +107 -0
- package/src/series/registry.ts +198 -0
- package/src/series/resolve.ts +107 -0
- package/src/series/standalone.ts +48 -0
- package/src/series/types.ts +145 -0
- package/src/series/validate.ts +171 -0
- package/src/shares/portable-layout.ts +16 -6
- package/src/sources/gloomberb-cloud/index.ts +26 -17
- package/src/sources/gloomberb-cloud/normalizers.ts +5 -1
- package/src/sources/history-result.ts +1 -0
- package/src/sources/listing-symbols.ts +14 -5
- package/src/sources/provider-errors.ts +88 -3
- package/src/sources/provider-router/batches.ts +4 -1
- package/src/sources/provider-router/cache.ts +4 -2
- package/src/sources/provider-router/cached-routes.ts +9 -5
- package/src/sources/provider-router/financial-routes.ts +12 -5
- package/src/sources/provider-router/financials.ts +55 -15
- package/src/sources/provider-router/history.ts +68 -34
- package/src/sources/provider-router/index.ts +1 -1
- package/src/sources/provider-router/primary.ts +23 -5
- package/src/sources/provider-router/search.ts +1 -0
- package/src/sources/sec-edgar.ts +68 -8
- package/src/sync/core-contributors.ts +5 -3
- package/src/test-support/cli-context.ts +2 -1
- package/src/test-support/data-provider.ts +34 -0
- package/src/test-support/shell-pane-keys.tsx +1 -0
- package/src/theme/series-colors.ts +46 -0
- package/src/theme/themes.ts +149 -0
- package/src/tickers/company-name.ts +75 -0
- package/src/tickers/instrument-kind.ts +25 -0
- package/src/tickers/open-target.ts +3 -2
- package/src/tickers/search/index.ts +67 -9
- package/src/tickers/search/ranking.ts +78 -18
- package/src/tickers/search/types.ts +10 -2
- package/src/tickers/starter-symbols.ts +8 -0
- package/src/tickers/us-listing.ts +34 -0
- package/src/time-series/hooks.ts +9 -0
- package/src/time-series/resolve.ts +96 -30
- package/src/time-series/types.ts +4 -2
- package/src/time-series/use-chart-resolution.ts +32 -0
- package/src/types/config.ts +67 -1
- package/src/types/data-provider.ts +5 -0
- package/src/types/financials.ts +52 -1
- package/src/types/headless.ts +72 -0
- package/src/types/instrument.ts +8 -0
- package/src/types/plugin.ts +68 -3
- package/src/types/price-history.ts +7 -0
- package/src/types/ticker.ts +14 -0
- package/src/ui/host.tsx +26 -4
- package/src/ui/index.tsx +2 -0
- package/src/ui/live-resize.ts +81 -0
- package/src/ui/live-stretch.ts +121 -0
- package/src/ui/measured-cells.ts +58 -0
- package/src/ui/pane-fill.ts +11 -0
- package/src/utils/basis-points.ts +17 -0
- package/src/utils/cli-output.ts +21 -2
- package/src/utils/concurrency.ts +25 -0
- package/src/utils/crypto-pair.ts +20 -0
- package/src/utils/currency-pair.ts +19 -0
- package/src/utils/decimal-comma.ts +19 -0
- package/src/utils/dom-screenshot-css.ts +265 -0
- package/src/utils/dom-screenshot-rasters.ts +276 -0
- package/src/utils/dom-screenshot.ts +437 -52
- package/src/utils/exchange-rate-snapshot.ts +6 -2
- package/src/utils/exchanges.ts +120 -1
- package/src/utils/format.ts +17 -3
- package/src/utils/fundamentals.ts +66 -0
- package/src/utils/futures-generic.ts +6 -12
- package/src/utils/fx-market-hours.ts +44 -0
- package/src/utils/option-expiry.ts +126 -0
- package/src/utils/price-history.ts +130 -40
- package/src/utils/rpc-timeout-error.ts +6 -2
- package/src/utils/sec-eps-basis.ts +178 -36
- package/src/utils/sec.ts +98 -40
- package/src/utils/throttled-fetch.ts +51 -22
- package/src/utils/utc-time.ts +51 -4
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The tickers an upgrade surface may name for the `upgrade_personalized`
|
|
3
|
+
* experiment: the account's own holdings, or with none, the tickers it chose
|
|
4
|
+
* to watch, read from this device's portfolios and watchlists. They stay on
|
|
5
|
+
* the device; nothing here is sent anywhere.
|
|
6
|
+
*/
|
|
7
|
+
import { tf } from "../i18n";
|
|
8
|
+
import type { TickerFinancials } from "../types/financials";
|
|
9
|
+
import type { TickerRecord, Watchlist } from "../types/ticker";
|
|
10
|
+
import { isUsListingExchange } from "../utils/exchanges";
|
|
11
|
+
import { getPortfolioPositionValue } from "../portfolio/position-value";
|
|
12
|
+
import { STARTER_SYMBOLS } from "../tickers/starter-symbols";
|
|
13
|
+
|
|
14
|
+
const UPGRADE_TICKER_LIMIT = 3;
|
|
15
|
+
/** One to five letters and an optional class letter: BRK.B, never BTC-USD, ES=F, ^GSPC, SHOP.TO or 7203. */
|
|
16
|
+
const PLAIN_TICKER = /^[A-Z]{1,5}(?:\.[A-Z])?$/;
|
|
17
|
+
/** Every candidate is a US listing, so values compare in dollars without a rate. */
|
|
18
|
+
const DOLLARS = new Map([["USD", 1]]);
|
|
19
|
+
/** Stocks and exchange-traded funds; not mutual funds, which have no intraday quote. */
|
|
20
|
+
const LISTED_TYPES = new Set(["", "STK", "EQUITY", "COMMONSTOCK", "ADR", "DEPOSITARYRECEIPT", "ETF", "ETP", "CEF", "CLOSEDEND", "CLOSEDENDFUND"]);
|
|
21
|
+
|
|
22
|
+
/** A stock or fund on a US listing exchange (not OTC), priced in dollars. */
|
|
23
|
+
function isUsListedStockOrFund(ticker: TickerRecord): boolean {
|
|
24
|
+
const contract = ticker.metadata.broker_contracts?.[0];
|
|
25
|
+
const type = (contract?.secType ?? ticker.metadata.assetCategory ?? "").trim().toUpperCase().replace(/[\s_-]/g, "");
|
|
26
|
+
const currency = (contract?.currency ?? ticker.metadata.currency ?? "").trim().toUpperCase();
|
|
27
|
+
return LISTED_TYPES.has(type)
|
|
28
|
+
&& (currency === "USD" || currency === "")
|
|
29
|
+
&& [contract?.primaryExchange, contract?.exchange, ticker.metadata.exchange].some((exchange) => isUsListingExchange(exchange));
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
/**
|
|
33
|
+
* The symbol when it is a plain US stock or fund someone can get a real-time
|
|
34
|
+
* quote for: not cash, an option, a future, a crypto pair or a foreign listing.
|
|
35
|
+
*/
|
|
36
|
+
function plainSymbol(ticker: TickerRecord): string | null {
|
|
37
|
+
const symbol = ticker.metadata.ticker.trim().toUpperCase();
|
|
38
|
+
if (!PLAIN_TICKER.test(symbol) || !isUsListedStockOrFund(ticker)) return null;
|
|
39
|
+
// A contract multiplier means the holding is an option or a future on it.
|
|
40
|
+
if (ticker.metadata.positions.some((position) => (position.multiplier ?? 1) !== 1)) return null;
|
|
41
|
+
return symbol;
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
interface Holding {
|
|
45
|
+
/** The market value is known on this device: a quote it already has, or the broker's own value. */
|
|
46
|
+
priced: boolean;
|
|
47
|
+
value: number;
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
/**
|
|
51
|
+
* Gross market value of the shares held, valued like the portfolio pane from
|
|
52
|
+
* what the device already has; null when none are held. Without a quote or a
|
|
53
|
+
* broker value it falls back to what was paid, and says so with `priced`.
|
|
54
|
+
*/
|
|
55
|
+
function heldValue(ticker: TickerRecord, financials: TickerFinancials | undefined): Holding | null {
|
|
56
|
+
const held = ticker.metadata.positions.filter((position) => position.shares !== 0);
|
|
57
|
+
if (held.length === 0) return null;
|
|
58
|
+
const value = getPortfolioPositionValue({
|
|
59
|
+
ticker,
|
|
60
|
+
financials: financials ?? null,
|
|
61
|
+
portfolioId: null,
|
|
62
|
+
baseCurrency: "USD",
|
|
63
|
+
exchangeRates: DOLLARS,
|
|
64
|
+
});
|
|
65
|
+
if (Number.isFinite(value)) return { priced: true, value };
|
|
66
|
+
const cost = held.reduce((total, position) => total + Math.abs(position.shares * (position.avgCost ?? 0)), 0);
|
|
67
|
+
return { priced: false, value: Number.isFinite(cost) ? cost : 0 };
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
/**
|
|
71
|
+
* Up to three tickers, or none for the generic copy:
|
|
72
|
+
* - the biggest holdings across every portfolio, those with a known market
|
|
73
|
+
* value first by that value, then any the device cannot value yet by cost;
|
|
74
|
+
* - with nothing held, the first watchlist tickers in list order (lists in
|
|
75
|
+
* their order, each sorted by ticker as the pane shows it). Team lists and
|
|
76
|
+
* the names the app seeds on first run are skipped: nobody here picked them.
|
|
77
|
+
*/
|
|
78
|
+
export function selectUpgradeTickers(
|
|
79
|
+
tickers: Iterable<TickerRecord>,
|
|
80
|
+
financials: ReadonlyMap<string, TickerFinancials>,
|
|
81
|
+
watchlists: readonly Watchlist[],
|
|
82
|
+
): string[] {
|
|
83
|
+
const records = [...tickers];
|
|
84
|
+
const holdings = new Map<string, Holding>();
|
|
85
|
+
for (const ticker of records) {
|
|
86
|
+
const symbol = plainSymbol(ticker);
|
|
87
|
+
if (!symbol) continue;
|
|
88
|
+
const holding = heldValue(ticker, financials.get(ticker.metadata.ticker));
|
|
89
|
+
if (holding) holdings.set(symbol, holding);
|
|
90
|
+
}
|
|
91
|
+
if (holdings.size > 0) {
|
|
92
|
+
return [...holdings]
|
|
93
|
+
.sort(([leftSymbol, left], [rightSymbol, right]) => (
|
|
94
|
+
Number(right.priced) - Number(left.priced)
|
|
95
|
+
|| right.value - left.value
|
|
96
|
+
|| leftSymbol.localeCompare(rightSymbol)
|
|
97
|
+
))
|
|
98
|
+
.slice(0, UPGRADE_TICKER_LIMIT)
|
|
99
|
+
.map(([symbol]) => symbol);
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
const picked: string[] = [];
|
|
103
|
+
for (const watchlist of watchlists) {
|
|
104
|
+
if (watchlist.teamId) continue;
|
|
105
|
+
const members = records
|
|
106
|
+
.filter((ticker) => ticker.metadata.watchlists.includes(watchlist.id))
|
|
107
|
+
.sort((left, right) => left.metadata.ticker.localeCompare(right.metadata.ticker));
|
|
108
|
+
for (const ticker of members) {
|
|
109
|
+
const symbol = plainSymbol(ticker);
|
|
110
|
+
if (!symbol || STARTER_SYMBOLS.has(symbol) || picked.includes(symbol)) continue;
|
|
111
|
+
picked.push(symbol);
|
|
112
|
+
if (picked.length === UPGRADE_TICKER_LIMIT) return picked;
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
return picked;
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
/** "NVDA", "NVDA and AAPL", "NVDA, AAPL and MSFT". */
|
|
119
|
+
export function upgradeTickerList(tickers: readonly string[]): string {
|
|
120
|
+
const [first = "", second, third] = tickers;
|
|
121
|
+
if (third) return tf("{first}, {second} and {third}", { first, second: second!, third });
|
|
122
|
+
if (second) return tf("{first} and {second}", { first, second });
|
|
123
|
+
return first;
|
|
124
|
+
}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { useCallback, useEffect, useRef, useState } from "react";
|
|
2
|
-
import { apiClient, type AuthUser } from "
|
|
3
|
-
import { Button } from "
|
|
4
|
-
import { useShortcut } from "
|
|
5
|
-
import { Box, Text } from "
|
|
6
|
-
import { colors } from "
|
|
7
|
-
import { isPlainKey } from "
|
|
2
|
+
import { apiClient, type AuthUser } from "../api-client";
|
|
3
|
+
import { Button } from "../components/ui/button";
|
|
4
|
+
import { useShortcut } from "../react/input";
|
|
5
|
+
import { Box, Text } from "../ui";
|
|
6
|
+
import { colors } from "../theme/colors";
|
|
7
|
+
import { isPlainKey } from "../utils/keyboard";
|
|
8
8
|
|
|
9
9
|
/** Shared continuation after email signup in the terminal and browser. */
|
|
10
10
|
export function CloudVerificationPanel({ onVerified, onContinueFree }: {
|
package/src/api-client/askg.ts
CHANGED
|
@@ -1,7 +1,10 @@
|
|
|
1
1
|
import {
|
|
2
2
|
ASKG_PROTOCOL_VERSION,
|
|
3
|
+
type ASKGCapabilities,
|
|
3
4
|
type ASKGDoneReason,
|
|
4
5
|
type ASKGErrorCode,
|
|
6
|
+
type ASKGFeedback,
|
|
7
|
+
type ASKGFeedbackRequest,
|
|
5
8
|
type ASKGSessionStartRequest,
|
|
6
9
|
type ASKGSessionStartResponse,
|
|
7
10
|
type ASKGSseEvent,
|
|
@@ -90,10 +93,14 @@ interface ASKGConversationMessage {
|
|
|
90
93
|
tools: ASKGConversationTool[];
|
|
91
94
|
turnId: string | null;
|
|
92
95
|
createdAt: string;
|
|
96
|
+
/** On an answer: the person's own rating, null when unrated. */
|
|
97
|
+
feedback?: ASKGFeedback | null;
|
|
93
98
|
}
|
|
94
99
|
|
|
95
100
|
export interface ASKGConversationDetail extends ASKGConversationSummary {
|
|
96
101
|
messages: ASKGConversationMessage[];
|
|
102
|
+
/** `feedback: 1` when this server takes ratings; absent from an older one. */
|
|
103
|
+
capabilities?: ASKGCapabilities;
|
|
97
104
|
}
|
|
98
105
|
|
|
99
106
|
export interface ASKGTransport {
|
|
@@ -134,6 +141,16 @@ export interface ASKGTransport {
|
|
|
134
141
|
id: string,
|
|
135
142
|
options?: { signal?: AbortSignal },
|
|
136
143
|
): Promise<boolean>;
|
|
144
|
+
/**
|
|
145
|
+
* Rates one answer and returns the rating as stored. Null when the server
|
|
146
|
+
* has no answer of this person's under that id, which is also what a
|
|
147
|
+
* server without the route says.
|
|
148
|
+
*/
|
|
149
|
+
sendFeedback(
|
|
150
|
+
turnId: string,
|
|
151
|
+
request: ASKGFeedbackRequest,
|
|
152
|
+
options?: { signal?: AbortSignal },
|
|
153
|
+
): Promise<ASKGFeedback | null>;
|
|
137
154
|
}
|
|
138
155
|
|
|
139
156
|
/** One decoded server-sent event frame. */
|
|
@@ -662,4 +679,30 @@ export class CloudASKGApi implements ASKGTransport {
|
|
|
662
679
|
throw classifyASKGRequestError(error);
|
|
663
680
|
}
|
|
664
681
|
}
|
|
682
|
+
|
|
683
|
+
async sendFeedback(
|
|
684
|
+
turnId: string,
|
|
685
|
+
request: ASKGFeedbackRequest,
|
|
686
|
+
options: { signal?: AbortSignal } = {},
|
|
687
|
+
): Promise<ASKGFeedback | null> {
|
|
688
|
+
try {
|
|
689
|
+
const stored = await this.options.request<Partial<ASKGFeedback> | null>(
|
|
690
|
+
`/askg/turns/${encodeURIComponent(turnId)}/feedback`,
|
|
691
|
+
{
|
|
692
|
+
method: "PUT",
|
|
693
|
+
body: JSON.stringify(request),
|
|
694
|
+
signal: options.signal,
|
|
695
|
+
},
|
|
696
|
+
);
|
|
697
|
+
// What the server stored, read defensively: the control shows it.
|
|
698
|
+
return {
|
|
699
|
+
rating: stored?.rating === "down" ? "down" : stored?.rating === "up" ? "up" : request.rating,
|
|
700
|
+
reason: stored?.reason ?? null,
|
|
701
|
+
shared: stored?.shared === true,
|
|
702
|
+
};
|
|
703
|
+
} catch (error) {
|
|
704
|
+
if (error instanceof ApiRequestError && error.status === 404) return null;
|
|
705
|
+
throw classifyASKGRequestError(error);
|
|
706
|
+
}
|
|
707
|
+
}
|
|
665
708
|
}
|
package/src/api-client/auth.ts
CHANGED
|
@@ -11,8 +11,10 @@ import type {
|
|
|
11
11
|
CloudBrowserHandoffResponse,
|
|
12
12
|
CloudPricing,
|
|
13
13
|
CloudVerificationResponse,
|
|
14
|
+
CreatedMcpKey,
|
|
14
15
|
DeviceAuthStartResponse,
|
|
15
16
|
DeviceAuthTokenResponse,
|
|
17
|
+
McpKeyScope,
|
|
16
18
|
PersistedAuthUser,
|
|
17
19
|
} from "./types";
|
|
18
20
|
|
|
@@ -269,6 +271,19 @@ export class CloudAuthApi {
|
|
|
269
271
|
return result.feed;
|
|
270
272
|
}
|
|
271
273
|
|
|
274
|
+
/**
|
|
275
|
+
* Creates an MCP key for an agent, the same call as Cloud settings, Agents.
|
|
276
|
+
* Needs Pro (402 otherwise) and fails with 409 at the per-account limit. The
|
|
277
|
+
* token in the answer is never returned again, so callers show it once and
|
|
278
|
+
* keep it out of logs and storage.
|
|
279
|
+
*/
|
|
280
|
+
async createMcpKey(input: { name: string; scope: McpKeyScope }): Promise<CreatedMcpKey> {
|
|
281
|
+
return this.options.request<CreatedMcpKey>("/account/mcp/keys", {
|
|
282
|
+
method: "POST",
|
|
283
|
+
body: JSON.stringify({ name: input.name, scope: input.scope }),
|
|
284
|
+
});
|
|
285
|
+
}
|
|
286
|
+
|
|
272
287
|
/** A new calendar feed link; the old one stops working. */
|
|
273
288
|
async rotateCalendarFeed(): Promise<CalendarFeed> {
|
|
274
289
|
const result = await this.options.request<{ feed: CalendarFeed }>(
|
|
@@ -85,6 +85,10 @@ export interface BeneficialOwnersPayload {
|
|
|
85
85
|
|
|
86
86
|
export interface CloudBeneficialOwnersParams {
|
|
87
87
|
ticker: string;
|
|
88
|
+
/** The listing's venue. Sent only for a venue outside the US, with `name`. */
|
|
89
|
+
exchange?: string;
|
|
90
|
+
/** The listing's company name, from its ticker or its own quote. */
|
|
91
|
+
name?: string;
|
|
88
92
|
form?: BeneficialOwnersForm;
|
|
89
93
|
history?: boolean;
|
|
90
94
|
limit?: number;
|
package/src/api-client/chat.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import {
|
|
2
2
|
normalizeChatAttachments,
|
|
3
3
|
normalizeChatChannel,
|
|
4
|
+
normalizeChatDiscordLink,
|
|
4
5
|
normalizeChatMessage,
|
|
5
6
|
normalizeChatMessages,
|
|
6
7
|
normalizeChatState,
|
|
@@ -10,6 +11,7 @@ import type {
|
|
|
10
11
|
ChatAttachment,
|
|
11
12
|
ChatChannel,
|
|
12
13
|
ChatChannelState,
|
|
14
|
+
ChatDiscordLink,
|
|
13
15
|
ChatMessage,
|
|
14
16
|
ChatNotification,
|
|
15
17
|
ChatStateResponse,
|
|
@@ -256,6 +258,23 @@ export class CloudChatApi {
|
|
|
256
258
|
return normalizeChatMessage(message);
|
|
257
259
|
}
|
|
258
260
|
|
|
261
|
+
/** Whether this account is tied to a Discord person. Throws a 404 or 501 `ApiRequestError` on a server without Discord sync. */
|
|
262
|
+
async getDiscordLink(): Promise<ChatDiscordLink> {
|
|
263
|
+
return normalizeChatDiscordLink(await this.options.request<unknown>("/chat/discord/link"));
|
|
264
|
+
}
|
|
265
|
+
|
|
266
|
+
async unlinkDiscord(): Promise<void> {
|
|
267
|
+
await this.options.request<unknown>("/chat/discord/link", { method: "DELETE" });
|
|
268
|
+
}
|
|
269
|
+
|
|
270
|
+
/** Turns the mirroring of your own public messages to Discord on or off. */
|
|
271
|
+
async setDiscordMirror(enabled: boolean): Promise<void> {
|
|
272
|
+
await this.options.request<unknown>("/chat/discord/mirror", {
|
|
273
|
+
method: "PUT",
|
|
274
|
+
body: JSON.stringify({ enabled }),
|
|
275
|
+
});
|
|
276
|
+
}
|
|
277
|
+
|
|
259
278
|
connectChannel(
|
|
260
279
|
channelId: string,
|
|
261
280
|
onMessage: (msg: ChatMessage) => void,
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import { listingAbroad, type IssuerListingParams } from "./paths";
|
|
2
|
+
|
|
1
3
|
type QuoteMatchMode = "exact" | "whitespace" | "nfkc_whitespace";
|
|
2
4
|
|
|
3
5
|
type KpiBasis = "reported" | "adjusted" | "constant_currency" | "organic"
|
|
@@ -147,7 +149,17 @@ export interface KpiQueryOptions {
|
|
|
147
149
|
/** Point-in-time publication cutoff; excludes later restatements and actuals. */
|
|
148
150
|
asOf?: string
|
|
149
151
|
}
|
|
150
|
-
|
|
152
|
+
/**
|
|
153
|
+
* A US listing or a bare symbol asks for the symbol as before. A listing abroad
|
|
154
|
+
* asks for its bare symbol with its venue and company, so it never reads the
|
|
155
|
+
* disclosures of a US company that has the same symbol.
|
|
156
|
+
*/
|
|
157
|
+
export function companyDisclosurePath(section: "kpis" | "guidance", symbol: string, options: KpiQueryOptions, listing: IssuerListingParams = {}): string {
|
|
151
158
|
const query = new URLSearchParams(Object.entries(options).filter((entry): entry is [string, string] => entry[1] != null));
|
|
152
|
-
|
|
159
|
+
const abroad = listingAbroad(symbol, listing.exchange, listing.name);
|
|
160
|
+
if (abroad) {
|
|
161
|
+
query.set("exchange", abroad.exchange);
|
|
162
|
+
if (abroad.name) query.set("name", abroad.name);
|
|
163
|
+
}
|
|
164
|
+
return `/cloud/company-${section}/${encodeURIComponent(abroad?.symbol ?? symbol)}?${query}`;
|
|
153
165
|
}
|
package/src/api-client/data.ts
CHANGED
|
@@ -27,12 +27,12 @@ import type { CryptoMarketsPayload } from "./crypto-markets";
|
|
|
27
27
|
import type { CentralBankRatesPayload } from "./central-bank-rates";
|
|
28
28
|
import type { EstimateRevisionsPayload } from "./estimate-revisions";
|
|
29
29
|
import type { MoneyMarketsPayload } from "./money-markets";
|
|
30
|
-
import type { CloudCurveId, CloudCurveView, CloudWorldCurves } from "./yield-curves";
|
|
30
|
+
import type { CloudCurveHistory, CloudCurveId, CloudCurveView, CloudWorldCurves } from "./yield-curves";
|
|
31
31
|
import type { CdxBoardPayload, CloudCreditBoardParams, SovrBoardPayload } from "./credit-boards";
|
|
32
32
|
import type { ShortVolumePayload, ShortVolumeScope } from "./short-volume";
|
|
33
33
|
import type { BeneficialOwnersPayload, CloudBeneficialOwnersParams } from "./beneficial-owners";
|
|
34
34
|
import type { SocialMentionDayPosts, SocialMentionsPayload, SocialMentionsRange } from "./social-mentions";
|
|
35
|
-
import type { FuturesCurveAsOfPayload, FuturesCurvePayload } from "./futures-curve";
|
|
35
|
+
import type { FuturesContractTermsPayload, FuturesCurveAsOfPayload, FuturesCurvePayload } from "./futures-curve";
|
|
36
36
|
import type { CotBoardPayload, CotContractPayload, CotFamily, CotClass } from "./cot";
|
|
37
37
|
import type { DoeBoardPayload } from "./doe";
|
|
38
38
|
import type { GpuBoardPayload, GpuEventsPayload, GpuHistoryPayload, GpuHistoryQuery } from "./gpu";
|
|
@@ -65,11 +65,14 @@ import {
|
|
|
65
65
|
cloudJobsPath,
|
|
66
66
|
cloudJobsPostingsPath,
|
|
67
67
|
type CloudJobsPostingsParams,
|
|
68
|
+
type IssuerListingParams,
|
|
68
69
|
cloudProxyStatementPath,
|
|
70
|
+
cloudDebtMaturitiesPath,
|
|
69
71
|
cloudFilingEventsPath,
|
|
70
72
|
cloudRiskReportPath,
|
|
71
73
|
cloudRiskReportsPath,
|
|
72
74
|
cloudProxyStatementsPath,
|
|
75
|
+
cloudRevenueBreakdownPath,
|
|
73
76
|
cloudExchangeRatePath,
|
|
74
77
|
cloudSec13FPath,
|
|
75
78
|
cloudSecBeneficialOwnersPath,
|
|
@@ -82,6 +85,7 @@ import {
|
|
|
82
85
|
cloudMarketSearchPath,
|
|
83
86
|
cloudMarketSymbolPath,
|
|
84
87
|
cloudNewsPath,
|
|
88
|
+
cloudNewsSearchPath,
|
|
85
89
|
cloudOptionsChainPath,
|
|
86
90
|
cloudSavedSearchPath,
|
|
87
91
|
cloudSavedSearchesPath,
|
|
@@ -120,8 +124,10 @@ import type {
|
|
|
120
124
|
CloudRiskReportPayload,
|
|
121
125
|
CloudCorporateActionsPayload,
|
|
122
126
|
CloudEconEventPayload,
|
|
127
|
+
CloudMacroReleaseDaysPayload,
|
|
123
128
|
CloudEquityDiagnosticMode,
|
|
124
129
|
CloudEquityDiagnosticResult,
|
|
130
|
+
CloudFredSeriesCatalogPayload,
|
|
125
131
|
CloudFredSeriesPayload,
|
|
126
132
|
CloudShillerPayload,
|
|
127
133
|
CloudFinancialsPayload,
|
|
@@ -414,6 +420,10 @@ export class CloudDataApi {
|
|
|
414
420
|
return this.request<CloudEconEventPayload[]>("/cloud/econ/calendar");
|
|
415
421
|
}
|
|
416
422
|
|
|
423
|
+
async getCloudMacroReleaseDays(): Promise<CloudMacroReleaseDaysPayload> {
|
|
424
|
+
return this.request<CloudMacroReleaseDaysPayload>("/cloud/econ/release-days");
|
|
425
|
+
}
|
|
426
|
+
|
|
417
427
|
async getCloudFredSeries(
|
|
418
428
|
seriesId: string,
|
|
419
429
|
params: CloudFredSeriesParams = {},
|
|
@@ -425,6 +435,11 @@ export class CloudDataApi {
|
|
|
425
435
|
);
|
|
426
436
|
}
|
|
427
437
|
|
|
438
|
+
/** Every series `getCloudFredSeries` serves. A server older than the list answers 404. */
|
|
439
|
+
async getCloudFredSeriesCatalog(): Promise<CloudFredSeriesCatalogPayload> {
|
|
440
|
+
return this.request<CloudFredSeriesCatalogPayload>("/cloud/econ/series");
|
|
441
|
+
}
|
|
442
|
+
|
|
428
443
|
async getCloudShiller(): Promise<CloudShillerPayload> {
|
|
429
444
|
return this.request<CloudShillerPayload>(cloudShillerPath());
|
|
430
445
|
}
|
|
@@ -483,12 +498,13 @@ export class CloudDataApi {
|
|
|
483
498
|
return this.request<CatalystStatus>("/cloud/catalysts/status");
|
|
484
499
|
}
|
|
485
500
|
|
|
486
|
-
|
|
487
|
-
|
|
501
|
+
/** `listing` names a listing abroad's venue and company; a US listing needs neither. */
|
|
502
|
+
async getCloudCompanyKpis(symbol: string, options: KpiQueryOptions = {}, listing: IssuerListingParams = {}): Promise<KpisPayload> {
|
|
503
|
+
return this.request<KpisPayload>(companyDisclosurePath("kpis", symbol, options, listing));
|
|
488
504
|
}
|
|
489
505
|
|
|
490
|
-
async getCloudCompanyGuidance(symbol: string, options: KpiQueryOptions = {}): Promise<GuidancePayload> {
|
|
491
|
-
return this.request<GuidancePayload>(companyDisclosurePath("guidance", symbol, options));
|
|
506
|
+
async getCloudCompanyGuidance(symbol: string, options: KpiQueryOptions = {}, listing: IssuerListingParams = {}): Promise<GuidancePayload> {
|
|
507
|
+
return this.request<GuidancePayload>(companyDisclosurePath("guidance", symbol, options, listing));
|
|
492
508
|
}
|
|
493
509
|
async getCloudPerpsBoard(query: PerpBoardQuery = {}): Promise<PerpBoardPayload> {
|
|
494
510
|
return this.request(`/cloud/perps/board?${new URLSearchParams(Object.entries(query).filter(([, value]) => value !== undefined).map(([key, value]) => [key, String(value)]))}`);
|
|
@@ -593,6 +609,15 @@ export class CloudDataApi {
|
|
|
593
609
|
return this.request<CloudCurveView>(`/cloud/econ/curves/${encodeURIComponent(curve)}${query}`, { signal: AbortSignal.timeout(30_000) });
|
|
594
610
|
}
|
|
595
611
|
|
|
612
|
+
/** One tenor of a curve from `from` (all stored sessions without one), oldest first. */
|
|
613
|
+
async getCloudCurveHistory(curve: CloudCurveId, tenor: string, from?: string | null): Promise<CloudCurveHistory> {
|
|
614
|
+
const query = new URLSearchParams({ tenor, ...(from ? { from } : {}) });
|
|
615
|
+
return this.request<CloudCurveHistory>(
|
|
616
|
+
`/cloud/econ/curves/${encodeURIComponent(curve)}/history?${query}`,
|
|
617
|
+
{ signal: AbortSignal.timeout(30_000) },
|
|
618
|
+
);
|
|
619
|
+
}
|
|
620
|
+
|
|
596
621
|
/** Each market's latest curve and the session before, each on its own date. */
|
|
597
622
|
async getCloudWorldCurves(): Promise<CloudWorldCurves> {
|
|
598
623
|
return this.request<CloudWorldCurves>("/cloud/econ/curves", { signal: AbortSignal.timeout(30_000) });
|
|
@@ -619,14 +644,12 @@ export class CloudDataApi {
|
|
|
619
644
|
return this.request<MoneyMarketsPayload>("/cloud/econ/money-markets", { signal: AbortSignal.timeout(45_000) });
|
|
620
645
|
}
|
|
621
646
|
|
|
622
|
-
async getCloudDebtMaturities(symbol: string): Promise<DebtMaturitiesPayload> {
|
|
623
|
-
|
|
624
|
-
return this.request<DebtMaturitiesPayload>(`/cloud/debt-maturities?${params}`, { signal: AbortSignal.timeout(45_000) });
|
|
647
|
+
async getCloudDebtMaturities(symbol: string, listing?: IssuerListingParams): Promise<DebtMaturitiesPayload> {
|
|
648
|
+
return this.request<DebtMaturitiesPayload>(cloudDebtMaturitiesPath(symbol, listing), { signal: AbortSignal.timeout(45_000) });
|
|
625
649
|
}
|
|
626
650
|
|
|
627
|
-
async getCloudRevenueBreakdown(symbol: string, view?: RevenueBreakdownView): Promise<RevenueBreakdownPayload> {
|
|
628
|
-
|
|
629
|
-
return this.request<RevenueBreakdownPayload>(`/cloud/revenue-breakdown?${params}`, { signal: AbortSignal.timeout(30_000) });
|
|
651
|
+
async getCloudRevenueBreakdown(symbol: string, view?: RevenueBreakdownView, listing?: IssuerListingParams): Promise<RevenueBreakdownPayload> {
|
|
652
|
+
return this.request<RevenueBreakdownPayload>(cloudRevenueBreakdownPath(symbol, view, listing), { signal: AbortSignal.timeout(30_000) });
|
|
630
653
|
}
|
|
631
654
|
|
|
632
655
|
async getCloudMnaDeals(params: MnaDealsParams = {}, options?: { signal?: AbortSignal }): Promise<MnaDealsPayload> {
|
|
@@ -690,6 +713,11 @@ export class CloudDataApi {
|
|
|
690
713
|
return this.request<FuturesCurvePayload>(`/cloud/futures/curve/${encodeURIComponent(root)}`, { signal: AbortSignal.timeout(60_000) });
|
|
691
714
|
}
|
|
692
715
|
|
|
716
|
+
/** What a futures symbol (GC=F, GCZ26, CL1) trades: its contract, terms and latest confirmed settlement. */
|
|
717
|
+
async getCloudFuturesContract(symbol: string): Promise<FuturesContractTermsPayload> {
|
|
718
|
+
return this.request<FuturesContractTermsPayload>(`/cloud/futures/contract/${encodeURIComponent(symbol)}`, { signal: AbortSignal.timeout(20_000) });
|
|
719
|
+
}
|
|
720
|
+
|
|
693
721
|
async getCloudFuturesCurveAsOf(root: string, date: string): Promise<FuturesCurveAsOfPayload> {
|
|
694
722
|
return this.request<FuturesCurveAsOfPayload>(`/cloud/futures/curve/${encodeURIComponent(root)}/as-of/${encodeURIComponent(date)}`,
|
|
695
723
|
{ signal: AbortSignal.timeout(30_000) });
|
|
@@ -756,44 +784,49 @@ export class CloudDataApi {
|
|
|
756
784
|
);
|
|
757
785
|
}
|
|
758
786
|
|
|
787
|
+
// A listing outside the US also sends its venue and company (listingAbroad).
|
|
759
788
|
async getProxyStatements(
|
|
760
789
|
ticker: string,
|
|
790
|
+
listing?: IssuerListingParams,
|
|
761
791
|
): Promise<CloudProxyStatementListPayload> {
|
|
762
792
|
return this.request<CloudProxyStatementListPayload>(
|
|
763
|
-
cloudProxyStatementsPath(ticker),
|
|
793
|
+
cloudProxyStatementsPath(ticker, listing),
|
|
764
794
|
);
|
|
765
795
|
}
|
|
766
796
|
|
|
767
797
|
async getProxyStatement(
|
|
768
798
|
ticker: string,
|
|
769
799
|
year: number,
|
|
800
|
+
listing?: IssuerListingParams,
|
|
770
801
|
): Promise<CloudProxyStatementPayload> {
|
|
771
802
|
return this.request<CloudProxyStatementPayload>(
|
|
772
|
-
cloudProxyStatementPath(ticker, year),
|
|
803
|
+
cloudProxyStatementPath(ticker, year, listing),
|
|
773
804
|
);
|
|
774
805
|
}
|
|
775
806
|
|
|
776
807
|
async getFilingEvents(
|
|
777
808
|
ticker: string,
|
|
778
809
|
limit?: number,
|
|
810
|
+
listing?: IssuerListingParams,
|
|
779
811
|
): Promise<{ ticker: string; events: CloudFilingEventPayload[] }> {
|
|
780
812
|
return this.request<{ ticker: string; events: CloudFilingEventPayload[] }>(
|
|
781
|
-
cloudFilingEventsPath(ticker, limit),
|
|
813
|
+
cloudFilingEventsPath(ticker, limit, listing),
|
|
782
814
|
);
|
|
783
815
|
}
|
|
784
816
|
|
|
785
|
-
async getRiskReports(ticker: string): Promise<CloudRiskReportListPayload> {
|
|
817
|
+
async getRiskReports(ticker: string, listing?: IssuerListingParams): Promise<CloudRiskReportListPayload> {
|
|
786
818
|
return this.request<CloudRiskReportListPayload>(
|
|
787
|
-
cloudRiskReportsPath(ticker),
|
|
819
|
+
cloudRiskReportsPath(ticker, listing),
|
|
788
820
|
);
|
|
789
821
|
}
|
|
790
822
|
|
|
791
823
|
async getRiskReport(
|
|
792
824
|
ticker: string,
|
|
793
825
|
year: number,
|
|
826
|
+
listing?: IssuerListingParams,
|
|
794
827
|
): Promise<CloudRiskReportPayload> {
|
|
795
828
|
return this.request<CloudRiskReportPayload>(
|
|
796
|
-
cloudRiskReportPath(ticker, year),
|
|
829
|
+
cloudRiskReportPath(ticker, year, listing),
|
|
797
830
|
);
|
|
798
831
|
}
|
|
799
832
|
|
|
@@ -908,6 +941,13 @@ export class CloudDataApi {
|
|
|
908
941
|
return this.request<CloudNewsListResponse>(cloudNewsPath(params));
|
|
909
942
|
}
|
|
910
943
|
|
|
944
|
+
async searchCloudNews(
|
|
945
|
+
query: string,
|
|
946
|
+
limit?: number,
|
|
947
|
+
): Promise<CloudNewsListResponse> {
|
|
948
|
+
return this.request<CloudNewsListResponse>(cloudNewsSearchPath(query, limit));
|
|
949
|
+
}
|
|
950
|
+
|
|
911
951
|
async getCloudNewsStory(storyId: string): Promise<CloudNewsPayload> {
|
|
912
952
|
return this.request<CloudNewsPayload>(
|
|
913
953
|
`/news/${encodeURIComponent(storyId)}`,
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import type { EarningsDateStatus, EarningsEpsBasis } from "../types/financials";
|
|
2
|
+
|
|
1
3
|
/** Before the open, during the session, after the close. */
|
|
2
4
|
export type EarningsTiming = "bmo" | "dmh" | "amc";
|
|
3
5
|
|
|
@@ -44,6 +46,8 @@ export interface EarningsReport {
|
|
|
44
46
|
revenueAnalysts: number | null;
|
|
45
47
|
implied: EarningsImpliedMove | null;
|
|
46
48
|
realized: EarningsRealizedMove | null;
|
|
49
|
+
/** Whether the date is out, announced or projected; absent from older servers. */
|
|
50
|
+
dateStatus?: EarningsDateStatus;
|
|
47
51
|
}
|
|
48
52
|
|
|
49
53
|
export interface EarningsCalendarReport extends EarningsReport {
|
|
@@ -61,6 +65,8 @@ export interface EarningsCalendarPayload {
|
|
|
61
65
|
|
|
62
66
|
interface EarningsHistoryReport extends EarningsReport {
|
|
63
67
|
revenueActual: number | null;
|
|
68
|
+
/** Null when the basis cannot be determined; absent from older servers. */
|
|
69
|
+
epsBasis?: EarningsEpsBasis | null;
|
|
64
70
|
}
|
|
65
71
|
|
|
66
72
|
export interface EarningsHistoryPayload {
|
|
@@ -1,3 +1,37 @@
|
|
|
1
|
+
/** What one contract of a root is, from the exchange's rulebook. */
|
|
2
|
+
export interface FuturesContractSpec {
|
|
3
|
+
/** What a quoted price counts: "USD / troy oz", "US cents / bushel", "index points". */
|
|
4
|
+
unit: string
|
|
5
|
+
/** One contract as the exchange words it: "100 troy oz", "$50 x index". */
|
|
6
|
+
size: string
|
|
7
|
+
/** US dollars a move of 1.0 in the quoted price makes on one contract. */
|
|
8
|
+
pointValue: number
|
|
9
|
+
/** The smallest outright price move, in the quoted unit. */
|
|
10
|
+
tick: number
|
|
11
|
+
/** US dollars one tick makes on one contract. */
|
|
12
|
+
tickValue: number
|
|
13
|
+
settlement: "physical" | "cash"
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
/** What a futures symbol trades: the contract behind it, its terms and its latest confirmed settlement. */
|
|
17
|
+
export interface FuturesContractTermsPayload {
|
|
18
|
+
/** The symbol asked for: GC=F, GCZ26 or CL1. */
|
|
19
|
+
symbol: string
|
|
20
|
+
root: string
|
|
21
|
+
name: string
|
|
22
|
+
/** The listed contract the symbol prices today (GCZ26 for GC=F); null where it cannot be placed. */
|
|
23
|
+
contract: string | null
|
|
24
|
+
contractSymbol: string | null
|
|
25
|
+
deliveryMonth: string | null
|
|
26
|
+
spec: FuturesContractSpec | null
|
|
27
|
+
lastTrade: string | null
|
|
28
|
+
firstNotice: string | null
|
|
29
|
+
/** Past first notice: a long can be assigned delivery. */
|
|
30
|
+
inDelivery: boolean
|
|
31
|
+
/** The newest exchange settlement confirmed for the contract, with its session. */
|
|
32
|
+
settlement: { price: number; date: string } | null
|
|
33
|
+
}
|
|
34
|
+
|
|
1
35
|
/** Gloom Cloud futures prices retain provider denomination and explicit quote units. */
|
|
2
36
|
export interface FuturesContract {
|
|
3
37
|
symbol: string
|
|
@@ -17,6 +51,18 @@ export interface FuturesContract {
|
|
|
17
51
|
samples: number
|
|
18
52
|
historyStart: string | null
|
|
19
53
|
historyEnd: string | null
|
|
54
|
+
/**
|
|
55
|
+
* The exchange settlement for the curve's settlementDate; null when none is
|
|
56
|
+
* confirmed for that session. `price` is the latest trade, never a settlement,
|
|
57
|
+
* except on a Cboe curve, whose prices are settlements.
|
|
58
|
+
*/
|
|
59
|
+
settlement?: number | null
|
|
60
|
+
/** The last trading day. */
|
|
61
|
+
lastTrade?: string | null
|
|
62
|
+
/** First notice day of a physically delivered contract; null where there is none. */
|
|
63
|
+
firstNotice?: string | null
|
|
64
|
+
/** Past first notice: a long can be assigned delivery. */
|
|
65
|
+
inDelivery?: boolean
|
|
20
66
|
}
|
|
21
67
|
|
|
22
68
|
export interface FuturesCurvePayload {
|
|
@@ -51,6 +97,10 @@ export interface FuturesCurvePayload {
|
|
|
51
97
|
state: "contango" | "backwardation" | "flat" | "unavailable"
|
|
52
98
|
}
|
|
53
99
|
gaps: string[]
|
|
100
|
+
/** The session the contracts' settlements are for; null when none is confirmed. */
|
|
101
|
+
settlementDate?: string | null
|
|
102
|
+
/** The root's contract terms; null where they are not listed. */
|
|
103
|
+
spec?: FuturesContractSpec | null
|
|
54
104
|
}
|
|
55
105
|
|
|
56
106
|
|
|
@@ -78,6 +128,12 @@ export interface FuturesCurveAsOfPayload {
|
|
|
78
128
|
/** When the price was made; older than tradeDate when the contract did not trade that day. */
|
|
79
129
|
asOf: string
|
|
80
130
|
stale: boolean
|
|
131
|
+
/** The price is the exchange settlement for tradeDate; otherwise that session's last trade or, when stale, an earlier price. */
|
|
132
|
+
settled?: boolean
|
|
133
|
+
lastTrade?: string | null
|
|
134
|
+
firstNotice?: string | null
|
|
135
|
+
inDelivery?: boolean
|
|
81
136
|
}>
|
|
82
137
|
gaps: string[]
|
|
138
|
+
spec?: FuturesContractSpec | null
|
|
83
139
|
}
|