gloomberb 0.18.2 → 0.18.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (954) hide show
  1. package/README.md +8 -8
  2. package/README.zh-CN.md +11 -11
  3. package/bin/{gloomberb → gloom} +3 -1
  4. package/package.json +6 -2
  5. package/patches/electrobun@1.18.1.patch +106 -5
  6. package/src/account/checkout-handoff.tsx +225 -0
  7. package/src/account/device-signin-dialog.tsx +2 -2
  8. package/src/account/device-signin.ts +2 -2
  9. package/src/account/upgrade-dialog.tsx +1 -1
  10. package/src/api-client/askg.ts +2 -2
  11. package/src/api-client/auth.ts +2 -2
  12. package/src/api-client/central-bank-rates.ts +6 -0
  13. package/src/api-client/collections.ts +5 -1
  14. package/src/api-client/cot.ts +2 -0
  15. package/src/api-client/crypto-etf-flows.ts +37 -0
  16. package/src/api-client/crypto-markets.ts +60 -0
  17. package/src/api-client/data.ts +99 -5
  18. package/src/api-client/doe.ts +15 -0
  19. package/src/api-client/equity-screener.ts +28 -0
  20. package/src/api-client/exchange-announcements.ts +38 -0
  21. package/src/api-client/fund-facts.ts +39 -0
  22. package/src/api-client/futures-curve.ts +9 -1
  23. package/src/api-client/hiring.ts +301 -0
  24. package/src/api-client/index.ts +24 -5
  25. package/src/api-client/market-discovery.ts +14 -0
  26. package/src/api-client/members.ts +6 -0
  27. package/src/api-client/mna.ts +6 -0
  28. package/src/api-client/paths.ts +18 -1
  29. package/src/api-client/request.ts +26 -7
  30. package/src/api-client/short-side-publications.ts +37 -0
  31. package/src/api-client/socket.ts +64 -4
  32. package/src/api-client/swap-curve.ts +35 -0
  33. package/src/api-client/telemetry.ts +17 -0
  34. package/src/api-client/themes.ts +7 -1
  35. package/src/api-client/types.ts +90 -2
  36. package/src/app/global-shortcuts.ts +1 -16
  37. package/src/app/pane-runtime/plugin-bindings.ts +9 -2
  38. package/src/app/runtime/desktop-deeplink.ts +5 -5
  39. package/src/app/runtime/plugin-bindings.ts +2 -2
  40. package/src/app/runtime/startup.ts +13 -0
  41. package/src/app/runtime/update.ts +28 -8
  42. package/src/app/star-prompt/status-line.tsx +2 -2
  43. package/src/architecture/core-builtin-allowlist.json +5 -2
  44. package/src/architecture/pane-tabs-allowlist.json +65 -0
  45. package/src/architecture/ui-literals-allowlist.json +3 -3
  46. package/src/architecture/ui-tokens-allowlist.json +1 -1
  47. package/src/brokers/broker-portfolio-sync.ts +37 -0
  48. package/src/brokers/directory.ts +11 -0
  49. package/src/brokers/logos.ts +3 -1
  50. package/src/brokers/signed-in/adapter.ts +304 -26
  51. package/src/brokers/signed-in/client.ts +14 -2
  52. package/src/brokers/signed-in/connect.ts +10 -2
  53. package/src/brokers/sync-broker-instance.ts +9 -1
  54. package/src/capabilities/chart-series.ts +22 -6
  55. package/src/cli/bank-section.ts +1 -1
  56. package/src/cli/base-converter.ts +23 -14
  57. package/src/cli/central-bank-events.ts +1 -1
  58. package/src/cli/command-options.ts +59 -4
  59. package/src/cli/commands/api.ts +9 -6
  60. package/src/cli/commands/broker.ts +2 -2
  61. package/src/cli/commands/command-utils.ts +2 -2
  62. package/src/cli/commands/crypto-hints.ts +7 -20
  63. package/src/cli/commands/fred-series.ts +4 -2
  64. package/src/cli/commands/keybindings.ts +2 -2
  65. package/src/cli/commands/market.ts +1189 -296
  66. package/src/cli/commands/news-hints.ts +2 -2
  67. package/src/cli/commands/news-search.ts +59 -6
  68. package/src/cli/commands/options-leaps.ts +41 -26
  69. package/src/cli/commands/overview.ts +121 -48
  70. package/src/cli/commands/plugins.ts +9 -9
  71. package/src/cli/commands/remote.ts +13 -10
  72. package/src/cli/commands/search.ts +64 -44
  73. package/src/cli/commands/system.ts +27 -19
  74. package/src/cli/commands/themes.ts +1 -1
  75. package/src/cli/commands/ticker.ts +272 -70
  76. package/src/cli/context.ts +3 -2
  77. package/src/cli/desktop-pane-shot-view.ts +2 -2
  78. package/src/cli/desktop-pane-shot.ts +1 -1
  79. package/src/cli/earnings-calendar.ts +4 -4
  80. package/src/cli/entry.ts +18 -1
  81. package/src/cli/errors.ts +20 -2
  82. package/src/cli/exit-codes.ts +1 -1
  83. package/src/cli/export-source.ts +10 -4
  84. package/src/cli/freshness.ts +2 -8
  85. package/src/cli/fx-forward.ts +130 -0
  86. package/src/cli/fx-pair.ts +10 -9
  87. package/src/cli/glossary.ts +64 -20
  88. package/src/cli/help.ts +20 -14
  89. package/src/cli/history-export.ts +126 -0
  90. package/src/cli/history-rows.ts +196 -43
  91. package/src/cli/index-roots.ts +5 -45
  92. package/src/cli/index.ts +32 -18
  93. package/src/cli/issuer-membership.ts +103 -0
  94. package/src/cli/known-gaps.ts +118 -25
  95. package/src/cli/listing-arg.ts +315 -43
  96. package/src/cli/name-entries.ts +73 -22
  97. package/src/cli/native-smoke.ts +2 -0
  98. package/src/cli/not-a-ticker.ts +19 -9
  99. package/src/cli/opentui-libc.ts +5 -0
  100. package/src/cli/options.ts +12 -0
  101. package/src/cli/pane-functions/capabilities.ts +77 -20
  102. package/src/cli/pane-functions/catalog.ts +40 -23
  103. package/src/cli/pane-functions/discovery.ts +1 -1
  104. package/src/cli/pane-functions/dom.ts +12 -8
  105. package/src/cli/pane-functions/financial-ratio-shot.ts +2 -2
  106. package/src/cli/pane-functions/freshness.ts +174 -23
  107. package/src/cli/pane-functions/function-help.ts +66 -27
  108. package/src/cli/pane-functions/headless.ts +48 -16
  109. package/src/cli/pane-functions/index.ts +82 -21
  110. package/src/cli/pane-functions/options.ts +22 -2
  111. package/src/cli/pane-functions/report-notices.ts +12 -4
  112. package/src/cli/pane-functions/report.ts +5 -5
  113. package/src/cli/pane-functions/resolver.ts +65 -14
  114. package/src/cli/pane-functions/screenshot-assessment.ts +322 -0
  115. package/src/cli/pane-functions/screenshot-bridge.ts +152 -0
  116. package/src/cli/pane-functions/screenshot-chart-evidence.ts +396 -0
  117. package/src/cli/pane-functions/screenshot-data-evidence.ts +383 -0
  118. package/src/cli/pane-functions/screenshot-evidence.ts +1 -1
  119. package/src/cli/pane-functions/screenshot-payload.ts +453 -0
  120. package/src/cli/pane-functions/screenshot-render.ts +316 -0
  121. package/src/cli/pane-functions/screenshot-types.ts +162 -0
  122. package/src/cli/pane-functions/shot-options.ts +8 -3
  123. package/src/cli/peso-dollar-rates.ts +79 -0
  124. package/src/cli/quote-answer.ts +38 -3
  125. package/src/cli/report-tables.ts +190 -27
  126. package/src/cli/restore-plugins.ts +29 -14
  127. package/src/cli/result.ts +122 -25
  128. package/src/cli/series-search.ts +5 -5
  129. package/src/cli/statement-filings.ts +19 -0
  130. package/src/cli/suffixed-listing-rows.ts +49 -0
  131. package/src/cli/symbol-args.ts +50 -15
  132. package/src/cli/symbol-cells.ts +120 -0
  133. package/src/cli/symbol-list.ts +226 -60
  134. package/src/cli/symbol-rows.ts +131 -25
  135. package/src/cli/ticker-resolution.ts +108 -11
  136. package/src/cli/treasury-yields.ts +5 -5
  137. package/src/cli/types.ts +2 -0
  138. package/src/cli/uncovered-instrument.ts +3 -3
  139. package/src/cli/unknown-command.ts +6 -6
  140. package/src/components/chart/composite/chart-layout.ts +131 -0
  141. package/src/components/chart/composite/composite-chart.tsx +387 -21
  142. package/src/components/chart/composite/drawing-store.ts +26 -6
  143. package/src/components/chart/composite/interactions.ts +9 -3
  144. package/src/components/chart/composite/legend.tsx +75 -3
  145. package/src/components/chart/composite/levels.ts +5 -0
  146. package/src/components/chart/composite/panel-gestures.ts +41 -0
  147. package/src/components/chart/composite/panel-labels.ts +2 -1
  148. package/src/components/chart/composite/panel-surface.tsx +316 -11
  149. package/src/components/chart/composite/price-axis-labels.tsx +27 -3
  150. package/src/components/chart/composite/rasterizer.ts +44 -19
  151. package/src/components/chart/composite/scene.ts +16 -4
  152. package/src/components/chart/composite/text-renderer.ts +48 -21
  153. package/src/components/chart/composite/toolbar.tsx +52 -5
  154. package/src/components/chart/composite/types.ts +19 -0
  155. package/src/components/chart/composite/use-composite-chart-keyboard.ts +120 -13
  156. package/src/components/chart/composite/use-composite-value-scales.ts +44 -0
  157. package/src/components/chart/composite/use-composite-viewport.ts +12 -3
  158. package/src/components/chart/composite/value-scale.ts +149 -0
  159. package/src/components/chart/composite/volume-profile-paint.ts +6 -3
  160. package/src/components/chart/core/pointer.ts +2 -0
  161. package/src/components/chart-table/index.ts +2 -0
  162. package/src/components/chart-table/read.tsx +74 -0
  163. package/src/components/command-bar/commands/collection-list.ts +41 -19
  164. package/src/components/command-bar/commands/collection.ts +9 -3
  165. package/src/components/command-bar/commands/direct/index.ts +1 -1
  166. package/src/components/command-bar/commands/direct/runtime.ts +3 -2
  167. package/src/components/command-bar/pane-templates/items.ts +59 -6
  168. package/src/components/command-bar/pane-templates/workflow.ts +10 -1
  169. package/src/components/command-bar/routes/root/command-items.ts +32 -6
  170. package/src/components/command-bar/routes/root/plugin-install.ts +1 -1
  171. package/src/components/command-bar/routes/root/provider-search.ts +42 -11
  172. package/src/components/command-bar/routes/root/results.ts +18 -4
  173. package/src/components/command-bar/routes/root/runtime.ts +15 -3
  174. package/src/components/command-bar/routes/root/search-providers.ts +25 -2
  175. package/src/components/command-bar/routes/root/selection.ts +6 -1
  176. package/src/components/command-bar/routes/root/shortcut-feedback.ts +4 -1
  177. package/src/components/command-bar/routes/root/shortcuts.ts +30 -3
  178. package/src/components/command-bar/routes/ticker-search/results.ts +73 -4
  179. package/src/components/command-bar/selection-runtime.ts +50 -10
  180. package/src/components/command-bar/surface/index.tsx +24 -2
  181. package/src/components/command-bar/view-model.ts +7 -0
  182. package/src/components/command-bar/workflow/broker.ts +2 -2
  183. package/src/components/command-bar/workflow/collection-actions.ts +46 -7
  184. package/src/components/command-bar/workflow/collection-ticker.ts +32 -4
  185. package/src/components/command-bar/workflow/fields.ts +8 -2
  186. package/src/components/command-bar/workflow/ops.ts +18 -4
  187. package/src/components/command-bar/workflow/portfolio-position.ts +53 -4
  188. package/src/components/command-bar/workflow/submit.ts +3 -2
  189. package/src/components/command-bar/workflow/tickers.ts +5 -1
  190. package/src/components/company-logo.tsx +39 -0
  191. package/src/components/data-table/sections.ts +4 -2
  192. package/src/components/data-table/view.tsx +23 -3
  193. package/src/components/form-modal/confirm.tsx +2 -1
  194. package/src/components/form-modal/request.ts +5 -0
  195. package/src/components/form-modal/routes.ts +4 -1
  196. package/src/components/index.ts +13 -6
  197. package/src/components/layout/detached-pane-shell.tsx +1 -0
  198. package/src/components/layout/floating-pane.tsx +1 -0
  199. package/src/components/layout/header.tsx +234 -60
  200. package/src/components/layout/market-summary.ts +9 -6
  201. package/src/components/layout/pane/capture-status.ts +1 -1
  202. package/src/components/layout/pane/footer/model.ts +11 -5
  203. package/src/components/layout/pane/header.tsx +10 -3
  204. package/src/components/layout/pane/index.tsx +1 -0
  205. package/src/components/layout/pane/pane-tabs.tsx +9 -1
  206. package/src/components/layout/shell/chrome.ts +19 -6
  207. package/src/components/layout/shell/index.tsx +2 -1
  208. package/src/components/layout/shell/pane/layers.tsx +19 -1
  209. package/src/components/layout/status-bar.tsx +2 -2
  210. package/src/components/market-board/index.tsx +11 -3
  211. package/src/components/onboarding/onboarding-wizard.tsx +1 -0
  212. package/src/components/onboarding/portfolio-step/broker-setup-panel.tsx +2 -2
  213. package/src/components/onboarding/wizard-broker-sync.ts +4 -1
  214. package/src/components/pane-settings-dialog/desktop.tsx +20 -7
  215. package/src/components/pane-settings-dialog/tui.tsx +17 -9
  216. package/src/components/pane-settings-dialog/value.ts +8 -1
  217. package/src/components/pane-settings-dialog.tsx +44 -13
  218. package/src/components/sign-in-code-panel.tsx +27 -19
  219. package/src/components/ui/column-grid.tsx +48 -4
  220. package/src/components/ui/country-flag-art.tsx +180 -0
  221. package/src/components/ui/country-flag.tsx +118 -12
  222. package/src/components/ui/data-table/opentui/index.tsx +61 -2
  223. package/src/components/ui/data-table/opentui/model.ts +109 -2
  224. package/src/components/ui/data-table/types.ts +1 -1
  225. package/src/components/ui/display.tsx +5 -1
  226. package/src/components/ui/index.ts +3 -1
  227. package/src/components/ui/logo-mark.tsx +11 -2
  228. package/src/components/ui/query-bar.tsx +1 -1
  229. package/src/components/ui/row-notes.ts +79 -0
  230. package/src/components/ui/stat-grid.tsx +28 -3
  231. package/src/components/ui/status.tsx +3 -1
  232. package/src/core/app-services.ts +4 -0
  233. package/src/core/state/app/layout.ts +4 -4
  234. package/src/data/cached-query.ts +8 -1
  235. package/src/data/config/chart-settings.ts +3 -3
  236. package/src/data/config/home.ts +10 -2
  237. package/src/data/config/layout.ts +4 -1
  238. package/src/data/config/store/node.ts +4 -0
  239. package/src/data/config/store/normalize.ts +13 -3
  240. package/src/data/config/store/portfolio-as-of-column.ts +2 -2
  241. package/src/data/json-storage.ts +2 -0
  242. package/src/data/saved-copies.ts +84 -0
  243. package/src/docs/snapshot.json +65 -32
  244. package/src/i18n/es.ts +51 -12
  245. package/src/i18n/ja.ts +51 -12
  246. package/src/i18n/ko.ts +51 -12
  247. package/src/i18n/zh-cn.ts +51 -12
  248. package/src/i18n/zh-tw.ts +51 -12
  249. package/src/layout/desks.ts +1 -1
  250. package/src/layout/launch-layout.ts +1 -1
  251. package/src/layout/pane-manager/floating-actions.ts +5 -3
  252. package/src/layout/pane-manager/floating.ts +43 -1
  253. package/src/layout/pane-manager/index.ts +2 -0
  254. package/src/layout/selected-ticker.ts +74 -0
  255. package/src/market-data/depositary-pair.ts +251 -0
  256. package/src/market-data/futures-board.ts +1 -1
  257. package/src/market-data/futures-contract.ts +124 -40
  258. package/src/market-data/fx-closes.ts +17 -2
  259. package/src/market-data/hooks.tsx +19 -11
  260. package/src/market-data/market/change-basis.ts +49 -7
  261. package/src/market-data/market/freshness.ts +34 -5
  262. package/src/market-data/market/period-return.ts +163 -0
  263. package/src/market-data/market/trading-sessions.ts +13 -0
  264. package/src/market-data/market/year-to-date.ts +8 -13
  265. package/src/market-data/performance.ts +20 -14
  266. package/src/market-data/perpetual-premium.ts +32 -0
  267. package/src/market-data/published-apac-sessions.ts +2 -1
  268. package/src/market-data/published-futures-sessions.ts +69 -0
  269. package/src/market-data/quotes/contributions.ts +5 -1
  270. package/src/market-data/quotes/freshness.ts +42 -0
  271. package/src/market-data/quotes/intraday-bar.ts +37 -0
  272. package/src/market-data/quotes/regular-session-valuation.ts +13 -8
  273. package/src/market-data/quotes/resolution.ts +4 -2
  274. package/src/market-data/tax-equivalent.ts +1 -1
  275. package/src/market-data/ticker-price-returns.ts +3 -1
  276. package/src/news/aggregator.ts +5 -1
  277. package/src/news/news-model.ts +4 -0
  278. package/src/news/types.ts +11 -0
  279. package/src/notifications/app-notifier.ts +1 -1
  280. package/src/plugins/auto-update.ts +2 -2
  281. package/src/plugins/builtin/account-management/index.tsx +1 -0
  282. package/src/plugins/builtin/account-management/pane.tsx +9 -8
  283. package/src/plugins/builtin/alerts/alert-engine.ts +30 -18
  284. package/src/plugins/builtin/alerts/calendar-events.ts +378 -0
  285. package/src/plugins/builtin/alerts/cli.ts +485 -76
  286. package/src/plugins/builtin/alerts/command.ts +5 -10
  287. package/src/plugins/builtin/alerts/event-rows.ts +9 -5
  288. package/src/plugins/builtin/alerts/events-pane.tsx +71 -56
  289. package/src/plugins/builtin/alerts/events.ts +108 -5
  290. package/src/plugins/builtin/alerts/fired-log.ts +78 -0
  291. package/src/plugins/builtin/alerts/format.ts +2 -1
  292. package/src/plugins/builtin/alerts/headless.ts +100 -39
  293. package/src/plugins/builtin/alerts/history-pane.tsx +105 -62
  294. package/src/plugins/builtin/alerts/history-rows.ts +89 -0
  295. package/src/plugins/builtin/alerts/index.tsx +45 -18
  296. package/src/plugins/builtin/alerts/iv-level.ts +365 -0
  297. package/src/plugins/builtin/alerts/levels.ts +3 -3
  298. package/src/plugins/builtin/alerts/pane.tsx +97 -29
  299. package/src/plugins/builtin/alerts/price.ts +35 -0
  300. package/src/plugins/builtin/alerts/quotes.ts +24 -0
  301. package/src/plugins/builtin/alerts/research-builder.ts +84 -11
  302. package/src/plugins/builtin/alerts/research-rules.ts +77 -3
  303. package/src/plugins/builtin/alerts/scheduled-check.ts +206 -32
  304. package/src/plugins/builtin/alerts/scheduled-sources.ts +26 -3
  305. package/src/plugins/builtin/alerts/scheduled.ts +188 -29
  306. package/src/plugins/builtin/alerts/storage.ts +13 -10
  307. package/src/plugins/builtin/alerts/targets.ts +12 -3
  308. package/src/plugins/builtin/analytics/index.tsx +8 -2
  309. package/src/plugins/builtin/analytics/metrics.ts +1 -1
  310. package/src/plugins/builtin/analytics/risk-book.ts +215 -0
  311. package/src/plugins/builtin/analytics/risk-client.ts +13 -6
  312. package/src/plugins/builtin/analytics/risk-headless.ts +55 -21
  313. package/src/plugins/builtin/analytics/risk-math.ts +6 -3
  314. package/src/plugins/builtin/analytics/risk-model.ts +297 -104
  315. package/src/plugins/builtin/analytics/risk-options.ts +17 -2
  316. package/src/plugins/builtin/analytics/risk-pane.tsx +107 -43
  317. package/src/plugins/builtin/attention/pane.tsx +22 -16
  318. package/src/plugins/builtin/awards/headless.ts +7 -3
  319. package/src/plugins/builtin/awards/model.ts +18 -0
  320. package/src/plugins/builtin/awards/pane.tsx +12 -9
  321. package/src/plugins/builtin/backtest/export.ts +1 -1
  322. package/src/plugins/builtin/backtest/headless.ts +3 -3
  323. package/src/plugins/builtin/backtest/rules.ts +41 -5
  324. package/src/plugins/builtin/broker-manager/add-flow.tsx +12 -7
  325. package/src/plugins/builtin/broker-manager/detail.tsx +47 -19
  326. package/src/plugins/builtin/broker-manager/footer.ts +27 -11
  327. package/src/plugins/builtin/broker-manager/index.tsx +21 -12
  328. package/src/plugins/builtin/broker-manager/keyboard.ts +1 -1
  329. package/src/plugins/builtin/broker-manager/model.ts +12 -2
  330. package/src/plugins/builtin/broker-manager/pane-actions.tsx +183 -57
  331. package/src/plugins/builtin/broker-manager/table.ts +28 -12
  332. package/src/plugins/builtin/broker-trading/account-picker.tsx +2 -1
  333. package/src/plugins/builtin/broker-trading/chart-levels.ts +82 -13
  334. package/src/plugins/builtin/broker-trading/controller.ts +45 -13
  335. package/src/plugins/builtin/broker-trading/dock.tsx +24 -4
  336. package/src/plugins/builtin/broker-trading/headless.ts +2 -1
  337. package/src/plugins/builtin/broker-trading/index.tsx +7 -1
  338. package/src/plugins/builtin/broker-trading/linked-orders.ts +148 -0
  339. package/src/plugins/builtin/broker-trading/order-feed.ts +75 -7
  340. package/src/plugins/builtin/broker-trading/orders.tsx +109 -31
  341. package/src/plugins/builtin/broker-trading/overview-orders.tsx +9 -3
  342. package/src/plugins/builtin/broker-trading/pane-model.ts +30 -2
  343. package/src/plugins/builtin/broker-trading/pane.tsx +115 -26
  344. package/src/plugins/builtin/broker-trading/ticket-parts.tsx +36 -7
  345. package/src/plugins/builtin/broker-trading/ticket.tsx +122 -36
  346. package/src/plugins/builtin/buildout/cells.tsx +4 -0
  347. package/src/plugins/builtin/buildout/detail/index.tsx +5 -1
  348. package/src/plugins/builtin/buildout/detail/ui.tsx +7 -4
  349. package/src/plugins/builtin/buildout/pane/index.tsx +34 -18
  350. package/src/plugins/builtin/buildout/pane/status.tsx +0 -4
  351. package/src/plugins/builtin/builtin-plugin-meta.ts +1 -1
  352. package/src/plugins/builtin/catalysts/client.ts +2 -2
  353. package/src/plugins/builtin/catalysts/detail.tsx +3 -2
  354. package/src/plugins/builtin/catalysts/index.tsx +1 -1
  355. package/src/plugins/builtin/catalysts/model.ts +49 -4
  356. package/src/plugins/builtin/catalysts/pane.tsx +9 -11
  357. package/src/plugins/builtin/central-bank-rates/client.ts +5 -0
  358. package/src/plugins/builtin/central-bank-rates/headless.ts +36 -10
  359. package/src/plugins/builtin/central-bank-rates/model.ts +33 -8
  360. package/src/plugins/builtin/changelog/index.tsx +1 -0
  361. package/src/plugins/builtin/chart-composer/catalog-inventory.ts +1 -0
  362. package/src/plugins/builtin/chart-composer/chart-spec-edit.ts +2 -1
  363. package/src/plugins/builtin/chart-composer/chart-spec.ts +7 -0
  364. package/src/plugins/builtin/chart-composer/cli-options.ts +2 -5
  365. package/src/plugins/builtin/chart-composer/data-catalog-pane.tsx +2 -1
  366. package/src/plugins/builtin/chart-composer/editor/controller.ts +2 -0
  367. package/src/plugins/builtin/chart-composer/editor.tsx +4 -1
  368. package/src/plugins/builtin/chart-composer/headless-schema.ts +28 -26
  369. package/src/plugins/builtin/chart-composer/headless.ts +253 -35
  370. package/src/plugins/builtin/chart-composer/index.tsx +12 -2
  371. package/src/plugins/builtin/chart-composer/leverage-overlay.ts +142 -0
  372. package/src/plugins/builtin/chart-composer/pane.tsx +128 -28
  373. package/src/plugins/builtin/chart-composer/series-catalog.ts +1 -0
  374. package/src/plugins/builtin/chart-composer/series-expression.ts +65 -6
  375. package/src/plugins/builtin/chart-composer/session-history.ts +15 -21
  376. package/src/plugins/builtin/chart-composer/session-range.ts +4 -2
  377. package/src/plugins/builtin/chart-composer/settings.ts +31 -19
  378. package/src/plugins/builtin/chart-composer/use-series-catalog.ts +5 -6
  379. package/src/plugins/builtin/chart-composer/viewport-labels.ts +18 -8
  380. package/src/plugins/builtin/chat/attachments/model.ts +3 -1
  381. package/src/plugins/builtin/chat/content/index.tsx +1 -1
  382. package/src/plugins/builtin/chat/pane-links/open.ts +1 -1
  383. package/src/plugins/builtin/chat/people.ts +1 -1
  384. package/src/plugins/builtin/clinical-trials/client.ts +5 -2
  385. package/src/plugins/builtin/clinical-trials/model.ts +13 -4
  386. package/src/plugins/builtin/clinical-trials/pane.tsx +32 -12
  387. package/src/plugins/builtin/clinical-trials/ticker-sponsor.ts +17 -0
  388. package/src/plugins/builtin/cloud/askg/controller.ts +1 -1
  389. package/src/plugins/builtin/cloud/askg/lock-note.ts +1 -1
  390. package/src/plugins/builtin/cloud/askg/tool-display.ts +1 -1
  391. package/src/plugins/builtin/cloud/auth-commands.ts +3 -3
  392. package/src/plugins/builtin/cloud/team/pane-sections.tsx +105 -47
  393. package/src/plugins/builtin/cloud/team/pane-ui.tsx +42 -4
  394. package/src/plugins/builtin/cloud/team/pane.tsx +204 -64
  395. package/src/plugins/builtin/cloud/thesis/store.ts +45 -22
  396. package/src/plugins/builtin/cloud-tweets/registration.ts +1 -0
  397. package/src/plugins/builtin/commodities-energy/index.tsx +29 -2
  398. package/src/plugins/builtin/commodities-energy/view-state.ts +2 -0
  399. package/src/plugins/builtin/commodity-balances/pane.tsx +14 -8
  400. package/src/plugins/builtin/company-attention/app-rank.tsx +11 -10
  401. package/src/plugins/builtin/company-attention/building-model.ts +222 -0
  402. package/src/plugins/builtin/company-attention/building.tsx +172 -0
  403. package/src/plugins/builtin/company-attention/client.ts +117 -1
  404. package/src/plugins/builtin/company-attention/evidence.ts +16 -3
  405. package/src/plugins/builtin/company-attention/headless.ts +101 -5
  406. package/src/plugins/builtin/company-attention/index.tsx +6 -3
  407. package/src/plugins/builtin/company-attention/model.ts +33 -7
  408. package/src/plugins/builtin/company-attention/moves-model.ts +253 -0
  409. package/src/plugins/builtin/company-attention/moves.tsx +159 -0
  410. package/src/plugins/builtin/company-attention/pane.tsx +89 -31
  411. package/src/plugins/builtin/company-attention/signals-model.ts +229 -0
  412. package/src/plugins/builtin/company-attention/signals.tsx +160 -0
  413. package/src/plugins/builtin/company-kpis/headless.ts +3 -2
  414. package/src/plugins/builtin/company-kpis/model.ts +2 -2
  415. package/src/plugins/builtin/company-kpis/pane.tsx +5 -4
  416. package/src/plugins/builtin/composite-plugins.ts +2 -1
  417. package/src/plugins/builtin/congress-trades/headless.ts +1 -1
  418. package/src/plugins/builtin/connections/index.ts +1 -0
  419. package/src/plugins/builtin/correlation/headless-schema.ts +3 -2
  420. package/src/plugins/builtin/correlation/headless.ts +7 -4
  421. package/src/plugins/builtin/correlation/relationship/model.ts +1 -0
  422. package/src/plugins/builtin/correlation/settings.ts +1 -0
  423. package/src/plugins/builtin/cot/headless.ts +28 -6
  424. package/src/plugins/builtin/cot/model.ts +12 -0
  425. package/src/plugins/builtin/cot/pane.tsx +7 -5
  426. package/src/plugins/builtin/cpi/headless.ts +5 -1
  427. package/src/plugins/builtin/cpi/pane.tsx +11 -9
  428. package/src/plugins/builtin/credit-boards/model.ts +2 -0
  429. package/src/plugins/builtin/credit-documents/headless.ts +1 -1
  430. package/src/plugins/builtin/credit-documents/pane.tsx +8 -7
  431. package/src/plugins/builtin/crypto-board/client.ts +86 -0
  432. package/src/plugins/builtin/crypto-board/defi-view.tsx +218 -0
  433. package/src/plugins/builtin/crypto-board/defi.ts +239 -0
  434. package/src/plugins/builtin/crypto-board/headless.ts +117 -6
  435. package/src/plugins/builtin/crypto-board/index.tsx +8 -3
  436. package/src/plugins/builtin/crypto-board/model.ts +40 -8
  437. package/src/plugins/builtin/crypto-board/pane.tsx +55 -21
  438. package/src/plugins/builtin/crypto-board/series.ts +19 -1
  439. package/src/plugins/builtin/crypto-etf-flows/client.ts +60 -0
  440. package/src/plugins/builtin/crypto-etf-flows/headless.ts +132 -0
  441. package/src/plugins/builtin/crypto-etf-flows/index.tsx +44 -0
  442. package/src/plugins/builtin/crypto-etf-flows/model.ts +121 -0
  443. package/src/plugins/builtin/crypto-etf-flows/pane.tsx +193 -0
  444. package/src/plugins/builtin/debt-maturities/pane.tsx +4 -3
  445. package/src/plugins/builtin/debug/index.tsx +1 -0
  446. package/src/plugins/builtin/dividend-yield/index.tsx +1 -1
  447. package/src/plugins/builtin/docs/index.tsx +1 -1
  448. package/src/plugins/builtin/docs/pane.tsx +2 -2
  449. package/src/plugins/builtin/docs/targets.ts +1 -1
  450. package/src/plugins/builtin/doe/client.ts +5 -1
  451. package/src/plugins/builtin/doe/headless.ts +12 -6
  452. package/src/plugins/builtin/doe/model.ts +43 -6
  453. package/src/plugins/builtin/doe/pane.tsx +19 -12
  454. package/src/plugins/builtin/earnings/board-model.ts +13 -6
  455. package/src/plugins/builtin/earnings/board-table.ts +4 -1
  456. package/src/plugins/builtin/earnings/board.tsx +253 -50
  457. package/src/plugins/builtin/earnings/calendar-model.ts +188 -0
  458. package/src/plugins/builtin/earnings/calendar.tsx +338 -0
  459. package/src/plugins/builtin/earnings/client.ts +4 -3
  460. package/src/plugins/builtin/earnings/headless.ts +53 -15
  461. package/src/plugins/builtin/earnings/history-model.ts +53 -36
  462. package/src/plugins/builtin/earnings/index.tsx +15 -22
  463. package/src/plugins/builtin/earnings/model.ts +17 -12
  464. package/src/plugins/builtin/earnings/scope.ts +89 -0
  465. package/src/plugins/builtin/earnings-calls/calendar.tsx +310 -0
  466. package/src/plugins/builtin/earnings-calls/data.ts +146 -2
  467. package/src/plugins/builtin/earnings-calls/headless.ts +151 -9
  468. package/src/plugins/builtin/earnings-calls/index.tsx +3 -3
  469. package/src/plugins/builtin/earnings-calls/lock-note.ts +1 -1
  470. package/src/plugins/builtin/earnings-calls/pane.tsx +149 -31
  471. package/src/plugins/builtin/earnings-calls/upcoming.ts +195 -0
  472. package/src/plugins/builtin/earnings-ripple/pane.tsx +10 -5
  473. package/src/plugins/builtin/econ/calendar-model.ts +132 -20
  474. package/src/plugins/builtin/econ/detail-view.tsx +48 -10
  475. package/src/plugins/builtin/econ/fred-catalog.ts +23 -6
  476. package/src/plugins/builtin/econ/fred-series-map.ts +4 -0
  477. package/src/plugins/builtin/econ/index.tsx +112 -25
  478. package/src/plugins/builtin/econ/print-watch.ts +2 -1
  479. package/src/plugins/builtin/econ/types.ts +32 -1
  480. package/src/plugins/builtin/econ-statistics/client.ts +16 -3
  481. package/src/plugins/builtin/econ-statistics/defs.ts +4 -0
  482. package/src/plugins/builtin/econ-statistics/detail.tsx +2 -2
  483. package/src/plugins/builtin/econ-statistics/headless.ts +13 -2
  484. package/src/plugins/builtin/econ-statistics/index.tsx +3 -3
  485. package/src/plugins/builtin/econ-statistics/pane.tsx +2 -1
  486. package/src/plugins/builtin/econ-statistics/stats.ts +103 -0
  487. package/src/plugins/builtin/econ-statistics/view.ts +16 -1
  488. package/src/plugins/builtin/equity-screener/client.ts +21 -3
  489. package/src/plugins/builtin/equity-screener/headless.ts +77 -5
  490. package/src/plugins/builtin/equity-screener/live.ts +1 -1
  491. package/src/plugins/builtin/equity-screener/model.ts +34 -0
  492. package/src/plugins/builtin/equity-screener/pane.tsx +148 -106
  493. package/src/plugins/builtin/equity-screener/screen-check.ts +90 -0
  494. package/src/plugins/builtin/equity-screener/ticker-check.tsx +148 -0
  495. package/src/plugins/builtin/estimate-revisions/headless.ts +3 -1
  496. package/src/plugins/builtin/estimate-revisions/lock-note.ts +3 -3
  497. package/src/plugins/builtin/estimate-revisions/model.ts +8 -10
  498. package/src/plugins/builtin/exposure/headless.ts +51 -6
  499. package/src/plugins/builtin/exposure/index.tsx +28 -2
  500. package/src/plugins/builtin/exposure/model.ts +7 -0
  501. package/src/plugins/builtin/exposure/pane.tsx +16 -10
  502. package/src/plugins/builtin/fear-greed/index.tsx +1 -1
  503. package/src/plugins/builtin/filing-events/index.tsx +1 -1
  504. package/src/plugins/builtin/futures/model.ts +10 -9
  505. package/src/plugins/builtin/futures/returns.ts +8 -36
  506. package/src/plugins/builtin/futures/table.tsx +1 -1
  507. package/src/plugins/builtin/futures-curve/client.ts +40 -9
  508. package/src/plugins/builtin/futures-curve/headless.ts +39 -17
  509. package/src/plugins/builtin/futures-curve/model.ts +258 -69
  510. package/src/plugins/builtin/futures-curve/pane.tsx +46 -17
  511. package/src/plugins/builtin/fx-matrix/client.ts +15 -8
  512. package/src/plugins/builtin/fx-matrix/headless.ts +32 -14
  513. package/src/plugins/builtin/fx-matrix/index.tsx +13 -11
  514. package/src/plugins/builtin/fx-matrix/live-legs.ts +22 -0
  515. package/src/plugins/builtin/fx-matrix/settings.ts +2 -1
  516. package/src/plugins/builtin/gpu/board.tsx +4 -1
  517. package/src/plugins/builtin/gpu/changes.tsx +10 -10
  518. package/src/plugins/builtin/gpu/equities.tsx +4 -1
  519. package/src/plugins/builtin/gpu/headless.ts +9 -4
  520. package/src/plugins/builtin/gpu/history.tsx +4 -2
  521. package/src/plugins/builtin/gpu/pane.tsx +5 -3
  522. package/src/plugins/builtin/help/index.tsx +13 -3
  523. package/src/plugins/builtin/holders/beneficial-model.ts +8 -11
  524. package/src/plugins/builtin/holders/beneficial-report.ts +6 -5
  525. package/src/plugins/builtin/holders/beneficial-view.tsx +7 -3
  526. package/src/plugins/builtin/holders/client.ts +15 -2
  527. package/src/plugins/builtin/holders/format.ts +28 -17
  528. package/src/plugins/builtin/holders/headless.ts +48 -8
  529. package/src/plugins/builtin/holders/index-holders.ts +264 -0
  530. package/src/plugins/builtin/holders/pane.tsx +79 -15
  531. package/src/plugins/builtin/holders/report-rows.ts +35 -7
  532. package/src/plugins/builtin/holders/table-model.ts +2 -1
  533. package/src/plugins/builtin/holders/thirteenf-match.ts +3 -1
  534. package/src/plugins/builtin/holders/treemap.tsx +2 -2
  535. package/src/plugins/builtin/insider/base-values.ts +11 -7
  536. package/src/plugins/builtin/insider/client.ts +3 -0
  537. package/src/plugins/builtin/insider/headless.ts +20 -7
  538. package/src/plugins/builtin/insider/index.tsx +17 -8
  539. package/src/plugins/builtin/insider/issuer.ts +34 -4
  540. package/src/plugins/builtin/insider/signals-client.ts +3 -3
  541. package/src/plugins/builtin/insider/signals.tsx +1 -1
  542. package/src/plugins/builtin/insider/table-model.ts +35 -13
  543. package/src/plugins/builtin/insider/table.tsx +5 -2
  544. package/src/plugins/builtin/ipo-calendar/pane.tsx +7 -4
  545. package/src/plugins/builtin/iv-history/client.ts +20 -0
  546. package/src/plugins/builtin/iv-history/events.ts +145 -0
  547. package/src/plugins/builtin/iv-history/format.ts +3 -0
  548. package/src/plugins/builtin/iv-history/headless.ts +91 -7
  549. package/src/plugins/builtin/iv-history/index.tsx +1 -1
  550. package/src/plugins/builtin/iv-history/model.ts +13 -4
  551. package/src/plugins/builtin/iv-history/series.ts +3 -1
  552. package/src/plugins/builtin/jobs/lock-note.ts +1 -1
  553. package/src/plugins/builtin/jobs/model.ts +4 -15
  554. package/src/plugins/builtin/jobs/pane.tsx +7 -5
  555. package/src/plugins/builtin/jobs/share-bars.tsx +11 -5
  556. package/src/plugins/builtin/jodi/pane.tsx +14 -8
  557. package/src/plugins/builtin/layout-manager/index.tsx +1 -0
  558. package/src/plugins/builtin/macro-day/headless.ts +20 -7
  559. package/src/plugins/builtin/macro-day/index.tsx +3 -2
  560. package/src/plugins/builtin/macro-day/model.ts +29 -8
  561. package/src/plugins/builtin/macro-day/pane.tsx +46 -10
  562. package/src/plugins/builtin/macro-day/releases.ts +55 -13
  563. package/src/plugins/builtin/market-heatmap/data.ts +9 -2
  564. package/src/plugins/builtin/market-heatmap/evidence.ts +1 -1
  565. package/src/plugins/builtin/market-heatmap/headless.ts +9 -6
  566. package/src/plugins/builtin/market-heatmap/index.tsx +3 -3
  567. package/src/plugins/builtin/market-heatmap/model.ts +10 -7
  568. package/src/plugins/builtin/market-movers/client.ts +36 -21
  569. package/src/plugins/builtin/market-movers/headless.ts +8 -2
  570. package/src/plugins/builtin/market-movers/index.tsx +16 -10
  571. package/src/plugins/builtin/market-movers/screener.ts +33 -11
  572. package/src/plugins/builtin/market-movers/session-body.tsx +4 -2
  573. package/src/plugins/builtin/market-movers/session-table.ts +4 -2
  574. package/src/plugins/builtin/market-movers/table.ts +4 -1
  575. package/src/plugins/builtin/market-valuation/headless.ts +2 -0
  576. package/src/plugins/builtin/market-valuation/view.ts +5 -0
  577. package/src/plugins/builtin/members/headless.ts +6 -5
  578. package/src/plugins/builtin/members/pane.tsx +11 -4
  579. package/src/plugins/builtin/mna/client.ts +1 -0
  580. package/src/plugins/builtin/mna/detail.tsx +20 -32
  581. package/src/plugins/builtin/mna/distress/detail.tsx +16 -4
  582. package/src/plugins/builtin/mna/distress/model.ts +3 -2
  583. package/src/plugins/builtin/mna/distress/pane.tsx +7 -4
  584. package/src/plugins/builtin/mna/headless.ts +6 -13
  585. package/src/plugins/builtin/mna/model.ts +93 -15
  586. package/src/plugins/builtin/mna/pane.tsx +5 -4
  587. package/src/plugins/builtin/news/headless.ts +12 -6
  588. package/src/plugins/builtin/news/index.tsx +10 -1
  589. package/src/plugins/builtin/news/wire/index.tsx +3 -2
  590. package/src/plugins/builtin/news/wire/news/command-bar-search.ts +26 -10
  591. package/src/plugins/builtin/news/wire/news/query-presets.ts +6 -2
  592. package/src/plugins/builtin/news/wire/rss/cli.ts +3 -3
  593. package/src/plugins/builtin/notes/cli.ts +50 -15
  594. package/src/plugins/builtin/notes/export.ts +17 -6
  595. package/src/plugins/builtin/notes/files.ts +16 -5
  596. package/src/plugins/builtin/openfda/pane.tsx +1 -1
  597. package/src/plugins/builtin/options/carry.ts +2 -2
  598. package/src/plugins/builtin/options/enrichment-model.ts +10 -9
  599. package/src/plugins/builtin/options/index.tsx +1 -1
  600. package/src/plugins/builtin/options/model-spot.ts +70 -4
  601. package/src/plugins/builtin/options/view.tsx +51 -23
  602. package/src/plugins/builtin/options-calculator/headless.ts +46 -7
  603. package/src/plugins/builtin/options-calculator/pane.tsx +3 -2
  604. package/src/plugins/builtin/options-positioning/headless.ts +11 -3
  605. package/src/plugins/builtin/options-positioning/model.ts +24 -0
  606. package/src/plugins/builtin/options-positioning/pane.tsx +10 -12
  607. package/src/plugins/builtin/options-scenario/client.ts +142 -29
  608. package/src/plugins/builtin/options-scenario/collar.ts +8 -6
  609. package/src/plugins/builtin/options-scenario/csp-screen-headless.ts +127 -0
  610. package/src/plugins/builtin/options-scenario/csp-screen-pane.tsx +165 -0
  611. package/src/plugins/builtin/options-scenario/csp-screen.ts +258 -0
  612. package/src/plugins/builtin/options-scenario/csp.ts +101 -21
  613. package/src/plugins/builtin/options-scenario/headless.ts +49 -21
  614. package/src/plugins/builtin/options-scenario/hedge.ts +20 -14
  615. package/src/plugins/builtin/options-scenario/index.tsx +28 -3
  616. package/src/plugins/builtin/options-scenario/model.ts +13 -0
  617. package/src/plugins/builtin/options-scenario/pane.tsx +22 -10
  618. package/src/plugins/builtin/perps/equity-row.tsx +11 -3
  619. package/src/plugins/builtin/perps/freshness.ts +8 -5
  620. package/src/plugins/builtin/perps/headless.ts +3 -1
  621. package/src/plugins/builtin/perps/list-perpetuals.ts +25 -4
  622. package/src/plugins/builtin/perps/live-rows.ts +161 -0
  623. package/src/plugins/builtin/perps/markets-section.tsx +154 -0
  624. package/src/plugins/builtin/perps/pane.tsx +36 -17
  625. package/src/plugins/builtin/perps/venue-markets.ts +96 -0
  626. package/src/plugins/builtin/plugin-marketplace/index.tsx +2 -1
  627. package/src/plugins/builtin/plugin-marketplace/pane.tsx +145 -60
  628. package/src/plugins/builtin/portfolio-list/cli/bulk-symbols.ts +78 -27
  629. package/src/plugins/builtin/portfolio-list/cli/portfolio-command.ts +158 -141
  630. package/src/plugins/builtin/portfolio-list/cli/render.ts +49 -20
  631. package/src/plugins/builtin/portfolio-list/cli/shared.ts +3 -3
  632. package/src/plugins/builtin/portfolio-list/cli/watchlist-command.ts +29 -24
  633. package/src/plugins/builtin/portfolio-list/headless.ts +6 -3
  634. package/src/plugins/builtin/portfolio-list/income.ts +13 -2
  635. package/src/plugins/builtin/portfolio-list/index.tsx +9 -2
  636. package/src/plugins/builtin/portfolio-list/pane/index.tsx +21 -8
  637. package/src/plugins/builtin/portfolio-list/pane/purchase-date-fx.ts +46 -0
  638. package/src/plugins/builtin/portfolio-list/summary/live-accounts.ts +16 -9
  639. package/src/plugins/builtin/portfolio-list/summary/totals.ts +2 -15
  640. package/src/plugins/builtin/power/client.ts +6 -3
  641. package/src/plugins/builtin/power/evidence.ts +22 -7
  642. package/src/plugins/builtin/power/gas.tsx +5 -1
  643. package/src/plugins/builtin/power/pane.tsx +44 -32
  644. package/src/plugins/builtin/power/prices.tsx +10 -3
  645. package/src/plugins/builtin/research/analyst-headless.ts +25 -8
  646. package/src/plugins/builtin/research/analyst-model.ts +68 -3
  647. package/src/plugins/builtin/research/corporate-actions-pane.tsx +63 -14
  648. package/src/plugins/builtin/research/event-model.ts +3 -1
  649. package/src/plugins/builtin/research/event-sources.ts +12 -4
  650. package/src/plugins/builtin/research/index.tsx +2 -1
  651. package/src/plugins/builtin/research/relative-valuation-basis.ts +58 -0
  652. package/src/plugins/builtin/research/relative-valuation-columns.ts +31 -2
  653. package/src/plugins/builtin/research/relative-valuation-currency.ts +12 -5
  654. package/src/plugins/builtin/research/relative-valuation-headless.ts +84 -26
  655. package/src/plugins/builtin/research/relative-valuation-model.ts +88 -19
  656. package/src/plugins/builtin/research/relative-valuation-pane.tsx +76 -9
  657. package/src/plugins/builtin/research/relative-valuation-peers.ts +1 -1
  658. package/src/plugins/builtin/reverse-dcf/client.ts +2 -1
  659. package/src/plugins/builtin/reverse-dcf/model.ts +10 -5
  660. package/src/plugins/builtin/risk-factors/index.tsx +2 -2
  661. package/src/plugins/builtin/scanner/lock-note.ts +1 -1
  662. package/src/plugins/builtin/seasonality/client.ts +2 -1
  663. package/src/plugins/builtin/sec/forms.ts +13 -0
  664. package/src/plugins/builtin/sec/fund-abroad.ts +32 -0
  665. package/src/plugins/builtin/sec/fund-facts.ts +68 -8
  666. package/src/plugins/builtin/sec/headless.ts +85 -8
  667. package/src/plugins/builtin/sec/index.tsx +58 -12
  668. package/src/plugins/builtin/sectors/client.ts +6 -4
  669. package/src/plugins/builtin/sectors/sector-model.ts +11 -15
  670. package/src/plugins/builtin/series-inventory.ts +2 -0
  671. package/src/plugins/builtin/shared/broker-reconnect.ts +107 -22
  672. package/src/plugins/builtin/shared/cloud-resource.ts +15 -2
  673. package/src/plugins/builtin/shared/cloud-upgrade.ts +34 -6
  674. package/src/plugins/builtin/shared/earnings-calendar.ts +375 -0
  675. package/src/plugins/builtin/{earnings/estimate-basis.ts → shared/earnings-estimate-basis.ts} +1 -1
  676. package/src/plugins/builtin/shared/earnings-report.ts +3 -3
  677. package/src/plugins/builtin/shared/fx-rate-freshness.ts +23 -1
  678. package/src/plugins/builtin/shared/job-posting.ts +129 -0
  679. package/src/plugins/builtin/shared/pro-lock-note.ts +3 -3
  680. package/src/plugins/builtin/shared/report-freshness.ts +3 -0
  681. package/src/plugins/builtin/shared/research-trading.tsx +23 -0
  682. package/src/plugins/builtin/shared/series-cache.ts +2 -0
  683. package/src/plugins/builtin/shared/series-list-detail.tsx +3 -1
  684. package/src/plugins/builtin/shared/ticker-surface.ts +2 -1
  685. package/src/plugins/builtin/shared/volatility/options.ts +2 -1
  686. package/src/plugins/builtin/short-interest/client.ts +2 -0
  687. package/src/plugins/builtin/short-interest/headless.ts +41 -12
  688. package/src/plugins/builtin/short-interest/index.tsx +23 -1
  689. package/src/plugins/builtin/short-interest/model.ts +70 -19
  690. package/src/plugins/builtin/short-interest/pane.tsx +19 -2
  691. package/src/plugins/builtin/short-interest/publications-client.ts +82 -0
  692. package/src/plugins/builtin/short-interest/publications-headless.ts +29 -0
  693. package/src/plugins/builtin/short-interest/publications-model.ts +50 -0
  694. package/src/plugins/builtin/short-interest/publications-pane.tsx +66 -0
  695. package/src/plugins/builtin/short-interest/schedule.ts +35 -2
  696. package/src/plugins/builtin/short-interest/surface.tsx +11 -4
  697. package/src/plugins/builtin/short-interest/types.ts +9 -0
  698. package/src/plugins/builtin/short-interest/watch-client.ts +14 -8
  699. package/src/plugins/builtin/short-interest/watch-model.ts +12 -25
  700. package/src/plugins/builtin/short-interest/watch-pane.tsx +5 -1
  701. package/src/plugins/builtin/social-mentions/client.ts +2 -1
  702. package/src/plugins/builtin/supply-chain/flow.tsx +33 -9
  703. package/src/plugins/builtin/supply-chain/model.ts +51 -3
  704. package/src/plugins/builtin/supply-chain/pane.tsx +78 -39
  705. package/src/plugins/builtin/supply-chain/row-evidence.tsx +1 -1
  706. package/src/plugins/builtin/themes/headless.ts +8 -5
  707. package/src/plugins/builtin/themes/model.ts +14 -4
  708. package/src/plugins/builtin/themes/pane.tsx +24 -5
  709. package/src/plugins/builtin/thirteenf/headless.ts +5 -5
  710. package/src/plugins/builtin/thirteenf/signals.ts +3 -1
  711. package/src/plugins/builtin/ticker-detail/adr-pair/headless.ts +123 -0
  712. package/src/plugins/builtin/ticker-detail/adr-pair/model.ts +132 -0
  713. package/src/plugins/builtin/ticker-detail/adr-pair/tab.tsx +87 -0
  714. package/src/plugins/builtin/ticker-detail/data-panes/historical-prices.tsx +40 -26
  715. package/src/plugins/builtin/ticker-detail/data-panes/history-bars.ts +8 -4
  716. package/src/plugins/builtin/ticker-detail/data-panes/returns-history.ts +67 -3
  717. package/src/plugins/builtin/ticker-detail/data-panes/returns-model.ts +112 -5
  718. package/src/plugins/builtin/ticker-detail/data-panes/returns-pane.tsx +17 -2
  719. package/src/plugins/builtin/ticker-detail/financials/aggregation.ts +21 -7
  720. package/src/plugins/builtin/ticker-detail/financials/model.ts +36 -1
  721. package/src/plugins/builtin/ticker-detail/financials/offerings.ts +56 -0
  722. package/src/plugins/builtin/ticker-detail/financials/ratios.ts +62 -13
  723. package/src/plugins/builtin/ticker-detail/financials/tab.tsx +30 -4
  724. package/src/plugins/builtin/ticker-detail/headless-schema.ts +14 -2
  725. package/src/plugins/builtin/ticker-detail/headless.ts +148 -35
  726. package/src/plugins/builtin/ticker-detail/index.tsx +37 -5
  727. package/src/plugins/builtin/ticker-detail/overview/model.ts +65 -10
  728. package/src/plugins/builtin/ticker-detail/overview/pane.tsx +9 -1
  729. package/src/plugins/builtin/ticker-detail/overview-tab.tsx +68 -11
  730. package/src/plugins/builtin/ticker-detail/pane.tsx +11 -0
  731. package/src/plugins/builtin/ticker-detail/quote-footer.ts +8 -3
  732. package/src/plugins/builtin/ticker-detail/research-tabs.ts +11 -0
  733. package/src/plugins/builtin/vol-surface/client.ts +28 -7
  734. package/src/plugins/builtin/vol-surface/headless.ts +43 -15
  735. package/src/plugins/builtin/vol-surface/model.ts +34 -12
  736. package/src/plugins/builtin/vol-surface/pane.tsx +33 -13
  737. package/src/plugins/builtin/vol-surface/stored.ts +34 -3
  738. package/src/plugins/builtin/vol-surface/tables.ts +14 -0
  739. package/src/plugins/builtin/volatility/model.ts +5 -10
  740. package/src/plugins/builtin/world-venue-map/basemap-layer.tsx +4 -3
  741. package/src/plugins/builtin/world-venue-map/basemap.ts +3 -1
  742. package/src/plugins/builtin/world-venue-map/chokepoint-chart.ts +40 -0
  743. package/src/plugins/builtin/world-venue-map/evidence.ts +1 -1
  744. package/src/plugins/builtin/world-venue-map/geo-series.ts +90 -11
  745. package/src/plugins/builtin/world-venue-map/headless.ts +1 -1
  746. package/src/plugins/builtin/world-venue-map/index.ts +3 -26
  747. package/src/plugins/builtin/world-venue-map/layers.ts +1 -1
  748. package/src/plugins/builtin/world-venue-map/map.tsx +2 -1
  749. package/src/plugins/builtin/world-venue-map/pane.tsx +4 -2
  750. package/src/plugins/builtin/world-venue-map/venue-header.tsx +15 -4
  751. package/src/plugins/builtin/yield-curve/client.ts +25 -0
  752. package/src/plugins/builtin/yield-curve/curves.ts +7 -4
  753. package/src/plugins/builtin/yield-curve/headless.ts +38 -4
  754. package/src/plugins/builtin/yield-curve/history.ts +4 -3
  755. package/src/plugins/builtin/yield-curve/index.tsx +12 -6
  756. package/src/plugins/builtin/yield-curve/swaps-model.ts +93 -0
  757. package/src/plugins/builtin/yield-curve/swaps.tsx +99 -0
  758. package/src/plugins/bundle.ts +1 -1
  759. package/src/plugins/catalog-browser.ts +2 -1
  760. package/src/plugins/compat.ts +3 -3
  761. package/src/plugins/dependencies.ts +75 -14
  762. package/src/plugins/extracted-plugins.ts +132 -34
  763. package/src/plugins/host-link.ts +149 -34
  764. package/src/plugins/installer.ts +35 -10
  765. package/src/plugins/loader.ts +206 -38
  766. package/src/plugins/manager-node.ts +2 -2
  767. package/src/plugins/marketplace/deactivation.ts +22 -0
  768. package/src/plugins/marketplace/model.ts +2 -2
  769. package/src/plugins/marketplace/packs.ts +1 -1
  770. package/src/plugins/ownership.ts +1 -1
  771. package/src/plugins/peer-retry.ts +155 -0
  772. package/src/plugins/registry/contributions.ts +3 -1
  773. package/src/plugins/registry/index.ts +4 -3
  774. package/src/plugins/registry/plugin-state.ts +3 -0
  775. package/src/plugins/seed-notice.ts +20 -0
  776. package/src/plugins/shortcut-argument.ts +39 -0
  777. package/src/portfolio/allocation.ts +1 -1
  778. package/src/portfolio/collection-name.ts +31 -0
  779. package/src/portfolio/column-values.ts +10 -8
  780. package/src/portfolio/cost-fx.ts +296 -19
  781. package/src/portfolio/manual-lots.ts +75 -0
  782. package/src/portfolio/mutations.ts +60 -22
  783. package/src/portfolio/suffixed-listings.ts +209 -0
  784. package/src/portfolio/totals-currency.ts +24 -0
  785. package/src/public/__snapshots__/public-api.test.ts.snap +14 -0
  786. package/src/public/time-series.ts +11 -8
  787. package/src/remote/schema.ts +1 -1
  788. package/src/renderers/browser/config-host.ts +3 -0
  789. package/src/renderers/browser/main.tsx +23 -3
  790. package/src/renderers/dom/boot-frame-page.ts +187 -0
  791. package/src/renderers/dom/boot-frame.ts +237 -0
  792. package/src/renderers/dom/build-assets.ts +46 -8
  793. package/src/renderers/dom/desktop/controls.tsx +1 -1
  794. package/src/renderers/dom/desktop/query-bar.tsx +2 -0
  795. package/src/renderers/dom/dom-ui-host.tsx +4 -29
  796. package/src/renderers/dom/host/ascii-text.ts +16 -2
  797. package/src/renderers/dom/host/box.tsx +43 -2
  798. package/src/renderers/dom/host/chart-surface.tsx +2 -0
  799. package/src/renderers/dom/host/hls.chunk.ts +3 -0
  800. package/src/renderers/dom/host/image-surface.tsx +49 -0
  801. package/src/renderers/dom/host/media-surface.tsx +24 -18
  802. package/src/renderers/dom/host/mouse.ts +30 -0
  803. package/src/renderers/dom/host/size-observer.ts +1 -1
  804. package/src/renderers/dom/host/style.ts +1 -1
  805. package/src/renderers/dom/host/tabs.tsx +16 -5
  806. package/src/renderers/dom/host/top-surface.ts +127 -0
  807. package/src/renderers/dom/styles.css +115 -0
  808. package/src/renderers/dom/test-utils.tsx +2 -1
  809. package/src/renderers/electrobun/bun/application-menu/index.ts +3 -3
  810. package/src/renderers/electrobun/bun/core-capabilities.ts +9 -1
  811. package/src/renderers/electrobun/bun/desktop/backend-requests.ts +3 -0
  812. package/src/renderers/electrobun/bun/desktop/backend.ts +56 -3
  813. package/src/renderers/electrobun/bun/desktop/detached-windows.ts +1 -1
  814. package/src/renderers/electrobun/bun/desktop/host-requests.ts +9 -3
  815. package/src/renderers/electrobun/bun/desktop/initialization.ts +81 -18
  816. package/src/renderers/electrobun/bun/desktop/update.ts +210 -30
  817. package/src/renderers/electrobun/bun/external-plugins.ts +29 -7
  818. package/src/renderers/electrobun/bun/index.ts +11 -1
  819. package/src/renderers/electrobun/bun/window/boot-frame.ts +67 -0
  820. package/src/renderers/electrobun/bun/window/create.ts +4 -1
  821. package/src/renderers/electrobun/shared/boot-frame.ts +7 -0
  822. package/src/renderers/electrobun/shared/protocol.ts +6 -1
  823. package/src/renderers/electrobun/view/cli-pane-shot-entry.tsx +1 -1
  824. package/src/renderers/electrobun/view/config-host.ts +3 -0
  825. package/src/renderers/electrobun/view/fatal-screen.tsx +1 -1
  826. package/src/renderers/electrobun/view/main.tsx +30 -4
  827. package/src/renderers/electrobun/view/news-source.ts +9 -7
  828. package/src/renderers/electrobun/view/remote/asset-data-client.ts +9 -2
  829. package/src/renderers/electrobun/view/ui-host.tsx +1 -1
  830. package/src/renderers/opentui/browser-open.ts +88 -0
  831. package/src/renderers/opentui/host.tsx +5 -14
  832. package/src/renderers/opentui/image/loader.ts +3 -2
  833. package/src/renderers/opentui/native-smoke.ts +10 -1
  834. package/src/renderers/opentui/pane-image/index.ts +2 -1
  835. package/src/renderers/opentui/render-lib.ts +253 -0
  836. package/src/renderers/opentui/render-timing-smoke.ts +1 -1
  837. package/src/renderers/opentui/start.tsx +8 -1
  838. package/src/renderers/share/layout-view.tsx +2 -2
  839. package/src/renderers/share/main.tsx +4 -4
  840. package/src/renderers/share/view.tsx +1 -1
  841. package/src/series/resolve.ts +22 -6
  842. package/src/series/standalone.ts +30 -2
  843. package/src/series/types.ts +8 -1
  844. package/src/shares/api.ts +4 -1
  845. package/src/shares/pane.ts +1 -1
  846. package/src/sources/gloomberb-cloud/fred-series.ts +46 -1
  847. package/src/sources/gloomberb-cloud/index.ts +39 -16
  848. package/src/sources/gloomberb-cloud/news.ts +39 -0
  849. package/src/sources/gloomberb-cloud/normalizers.ts +14 -1
  850. package/src/sources/gloomberb-cloud/perpetuals.ts +49 -1
  851. package/src/sources/listing-symbols.ts +37 -0
  852. package/src/sources/provider-errors.ts +16 -2
  853. package/src/sources/provider-router/financial-routes.ts +21 -3
  854. package/src/sources/provider-router/financials.ts +15 -2
  855. package/src/sources/provider-router/history.ts +30 -8
  856. package/src/sources/provider-router/index.ts +16 -0
  857. package/src/sources/provider-router/primary.ts +1 -1
  858. package/src/state/app/bootstrap.ts +23 -0
  859. package/src/state/hooks/inline-tickers.ts +30 -5
  860. package/src/sync/controller.ts +1 -1
  861. package/src/sync/core-contributors.ts +46 -14
  862. package/src/team/collections-sync.ts +2 -1
  863. package/src/team/collections.ts +178 -17
  864. package/src/telemetry/crash-reports.ts +21 -4
  865. package/src/telemetry/update-failures-node.ts +59 -0
  866. package/src/telemetry/update-failures.ts +307 -0
  867. package/src/test-support/builtin-panes.ts +1 -1
  868. package/src/theme/colors.ts +3 -30
  869. package/src/theme/ui-tokens.ts +37 -1
  870. package/src/tickers/company-name-listing.ts +215 -36
  871. package/src/tickers/company-name.ts +43 -0
  872. package/src/tickers/index-roots.ts +47 -0
  873. package/src/tickers/instrument-label.ts +5 -1
  874. package/src/tickers/listing-fate.ts +30 -0
  875. package/src/tickers/metadata.ts +10 -0
  876. package/src/tickers/perpetual-listing.ts +5 -2
  877. package/src/tickers/search/home-listing.ts +75 -0
  878. package/src/tickers/search/index.ts +76 -27
  879. package/src/tickers/search/ranking.ts +54 -4
  880. package/src/tickers/search/upsert.ts +29 -0
  881. package/src/tickers/terminal-codes.ts +416 -40
  882. package/src/time-series/bar-aggregation.ts +243 -0
  883. package/src/time-series/base-series.ts +307 -0
  884. package/src/time-series/chart-bounds.ts +349 -0
  885. package/src/time-series/chart-seed.ts +142 -0
  886. package/src/time-series/economic.ts +5 -0
  887. package/src/time-series/fundamentals.ts +18 -3
  888. package/src/time-series/history-acquisition.ts +499 -0
  889. package/src/time-series/leverage.ts +100 -0
  890. package/src/time-series/market-resolution.ts +4 -2
  891. package/src/time-series/market.ts +2 -1
  892. package/src/time-series/price-comparison.ts +175 -30
  893. package/src/time-series/range.ts +9 -1
  894. package/src/time-series/resolution.ts +174 -16
  895. package/src/time-series/resolve-context.ts +157 -0
  896. package/src/time-series/resolve.ts +126 -1577
  897. package/src/time-series/series-name.ts +38 -0
  898. package/src/time-series/series-presentation.ts +208 -0
  899. package/src/time-series/spec.ts +11 -6
  900. package/src/time-series/studies.ts +109 -12
  901. package/src/time-series/tail-reconcile.ts +121 -0
  902. package/src/time-series/types.ts +29 -2
  903. package/src/time-series/use-chart-resolution.ts +4 -5
  904. package/src/types/broker.ts +10 -0
  905. package/src/types/config.ts +14 -0
  906. package/src/types/data-provider.ts +20 -0
  907. package/src/types/exchange-rate.ts +6 -0
  908. package/src/types/financials.ts +104 -7
  909. package/src/types/headless.ts +83 -6
  910. package/src/types/instrument.ts +3 -0
  911. package/src/types/issuer-listings.ts +28 -0
  912. package/src/types/plugin.ts +65 -8
  913. package/src/types/price-history.ts +2 -0
  914. package/src/types/ticker.ts +13 -0
  915. package/src/types/trading.ts +59 -1
  916. package/src/ui/ascii-font.ts +13 -1
  917. package/src/ui/host.tsx +6 -1
  918. package/src/updater/command-names.ts +175 -0
  919. package/src/updater/failure.ts +163 -0
  920. package/src/updater/index.ts +97 -28
  921. package/src/utils/calendar-date.ts +32 -15
  922. package/src/utils/cash-runway.ts +241 -0
  923. package/src/utils/central-banks.ts +42 -0
  924. package/src/utils/cli-output.ts +259 -80
  925. package/src/utils/contract-month.ts +16 -0
  926. package/src/utils/crypto-pair.ts +61 -3
  927. package/src/utils/currency-pair.ts +26 -0
  928. package/src/utils/currency-units.ts +29 -0
  929. package/src/utils/datetime-format.ts +10 -0
  930. package/src/utils/debug-log.ts +1 -1
  931. package/src/utils/decimal-comma.ts +39 -6
  932. package/src/utils/exchange-announcements.ts +71 -0
  933. package/src/utils/exchange-rate-snapshot.ts +10 -0
  934. package/src/utils/financial-statements.ts +83 -4
  935. package/src/utils/format.ts +34 -16
  936. package/src/utils/fundamentals.ts +150 -34
  937. package/src/utils/fx-market-hours.ts +10 -1
  938. package/src/utils/latest-financial-period.ts +8 -0
  939. package/src/utils/linux-libc.ts +54 -0
  940. package/src/utils/market-capitalization.ts +111 -15
  941. package/src/utils/max-drawdown.ts +64 -0
  942. package/src/utils/network-failure.ts +83 -0
  943. package/src/utils/option-expiry.ts +139 -7
  944. package/src/utils/price-earnings.ts +11 -5
  945. package/src/utils/price-history.ts +18 -8
  946. package/src/utils/price-window.ts +131 -0
  947. package/src/utils/release-date.ts +47 -0
  948. package/src/utils/sec.ts +71 -0
  949. package/src/utils/throttled-fetch.ts +11 -4
  950. package/src/utils/trailing-eps.ts +67 -0
  951. package/src/utils/typed-text.ts +21 -0
  952. package/src/utils/utc-time.ts +24 -1
  953. package/src/version.ts +6 -0
  954. package/src/cli/pane-functions/screenshot.ts +0 -2122
@@ -1,4 +1,4 @@
1
- import type { ChartResolution, TimeRange } from "./range";
1
+ import type { ChartResolution, CustomChartResolution, TimeRange } from "./range";
2
2
  import type { ChartResolutionSupport, ManualChartResolution } from "./resolution";
3
3
  import type { InstrumentRef } from "../market-data/request-types";
4
4
  import type { SeriesAttribution } from "../series/types";
@@ -69,7 +69,20 @@ export type ChartStudyKind =
69
69
  | "spread"
70
70
  | "correlation"
71
71
  /** A weighted sum of any number of series over a divisor: `(2*42*RB=F + 42*HO=F - 3*CL=F)/3`. */
72
- | "formula";
72
+ | "formula"
73
+ /**
74
+ * A leveraged or inverse fund's objective drawn from its index fund: `factor`
75
+ * times the index fund's return each session, compounded (3× daily QQQ beside
76
+ * TQQQ). Inputs: the index fund.
77
+ */
78
+ | "leverage"
79
+ /**
80
+ * How far a leveraged fund falls short of its objective, in percentage
81
+ * points: the fund against the `factor`× daily line, and that line against
82
+ * `factor` times the index fund's return over the period. Inputs: the fund,
83
+ * then the index fund.
84
+ */
85
+ | "leverage-decay";
73
86
 
74
87
  export interface ChartStudySpec {
75
88
  id: string;
@@ -113,6 +126,13 @@ export interface TimeSeriesPoint {
113
126
  date: Date;
114
127
  observedAt: Date;
115
128
  availableAt?: Date;
129
+ /**
130
+ * The day the figure was released (`2026-10-20`), when its source says so for
131
+ * this point alone: FRED's newest observation from Gloom Cloud. The report
132
+ * line reads it; unlike `availableAt`, it never moves where the point is
133
+ * drawn or aligned, so the newest figure stays at its period like the rest.
134
+ */
135
+ releasedOn?: string;
116
136
  value: number | null;
117
137
  /** Original primary scalar before any presentation transform, including missing values. */
118
138
  rawValue?: number | null;
@@ -182,6 +202,11 @@ export interface ResolvedSeries {
182
202
  unreportedPeriod?: "quarterly";
183
203
  /** Acquired market-history cadence; null is explicitly unknown, undefined is legacy or nonmarket. */
184
204
  historyResolution?: ManualChartResolution | null;
205
+ /**
206
+ * The bar size the points were built in from `historyResolution` bars
207
+ * (`4h` from `1h`, `2d` from `1d`). Absent when the points are the source's own bars.
208
+ */
209
+ barSize?: CustomChartResolution;
185
210
  /**
186
211
  * When known, the first bar this listing has at `historyResolution`: the
187
212
  * source keeps nothing older, so the chart stops there instead of asking.
@@ -290,4 +315,6 @@ export interface ChartResolutionResult {
290
315
  viewport?: { start: Date; end: Date };
291
316
  /** Bar resolution the loaded market history was fetched at. */
292
317
  resolution?: ManualChartResolution;
318
+ /** The bar size the market series were built in from `resolution` bars, when the source does not serve it. */
319
+ barSize?: CustomChartResolution;
293
320
  }
@@ -1,14 +1,13 @@
1
1
  import { logFailure } from "../utils/log-failure";
2
2
  import { useCallback, useEffect, useMemo, useRef, useState, useSyncExternalStore } from "react";
3
+ import { resolveChartSpecData } from "./resolve";
3
4
  import {
4
5
  ChartResolveCache,
5
- chartSeedResolution,
6
- reconcileChartTail,
7
- resolveChartSpecData,
8
- seedChartResolutionResult,
9
6
  type ChartResolveOptions,
10
7
  type ChartResolveSources,
11
- } from "./resolve";
8
+ } from "./resolve-context";
9
+ import { chartSeedResolution, seedChartResolutionResult } from "./chart-seed";
10
+ import { reconcileChartTail } from "./tail-reconcile";
12
11
  import type { ChartResolutionResult, ChartSpec } from "./types";
13
12
  import {
14
13
  chartQuoteOverrideKeyForSource,
@@ -69,6 +69,11 @@ export interface BrokerConfigField {
69
69
  export interface BrokerConnectionStatus {
70
70
  state: "disconnected" | "connecting" | "connected" | "error";
71
71
  message?: string;
72
+ /**
73
+ * With `error`: only a new sign-in, to Gloom or the broker, gets the profile
74
+ * going again, so Brokers says "Sign-in needed" rather than "Error".
75
+ */
76
+ needsSignIn?: boolean;
72
77
  mode?: string;
73
78
  /**
74
79
  * Timeliness of the quotes this session streams, when the broker knows it.
@@ -124,6 +129,11 @@ export interface BrokerAdapter {
124
129
  * profile). Hosts that honor it export `LOCAL_BROKER_MARKET_DATA` from `gloomberb/broker`.
125
130
  */
126
131
  readonly localMarketData?: boolean;
132
+ /**
133
+ * `getQuote` answers the order ticket only, so the market data router never asks this broker:
134
+ * for a broker whose quotes count against a small request allowance (SnapTrade, signed in).
135
+ */
136
+ readonly ticketQuotesOnly?: boolean;
127
137
  validate(instance: BrokerInstanceConfig): Promise<boolean>;
128
138
  importPositions(instance: BrokerInstanceConfig): Promise<BrokerPosition[]>;
129
139
  importPortfolioSnapshot?(instance: BrokerInstanceConfig): Promise<{ accounts: BrokerAccount[]; positions: BrokerPosition[] }>;
@@ -272,6 +272,13 @@ export interface RecentCommand {
272
272
  arg?: string;
273
273
  }
274
274
 
275
+ /** What a launch's plugin seed could not install. */
276
+ export interface PluginSeedFailure {
277
+ /** Extracted plugin ids, sorted. */
278
+ plugins: string[];
279
+ gitMissing: boolean;
280
+ }
281
+
275
282
  export interface AppConfig {
276
283
  dataDir: string;
277
284
  configVersion: number;
@@ -291,6 +298,13 @@ export interface AppConfig {
291
298
  * not fought with.
292
299
  */
293
300
  seededPlugins?: string[];
301
+ /**
302
+ * The extracted plugins the last launch's seed could not install, and
303
+ * whether git was missing then. Absent until a seed fails, and again once
304
+ * one installs everything. `doctor` fails on it, and the launch notice that
305
+ * Gloom tries again is said once per failure.
306
+ */
307
+ pluginSeedFailure?: PluginSeedFailure;
294
308
  /**
295
309
  * Manual portfolios have taken the one currency their positions share. Runs
296
310
  * once per install, so later holdings never move a portfolio's currency.
@@ -2,6 +2,7 @@ import type { ExchangeRateSnapshot } from "./exchange-rate";
2
2
  import type {
3
3
  AnalystResearchData,
4
4
  CorporateActionsData,
5
+ EarningsDateStatus,
5
6
  EarningsEpsBasis,
6
7
  Quote,
7
8
  QuoteMetadata,
@@ -16,6 +17,7 @@ import type { BrokerContractRef, InstrumentSearchResult } from "./instrument";
16
17
  import type { CachePolicyMap } from "./persistence";
17
18
  import type { CachedQueryHandle } from "../data/cached-query";
18
19
  import type { TickerChanges } from "./ticker-changes";
20
+ import type { IssuerListings } from "./issuer-listings";
19
21
 
20
22
  export type CachedAssetMethod = "getExchangeRate" | "getHolders" | "getAnalystResearch" | "getCorporateActions"
21
23
  | "getOptionsChain" | "getSecFilings" | "getSecFilingDocuments" | "getSecFilingContent" | "getArticleSummary";
@@ -52,6 +54,13 @@ export interface SecFilingItem {
52
54
  * does not say (an older server).
53
55
  */
54
56
  fileNumber?: string;
57
+ /**
58
+ * In a fund's list from a trust that runs several funds: whether EDGAR
59
+ * lists the filing under the fund's own series. Absent when the source does
60
+ * not say (another registrant, an older server, a filing older than the
61
+ * series list reaches).
62
+ */
63
+ fundSeries?: boolean;
55
64
  }
56
65
 
57
66
  export interface SecFilingDocument {
@@ -88,6 +97,12 @@ export interface EarningsEvent {
88
97
  earningsDate: Date;
89
98
  earningsCallDate?: Date | null;
90
99
  isDateEstimate?: boolean | null;
100
+ /**
101
+ * The report's status as Gloom Cloud holds it: reported once the report is
102
+ * out, before the calendar has its actual. Absent from servers that do not
103
+ * say; `isDateEstimate` and `epsActual` tell the rest.
104
+ */
105
+ dateStatus?: EarningsDateStatus | null;
91
106
  estimateBasis?: Partial<Record<EarningsEstimateField, EarningsEstimateBasis>>;
92
107
  epsEstimate: number | null;
93
108
  epsLow?: number | null;
@@ -252,6 +267,11 @@ export interface AssetDataProvider {
252
267
  * answer for is left out; null when the source cannot answer a batch at all.
253
268
  */
254
269
  getTickerChangesBatch?(symbols: string[], options?: { signal?: AbortSignal }): Promise<Map<string, TickerChanges | null> | null>;
270
+ /**
271
+ * Every listing of the company a listing belongs to (RCI and RCI.B:TSX are
272
+ * Rogers). Null when the source does not hold the company.
273
+ */
274
+ getIssuerListings?(symbol: string, exchange?: string, options?: { signal?: AbortSignal }): Promise<IssuerListings | null>;
255
275
  /**
256
276
  * Several searches in a few requests, each answered with the rows `search`
257
277
  * gives it from this source (up to `limit`), by query as asked. A query the
@@ -1,3 +1,5 @@
1
+ import type { QuoteIntradayBar } from "./financials";
2
+
1
3
  /** Quote currency units per one base-currency unit; conversion rates use USD. */
2
4
  export interface ExchangeRateSnapshot {
3
5
  fromCurrency: string;
@@ -10,4 +12,8 @@ export interface ExchangeRateSnapshot {
10
12
  staleAt?: string;
11
13
  stale: boolean;
12
14
  delayMinutes?: number;
15
+ /** The rate is the close of this intraday bar of the pair's, its print having stopped behind it; asOf is the bar's end. */
16
+ intradayBar?: QuoteIntradayBar;
17
+ /** Why a stale rate stands, in Gloom Cloud's words. */
18
+ staleReason?: string;
13
19
  }
@@ -1,3 +1,4 @@
1
+ import type { PerpBoardRow } from "../api-client/perps";
1
2
  import type { PriceBasis } from "./instrument";
2
3
 
3
4
  export type MarketState = "PRE" | "REGULAR" | "POST" | "PREPRE" | "POSTPOST" | "CLOSED";
@@ -72,12 +73,28 @@ export interface QuoteMetadata {
72
73
  */
73
74
  export type ShareBasis = "depositary_receipt" | "ordinary";
74
75
 
76
+ /**
77
+ * A depositary receipt and the listings of the ordinary shares it represents,
78
+ * as Gloom Cloud serves it on both sides' records: GGAL with ratio 10 and
79
+ * GGAL.BA, on GGAL's quote and on GGAL.BA's alike.
80
+ */
81
+ export interface DepositaryPair {
82
+ /** The receipt's US symbol. */
83
+ receipt: string;
84
+ /** Ordinary shares one receipt represents. */
85
+ ratio: number;
86
+ /** Listings of the ordinary shares (GGAL.BA), the home line first. */
87
+ ordinary: string[];
88
+ }
89
+
75
90
  /** How a depositary receipt relates to the ordinary shares, as Gloom Cloud states it. */
76
91
  interface DepositaryReceiptFacts {
77
92
  /** Whether the listing is a depositary receipt; absent when unknown. */
78
93
  isDepositaryReceipt?: boolean;
79
94
  /** Ordinary shares per receipt, on a receipt's own records. */
80
95
  adrRatio?: number;
96
+ /** The receipt and its home lines, on the receipt's records and each home line's. */
97
+ depositaryPair?: DepositaryPair;
81
98
  }
82
99
 
83
100
  export interface Quote extends DepositaryReceiptFacts {
@@ -121,6 +138,14 @@ export interface Quote extends DepositaryReceiptFacts {
121
138
  receivedAt?: number; // local receipt timestamp ms for streamed/display freshness
122
139
  delivery?: QuoteDelivery;
123
140
  stale?: boolean;
141
+ /**
142
+ * The price is the close of this intraday bar of a currency pair's, not a
143
+ * print: Gloom Cloud took the bar because the pair's print had stopped
144
+ * behind it. lastUpdated is the bar's end.
145
+ */
146
+ intradayBar?: QuoteIntradayBar;
147
+ /** Why a stale currency pair's price stands, in Gloom Cloud's words: its bars have nothing newer, or could not be read in time. */
148
+ staleReason?: string;
124
149
  /** The listing no longer trades: the price is its last trade (ListingDelisting). */
125
150
  delisting?: ListingDelisting;
126
151
  exchangeName?: string;
@@ -181,6 +206,18 @@ export interface Quote extends DepositaryReceiptFacts {
181
206
  provenance?: QuoteProvenance;
182
207
  /** Freshness class for the quote data. Provider identity lives in providerId/provenance. */
183
208
  dataSource?: QuoteDataSource;
209
+ /**
210
+ * A perpetual contract's whole market row as of this quote (funding, open
211
+ * interest, premium), so every view of the contract reads the figures that
212
+ * came with its price, streamed or fetched.
213
+ */
214
+ perpetual?: PerpBoardRow;
215
+ }
216
+
217
+ /** A bar a quote's price is the close of: its start (epoch ms) and its length in minutes. */
218
+ export interface QuoteIntradayBar {
219
+ start: number;
220
+ minutes: number;
184
221
  }
185
222
 
186
223
  export interface QuoteContribution extends Quote {
@@ -195,7 +232,7 @@ export interface TtmConversion {
195
232
  from: string;
196
233
  /** Units of `financialCurrency` per unit of `from` for revenue, income and cash flow; absent when not measured. */
197
234
  rate?: number;
198
- /** YYYY-MM-DD the converted figures were fetched. */
235
+ /** YYYY-MM-DD the converted figures were fetched; once the app converts them again at its own rate (ttmAtAppRate), the ISO time of that rate. */
199
236
  asOf?: string;
200
237
  /** EPS is converted at the rate of each report date, so a P/E on it divides a spot price by EPS at older rates. */
201
238
  eps?: "report_date";
@@ -205,20 +242,28 @@ export interface TtmConversion {
205
242
  * How a served enterprise value ties to market cap + total debt - cash from the latest balance sheet served beside it.
206
243
  * `matches` within 5%; `differs` beyond it (or beyond 2% on the other side of the market cap from net debt), within
207
244
  * 0.7x to 1.5x, shown labelled as the provider's; `withdrawn` outside that band, with no EV or EV/revenue; `unchecked`
208
- * without a recent balance sheet carrying both lines.
245
+ * without a recent balance sheet carrying both lines. `computed`: an insurer's or a holding company's EV, which is
246
+ * `computed` itself, its investment book kept in (`investmentsKept`). `not-meaningful`: the EV comes out at or below
247
+ * zero, served as no EV or EV/revenue, with `reason`; shown N/M.
209
248
  */
210
249
  export interface EnterpriseValueCheck {
211
- status: "matches" | "differs" | "withdrawn" | "unchecked";
212
- /** The provider's enterprise value, served as `enterpriseValue` unless withdrawn. */
213
- source: number;
214
- currency: string;
215
- marketCap: number;
250
+ status: "matches" | "differs" | "withdrawn" | "unchecked" | "computed" | "not-meaningful";
251
+ /** The provider's enterprise value, served as `enterpriseValue` unless withdrawn, computed or not meaningful; absent when it served none. */
252
+ source?: number;
253
+ /** The currency of the EV and the market cap. Absent, with `marketCap`, only on a not-meaningful source EV the block names no currency for. */
254
+ currency?: string;
255
+ /** The market cap the EV is measured on; absent only on a not-meaningful source EV served without one. */
256
+ marketCap?: number;
216
257
  totalDebt?: number;
217
258
  cash?: number;
218
259
  /** YYYY-MM-DD of the balance sheet the debt and cash come from. */
219
260
  balanceSheetDate?: string;
220
261
  /** marketCap + totalDebt - cash. */
221
262
  computed?: number;
263
+ /** `cash` is cash and equivalents alone: an insurer's or a holding company's investments stay in its EV. */
264
+ investmentsKept?: true;
265
+ /** Why the EV is not meaningful (`not-meaningful`). */
266
+ reason?: string;
222
267
  }
223
268
 
224
269
  /** How a trailing P/E converts the EPS it divides by, when that EPS is in another currency than the price. */
@@ -229,6 +274,23 @@ export interface TrailingPEConversion {
229
274
  rate: number;
230
275
  }
231
276
 
277
+ /** How a share count and market cap were put on the basis after a split. */
278
+ export interface SplitShareBasis {
279
+ /** The split's ex-date, YYYY-MM-DD. */
280
+ exDate: string;
281
+ /** What a price from before the split is multiplied by: 15 for a 1-for-15 reverse split, 0.1 for a 10-for-1 split. */
282
+ priceFactor: number;
283
+ /**
284
+ * `filing`: the count a filing reported as of `reportedAsOf`, moved by the split, the cap that count times the price.
285
+ * `provider_cap`: the provider's cap, its share count (`reportedShares`) being from before the split.
286
+ */
287
+ method: "filing" | "provider_cap";
288
+ reportedShares: number;
289
+ reportedAsOf?: string;
290
+ /** The provider's market cap the shown one replaced. */
291
+ providerMarketCap?: number;
292
+ }
293
+
232
294
  export interface Fundamentals extends DepositaryReceiptFacts {
233
295
  /** Every share count here is on this basis, the basis of the listing's price and market cap; absent when unproven. */
234
296
  shareBasis?: ShareBasis;
@@ -284,8 +346,14 @@ export interface Fundamentals extends DepositaryReceiptFacts {
284
346
  return3Y?: number;
285
347
  lastQuarterGrowth?: number;
286
348
  sharesOutstanding?: number;
349
+ /** Set when a recent split put `sharesOutstanding` and `marketCap` on the basis the listing trades on. */
350
+ splitShareBasis?: SplitShareBasis;
351
+ /** YYYY-MM-DD `sharesOutstanding` was counted, when it is a 10-K or 10-Q cover count; a source's own count is undated. */
352
+ sharesOutstandingAsOf?: string;
287
353
  /** Free float: shares outstanding less insider and strategic holdings, never above `sharesOutstanding`. */
288
354
  floatShares?: number;
355
+ /** YYYY-MM-DD `floatShares` was counted, when it is a dated count itself (held at a cover count); a source's own float is undated. */
356
+ floatSharesAsOf?: string;
289
357
  beta?: number;
290
358
  /** Shares short at the latest FINRA settlement, the one `SI` and `SIW` show; dated by `shortInterestDate`. */
291
359
  sharesShort?: number;
@@ -308,11 +376,15 @@ export interface HolderRecord {
308
376
  providerId?: string;
309
377
  ownerType: HolderOwnerType;
310
378
  name: string;
379
+ /** The 13F filer's CIK, on a row from the SEC 13F holder index. */
380
+ cik?: string;
311
381
  reportDate?: string;
312
382
  shares?: number;
313
383
  value?: number;
384
+ /** The stake as a fraction of the shares outstanding: 0.0519 is 5.19%. */
314
385
  percentHeld?: number;
315
386
  changeShares?: number;
387
+ /** The quarter's change as a fraction of the prior position: 1.086 is +108.6%, -0.6 is -60%. */
316
388
  changePercent?: number;
317
389
  /** Set when the position's filing ties it to the receipts or to the ordinary shares. */
318
390
  shareBasis?: ShareBasis;
@@ -482,6 +554,12 @@ export interface CorporateActionsData {
482
554
 
483
555
  export interface CompanyProfile {
484
556
  description?: string;
557
+ /**
558
+ * Who published the description and where, when it is quoted from a
559
+ * document rather than the data provider's own text: a fund's issuer page,
560
+ * or the key facts its exchange publishes.
561
+ */
562
+ descriptionSource?: { publisher: string; url: string };
485
563
  sector?: string;
486
564
  industry?: string;
487
565
  employees?: number;
@@ -522,6 +600,18 @@ export interface IncomeStatementSource {
522
600
  */
523
601
  export type StatementGapField = IncomeStatementField | "totalRevenue" | "operatingRevenue" | "pretaxIncome" | "taxProvision";
524
602
 
603
+ /** Lines Gloom Cloud fills from a listing's exchange for a year the statements source does not have yet. */
604
+ export type StatementFillField = "totalRevenue" | "netIncome" | "totalAssets" | "totalLiabilities";
605
+
606
+ /** Where a row's filled lines came from: the exchange's figures, its page, and when they were read. */
607
+ export interface StatementFill {
608
+ source: "asx";
609
+ page: string;
610
+ retrievedAt: string;
611
+ /** The lines taken from the exchange; the row's other figures are the statements source's. */
612
+ fields: StatementFillField[];
613
+ }
614
+
525
615
  /** Per-share earnings lines that can be declared unavailable. */
526
616
  export type EarningsField = "basicEps" | "eps";
527
617
 
@@ -646,6 +736,8 @@ export interface FinancialStatement {
646
736
  fieldSources?: Partial<Record<IncomeStatementField, IncomeStatementSource>>;
647
737
  /** Lines unavailable for this period; another source or income basis must not fill them. */
648
738
  unavailableFields?: StatementGapField[];
739
+ /** Lines filled from the listing's exchange for a year the statements source lacks. */
740
+ filledFrom?: StatementFill;
649
741
  // Income Statement
650
742
  totalRevenue?: number;
651
743
  costOfRevenue?: number;
@@ -812,6 +904,11 @@ export interface PricePoint {
812
904
  low?: number;
813
905
  close: number;
814
906
  volume?: number;
907
+ /**
908
+ * The trades of one venue alone, when the market's volume for the bar is unavailable: never its volume, so no sum
909
+ * or comparison with a day's count takes it.
910
+ */
911
+ venueVolume?: { venue: string; volume: number };
815
912
  /** The bar's period had not ended when it was served: its close is the latest price, and it may have no volume yet. */
816
913
  partial?: boolean;
817
914
  /** The bar's prices were rebuilt from shorter bars where the source left it empty or too coarse. */
@@ -67,8 +67,22 @@ export interface HeadlessPaneOptionDef {
67
67
  * own key, or `shotState`.
68
68
  */
69
69
  shot?: { reportOnly: string };
70
+ /**
71
+ * Options this one stands in for (`--from` for `--range`): typed together
72
+ * they are refused, since only one is read. The other's default does not
73
+ * count.
74
+ */
75
+ replaces?: readonly string[];
70
76
  /** The value's name in the catalog's flag, `--expiration <date|unix>`; the type when absent. */
71
77
  placeholder?: string;
78
+ /**
79
+ * How many words one value is, for a value typed as a pair on the command
80
+ * line (`--fx-shift TRY -20`): `fn` and `shot` read the words after the flag
81
+ * into it. A word that ends with a comma starts another value of the list
82
+ * (`--fx-shift TRY -20, EUR 5`), and so does the flag typed again. One when
83
+ * absent.
84
+ */
85
+ valueWords?: number;
72
86
  /** The option in use as typed after the function, such as `--expiration 2028-01-21`; the catalog shows it as an example. */
73
87
  example?: string;
74
88
  /** The example runs without the function's optional argument, as an option that works only then does (`fn INS --side sell`). */
@@ -103,6 +117,8 @@ export interface HeadlessPaneContext {
103
117
  /** Effective instance settings, after template creation and option normalization. */
104
118
  settings?: Record<string, unknown>;
105
119
  capabilities?: CapabilityInvoker;
120
+ /** The catalog's name for the series charted as an expression (`FRED:DFII10`); undefined for one it does not list. */
121
+ catalogSeriesName?: (expression: string) => string | undefined;
106
122
  /** Locally registered broker adapters. Reports may read account data; they never submit orders. */
107
123
  resolveBroker?: (brokerType: string) => import("./broker").BrokerAdapter | null;
108
124
  /** Read one local portfolio without passing holdings through a remote endpoint. */
@@ -124,6 +140,11 @@ export interface HeadlessPaneContext {
124
140
  * that listing instead (`BDI:TSX`), for the retry each listing offers.
125
141
  */
126
142
  resolveListing?: (symbol: string, argumentWith: (key: string) => string) => Promise<{ symbol: string; exchange?: string; name?: string } | null>;
143
+ /**
144
+ * What a plugin keeps on this device only (its `ctx.resume` state, never
145
+ * synced), such as ALRT's log of the alerts the app fired; null when none.
146
+ */
147
+ readDeviceState?: <T = unknown>(pluginId: string, key: string) => T | null;
127
148
  }
128
149
 
129
150
  export type HeadlessPaneRow = Record<string, unknown>;
@@ -141,18 +162,25 @@ export interface HeadlessPaneColumn {
141
162
  textHeader?: string;
142
163
  align?: "left" | "right" | "center";
143
164
  width?: number;
144
- /** False keeps the column whole when the text table is fitted to a narrow width, so a time or an id is never cut. */
165
+ /**
166
+ * A narrow text table never cuts a cell by default: text wraps in its cell
167
+ * and columns move under their rows. False keeps the column on one line;
168
+ * true lets the table cut it, for free text that names nothing (a
169
+ * description), down to `minWidth`.
170
+ */
145
171
  shrink?: boolean;
146
- /** The narrowest a text column is cut to in a narrow text table, so it never shrinks to a stub that reads like another row's. */
172
+ /** The narrowest a text column wraps to, or a `shrink: true` column is cut to, in a narrow text table. */
147
173
  minWidth?: number;
148
174
  /**
149
- * When the text table cannot fit a narrow width even with its text
150
- * shortened, columns move to lines under their row: a higher priority moves
151
- * sooner, equal ones go rightmost first. The first column stays.
175
+ * When the text table does not fit a narrow width, columns move to lines
176
+ * under their row, each value whole: a higher priority moves sooner, then
177
+ * long text, then rightmost first. The first column stays.
152
178
  */
153
179
  stackPriority?: number;
154
180
  /** Once moved under the rows, only the first `stackRows` rows print the column; 0 leaves it out of a narrow table. */
155
181
  stackRows?: number;
182
+ /** The text table leaves the column out when fitted to fewer terminal columns than this; exports and piped output keep it. */
183
+ minTableWidth?: number;
156
184
  description?: string;
157
185
  format?: (value: unknown, row: HeadlessPaneRow) => string;
158
186
  /** What the text report prints when it can say more than an export should (a unit word beside a number); CSV and NDJSON keep `format`. */
@@ -161,9 +189,13 @@ export interface HeadlessPaneColumn {
161
189
  * The row field naming the unit of this column's number, for a column whose
162
190
  * rows are quoted in different units (CDX spreads in `bp`, prices in
163
191
  * `price`). Exports write the bare number and that unit: in the header when
164
- * every row shares it, otherwise in a `<header> unit` column.
192
+ * every row shares it, otherwise in a `<header> unit` column. A column whose
193
+ * unit is the row's own (`rowUnitKey`) exports the bare number under its own
194
+ * header, the row's `currency_or_unit` naming the unit.
165
195
  */
166
196
  unitKey?: string;
197
+ /** With `unitKey`: always a `<header> unit` column, so the header is the same whichever rows loaded. */
198
+ unitColumn?: boolean;
167
199
  /**
168
200
  * The text report prints the value on its own lines under the row instead
169
201
  * of in a column, for a footnote that belongs to that row; an empty value
@@ -242,6 +274,19 @@ export interface HeadlessPaneFreshness {
242
274
  * so it names that month.
243
275
  */
244
276
  periodicity?: "monthly" | "quarterly" | "semiannual" | "annual";
277
+ /**
278
+ * How often the oldest observation publishes, when it is dated by its period
279
+ * and the newest is not (a monthly statistic charted beside daily closes):
280
+ * the report names its period, `Fri 23 Oct 2026 (oldest Sep 2026)`.
281
+ */
282
+ oldestPeriodicity?: "monthly" | "quarterly" | "semiannual" | "annual" | null;
283
+ /**
284
+ * When the newest observation was released, for figures dated by the period
285
+ * they cover (a monthly statistic's 1 Sep): a date, or the time when the
286
+ * publisher states it. The report is then as of that release and names both,
287
+ * `Sep 2026, released Tue 20 Oct`; its age and staleness stay the period's.
288
+ */
289
+ releasedOn?: string | number | Date | null;
245
290
  /**
246
291
  * The newest row is a weekly or monthly bar whose period had not ended when
247
292
  * it was served (October's bar on 16 Oct), and the last day it covers so
@@ -313,6 +358,14 @@ export interface HeadlessPaneFreshness {
313
358
  sources?: Array<{ source: string; asOf: string | number | Date }>;
314
359
  /** Say how old the oldest observation is (`oldest 4 min`): rows polled apart from one source. */
315
360
  oldestAge?: boolean;
361
+ /**
362
+ * Say how old the data is, the newest observation's time and `oldest 4 min`, and no more: no status word.
363
+ * For rows priced apart from a snapshot refreshed on a schedule (CRYP's board), where `live` would call prices
364
+ * that are minutes old real-time and `delayed` would call a snapshot renewed every few seconds held back. A row
365
+ * that states its own feed (`dataSource`, `delayMinutes`) still says it, and so does a declared `status`.
366
+ * Says how old the oldest observation is, as `oldestAge` does.
367
+ */
368
+ ageOnly?: boolean;
316
369
  /**
317
370
  * Rows quoted on several markets (a US line beside Xetra and Paris ones)
318
371
  * date each market's session in the status line, `US, XETRA and EPA Tue 13
@@ -332,12 +385,23 @@ export interface HeadlessPaneFreshness {
332
385
  asOfLabel?: string;
333
386
  /** What the figures are, said after the status: `funding = current estimate, pays 08:00 UTC`. */
334
387
  note?: string;
388
+ /**
389
+ * Shorter forms of `note`, longest first, that a capture's status line too
390
+ * narrow for the whole note says instead before it leaves the note out.
391
+ */
392
+ noteVariants?: string[];
335
393
  /**
336
394
  * When the figures reach readers and when the next ones are due, said right
337
395
  * after the as-of date: `published Fri 9 Oct, next settlement Thu 15 Oct,
338
396
  * published Mon 26 Oct` for a settlement a regulator publishes days later.
339
397
  */
340
398
  schedule?: string;
399
+ /**
400
+ * Shorter forms of `schedule`, longest first, that a status line too narrow
401
+ * for the whole one says instead, with the not-a-feed basis left out first:
402
+ * when the figures were published outlasts what kind of data they are.
403
+ */
404
+ scheduleVariants?: string[];
341
405
  }
342
406
 
343
407
  interface HeadlessPaneResultBase {
@@ -395,6 +459,8 @@ export interface HeadlessRowsResult extends HeadlessPaneResultBase {
395
459
  * (an ISO date or instant), for rows of several series dated apart: each
396
460
  * exported row names them in `currency_or_unit`, `symbol_or_series` and
397
461
  * `as_of`, as a bundle section's `rowUnitKey`, `rowSymbolKey` and `rowAsOfKey` do.
462
+ * A column whose `unitKey` is `rowUnitKey` exports its figures bare under its
463
+ * own header, the row's unit named once in `currency_or_unit`.
398
464
  */
399
465
  rowUnitKey?: string;
400
466
  rowSymbolKey?: string;
@@ -516,6 +582,10 @@ export interface HeadlessSeries {
516
582
  symbol?: string;
517
583
  /** The bar interval or observation frequency the points are at (`1d`, `1mo`, `daily`), as served, not as asked. */
518
584
  interval?: string;
585
+ /** Decimal places the text report prints the latest value to (a correlation to 3); JSON and CSV keep every digit. */
586
+ textDecimals?: number;
587
+ /** Each point's `value` is its bar's close: `--csv` and `--ndjson` write Close alone, JSON keeps both. */
588
+ valueIsClose?: boolean;
519
589
  points: HeadlessSeriesPoint[];
520
590
  }
521
591
 
@@ -542,6 +612,13 @@ export interface HeadlessPaneDefinition<Shape extends HeadlessPaneShape = Headle
542
612
  discovery?: {
543
613
  id?: string;
544
614
  aliases?: string[];
615
+ /**
616
+ * Words that are no function's code but ask for this function's data
617
+ * (IVOL, IV for implied volatility). They do not open it, since one word
618
+ * can mean several functions: `fn IVOL` answers with the functions it
619
+ * means and the commands that run them, and `catalog ivol` lists them first.
620
+ */
621
+ suggestFor?: string[];
545
622
  intents?: string[];
546
623
  dataRequirements?: string[];
547
624
  limitations?: string[];
@@ -81,4 +81,7 @@ export interface InstrumentSearchResult {
81
81
  formerIssuer?: { symbol: string; name: string; until: string; successor?: { symbol: string; name: string | null } };
82
82
  /** A US listing that no longer trades, found by its exact symbol (TWTR). Untrusted until parsed. */
83
83
  delisting?: ListingDelisting;
84
+ /** The company's home line, its common stock on its home exchange (7203 on JPX for Toyota), sent by newer
85
+ * cloud servers. Search lists it before the company's depositary receipts and other lines. Only `true` counts. */
86
+ homeListing?: boolean;
84
87
  }
@@ -0,0 +1,28 @@
1
+ /**
2
+ * Every listing of one company, as Gloom Cloud's company universe groups
3
+ * them: share classes, a US receipt and its home line, dual listings. RCI on
4
+ * the NYSE and RCI.B on the TSX are both Rogers Communications.
5
+ */
6
+
7
+ /** One listing, written as the service writes it: bare on a US venue (RCI), SYMBOL:EXCHANGE elsewhere (RCI.B:TSX). */
8
+ interface IssuerListing {
9
+ symbol: string;
10
+ /** The canonical venue code. */
11
+ exchange: string;
12
+ name: string;
13
+ /** The company's primary line. */
14
+ primary: boolean;
15
+ }
16
+
17
+ export interface IssuerListings {
18
+ /** The service's key for the company (cik:733099). */
19
+ issuer: string;
20
+ name: string;
21
+ /**
22
+ * Where the company is from, ISO 3166 alpha-2: its primary line's country,
23
+ * or the SEC address of a foreign company whose only lines are in the US.
24
+ */
25
+ country: string;
26
+ /** The primary line first. */
27
+ listings: IssuerListing[];
28
+ }