gloomberb 0.15.4 → 0.15.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (569) hide show
  1. package/README.md +3 -1
  2. package/package.json +4 -3
  3. package/src/api-client/askg.ts +2 -2
  4. package/src/api-client/cot.ts +3 -3
  5. package/src/api-client/crypto-markets.ts +1 -1
  6. package/src/api-client/data.ts +17 -0
  7. package/src/api-client/debt-maturities.ts +2 -2
  8. package/src/api-client/earnings.ts +3 -3
  9. package/src/api-client/equity-screener.ts +2 -2
  10. package/src/api-client/estimate-revisions.ts +5 -5
  11. package/src/api-client/index.ts +8 -10
  12. package/src/api-client/ipo.ts +4 -4
  13. package/src/api-client/market-movers.ts +1 -1
  14. package/src/api-client/mna.ts +2 -2
  15. package/src/api-client/normalizers.ts +1 -1
  16. package/src/api-client/paths.ts +2 -2
  17. package/src/api-client/plan-rules.ts +2 -2
  18. package/src/api-client/rates.ts +1 -1
  19. package/src/api-client/request.ts +1 -1
  20. package/src/api-client/social-mentions.ts +1 -1
  21. package/src/api-client/types.ts +32 -32
  22. package/src/api-client/yield-curves.ts +47 -0
  23. package/src/app/app-bootstrap-state.ts +0 -2
  24. package/src/app/global-shortcuts.ts +21 -0
  25. package/src/app/keybindings/actions.ts +9 -1
  26. package/src/app/keybindings/chord.ts +1 -1
  27. package/src/app/keybindings/index.ts +0 -14
  28. package/src/app/keybindings/labels.ts +1 -1
  29. package/src/app/keybindings/resolve.ts +1 -8
  30. package/src/app/pane-runtime/index.tsx +7 -14
  31. package/src/app/pane-runtime/layout-placement.ts +1 -30
  32. package/src/app/pane-runtime/plugin-bindings.ts +184 -180
  33. package/src/app/pane-runtime/ticker-inspector-runtime.ts +5 -5
  34. package/src/app/pane-runtime/ticker-open-runtime.ts +5 -5
  35. package/src/app/pane-template-dialog-wizard.tsx +13 -5
  36. package/src/app/runtime/broker-import.ts +1 -1
  37. package/src/app/runtime/desktop-deeplink.ts +4 -4
  38. package/src/app/runtime/desktop-menu.ts +4 -4
  39. package/src/app/runtime/layout-warmup.ts +1 -1
  40. package/src/app/runtime/plugin-bindings.ts +187 -188
  41. package/src/app/runtime/update.ts +1 -1
  42. package/src/app.tsx +3 -3
  43. package/src/brokers/signed-in/adapter.ts +1 -1
  44. package/src/brokers/signed-in/client.ts +1 -1
  45. package/src/brokers/signed-in/connect.ts +1 -1
  46. package/src/brokers/signed-in/sign-in.ts +1 -1
  47. package/src/cli/commands/plugins.ts +3 -3
  48. package/src/cli/desktop-pane-shot.ts +3 -3
  49. package/src/cli/errors.ts +3 -3
  50. package/src/cli/pane-functions/capabilities.ts +2 -2
  51. package/src/cli/pane-functions/dom.ts +1 -1
  52. package/src/cli/pane-functions/function-help.ts +1031 -0
  53. package/src/cli/pane-functions/headless.ts +1 -1
  54. package/src/cli/pane-functions/options.ts +1 -1
  55. package/src/cli/pane-functions/report.ts +1 -1
  56. package/src/cli/pane-functions/screenshot-evidence.ts +3 -3
  57. package/src/cli/pane-functions/screenshot.ts +5 -6
  58. package/src/cli/restore-plugins.ts +1 -1
  59. package/src/components/chart/composite/column-layout.ts +1 -1
  60. package/src/components/chart/composite/composite-chart.tsx +298 -24
  61. package/src/components/chart/composite/downsample.ts +1 -1
  62. package/src/components/chart/composite/index.ts +0 -1
  63. package/src/components/chart/composite/interactions.ts +2 -0
  64. package/src/components/chart/composite/levels.ts +154 -0
  65. package/src/components/chart/composite/rasterizer.ts +9 -1
  66. package/src/components/chart/composite/scene.ts +60 -1
  67. package/src/components/chart/composite/session-shading.ts +99 -0
  68. package/src/components/chart/composite/text-renderer.ts +5 -0
  69. package/src/components/chart/composite/time-axis.ts +1 -1
  70. package/src/components/chart/composite/tools.ts +1 -1
  71. package/src/components/chart/composite/types.ts +42 -3
  72. package/src/components/chart/composite/volume-profile-paint.ts +77 -0
  73. package/src/components/chart/curve/index.ts +2 -2
  74. package/src/components/chart/curve/model.ts +7 -4
  75. package/src/components/chart/native/kitty/support.ts +1 -1
  76. package/src/components/chart/static/index.ts +0 -2
  77. package/src/components/chart/static/series.ts +3 -0
  78. package/src/components/chart/static/trail-chart-surface.tsx +1 -1
  79. package/src/components/chart/surface3d/model.ts +4 -4
  80. package/src/components/chart/surface3d/software.ts +1 -1
  81. package/src/components/chart-table/axis.ts +20 -0
  82. package/src/components/chart-table/index.ts +4 -8
  83. package/src/components/chart-table/layout.ts +3 -3
  84. package/src/components/chart-table/selection.ts +1 -1
  85. package/src/components/command-bar/assist/model.ts +1 -1
  86. package/src/components/command-bar/commands/registry.ts +4 -1
  87. package/src/components/command-bar/keyboard-handlers.ts +1 -1
  88. package/src/components/command-bar/keyboard-shortcuts.ts +1 -1
  89. package/src/components/command-bar/layout-items/current-layout.ts +2 -2
  90. package/src/components/command-bar/layout-items/focused-pane.ts +3 -3
  91. package/src/components/command-bar/layout-items.ts +1 -1
  92. package/src/components/command-bar/list/badge.ts +1 -1
  93. package/src/components/command-bar/multi-select-picker.tsx +1 -1
  94. package/src/components/command-bar/pane-actions.ts +3 -3
  95. package/src/components/command-bar/pane-settings.ts +1 -1
  96. package/src/components/command-bar/pane-templates/workflow.ts +1 -1
  97. package/src/components/command-bar/panel/layout.ts +1 -1
  98. package/src/components/command-bar/panel/runtime.ts +1 -1
  99. package/src/components/command-bar/panel/types.ts +1 -1
  100. package/src/components/command-bar/picker-activation.ts +3 -3
  101. package/src/components/command-bar/routes/root/help-items.ts +66 -0
  102. package/src/components/command-bar/routes/root/results.ts +9 -0
  103. package/src/components/command-bar/routes/root/search-report.ts +1 -1
  104. package/src/components/command-bar/routes/root/selection.ts +7 -1
  105. package/src/components/command-bar/routes/ticker-search/results.ts +1 -1
  106. package/src/components/command-bar/surface/environment.ts +0 -4
  107. package/src/components/command-bar/surface/index.tsx +3 -4
  108. package/src/components/command-bar/workflow/collection-actions.ts +9 -9
  109. package/src/components/command-bar/workflow/fields.ts +35 -13
  110. package/src/components/command-bar/workflow/ops.ts +6 -5
  111. package/src/components/command-bar/workflow/route-actions.ts +2 -3
  112. package/src/components/command-bar/workflow/submit.ts +2 -2
  113. package/src/components/feedback-dialog.tsx +1 -1
  114. package/src/components/layout/detached-pane-shell.tsx +4 -10
  115. package/src/components/layout/pane/cycle-order.ts +1 -1
  116. package/src/components/layout/pane/footer/index.tsx +0 -3
  117. package/src/components/layout/pane/footer/registration.tsx +0 -12
  118. package/src/components/layout/pane/header.tsx +1 -1
  119. package/src/components/layout/pane/sidebar.tsx +0 -1
  120. package/src/components/layout/shell/active-drag.ts +1 -1
  121. package/src/components/layout/shell/chrome.ts +1 -1
  122. package/src/components/layout/shell/cursor-occlusion.ts +1 -1
  123. package/src/components/layout/shell/drag/index.ts +1 -1
  124. package/src/components/layout/shell/drag/overlays.tsx +1 -1
  125. package/src/components/layout/shell/drag/runtime.ts +1 -1
  126. package/src/components/layout/shell/fullscreen.ts +1 -1
  127. package/src/components/layout/shell/index.tsx +7 -18
  128. package/src/components/layout/shell/layout-state.ts +1 -1
  129. package/src/components/layout/shell/menu.ts +1 -1
  130. package/src/components/layout/shell/native/pointer-runtime.ts +1 -1
  131. package/src/components/layout/shell/native/surfaces.ts +1 -1
  132. package/src/components/layout/shell/native/window-state.ts +1 -1
  133. package/src/components/layout/shell/pane/actions.ts +3 -3
  134. package/src/components/layout/shell/pane/layers.tsx +1 -1
  135. package/src/components/layout/shell/pane-occlusion.ts +1 -1
  136. package/src/components/layout/shell/terminal-pointer-runtime.ts +1 -1
  137. package/src/components/layout/shell/ticker-link-menu.ts +1 -1
  138. package/src/components/layout/shell/visible-layout.ts +1 -1
  139. package/src/components/layout/shell/window-mode/index.ts +2 -9
  140. package/src/components/layout/shell/window-mode/overlays.tsx +1 -1
  141. package/src/components/layout/status-bar-groups.ts +1 -1
  142. package/src/components/layout/status-bar.tsx +5 -6
  143. package/src/components/layout/titlebar-overlay.ts +1 -1
  144. package/src/components/layout/window-edit/mode.ts +1 -1
  145. package/src/components/layout/window-edit/presentation.ts +1 -1
  146. package/src/components/layout/window-edit/status.tsx +1 -1
  147. package/src/components/layout/window-fullscreen.ts +1 -1
  148. package/src/components/onboarding/first-run-workspace.ts +2 -2
  149. package/src/components/onboarding/onboarding-wizard.tsx +1 -1
  150. package/src/components/onboarding/wizard-account.ts +43 -132
  151. package/src/components/onboarding/wizard-broker-sync.ts +1 -1
  152. package/src/components/onboarding/wizard-positions.ts +1 -1
  153. package/src/components/quote-flash.ts +2 -2
  154. package/src/components/ticker/badge/index.tsx +2 -2
  155. package/src/components/ui/data-table/stable-columns.ts +1 -1
  156. package/src/components/ui/data-table/types.ts +1 -1
  157. package/src/components/ui/external-link.tsx +6 -2
  158. package/src/components/ui/index.ts +0 -1
  159. package/src/components/ui/multi-select/dialog.tsx +18 -8
  160. package/src/components/ui/number-prompt-dialog.tsx +1 -1
  161. package/src/components/ui/split-bar.tsx +1 -1
  162. package/src/components/ui/table-layout.ts +1 -1
  163. package/src/components/ui/text-prompt-dialog.tsx +4 -1
  164. package/src/core/app-runtime.ts +8 -6
  165. package/src/core/connection-health.ts +2 -2
  166. package/src/core/state/app/layout-reducer.ts +0 -12
  167. package/src/core/state/app/layout.ts +7 -19
  168. package/src/core/state/app/state.ts +6 -13
  169. package/src/core/state/app/types.ts +10 -2
  170. package/src/core/state/session-persistence.ts +3 -5
  171. package/src/data/config/chart-settings.ts +1 -1
  172. package/src/data/config/home.ts +1 -1
  173. package/src/data/config/store/node.ts +1 -1
  174. package/src/data/config/store/normalize.ts +0 -3
  175. package/src/i18n/es.ts +11 -0
  176. package/src/i18n/index.ts +0 -2
  177. package/src/i18n/ja.ts +11 -0
  178. package/src/i18n/ko.ts +11 -0
  179. package/src/i18n/languages.ts +1 -1
  180. package/src/i18n/zh-cn.ts +11 -0
  181. package/src/i18n/zh-tw.ts +11 -0
  182. package/src/{plugins → layout}/launch-layout.ts +0 -1
  183. package/src/{plugins/pane-manager.ts → layout/pane-manager/index.ts} +8 -9
  184. package/src/layout-marketplace/api.ts +1 -1
  185. package/src/layout-marketplace/cloud.ts +3 -3
  186. package/src/layout-marketplace/gallery.tsx +1 -1
  187. package/src/layout-marketplace/geometry.ts +1 -1
  188. package/src/layout-marketplace/linked-sync.ts +1 -1
  189. package/src/layout-marketplace/linked.ts +2 -2
  190. package/src/layout-marketplace/model.ts +2 -2
  191. package/src/layout-marketplace/use-marketplace.ts +3 -3
  192. package/src/market-data/coordinator/index.ts +0 -1
  193. package/src/market-data/coordinator/quotes.ts +3 -3
  194. package/src/market-data/frame-scheduler.ts +1 -1
  195. package/src/market-data/history-session.ts +1 -1
  196. package/src/market-data/market/freshness.ts +64 -0
  197. package/src/market-data/market/trading-sessions.ts +72 -0
  198. package/src/market-data/realized-volatility.ts +2 -2
  199. package/src/market-data/snapshot-provider.ts +1 -1
  200. package/src/news/hooks.ts +1 -1
  201. package/src/news/news-model.ts +1 -1
  202. package/src/news/types.ts +1 -1
  203. package/src/plugins/auto-update.ts +2 -2
  204. package/src/plugins/builtin/alerts/levels.ts +60 -0
  205. package/src/plugins/builtin/alerts/research-rules.ts +2 -2
  206. package/src/plugins/builtin/analytics/index.tsx +0 -1
  207. package/src/plugins/builtin/analytics/pane-model.ts +1 -1
  208. package/src/plugins/builtin/analytics/risk-client.ts +2 -2
  209. package/src/plugins/builtin/analytics/risk-evidence.ts +4 -4
  210. package/src/plugins/builtin/analytics/risk-math.ts +3 -3
  211. package/src/plugins/builtin/analytics/risk-model.ts +2 -2
  212. package/src/plugins/builtin/analytics/risk-test-data.ts +1 -0
  213. package/src/plugins/builtin/analytics/sharpe-cadence.ts +1 -1
  214. package/src/plugins/builtin/backtest/client.ts +1 -1
  215. package/src/plugins/builtin/backtest/engine.ts +1 -1
  216. package/src/plugins/builtin/backtest/rules.ts +5 -5
  217. package/src/plugins/builtin/bond-calculator/math.ts +3 -3
  218. package/src/plugins/builtin/buildout/detail/company.tsx +1 -1
  219. package/src/plugins/builtin/buildout/format.ts +1 -1
  220. package/src/plugins/builtin/cds/client.ts +1 -1
  221. package/src/plugins/builtin/cds/headless.ts +1 -1
  222. package/src/plugins/builtin/chart-composer/catalog-inventory.ts +2 -2
  223. package/src/plugins/builtin/chart-composer/chart-spec-edit.ts +502 -0
  224. package/src/plugins/builtin/chart-composer/editor/controller.ts +6 -7
  225. package/src/plugins/builtin/chart-composer/editor/model.ts +2 -2
  226. package/src/plugins/builtin/chart-composer/follow-binding.ts +1 -1
  227. package/src/plugins/builtin/chart-composer/headless.ts +5 -3
  228. package/src/plugins/builtin/chart-composer/pane.tsx +272 -25
  229. package/src/plugins/builtin/chart-composer/presets.ts +7 -836
  230. package/src/plugins/builtin/chart-composer/price-levels.ts +80 -0
  231. package/src/plugins/builtin/chart-composer/quick-add.tsx +4 -4
  232. package/src/plugins/builtin/chart-composer/series-catalog.ts +1 -4
  233. package/src/plugins/builtin/chart-composer/series-expression.ts +189 -0
  234. package/src/{time-series → plugins/builtin/chart-composer}/session-history.ts +14 -14
  235. package/src/plugins/builtin/chart-composer/settings.ts +35 -14
  236. package/src/plugins/builtin/chart-composer/studies.ts +242 -0
  237. package/src/plugins/builtin/chat/channel-labels.ts +1 -1
  238. package/src/plugins/builtin/chat/channels.ts +1 -1
  239. package/src/plugins/builtin/chat/content/transcript.tsx +0 -1
  240. package/src/plugins/builtin/chat/layout.ts +2 -2
  241. package/src/plugins/builtin/chat/message/profile-popover.tsx +1 -1
  242. package/src/plugins/builtin/chat/pane.tsx +0 -2
  243. package/src/plugins/builtin/chat/profile-popover.ts +1 -1
  244. package/src/plugins/builtin/chat/sidebar-store.ts +2 -2
  245. package/src/plugins/builtin/cloud/askg/executor.ts +3 -3
  246. package/src/plugins/builtin/cloud/askg/manifest.ts +3 -3
  247. package/src/plugins/builtin/cloud/askg/model.ts +5 -5
  248. package/src/plugins/builtin/cloud/askg/pane.tsx +1 -1
  249. package/src/plugins/builtin/cloud/askg/protocol.ts +14 -14
  250. package/src/plugins/builtin/cloud/auth-dialog.tsx +1 -1
  251. package/src/plugins/builtin/cloud/auth-form.tsx +31 -94
  252. package/src/plugins/builtin/cloud/auth-model.ts +1 -1
  253. package/src/plugins/builtin/cloud/device-signin-dialog.tsx +1 -1
  254. package/src/plugins/builtin/cloud/email-auth-attempt.ts +173 -0
  255. package/src/plugins/builtin/cloud/team/capability.ts +1 -1
  256. package/src/plugins/builtin/cloud/team/collections.ts +1 -1
  257. package/src/plugins/builtin/cloud/team/command.ts +2 -2
  258. package/src/plugins/builtin/cloud/team/model.ts +1 -1
  259. package/src/plugins/builtin/cloud/team/pane-sections.tsx +1 -1
  260. package/src/plugins/builtin/cloud/team/pane-ui.tsx +1 -1
  261. package/src/plugins/builtin/cloud/team/pane.tsx +1 -1
  262. package/src/plugins/builtin/cloud/team/views.ts +2 -2
  263. package/src/plugins/builtin/cloud/thesis/exposure.ts +2 -2
  264. package/src/plugins/builtin/cloud/thesis/ticker-tab.tsx +0 -1
  265. package/src/plugins/builtin/cloud/upgrade-dialog.tsx +2 -2
  266. package/src/plugins/builtin/cloud-tweets/model.ts +1 -1
  267. package/src/{utils → plugins/builtin/cloud-tweets}/tweet-text.ts +1 -1
  268. package/src/plugins/builtin/composite-plugins.ts +4 -0
  269. package/src/plugins/builtin/congress-trades/detail.tsx +1 -1
  270. package/src/plugins/builtin/congress-trades/model.ts +1 -1
  271. package/src/plugins/builtin/congress-trades/table.tsx +1 -1
  272. package/src/plugins/builtin/connections/pane.tsx +1 -1
  273. package/src/plugins/builtin/correlation/index.tsx +2 -2
  274. package/src/plugins/builtin/correlation/relationship/pane.tsx +1 -1
  275. package/src/plugins/builtin/correlation/relationship/view-model.ts +1 -1
  276. package/src/plugins/builtin/cot/client.ts +1 -1
  277. package/src/plugins/builtin/credit-boards/client.ts +2 -2
  278. package/src/plugins/builtin/credit-boards/model.ts +5 -11
  279. package/src/plugins/builtin/credit-conditions/client.ts +1 -1
  280. package/src/plugins/builtin/credit-conditions/headless.ts +2 -2
  281. package/src/plugins/builtin/crypto-board/model.ts +4 -4
  282. package/src/plugins/builtin/crypto-board/pane.tsx +1 -1
  283. package/src/plugins/builtin/custom-view/live-quotes.ts +1 -1
  284. package/src/plugins/builtin/custom-view/pane.tsx +35 -23
  285. package/src/plugins/builtin/custom-view/view-spec.ts +9 -9
  286. package/src/plugins/builtin/debt-maturities/model.ts +2 -18
  287. package/src/plugins/builtin/debt-maturities/pane.tsx +2 -2
  288. package/src/plugins/builtin/earnings/board-model.ts +1 -1
  289. package/src/plugins/builtin/earnings/client.ts +2 -2
  290. package/src/plugins/builtin/earnings/data/cache.ts +1 -1
  291. package/src/plugins/builtin/earnings/estimate-basis.ts +2 -7
  292. package/src/plugins/builtin/earnings/headless.ts +3 -3
  293. package/src/plugins/builtin/earnings/history-model.ts +1 -1
  294. package/src/plugins/builtin/earnings-calls/headless.ts +1 -1
  295. package/src/plugins/builtin/econ/detail-view.tsx +1 -1
  296. package/src/plugins/builtin/econ/index.tsx +1 -1
  297. package/src/plugins/builtin/econ-statistics/detail.tsx +1 -1
  298. package/src/plugins/builtin/econ-statistics/pane.tsx +1 -1
  299. package/src/plugins/builtin/econ-statistics/view.ts +3 -3
  300. package/src/plugins/builtin/fear-greed/headless.ts +1 -1
  301. package/src/plugins/builtin/fear-greed/index.tsx +0 -2
  302. package/src/plugins/builtin/futures/index.tsx +1 -1
  303. package/src/plugins/builtin/futures/returns.ts +1 -1
  304. package/src/plugins/builtin/futures/use-front-returns.ts +1 -1
  305. package/src/plugins/builtin/futures-curve/model.ts +2 -2
  306. package/src/plugins/builtin/help/function-card.tsx +202 -0
  307. package/src/plugins/builtin/help/function-index.ts +193 -0
  308. package/src/plugins/builtin/help/index.tsx +31 -1
  309. package/src/plugins/builtin/help/shortcut-model.ts +1 -1
  310. package/src/plugins/builtin/help/table-cells.tsx +1 -1
  311. package/src/plugins/builtin/insider/client.ts +1 -1
  312. package/src/plugins/builtin/insider/model.ts +1 -1
  313. package/src/plugins/builtin/ipo-calendar/headless.ts +1 -1
  314. package/src/plugins/builtin/ipo-calendar/model.ts +1 -1
  315. package/src/plugins/builtin/iv-history/charts.tsx +1 -1
  316. package/src/plugins/builtin/iv-history/client.ts +2 -2
  317. package/src/plugins/builtin/iv-history/model.ts +4 -4
  318. package/src/plugins/builtin/jobs/client.ts +1 -1
  319. package/src/plugins/builtin/jobs/model.ts +3 -3
  320. package/src/plugins/builtin/jobs/pane.tsx +2 -2
  321. package/src/plugins/builtin/kelly-sizer/model.ts +1 -1
  322. package/src/plugins/builtin/kelly-sizer/test-support.tsx +1 -1
  323. package/src/plugins/builtin/kelly-sizer/types.ts +1 -1
  324. package/src/plugins/builtin/layout-manager/index.tsx +1 -1
  325. package/src/plugins/builtin/macro-resources.ts +1 -1
  326. package/src/plugins/builtin/market-halts/pane.tsx +5 -1
  327. package/src/plugins/builtin/market-heatmap/data.ts +4 -4
  328. package/src/plugins/builtin/market-movers/screener.ts +1 -1
  329. package/src/plugins/builtin/market-valuation/align.ts +1 -1
  330. package/src/plugins/builtin/market-valuation/chart-projection.ts +1 -1
  331. package/src/plugins/builtin/market-valuation/defs.ts +3 -3
  332. package/src/plugins/builtin/market-valuation/headless.ts +1 -1
  333. package/src/plugins/builtin/market-valuation/indicators.ts +4 -4
  334. package/src/plugins/builtin/market-valuation/series.ts +1 -1
  335. package/src/plugins/builtin/market-valuation/settings.ts +1 -1
  336. package/src/plugins/builtin/market-valuation/sources.ts +1 -1
  337. package/src/plugins/builtin/market-valuation/view.ts +1 -1
  338. package/src/plugins/builtin/market-valuation/zone-scale/model.ts +1 -1
  339. package/src/plugins/builtin/mna/client.ts +3 -3
  340. package/src/plugins/builtin/mna/detail.tsx +1 -1
  341. package/src/plugins/builtin/mna/model.ts +2 -7
  342. package/src/plugins/builtin/mna/pane.tsx +2 -2
  343. package/src/plugins/builtin/news/headless.ts +1 -1
  344. package/src/plugins/builtin/news/wire/breaking/filters.ts +5 -5
  345. package/src/plugins/builtin/notes/store.ts +1 -1
  346. package/src/plugins/builtin/options/enrichment.ts +1 -1
  347. package/src/plugins/builtin/options/footer.ts +2 -2
  348. package/src/plugins/builtin/options/live-quotes.ts +4 -4
  349. package/src/plugins/builtin/options/types.ts +1 -1
  350. package/src/plugins/builtin/options-positioning/client.ts +100 -0
  351. package/src/plugins/builtin/options-positioning/headless.ts +112 -0
  352. package/src/plugins/builtin/options-positioning/index.tsx +69 -0
  353. package/src/plugins/builtin/options-positioning/model.ts +158 -0
  354. package/src/plugins/builtin/options-positioning/pane.tsx +582 -0
  355. package/src/plugins/builtin/options-scenario/model.ts +3 -3
  356. package/src/plugins/builtin/plugin-marketplace/model.ts +1 -1
  357. package/src/plugins/builtin/plugin-marketplace/store.ts +1 -1
  358. package/src/plugins/builtin/portfolio-list/account-metrics.ts +1 -1
  359. package/src/plugins/builtin/portfolio-list/pane/index.tsx +0 -1
  360. package/src/plugins/builtin/portfolio-list/position-metrics.ts +1 -1
  361. package/src/plugins/builtin/portfolio-list/summary/index.tsx +1 -1
  362. package/src/plugins/builtin/portfolio-list/summary/live-accounts.ts +1 -1
  363. package/src/plugins/builtin/portfolio-list/summary/totals.ts +1 -1
  364. package/src/plugins/builtin/rate-path/model.ts +1 -1
  365. package/src/plugins/builtin/realized-vol/chart-model.ts +1 -1
  366. package/src/plugins/builtin/realized-vol/evidence.ts +1 -1
  367. package/src/plugins/builtin/realized-vol/model.ts +2 -2
  368. package/src/plugins/builtin/relative-rotation/model.ts +3 -3
  369. package/src/plugins/builtin/research/corporate-actions-pane.tsx +1 -1
  370. package/src/plugins/builtin/research/events-headless.ts +1 -1
  371. package/src/plugins/builtin/research/headless.ts +1 -1
  372. package/src/plugins/builtin/research-search/model.ts +1 -1
  373. package/src/plugins/builtin/revenue-breakdown/bars.tsx +1 -1
  374. package/src/plugins/builtin/revenue-breakdown/client.ts +1 -1
  375. package/src/plugins/builtin/revenue-breakdown/model.ts +1 -1
  376. package/src/plugins/builtin/revenue-breakdown/pane.tsx +1 -1
  377. package/src/plugins/builtin/scanner/flow-model.ts +3 -3
  378. package/src/plugins/builtin/scanner/flow-pane.tsx +1 -1
  379. package/src/plugins/builtin/scanner/headless.ts +5 -5
  380. package/src/plugins/builtin/scanner/hilo-model.ts +3 -3
  381. package/src/plugins/builtin/seasonality/client.ts +41 -0
  382. package/src/plugins/builtin/seasonality/headless.ts +38 -0
  383. package/src/plugins/builtin/seasonality/index.tsx +20 -0
  384. package/src/plugins/builtin/seasonality/model.ts +124 -0
  385. package/src/plugins/builtin/seasonality/pane.tsx +156 -0
  386. package/src/plugins/builtin/sec/model.ts +1 -1
  387. package/src/plugins/builtin/shared/cloud-upgrade.ts +2 -2
  388. package/src/plugins/builtin/shared/mine-tickers.ts +1 -1
  389. package/src/plugins/builtin/shared/series-cache.ts +2 -2
  390. package/src/plugins/builtin/shared/use-quote-board.ts +1 -1
  391. package/src/plugins/builtin/shared/volatility/options.ts +1 -1
  392. package/src/plugins/builtin/short-interest/model.ts +1 -1
  393. package/src/plugins/builtin/short-volume/model.ts +1 -1
  394. package/src/plugins/builtin/social-mentions/index.tsx +1 -1
  395. package/src/plugins/builtin/social-mentions/model.ts +1 -1
  396. package/src/plugins/builtin/thirteenf/model.ts +1 -1
  397. package/src/plugins/builtin/thirteenf/signals.ts +1 -1
  398. package/src/plugins/builtin/ticker-detail/data-panes/historical-prices.tsx +1 -1
  399. package/src/plugins/builtin/ticker-detail/financials/ratios.ts +1 -1
  400. package/src/plugins/builtin/ticker-detail/financials/schema.ts +0 -1
  401. package/src/plugins/builtin/ticker-detail/overview/components.tsx +1 -1
  402. package/src/plugins/builtin/time-sales/model.ts +1 -1
  403. package/src/plugins/builtin/treasury-auctions/headless.ts +2 -2
  404. package/src/plugins/builtin/treasury-auctions/model.ts +1 -1
  405. package/src/plugins/builtin/vol-surface/client.ts +4 -4
  406. package/src/plugins/builtin/vol-surface/live.ts +1 -1
  407. package/src/plugins/builtin/vol-surface/model.ts +7 -7
  408. package/src/plugins/builtin/vol-surface/pane.tsx +1 -1
  409. package/src/plugins/builtin/vol-surface/stored.ts +1 -1
  410. package/src/plugins/builtin/volatility/client.ts +4 -4
  411. package/src/plugins/builtin/volatility/headless.ts +1 -1
  412. package/src/plugins/builtin/volatility/model.ts +5 -5
  413. package/src/plugins/builtin/world-indices/headless.ts +3 -3
  414. package/src/plugins/builtin/yield-curve/chart.ts +61 -16
  415. package/src/plugins/builtin/yield-curve/curves.ts +171 -0
  416. package/src/plugins/builtin/yield-curve/forward.ts +102 -0
  417. package/src/plugins/builtin/yield-curve/headless.ts +96 -41
  418. package/src/plugins/builtin/yield-curve/index.tsx +331 -120
  419. package/src/plugins/builtin/yield-curve/world.ts +53 -0
  420. package/src/plugins/bundle.ts +1 -1
  421. package/src/plugins/catalog-browser.ts +4 -0
  422. package/src/plugins/catalog-manifest.ts +1 -1
  423. package/src/plugins/compat.ts +7 -3
  424. package/src/plugins/dependencies.ts +26 -6
  425. package/src/plugins/external-runtime.ts +1 -1
  426. package/src/plugins/host-link.ts +20 -1
  427. package/src/plugins/host-modules.ts +4 -1
  428. package/src/plugins/host-resolver.ts +4 -1
  429. package/src/plugins/installer.ts +11 -2
  430. package/src/plugins/loader.ts +1 -1
  431. package/src/plugins/ownership.ts +1 -1
  432. package/src/plugins/plugin-names.ts +1 -1
  433. package/src/plugins/registry/host-actions.ts +237 -0
  434. package/src/plugins/registry/index.ts +79 -146
  435. package/src/plugins/registry/plugin-state.ts +1 -1
  436. package/src/plugins/runtime/context.tsx +2 -25
  437. package/src/plugins/runtime/state.ts +2 -2
  438. package/src/public/__snapshots__/public-api.test.ts.snap +1 -0
  439. package/src/public/layout.ts +2 -2
  440. package/src/public/test-support.ts +9 -1
  441. package/src/react/ticker-source.ts +1 -1
  442. package/src/remote/controller-utils.ts +2 -3
  443. package/src/remote/controller.ts +14 -14
  444. package/src/remote/resources.ts +10 -4
  445. package/src/remote/schema.ts +2 -2
  446. package/src/remote/semantic-helpers.ts +1 -1
  447. package/src/remote/types.ts +3 -3
  448. package/src/renderers/browser/bundled-plugins.ts +31 -1
  449. package/src/renderers/browser/main.tsx +4 -4
  450. package/src/renderers/browser/ui-host.tsx +1 -1
  451. package/src/renderers/{electrobun/view → dom}/build-assets.ts +3 -2
  452. package/src/renderers/{electrobun/view → dom}/data-frames.ts +2 -2
  453. package/src/renderers/{electrobun/view → dom}/data-table/dom.ts +3 -3
  454. package/src/renderers/{electrobun/view → dom}/data-table/index.tsx +9 -9
  455. package/src/renderers/{electrobun/view → dom}/data-table/row.tsx +5 -5
  456. package/src/renderers/{electrobun/view → dom}/desktop/control-styles.ts +2 -2
  457. package/src/renderers/{electrobun/view → dom}/desktop/controls.tsx +16 -16
  458. package/src/renderers/{electrobun/view → dom}/desktop/icons.tsx +1 -1
  459. package/src/renderers/{electrobun/view → dom}/desktop/list-view.tsx +5 -5
  460. package/src/renderers/{electrobun/view → dom}/desktop/menu.tsx +1 -1
  461. package/src/renderers/{electrobun/view → dom}/desktop/popover.tsx +3 -3
  462. package/src/renderers/{electrobun/view → dom}/desktop/query-bar.tsx +1 -1
  463. package/src/renderers/{electrobun/view → dom}/desktop/select-field.tsx +6 -6
  464. package/src/renderers/{electrobun/view → dom}/dialog-host.tsx +4 -4
  465. package/src/renderers/{electrobun/view → dom}/dom-host-providers.tsx +2 -2
  466. package/src/renderers/{electrobun/view → dom}/dom-ui-host.tsx +3 -3
  467. package/src/renderers/{electrobun/view → dom}/host/ascii-text.ts +2 -2
  468. package/src/renderers/{electrobun/view → dom}/host/chart-surface.tsx +1 -1
  469. package/src/renderers/{electrobun/view → dom}/host/input.tsx +3 -3
  470. package/src/renderers/{electrobun/view → dom}/host/media-surface.tsx +1 -1
  471. package/src/renderers/{electrobun/view → dom}/host/mouse.ts +2 -2
  472. package/src/renderers/{electrobun/view → dom}/host/scroll-box.tsx +2 -2
  473. package/src/renderers/{electrobun/view → dom}/host/style.ts +2 -2
  474. package/src/renderers/{electrobun/view → dom}/host/surface-3d.tsx +4 -4
  475. package/src/renderers/{electrobun/view → dom}/host/tabs.tsx +2 -2
  476. package/src/renderers/{electrobun/view → dom}/host/text.tsx +3 -3
  477. package/src/renderers/{electrobun/view → dom}/input-host.tsx +3 -3
  478. package/src/renderers/{electrobun/view → dom}/native-renderer.ts +2 -2
  479. package/src/renderers/{electrobun/view → dom}/test-utils.tsx +3 -3
  480. package/src/renderers/{electrobun/view → dom}/toast-host.tsx +2 -2
  481. package/src/{theme → renderers/electrobun/bun/desktop}/app-icon.ts +5 -5
  482. package/src/renderers/electrobun/bun/desktop/backend-requests.ts +45 -93
  483. package/src/renderers/electrobun/bun/desktop/backend.ts +514 -0
  484. package/src/renderers/electrobun/bun/desktop/capability-bridge.ts +1 -1
  485. package/src/renderers/electrobun/bun/desktop/detached-windows.ts +36 -54
  486. package/src/renderers/electrobun/bun/desktop/host-requests.ts +62 -53
  487. package/src/renderers/electrobun/bun/desktop/initialization.ts +25 -78
  488. package/src/renderers/electrobun/bun/desktop/macos-dock-icon.ts +1 -1
  489. package/src/renderers/electrobun/bun/desktop/state-broadcaster.ts +1 -1
  490. package/src/renderers/electrobun/bun/desktop/workspace/index.ts +2 -10
  491. package/src/renderers/electrobun/bun/desktop/workspace/requests.ts +20 -47
  492. package/src/renderers/electrobun/bun/index.ts +14 -648
  493. package/src/renderers/electrobun/bun/window/frame.ts +1 -1
  494. package/src/renderers/electrobun/shared/protocol.ts +11 -11
  495. package/src/renderers/electrobun/view/backend-rpc.ts +1 -1
  496. package/src/renderers/electrobun/view/cli-pane-shot-entry.tsx +3 -4
  497. package/src/renderers/electrobun/view/main.tsx +3 -3
  498. package/src/renderers/electrobun/view/ui-host.tsx +1 -1
  499. package/src/renderers/opentui/host.tsx +12 -6
  500. package/src/renderers/opentui/test-utils.tsx +104 -3
  501. package/src/renderers/share/layout-view.tsx +1 -1
  502. package/src/renderers/share/main.tsx +1 -1
  503. package/src/shares/pane.ts +3 -3
  504. package/src/shares/payload.ts +7 -7
  505. package/src/{layout-marketplace/payload.ts → shares/portable-layout.ts} +3 -3
  506. package/src/{data → sources/gloomberb-cloud}/fred-series.ts +4 -4
  507. package/src/sources/gloomberb-cloud/normalizers.ts +1 -1
  508. package/src/sources/history-retention.ts +2 -2
  509. package/src/sources/provider-router/financial-routes.ts +0 -1
  510. package/src/sources/yahoo-finance/mappers.ts +1 -1
  511. package/src/state/app/bootstrap.ts +1 -1
  512. package/src/state/app/context/index.tsx +1 -5
  513. package/src/state/hooks/inline-tickers.ts +1 -1
  514. package/src/state/hooks/live-ticker-financials.ts +2 -2
  515. package/src/state/hooks/quote-streaming.ts +1 -1
  516. package/src/state/hooks/session-snapshot.ts +0 -2
  517. package/src/sync/controller.ts +1 -1
  518. package/src/sync/core-contributors.ts +40 -2
  519. package/src/sync/types.ts +4 -4
  520. package/src/telemetry/crash-reports-node.ts +5 -5
  521. package/src/test-support/broker.ts +4 -3
  522. package/src/test-support/plugin-runtime.ts +2 -18
  523. package/src/theme/font-scale.ts +2 -2
  524. package/src/{plugins/builtin/correlation/colors.ts → theme/heat-colors.ts} +19 -16
  525. package/src/time-series/alignment.ts +1 -1
  526. package/src/time-series/fundamentals.ts +2 -2
  527. package/src/time-series/hooks.ts +2 -2
  528. package/src/time-series/live-bars.ts +1 -1
  529. package/src/time-series/price-comparison.ts +1 -1
  530. package/src/time-series/resolve.ts +12 -4
  531. package/src/time-series/spec.ts +5 -1
  532. package/src/time-series/studies.ts +330 -2
  533. package/src/time-series/trader-studies.ts +188 -0
  534. package/src/time-series/types.ts +18 -0
  535. package/src/types/config.ts +4 -0
  536. package/src/types/desktop-deeplink.ts +1 -0
  537. package/src/types/desktop-window.ts +2 -1
  538. package/src/types/plugin.ts +1 -0
  539. package/src/ui/context-menu.tsx +1 -1
  540. package/src/ui/host.tsx +5 -1
  541. package/src/ui/toast.tsx +2 -0
  542. package/src/utils/back-navigation.ts +1 -1
  543. package/src/utils/futures-generic.ts +23 -2
  544. package/src/utils/http-proxy-response.ts +1 -1
  545. package/src/utils/sec-eps-basis.ts +1 -1
  546. /package/src/{plugins → layout}/pane-manager/dock-tree.ts +0 -0
  547. /package/src/{plugins → layout}/pane-manager/docking.ts +0 -0
  548. /package/src/{plugins → layout}/pane-manager/floating-actions.ts +0 -0
  549. /package/src/{plugins → layout}/pane-manager/floating.ts +0 -0
  550. /package/src/{plugins → layout}/pane-manager/gridlock-inference.ts +0 -0
  551. /package/src/{plugins → layout}/pane-manager/gridlock.ts +0 -0
  552. /package/src/{plugins → layout}/pane-manager/layout-state.ts +0 -0
  553. /package/src/{plugins → layout}/pane-manager/queries.ts +0 -0
  554. /package/src/{plugins → layout}/pane-manager/types.ts +0 -0
  555. /package/src/{plugins → layout}/pane-state.ts +0 -0
  556. /package/src/{plugins → layout}/ticker-navigation.ts +0 -0
  557. /package/src/plugins/{seed.ts → extracted-plugins.ts} +0 -0
  558. /package/src/renderers/{electrobun/view → dom}/data-table/frozen-column.ts +0 -0
  559. /package/src/renderers/{electrobun/view → dom}/desktop/stack-header.ts +0 -0
  560. /package/src/renderers/{electrobun/view → dom}/host/block-glyph-canvas.tsx +0 -0
  561. /package/src/renderers/{electrobun/view → dom}/host/box.tsx +0 -0
  562. /package/src/renderers/{electrobun/view → dom}/host/focus-scope.ts +0 -0
  563. /package/src/renderers/{electrobun/view → dom}/host/overflow-fade.ts +0 -0
  564. /package/src/renderers/{electrobun/view → dom}/host/top-surface.ts +0 -0
  565. /package/src/renderers/{electrobun/view → dom}/key-event.ts +0 -0
  566. /package/src/renderers/{electrobun/view → dom}/scrollbar-activity.ts +0 -0
  567. /package/src/renderers/{electrobun/view → dom}/styles.css +0 -0
  568. /package/src/renderers/electrobun/{view → shared}/rpc-codec.ts +0 -0
  569. /package/src/{utils → renderers/opentui}/terminal-input-reset.ts +0 -0
@@ -171,7 +171,7 @@ export interface BuildoutTokenResponse {
171
171
  expiresAt: string;
172
172
  }
173
173
 
174
- export interface CloudPricingTier {
174
+ interface CloudPricingTier {
175
175
  /** Charged amount, in integer cents. */
176
176
  amount: number;
177
177
  }
@@ -370,7 +370,7 @@ export interface CloudFredSeriesPayload {
370
370
  * One month of Robert Shiller's dataset. FRED carries no long-run S&P earnings,
371
371
  * so this is what every earnings-based valuation ratio is built from.
372
372
  */
373
- export interface CloudShillerObservationPayload {
373
+ interface CloudShillerObservationPayload {
374
374
  date: string;
375
375
  price: number | null;
376
376
  dividend: number | null;
@@ -444,7 +444,7 @@ export interface CloudCdsHistoryResponse {
444
444
  points: CloudCdsHistoryPointPayload[];
445
445
  }
446
446
 
447
- export interface CloudShortInterestPointPayload {
447
+ interface CloudShortInterestPointPayload {
448
448
  settlementDate: string;
449
449
  sharesShort: number;
450
450
  previousSharesShort: number | null;
@@ -585,7 +585,7 @@ export interface CloudEarningsCallPayload {
585
585
  webcastUrl?: string | null;
586
586
  }
587
587
 
588
- export interface CloudJobsSeriesPoint {
588
+ interface CloudJobsSeriesPoint {
589
589
  day: string;
590
590
  open: number;
591
591
  /** Null on the first observed day, when the whole board is seen for the first time. */
@@ -687,7 +687,7 @@ export interface CloudJobsSummaryPayload {
687
687
  recent: CloudJobsPosting[];
688
688
  }
689
689
 
690
- export interface CloudJobsPendingPayload {
690
+ interface CloudJobsPendingPayload {
691
691
  status: "pending";
692
692
  ticker: string;
693
693
  queued: boolean;
@@ -744,7 +744,7 @@ export interface CloudExecutiveRowPayload {
744
744
  total: number | null;
745
745
  }
746
746
 
747
- export interface CloudProxyStatementSummaryPayload {
747
+ interface CloudProxyStatementSummaryPayload {
748
748
  id: string;
749
749
  ticker: string;
750
750
  company: {
@@ -778,7 +778,7 @@ export interface CloudProxyStatementPayload extends CloudProxyStatementSummaryPa
778
778
  otherYears: CloudProxyStatementSummaryPayload[];
779
779
  }
780
780
 
781
- export interface CloudRiskFactorPayload {
781
+ interface CloudRiskFactorPayload {
782
782
  heading: string;
783
783
  group: string | null;
784
784
  excerpt: string;
@@ -791,7 +791,7 @@ export interface CloudRiskNotePayload {
791
791
  text: string;
792
792
  }
793
793
 
794
- export interface CloudRiskReportSummaryPayload {
794
+ interface CloudRiskReportSummaryPayload {
795
795
  id: string;
796
796
  ticker: string;
797
797
  company: {
@@ -848,7 +848,7 @@ export interface CloudRiskReportListPayload {
848
848
  reports: CloudRiskReportSummaryPayload[];
849
849
  }
850
850
 
851
- export interface CloudFilingPersonPayload {
851
+ interface CloudFilingPersonPayload {
852
852
  name: string;
853
853
  role: string;
854
854
  action: string;
@@ -904,7 +904,7 @@ export interface CloudTranscriptTurnPayload {
904
904
  startSeconds: number | null;
905
905
  }
906
906
 
907
- export interface CloudTranscriptKeyFigurePayload {
907
+ interface CloudTranscriptKeyFigurePayload {
908
908
  /** What the number is, e.g. "Q3 revenue guidance". */
909
909
  label: string;
910
910
  /** As management said it, e.g. "$108B ± 2%". */
@@ -913,7 +913,7 @@ export interface CloudTranscriptKeyFigurePayload {
913
913
  note?: string;
914
914
  }
915
915
 
916
- export interface CloudTranscriptParticipantPayload {
916
+ interface CloudTranscriptParticipantPayload {
917
917
  name: string;
918
918
  role?: string;
919
919
  company?: string;
@@ -1056,7 +1056,7 @@ export interface CloudSavedSearchInput {
1056
1056
  alertChannels?: string[];
1057
1057
  }
1058
1058
 
1059
- export interface CloudSecFilingPayload {
1059
+ interface CloudSecFilingPayload {
1060
1060
  accessionNumber: string;
1061
1061
  form: string;
1062
1062
  filingDate: string;
@@ -1072,7 +1072,7 @@ export interface CloudSecFilingPayload {
1072
1072
  primaryDocumentUrl?: string;
1073
1073
  }
1074
1074
 
1075
- export interface CloudSecDocumentPayload {
1075
+ interface CloudSecDocumentPayload {
1076
1076
  sequence?: string;
1077
1077
  type: string;
1078
1078
  description?: string;
@@ -1092,7 +1092,7 @@ export interface CloudSecDocumentsResponse {
1092
1092
  documents: CloudSecDocumentPayload[];
1093
1093
  }
1094
1094
 
1095
- export interface CloudSecForm4Payload {
1095
+ interface CloudSecForm4Payload {
1096
1096
  filingDate: string;
1097
1097
  reportedName: string;
1098
1098
  title: string;
@@ -1359,7 +1359,7 @@ export type CloudEquityDiagnosticFindingKind =
1359
1359
  "red_flag" | "green_flag" | "anomaly";
1360
1360
 
1361
1361
  /** 3 is the most severe. */
1362
- export type CloudEquityDiagnosticSeverity = 1 | 2 | 3;
1362
+ type CloudEquityDiagnosticSeverity = 1 | 2 | 3;
1363
1363
 
1364
1364
  export interface CloudEquityDiagnosticFinding {
1365
1365
  id: string;
@@ -1393,7 +1393,7 @@ export interface CloudEquityDiagnosticEvidence {
1393
1393
  url?: string;
1394
1394
  }
1395
1395
 
1396
- export interface CloudEquityDiagnosticPending {
1396
+ interface CloudEquityDiagnosticPending {
1397
1397
  status: "generating";
1398
1398
  retryAfterMs: number;
1399
1399
  }
@@ -1459,7 +1459,7 @@ export type ScannerKind = "hilo" | "flow";
1459
1459
 
1460
1460
  export type ScannerStatus = "live" | "starting" | "closed" | "degraded";
1461
1461
 
1462
- export interface ScannerWindowCounts {
1462
+ interface ScannerWindowCounts {
1463
1463
  highs: number;
1464
1464
  lows: number;
1465
1465
  }
@@ -1474,7 +1474,7 @@ export interface ScannerHiloExtreme {
1474
1474
  }
1475
1475
 
1476
1476
  /** Which entitlement tier produced the payload: free accounts get a delayed instance. */
1477
- export interface ScannerAccessInfo {
1477
+ interface ScannerAccessInfo {
1478
1478
  access: "realtime" | "delayed";
1479
1479
  /** 0 on the realtime instance, 15 on the delayed one. */
1480
1480
  delayMinutes: number;
@@ -1559,7 +1559,7 @@ export interface QuoteStreamTarget {
1559
1559
  weight?: number;
1560
1560
  }
1561
1561
 
1562
- export const TEAM_ACCENT_COLORS = [
1562
+ const TEAM_ACCENT_COLORS = [
1563
1563
  "amber",
1564
1564
  "blue",
1565
1565
  "cyan",
@@ -1667,7 +1667,7 @@ interface TeamNotificationTeam {
1667
1667
  shortName: string;
1668
1668
  }
1669
1669
 
1670
- export type TeamNotificationData =
1670
+ type TeamNotificationData =
1671
1671
  | {
1672
1672
  kind: "team-invite";
1673
1673
  team: TeamNotificationTeam;
@@ -1685,7 +1685,7 @@ export type TeamNotificationData =
1685
1685
  author: TeamActor;
1686
1686
  };
1687
1687
 
1688
- export type TeamNotificationType = TeamNotificationData["kind"];
1688
+ type TeamNotificationType = TeamNotificationData["kind"];
1689
1689
 
1690
1690
  export interface TeamNotification {
1691
1691
  id: string;
@@ -1697,10 +1697,10 @@ export interface TeamNotification {
1697
1697
 
1698
1698
  // Cloud notes
1699
1699
 
1700
- export type NoteOwnerKind = "user" | "team";
1700
+ type NoteOwnerKind = "user" | "team";
1701
1701
  export type NoteKind = "ticker" | "quick";
1702
1702
 
1703
- export interface CloudNoteOwner {
1703
+ interface CloudNoteOwner {
1704
1704
  kind: NoteOwnerKind;
1705
1705
  id: string;
1706
1706
  }
@@ -1733,14 +1733,14 @@ export type ThesisStatus = "watching" | "active" | "closed";
1733
1733
  export type ThesisHealth = "unverified" | "intact" | "weakening" | "broken";
1734
1734
  export type ThesisPillarStatus = ThesisHealth;
1735
1735
 
1736
- export interface ThesisInstrument {
1736
+ interface ThesisInstrument {
1737
1737
  symbol: string;
1738
1738
  exchange?: string;
1739
1739
  side: "long" | "short";
1740
1740
  role: "core" | "hedge";
1741
1741
  }
1742
1742
 
1743
- export interface ThesisMetricBound {
1743
+ interface ThesisMetricBound {
1744
1744
  key: string;
1745
1745
  op: ">=" | "<=";
1746
1746
  value: number;
@@ -1783,13 +1783,13 @@ export interface ThesisDocument {
1783
1783
  entry?: { date?: string; price?: number };
1784
1784
  }
1785
1785
 
1786
- export interface ThesisOutcome {
1786
+ interface ThesisOutcome {
1787
1787
  verdict: "right" | "wrong" | "lucky" | "unlucky";
1788
1788
  returnPct?: number;
1789
1789
  lesson?: string;
1790
1790
  }
1791
1791
 
1792
- export interface ThesisEditor {
1792
+ interface ThesisEditor {
1793
1793
  id: string;
1794
1794
  username: string | null;
1795
1795
  displayName: string;
@@ -1817,11 +1817,11 @@ export interface CloudThesis {
1817
1817
  closedAt: string | null;
1818
1818
  }
1819
1819
 
1820
- export type ThesisSignalTargetKind = "pillar" | "kill" | "catalyst" | "thesis";
1821
- export type ThesisSignalVerdict = "supports" | "challenges" | "breaks" | "neutral";
1822
- export type ThesisSignalStatus = "open" | "accepted" | "dismissed" | "snoozed" | "noted";
1820
+ type ThesisSignalTargetKind = "pillar" | "kill" | "catalyst" | "thesis";
1821
+ type ThesisSignalVerdict = "supports" | "challenges" | "breaks" | "neutral";
1822
+ type ThesisSignalStatus = "open" | "accepted" | "dismissed" | "snoozed" | "noted";
1823
1823
 
1824
- export interface ThesisSignalSource {
1824
+ interface ThesisSignalSource {
1825
1825
  kind: "news" | "filing" | "transcript" | "metric" | "review" | "user";
1826
1826
  id?: string;
1827
1827
  title?: string;
@@ -1893,7 +1893,7 @@ export interface TeamCollectionItem {
1893
1893
  updatedAt: string;
1894
1894
  }
1895
1895
 
1896
- export type TeamCollectionChange =
1896
+ type TeamCollectionChange =
1897
1897
  | { change: "created"; collection: TeamCollection }
1898
1898
  | { change: "updated"; collection: TeamCollection }
1899
1899
  | { change: "deleted"; collectionId: string }
@@ -0,0 +1,47 @@
1
+ /** Government bond curves stored from their official publishers, in percent. */
2
+ export type CloudCurveId = "us" | "us-real" | "us-breakeven" | "eu-aaa" | "de" | "gb" | "jp" | "ca";
3
+
4
+ export interface CloudCurvePoint {
5
+ tenor: string;
6
+ years: number;
7
+ yield: number | null;
8
+ }
9
+
10
+ interface CloudCurveHeader {
11
+ id: CloudCurveId;
12
+ label: string;
13
+ country: string;
14
+ /** par: bonds priced at par; zero: spot rates; benchmark: named benchmark bonds; spread: nominal minus real. */
15
+ basis: "par" | "zero" | "benchmark" | "spread";
16
+ couponsPerYear: number;
17
+ }
18
+
19
+ export interface CloudCurveView {
20
+ curve: CloudCurveHeader;
21
+ requestedDate: string | null;
22
+ /** The session the publisher dates the curve. */
23
+ asOf: string;
24
+ points: CloudCurvePoint[];
25
+ lookbacks: Array<{ id: "1D" | "1W" | "1M"; requestedDate: string; asOf: string | null; points: CloudCurvePoint[] | null }>;
26
+ spreads: Array<{
27
+ id: string;
28
+ short: string;
29
+ long: string;
30
+ /** Long minus short, percentage points. */
31
+ value: number | null;
32
+ change1d: number | null;
33
+ percentile1y: number | null;
34
+ observations1y: number;
35
+ }>;
36
+ checkedAt: string | null;
37
+ }
38
+
39
+ export interface CloudWorldCurves {
40
+ curves: Array<{
41
+ curve: CloudCurveHeader;
42
+ asOf: string;
43
+ points: CloudCurvePoint[];
44
+ previous: { asOf: string; points: CloudCurvePoint[] } | null;
45
+ checkedAt: string | null;
46
+ }>;
47
+ }
@@ -73,7 +73,6 @@ function createDetachedSessionSnapshotFallback(): AppSessionSnapshot {
73
73
  return {
74
74
  paneState: {},
75
75
  focusedPaneId: null,
76
- activePanel: "left",
77
76
  statusBarVisible: true,
78
77
  openPaneIds: [],
79
78
  hydrationTargets: [],
@@ -97,7 +96,6 @@ function resolveDetachedAppSessionSnapshot(
97
96
  ...baseSessionSnapshot,
98
97
  paneState: desktopSnapshot.paneState,
99
98
  focusedPaneId: desktopSnapshot.focusedPaneId,
100
- activePanel: desktopSnapshot.activePanel,
101
99
  statusBarVisible: desktopSnapshot.statusBarVisible,
102
100
  }
103
101
  : null;
@@ -6,9 +6,13 @@ import { useToastHost } from "../ui/toast";
6
6
  import type { PluginRegistry } from "../plugins/registry";
7
7
  import type { AppAction, AppState } from "../state/app/context";
8
8
  import type { TickerRecord } from "../types/ticker";
9
+ import { findPaneInstance } from "../types/config";
9
10
  import type { ReleaseInfo } from "../updater";
10
11
  import { canSelfUpdate } from "../updater";
11
12
  import { getVisiblePaneCycleOrder } from "../components/layout/pane/cycle-order";
13
+ import { requestFunctionHelp, useFunctionHelpHost } from "../plugins/builtin/help/function-card";
14
+ import { buildRegistryHelpIndex, helpFunctionForPane } from "../plugins/builtin/help/function-index";
15
+ import { recordFunctionOpen } from "../telemetry/usage-counts";
12
16
  import { isMoveDownShortcut, isMoveUpShortcut } from "../components/command-bar/keyboard-handlers";
13
17
  import {
14
18
  copyActiveSelection,
@@ -106,6 +110,11 @@ export function useAppGlobalShortcuts({
106
110
  const uiKind = useUiHost().kind;
107
111
  const toastHost = useToastHost();
108
112
  useKeybindingIssueNotice(keybindings, pluginRegistry, state.initialized);
113
+ useFunctionHelpHost({
114
+ closeCommandBar: () => {
115
+ if (state.commandBarOpen) dispatch({ type: "SET_COMMAND_BAR", open: false });
116
+ },
117
+ });
109
118
 
110
119
  useShortcut((event) => {
111
120
  if (isCopyShortcut(event) && copyActiveSelection(nativeRenderer)) {
@@ -207,6 +216,18 @@ export function useAppGlobalShortcuts({
207
216
  return;
208
217
  }
209
218
 
219
+ // A function key is never text, so the card opens from a focused field too.
220
+ if (action === "function-help") {
221
+ event.preventDefault();
222
+ event.stopPropagation();
223
+ recordFunctionOpen({ shortcut: "HELP", externalPluginId: null });
224
+ const instance = state.focusedPaneId ? findPaneInstance(state.config.layout, state.focusedPaneId) : undefined;
225
+ const fn = instance ? helpFunctionForPane(buildRegistryHelpIndex(pluginRegistry), pluginRegistry, instance) : null;
226
+ if (fn && requestFunctionHelp({ kind: "function", fn })) return;
227
+ if (!isDetachedWindow) pluginRegistry.showPane("help");
228
+ return;
229
+ }
230
+
210
231
  if (state.inputCaptured) return;
211
232
 
212
233
  if (!isDetachedWindow && action === "help") {
@@ -7,6 +7,7 @@ export type CoreKeybindingActionId =
7
7
  | "command-bar"
8
8
  | "ticker-search"
9
9
  | "help"
10
+ | "function-help"
10
11
  | "switch-layout"
11
12
  | "focus-next-pane"
12
13
  | "focus-prev-pane"
@@ -31,7 +32,7 @@ export type CoreKeybindingActionId =
31
32
  | "window-move-mode"
32
33
  | "window-resize-mode";
33
34
 
34
- export type KeybindingActionCategory = "Global Keys" | "Pane Management";
35
+ type KeybindingActionCategory = "Global Keys" | "Pane Management";
35
36
 
36
37
  export interface KeybindingActionDef {
37
38
  id: CoreKeybindingActionId;
@@ -88,6 +89,13 @@ export const KEYBINDING_ACTIONS: readonly KeybindingActionDef[] = [
88
89
  description: "Open help.",
89
90
  defaults: ["?"],
90
91
  },
92
+ {
93
+ id: "function-help",
94
+ category: "Global Keys",
95
+ description: "Open the focused pane's help card: what it shows, its keys and how fresh its data is.",
96
+ // F1 is help on every platform and nothing in the app used it.
97
+ defaults: ["F1"],
98
+ },
91
99
  {
92
100
  id: "switch-layout",
93
101
  category: "Global Keys",
@@ -113,7 +113,7 @@ const MODIFIER_ONLY_EVENT_NAMES = new Set([
113
113
  "", "shift", "ctrl", "control", "alt", "option", "meta", "super", "cmd", "command", "capslock", "fn",
114
114
  ]);
115
115
 
116
- export function isNamedKey(key: string): boolean {
116
+ function isNamedKey(key: string): boolean {
117
117
  return NAMED_KEY_BY_ALIAS.get(key)?.key === key;
118
118
  }
119
119
 
@@ -1,45 +1,32 @@
1
1
  export {
2
- KEYBINDING_ACTIONS,
3
2
  PLUGIN_ACTION_PREFIX,
4
- getKeybindingAction,
5
3
  isCoreKeybindingActionId,
6
- pluginShortcutActionId,
7
4
  type CoreKeybindingActionId,
8
- type KeybindingActionCategory,
9
- type KeybindingActionDef,
10
5
  } from "./actions";
11
6
  export {
12
7
  formatKeyChord,
13
8
  isTypingChord,
14
- keyChordDigit,
15
9
  keyChordFromEvent,
16
- keyChordsEqual,
17
10
  matchesKeyChord,
18
11
  parseKeyChord,
19
12
  serializeKeyChord,
20
13
  type KeyChord,
21
14
  type KeyChordEventLike,
22
- type PrimaryModifier,
23
15
  } from "./chord";
24
16
  export {
25
17
  describeKeybindingIssue,
26
18
  isPaneKeybindingAction,
27
19
  keyChordsOverlap,
28
- keybindingActionLabel,
29
20
  matchKeybinding,
30
21
  matchesKeybindingAction,
31
- pluginShortcutDefaultChord,
32
22
  resolveKeybindings,
33
23
  resolvePluginShortcutChords,
34
24
  type KeybindingCommand,
35
- type KeybindingIssue,
36
- type KeybindingMatch,
37
25
  type ResolvedKeybindingAction,
38
26
  type ResolvedKeybindings,
39
27
  } from "./resolve";
40
28
  export {
41
29
  advertisedChord,
42
- chordsForHost,
43
30
  formatActionChords,
44
31
  formatAdvertisedChord,
45
32
  formatChordForHost,
@@ -58,5 +45,4 @@ export {
58
45
  requestKeybindingCapture,
59
46
  subscribeKeybindingCapture,
60
47
  takeKeybindingCaptureRequest,
61
- type KeybindingCaptureRequest,
62
48
  } from "./capture-request";
@@ -34,7 +34,7 @@ export function formatChordForHost(
34
34
  * Chords worth showing on this host. A terminal cannot deliver an explicit
35
35
  * Command chord, so those rows stay out of the terminal's help.
36
36
  */
37
- export function chordsForHost(chords: readonly KeyChord[], mode: ShortcutDisplayMode): KeyChord[] {
37
+ function chordsForHost(chords: readonly KeyChord[], mode: ShortcutDisplayMode): KeyChord[] {
38
38
  return chords.filter((chord) => mode !== "terminal" || !chord.cmd);
39
39
  }
40
40
 
@@ -1,7 +1,6 @@
1
1
  import type { KeybindingsConfig } from "../../types/config";
2
2
  import type { KeyboardShortcut } from "../../types/plugin";
3
3
  import {
4
- getKeybindingAction,
5
4
  isCoreKeybindingActionId,
6
5
  KEYBINDING_ACTIONS,
7
6
  PANE_ACTION_IDS,
@@ -66,7 +65,7 @@ export interface ResolveKeybindingsOptions {
66
65
  host?: "terminal" | "desktop";
67
66
  }
68
67
 
69
- export function pluginShortcutDefaultChord(shortcut: KeyboardShortcut): KeyChord {
68
+ function pluginShortcutDefaultChord(shortcut: KeyboardShortcut): KeyChord {
70
69
  return {
71
70
  key: shortcut.key.toLowerCase(),
72
71
  ctrl: shortcut.ctrl === true,
@@ -280,9 +279,3 @@ export function describeKeybindingIssue(issue: KeybindingIssue): string {
280
279
  return `${serializeKeyChord(issue.chord)} is bound to ${issue.targets.join(" and ")}.`;
281
280
  }
282
281
  }
283
-
284
- export function keybindingActionLabel(action: ResolvedKeybindingAction): string {
285
- return action.def?.description ?? action.pluginShortcut?.description ?? action.id;
286
- }
287
-
288
- export { getKeybindingAction };
@@ -7,7 +7,7 @@ import {
7
7
  findDockLeaf,
8
8
  getDockedPaneIds,
9
9
  isPaneInLayout,
10
- } from "../../plugins/pane-manager";
10
+ } from "../../layout/pane-manager";
11
11
  import type { PluginRegistry } from "../../plugins/registry";
12
12
  import type { LoadedExternalPlugin } from "../../plugins/loader";
13
13
  import {
@@ -35,7 +35,6 @@ import type {
35
35
  } from "../../types/plugin";
36
36
  import type { DialogApi } from "../../ui/dialog";
37
37
  import {
38
- resolvePanelForPane,
39
38
  resolvePaneShowTarget,
40
39
  resolvePaneTarget as resolvePaneTargetInLayout,
41
40
  selectEdgeAnchor,
@@ -95,18 +94,12 @@ export function useAppPaneRuntime({
95
94
  { ...currentState.config, layout: normalizedLayout },
96
95
  currentState.paneState,
97
96
  hasFocusTarget ? (options.focusedPaneId ?? null) : currentState.focusedPaneId,
98
- currentState.activePanel,
99
97
  ));
100
98
  }, [dispatch, stateRef]);
101
99
 
102
- const activatePane = useCallback((paneId: string, layout: LayoutConfig = state.config.layout) => {
103
- dispatch({
104
- type: "SET_ACTIVE_PANEL",
105
- panel: resolvePanelForPane({ layout, paneId, pluginRegistry }),
106
- preserveFocus: true,
107
- });
100
+ const activatePane = useCallback((paneId: string) => {
108
101
  dispatch({ type: "FOCUS_PANE", paneId });
109
- }, [dispatch, pluginRegistry, state.config.layout]);
102
+ }, [dispatch]);
110
103
 
111
104
  const {
112
105
  buildPaneBinding,
@@ -163,7 +156,7 @@ export function useAppPaneRuntime({
163
156
  if (nextLayout !== state.config.layout) {
164
157
  persistLayout(nextLayout, { pushHistory: false });
165
158
  }
166
- activatePane(paneId, nextLayout);
159
+ activatePane(paneId);
167
160
  }, [activatePane, persistLayout, state.config.layout]);
168
161
 
169
162
  const placePaneInstance = useCallback((
@@ -171,7 +164,7 @@ export function useAppPaneRuntime({
171
164
  paneDef: PaneDef,
172
165
  options?: PaneTemplateInstanceConfig,
173
166
  ) => {
174
- const { width, height } = pluginRegistry.getTermSizeFn();
167
+ const { width, height } = pluginRegistry.getTermSize();
175
168
  // Templates can await ticker resolution before placing their pane, so the
176
169
  // layout from the render that started the request may be out of date.
177
170
  const { config: { layout }, focusedPaneId } = stateRef.current;
@@ -201,7 +194,7 @@ export function useAppPaneRuntime({
201
194
  }
202
195
 
203
196
  persistLayout(nextLayout);
204
- activatePane(instance.instanceId, nextLayout);
197
+ activatePane(instance.instanceId);
205
198
  }, [
206
199
  activatePane,
207
200
  persistLayout,
@@ -221,7 +214,7 @@ export function useAppPaneRuntime({
221
214
  }
222
215
 
223
216
  if (target.instance && isPaneInLayout(state.config.layout, target.instance.instanceId)) {
224
- pluginRegistry.focusPaneFn(target.instance.instanceId);
217
+ pluginRegistry.focusPane(target.instance.instanceId);
225
218
  return;
226
219
  }
227
220
 
@@ -1,8 +1,6 @@
1
- import type { PluginRegistry } from "../../plugins/registry";
2
1
  import {
3
2
  getDockLeafLayouts,
4
- getLeafRect,
5
- } from "../../plugins/pane-manager";
3
+ } from "../../layout/pane-manager";
6
4
  import {
7
5
  findPaneInstance,
8
6
  isTickerPaneId,
@@ -41,33 +39,6 @@ export function resolvePaneShowTarget(
41
39
  };
42
40
  }
43
41
 
44
- export function resolvePanelForPane({
45
- layout,
46
- paneId,
47
- pluginRegistry,
48
- }: {
49
- layout: LayoutConfig;
50
- paneId: string;
51
- pluginRegistry: PluginRegistry;
52
- }): "left" | "right" {
53
- const instanceId = resolvePaneTarget(layout, paneId);
54
- if (!instanceId) return "right";
55
- const instance = findPaneInstance(layout, instanceId);
56
- const paneDef = instance ? pluginRegistry.panes.get(instance.paneId) : pluginRegistry.panes.get(paneId);
57
- const floating = layout.floating.find((entry) => entry.instanceId === instanceId);
58
- if (floating) {
59
- return paneDef?.defaultPosition ?? "right";
60
- }
61
-
62
- const rect = getLeafRect(layout, instanceId, PANEL_RESOLUTION_BOUNDS);
63
- if (!rect) {
64
- return paneDef?.defaultPosition ?? "right";
65
- }
66
-
67
- const midpoint = PANEL_RESOLUTION_BOUNDS.width / 2;
68
- return rect.x + (rect.width / 2) <= midpoint ? "left" : "right";
69
- }
70
-
71
42
  export function selectEdgeAnchor(layout: LayoutConfig, edge: "left" | "right"): string | null {
72
43
  const leaves = getDockLeafLayouts(layout, PANEL_RESOLUTION_BOUNDS);
73
44
  if (leaves.length === 0) return null;