gloomberb 0.15.7 → 0.16.0

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 (524) hide show
  1. package/README.md +11 -2
  2. package/package.json +1 -1
  3. package/src/api-client/app-attention.ts +147 -0
  4. package/src/api-client/attention.ts +26 -0
  5. package/src/api-client/awards.ts +215 -0
  6. package/src/api-client/catalysts.ts +160 -0
  7. package/src/api-client/chat.ts +137 -14
  8. package/src/api-client/company-kpis.ts +153 -0
  9. package/src/api-client/cpi.ts +52 -0
  10. package/src/api-client/credit-documents.ts +107 -0
  11. package/src/api-client/data.ts +192 -3
  12. package/src/api-client/distress.ts +164 -0
  13. package/src/api-client/doe.ts +75 -0
  14. package/src/api-client/equity-screener.ts +11 -0
  15. package/src/api-client/exposure.ts +202 -0
  16. package/src/api-client/gpu.ts +93 -0
  17. package/src/api-client/hiring.ts +110 -0
  18. package/src/api-client/index.ts +78 -3
  19. package/src/api-client/normalizers.ts +31 -1
  20. package/src/api-client/paths.ts +3 -0
  21. package/src/api-client/perps.ts +127 -0
  22. package/src/api-client/power.ts +148 -0
  23. package/src/api-client/request.ts +58 -1
  24. package/src/api-client/research-activity.ts +172 -13
  25. package/src/api-client/socket.ts +75 -27
  26. package/src/api-client/supply-chain-graph.ts +40 -0
  27. package/src/api-client/supply-chain.ts +98 -0
  28. package/src/api-client/telemetry.ts +29 -0
  29. package/src/api-client/themes.ts +28 -0
  30. package/src/api-client/types.ts +33 -1
  31. package/src/api-client/wall-experiments.ts +100 -0
  32. package/src/api-client/wall-summary.ts +49 -0
  33. package/src/api-client/web-experiments.ts +136 -0
  34. package/src/app/pane-runtime/plugin-bindings.ts +5 -0
  35. package/src/app/pane-runtime/ticker-open-runtime.ts +8 -2
  36. package/src/app/runtime/update.ts +13 -1
  37. package/src/cli/commands/system.ts +2 -0
  38. package/src/cli/desktop-pane-shot.ts +3 -4
  39. package/src/cli/pane-functions/data.ts +78 -0
  40. package/src/cli/pane-functions/financial-ratio-shot.ts +160 -0
  41. package/src/cli/pane-functions/function-help.ts +220 -8
  42. package/src/cli/pane-functions/headless.ts +4 -0
  43. package/src/cli/pane-functions/screenshot-evidence.ts +21 -0
  44. package/src/cli/pane-functions/screenshot.ts +49 -5
  45. package/src/components/chart/composite/composite-chart.tsx +15 -2
  46. package/src/components/chart/composite/format.ts +24 -11
  47. package/src/components/chart/composite/rasterizer.ts +67 -16
  48. package/src/components/chart/composite/scene.ts +53 -2
  49. package/src/components/chart/composite/session-shading.ts +3 -2
  50. package/src/components/chart/composite/text-renderer.ts +52 -1
  51. package/src/components/chart/composite/time-axis.ts +100 -30
  52. package/src/components/chart/composite/tools.ts +2 -1
  53. package/src/components/chart/composite/types.ts +4 -0
  54. package/src/components/chart-table/index.ts +1 -0
  55. package/src/components/chart-table/layout.ts +15 -0
  56. package/src/components/command-bar/action-runtime.ts +1 -0
  57. package/src/components/command-bar/commands/direct/index.ts +32 -0
  58. package/src/components/command-bar/commands/registry.ts +7 -0
  59. package/src/components/command-bar/pane-templates/items.ts +11 -0
  60. package/src/components/command-bar/pane-templates/workflow.ts +19 -4
  61. package/src/components/command-bar/routes/root/command-items.ts +6 -0
  62. package/src/components/command-bar/routes/root/provider-search.ts +2 -0
  63. package/src/components/command-bar/routes/root/results.ts +64 -0
  64. package/src/components/command-bar/routes/root/runtime.ts +8 -0
  65. package/src/components/command-bar/routes/ticker-search/results.ts +89 -24
  66. package/src/components/command-bar/routes/ticker-search/route.ts +2 -0
  67. package/src/components/command-bar/surface/index.tsx +15 -0
  68. package/src/components/command-bar/view-model.ts +3 -0
  69. package/src/components/command-bar/workflow/collection-actions.ts +9 -7
  70. package/src/components/command-bar/workflow/ops.ts +19 -0
  71. package/src/components/command-bar/workflow/tickers.ts +5 -0
  72. package/src/components/company-logo.tsx +15 -2
  73. package/src/components/data-table/table-pane.ts +2 -1
  74. package/src/components/index.ts +1 -0
  75. package/src/components/layout/detached-pane-shell.tsx +12 -1
  76. package/src/components/layout/missing-pane.tsx +87 -23
  77. package/src/components/layout/pane/footer/index.tsx +64 -18
  78. package/src/components/layout/pane/footer/model.ts +85 -0
  79. package/src/components/layout/pane/sidebar.tsx +19 -1
  80. package/src/components/layout/shell/index.tsx +38 -28
  81. package/src/components/layout/shell/pane/management-shortcuts.ts +13 -1
  82. package/src/components/layout/status-bar.tsx +93 -28
  83. package/src/components/layout/status-widget-space.ts +72 -0
  84. package/src/components/onboarding/first-run-workspace.ts +8 -2
  85. package/src/components/onboarding/onboarding-wizard.tsx +35 -16
  86. package/src/components/onboarding/portfolio-step/positions-panel.tsx +14 -5
  87. package/src/components/onboarding/wizard-model.ts +13 -5
  88. package/src/components/onboarding/wizard-positions.ts +56 -7
  89. package/src/components/price-performance.tsx +31 -34
  90. package/src/components/ui/data-table/index.tsx +11 -8
  91. package/src/components/ui/display.tsx +15 -6
  92. package/src/components/ui/fields.tsx +5 -0
  93. package/src/components/ui/figure.tsx +94 -0
  94. package/src/components/ui/header-case.ts +25 -3
  95. package/src/components/ui/icon.tsx +3 -1
  96. package/src/components/ui/message-composer.tsx +8 -1
  97. package/src/components/ui/query-bar.tsx +8 -1
  98. package/src/components/ui/ratio-bar.tsx +84 -0
  99. package/src/components/ui/toggle.tsx +3 -1
  100. package/src/components/use-scrollbox-layout.ts +17 -0
  101. package/src/core/state/app/layout.ts +35 -1
  102. package/src/core/state/app/state.ts +15 -0
  103. package/src/core/state/app/types.ts +1 -0
  104. package/src/data/config/store/normalize.ts +24 -0
  105. package/src/i18n/es.ts +2 -0
  106. package/src/i18n/ja.ts +2 -0
  107. package/src/i18n/ko.ts +2 -0
  108. package/src/i18n/zh-cn.ts +2 -0
  109. package/src/i18n/zh-tw.ts +2 -0
  110. package/src/layout-marketplace/pane-imagery.ts +1 -0
  111. package/src/market-data/coordinator/entries.ts +13 -0
  112. package/src/market-data/coordinator/financials.ts +33 -8
  113. package/src/market-data/market/freshness.ts +16 -5
  114. package/src/market-data/market/trading-sessions.ts +65 -1
  115. package/src/market-data/published-cn-sessions.ts +25 -0
  116. package/src/market-data/published-nse-sessions.ts +20 -0
  117. package/src/news/aggregator.ts +4 -0
  118. package/src/plugins/builtin/account-management/model.ts +6 -1
  119. package/src/plugins/builtin/account-management/pane.tsx +36 -25
  120. package/src/plugins/builtin/alerts/catalysts.ts +77 -0
  121. package/src/plugins/builtin/alerts/events-pane.tsx +3 -0
  122. package/src/plugins/builtin/alerts/events.ts +10 -4
  123. package/src/plugins/builtin/alerts/history-pane.tsx +1 -1
  124. package/src/plugins/builtin/alerts/history.ts +1 -0
  125. package/src/plugins/builtin/alerts/index.tsx +6 -0
  126. package/src/plugins/builtin/alerts/research-builder.ts +10 -3
  127. package/src/plugins/builtin/alerts/research-rules.ts +15 -1
  128. package/src/plugins/builtin/analytics/risk-client.ts +15 -3
  129. package/src/plugins/builtin/analytics/risk-headless.ts +123 -18
  130. package/src/plugins/builtin/attention/client.ts +80 -0
  131. package/src/plugins/builtin/attention/evidence.ts +30 -0
  132. package/src/plugins/builtin/attention/headless.ts +33 -0
  133. package/src/plugins/builtin/attention/index.tsx +18 -0
  134. package/src/plugins/builtin/attention/model.ts +59 -0
  135. package/src/plugins/builtin/attention/pane.tsx +211 -0
  136. package/src/plugins/builtin/attention/trending.tsx +59 -0
  137. package/src/plugins/builtin/awards/alerts.ts +32 -0
  138. package/src/plugins/builtin/awards/client.ts +82 -0
  139. package/src/plugins/builtin/awards/detail.tsx +107 -0
  140. package/src/plugins/builtin/awards/evidence.ts +36 -0
  141. package/src/plugins/builtin/awards/headless.ts +55 -0
  142. package/src/plugins/builtin/awards/index.tsx +20 -0
  143. package/src/plugins/builtin/awards/model.ts +42 -0
  144. package/src/plugins/builtin/awards/pane.tsx +263 -0
  145. package/src/plugins/builtin/catalysts/client.ts +28 -0
  146. package/src/plugins/builtin/catalysts/detail.tsx +88 -0
  147. package/src/plugins/builtin/catalysts/evidence.ts +47 -0
  148. package/src/plugins/builtin/catalysts/headless.ts +42 -0
  149. package/src/plugins/builtin/catalysts/history.ts +26 -0
  150. package/src/plugins/builtin/catalysts/index.tsx +29 -0
  151. package/src/plugins/builtin/catalysts/model.ts +135 -0
  152. package/src/plugins/builtin/catalysts/pane.tsx +159 -0
  153. package/src/plugins/builtin/chart-composer/cli-options.ts +4 -0
  154. package/src/plugins/builtin/chart-composer/headless-schema.ts +6 -0
  155. package/src/plugins/builtin/chart-composer/index.tsx +8 -1
  156. package/src/plugins/builtin/chart-composer/pane.tsx +28 -1
  157. package/src/plugins/builtin/chat/attachments/desktop.tsx +610 -0
  158. package/src/plugins/builtin/chat/attachments/files.ts +45 -0
  159. package/src/plugins/builtin/chat/attachments/model.ts +164 -0
  160. package/src/plugins/builtin/chat/attachments/terminal.tsx +72 -0
  161. package/src/plugins/builtin/chat/attachments/transfer.ts +165 -0
  162. package/src/plugins/builtin/chat/content/channel-navigation.ts +13 -12
  163. package/src/plugins/builtin/chat/content/composer-runtime.ts +25 -4
  164. package/src/plugins/builtin/chat/content/composer.tsx +46 -4
  165. package/src/plugins/builtin/chat/content/footer.tsx +46 -8
  166. package/src/plugins/builtin/chat/content/index.tsx +263 -62
  167. package/src/plugins/builtin/chat/content/layout-metrics.ts +10 -2
  168. package/src/plugins/builtin/chat/content/open-targets.ts +17 -3
  169. package/src/plugins/builtin/chat/content/scroll.ts +7 -1
  170. package/src/plugins/builtin/chat/content/shortcuts.ts +36 -11
  171. package/src/plugins/builtin/chat/content/snapshot.ts +3 -0
  172. package/src/plugins/builtin/chat/content/transcript.tsx +17 -1
  173. package/src/plugins/builtin/chat/content/types.ts +7 -0
  174. package/src/plugins/builtin/chat/controller/attachments.ts +213 -0
  175. package/src/plugins/builtin/chat/controller/connections.ts +3 -1
  176. package/src/plugins/builtin/chat/controller/index.ts +114 -2
  177. package/src/plugins/builtin/chat/controller/lifecycle.ts +9 -0
  178. package/src/plugins/builtin/chat/controller/messages.ts +35 -2
  179. package/src/plugins/builtin/chat/controller/send.ts +128 -25
  180. package/src/plugins/builtin/chat/controller/state.ts +12 -1
  181. package/src/plugins/builtin/chat/controller/utils.ts +7 -5
  182. package/src/plugins/builtin/chat/controller/view.ts +2 -0
  183. package/src/plugins/builtin/chat/index.tsx +21 -0
  184. package/src/plugins/builtin/chat/layout.ts +9 -4
  185. package/src/plugins/builtin/chat/message/desktop.tsx +55 -20
  186. package/src/plugins/builtin/chat/message/header.tsx +30 -5
  187. package/src/plugins/builtin/chat/message/inline-tokens.tsx +9 -0
  188. package/src/plugins/builtin/chat/message/pending-send.ts +35 -0
  189. package/src/plugins/builtin/chat/message/profile-popover.tsx +5 -1
  190. package/src/plugins/builtin/chat/message/render-state.ts +12 -2
  191. package/src/plugins/builtin/chat/message/terminal.tsx +51 -4
  192. package/src/plugins/builtin/chat/message/types.ts +6 -1
  193. package/src/plugins/builtin/chat/pane-state.ts +59 -1
  194. package/src/plugins/builtin/chat/profile-popover.ts +50 -1
  195. package/src/plugins/builtin/chat/sidebar.tsx +8 -3
  196. package/src/plugins/builtin/chat/status-widget.tsx +29 -12
  197. package/src/plugins/builtin/chat/unread-inbox-pane.tsx +143 -0
  198. package/src/plugins/builtin/chat/unread-inbox.ts +91 -0
  199. package/src/plugins/builtin/clinical-trials/client.ts +237 -0
  200. package/src/plugins/builtin/clinical-trials/index.tsx +74 -0
  201. package/src/plugins/builtin/clinical-trials/pane.tsx +225 -0
  202. package/src/plugins/builtin/clinical-trials/types.ts +2 -0
  203. package/src/plugins/builtin/cloud/askg/controller.ts +37 -6
  204. package/src/plugins/builtin/cloud/askg/executor.ts +59 -44
  205. package/src/plugins/builtin/cloud/askg/host.ts +8 -1
  206. package/src/plugins/builtin/cloud/askg/manifest.ts +29 -2
  207. package/src/plugins/builtin/cloud/askg/model.ts +47 -13
  208. package/src/plugins/builtin/cloud/askg/notes.ts +100 -0
  209. package/src/plugins/builtin/cloud/askg/pane.tsx +50 -14
  210. package/src/plugins/builtin/cloud/askg/protocol.ts +39 -1
  211. package/src/plugins/builtin/cloud/askg/result-budget.ts +156 -0
  212. package/src/plugins/builtin/cloud/askg/user-data.ts +89 -0
  213. package/src/plugins/builtin/cloud/auth-actions.tsx +55 -31
  214. package/src/plugins/builtin/cloud/plugin.tsx +4 -1
  215. package/src/plugins/builtin/cloud/team/pane-sections.tsx +10 -1
  216. package/src/plugins/builtin/cloud/team/pane.tsx +3 -2
  217. package/src/plugins/builtin/cloud/thesis/board-pane.tsx +2 -2
  218. package/src/plugins/builtin/cloud/thesis/detail.tsx +1 -1
  219. package/src/plugins/builtin/cloud/thesis/ticker-tab.tsx +2 -2
  220. package/src/plugins/builtin/cloud/trial-offer-status-widget.tsx +202 -0
  221. package/src/plugins/builtin/cloud/upgrade-command.ts +1 -1
  222. package/src/plugins/builtin/cloud/upgrade-dialog.tsx +29 -3
  223. package/src/plugins/builtin/cloud/upgrade-status-widget.tsx +1 -1
  224. package/src/plugins/builtin/cloud-tweets/table.tsx +1 -1
  225. package/src/plugins/builtin/comment-letters/client.ts +342 -0
  226. package/src/plugins/builtin/comment-letters/index.tsx +74 -0
  227. package/src/plugins/builtin/comment-letters/pane.tsx +295 -0
  228. package/src/plugins/builtin/comment-letters/types.ts +43 -0
  229. package/src/plugins/builtin/company-attention/app-rank.tsx +79 -0
  230. package/src/plugins/builtin/company-attention/client.ts +69 -0
  231. package/src/plugins/builtin/company-attention/evidence.ts +45 -0
  232. package/src/plugins/builtin/company-attention/headless.ts +47 -0
  233. package/src/plugins/builtin/company-attention/index.tsx +30 -0
  234. package/src/plugins/builtin/company-attention/model.ts +129 -0
  235. package/src/plugins/builtin/company-attention/pane.tsx +183 -0
  236. package/src/plugins/builtin/company-kpis/client.ts +92 -0
  237. package/src/plugins/builtin/company-kpis/headless.ts +32 -0
  238. package/src/plugins/builtin/company-kpis/index.tsx +26 -0
  239. package/src/plugins/builtin/company-kpis/model.ts +124 -0
  240. package/src/plugins/builtin/company-kpis/pane.tsx +226 -0
  241. package/src/plugins/builtin/company-kpis/related.ts +11 -0
  242. package/src/plugins/builtin/company-kpis/screenshot-evidence.ts +44 -0
  243. package/src/plugins/builtin/composite-plugins.ts +34 -0
  244. package/src/plugins/builtin/correlation/history.ts +4 -1
  245. package/src/plugins/builtin/correlation/index.tsx +139 -80
  246. package/src/plugins/builtin/correlation/matrix/pair-chart.tsx +48 -0
  247. package/src/plugins/builtin/correlation/matrix/selection.ts +77 -0
  248. package/src/plugins/builtin/correlation/relationship/model.ts +2 -2
  249. package/src/plugins/builtin/cpi/client.ts +66 -0
  250. package/src/plugins/builtin/cpi/headless.ts +78 -0
  251. package/src/plugins/builtin/cpi/index.tsx +31 -0
  252. package/src/plugins/builtin/cpi/model.ts +198 -0
  253. package/src/plugins/builtin/cpi/pane.tsx +157 -0
  254. package/src/plugins/builtin/credit-documents/client.ts +99 -0
  255. package/src/plugins/builtin/credit-documents/detail.tsx +109 -0
  256. package/src/plugins/builtin/credit-documents/evidence.ts +64 -0
  257. package/src/plugins/builtin/credit-documents/gauge.tsx +55 -0
  258. package/src/plugins/builtin/credit-documents/headless.ts +40 -0
  259. package/src/plugins/builtin/credit-documents/index.tsx +19 -0
  260. package/src/plugins/builtin/credit-documents/model.ts +336 -0
  261. package/src/plugins/builtin/credit-documents/pane.tsx +185 -0
  262. package/src/plugins/builtin/custom-view/view-spec.ts +14 -2
  263. package/src/plugins/builtin/debt-maturities/pane.tsx +1 -0
  264. package/src/plugins/builtin/dividend-yield/pane.tsx +1 -1
  265. package/src/plugins/builtin/doe/client.ts +73 -0
  266. package/src/plugins/builtin/doe/headless.ts +93 -0
  267. package/src/plugins/builtin/doe/index.tsx +41 -0
  268. package/src/plugins/builtin/doe/model.ts +215 -0
  269. package/src/plugins/builtin/doe/pane.tsx +148 -0
  270. package/src/plugins/builtin/doe/range-bar.tsx +45 -0
  271. package/src/plugins/builtin/earnings/board.tsx +3 -0
  272. package/src/plugins/builtin/earnings/index.tsx +2 -0
  273. package/src/plugins/builtin/earnings-calls/pane.tsx +7 -1
  274. package/src/plugins/builtin/earnings-calls/transcript-view.tsx +7 -7
  275. package/src/plugins/builtin/earnings-ripple/client.ts +60 -0
  276. package/src/plugins/builtin/earnings-ripple/headless.ts +35 -0
  277. package/src/plugins/builtin/earnings-ripple/index.tsx +35 -0
  278. package/src/plugins/builtin/earnings-ripple/model.ts +98 -0
  279. package/src/plugins/builtin/earnings-ripple/pane.tsx +103 -0
  280. package/src/plugins/builtin/equity-screener/client.ts +1 -1
  281. package/src/plugins/builtin/equity-screener/criterion-editor.tsx +1 -1
  282. package/src/plugins/builtin/equity-screener/model.ts +74 -9
  283. package/src/plugins/builtin/equity-screener/pane.tsx +2 -0
  284. package/src/plugins/builtin/estimate-revisions/pane.tsx +3 -0
  285. package/src/plugins/builtin/executives/pane.tsx +7 -5
  286. package/src/plugins/builtin/exposure/charts.tsx +66 -0
  287. package/src/plugins/builtin/exposure/client.ts +53 -0
  288. package/src/plugins/builtin/exposure/drivers.ts +29 -0
  289. package/src/plugins/builtin/exposure/editor.tsx +61 -0
  290. package/src/plugins/builtin/exposure/evidence.ts +39 -0
  291. package/src/plugins/builtin/exposure/headless.ts +51 -0
  292. package/src/plugins/builtin/exposure/holdings.ts +56 -0
  293. package/src/plugins/builtin/exposure/index.tsx +13 -0
  294. package/src/plugins/builtin/exposure/model.ts +104 -0
  295. package/src/plugins/builtin/exposure/pane.tsx +247 -0
  296. package/src/plugins/builtin/fear-greed/charts.tsx +1 -1
  297. package/src/plugins/builtin/fear-greed/pane.tsx +2 -9
  298. package/src/plugins/builtin/filing-events/pane.tsx +2 -1
  299. package/src/plugins/builtin/gpu/board.tsx +163 -0
  300. package/src/plugins/builtin/gpu/changes.tsx +94 -0
  301. package/src/plugins/builtin/gpu/client.ts +130 -0
  302. package/src/plugins/builtin/gpu/equities.tsx +112 -0
  303. package/src/plugins/builtin/gpu/headless.ts +67 -0
  304. package/src/plugins/builtin/gpu/history.tsx +140 -0
  305. package/src/plugins/builtin/gpu/index.tsx +18 -0
  306. package/src/plugins/builtin/gpu/ladder.tsx +127 -0
  307. package/src/plugins/builtin/gpu/model.ts +317 -0
  308. package/src/plugins/builtin/gpu/pane.tsx +63 -0
  309. package/src/plugins/builtin/help/index.tsx +19 -2
  310. package/src/plugins/builtin/holders/pane.tsx +5 -9
  311. package/src/plugins/builtin/insider/detail.tsx +119 -0
  312. package/src/plugins/builtin/insider/display.ts +221 -0
  313. package/src/plugins/builtin/insider/headless.ts +24 -3
  314. package/src/plugins/builtin/insider/index.tsx +206 -108
  315. package/src/plugins/builtin/insider/insider-data.ts +31 -3
  316. package/src/plugins/builtin/insider/model.ts +53 -4
  317. package/src/plugins/builtin/insider/table-model.ts +226 -0
  318. package/src/plugins/builtin/insider/table.tsx +79 -0
  319. package/src/plugins/builtin/iv-history/screen-pane.tsx +1 -1
  320. package/src/plugins/builtin/jobs/pane.tsx +14 -7
  321. package/src/plugins/builtin/kelly-sizer/pane.tsx +1 -1
  322. package/src/plugins/builtin/macro-day/client.ts +50 -0
  323. package/src/plugins/builtin/macro-day/headless.ts +51 -0
  324. package/src/plugins/builtin/macro-day/index.tsx +21 -0
  325. package/src/plugins/builtin/macro-day/model.ts +137 -0
  326. package/src/plugins/builtin/macro-day/pane.tsx +118 -0
  327. package/src/plugins/builtin/macro-day/releases.ts +58 -0
  328. package/src/plugins/builtin/market-halts/model.ts +30 -17
  329. package/src/plugins/builtin/market-halts/pane.tsx +15 -21
  330. package/src/plugins/builtin/market-heatmap/data.ts +1 -1
  331. package/src/plugins/builtin/market-heatmap/index.tsx +198 -50
  332. package/src/plugins/builtin/market-heatmap/portfolio.ts +220 -0
  333. package/src/plugins/builtin/market-movers/index.tsx +1 -0
  334. package/src/plugins/builtin/market-movers/session-body.tsx +5 -2
  335. package/src/plugins/builtin/mna/distress/client.ts +326 -0
  336. package/src/plugins/builtin/mna/distress/detail.tsx +247 -0
  337. package/src/plugins/builtin/mna/distress/headless.ts +257 -0
  338. package/src/plugins/builtin/mna/distress/model.ts +427 -0
  339. package/src/plugins/builtin/mna/distress/pane.tsx +606 -0
  340. package/src/plugins/builtin/mna/index.tsx +15 -0
  341. package/src/plugins/builtin/mna/pane.tsx +42 -1
  342. package/src/plugins/builtin/news/index.tsx +62 -16
  343. package/src/plugins/builtin/news/wire/filter-articles.ts +54 -0
  344. package/src/plugins/builtin/news/wire/index.tsx +37 -3
  345. package/src/plugins/builtin/news/wire/industry-pane.tsx +29 -13
  346. package/src/plugins/builtin/news/wire/mutes.ts +253 -0
  347. package/src/plugins/builtin/news/wire/news/command-bar-search.ts +117 -0
  348. package/src/plugins/builtin/news/wire/news/footer.ts +4 -0
  349. package/src/plugins/builtin/news/wire/news/list-search.ts +34 -0
  350. package/src/plugins/builtin/news/wire/news/pop-out.tsx +158 -0
  351. package/src/plugins/builtin/news/wire/news/preset-pane.tsx +64 -19
  352. package/src/plugins/builtin/openfda/client.ts +300 -0
  353. package/src/plugins/builtin/openfda/index.tsx +71 -0
  354. package/src/plugins/builtin/openfda/pane.tsx +382 -0
  355. package/src/plugins/builtin/openfda/types.ts +76 -0
  356. package/src/plugins/builtin/options/footer.ts +1 -0
  357. package/src/plugins/builtin/options/view.tsx +1 -1
  358. package/src/plugins/builtin/options-calculator/pane.tsx +0 -1
  359. package/src/plugins/builtin/options-positioning/index.tsx +4 -2
  360. package/src/plugins/builtin/options-positioning/pane.tsx +1 -1
  361. package/src/plugins/builtin/pe-band/client.ts +61 -0
  362. package/src/plugins/builtin/pe-band/headless.ts +51 -0
  363. package/src/plugins/builtin/pe-band/index.tsx +20 -0
  364. package/src/plugins/builtin/pe-band/model.ts +267 -0
  365. package/src/plugins/builtin/pe-band/pane.tsx +159 -0
  366. package/src/plugins/builtin/perps/client.ts +66 -0
  367. package/src/plugins/builtin/perps/equity-row.tsx +28 -0
  368. package/src/plugins/builtin/perps/headless.ts +34 -0
  369. package/src/plugins/builtin/perps/index.tsx +14 -0
  370. package/src/plugins/builtin/perps/model.ts +58 -0
  371. package/src/plugins/builtin/perps/pane.tsx +185 -0
  372. package/src/plugins/builtin/plugin-marketplace/pane.tsx +0 -1
  373. package/src/plugins/builtin/portfolio-list/cli/render.ts +177 -87
  374. package/src/plugins/builtin/portfolio-list/cli/watchlist-command.ts +6 -20
  375. package/src/plugins/builtin/portfolio-list/command-bar.ts +6 -2
  376. package/src/plugins/builtin/portfolio-list/headless.ts +237 -0
  377. package/src/plugins/builtin/portfolio-list/index.tsx +2 -0
  378. package/src/plugins/builtin/portfolio-list/mutations.ts +70 -1
  379. package/src/plugins/builtin/portfolio-list/pane/data.ts +17 -0
  380. package/src/plugins/builtin/portfolio-list/pane/index.tsx +88 -5
  381. package/src/plugins/builtin/portfolio-list/pane/remove-ticker.ts +85 -0
  382. package/src/plugins/builtin/portfolio-list/pane/streaming.ts +18 -12
  383. package/src/plugins/builtin/portfolio-list/quick-add/index.tsx +6 -0
  384. package/src/plugins/builtin/power/client.ts +100 -0
  385. package/src/plugins/builtin/power/detail.tsx +82 -0
  386. package/src/plugins/builtin/power/evidence.ts +56 -0
  387. package/src/plugins/builtin/power/generation.tsx +37 -0
  388. package/src/plugins/builtin/power/headless.ts +43 -0
  389. package/src/plugins/builtin/power/index.tsx +16 -0
  390. package/src/plugins/builtin/power/model.ts +89 -0
  391. package/src/plugins/builtin/power/pane.tsx +209 -0
  392. package/src/plugins/builtin/power/query.ts +25 -0
  393. package/src/plugins/builtin/relative-rotation/pane.tsx +3 -3
  394. package/src/plugins/builtin/research/analyst-pane.tsx +1 -1
  395. package/src/plugins/builtin/research/corporate-actions-pane.tsx +13 -4
  396. package/src/plugins/builtin/research/equity-diagnostic-pane.tsx +11 -9
  397. package/src/plugins/builtin/research-search/pane.tsx +21 -7
  398. package/src/plugins/builtin/revenue-breakdown/pane.tsx +1 -1
  399. package/src/plugins/builtin/reverse-dcf/client.ts +35 -0
  400. package/src/plugins/builtin/reverse-dcf/headless.ts +44 -0
  401. package/src/plugins/builtin/reverse-dcf/index.tsx +20 -0
  402. package/src/plugins/builtin/reverse-dcf/model.ts +87 -0
  403. package/src/plugins/builtin/reverse-dcf/pane.tsx +107 -0
  404. package/src/plugins/builtin/risk-factors/pane.tsx +6 -5
  405. package/src/plugins/builtin/scanner/denied.tsx +4 -2
  406. package/src/plugins/builtin/scanner/feed.ts +1 -0
  407. package/src/plugins/builtin/scanner/flow-pane.tsx +3 -2
  408. package/src/plugins/builtin/scanner/hilo-pane.tsx +1 -1
  409. package/src/plugins/builtin/seasonality/client.ts +4 -1
  410. package/src/plugins/builtin/sec/command-bar-search.ts +217 -0
  411. package/src/plugins/builtin/sec/forms.ts +54 -0
  412. package/src/plugins/builtin/sec/headless.ts +31 -5
  413. package/src/plugins/builtin/sec/index.tsx +67 -11
  414. package/src/plugins/builtin/sec/model.ts +35 -5
  415. package/src/plugins/builtin/sectors/headless.ts +1 -0
  416. package/src/plugins/builtin/sectors/index.tsx +72 -26
  417. package/src/plugins/builtin/shared/cloud-upgrade.ts +143 -39
  418. package/src/plugins/builtin/shared/pro-feature-wall.tsx +8 -4
  419. package/src/plugins/builtin/shared/research-cells.tsx +107 -0
  420. package/src/plugins/builtin/shared/series-list-detail.tsx +5 -1
  421. package/src/plugins/builtin/shared/ticker-request.ts +1 -1
  422. package/src/plugins/builtin/shared/wall-teaser-catalog.ts +80 -0
  423. package/src/plugins/builtin/shared/wall-teaser.tsx +192 -0
  424. package/src/plugins/builtin/shared/wall-view-lifecycle.ts +43 -0
  425. package/src/plugins/builtin/short-interest/index.tsx +31 -0
  426. package/src/plugins/builtin/short-interest/watch-client.ts +70 -0
  427. package/src/plugins/builtin/short-interest/watch-headless.ts +49 -0
  428. package/src/plugins/builtin/short-interest/watch-model.ts +185 -0
  429. package/src/plugins/builtin/short-interest/watch-pane.tsx +169 -0
  430. package/src/plugins/builtin/short-volume/pane.tsx +1 -1
  431. package/src/plugins/builtin/social-mentions/pane.tsx +1 -1
  432. package/src/plugins/builtin/supply-chain/client.ts +104 -0
  433. package/src/plugins/builtin/supply-chain/disclosure-quote.tsx +17 -0
  434. package/src/plugins/builtin/supply-chain/evidence.ts +88 -0
  435. package/src/plugins/builtin/supply-chain/flow-layout.ts +133 -0
  436. package/src/plugins/builtin/supply-chain/flow.tsx +323 -0
  437. package/src/plugins/builtin/supply-chain/graph-client.ts +83 -0
  438. package/src/plugins/builtin/supply-chain/graph-evidence.ts +25 -0
  439. package/src/plugins/builtin/supply-chain/graph-model.ts +45 -0
  440. package/src/plugins/builtin/supply-chain/graph-pane.tsx +218 -0
  441. package/src/plugins/builtin/supply-chain/graph.tsx +163 -0
  442. package/src/plugins/builtin/supply-chain/headless.ts +105 -0
  443. package/src/plugins/builtin/supply-chain/index.tsx +17 -0
  444. package/src/plugins/builtin/supply-chain/model.ts +145 -0
  445. package/src/plugins/builtin/supply-chain/pane.tsx +276 -0
  446. package/src/plugins/builtin/supply-chain/row-evidence.tsx +96 -0
  447. package/src/plugins/builtin/supply-chain/trust.ts +34 -0
  448. package/src/plugins/builtin/themes/client.ts +39 -0
  449. package/src/plugins/builtin/themes/headless.ts +38 -0
  450. package/src/plugins/builtin/themes/model.ts +92 -0
  451. package/src/plugins/builtin/themes/pane.tsx +125 -0
  452. package/src/plugins/builtin/thirteenf/pane.tsx +6 -15
  453. package/src/plugins/builtin/ticker-detail/data-panes/historical-prices.tsx +5 -6
  454. package/src/plugins/builtin/ticker-detail/data-panes/returns-model.ts +201 -0
  455. package/src/plugins/builtin/ticker-detail/data-panes/returns-pane.tsx +327 -0
  456. package/src/plugins/builtin/ticker-detail/financials/period-end-history.ts +5 -2
  457. package/src/plugins/builtin/ticker-detail/financials/ratios.ts +60 -12
  458. package/src/plugins/builtin/ticker-detail/financials/tab.tsx +2 -1
  459. package/src/plugins/builtin/ticker-detail/headless.ts +7 -2
  460. package/src/plugins/builtin/ticker-detail/index.tsx +22 -0
  461. package/src/plugins/builtin/ticker-detail/overview/components.tsx +53 -30
  462. package/src/plugins/builtin/ticker-detail/overview/pane.tsx +2 -0
  463. package/src/plugins/builtin/ticker-detail/overview-tab.tsx +112 -47
  464. package/src/plugins/builtin/ticker-detail/pane.tsx +50 -6
  465. package/src/plugins/builtin/ticker-detail/quote-monitor/card.tsx +21 -42
  466. package/src/plugins/builtin/ticker-detail/quote-monitor/index.tsx +3 -0
  467. package/src/plugins/builtin/time-sales/pane.tsx +1 -1
  468. package/src/plugins/builtin/world-indices/indices.ts +1 -0
  469. package/src/plugins/catalog-browser.ts +40 -0
  470. package/src/plugins/catalog-manifest.ts +3 -0
  471. package/src/plugins/catalog-ui.ts +6 -0
  472. package/src/plugins/current-target.ts +0 -9
  473. package/src/public/__snapshots__/public-api.test.ts.snap +1 -0
  474. package/src/renderers/browser/cloud-transport.ts +66 -1
  475. package/src/renderers/browser/main.tsx +2 -0
  476. package/src/renderers/dom/data-table/row.tsx +2 -0
  477. package/src/renderers/dom/desktop/controls.tsx +38 -25
  478. package/src/renderers/dom/desktop/icons.tsx +8 -0
  479. package/src/renderers/dom/host/chart-surface.tsx +36 -2
  480. package/src/renderers/dom/host/focus-scope.ts +11 -1
  481. package/src/renderers/dom/styles.css +28 -0
  482. package/src/renderers/electrobun/view/backend-rpc.ts +3 -2
  483. package/src/renderers/electrobun/view/cli-pane-shot-entry.tsx +1 -1
  484. package/src/renderers/electrobun/view/http-fetch.ts +2 -0
  485. package/src/renderers/electrobun/view/main.tsx +3 -1
  486. package/src/renderers/electrobun/view/rpc-timeout.ts +59 -0
  487. package/src/renderers/opentui/start.tsx +3 -0
  488. package/src/shares/api.ts +3 -1
  489. package/src/sources/gloomberb-cloud/index.ts +47 -13
  490. package/src/sources/history-result.ts +1 -0
  491. package/src/sources/history-retention.ts +16 -0
  492. package/src/sources/provider-router/history.ts +4 -2
  493. package/src/sources/sec-edgar/identity.ts +36 -0
  494. package/src/sources/sec-edgar.ts +1 -34
  495. package/src/state/app/context/index.tsx +8 -0
  496. package/src/sync/core-contributors.ts +20 -2
  497. package/src/telemetry/attention-counts.ts +164 -0
  498. package/src/telemetry/live-config.ts +7 -0
  499. package/src/test-support/rpc-loopback.ts +7 -3
  500. package/src/test-support/shell-pane-keys.tsx +34 -0
  501. package/src/tickers/instrument-kind.ts +12 -6
  502. package/src/tickers/open-target.ts +1 -1
  503. package/src/tickers/search/asset-classes.ts +91 -0
  504. package/src/tickers/search/index.ts +62 -15
  505. package/src/tickers/search/ranking.ts +22 -3
  506. package/src/tickers/search/upsert.ts +4 -1
  507. package/src/time-series/live-bars.ts +8 -3
  508. package/src/time-series/resolve.ts +224 -17
  509. package/src/time-series/spec.ts +1 -0
  510. package/src/time-series/types.ts +9 -1
  511. package/src/types/config.ts +23 -1
  512. package/src/types/data-provider.ts +2 -0
  513. package/src/types/headless.ts +17 -0
  514. package/src/types/price-history.ts +2 -0
  515. package/src/ui/host.tsx +6 -0
  516. package/src/utils/double-escape-close.ts +20 -0
  517. package/src/utils/exchanges.ts +1 -0
  518. package/src/utils/html-entities.ts +15 -0
  519. package/src/utils/http-proxy-response.ts +44 -7
  520. package/src/utils/plugin-proxy-hosts.json +3 -0
  521. package/src/utils/price-history.ts +35 -1
  522. package/src/utils/sec.ts +21 -2
  523. package/src/utils/text-wrap.ts +13 -8
  524. package/src/utils/zoned-date-time.ts +67 -0
@@ -1,8 +1,27 @@
1
+ import type { AttentionPayload, AttentionWindow } from "./attention";
2
+ import type { HiringBoard, HiringPayload } from "./hiring";
3
+ import type { AppAttentionFilter, AppAttentionPayload, AppRankPayload } from "./app-attention";
4
+ import type { CatalystResponse, CatalystDetail, CatalystFilters, CatalystStatus, CatalystChanges } from "./catalysts";
5
+ import type { KpisPayload, GuidancePayload, KpiQueryOptions } from "./company-kpis";
6
+ import { companyDisclosurePath } from "./company-kpis";
7
+ import type { PowerBoard, PowerDetail, PowerFilter, PowerHistory } from "./power";
8
+ import type { PerpBoardPayload, PerpHistoryPayload, PerpRankingsPayload, PerpBoardQuery, PerpHistoryQuery, PerpMarketPayload } from "./perps";
9
+ import type { ExposureRequest, ExposurePayload, ExposureScenario } from "./exposure";
10
+ import type { SupplyChainPayload, SupplyOptions } from "./supply-chain";
11
+ import { supplyGraphQuery, type GraphOptions, type GraphPayload } from "./supply-chain-graph";
12
+ import type { AwardDetailPayload, AwardFilter, AwardsPayload } from "./awards";
1
13
  import type { EarningsEvent } from "../types/data-provider";
2
14
  import type { MarketDividendsPayload, MarketHeatmapResult, MarketHeatmapUniverseId, MarketMoversPayload } from "./market-discovery";
3
15
  import type { DebtMaturitiesPayload } from "./debt-maturities";
4
16
  import type { RevenueBreakdownPayload, RevenueBreakdownView } from "./revenue-breakdown";
5
17
  import type { MnaDealPayload, MnaDealsParams, MnaDealsPayload } from "./mna";
18
+ import {
19
+ distressQuery,
20
+ type DistressDesignationsParams,
21
+ type DistressFilingsParams,
22
+ type GoingConcernParams,
23
+ type InsolvencyNoticesParams,
24
+ } from "./distress";
6
25
  import type { IpoCalendarParams, IpoCalendarPayload } from "./ipo";
7
26
  import type { CryptoMarketsPayload } from "./crypto-markets";
8
27
  import type { CentralBankRatesPayload } from "./central-bank-rates";
@@ -14,6 +33,9 @@ import type { ShortVolumePayload, ShortVolumeScope } from "./short-volume";
14
33
  import type { SocialMentionDayPosts, SocialMentionsPayload, SocialMentionsRange } from "./social-mentions";
15
34
  import type { FuturesCurveAsOfPayload, FuturesCurvePayload } from "./futures-curve";
16
35
  import type { CotBoardPayload, CotContractPayload, CotFamily, CotClass } from "./cot";
36
+ import type { DoeBoardPayload } from "./doe";
37
+ import type { GpuBoardPayload, GpuEventsPayload, GpuHistoryPayload, GpuHistoryQuery } from "./gpu";
38
+ import type { CpiBoardPayload } from "./cpi";
17
39
  import type { TapeSnapshot } from "./tape";
18
40
  import type { ExchangeRateSnapshot } from "../types/exchange-rate";
19
41
  import type { RatePathPayload } from "./rates";
@@ -145,10 +167,12 @@ export class CloudDataApi {
145
167
  path: string,
146
168
  targets: CloudMarketBatchTarget[],
147
169
  mode: "cache-first" | "refresh",
170
+ signal?: AbortSignal,
148
171
  ): Promise<CloudMarketResponse<CloudMarketBatchPayload<T>>> {
149
172
  return this.request<CloudMarketResponse<CloudMarketBatchPayload<T>>>(path, {
150
173
  method: "POST",
151
174
  body: JSON.stringify({ targets, mode }),
175
+ ...(signal ? { signal } : {}),
152
176
  });
153
177
  }
154
178
 
@@ -157,6 +181,14 @@ export class CloudDataApi {
157
181
  return this.request<T>(`/cloud/equity-screener/${path}`, init);
158
182
  }
159
183
 
184
+ getCloudThemes() {
185
+ return this.request<import("./themes").ThemesPayload>("/cloud/themes");
186
+ }
187
+
188
+ getCloudThemeMembers(id: string) {
189
+ return this.request<import("./themes").ThemeMembersPayload>(`/cloud/themes/${encodeURIComponent(id)}`);
190
+ }
191
+
160
192
  /** Stored implied volatility (HIVG, VCA, OVDV dates); one prefix-scoped method, like EQS. */
161
193
  impliedVolatility<T>(path: string, init?: RequestInit) {
162
194
  return this.request<T>(`/cloud/iv/${path}`, init);
@@ -203,8 +235,9 @@ export class CloudDataApi {
203
235
  async getCloudQuotesBatch(
204
236
  targets: CloudMarketBatchTarget[],
205
237
  mode: "cache-first" | "refresh" = "cache-first",
238
+ options: { signal?: AbortSignal } = {},
206
239
  ): Promise<CloudMarketResponse<CloudMarketBatchPayload<CloudQuotePayload>>> {
207
- return this.postMarketBatch("/market/quotes/batch", targets, mode);
240
+ return this.postMarketBatch("/market/quotes/batch", targets, mode, options.signal);
208
241
  }
209
242
 
210
243
  async getCloudWorldVenues(): Promise<
@@ -323,9 +356,11 @@ export class CloudDataApi {
323
356
  symbol: string,
324
357
  exchange: string,
325
358
  params: CloudHistoryParams = {},
359
+ options: { signal?: AbortSignal } = {},
326
360
  ): Promise<CloudMarketResponse<CloudPricePointPayload[]>> {
327
361
  return this.request<CloudMarketResponse<CloudPricePointPayload[]>>(
328
362
  cloudHistoryPath(symbol, exchange, params),
363
+ options.signal ? { signal: options.signal } : undefined,
329
364
  );
330
365
  }
331
366
 
@@ -367,9 +402,11 @@ export class CloudDataApi {
367
402
  async getCloudFredSeries(
368
403
  seriesId: string,
369
404
  params: CloudFredSeriesParams = {},
405
+ options: { signal?: AbortSignal } = {},
370
406
  ): Promise<CloudFredSeriesPayload> {
371
407
  return this.request<CloudFredSeriesPayload>(
372
408
  cloudFredSeriesPath(seriesId, params),
409
+ options.signal ? { signal: options.signal } : undefined,
373
410
  );
374
411
  }
375
412
 
@@ -385,6 +422,140 @@ export class CloudDataApi {
385
422
  return this.request<CotContractPayload>(`/cloud/cot/contracts/${encodeURIComponent(code)}?${new URLSearchParams({ report })}`);
386
423
  }
387
424
 
425
+ /** Credit-document paths stay with their pane; keep the shared client small. */
426
+ creditDocuments<T>(path: string): Promise<T> {
427
+ return this.request<T>(`/cloud/credit-documents/${path}`);
428
+ }
429
+
430
+ async getCloudHiring(symbol?: string, query: { limit?: number; offset?: number } = {}, signal?: AbortSignal): Promise<HiringBoard | HiringPayload> {
431
+ const params = new URLSearchParams({ limit: String(query.limit ?? 100), offset: String(query.offset ?? 0) });
432
+ return this.request<HiringBoard | HiringPayload>(symbol ? `/cloud/hiring/${encodeURIComponent(symbol)}` : `/cloud/hiring?${params}`, { signal });
433
+ }
434
+
435
+ async getCloudAppRankHistory(store: "app-store" | "google-play", appId: string, query: AppAttentionFilter = {}, signal?: AbortSignal): Promise<AppRankPayload> {
436
+ const params = new URLSearchParams(Object.entries(query).filter(([, value]) => value !== undefined).map(([key, value]) => [key, String(value)]));
437
+ return this.request<AppRankPayload>(`/cloud/app-attention/app/${store}/${encodeURIComponent(appId)}?${params}`, { signal });
438
+ }
439
+
440
+ async getCloudAppAttention(query: AppAttentionFilter = {}, signal?: AbortSignal): Promise<AppAttentionPayload> {
441
+ const { symbol, ...filters } = query;
442
+ const params = new URLSearchParams(Object.entries(filters).filter(([, value]) => value !== undefined).map(([key, value]) => [key, String(value)]));
443
+ return this.request<AppAttentionPayload>(`/cloud/app-attention/${symbol ? encodeURIComponent(symbol) : "board"}?${params}`, { signal });
444
+ }
445
+
446
+ async getCloudCatalysts(query: CatalystFilters = {}, signal?: AbortSignal): Promise<CatalystResponse> {
447
+ const params = new URLSearchParams(Object.entries(query).filter(([, value]) => value !== undefined).map(([key, value]) => [key, String(value)]));
448
+ const route = query.litigation && query.symbol ? `/cloud/catalysts/litigation/${encodeURIComponent(query.symbol)}` : "/cloud/catalysts";
449
+ return this.request<CatalystResponse>(`${route}?${params}`, { signal });
450
+ }
451
+
452
+ async getCloudCatalystChanges(query: { since: string; cursor?: string; limit?: number }, signal?: AbortSignal): Promise<CatalystChanges> {
453
+ const params = new URLSearchParams(Object.entries(query).filter(([, value]) => value !== undefined).map(([key, value]) => [key, String(value)]));
454
+ return this.request<CatalystChanges>(`/cloud/catalysts/changes?${params}`, { signal });
455
+ }
456
+
457
+ async getCloudCatalystEvent(id: string, signal?: AbortSignal, query: { offset?: number; limit?: number } = {}): Promise<CatalystDetail> {
458
+ const params = new URLSearchParams(Object.entries(query).filter(([, value]) => value !== undefined).map(([key, value]) => [key, String(value)]));
459
+ return this.request<CatalystDetail>(`/cloud/catalysts/events/${encodeURIComponent(id)}?${params}`, { signal });
460
+ }
461
+
462
+ async getCloudCatalystStatus(): Promise<CatalystStatus> {
463
+ return this.request<CatalystStatus>("/cloud/catalysts/status");
464
+ }
465
+
466
+ async getCloudCompanyKpis(symbol: string, options: KpiQueryOptions = {}): Promise<KpisPayload> {
467
+ return this.request<KpisPayload>(companyDisclosurePath("kpis", symbol, options));
468
+ }
469
+
470
+ async getCloudCompanyGuidance(symbol: string, options: KpiQueryOptions = {}): Promise<GuidancePayload> {
471
+ return this.request<GuidancePayload>(companyDisclosurePath("guidance", symbol, options));
472
+ }
473
+ async getCloudPerpsBoard(query: PerpBoardQuery = {}): Promise<PerpBoardPayload> {
474
+ return this.request(`/cloud/perps/board?${new URLSearchParams(Object.entries(query).filter(([, value]) => value !== undefined).map(([key, value]) => [key, String(value)]))}`);
475
+ }
476
+ async getCloudPerpsHistory(query: PerpHistoryQuery): Promise<PerpHistoryPayload> {
477
+ return this.request(`/cloud/perps/history?${new URLSearchParams(Object.entries(query).filter(([, value]) => value !== undefined).map(([key, value]) => [key, String(value)]))}`);
478
+ }
479
+ async getCloudPerpsRankings(): Promise<PerpRankingsPayload> { return this.request("/cloud/perps/rankings"); }
480
+ async getCloudPerpsCompare(baseAsset: string): Promise<PerpBoardPayload> { return this.request(`/cloud/perps/compare?${new URLSearchParams({ baseAsset })}`); }
481
+ async getCloudPerpsEquity(symbol: string): Promise<PerpBoardPayload> { return this.request(`/cloud/perps/equity/${encodeURIComponent(symbol)}`); }
482
+ async getCloudPerpsMarket(marketId: string): Promise<PerpMarketPayload> { return this.request(`/cloud/perps/market?${new URLSearchParams({ marketId })}`); }
483
+
484
+ async analyzeCloudExposure(request: ExposureRequest): Promise<ExposurePayload> {
485
+ return this.request<ExposurePayload>("/cloud/exposure/analyze", { method: "POST", body: JSON.stringify(request) });
486
+ }
487
+
488
+ async getCloudExposureScenarios(): Promise<{ scenarios: ExposureScenario[] }> {
489
+ return this.request<{ scenarios: ExposureScenario[] }>("/cloud/exposure/scenarios");
490
+ }
491
+
492
+ async getCloudSupplyChain(symbol: string, options: SupplyOptions = {}): Promise<SupplyChainPayload> {
493
+ const query = new URLSearchParams();
494
+ if (options.tiers?.length) query.set("tiers", options.tiers.join(","));
495
+ if (options.includeLeads) query.set("includeLeads", "1");
496
+ return this.request<SupplyChainPayload>(`/cloud/supply-chain/${encodeURIComponent(symbol)}${query.size ? `?${query}` : ""}`);
497
+ }
498
+
499
+ getCloudAwards(query: AwardFilter = {}, signal?: AbortSignal): Promise<AwardsPayload> {
500
+ const params = new URLSearchParams(Object.entries(query).filter(([, value]) => value != null).map(([key, value]) => [key, `${value}`]));
501
+ return this.request<AwardsPayload>(`/cloud/awards?${params}`, { signal });
502
+ }
503
+
504
+ getCloudAward(id: string, signal?: AbortSignal, revisionsCursor?: string): Promise<AwardDetailPayload> {
505
+ const query = revisionsCursor ? `?${new URLSearchParams({ revisionsCursor })}` : "";
506
+ return this.request<AwardDetailPayload>(`/cloud/awards/detail/${encodeURIComponent(id)}${query}`, { signal });
507
+ }
508
+
509
+ async getCloudSupplyGraph(symbol: string, options: Partial<GraphOptions> = {}): Promise<GraphPayload> {
510
+ return this.request<GraphPayload>(`/cloud/supply-chain/${encodeURIComponent(symbol)}/graph?${supplyGraphQuery(options)}`);
511
+ }
512
+
513
+ async getCloudSupplyPaths(from: string, to: string, options: Partial<GraphOptions> = {}): Promise<GraphPayload> {
514
+ return this.request<GraphPayload>(`/cloud/supply-chain/paths?from=${encodeURIComponent(from)}&to=${encodeURIComponent(to)}&${supplyGraphQuery(options)}`);
515
+ }
516
+
517
+ async getCloudDoeBoard(): Promise<DoeBoardPayload> {
518
+ return this.request<DoeBoardPayload>("/cloud/doe/board");
519
+ }
520
+
521
+ async getCloudAttention(window: AttentionWindow = "now", symbol?: string): Promise<AttentionPayload> {
522
+ const path = symbol ? `/cloud/attention/${encodeURIComponent(symbol)}` : "/cloud/attention";
523
+ return this.request<AttentionPayload>(`${path}?window=${window}`);
524
+ }
525
+
526
+ async getCloudPowerBoard(query: PowerFilter = {}, signal?: AbortSignal): Promise<PowerBoard> {
527
+ const params = new URLSearchParams(Object.entries(query).filter(([, value]) => value !== undefined).map(([key, value]) => [key, String(value)]));
528
+ return this.request<PowerBoard>(`/cloud/power/board?${params}`, { signal });
529
+ }
530
+
531
+ async getCloudPowerHistory(query: PowerFilter = {}): Promise<PowerHistory> {
532
+ const params = new URLSearchParams(Object.entries(query).filter(([, value]) => value !== undefined).map(([key, value]) => [key, String(value)]));
533
+ return this.request<PowerHistory>(`/cloud/power/history?${params}`);
534
+ }
535
+
536
+ async getCloudPowerProject(id: string, query: Pick<PowerFilter, "offset" | "limit"> = {}, signal?: AbortSignal): Promise<PowerDetail> {
537
+ const params = new URLSearchParams(Object.entries(query).filter(([, value]) => value !== undefined).map(([key, value]) => [key, String(value)]));
538
+ return this.request<PowerDetail>(`/cloud/power/projects/${encodeURIComponent(id)}?${params}`, { signal });
539
+ }
540
+
541
+ async getCloudGpuBoard(): Promise<GpuBoardPayload> {
542
+ return this.request<GpuBoardPayload>("/cloud/gpu/board");
543
+ }
544
+
545
+ async getCloudGpuHistory(query: GpuHistoryQuery = {}): Promise<GpuHistoryPayload> {
546
+ const params = new URLSearchParams(Object.entries(query).filter(([, value]) => value !== undefined).map(([key, value]) => [key, String(value)]));
547
+ return this.request<GpuHistoryPayload>(`/cloud/gpu/history?${params}`);
548
+ }
549
+
550
+ async getCloudGpuEvents(gpuModel?: string): Promise<GpuEventsPayload> {
551
+ const params = new URLSearchParams({ limit: "1000", ...(gpuModel ? { gpuModel } : {}) });
552
+ return this.request<GpuEventsPayload>(`/cloud/gpu/events?${params}`);
553
+ }
554
+
555
+ async getCloudCpiBoard(): Promise<CpiBoardPayload> {
556
+ return this.request<CpiBoardPayload>("/cloud/cpi/board");
557
+ }
558
+
388
559
  async getCloudTape(symbol: string, exchange: string, signal?: AbortSignal): Promise<TapeSnapshot> {
389
560
  return this.request<TapeSnapshot>(`/cloud/tape/${encodeURIComponent(symbol)}?exchange=${encodeURIComponent(exchange)}`, { signal: signal ?? AbortSignal.timeout(30_000) });
390
561
  }
@@ -449,6 +620,24 @@ export class CloudDataApi {
449
620
  return this.request<MnaDealPayload>(`/cloud/mna/deals/${encodeURIComponent(id)}`, { signal: options?.signal ?? AbortSignal.timeout(30_000) });
450
621
  }
451
622
 
623
+ // Public records about companies in difficulty. The answers are unchecked
624
+ // JSON: the distress tab's parsers validate them before anything is drawn.
625
+ async getPublicDistressFilings(params: DistressFilingsParams, options?: { signal?: AbortSignal }): Promise<unknown> {
626
+ return this.request<unknown>(`/public/events${distressQuery(params)}`, { signal: options?.signal ?? AbortSignal.timeout(30_000) });
627
+ }
628
+
629
+ async getPublicGoingConcern(params: GoingConcernParams = {}, options?: { signal?: AbortSignal }): Promise<unknown> {
630
+ return this.request<unknown>(`/public/going-concern${distressQuery(params)}`, { signal: options?.signal ?? AbortSignal.timeout(30_000) });
631
+ }
632
+
633
+ async getPublicDistressDesignations(params: DistressDesignationsParams = {}, options?: { signal?: AbortSignal }): Promise<unknown> {
634
+ return this.request<unknown>(`/public/distress-designations${distressQuery(params)}`, { signal: options?.signal ?? AbortSignal.timeout(30_000) });
635
+ }
636
+
637
+ async getPublicInsolvencyNotices(params: InsolvencyNoticesParams = {}, options?: { signal?: AbortSignal }): Promise<unknown> {
638
+ return this.request<unknown>(`/public/insolvency-notices${distressQuery(params)}`, { signal: options?.signal ?? AbortSignal.timeout(30_000) });
639
+ }
640
+
452
641
  async getCloudIpoCalendar(params: IpoCalendarParams = {}, options?: { signal?: AbortSignal }): Promise<IpoCalendarPayload> {
453
642
  const query = new URLSearchParams();
454
643
  for (const [key, value] of Object.entries(params)) {
@@ -615,8 +804,8 @@ export class CloudDataApi {
615
804
  }
616
805
 
617
806
  /**
618
- * Cross-document full-text search. Pro-gated: unentitled accounts get a 402,
619
- * which the caller turns into the access gate rather than an empty result.
807
+ * Cross-document full-text search, open to every signed-in account; signed
808
+ * out it answers 401. Only alerts on a saved search need Pro.
620
809
  */
621
810
  async searchCloudDocuments(
622
811
  params: CloudSearchParams,
@@ -0,0 +1,164 @@
1
+ /**
2
+ * Public records about companies in difficulty: US 8-K filings under the
3
+ * bankruptcy, obligation and listing items, SEC going-concern disclosures,
4
+ * exchange listing designations and company insolvency notices. Every route
5
+ * is anonymous; field names follow the server, which serves the last three in
6
+ * snake case.
7
+ */
8
+ import type { CloudFilingEventPayload } from "./types";
9
+
10
+ /** `distress` is Items 1.03 and 2.04; `listing` is Item 3.01. */
11
+ export type DistressFilingKind = "distress" | "listing";
12
+
13
+ export interface DistressFilingsParams {
14
+ kind: DistressFilingKind;
15
+ /** 1 to 200; the route has no offset, so this is the whole list. */
16
+ limit?: number;
17
+ }
18
+
19
+ export interface DistressFilingsPayload {
20
+ events: CloudFilingEventPayload[];
21
+ }
22
+
23
+ export type GoingConcernVerdict = "doubt_raised" | "doubt_alleviated" | "policy_only" | "unclear";
24
+
25
+ export interface GoingConcernParams {
26
+ verdict?: GoingConcernVerdict;
27
+ limit?: number;
28
+ offset?: number;
29
+ }
30
+
31
+ export interface GoingConcernDisclosure {
32
+ id: string;
33
+ cik: string;
34
+ /** Venue-qualified trading symbol (`BMRA:NASDAQ`), null for a filer without one. */
35
+ ticker: string | null;
36
+ accession: string;
37
+ form: string;
38
+ period_end: string | null;
39
+ filed_at: string;
40
+ fact_date: string | null;
41
+ tag: string;
42
+ verdict: GoingConcernVerdict;
43
+ /** Whether the filing frames its assessment over one year; null when it does not say. */
44
+ within_one_year: boolean | null;
45
+ source_within_one_year: boolean | null;
46
+ summary: string;
47
+ quote: string;
48
+ text: string;
49
+ text_truncated: boolean;
50
+ dataset_month: string;
51
+ company: { ticker: string; cik: string | null; name: string; shortName: string };
52
+ filing_url: string;
53
+ }
54
+
55
+ export interface GoingConcernPayload {
56
+ disclosures: GoingConcernDisclosure[];
57
+ hasMore: boolean;
58
+ limit: number;
59
+ offset: number;
60
+ }
61
+
62
+ export type DesignationDateBasis = "designation" | "effective" | "first_observed";
63
+
64
+ export interface DistressDesignationsParams {
65
+ kind?: string;
66
+ exchange?: string;
67
+ limit?: number;
68
+ offset?: number;
69
+ }
70
+
71
+ export interface DistressDesignation {
72
+ id: string;
73
+ source: string;
74
+ region: string;
75
+ exchange: string;
76
+ /** Canonical listing key, e.g. `2867:TWSE`. */
77
+ symbol: string | null;
78
+ local_code: string;
79
+ entity_name: string;
80
+ entity_name_en: string | null;
81
+ market_segment: string | null;
82
+ /** `delisted`, `changed_trading_method` or `suspended`. */
83
+ kind: string;
84
+ designated_at: string | null;
85
+ effective_at: string | null;
86
+ first_seen_at: string;
87
+ last_seen_at: string;
88
+ ended_at: string | null;
89
+ remarks: string;
90
+ source_url: string;
91
+ notice_url: string | null;
92
+ date_basis: DesignationDateBasis;
93
+ }
94
+
95
+ /** The licence terms a source's rows are published under, reproduced with them. */
96
+ export interface DistressAttribution {
97
+ source: string;
98
+ organization: string;
99
+ dataset: string | null;
100
+ version: string | null;
101
+ year: number | null;
102
+ datasetUrls: string[];
103
+ licence: string;
104
+ licenceUrl: string;
105
+ notice: string;
106
+ }
107
+
108
+ export interface DistressDesignationsPayload {
109
+ designations: DistressDesignation[];
110
+ hasMore: boolean;
111
+ limit: number;
112
+ offset: number;
113
+ attributions: DistressAttribution[];
114
+ }
115
+
116
+ export interface InsolvencyNoticesParams {
117
+ country?: string;
118
+ kind?: string;
119
+ /** Company name prefix, two characters or more. */
120
+ name_prefix?: string;
121
+ limit?: number;
122
+ offset?: number;
123
+ }
124
+
125
+ export interface InsolvencyNotice {
126
+ source: string;
127
+ country: string;
128
+ /** SIREN in France, the Companies House number in the UK. */
129
+ registry_id: string;
130
+ entity_name: string;
131
+ symbol: string | null;
132
+ kind: string;
133
+ /** The official judgment label (France) or Gazette notice code (UK). */
134
+ raw_code: string;
135
+ /** Judgment or procedure date, when the notice states one. */
136
+ notice_date: string | null;
137
+ published_date: string;
138
+ court: string;
139
+ notice_id: string;
140
+ notice_url: string;
141
+ /** `annonce`, `rectificatif` or `annulation`. */
142
+ notice_type: string;
143
+ original_notice_id: string | null;
144
+ /** `active`, `superseded` or `cancelled`. */
145
+ status: string;
146
+ }
147
+
148
+ export interface InsolvencyNoticesPayload {
149
+ notices: InsolvencyNotice[];
150
+ hasMore: boolean;
151
+ limit: number;
152
+ offset: number;
153
+ attributions: DistressAttribution[];
154
+ }
155
+
156
+ /** `?a=1&b=2` from the defined, non-empty values; empty when there are none. */
157
+ export function distressQuery(params: object): string {
158
+ const query = new URLSearchParams();
159
+ for (const [key, value] of Object.entries(params)) {
160
+ if (value !== undefined && value !== null && value !== "") query.set(key, String(value));
161
+ }
162
+ const text = query.toString();
163
+ return text ? `?${text}` : "";
164
+ }
@@ -0,0 +1,75 @@
1
+ /** EIA weekly petroleum and natural gas storage, as GET /cloud/doe/board serves it. */
2
+ export type DoeReport = "petroleum" | "gas";
3
+ export type DoeTab = "crude" | "products" | "gas";
4
+ /** Thousand barrels, thousand barrels a day, percent, billion cubic feet: as published. */
5
+ export type DoeUnit = "kb" | "kbd" | "pct" | "bcf";
6
+
7
+ interface DoeFiveYear {
8
+ /** Calendar years in the band, oldest first; fewer than five where history is short. */
9
+ years: number[];
10
+ min: number;
11
+ max: number;
12
+ average: number;
13
+ /** The average change into this week over the same years. */
14
+ averageChange: number | null;
15
+ vsAverage: number;
16
+ vsAveragePercent: number | null;
17
+ /** 0 at the five-year low, 100 at the high, beyond either outside the range. */
18
+ position: number | null;
19
+ }
20
+
21
+ interface DoeYearAgo {
22
+ weekEnding: string;
23
+ value: number;
24
+ change: number;
25
+ changePercent: number | null;
26
+ }
27
+
28
+ interface DoeSeasonal {
29
+ /** The calendar year of the latest week. */
30
+ year: number;
31
+ /** Fridays in that year: 52 or 53. */
32
+ weeks: number;
33
+ /** [week of year, value]. */
34
+ current: Array<[number, number]>;
35
+ previous: Array<[number, number]>;
36
+ /** [week, min, average, max] of the band years on that week's day. */
37
+ band: Array<[number, number | null, number | null, number | null]>;
38
+ }
39
+
40
+ export interface DoeSeriesRow {
41
+ id: string;
42
+ key: string;
43
+ report: DoeReport;
44
+ tab: DoeTab;
45
+ label: string;
46
+ unit: DoeUnit;
47
+ weekEnding: string | null;
48
+ value: number | null;
49
+ previousWeekEnding: string | null;
50
+ weekChange: number | null;
51
+ yearAgo: DoeYearAgo | null;
52
+ fiveYear: DoeFiveYear | null;
53
+ /** One plain read worked out from the numbers. */
54
+ read: string | null;
55
+ seasonal: DoeSeasonal | null;
56
+ }
57
+
58
+ export interface DoeReportStatus {
59
+ id: DoeReport;
60
+ weekEnding: string | null;
61
+ releasedAt: string | null;
62
+ releaseHoliday: string | null;
63
+ nextWeekEnding: string | null;
64
+ nextReleaseAt: string | null;
65
+ nextReleaseHoliday: string | null;
66
+ }
67
+
68
+ export interface DoeBoardPayload {
69
+ source: "EIA";
70
+ generatedAt: string;
71
+ status: "available" | "partial" | "unavailable";
72
+ gaps: string[];
73
+ reports: DoeReportStatus[];
74
+ series: DoeSeriesRow[];
75
+ }
@@ -1,4 +1,7 @@
1
+ /** Cited company disclosures; Pro, omitted by older servers. */
2
+ export const KPI_FIELDS = ["kpiArr", "kpiNrrPercent", "kpiRpo", "kpiCrpo", "kpiSubscribers", "kpiDau", "kpiMau", "kpiGmv", "kpiTakeRatePercent", "kpiSameStoreSalesPercent", "kpiStores", "kpiBacklog", "kpiBookToBill", "kpiNimPercent", "kpiCet1Percent", "kpiCombinedRatioPercent", "kpiOccupancyPercent", "kpiLoadFactorPercent", "guideRevenueChangePercent", "guideEpsChangePercent"] as const;
1
3
  export const NUMERIC_FIELDS = [
4
+ ...KPI_FIELDS,
2
5
  "price",
3
6
  "changePercent",
4
7
  "volume",
@@ -26,6 +29,8 @@ export const NUMERIC_FIELDS = [
26
29
  "xPostsVsMedian",
27
30
  "wikiViewsPerDay",
28
31
  "wikiViewsVsMedian",
32
+ "attentionResearchUnits",
33
+ "attentionZScore",
29
34
  "return1WPercent",
30
35
  "return1MPercent",
31
36
  "return3MPercent",
@@ -40,9 +45,14 @@ export const NUMERIC_FIELDS = [
40
45
  "analystUpsidePercent",
41
46
  "ivRank",
42
47
  "ivToHv",
48
+ "hiringOpenRoles", "hiringNetAddsWeek", "hiringRemotePercent", "hiringZScore",
49
+ "appAttentionScore", "appRankVelocity7d", "appRatingDrift7d", "appRatingCountGrowth7d",
43
50
  ] as const;
51
+ /** Hiring and app attention are optional when connecting to an older server. */
52
+ export const HIRING_APP_FIELDS = ["hiringOpenRoles", "hiringNetAddsWeek", "hiringRemotePercent", "hiringZScore", "appAttentionScore", "appRankVelocity7d", "appRatingDrift7d", "appRatingCountGrowth7d"] as const;
44
53
  /** Social attention; a server from before them omits these metrics. */
45
54
  export const SOCIAL_FIELDS = ["xPostsPerDay", "xPostsVsMedian", "wikiViewsPerDay", "wikiViewsVsMedian"] as const;
55
+ export const ATTENTION_FIELDS = ["attentionResearchUnits", "attentionZScore"] as const;
46
56
  /** Returns, valuation, estimates and options; a server from before them omits these metrics. */
47
57
  export const RESEARCH_FIELDS = [
48
58
  "return1WPercent", "return1MPercent", "return3MPercent", "returnYtdPercent", "return1YPercent", "fromHigh52WPercent",
@@ -147,6 +157,7 @@ export interface SavedScreen {
147
157
  updatedAt: string;
148
158
  }
149
159
  export interface ScreenFieldDefinition {
160
+ access?: "pro";
150
161
  id: ScreenField;
151
162
  label: string;
152
163
  kind: "number" | "category";