gloomberb 0.18.3 → 0.18.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +8 -8
- package/README.zh-CN.md +11 -11
- package/bin/{gloomberb → gloom} +3 -1
- package/package.json +6 -2
- package/src/account/checkout-handoff.tsx +225 -0
- package/src/account/device-signin-dialog.tsx +2 -2
- package/src/account/device-signin.ts +2 -2
- package/src/account/upgrade-dialog.tsx +1 -1
- package/src/api-client/askg.ts +2 -2
- package/src/api-client/auth.ts +2 -2
- package/src/api-client/central-bank-rates.ts +6 -0
- package/src/api-client/collections.ts +5 -1
- package/src/api-client/cot.ts +2 -0
- package/src/api-client/crypto-etf-flows.ts +37 -0
- package/src/api-client/crypto-markets.ts +60 -0
- package/src/api-client/data.ts +84 -5
- package/src/api-client/doe.ts +15 -0
- package/src/api-client/equity-screener.ts +28 -0
- package/src/api-client/exchange-announcements.ts +38 -0
- package/src/api-client/fund-facts.ts +39 -0
- package/src/api-client/futures-curve.ts +9 -1
- package/src/api-client/hiring.ts +301 -0
- package/src/api-client/index.ts +22 -5
- package/src/api-client/market-discovery.ts +14 -0
- package/src/api-client/members.ts +6 -0
- package/src/api-client/mna.ts +6 -0
- package/src/api-client/paths.ts +18 -1
- package/src/api-client/request.ts +21 -4
- package/src/api-client/short-side-publications.ts +37 -0
- package/src/api-client/socket.ts +64 -4
- package/src/api-client/swap-curve.ts +35 -0
- package/src/api-client/themes.ts +7 -1
- package/src/api-client/types.ts +90 -2
- package/src/app/pane-runtime/plugin-bindings.ts +9 -2
- package/src/app/runtime/desktop-deeplink.ts +5 -5
- package/src/app/runtime/plugin-bindings.ts +2 -2
- package/src/app/runtime/startup.ts +13 -0
- package/src/app/star-prompt/status-line.tsx +2 -2
- package/src/architecture/core-builtin-allowlist.json +5 -2
- package/src/architecture/ui-literals-allowlist.json +3 -3
- package/src/architecture/ui-tokens-allowlist.json +1 -1
- package/src/brokers/broker-portfolio-sync.ts +37 -0
- package/src/brokers/directory.ts +11 -0
- package/src/brokers/logos.ts +3 -1
- package/src/brokers/signed-in/adapter.ts +304 -26
- package/src/brokers/signed-in/client.ts +14 -2
- package/src/brokers/signed-in/connect.ts +10 -2
- package/src/brokers/sync-broker-instance.ts +9 -1
- package/src/capabilities/chart-series.ts +22 -6
- package/src/cli/bank-section.ts +1 -1
- package/src/cli/base-converter.ts +23 -14
- package/src/cli/central-bank-events.ts +1 -1
- package/src/cli/command-options.ts +59 -4
- package/src/cli/commands/api.ts +9 -6
- package/src/cli/commands/broker.ts +2 -2
- package/src/cli/commands/command-utils.ts +2 -2
- package/src/cli/commands/crypto-hints.ts +7 -20
- package/src/cli/commands/fred-series.ts +4 -2
- package/src/cli/commands/keybindings.ts +2 -2
- package/src/cli/commands/market.ts +1117 -264
- package/src/cli/commands/news-hints.ts +2 -2
- package/src/cli/commands/news-search.ts +59 -6
- package/src/cli/commands/options-leaps.ts +41 -26
- package/src/cli/commands/overview.ts +121 -48
- package/src/cli/commands/plugins.ts +9 -9
- package/src/cli/commands/remote.ts +13 -10
- package/src/cli/commands/search.ts +64 -44
- package/src/cli/commands/system.ts +27 -19
- package/src/cli/commands/themes.ts +1 -1
- package/src/cli/commands/ticker.ts +192 -47
- package/src/cli/context.ts +3 -2
- package/src/cli/desktop-pane-shot-view.ts +2 -2
- package/src/cli/desktop-pane-shot.ts +1 -1
- package/src/cli/earnings-calendar.ts +4 -4
- package/src/cli/entry.ts +18 -1
- package/src/cli/errors.ts +20 -2
- package/src/cli/exit-codes.ts +1 -1
- package/src/cli/export-source.ts +10 -4
- package/src/cli/freshness.ts +2 -8
- package/src/cli/fx-forward.ts +130 -0
- package/src/cli/fx-pair.ts +10 -9
- package/src/cli/glossary.ts +64 -20
- package/src/cli/help.ts +19 -13
- package/src/cli/history-export.ts +126 -0
- package/src/cli/history-rows.ts +196 -43
- package/src/cli/index-roots.ts +5 -45
- package/src/cli/index.ts +24 -18
- package/src/cli/known-gaps.ts +118 -25
- package/src/cli/listing-arg.ts +300 -41
- package/src/cli/name-entries.ts +30 -18
- package/src/cli/native-smoke.ts +2 -0
- package/src/cli/not-a-ticker.ts +19 -9
- package/src/cli/opentui-libc.ts +5 -0
- package/src/cli/options.ts +12 -0
- package/src/cli/pane-functions/capabilities.ts +75 -20
- package/src/cli/pane-functions/catalog.ts +24 -23
- package/src/cli/pane-functions/discovery.ts +1 -1
- package/src/cli/pane-functions/dom.ts +10 -7
- package/src/cli/pane-functions/financial-ratio-shot.ts +2 -2
- package/src/cli/pane-functions/freshness.ts +174 -23
- package/src/cli/pane-functions/function-help.ts +66 -27
- package/src/cli/pane-functions/headless.ts +24 -11
- package/src/cli/pane-functions/index.ts +18 -16
- package/src/cli/pane-functions/options.ts +22 -2
- package/src/cli/pane-functions/report-notices.ts +12 -4
- package/src/cli/pane-functions/report.ts +5 -5
- package/src/cli/pane-functions/resolver.ts +47 -10
- package/src/cli/pane-functions/screenshot-assessment.ts +322 -0
- package/src/cli/pane-functions/screenshot-bridge.ts +152 -0
- package/src/cli/pane-functions/screenshot-chart-evidence.ts +396 -0
- package/src/cli/pane-functions/screenshot-data-evidence.ts +383 -0
- package/src/cli/pane-functions/screenshot-evidence.ts +1 -1
- package/src/cli/pane-functions/screenshot-payload.ts +453 -0
- package/src/cli/pane-functions/screenshot-render.ts +316 -0
- package/src/cli/pane-functions/screenshot-types.ts +162 -0
- package/src/cli/pane-functions/shot-options.ts +8 -3
- package/src/cli/peso-dollar-rates.ts +79 -0
- package/src/cli/quote-answer.ts +38 -3
- package/src/cli/report-tables.ts +61 -16
- package/src/cli/restore-plugins.ts +29 -14
- package/src/cli/result.ts +111 -22
- package/src/cli/series-search.ts +5 -5
- package/src/cli/statement-filings.ts +19 -0
- package/src/cli/suffixed-listing-rows.ts +49 -0
- package/src/cli/symbol-args.ts +50 -15
- package/src/cli/symbol-cells.ts +120 -0
- package/src/cli/symbol-list.ts +198 -68
- package/src/cli/symbol-rows.ts +131 -25
- package/src/cli/ticker-resolution.ts +108 -11
- package/src/cli/treasury-yields.ts +5 -5
- package/src/cli/types.ts +2 -0
- package/src/cli/uncovered-instrument.ts +3 -3
- package/src/cli/unknown-command.ts +6 -6
- package/src/components/chart/composite/chart-layout.ts +131 -0
- package/src/components/chart/composite/composite-chart.tsx +373 -16
- package/src/components/chart/composite/interactions.ts +7 -2
- package/src/components/chart/composite/legend.tsx +75 -3
- package/src/components/chart/composite/levels.ts +5 -0
- package/src/components/chart/composite/panel-gestures.ts +41 -0
- package/src/components/chart/composite/panel-labels.ts +2 -1
- package/src/components/chart/composite/panel-surface.tsx +305 -11
- package/src/components/chart/composite/price-axis-labels.tsx +27 -3
- package/src/components/chart/composite/rasterizer.ts +44 -19
- package/src/components/chart/composite/scene.ts +16 -4
- package/src/components/chart/composite/text-renderer.ts +48 -21
- package/src/components/chart/composite/toolbar.tsx +52 -5
- package/src/components/chart/composite/types.ts +13 -0
- package/src/components/chart/composite/use-composite-chart-keyboard.ts +120 -13
- package/src/components/chart/composite/use-composite-value-scales.ts +44 -0
- package/src/components/chart/composite/use-composite-viewport.ts +12 -3
- package/src/components/chart/composite/value-scale.ts +149 -0
- package/src/components/chart/composite/volume-profile-paint.ts +6 -3
- package/src/components/chart/core/pointer.ts +2 -0
- package/src/components/chart-table/index.ts +2 -0
- package/src/components/chart-table/read.tsx +74 -0
- package/src/components/command-bar/commands/collection-list.ts +41 -19
- package/src/components/command-bar/commands/collection.ts +9 -3
- package/src/components/command-bar/commands/direct/index.ts +1 -1
- package/src/components/command-bar/commands/direct/runtime.ts +3 -2
- package/src/components/command-bar/pane-templates/items.ts +59 -6
- package/src/components/command-bar/pane-templates/workflow.ts +10 -1
- package/src/components/command-bar/routes/root/plugin-install.ts +1 -1
- package/src/components/command-bar/routes/root/provider-search.ts +42 -11
- package/src/components/command-bar/routes/root/results.ts +18 -4
- package/src/components/command-bar/routes/root/runtime.ts +15 -3
- package/src/components/command-bar/routes/root/search-providers.ts +25 -2
- package/src/components/command-bar/routes/root/selection.ts +6 -1
- package/src/components/command-bar/routes/root/shortcut-feedback.ts +4 -1
- package/src/components/command-bar/routes/root/shortcuts.ts +30 -3
- package/src/components/command-bar/routes/ticker-search/results.ts +73 -4
- package/src/components/command-bar/selection-runtime.ts +50 -10
- package/src/components/command-bar/surface/index.tsx +24 -2
- package/src/components/command-bar/view-model.ts +7 -0
- package/src/components/command-bar/workflow/broker.ts +2 -2
- package/src/components/command-bar/workflow/collection-actions.ts +46 -7
- package/src/components/command-bar/workflow/collection-ticker.ts +32 -4
- package/src/components/command-bar/workflow/fields.ts +8 -2
- package/src/components/command-bar/workflow/ops.ts +18 -4
- package/src/components/command-bar/workflow/portfolio-position.ts +53 -4
- package/src/components/command-bar/workflow/submit.ts +3 -2
- package/src/components/command-bar/workflow/tickers.ts +5 -1
- package/src/components/company-logo.tsx +39 -0
- package/src/components/data-table/sections.ts +4 -2
- package/src/components/form-modal/confirm.tsx +2 -1
- package/src/components/form-modal/request.ts +5 -0
- package/src/components/form-modal/routes.ts +4 -1
- package/src/components/index.ts +12 -6
- package/src/components/layout/header.tsx +7 -6
- package/src/components/layout/market-summary.ts +9 -6
- package/src/components/layout/pane/capture-status.ts +1 -1
- package/src/components/layout/pane/footer/model.ts +11 -5
- package/src/components/layout/shell/chrome.ts +19 -6
- package/src/components/layout/shell/index.tsx +2 -1
- package/src/components/layout/shell/pane/layers.tsx +19 -1
- package/src/components/layout/status-bar.tsx +2 -2
- package/src/components/market-board/index.tsx +11 -3
- package/src/components/onboarding/onboarding-wizard.tsx +1 -0
- package/src/components/onboarding/portfolio-step/broker-setup-panel.tsx +2 -2
- package/src/components/onboarding/wizard-broker-sync.ts +4 -1
- package/src/components/pane-settings-dialog/desktop.tsx +20 -7
- package/src/components/pane-settings-dialog/tui.tsx +17 -9
- package/src/components/pane-settings-dialog/value.ts +8 -1
- package/src/components/pane-settings-dialog.tsx +44 -13
- package/src/components/sign-in-code-panel.tsx +27 -19
- package/src/components/ui/column-grid.tsx +48 -4
- package/src/components/ui/country-flag-art.tsx +180 -0
- package/src/components/ui/country-flag.tsx +118 -12
- package/src/components/ui/data-table/opentui/index.tsx +61 -2
- package/src/components/ui/data-table/opentui/model.ts +109 -2
- package/src/components/ui/data-table/types.ts +1 -1
- package/src/components/ui/display.tsx +5 -1
- package/src/components/ui/index.ts +3 -1
- package/src/components/ui/logo-mark.tsx +11 -2
- package/src/components/ui/query-bar.tsx +1 -1
- package/src/components/ui/row-notes.ts +79 -0
- package/src/core/state/app/layout.ts +4 -4
- package/src/data/cached-query.ts +8 -1
- package/src/data/config/chart-settings.ts +3 -3
- package/src/data/config/home.ts +10 -2
- package/src/data/config/layout.ts +4 -1
- package/src/data/config/store/node.ts +4 -0
- package/src/data/config/store/normalize.ts +13 -3
- package/src/data/config/store/portfolio-as-of-column.ts +2 -2
- package/src/data/json-storage.ts +2 -0
- package/src/data/saved-copies.ts +84 -0
- package/src/docs/snapshot.json +65 -32
- package/src/i18n/es.ts +29 -12
- package/src/i18n/ja.ts +29 -12
- package/src/i18n/ko.ts +29 -12
- package/src/i18n/zh-cn.ts +29 -12
- package/src/i18n/zh-tw.ts +29 -12
- package/src/layout/desks.ts +1 -1
- package/src/layout/launch-layout.ts +1 -1
- package/src/layout/pane-manager/floating-actions.ts +5 -3
- package/src/layout/pane-manager/floating.ts +43 -1
- package/src/layout/pane-manager/index.ts +2 -0
- package/src/layout/selected-ticker.ts +74 -0
- package/src/market-data/depositary-pair.ts +251 -0
- package/src/market-data/futures-board.ts +1 -1
- package/src/market-data/futures-contract.ts +124 -40
- package/src/market-data/fx-closes.ts +17 -2
- package/src/market-data/hooks.tsx +19 -11
- package/src/market-data/market/change-basis.ts +49 -7
- package/src/market-data/market/freshness.ts +34 -5
- package/src/market-data/market/period-return.ts +163 -0
- package/src/market-data/market/trading-sessions.ts +13 -0
- package/src/market-data/market/year-to-date.ts +8 -13
- package/src/market-data/performance.ts +20 -14
- package/src/market-data/perpetual-premium.ts +32 -0
- package/src/market-data/published-apac-sessions.ts +2 -1
- package/src/market-data/published-futures-sessions.ts +69 -0
- package/src/market-data/quotes/contributions.ts +5 -1
- package/src/market-data/quotes/freshness.ts +42 -0
- package/src/market-data/quotes/intraday-bar.ts +37 -0
- package/src/market-data/quotes/regular-session-valuation.ts +13 -8
- package/src/market-data/quotes/resolution.ts +4 -2
- package/src/market-data/tax-equivalent.ts +1 -1
- package/src/market-data/ticker-price-returns.ts +3 -1
- package/src/news/aggregator.ts +5 -1
- package/src/news/news-model.ts +4 -0
- package/src/news/types.ts +11 -0
- package/src/notifications/app-notifier.ts +1 -1
- package/src/plugins/auto-update.ts +2 -2
- package/src/plugins/builtin/account-management/index.tsx +1 -0
- package/src/plugins/builtin/account-management/pane.tsx +9 -8
- package/src/plugins/builtin/alerts/alert-engine.ts +29 -19
- package/src/plugins/builtin/alerts/calendar-events.ts +378 -0
- package/src/plugins/builtin/alerts/cli.ts +485 -76
- package/src/plugins/builtin/alerts/command.ts +5 -10
- package/src/plugins/builtin/alerts/event-rows.ts +9 -5
- package/src/plugins/builtin/alerts/events-pane.tsx +71 -56
- package/src/plugins/builtin/alerts/events.ts +107 -5
- package/src/plugins/builtin/alerts/fired-log.ts +78 -0
- package/src/plugins/builtin/alerts/format.ts +2 -1
- package/src/plugins/builtin/alerts/headless.ts +100 -39
- package/src/plugins/builtin/alerts/history-pane.tsx +105 -62
- package/src/plugins/builtin/alerts/history-rows.ts +89 -0
- package/src/plugins/builtin/alerts/index.tsx +45 -18
- package/src/plugins/builtin/alerts/iv-level.ts +365 -0
- package/src/plugins/builtin/alerts/levels.ts +3 -3
- package/src/plugins/builtin/alerts/pane.tsx +97 -29
- package/src/plugins/builtin/alerts/price.ts +35 -0
- package/src/plugins/builtin/alerts/quotes.ts +24 -0
- package/src/plugins/builtin/alerts/research-builder.ts +84 -11
- package/src/plugins/builtin/alerts/research-rules.ts +76 -3
- package/src/plugins/builtin/alerts/scheduled-check.ts +206 -32
- package/src/plugins/builtin/alerts/scheduled-sources.ts +26 -3
- package/src/plugins/builtin/alerts/scheduled.ts +188 -29
- package/src/plugins/builtin/alerts/storage.ts +13 -10
- package/src/plugins/builtin/alerts/targets.ts +12 -3
- package/src/plugins/builtin/analytics/index.tsx +8 -2
- package/src/plugins/builtin/analytics/metrics.ts +1 -1
- package/src/plugins/builtin/analytics/risk-book.ts +215 -0
- package/src/plugins/builtin/analytics/risk-client.ts +13 -6
- package/src/plugins/builtin/analytics/risk-headless.ts +55 -21
- package/src/plugins/builtin/analytics/risk-math.ts +6 -3
- package/src/plugins/builtin/analytics/risk-model.ts +297 -104
- package/src/plugins/builtin/analytics/risk-options.ts +17 -2
- package/src/plugins/builtin/analytics/risk-pane.tsx +97 -36
- package/src/plugins/builtin/attention/pane.tsx +6 -2
- package/src/plugins/builtin/awards/headless.ts +7 -3
- package/src/plugins/builtin/awards/model.ts +18 -0
- package/src/plugins/builtin/awards/pane.tsx +6 -3
- package/src/plugins/builtin/backtest/headless.ts +3 -3
- package/src/plugins/builtin/backtest/rules.ts +41 -5
- package/src/plugins/builtin/broker-manager/add-flow.tsx +12 -7
- package/src/plugins/builtin/broker-manager/detail.tsx +47 -19
- package/src/plugins/builtin/broker-manager/footer.ts +27 -11
- package/src/plugins/builtin/broker-manager/index.tsx +21 -12
- package/src/plugins/builtin/broker-manager/keyboard.ts +1 -1
- package/src/plugins/builtin/broker-manager/model.ts +12 -2
- package/src/plugins/builtin/broker-manager/pane-actions.tsx +183 -57
- package/src/plugins/builtin/broker-manager/table.ts +28 -12
- package/src/plugins/builtin/broker-trading/account-picker.tsx +2 -1
- package/src/plugins/builtin/broker-trading/chart-levels.ts +82 -13
- package/src/plugins/builtin/broker-trading/controller.ts +45 -13
- package/src/plugins/builtin/broker-trading/dock.tsx +22 -4
- package/src/plugins/builtin/broker-trading/headless.ts +2 -1
- package/src/plugins/builtin/broker-trading/index.tsx +7 -1
- package/src/plugins/builtin/broker-trading/linked-orders.ts +148 -0
- package/src/plugins/builtin/broker-trading/order-feed.ts +75 -7
- package/src/plugins/builtin/broker-trading/orders.tsx +109 -31
- package/src/plugins/builtin/broker-trading/overview-orders.tsx +9 -3
- package/src/plugins/builtin/broker-trading/pane-model.ts +30 -2
- package/src/plugins/builtin/broker-trading/pane.tsx +110 -23
- package/src/plugins/builtin/broker-trading/ticket-parts.tsx +36 -7
- package/src/plugins/builtin/broker-trading/ticket.tsx +112 -31
- package/src/plugins/builtin/buildout/cells.tsx +4 -0
- package/src/plugins/builtin/buildout/detail/index.tsx +5 -1
- package/src/plugins/builtin/buildout/detail/ui.tsx +7 -4
- package/src/plugins/builtin/buildout/pane/index.tsx +25 -12
- package/src/plugins/builtin/buildout/pane/status.tsx +0 -4
- package/src/plugins/builtin/builtin-plugin-meta.ts +1 -1
- package/src/plugins/builtin/catalysts/detail.tsx +3 -2
- package/src/plugins/builtin/catalysts/index.tsx +1 -1
- package/src/plugins/builtin/catalysts/model.ts +49 -4
- package/src/plugins/builtin/catalysts/pane.tsx +6 -8
- package/src/plugins/builtin/central-bank-rates/client.ts +5 -0
- package/src/plugins/builtin/central-bank-rates/headless.ts +36 -10
- package/src/plugins/builtin/central-bank-rates/model.ts +33 -8
- package/src/plugins/builtin/changelog/index.tsx +1 -0
- package/src/plugins/builtin/chart-composer/catalog-inventory.ts +1 -0
- package/src/plugins/builtin/chart-composer/chart-spec-edit.ts +2 -1
- package/src/plugins/builtin/chart-composer/chart-spec.ts +7 -0
- package/src/plugins/builtin/chart-composer/cli-options.ts +2 -5
- package/src/plugins/builtin/chart-composer/data-catalog-pane.tsx +2 -1
- package/src/plugins/builtin/chart-composer/editor/controller.ts +2 -0
- package/src/plugins/builtin/chart-composer/editor.tsx +4 -1
- package/src/plugins/builtin/chart-composer/headless-schema.ts +28 -26
- package/src/plugins/builtin/chart-composer/headless.ts +253 -35
- package/src/plugins/builtin/chart-composer/index.tsx +12 -2
- package/src/plugins/builtin/chart-composer/leverage-overlay.ts +142 -0
- package/src/plugins/builtin/chart-composer/pane.tsx +127 -28
- package/src/plugins/builtin/chart-composer/series-catalog.ts +1 -0
- package/src/plugins/builtin/chart-composer/series-expression.ts +65 -6
- package/src/plugins/builtin/chart-composer/session-history.ts +15 -21
- package/src/plugins/builtin/chart-composer/session-range.ts +4 -2
- package/src/plugins/builtin/chart-composer/settings.ts +31 -19
- package/src/plugins/builtin/chart-composer/use-series-catalog.ts +5 -6
- package/src/plugins/builtin/chart-composer/viewport-labels.ts +18 -8
- package/src/plugins/builtin/chat/attachments/model.ts +3 -1
- package/src/plugins/builtin/chat/content/index.tsx +1 -1
- package/src/plugins/builtin/chat/pane-links/open.ts +1 -1
- package/src/plugins/builtin/chat/people.ts +1 -1
- package/src/plugins/builtin/clinical-trials/client.ts +5 -2
- package/src/plugins/builtin/clinical-trials/model.ts +13 -4
- package/src/plugins/builtin/clinical-trials/pane.tsx +32 -12
- package/src/plugins/builtin/clinical-trials/ticker-sponsor.ts +17 -0
- package/src/plugins/builtin/cloud/askg/controller.ts +1 -1
- package/src/plugins/builtin/cloud/askg/lock-note.ts +1 -1
- package/src/plugins/builtin/cloud/askg/tool-display.ts +1 -1
- package/src/plugins/builtin/cloud/auth-commands.ts +3 -3
- package/src/plugins/builtin/cloud/team/pane-sections.tsx +105 -47
- package/src/plugins/builtin/cloud/team/pane-ui.tsx +42 -4
- package/src/plugins/builtin/cloud/team/pane.tsx +204 -64
- package/src/plugins/builtin/cloud/thesis/store.ts +45 -22
- package/src/plugins/builtin/cloud-tweets/registration.ts +1 -0
- package/src/plugins/builtin/commodities-energy/index.tsx +29 -2
- package/src/plugins/builtin/commodities-energy/view-state.ts +2 -0
- package/src/plugins/builtin/commodity-balances/pane.tsx +11 -4
- package/src/plugins/builtin/company-attention/app-rank.tsx +7 -5
- package/src/plugins/builtin/company-attention/building-model.ts +222 -0
- package/src/plugins/builtin/company-attention/building.tsx +172 -0
- package/src/plugins/builtin/company-attention/client.ts +117 -1
- package/src/plugins/builtin/company-attention/evidence.ts +16 -3
- package/src/plugins/builtin/company-attention/headless.ts +101 -5
- package/src/plugins/builtin/company-attention/index.tsx +6 -3
- package/src/plugins/builtin/company-attention/model.ts +33 -7
- package/src/plugins/builtin/company-attention/moves-model.ts +253 -0
- package/src/plugins/builtin/company-attention/moves.tsx +159 -0
- package/src/plugins/builtin/company-attention/pane.tsx +79 -23
- package/src/plugins/builtin/company-attention/signals-model.ts +229 -0
- package/src/plugins/builtin/company-attention/signals.tsx +160 -0
- package/src/plugins/builtin/company-kpis/headless.ts +3 -2
- package/src/plugins/builtin/company-kpis/model.ts +2 -2
- package/src/plugins/builtin/company-kpis/pane.tsx +1 -1
- package/src/plugins/builtin/composite-plugins.ts +2 -1
- package/src/plugins/builtin/congress-trades/headless.ts +1 -1
- package/src/plugins/builtin/connections/index.ts +1 -0
- package/src/plugins/builtin/correlation/headless-schema.ts +3 -2
- package/src/plugins/builtin/correlation/headless.ts +5 -3
- package/src/plugins/builtin/cot/headless.ts +28 -6
- package/src/plugins/builtin/cot/model.ts +12 -0
- package/src/plugins/builtin/cot/pane.tsx +3 -2
- package/src/plugins/builtin/cpi/headless.ts +5 -1
- package/src/plugins/builtin/cpi/pane.tsx +11 -9
- package/src/plugins/builtin/credit-boards/model.ts +2 -0
- package/src/plugins/builtin/credit-documents/headless.ts +1 -1
- package/src/plugins/builtin/crypto-board/client.ts +86 -0
- package/src/plugins/builtin/crypto-board/defi-view.tsx +218 -0
- package/src/plugins/builtin/crypto-board/defi.ts +239 -0
- package/src/plugins/builtin/crypto-board/headless.ts +117 -6
- package/src/plugins/builtin/crypto-board/index.tsx +8 -3
- package/src/plugins/builtin/crypto-board/model.ts +40 -8
- package/src/plugins/builtin/crypto-board/pane.tsx +55 -21
- package/src/plugins/builtin/crypto-board/series.ts +19 -1
- package/src/plugins/builtin/crypto-etf-flows/client.ts +60 -0
- package/src/plugins/builtin/crypto-etf-flows/headless.ts +132 -0
- package/src/plugins/builtin/crypto-etf-flows/index.tsx +44 -0
- package/src/plugins/builtin/crypto-etf-flows/model.ts +121 -0
- package/src/plugins/builtin/crypto-etf-flows/pane.tsx +193 -0
- package/src/plugins/builtin/debug/index.tsx +1 -0
- package/src/plugins/builtin/dividend-yield/index.tsx +1 -1
- package/src/plugins/builtin/docs/index.tsx +1 -1
- package/src/plugins/builtin/docs/pane.tsx +2 -2
- package/src/plugins/builtin/docs/targets.ts +1 -1
- package/src/plugins/builtin/doe/client.ts +5 -1
- package/src/plugins/builtin/doe/headless.ts +12 -6
- package/src/plugins/builtin/doe/model.ts +43 -6
- package/src/plugins/builtin/doe/pane.tsx +18 -11
- package/src/plugins/builtin/earnings/board-model.ts +13 -6
- package/src/plugins/builtin/earnings/board-table.ts +4 -1
- package/src/plugins/builtin/earnings/board.tsx +253 -50
- package/src/plugins/builtin/earnings/calendar-model.ts +188 -0
- package/src/plugins/builtin/earnings/calendar.tsx +338 -0
- package/src/plugins/builtin/earnings/client.ts +4 -3
- package/src/plugins/builtin/earnings/headless.ts +53 -15
- package/src/plugins/builtin/earnings/history-model.ts +53 -36
- package/src/plugins/builtin/earnings/index.tsx +15 -22
- package/src/plugins/builtin/earnings/model.ts +17 -12
- package/src/plugins/builtin/earnings/scope.ts +89 -0
- package/src/plugins/builtin/earnings-calls/calendar.tsx +310 -0
- package/src/plugins/builtin/earnings-calls/data.ts +146 -2
- package/src/plugins/builtin/earnings-calls/headless.ts +151 -9
- package/src/plugins/builtin/earnings-calls/index.tsx +3 -3
- package/src/plugins/builtin/earnings-calls/lock-note.ts +1 -1
- package/src/plugins/builtin/earnings-calls/pane.tsx +149 -31
- package/src/plugins/builtin/earnings-calls/upcoming.ts +195 -0
- package/src/plugins/builtin/earnings-ripple/pane.tsx +10 -5
- package/src/plugins/builtin/econ/calendar-model.ts +132 -20
- package/src/plugins/builtin/econ/detail-view.tsx +48 -10
- package/src/plugins/builtin/econ/fred-catalog.ts +23 -6
- package/src/plugins/builtin/econ/fred-series-map.ts +4 -0
- package/src/plugins/builtin/econ/index.tsx +112 -25
- package/src/plugins/builtin/econ/print-watch.ts +2 -1
- package/src/plugins/builtin/econ/types.ts +32 -1
- package/src/plugins/builtin/econ-statistics/client.ts +16 -3
- package/src/plugins/builtin/econ-statistics/defs.ts +4 -0
- package/src/plugins/builtin/econ-statistics/detail.tsx +2 -2
- package/src/plugins/builtin/econ-statistics/headless.ts +13 -2
- package/src/plugins/builtin/econ-statistics/index.tsx +3 -3
- package/src/plugins/builtin/econ-statistics/pane.tsx +2 -1
- package/src/plugins/builtin/econ-statistics/stats.ts +103 -0
- package/src/plugins/builtin/econ-statistics/view.ts +16 -1
- package/src/plugins/builtin/equity-screener/client.ts +21 -3
- package/src/plugins/builtin/equity-screener/headless.ts +68 -6
- package/src/plugins/builtin/equity-screener/live.ts +1 -1
- package/src/plugins/builtin/equity-screener/model.ts +6 -0
- package/src/plugins/builtin/equity-screener/pane.tsx +45 -10
- package/src/plugins/builtin/equity-screener/screen-check.ts +90 -0
- package/src/plugins/builtin/equity-screener/ticker-check.tsx +148 -0
- package/src/plugins/builtin/estimate-revisions/headless.ts +3 -1
- package/src/plugins/builtin/estimate-revisions/lock-note.ts +3 -3
- package/src/plugins/builtin/estimate-revisions/model.ts +8 -10
- package/src/plugins/builtin/exposure/headless.ts +51 -6
- package/src/plugins/builtin/exposure/index.tsx +28 -2
- package/src/plugins/builtin/exposure/model.ts +7 -0
- package/src/plugins/builtin/exposure/pane.tsx +6 -1
- package/src/plugins/builtin/fear-greed/index.tsx +1 -1
- package/src/plugins/builtin/filing-events/index.tsx +1 -1
- package/src/plugins/builtin/futures/model.ts +10 -9
- package/src/plugins/builtin/futures/returns.ts +8 -36
- package/src/plugins/builtin/futures/table.tsx +1 -1
- package/src/plugins/builtin/futures-curve/client.ts +40 -9
- package/src/plugins/builtin/futures-curve/headless.ts +39 -17
- package/src/plugins/builtin/futures-curve/model.ts +258 -69
- package/src/plugins/builtin/futures-curve/pane.tsx +46 -17
- package/src/plugins/builtin/fx-matrix/client.ts +15 -8
- package/src/plugins/builtin/fx-matrix/headless.ts +32 -14
- package/src/plugins/builtin/fx-matrix/index.tsx +13 -11
- package/src/plugins/builtin/fx-matrix/live-legs.ts +22 -0
- package/src/plugins/builtin/fx-matrix/settings.ts +2 -1
- package/src/plugins/builtin/gpu/headless.ts +9 -4
- package/src/plugins/builtin/help/index.tsx +13 -3
- package/src/plugins/builtin/holders/beneficial-model.ts +8 -11
- package/src/plugins/builtin/holders/beneficial-report.ts +6 -5
- package/src/plugins/builtin/holders/beneficial-view.tsx +7 -3
- package/src/plugins/builtin/holders/client.ts +13 -1
- package/src/plugins/builtin/holders/format.ts +28 -17
- package/src/plugins/builtin/holders/headless.ts +46 -7
- package/src/plugins/builtin/holders/index-holders.ts +264 -0
- package/src/plugins/builtin/holders/pane.tsx +79 -15
- package/src/plugins/builtin/holders/report-rows.ts +35 -7
- package/src/plugins/builtin/holders/table-model.ts +2 -1
- package/src/plugins/builtin/holders/treemap.tsx +2 -2
- package/src/plugins/builtin/insider/headless.ts +1 -1
- package/src/plugins/builtin/insider/signals-client.ts +1 -1
- package/src/plugins/builtin/insider/signals.tsx +1 -1
- package/src/plugins/builtin/ipo-calendar/pane.tsx +7 -4
- package/src/plugins/builtin/iv-history/client.ts +20 -0
- package/src/plugins/builtin/iv-history/headless.ts +4 -4
- package/src/plugins/builtin/iv-history/index.tsx +1 -1
- package/src/plugins/builtin/iv-history/model.ts +13 -4
- package/src/plugins/builtin/iv-history/series.ts +3 -1
- package/src/plugins/builtin/jobs/lock-note.ts +1 -1
- package/src/plugins/builtin/jobs/model.ts +4 -15
- package/src/plugins/builtin/jobs/pane.tsx +7 -5
- package/src/plugins/builtin/jobs/share-bars.tsx +11 -5
- package/src/plugins/builtin/jodi/pane.tsx +10 -4
- package/src/plugins/builtin/layout-manager/index.tsx +1 -0
- package/src/plugins/builtin/macro-day/headless.ts +20 -7
- package/src/plugins/builtin/macro-day/index.tsx +3 -2
- package/src/plugins/builtin/macro-day/model.ts +29 -8
- package/src/plugins/builtin/macro-day/pane.tsx +46 -10
- package/src/plugins/builtin/macro-day/releases.ts +55 -13
- package/src/plugins/builtin/market-heatmap/data.ts +9 -2
- package/src/plugins/builtin/market-heatmap/evidence.ts +1 -1
- package/src/plugins/builtin/market-heatmap/headless.ts +9 -6
- package/src/plugins/builtin/market-heatmap/index.tsx +3 -3
- package/src/plugins/builtin/market-heatmap/model.ts +10 -7
- package/src/plugins/builtin/market-movers/client.ts +33 -19
- package/src/plugins/builtin/market-movers/headless.ts +8 -2
- package/src/plugins/builtin/market-movers/index.tsx +16 -10
- package/src/plugins/builtin/market-movers/screener.ts +29 -8
- package/src/plugins/builtin/market-movers/session-body.tsx +4 -2
- package/src/plugins/builtin/market-movers/session-table.ts +4 -2
- package/src/plugins/builtin/market-movers/table.ts +4 -1
- package/src/plugins/builtin/market-valuation/headless.ts +2 -0
- package/src/plugins/builtin/market-valuation/view.ts +5 -0
- package/src/plugins/builtin/members/headless.ts +6 -5
- package/src/plugins/builtin/members/pane.tsx +11 -4
- package/src/plugins/builtin/mna/client.ts +1 -0
- package/src/plugins/builtin/mna/detail.tsx +20 -32
- package/src/plugins/builtin/mna/distress/detail.tsx +16 -4
- package/src/plugins/builtin/mna/distress/model.ts +3 -2
- package/src/plugins/builtin/mna/distress/pane.tsx +7 -4
- package/src/plugins/builtin/mna/headless.ts +6 -13
- package/src/plugins/builtin/mna/model.ts +93 -15
- package/src/plugins/builtin/mna/pane.tsx +5 -4
- package/src/plugins/builtin/news/headless.ts +12 -6
- package/src/plugins/builtin/news/index.tsx +10 -1
- package/src/plugins/builtin/news/wire/index.tsx +3 -2
- package/src/plugins/builtin/news/wire/news/command-bar-search.ts +26 -10
- package/src/plugins/builtin/news/wire/news/query-presets.ts +6 -2
- package/src/plugins/builtin/news/wire/rss/cli.ts +3 -3
- package/src/plugins/builtin/notes/cli.ts +49 -14
- package/src/plugins/builtin/openfda/pane.tsx +1 -1
- package/src/plugins/builtin/options/carry.ts +2 -2
- package/src/plugins/builtin/options/index.tsx +1 -1
- package/src/plugins/builtin/options/view.tsx +10 -10
- package/src/plugins/builtin/options-calculator/headless.ts +46 -7
- package/src/plugins/builtin/options-scenario/client.ts +123 -28
- package/src/plugins/builtin/options-scenario/collar.ts +8 -6
- package/src/plugins/builtin/options-scenario/csp-screen-headless.ts +127 -0
- package/src/plugins/builtin/options-scenario/csp-screen-pane.tsx +165 -0
- package/src/plugins/builtin/options-scenario/csp-screen.ts +258 -0
- package/src/plugins/builtin/options-scenario/csp.ts +101 -21
- package/src/plugins/builtin/options-scenario/headless.ts +36 -15
- package/src/plugins/builtin/options-scenario/hedge.ts +20 -14
- package/src/plugins/builtin/options-scenario/index.tsx +28 -3
- package/src/plugins/builtin/options-scenario/model.ts +13 -0
- package/src/plugins/builtin/options-scenario/pane.tsx +9 -5
- package/src/plugins/builtin/perps/equity-row.tsx +11 -3
- package/src/plugins/builtin/perps/freshness.ts +8 -5
- package/src/plugins/builtin/perps/headless.ts +3 -1
- package/src/plugins/builtin/perps/list-perpetuals.ts +25 -4
- package/src/plugins/builtin/perps/live-rows.ts +161 -0
- package/src/plugins/builtin/perps/markets-section.tsx +154 -0
- package/src/plugins/builtin/perps/pane.tsx +36 -17
- package/src/plugins/builtin/perps/venue-markets.ts +96 -0
- package/src/plugins/builtin/plugin-marketplace/index.tsx +2 -1
- package/src/plugins/builtin/plugin-marketplace/pane.tsx +143 -59
- package/src/plugins/builtin/portfolio-list/cli/bulk-symbols.ts +72 -24
- package/src/plugins/builtin/portfolio-list/cli/portfolio-command.ts +158 -141
- package/src/plugins/builtin/portfolio-list/cli/render.ts +49 -20
- package/src/plugins/builtin/portfolio-list/cli/shared.ts +3 -3
- package/src/plugins/builtin/portfolio-list/cli/watchlist-command.ts +29 -24
- package/src/plugins/builtin/portfolio-list/headless.ts +6 -3
- package/src/plugins/builtin/portfolio-list/income.ts +13 -2
- package/src/plugins/builtin/portfolio-list/index.tsx +9 -2
- package/src/plugins/builtin/portfolio-list/pane/index.tsx +21 -8
- package/src/plugins/builtin/portfolio-list/pane/purchase-date-fx.ts +46 -0
- package/src/plugins/builtin/portfolio-list/summary/live-accounts.ts +16 -9
- package/src/plugins/builtin/portfolio-list/summary/totals.ts +2 -15
- package/src/plugins/builtin/power/client.ts +4 -1
- package/src/plugins/builtin/power/evidence.ts +22 -7
- package/src/plugins/builtin/power/gas.tsx +5 -1
- package/src/plugins/builtin/power/pane.tsx +8 -1
- package/src/plugins/builtin/power/prices.tsx +10 -3
- package/src/plugins/builtin/research/analyst-headless.ts +25 -8
- package/src/plugins/builtin/research/analyst-model.ts +68 -3
- package/src/plugins/builtin/research/corporate-actions-pane.tsx +63 -14
- package/src/plugins/builtin/research/event-model.ts +3 -1
- package/src/plugins/builtin/research/event-sources.ts +12 -4
- package/src/plugins/builtin/research/index.tsx +2 -1
- package/src/plugins/builtin/research/relative-valuation-basis.ts +58 -0
- package/src/plugins/builtin/research/relative-valuation-columns.ts +31 -2
- package/src/plugins/builtin/research/relative-valuation-currency.ts +12 -5
- package/src/plugins/builtin/research/relative-valuation-headless.ts +84 -26
- package/src/plugins/builtin/research/relative-valuation-model.ts +88 -19
- package/src/plugins/builtin/research/relative-valuation-pane.tsx +76 -9
- package/src/plugins/builtin/research/relative-valuation-peers.ts +1 -1
- package/src/plugins/builtin/reverse-dcf/model.ts +6 -2
- package/src/plugins/builtin/risk-factors/index.tsx +2 -2
- package/src/plugins/builtin/scanner/lock-note.ts +1 -1
- package/src/plugins/builtin/sec/forms.ts +13 -0
- package/src/plugins/builtin/sec/fund-abroad.ts +32 -0
- package/src/plugins/builtin/sec/fund-facts.ts +68 -8
- package/src/plugins/builtin/sec/headless.ts +85 -8
- package/src/plugins/builtin/sec/index.tsx +58 -12
- package/src/plugins/builtin/sectors/client.ts +2 -1
- package/src/plugins/builtin/sectors/sector-model.ts +11 -15
- package/src/plugins/builtin/series-inventory.ts +2 -0
- package/src/plugins/builtin/shared/broker-reconnect.ts +107 -22
- package/src/plugins/builtin/shared/cloud-upgrade.ts +34 -6
- package/src/plugins/builtin/shared/earnings-calendar.ts +375 -0
- package/src/plugins/builtin/{earnings/estimate-basis.ts → shared/earnings-estimate-basis.ts} +1 -1
- package/src/plugins/builtin/shared/earnings-report.ts +3 -3
- package/src/plugins/builtin/shared/fx-rate-freshness.ts +23 -1
- package/src/plugins/builtin/shared/job-posting.ts +129 -0
- package/src/plugins/builtin/shared/pro-lock-note.ts +3 -3
- package/src/plugins/builtin/shared/report-freshness.ts +3 -0
- package/src/plugins/builtin/shared/research-trading.tsx +21 -0
- package/src/plugins/builtin/shared/series-cache.ts +2 -0
- package/src/plugins/builtin/shared/ticker-surface.ts +2 -1
- package/src/plugins/builtin/short-interest/client.ts +2 -0
- package/src/plugins/builtin/short-interest/headless.ts +41 -12
- package/src/plugins/builtin/short-interest/index.tsx +23 -1
- package/src/plugins/builtin/short-interest/model.ts +70 -19
- package/src/plugins/builtin/short-interest/pane.tsx +19 -2
- package/src/plugins/builtin/short-interest/publications-client.ts +82 -0
- package/src/plugins/builtin/short-interest/publications-headless.ts +29 -0
- package/src/plugins/builtin/short-interest/publications-model.ts +50 -0
- package/src/plugins/builtin/short-interest/publications-pane.tsx +66 -0
- package/src/plugins/builtin/short-interest/schedule.ts +35 -2
- package/src/plugins/builtin/short-interest/surface.tsx +11 -4
- package/src/plugins/builtin/short-interest/types.ts +9 -0
- package/src/plugins/builtin/short-interest/watch-client.ts +14 -8
- package/src/plugins/builtin/short-interest/watch-model.ts +12 -25
- package/src/plugins/builtin/short-interest/watch-pane.tsx +5 -1
- package/src/plugins/builtin/supply-chain/flow.tsx +33 -9
- package/src/plugins/builtin/supply-chain/model.ts +51 -3
- package/src/plugins/builtin/supply-chain/pane.tsx +78 -39
- package/src/plugins/builtin/supply-chain/row-evidence.tsx +1 -1
- package/src/plugins/builtin/themes/headless.ts +8 -5
- package/src/plugins/builtin/themes/model.ts +14 -4
- package/src/plugins/builtin/themes/pane.tsx +24 -5
- package/src/plugins/builtin/thirteenf/headless.ts +5 -5
- package/src/plugins/builtin/thirteenf/signals.ts +3 -1
- package/src/plugins/builtin/ticker-detail/adr-pair/headless.ts +123 -0
- package/src/plugins/builtin/ticker-detail/adr-pair/model.ts +132 -0
- package/src/plugins/builtin/ticker-detail/adr-pair/tab.tsx +87 -0
- package/src/plugins/builtin/ticker-detail/data-panes/historical-prices.tsx +40 -26
- package/src/plugins/builtin/ticker-detail/data-panes/history-bars.ts +8 -4
- package/src/plugins/builtin/ticker-detail/data-panes/returns-history.ts +67 -3
- package/src/plugins/builtin/ticker-detail/data-panes/returns-model.ts +112 -5
- package/src/plugins/builtin/ticker-detail/data-panes/returns-pane.tsx +17 -2
- package/src/plugins/builtin/ticker-detail/financials/aggregation.ts +21 -7
- package/src/plugins/builtin/ticker-detail/financials/model.ts +36 -1
- package/src/plugins/builtin/ticker-detail/financials/offerings.ts +56 -0
- package/src/plugins/builtin/ticker-detail/financials/ratios.ts +62 -13
- package/src/plugins/builtin/ticker-detail/financials/tab.tsx +30 -4
- package/src/plugins/builtin/ticker-detail/headless-schema.ts +14 -2
- package/src/plugins/builtin/ticker-detail/headless.ts +148 -35
- package/src/plugins/builtin/ticker-detail/index.tsx +37 -5
- package/src/plugins/builtin/ticker-detail/overview/model.ts +65 -10
- package/src/plugins/builtin/ticker-detail/overview/pane.tsx +9 -1
- package/src/plugins/builtin/ticker-detail/overview-tab.tsx +68 -11
- package/src/plugins/builtin/ticker-detail/pane.tsx +11 -0
- package/src/plugins/builtin/ticker-detail/quote-footer.ts +8 -3
- package/src/plugins/builtin/ticker-detail/research-tabs.ts +11 -0
- package/src/plugins/builtin/vol-surface/client.ts +5 -4
- package/src/plugins/builtin/vol-surface/headless.ts +12 -3
- package/src/plugins/builtin/vol-surface/model.ts +4 -2
- package/src/plugins/builtin/volatility/model.ts +5 -10
- package/src/plugins/builtin/world-venue-map/basemap-layer.tsx +4 -3
- package/src/plugins/builtin/world-venue-map/basemap.ts +3 -1
- package/src/plugins/builtin/world-venue-map/chokepoint-chart.ts +40 -0
- package/src/plugins/builtin/world-venue-map/evidence.ts +1 -1
- package/src/plugins/builtin/world-venue-map/geo-series.ts +90 -11
- package/src/plugins/builtin/world-venue-map/headless.ts +1 -1
- package/src/plugins/builtin/world-venue-map/index.ts +3 -26
- package/src/plugins/builtin/world-venue-map/layers.ts +1 -1
- package/src/plugins/builtin/world-venue-map/map.tsx +2 -1
- package/src/plugins/builtin/world-venue-map/pane.tsx +4 -2
- package/src/plugins/builtin/world-venue-map/venue-header.tsx +15 -4
- package/src/plugins/builtin/yield-curve/client.ts +25 -0
- package/src/plugins/builtin/yield-curve/curves.ts +7 -4
- package/src/plugins/builtin/yield-curve/headless.ts +38 -4
- package/src/plugins/builtin/yield-curve/history.ts +4 -3
- package/src/plugins/builtin/yield-curve/index.tsx +12 -6
- package/src/plugins/builtin/yield-curve/swaps-model.ts +93 -0
- package/src/plugins/builtin/yield-curve/swaps.tsx +99 -0
- package/src/plugins/bundle.ts +1 -1
- package/src/plugins/catalog-browser.ts +2 -1
- package/src/plugins/compat.ts +3 -3
- package/src/plugins/dependencies.ts +75 -14
- package/src/plugins/extracted-plugins.ts +132 -34
- package/src/plugins/host-link.ts +149 -34
- package/src/plugins/installer.ts +35 -10
- package/src/plugins/loader.ts +206 -38
- package/src/plugins/manager-node.ts +2 -2
- package/src/plugins/marketplace/deactivation.ts +22 -0
- package/src/plugins/marketplace/model.ts +2 -2
- package/src/plugins/marketplace/packs.ts +1 -1
- package/src/plugins/ownership.ts +1 -1
- package/src/plugins/peer-retry.ts +155 -0
- package/src/plugins/registry/contributions.ts +3 -1
- package/src/plugins/registry/index.ts +4 -3
- package/src/plugins/registry/plugin-state.ts +3 -0
- package/src/plugins/seed-notice.ts +20 -0
- package/src/plugins/shortcut-argument.ts +39 -0
- package/src/portfolio/allocation.ts +1 -1
- package/src/portfolio/collection-name.ts +31 -0
- package/src/portfolio/column-values.ts +10 -8
- package/src/portfolio/cost-fx.ts +296 -19
- package/src/portfolio/manual-lots.ts +75 -0
- package/src/portfolio/mutations.ts +60 -22
- package/src/portfolio/suffixed-listings.ts +209 -0
- package/src/portfolio/totals-currency.ts +24 -0
- package/src/public/__snapshots__/public-api.test.ts.snap +14 -0
- package/src/public/time-series.ts +11 -8
- package/src/remote/schema.ts +1 -1
- package/src/renderers/browser/config-host.ts +3 -0
- package/src/renderers/browser/main.tsx +23 -3
- package/src/renderers/dom/boot-frame-page.ts +187 -0
- package/src/renderers/dom/boot-frame.ts +237 -0
- package/src/renderers/dom/build-assets.ts +46 -8
- package/src/renderers/dom/dom-ui-host.tsx +4 -29
- package/src/renderers/dom/host/ascii-text.ts +16 -2
- package/src/renderers/dom/host/box.tsx +43 -2
- package/src/renderers/dom/host/chart-surface.tsx +2 -0
- package/src/renderers/dom/host/hls.chunk.ts +3 -0
- package/src/renderers/dom/host/image-surface.tsx +49 -0
- package/src/renderers/dom/host/media-surface.tsx +24 -18
- package/src/renderers/dom/host/mouse.ts +30 -0
- package/src/renderers/dom/host/size-observer.ts +1 -1
- package/src/renderers/dom/host/style.ts +1 -1
- package/src/renderers/dom/styles.css +76 -0
- package/src/renderers/dom/test-utils.tsx +2 -1
- package/src/renderers/electrobun/bun/application-menu/index.ts +3 -3
- package/src/renderers/electrobun/bun/desktop/backend-requests.ts +3 -0
- package/src/renderers/electrobun/bun/desktop/backend.ts +46 -3
- package/src/renderers/electrobun/bun/desktop/detached-windows.ts +1 -1
- package/src/renderers/electrobun/bun/desktop/host-requests.ts +9 -3
- package/src/renderers/electrobun/bun/desktop/initialization.ts +81 -18
- package/src/renderers/electrobun/bun/external-plugins.ts +29 -7
- package/src/renderers/electrobun/bun/index.ts +11 -1
- package/src/renderers/electrobun/bun/window/boot-frame.ts +67 -0
- package/src/renderers/electrobun/bun/window/create.ts +4 -1
- package/src/renderers/electrobun/shared/boot-frame.ts +7 -0
- package/src/renderers/electrobun/shared/protocol.ts +6 -1
- package/src/renderers/electrobun/view/cli-pane-shot-entry.tsx +1 -1
- package/src/renderers/electrobun/view/config-host.ts +3 -0
- package/src/renderers/electrobun/view/fatal-screen.tsx +1 -1
- package/src/renderers/electrobun/view/main.tsx +30 -4
- package/src/renderers/electrobun/view/news-source.ts +5 -5
- package/src/renderers/electrobun/view/remote/asset-data-client.ts +1 -1
- package/src/renderers/electrobun/view/ui-host.tsx +1 -1
- package/src/renderers/opentui/browser-open.ts +88 -0
- package/src/renderers/opentui/host.tsx +5 -14
- package/src/renderers/opentui/image/loader.ts +3 -2
- package/src/renderers/opentui/native-smoke.ts +10 -1
- package/src/renderers/opentui/pane-image/index.ts +2 -1
- package/src/renderers/opentui/render-lib.ts +253 -0
- package/src/renderers/opentui/render-timing-smoke.ts +1 -1
- package/src/renderers/opentui/start.tsx +1 -1
- package/src/renderers/share/layout-view.tsx +2 -2
- package/src/renderers/share/main.tsx +4 -4
- package/src/renderers/share/view.tsx +1 -1
- package/src/series/resolve.ts +22 -6
- package/src/series/standalone.ts +30 -2
- package/src/series/types.ts +8 -1
- package/src/shares/api.ts +4 -1
- package/src/shares/pane.ts +1 -1
- package/src/sources/gloomberb-cloud/fred-series.ts +46 -1
- package/src/sources/gloomberb-cloud/index.ts +32 -16
- package/src/sources/gloomberb-cloud/news.ts +39 -0
- package/src/sources/gloomberb-cloud/normalizers.ts +14 -1
- package/src/sources/gloomberb-cloud/perpetuals.ts +49 -1
- package/src/sources/listing-symbols.ts +37 -0
- package/src/sources/provider-errors.ts +16 -2
- package/src/sources/provider-router/financial-routes.ts +21 -3
- package/src/sources/provider-router/financials.ts +15 -2
- package/src/sources/provider-router/history.ts +30 -8
- package/src/sources/provider-router/primary.ts +1 -1
- package/src/state/app/bootstrap.ts +23 -0
- package/src/state/hooks/inline-tickers.ts +30 -5
- package/src/sync/controller.ts +1 -1
- package/src/sync/core-contributors.ts +46 -14
- package/src/team/collections-sync.ts +2 -1
- package/src/team/collections.ts +178 -17
- package/src/telemetry/crash-reports.ts +17 -4
- package/src/test-support/builtin-panes.ts +1 -1
- package/src/theme/colors.ts +3 -30
- package/src/theme/ui-tokens.ts +37 -1
- package/src/tickers/company-name-listing.ts +210 -33
- package/src/tickers/index-roots.ts +47 -0
- package/src/tickers/instrument-label.ts +5 -1
- package/src/tickers/metadata.ts +10 -0
- package/src/tickers/perpetual-listing.ts +5 -2
- package/src/tickers/search/home-listing.ts +75 -0
- package/src/tickers/search/index.ts +76 -27
- package/src/tickers/search/ranking.ts +54 -4
- package/src/tickers/search/upsert.ts +29 -0
- package/src/tickers/terminal-codes.ts +416 -40
- package/src/time-series/bar-aggregation.ts +243 -0
- package/src/time-series/base-series.ts +307 -0
- package/src/time-series/chart-bounds.ts +349 -0
- package/src/time-series/chart-seed.ts +142 -0
- package/src/time-series/economic.ts +5 -0
- package/src/time-series/fundamentals.ts +18 -3
- package/src/time-series/history-acquisition.ts +499 -0
- package/src/time-series/leverage.ts +100 -0
- package/src/time-series/market-resolution.ts +4 -2
- package/src/time-series/market.ts +2 -1
- package/src/time-series/price-comparison.ts +175 -30
- package/src/time-series/range.ts +9 -1
- package/src/time-series/resolution.ts +174 -16
- package/src/time-series/resolve-context.ts +157 -0
- package/src/time-series/resolve.ts +126 -1577
- package/src/time-series/series-name.ts +38 -0
- package/src/time-series/series-presentation.ts +208 -0
- package/src/time-series/spec.ts +11 -6
- package/src/time-series/studies.ts +109 -12
- package/src/time-series/tail-reconcile.ts +121 -0
- package/src/time-series/types.ts +29 -2
- package/src/time-series/use-chart-resolution.ts +4 -5
- package/src/types/broker.ts +10 -0
- package/src/types/config.ts +14 -0
- package/src/types/data-provider.ts +14 -0
- package/src/types/exchange-rate.ts +6 -0
- package/src/types/financials.ts +104 -7
- package/src/types/headless.ts +76 -6
- package/src/types/instrument.ts +3 -0
- package/src/types/plugin.ts +65 -8
- package/src/types/price-history.ts +2 -0
- package/src/types/ticker.ts +13 -0
- package/src/types/trading.ts +59 -1
- package/src/ui/ascii-font.ts +13 -1
- package/src/ui/host.tsx +6 -1
- package/src/updater/command-names.ts +175 -0
- package/src/updater/index.ts +10 -5
- package/src/utils/calendar-date.ts +32 -15
- package/src/utils/cash-runway.ts +241 -0
- package/src/utils/central-banks.ts +42 -0
- package/src/utils/cli-output.ts +259 -80
- package/src/utils/contract-month.ts +16 -0
- package/src/utils/crypto-pair.ts +61 -3
- package/src/utils/currency-units.ts +29 -0
- package/src/utils/datetime-format.ts +10 -0
- package/src/utils/debug-log.ts +1 -1
- package/src/utils/decimal-comma.ts +39 -6
- package/src/utils/exchange-announcements.ts +71 -0
- package/src/utils/exchange-rate-snapshot.ts +10 -0
- package/src/utils/financial-statements.ts +83 -4
- package/src/utils/format.ts +34 -16
- package/src/utils/fundamentals.ts +150 -34
- package/src/utils/fx-market-hours.ts +10 -1
- package/src/utils/latest-financial-period.ts +8 -0
- package/src/utils/linux-libc.ts +54 -0
- package/src/utils/market-capitalization.ts +111 -15
- package/src/utils/max-drawdown.ts +64 -0
- package/src/utils/network-failure.ts +83 -0
- package/src/utils/option-expiry.ts +139 -7
- package/src/utils/price-earnings.ts +11 -5
- package/src/utils/price-history.ts +18 -8
- package/src/utils/price-window.ts +131 -0
- package/src/utils/release-date.ts +47 -0
- package/src/utils/sec.ts +3 -0
- package/src/utils/throttled-fetch.ts +11 -4
- package/src/utils/trailing-eps.ts +67 -0
- package/src/utils/typed-text.ts +21 -0
- package/src/utils/utc-time.ts +24 -1
- package/src/version.ts +6 -0
- package/src/cli/pane-functions/screenshot.ts +0 -2122
package/src/api-client/hiring.ts
CHANGED
|
@@ -108,3 +108,304 @@ export interface HiringBoard {
|
|
|
108
108
|
locked: number
|
|
109
109
|
companies: HiringSummary[]
|
|
110
110
|
}
|
|
111
|
+
|
|
112
|
+
/**
|
|
113
|
+
* Why a company's week is not measured: the collection changed, so its new
|
|
114
|
+
* roles say nothing about hiring (docs/hiring-app-attention.md, Moves).
|
|
115
|
+
*/
|
|
116
|
+
export type HiringMoveExclusion =
|
|
117
|
+
| "first_read" | "source_added" | "identity_reset" | "catch_up" | "retired" | "truncated" | "rediscovered"
|
|
118
|
+
| "recipe_restored" | "careers_url_dropped" | "read_gap" | "collapsed" | "no_read" | "vendor_wide"
|
|
119
|
+
|
|
120
|
+
export interface HiringMoveWeek {
|
|
121
|
+
week: string
|
|
122
|
+
newRoles: number | null
|
|
123
|
+
closedRoles: number | null
|
|
124
|
+
openRoles: number | null
|
|
125
|
+
reads: number
|
|
126
|
+
measured: boolean
|
|
127
|
+
excluded: HiringMoveExclusion[]
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
/**
|
|
131
|
+
* Why a move is held from alerts and ranked after the others: one day carried
|
|
132
|
+
* most of its new roles, its boards were read too seldom to tell a steady
|
|
133
|
+
* rise from a batch, or it is more roles than the boards ever held open.
|
|
134
|
+
*/
|
|
135
|
+
export type HiringMoveFlag = "one_day_batch" | "few_reads" | "outsized"
|
|
136
|
+
|
|
137
|
+
/** A company's new roles in one UTC week against its own measured weeks before and its peers'. */
|
|
138
|
+
export interface HiringMove {
|
|
139
|
+
symbol: string
|
|
140
|
+
name: string
|
|
141
|
+
sector: string | null
|
|
142
|
+
industry: string | null
|
|
143
|
+
sourceTickers: string[]
|
|
144
|
+
week: string
|
|
145
|
+
newRoles: number
|
|
146
|
+
closedRoles: number
|
|
147
|
+
openRoles: number
|
|
148
|
+
/** `values` is empty in a free read: the weeks are history. */
|
|
149
|
+
baseline: { weeks: number; mean: number; sd: number; values: Array<{ week: string; newRoles: number }> }
|
|
150
|
+
ratio: number | null
|
|
151
|
+
zScore: number
|
|
152
|
+
peers: { group: "industry" | "sector" | "universe"; label: string; companies: number; medianRatio: number | null }
|
|
153
|
+
peerRelative: number | null
|
|
154
|
+
direction: "accelerating" | "slowing" | null
|
|
155
|
+
/** `with_peers`: the company moved, and so did its peers. */
|
|
156
|
+
signal: "accelerating" | "slowing" | "with_peers" | null
|
|
157
|
+
/** Role families behind the move, each scaled to the week's measured new roles. */
|
|
158
|
+
drivers: Array<{ id: string; label: string; newRoles: number; baselineMean: number }>
|
|
159
|
+
topTitles: Array<{ title: string; count: number }>
|
|
160
|
+
/** Absent from a server before flags. */
|
|
161
|
+
flags?: HiringMoveFlag[]
|
|
162
|
+
/** The day with the most new roles that week, and how many. */
|
|
163
|
+
peakDay?: { day: string; newRoles: number } | null
|
|
164
|
+
/** A board that cannot place its new roles on a day: its reads that week and the days they counted. */
|
|
165
|
+
unplacedRead?: { reads: number; days: number | null } | null
|
|
166
|
+
/** The most roles the company's boards held open in a week before. */
|
|
167
|
+
priorMaxOpen?: number | null
|
|
168
|
+
why: string
|
|
169
|
+
firstComputedAt: string
|
|
170
|
+
computedAt: string
|
|
171
|
+
/** Since when the current signal has held; it alerts once a pass 12 hours on keeps it. */
|
|
172
|
+
signalSince?: string
|
|
173
|
+
confirmed?: boolean
|
|
174
|
+
}
|
|
175
|
+
|
|
176
|
+
export interface HiringMovePosting {
|
|
177
|
+
id: string
|
|
178
|
+
title: string
|
|
179
|
+
url: string | null
|
|
180
|
+
location: string | null
|
|
181
|
+
country: string | null
|
|
182
|
+
jobFunction: string | null
|
|
183
|
+
seniority: string | null
|
|
184
|
+
firstSeenAt: string
|
|
185
|
+
closedAt: string | null
|
|
186
|
+
sourceTicker: string
|
|
187
|
+
}
|
|
188
|
+
|
|
189
|
+
export type HiringMovesFilter = "all" | "moves" | "accelerating" | "slowing"
|
|
190
|
+
|
|
191
|
+
export interface HiringMovesBoard {
|
|
192
|
+
generatedAt: string
|
|
193
|
+
proRequired: true
|
|
194
|
+
preview: boolean
|
|
195
|
+
week: string | null
|
|
196
|
+
/** A free read is always the own moves, whatever was asked. */
|
|
197
|
+
filter?: HiringMovesFilter
|
|
198
|
+
total: number
|
|
199
|
+
locked: number
|
|
200
|
+
coverage: {
|
|
201
|
+
measured: number
|
|
202
|
+
signals: { accelerating: number; slowing: number; withPeers: number }
|
|
203
|
+
unmeasured: number
|
|
204
|
+
unmeasuredReasons: Partial<Record<HiringMoveExclusion, number>>
|
|
205
|
+
computedAt: string | null
|
|
206
|
+
baselineWeeks: number
|
|
207
|
+
}
|
|
208
|
+
moves: HiringMove[]
|
|
209
|
+
}
|
|
210
|
+
|
|
211
|
+
export interface HiringCompanyMoves {
|
|
212
|
+
generatedAt: string
|
|
213
|
+
proRequired: true
|
|
214
|
+
preview: boolean
|
|
215
|
+
symbol: string
|
|
216
|
+
requestedSymbol?: string
|
|
217
|
+
name: string | null
|
|
218
|
+
latest: HiringMove | null
|
|
219
|
+
/** The latest week, measured or not. */
|
|
220
|
+
week: HiringMoveWeek | null
|
|
221
|
+
weeks: HiringMoveWeek[]
|
|
222
|
+
history: Array<Pick<HiringMove, "week" | "newRoles" | "ratio" | "zScore" | "peerRelative" | "direction" | "signal" | "computedAt">>
|
|
223
|
+
evidence: { added: HiringMovePosting[]; closed: HiringMovePosting[] }
|
|
224
|
+
evidenceTotals: { added: number; closed: number }
|
|
225
|
+
/** `move`: a free read of a company off the free board keeps its week, not its move. */
|
|
226
|
+
locked: { history: number; added: number; closed: number; move?: number }
|
|
227
|
+
}
|
|
228
|
+
|
|
229
|
+
/**
|
|
230
|
+
* HIRE's Expansion and Anomalies tabs: a company's first roles in a country
|
|
231
|
+
* or city, one place or role family far above its own weeks, and role
|
|
232
|
+
* families it never posted, in the latest complete week.
|
|
233
|
+
*/
|
|
234
|
+
export type HiringSignalGroup = "expansion" | "anomalies"
|
|
235
|
+
export type HiringSignalKind = "new_country" | "new_city" | "location_spike" | "function_spike" | "new_role_type"
|
|
236
|
+
export type HiringSignalsFilter = "all" | HiringSignalKind
|
|
237
|
+
/** Why a company's week gives no signal at all. */
|
|
238
|
+
export type HiringSignalHold = "unmeasured" | "short_watch" | "recounted"
|
|
239
|
+
/** Why a kind was not looked for at a company, or a first or a spike was dropped. */
|
|
240
|
+
export type HiringSignalSkip = "thin_history" | "unplaced_history" | "unplaced_cities" | "unclassified_history" | "reformatted" | "posted_before_watch" | "similar_city" | "one_day"
|
|
241
|
+
/** A spike shown last: a seldom-read board, or a week Moves flagged. */
|
|
242
|
+
export type HiringSignalFlag = "few_reads" | "one_day_batch"
|
|
243
|
+
|
|
244
|
+
export interface HiringWeekSignal {
|
|
245
|
+
symbol: string
|
|
246
|
+
name: string
|
|
247
|
+
sector: string | null
|
|
248
|
+
industry: string | null
|
|
249
|
+
sourceTickers: string[]
|
|
250
|
+
week: string
|
|
251
|
+
kind: HiringSignalKind
|
|
252
|
+
group: HiringSignalGroup
|
|
253
|
+
dimension: "country" | "city" | "function"
|
|
254
|
+
/** `MX`, `austin|US`, `data_ai`. */
|
|
255
|
+
key: string
|
|
256
|
+
/** `Mexico`, `Austin, TX, US`, `Data & AI`. */
|
|
257
|
+
label: string
|
|
258
|
+
country: string | null
|
|
259
|
+
newRoles: number
|
|
260
|
+
titles: number
|
|
261
|
+
/** How far back "never" goes: every board read since `watchedSince`, and the postings seen before the week. */
|
|
262
|
+
history: { watchedSince: string; priorPostings: number; priorShare: number | null }
|
|
263
|
+
/** A spike's weeks before; `values` is empty in a free read. */
|
|
264
|
+
baseline: { weeks: number; mean: number; values: Array<{ week: string; newRoles: number }> } | null
|
|
265
|
+
ratio: number | null
|
|
266
|
+
zScore: number | null
|
|
267
|
+
/** The company's own pace in the same terms, for a spike. */
|
|
268
|
+
companyRatio: number | null
|
|
269
|
+
flags: HiringSignalFlag[]
|
|
270
|
+
reads: number | null
|
|
271
|
+
topTitles: Array<{ title: string; count: number }>
|
|
272
|
+
places: Array<{ label: string; count: number }>
|
|
273
|
+
postings: HiringMovePosting[]
|
|
274
|
+
why: string
|
|
275
|
+
firstComputedAt: string
|
|
276
|
+
computedAt: string
|
|
277
|
+
}
|
|
278
|
+
|
|
279
|
+
export interface HiringSignalsBoard {
|
|
280
|
+
generatedAt: string
|
|
281
|
+
proRequired: true
|
|
282
|
+
preview: boolean
|
|
283
|
+
group: HiringSignalGroup
|
|
284
|
+
/** A free read is always the group's first three, whatever was asked. */
|
|
285
|
+
filter: HiringSignalsFilter
|
|
286
|
+
week: string | null
|
|
287
|
+
total: number
|
|
288
|
+
locked: number
|
|
289
|
+
coverage: {
|
|
290
|
+
measured: number
|
|
291
|
+
counts: Partial<Record<HiringSignalKind, number>>
|
|
292
|
+
held: Partial<Record<HiringSignalHold, number>>
|
|
293
|
+
skipped: Partial<Record<HiringSignalSkip, number>>
|
|
294
|
+
/** The earliest and latest first read of a measured company: how far back "never" goes. */
|
|
295
|
+
watchedFrom: string | null
|
|
296
|
+
watchedTo: string | null
|
|
297
|
+
computedAt: string | null
|
|
298
|
+
}
|
|
299
|
+
signals: HiringWeekSignal[]
|
|
300
|
+
}
|
|
301
|
+
|
|
302
|
+
export interface HiringCompanySignals {
|
|
303
|
+
generatedAt: string
|
|
304
|
+
proRequired: true
|
|
305
|
+
preview: boolean
|
|
306
|
+
symbol: string
|
|
307
|
+
requestedSymbol?: string
|
|
308
|
+
name: string | null
|
|
309
|
+
week: string | null
|
|
310
|
+
watchedSince: string | null
|
|
311
|
+
held: HiringSignalHold | null
|
|
312
|
+
skipped: HiringSignalSkip[]
|
|
313
|
+
/** The latest week's signals, both groups. */
|
|
314
|
+
signals: HiringWeekSignal[]
|
|
315
|
+
history: HiringWeekSignal[]
|
|
316
|
+
/** What a free read holds back: this week's, earlier weeks', and both by tab. Absent by tab from a server before it. */
|
|
317
|
+
locked: { signals: number; history: number } & Partial<Record<HiringSignalGroup, number>>
|
|
318
|
+
}
|
|
319
|
+
|
|
320
|
+
/**
|
|
321
|
+
* HIRE's Building tab: the role families and themes whose share of a
|
|
322
|
+
* company's new roles rose against its own weeks before, and each company's
|
|
323
|
+
* whole mix, recent weeks against the weeks before.
|
|
324
|
+
*/
|
|
325
|
+
type HiringBuildingDimension = "function" | "theme"
|
|
326
|
+
export type HiringBuildingFilter = "all" | HiringBuildingDimension
|
|
327
|
+
/** Why a company has no mix to compare. */
|
|
328
|
+
export type HiringBuildingHold = "shared_board" | "unmeasured" | "recounted" | "rescoped" | "short_watch" | "thin"
|
|
329
|
+
/** Compared in part: no family mix, or some themes not yet read. */
|
|
330
|
+
export type HiringBuildingSkip = "unclassified" | "unread_titles"
|
|
331
|
+
|
|
332
|
+
export interface HiringMixRow {
|
|
333
|
+
dimension: HiringBuildingDimension
|
|
334
|
+
/** `sales`, `ai_ml`. */
|
|
335
|
+
key: string
|
|
336
|
+
/** `Sales`, `AI & machine learning`. */
|
|
337
|
+
label: string
|
|
338
|
+
recentRoles: number
|
|
339
|
+
/** Of the recent weeks' roles with a role family (a family), or of all of them (a theme). */
|
|
340
|
+
recentShare: number
|
|
341
|
+
beforeRoles: number
|
|
342
|
+
beforeShare: number
|
|
343
|
+
change: number
|
|
344
|
+
/** A theme whose titles have all been read; a family always is. */
|
|
345
|
+
read: boolean
|
|
346
|
+
}
|
|
347
|
+
|
|
348
|
+
interface HiringBuildingWeek { week: string; roles: number; classified: number }
|
|
349
|
+
|
|
350
|
+
export interface HiringBuildingShift {
|
|
351
|
+
symbol: string
|
|
352
|
+
name: string
|
|
353
|
+
sector: string | null
|
|
354
|
+
industry: string | null
|
|
355
|
+
sourceTickers: string[]
|
|
356
|
+
week: string
|
|
357
|
+
dimension: HiringBuildingDimension
|
|
358
|
+
key: string
|
|
359
|
+
label: string
|
|
360
|
+
/** `values` is empty in a free read. */
|
|
361
|
+
recent: { weeks: number; roles: number; total: number; share: number; values: Array<{ week: string; roles: number; total: number }> }
|
|
362
|
+
before: { weeks: number; roles: number; total: number; share: number; values: Array<{ week: string; roles: number; total: number }> }
|
|
363
|
+
change: number
|
|
364
|
+
ratio: number | null
|
|
365
|
+
zScore: number
|
|
366
|
+
titles: number
|
|
367
|
+
topTitles: Array<{ title: string; count: number }>
|
|
368
|
+
postings: HiringMovePosting[]
|
|
369
|
+
why: string
|
|
370
|
+
firstComputedAt: string
|
|
371
|
+
computedAt: string
|
|
372
|
+
}
|
|
373
|
+
|
|
374
|
+
export interface HiringBuildingBoard {
|
|
375
|
+
generatedAt: string
|
|
376
|
+
proRequired: true
|
|
377
|
+
preview: boolean
|
|
378
|
+
/** A free read is always the first three, whatever was asked. */
|
|
379
|
+
filter: HiringBuildingFilter
|
|
380
|
+
week: string | null
|
|
381
|
+
total: number
|
|
382
|
+
locked: number
|
|
383
|
+
coverage: {
|
|
384
|
+
measured: number
|
|
385
|
+
counts: Partial<Record<HiringBuildingDimension, number>>
|
|
386
|
+
held: Partial<Record<HiringBuildingHold, number>>
|
|
387
|
+
skipped: Partial<Record<HiringBuildingSkip, number>>
|
|
388
|
+
/** Theme titles in the weeks compared, and how many the model has read. */
|
|
389
|
+
themeTitles: { titles: number; read: number }
|
|
390
|
+
computedAt: string | null
|
|
391
|
+
}
|
|
392
|
+
shifts: HiringBuildingShift[]
|
|
393
|
+
}
|
|
394
|
+
|
|
395
|
+
export interface HiringCompanyBuilding {
|
|
396
|
+
generatedAt: string
|
|
397
|
+
proRequired: true
|
|
398
|
+
preview: boolean
|
|
399
|
+
symbol: string
|
|
400
|
+
requestedSymbol?: string
|
|
401
|
+
name: string | null
|
|
402
|
+
week: string | null
|
|
403
|
+
held: HiringBuildingHold | null
|
|
404
|
+
skipped: HiringBuildingSkip[]
|
|
405
|
+
window: { recent: HiringBuildingWeek[]; before: HiringBuildingWeek[] } | null
|
|
406
|
+
functions: HiringMixRow[]
|
|
407
|
+
themes: HiringMixRow[]
|
|
408
|
+
shifts: HiringBuildingShift[]
|
|
409
|
+
history: HiringBuildingShift[]
|
|
410
|
+
locked: { functions: number; themes: number; shifts: number; history: number }
|
|
411
|
+
}
|
package/src/api-client/index.ts
CHANGED
|
@@ -62,7 +62,7 @@ export type {
|
|
|
62
62
|
/** Server-side caps for `/assist/command`; enforced here so a 422 is never sent. */
|
|
63
63
|
const ASSIST_QUERY_MAX_LENGTH = 200;
|
|
64
64
|
const ASSIST_COMMAND_LIMIT = 150;
|
|
65
|
-
/** The futures curve's root list is the longest a command sends: 76
|
|
65
|
+
/** The futures curve's root list is the longest a command sends: 76. */
|
|
66
66
|
export const ASSIST_ARG_OPTION_LIMIT = 128;
|
|
67
67
|
const ASSIST_ARG_OPTION_VALUE_MAX_LENGTH = 40;
|
|
68
68
|
const ASSIST_ARG_OPTION_LABEL_MAX_LENGTH = 60;
|
|
@@ -373,9 +373,13 @@ class GloomApiClient {
|
|
|
373
373
|
requestPasswordReset = this.auth.requestPasswordReset.bind(this.auth);
|
|
374
374
|
createBrowserHandoff = this.auth.createBrowserHandoff.bind(this.auth);
|
|
375
375
|
|
|
376
|
-
/**
|
|
377
|
-
|
|
378
|
-
|
|
376
|
+
/**
|
|
377
|
+
* Creates a Stripe checkout session for Cloud Pro; the URL opens in a browser.
|
|
378
|
+
* `link` is a short link to the same checkout, to read or scan on another
|
|
379
|
+
* device. Older servers send none.
|
|
380
|
+
*/
|
|
381
|
+
async createCloudCheckout(returnTo?: string, interval: "month" | "year" = "month"): Promise<{ url: string; link?: string }> {
|
|
382
|
+
return this.request<{ url: string; link?: string }>("/stripe/checkout", { method: "POST", body: JSON.stringify({ returnTo, interval }) });
|
|
379
383
|
}
|
|
380
384
|
|
|
381
385
|
async recordResearchActivity(payload: {
|
|
@@ -404,7 +408,7 @@ class GloomApiClient {
|
|
|
404
408
|
async brokerRequest<T>(
|
|
405
409
|
broker: string,
|
|
406
410
|
path: string,
|
|
407
|
-
options: { method?: "GET" | "POST" | "DELETE"; body?: unknown; signal?: AbortSignal } = {},
|
|
411
|
+
options: { method?: "GET" | "POST" | "PUT" | "DELETE"; body?: unknown; signal?: AbortSignal } = {},
|
|
408
412
|
): Promise<T> {
|
|
409
413
|
if (!/^[a-z][a-z0-9-]{0,31}$/.test(broker)) throw new Error(`Invalid broker id "${broker}".`);
|
|
410
414
|
if (path !== "" && (!/^\/[A-Za-z0-9/_.~%?=&-]*$/.test(path) || path.includes(".."))) {
|
|
@@ -782,6 +786,7 @@ class GloomApiClient {
|
|
|
782
786
|
getCloudEconomicCalendar = this.data.getCloudEconomicCalendar.bind(this.data);
|
|
783
787
|
getCloudEconomicCalendarFrom = this.data.getCloudEconomicCalendarFrom.bind(this.data);
|
|
784
788
|
getCloudMacroReleaseDays = this.data.getCloudMacroReleaseDays.bind(this.data);
|
|
789
|
+
getCloudShortRates = this.data.getCloudShortRates.bind(this.data);
|
|
785
790
|
getCloudEquityDiagnostic = this.data.getCloudEquityDiagnostic.bind(this.data);
|
|
786
791
|
getCloudEarningsCalendar = this.data.getCloudEarningsCalendar.bind(this.data);
|
|
787
792
|
getCloudEarningsHistory = this.data.getCloudEarningsHistory.bind(this.data);
|
|
@@ -790,6 +795,7 @@ class GloomApiClient {
|
|
|
790
795
|
getCloudCryptoMarkets = this.data.getCloudCryptoMarkets.bind(this.data);
|
|
791
796
|
getCloudStablecoinSupply = this.data.getCloudStablecoinSupply.bind(this.data);
|
|
792
797
|
getCloudStablecoinSupplyHistory = this.data.getCloudStablecoinSupplyHistory.bind(this.data);
|
|
798
|
+
getCloudDefiTvl = this.data.getCloudDefiTvl.bind(this.data);
|
|
793
799
|
getCloudCentralBankRates = this.data.getCloudCentralBankRates.bind(this.data);
|
|
794
800
|
getMobileAlertHistory = this.data.getMobileAlertHistory.bind(this.data);
|
|
795
801
|
getScannerFlowHistory = this.data.getScannerFlowHistory.bind(this.data);
|
|
@@ -800,6 +806,7 @@ class GloomApiClient {
|
|
|
800
806
|
getFundMembers = this.data.getFundMembers.bind(this.data);
|
|
801
807
|
getFundChanges = this.data.getFundChanges.bind(this.data);
|
|
802
808
|
getFundFacts = this.data.getFundFacts.bind(this.data);
|
|
809
|
+
getCloudExchangeAnnouncements = this.data.getCloudExchangeAnnouncements.bind(this.data);
|
|
803
810
|
getCloudThemes = this.data.getCloudThemes.bind(this.data);
|
|
804
811
|
getCloudThemeMembers = this.data.getCloudThemeMembers.bind(this.data);
|
|
805
812
|
impliedVolatility = this.data.impliedVolatility.bind(this.data);
|
|
@@ -815,7 +822,10 @@ class GloomApiClient {
|
|
|
815
822
|
getPublicInsolvencyNotices = this.data.getPublicInsolvencyNotices.bind(this.data);
|
|
816
823
|
getPublicLetters = this.data.getPublicLetters.bind(this.data);
|
|
817
824
|
getCloudIpoCalendar = this.data.getCloudIpoCalendar.bind(this.data);
|
|
825
|
+
getCloudFailsToDeliver = this.data.getCloudFailsToDeliver.bind(this.data);
|
|
826
|
+
getCloudOtcVolume = this.data.getCloudOtcVolume.bind(this.data);
|
|
818
827
|
getCloudShortVolume = this.data.getCloudShortVolume.bind(this.data);
|
|
828
|
+
getCloudCryptoEtfFlows = this.data.getCloudCryptoEtfFlows.bind(this.data);
|
|
819
829
|
getCloudSocialMentions = this.data.getCloudSocialMentions.bind(this.data);
|
|
820
830
|
getCloudSocialMentionPosts = this.data.getCloudSocialMentionPosts.bind(this.data);
|
|
821
831
|
getCloudFuturesCurve = this.data.getCloudFuturesCurve.bind(this.data);
|
|
@@ -828,6 +838,11 @@ class GloomApiClient {
|
|
|
828
838
|
creditDocuments = this.data.creditDocuments.bind(this.data);
|
|
829
839
|
geo = this.data.geo.bind(this.data);
|
|
830
840
|
getCloudHiring = this.data.getCloudHiring.bind(this.data);
|
|
841
|
+
getCloudHiringMoves = this.data.getCloudHiringMoves.bind(this.data);
|
|
842
|
+
getCloudHiringSignals = this.data.getCloudHiringSignals.bind(this.data);
|
|
843
|
+
getCloudHiringCompanySignals = this.data.getCloudHiringCompanySignals.bind(this.data);
|
|
844
|
+
getCloudHiringBuilding = this.data.getCloudHiringBuilding.bind(this.data);
|
|
845
|
+
getCloudHiringCompanyBuilding = this.data.getCloudHiringCompanyBuilding.bind(this.data);
|
|
831
846
|
getCloudAppRankHistory = this.data.getCloudAppRankHistory.bind(this.data);
|
|
832
847
|
getCloudAppAttention = this.data.getCloudAppAttention.bind(this.data);
|
|
833
848
|
getCloudCatalystChanges = this.data.getCloudCatalystChanges.bind(this.data);
|
|
@@ -872,6 +887,7 @@ class GloomApiClient {
|
|
|
872
887
|
getCloudTape = this.data.getCloudTape.bind(this.data);
|
|
873
888
|
getCloudYieldCurve = this.data.getCloudYieldCurve.bind(this.data);
|
|
874
889
|
getCloudCurve = this.data.getCloudCurve.bind(this.data);
|
|
890
|
+
getCloudSwapCurve = this.data.getCloudSwapCurve.bind(this.data);
|
|
875
891
|
getCloudCurveHistory = this.data.getCloudCurveHistory.bind(this.data);
|
|
876
892
|
getCloudWorldCurves = this.data.getCloudWorldCurves.bind(this.data);
|
|
877
893
|
getCloudCds = this.data.getCloudCds.bind(this.data);
|
|
@@ -882,6 +898,7 @@ class GloomApiClient {
|
|
|
882
898
|
getCloudCongressHouse = this.data.getCloudCongressHouse.bind(this.data);
|
|
883
899
|
getCloudJobs = this.data.getCloudJobs.bind(this.data);
|
|
884
900
|
getCloudJobsPostings = this.data.getCloudJobsPostings.bind(this.data);
|
|
901
|
+
getCloudJobsPosting = this.data.getCloudJobsPosting.bind(this.data);
|
|
885
902
|
getCloudJobsMovers = this.data.getCloudJobsMovers.bind(this.data);
|
|
886
903
|
getCloudEarningsCalls = this.data.getCloudEarningsCalls.bind(this.data);
|
|
887
904
|
getCloudEarningsTranscript = this.data.getCloudEarningsTranscript.bind(this.data);
|
|
@@ -60,6 +60,12 @@ export interface MarketHeatmapResult {
|
|
|
60
60
|
stale?: boolean;
|
|
61
61
|
universe: MarketHeatmapUniverseId;
|
|
62
62
|
source: MarketHeatmapSource;
|
|
63
|
+
/**
|
|
64
|
+
* Whose prices the board carries: `realtime` for a Pro account, priced
|
|
65
|
+
* from a live read the server takes every 15 seconds; `delayed`, fifteen
|
|
66
|
+
* minutes behind, otherwise. An older server leaves it out (delayed).
|
|
67
|
+
*/
|
|
68
|
+
access?: "realtime" | "delayed";
|
|
63
69
|
fetchedAt: number;
|
|
64
70
|
/** The US market session the snapshot describes; null when the server cannot tell. */
|
|
65
71
|
session?: "REGULAR" | "PRE" | "POST" | "CLOSED" | null;
|
|
@@ -72,6 +78,14 @@ export interface MarketHeatmapResult {
|
|
|
72
78
|
* leaves it out.
|
|
73
79
|
*/
|
|
74
80
|
regularSessionClosedAt?: number | null;
|
|
81
|
+
/**
|
|
82
|
+
* When the prices the board's moves are read at were printed, in epoch
|
|
83
|
+
* milliseconds, never later than any of them: the oldest delayed print
|
|
84
|
+
* while the session trades, that session's close outside it. `fetchedAt`
|
|
85
|
+
* is when the server put the snapshot together, at least fifteen minutes
|
|
86
|
+
* later. Null when a print is unknown; an older server leaves it out.
|
|
87
|
+
*/
|
|
88
|
+
pricesAsOf?: number | null;
|
|
75
89
|
assets: MarketHeatmapAsset[];
|
|
76
90
|
}
|
|
77
91
|
|
|
@@ -7,6 +7,12 @@ export interface FundMember {
|
|
|
7
7
|
contribution: number | null; stale: boolean;
|
|
8
8
|
}
|
|
9
9
|
export interface FundMembersPayload {
|
|
10
|
+
/**
|
|
11
|
+
* Whose prices the members carry: `realtime` for a Pro account, priced from
|
|
12
|
+
* a live read the server renews every 15 seconds; `delayed`, fifteen
|
|
13
|
+
* minutes behind, otherwise. An older server leaves it out (delayed).
|
|
14
|
+
*/
|
|
15
|
+
access?: "realtime" | "delayed";
|
|
10
16
|
fund: MemberFund; asOf: string; fetchedAt: string; excludedDerivatives: number; stale: boolean;
|
|
11
17
|
quotesUnavailable: boolean; snapshotAsOf: string | null; fundDailyAsOf: string | null; quoteCap: number;
|
|
12
18
|
members: FundMember[];
|
package/src/api-client/mna.ts
CHANGED
|
@@ -26,6 +26,12 @@ export interface MnaTerms {
|
|
|
26
26
|
/** The listing the exchange ratio pays in, usually the acquirer's. */
|
|
27
27
|
ratioSymbol: string | null;
|
|
28
28
|
currency: string | null;
|
|
29
|
+
/**
|
|
30
|
+
* Each holder chooses the cash or the shares (usually prorated to a fixed
|
|
31
|
+
* mix) instead of getting both. Older servers leave it out, and read every
|
|
32
|
+
* deal with both legs as paying them together.
|
|
33
|
+
*/
|
|
34
|
+
election?: boolean;
|
|
29
35
|
/** A contingent value right rides on top of the per-share terms. */
|
|
30
36
|
cvr: boolean;
|
|
31
37
|
/** The offer is for part of the shares, so the spread applies to a prorated slice. */
|
package/src/api-client/paths.ts
CHANGED
|
@@ -74,6 +74,8 @@ export type CloudEarningsCallsParams = IssuerListingParams & {
|
|
|
74
74
|
offset?: number;
|
|
75
75
|
/** Include calls still working through the transcription pipeline. */
|
|
76
76
|
includePending?: boolean;
|
|
77
|
+
/** Every company's calls on these New York days (YYYY-MM-DD), earliest first, in place of a company or the shelf. */
|
|
78
|
+
upcoming?: { from: string; to: string };
|
|
77
79
|
};
|
|
78
80
|
|
|
79
81
|
export type CloudNewsParams = {
|
|
@@ -310,6 +312,14 @@ export function cloudJobsPostingsPath(ticker: string, params: CloudJobsPostingsP
|
|
|
310
312
|
return appendQuery(`/cloud/jobs/${encodeURIComponent(normalizeIssuerResearchTicker(ticker))}/postings`, search);
|
|
311
313
|
}
|
|
312
314
|
|
|
315
|
+
/** One posting of a company, by the database id the jobs list carries or the careers system's own id HIRE's evidence carries. */
|
|
316
|
+
export function cloudJobsPostingPath(ticker: string, posting: { id: number } | { externalId: string }): string {
|
|
317
|
+
const search = new URLSearchParams();
|
|
318
|
+
if ("id" in posting) search.set("id", String(posting.id));
|
|
319
|
+
else search.set("externalId", posting.externalId);
|
|
320
|
+
return appendQuery(`/cloud/jobs/${encodeURIComponent(normalizeIssuerResearchTicker(ticker))}/posting`, search);
|
|
321
|
+
}
|
|
322
|
+
|
|
313
323
|
export function cloudJobsMoversPath(limit?: number, offset?: number): string {
|
|
314
324
|
const search = new URLSearchParams();
|
|
315
325
|
if (limit != null) search.set("limit", String(limit));
|
|
@@ -356,6 +366,11 @@ export function cloudEarningsCallsPath(
|
|
|
356
366
|
if (params.limit != null) search.set("limit", String(params.limit));
|
|
357
367
|
if (params.offset != null) search.set("offset", String(params.offset));
|
|
358
368
|
if (params.includePending) search.set("includePending", "true");
|
|
369
|
+
if (params.upcoming) {
|
|
370
|
+
search.set("upcoming", "true");
|
|
371
|
+
search.set("from", params.upcoming.from);
|
|
372
|
+
search.set("to", params.upcoming.to);
|
|
373
|
+
}
|
|
359
374
|
return appendQuery("/cloud/transcripts", search);
|
|
360
375
|
}
|
|
361
376
|
|
|
@@ -605,9 +620,11 @@ export function cloudNewsPath(params: CloudNewsParams = {}): string {
|
|
|
605
620
|
}
|
|
606
621
|
|
|
607
622
|
/** Stories whose headline, summary or publisher matches the text, best match first; the service takes at most 100. */
|
|
608
|
-
|
|
623
|
+
/** `topics` are NI codes the stories must carry: `query=gold&topics=metals` is gold's market news. */
|
|
624
|
+
export function cloudNewsSearchPath(query: string, limit?: number, topics?: readonly string[]): string {
|
|
609
625
|
const search = new URLSearchParams({ query });
|
|
610
626
|
if (limit != null) search.set("limit", String(limit));
|
|
627
|
+
if (topics?.length) search.set("topics", topics.join(","));
|
|
611
628
|
return appendQuery("/news/search", search);
|
|
612
629
|
}
|
|
613
630
|
|
|
@@ -16,6 +16,7 @@ import {
|
|
|
16
16
|
type ConnectionHealthRegistry,
|
|
17
17
|
} from "../core/connection-health";
|
|
18
18
|
import { SESSION_COOKIE_NAMES } from "./session-cookie";
|
|
19
|
+
import { asDataServiceFailure } from "../utils/network-failure";
|
|
19
20
|
|
|
20
21
|
/** The public Gloom Cloud API, which the web app's same-origin `/api` path forwards to. */
|
|
21
22
|
export const DEFAULT_API_URL = "https://api.gloom.sh";
|
|
@@ -162,6 +163,22 @@ function throwIfRequestAborted(signal: AbortSignal | null | undefined): void {
|
|
|
162
163
|
);
|
|
163
164
|
}
|
|
164
165
|
|
|
166
|
+
/**
|
|
167
|
+
* Sends one request, saying the same thing whichever fetch failed to connect
|
|
168
|
+
* (Bun's "Unable to connect", a browser's "Failed to fetch", a refused proxy):
|
|
169
|
+
* every command, pane and status line then reads "Gloom couldn't reach its
|
|
170
|
+
* data service", and code that falls back to a saved copy can tell it apart.
|
|
171
|
+
* A caller's abort stays an abort.
|
|
172
|
+
*/
|
|
173
|
+
async function reachService<R>(fetch: () => Promise<R>, signal: AbortSignal | null | undefined): Promise<R> {
|
|
174
|
+
try {
|
|
175
|
+
return await fetch();
|
|
176
|
+
} catch (error) {
|
|
177
|
+
if (signal?.aborted) throw error;
|
|
178
|
+
throw asDataServiceFailure(error);
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
|
|
165
182
|
export class CloudApiRequestTransport {
|
|
166
183
|
private sessionToken: string | null = null;
|
|
167
184
|
private sessionCookieName: SessionCookieName | null = null;
|
|
@@ -263,11 +280,11 @@ export class CloudApiRequestTransport {
|
|
|
263
280
|
GLOOM_CLOUD_HTTP_CONNECTION_ID,
|
|
264
281
|
operation,
|
|
265
282
|
async () => {
|
|
266
|
-
const response = await streamFetch(`${this.baseUrl}${path}`, {
|
|
283
|
+
const response = await reachService(() => streamFetch(`${this.baseUrl}${path}`, {
|
|
267
284
|
...options,
|
|
268
285
|
headers,
|
|
269
286
|
credentials: "include",
|
|
270
|
-
});
|
|
287
|
+
}), options.signal);
|
|
271
288
|
throwIfRequestAborted(options.signal);
|
|
272
289
|
if (!response.ok) {
|
|
273
290
|
const text = await response.text().catch(logFailure("cloud-request", "Error response body read failed", ""));
|
|
@@ -372,14 +389,14 @@ export class CloudApiRequestTransport {
|
|
|
372
389
|
|
|
373
390
|
const operation = `${options?.method ?? "GET"} ${path.split("?")[0]}`;
|
|
374
391
|
const request = async () => {
|
|
375
|
-
const res = await (send ?? this.fetchTransport ?? cloudApiFetchTransport)(
|
|
392
|
+
const res = await reachService(() => (send ?? this.fetchTransport ?? cloudApiFetchTransport)(
|
|
376
393
|
`${this.baseUrl}${path}`,
|
|
377
394
|
{
|
|
378
395
|
...options,
|
|
379
396
|
headers,
|
|
380
397
|
credentials: "include",
|
|
381
398
|
},
|
|
382
|
-
);
|
|
399
|
+
), options?.signal);
|
|
383
400
|
throwIfRequestAborted(options?.signal);
|
|
384
401
|
const ownsCredential = canApplySession() && this.sessionToken === sessionTokenAtRequestStart;
|
|
385
402
|
if (ownsCredential) this.extractSessionCookie(res);
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
/** Daily outstanding fails are separate settlement snapshots, never additive through time. */
|
|
2
|
+
interface FailsToDeliverObservation {
|
|
3
|
+
date: string;
|
|
4
|
+
cusip: string;
|
|
5
|
+
quantity: number;
|
|
6
|
+
price: number | null;
|
|
7
|
+
description: string;
|
|
8
|
+
sourceUrl: string;
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
/** ATS share is a percentage of published off-exchange shares, not total market volume. */
|
|
12
|
+
interface OtcVolumeObservation {
|
|
13
|
+
weekStart: string;
|
|
14
|
+
atsShares: number | null;
|
|
15
|
+
nonAtsShares: number | null;
|
|
16
|
+
totalShares: number | null;
|
|
17
|
+
atsTrades: number | null;
|
|
18
|
+
nonAtsTrades: number | null;
|
|
19
|
+
atsSharePercent: number | null;
|
|
20
|
+
sourceUrl: string;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
export interface ShortSidePublication<T> {
|
|
24
|
+
symbol: string;
|
|
25
|
+
status: "available" | "partial" | "unavailable";
|
|
26
|
+
asOf: string | null;
|
|
27
|
+
sourceAsOf: string | null;
|
|
28
|
+
fetchedAt: string;
|
|
29
|
+
loadedAt: string | null;
|
|
30
|
+
source: { name: string; url: string; cadence: string };
|
|
31
|
+
warnings: string[];
|
|
32
|
+
history: T[];
|
|
33
|
+
coverage: { from: string; to: string; publications: number };
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
export type FailsToDeliverPayload = ShortSidePublication<FailsToDeliverObservation>;
|
|
37
|
+
export type OtcVolumePayload = ShortSidePublication<OtcVolumeObservation>;
|