@datalayer/core 1.1.60 → 1.2.10

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 (496) hide show
  1. package/README.md +41 -18
  2. package/lib/api/DatalayerApi.d.ts +42 -1
  3. package/lib/api/DatalayerApi.js +90 -3
  4. package/lib/api/constants.d.ts +19 -1
  5. package/lib/api/constants.js +19 -1
  6. package/lib/api/contents/attachments.d.ts +9 -0
  7. package/lib/api/contents/attachments.js +39 -0
  8. package/lib/api/contents/bridges.d.ts +22 -0
  9. package/lib/api/contents/bridges.js +79 -0
  10. package/lib/api/contents/capabilities.d.ts +11 -0
  11. package/lib/api/contents/capabilities.js +21 -0
  12. package/lib/api/contents/cloudStorage.d.ts +31 -0
  13. package/lib/api/contents/cloudStorage.js +89 -0
  14. package/lib/api/contents/dataservers.d.ts +37 -0
  15. package/lib/api/contents/dataservers.js +121 -0
  16. package/lib/api/contents/datasets.d.ts +63 -0
  17. package/lib/api/contents/datasets.js +82 -0
  18. package/lib/api/contents/datasources.d.ts +70 -0
  19. package/lib/api/contents/datasources.js +149 -0
  20. package/lib/api/contents/generated.d.ts +1070 -0
  21. package/lib/api/contents/index.d.ts +16 -0
  22. package/lib/api/contents/index.js +20 -0
  23. package/lib/api/contents/mcp.d.ts +46 -0
  24. package/lib/api/contents/mcp.js +157 -0
  25. package/lib/api/contents/objects.d.ts +31 -0
  26. package/lib/api/contents/objects.js +88 -0
  27. package/lib/api/contents/operations.d.ts +3 -0
  28. package/lib/api/contents/operations.js +19 -0
  29. package/lib/api/contents/runtimeMounts.d.ts +40 -0
  30. package/lib/api/contents/runtimeMounts.js +59 -0
  31. package/lib/api/contents/sandboxUid.d.ts +21 -0
  32. package/lib/api/contents/sandboxUid.js +27 -0
  33. package/lib/api/contents/sources.d.ts +19 -0
  34. package/lib/api/contents/sources.js +119 -0
  35. package/lib/api/contents/sync.d.ts +18 -0
  36. package/lib/api/contents/sync.js +69 -0
  37. package/lib/api/contents/transfers.d.ts +38 -0
  38. package/lib/api/contents/transfers.js +123 -0
  39. package/lib/api/evals/client.d.ts +402 -0
  40. package/lib/api/evals/client.js +359 -0
  41. package/lib/api/evals/index.d.ts +10 -0
  42. package/lib/api/evals/index.js +18 -0
  43. package/lib/api/evals/request.d.ts +43 -0
  44. package/lib/api/evals/request.js +67 -0
  45. package/lib/api/evals/status.d.ts +27 -0
  46. package/lib/api/evals/status.js +122 -0
  47. package/lib/api/evals/types.d.ts +1335 -0
  48. package/lib/api/evals/types.js +5 -0
  49. package/lib/api/iam/connectedAgents.d.ts +68 -0
  50. package/lib/api/iam/connectedAgents.js +87 -0
  51. package/lib/api/iam/identityProviders.d.ts +76 -0
  52. package/lib/api/iam/identityProviders.js +187 -0
  53. package/lib/api/iam/index.d.ts +3 -1
  54. package/lib/api/iam/index.js +3 -1
  55. package/lib/api/iam/mcpAlertRules.d.ts +51 -0
  56. package/lib/api/iam/mcpAlertRules.js +198 -0
  57. package/lib/api/iam/mcpAuditSettings.d.ts +46 -0
  58. package/lib/api/iam/mcpAuditSettings.js +120 -0
  59. package/lib/api/iam/mcpPolicy.d.ts +181 -0
  60. package/lib/api/iam/mcpPolicy.js +168 -0
  61. package/lib/api/iam/organizationTeams.d.ts +13 -0
  62. package/lib/api/iam/organizationTeams.js +43 -0
  63. package/lib/api/iam/profile.d.ts +17 -1
  64. package/lib/api/iam/profile.js +27 -0
  65. package/lib/api/iam/scimTokens.d.ts +79 -0
  66. package/lib/api/iam/scimTokens.js +141 -0
  67. package/lib/api/iam/secrets.js +9 -21
  68. package/lib/api/iam/serviceAgents.d.ts +68 -0
  69. package/lib/api/iam/serviceAgents.js +119 -0
  70. package/lib/api/iam/trials.d.ts +38 -0
  71. package/lib/api/iam/trials.js +66 -0
  72. package/lib/api/index.d.ts +8 -1
  73. package/lib/api/index.js +7 -1
  74. package/lib/api/mcp/activity.d.ts +37 -0
  75. package/lib/api/mcp/activity.js +26 -0
  76. package/lib/api/mcp/alerts.d.ts +25 -0
  77. package/lib/api/mcp/alerts.js +51 -0
  78. package/lib/api/mcp/audit.d.ts +29 -0
  79. package/lib/api/mcp/audit.js +55 -0
  80. package/lib/api/mcp/bindings.d.ts +18 -0
  81. package/lib/api/mcp/bindings.js +42 -0
  82. package/lib/api/mcp/forwarding.d.ts +25 -0
  83. package/lib/api/mcp/forwarding.js +46 -0
  84. package/lib/api/mcp/gateway.d.ts +16 -0
  85. package/lib/api/mcp/gateway.js +70 -0
  86. package/lib/api/mcp/generated.d.ts +22 -0
  87. package/lib/api/mcp/generated.js +213 -0
  88. package/lib/api/mcp/index.d.ts +17 -0
  89. package/lib/api/mcp/index.js +25 -0
  90. package/lib/api/mcp/observability.d.ts +141 -0
  91. package/lib/api/mcp/observability.js +267 -0
  92. package/lib/api/mcp/operations.d.ts +83 -0
  93. package/lib/api/mcp/operations.js +50 -0
  94. package/lib/api/mcp/organizations.d.ts +102 -0
  95. package/lib/api/mcp/organizations.js +46 -0
  96. package/lib/api/mcp/policy.d.ts +9 -0
  97. package/lib/api/mcp/policy.js +23 -0
  98. package/lib/api/mcp/tasks.d.ts +49 -0
  99. package/lib/api/mcp/tasks.js +147 -0
  100. package/lib/api/orchestration/client.d.ts +53 -0
  101. package/lib/api/orchestration/client.js +105 -0
  102. package/lib/api/orchestration/events.d.ts +88 -0
  103. package/lib/api/orchestration/events.js +245 -0
  104. package/lib/api/orchestration/generated.d.ts +693 -0
  105. package/lib/api/orchestration/generated.js +687 -0
  106. package/lib/api/orchestration/index.d.ts +30 -0
  107. package/lib/api/orchestration/index.js +34 -0
  108. package/lib/api/orchestration/lifecycle.d.ts +39 -0
  109. package/lib/api/orchestration/lifecycle.js +57 -0
  110. package/lib/api/orchestration/measures.d.ts +55 -0
  111. package/lib/api/orchestration/measures.js +99 -0
  112. package/lib/api/otel/dashboards.d.ts +56 -0
  113. package/lib/api/otel/dashboards.js +50 -0
  114. package/lib/api/otel/index.d.ts +1 -0
  115. package/lib/api/otel/index.js +1 -0
  116. package/lib/api/otel/metrics.d.ts +16 -0
  117. package/lib/api/otel/metrics.js +15 -0
  118. package/lib/api/scheduler/client.d.ts +32 -0
  119. package/lib/api/scheduler/client.js +42 -0
  120. package/lib/api/scheduler/index.d.ts +8 -0
  121. package/lib/api/scheduler/index.js +16 -0
  122. package/lib/api/scheduler/request.d.ts +28 -0
  123. package/lib/api/scheduler/request.js +50 -0
  124. package/lib/api/scheduler/types.d.ts +88 -0
  125. package/lib/api/scheduler/types.js +5 -0
  126. package/lib/api/spacer/comments.d.ts +97 -0
  127. package/lib/api/spacer/comments.js +45 -0
  128. package/lib/api/spacer/index.d.ts +9 -0
  129. package/lib/api/spacer/index.js +17 -0
  130. package/lib/api/spacer/notebooks.d.ts +33 -0
  131. package/lib/api/spacer/notebooks.js +39 -0
  132. package/lib/api/spacer/request.d.ts +25 -0
  133. package/lib/api/spacer/request.js +46 -0
  134. package/lib/api/spacer/spaces.d.ts +68 -0
  135. package/lib/api/spacer/spaces.js +45 -0
  136. package/lib/api/utils/validation.d.ts +4 -4
  137. package/lib/api/utils/validation.js +10 -7
  138. package/lib/client/auth/index.js +0 -5
  139. package/lib/client/auth/storage.js +0 -5
  140. package/lib/client/auth/strategies.js +0 -5
  141. package/lib/client/base.d.ts +6 -0
  142. package/lib/client/base.js +8 -0
  143. package/lib/client/constants.d.ts +1 -0
  144. package/lib/client/constants.js +1 -0
  145. package/lib/client/index.d.ts +0 -10
  146. package/lib/client/index.js +2 -2
  147. package/lib/client/mixins/ContentsMixin.d.ts +71 -0
  148. package/lib/client/mixins/ContentsMixin.js +157 -0
  149. package/lib/client/mixins/IAMMixin.d.ts +0 -31
  150. package/lib/client/mixins/IAMMixin.js +0 -58
  151. package/lib/components/animation/AnimatedText.d.ts +2 -44
  152. package/lib/components/animation/AnimatedText.js +6 -126
  153. package/lib/components/anonymous/AnonymousKeyExpired.d.ts +56 -0
  154. package/lib/components/anonymous/AnonymousKeyExpired.js +96 -0
  155. package/lib/components/anonymous/AnonymousKeyTimer.d.ts +63 -0
  156. package/lib/components/anonymous/AnonymousKeyTimer.js +140 -0
  157. package/lib/components/anonymous/index.d.ts +7 -0
  158. package/lib/components/anonymous/index.js +15 -0
  159. package/lib/components/auth/SigInAPIKey.d.ts +1 -0
  160. package/lib/components/auth/SigInAPIKey.js +0 -6
  161. package/lib/components/auth/SignIn.d.ts +1 -0
  162. package/lib/components/auth/SignIn.js +0 -4
  163. package/lib/components/auth/SignIn.stories.d.ts +2 -2
  164. package/lib/components/avatars/BoringAvatar.d.ts +1 -1
  165. package/lib/components/avatars/BoringAvatar.stories.d.ts +1 -1
  166. package/lib/components/avatars/DLAvatar.d.ts +1 -1
  167. package/lib/components/avatars/DLAvatar.js +0 -4
  168. package/lib/components/avatars/UserAvatar.d.ts +16 -1
  169. package/lib/components/avatars/UserAvatar.js +15 -13
  170. package/lib/components/avatars/UserProfileAvatar.d.ts +1 -1
  171. package/lib/components/banners/NoAutomationBanner.d.ts +1 -1
  172. package/lib/components/billing/BillingEntitySelect.d.ts +16 -0
  173. package/lib/components/billing/BillingEntitySelect.js +49 -27
  174. package/lib/components/billing/eligibility.d.ts +22 -0
  175. package/lib/components/billing/eligibility.js +27 -0
  176. package/lib/components/billing/index.d.ts +1 -0
  177. package/lib/components/billing/index.js +1 -4
  178. package/lib/components/buttons/DownloadCSVButton.d.ts +1 -1
  179. package/lib/components/buttons/DownloadJsonButton.d.ts +1 -1
  180. package/lib/components/buttons/LongActionButton.d.ts +1 -0
  181. package/lib/components/buttons/LongActionButton.js +0 -4
  182. package/lib/components/buttons/UploadButton.d.ts +1 -0
  183. package/lib/components/buttons/UploadButton.js +0 -4
  184. package/lib/components/checkout/StripeCheckout.d.ts +1 -1
  185. package/lib/components/collaboration/LiveEditorCollaborators.d.ts +36 -0
  186. package/lib/components/collaboration/LiveEditorCollaborators.js +88 -53
  187. package/lib/components/collaboration/index.js +0 -4
  188. package/lib/components/confetti/ConfettiSuccess.d.ts +1 -1
  189. package/lib/components/contents/ContentSourceCard.d.ts +8 -0
  190. package/lib/components/contents/ContentSourceCard.js +23 -0
  191. package/lib/components/contents/HomeFolderObjectsBrowser.d.ts +10 -0
  192. package/lib/components/contents/HomeFolderObjectsBrowser.js +148 -0
  193. package/lib/components/contents/index.d.ts +2 -0
  194. package/lib/components/contents/index.js +6 -0
  195. package/lib/components/context/OrganizationSelect.d.ts +1 -1
  196. package/lib/components/display/AvatarSkeleton.d.ts +1 -1
  197. package/lib/components/display/BusyDots.d.ts +1 -1
  198. package/lib/components/display/CenteredSpinner.d.ts +1 -1
  199. package/lib/components/display/CodePreview.d.ts +1 -1
  200. package/lib/components/display/DatalayerBox.d.ts +7 -3
  201. package/lib/components/display/DatalayerBox.js +7 -7
  202. package/lib/components/display/HorizontalCenter.d.ts +1 -1
  203. package/lib/components/display/JupyterDialog.d.ts +1 -0
  204. package/lib/components/display/JupyterDialog.js +1 -7
  205. package/lib/components/display/Markdown.d.ts +1 -0
  206. package/lib/components/display/NavLink.js +3 -2
  207. package/lib/components/display/NotebookSkeleton.d.ts +1 -1
  208. package/lib/components/display/Placeholder.d.ts +1 -1
  209. package/lib/components/display/ToTopBranded.d.ts +1 -1
  210. package/lib/components/echarts/EChartsReact.d.ts +1 -1
  211. package/lib/components/flashes/FlashClosable.d.ts +1 -0
  212. package/lib/components/flashes/FlashClosable.js +0 -4
  213. package/lib/components/flashes/FlashGuest.d.ts +1 -1
  214. package/lib/components/flashes/FlashSurveys.d.ts +1 -1
  215. package/lib/components/flashes/FlashUnauthorized.d.ts +1 -0
  216. package/lib/components/flashes/FlashUnauthorized.js +0 -6
  217. package/lib/components/flashes/surveys/Survey2025_1.d.ts +1 -1
  218. package/lib/components/iam/ExternalTokenSilentLogin.d.ts +1 -1
  219. package/lib/components/index.d.ts +2 -0
  220. package/lib/components/index.js +2 -0
  221. package/lib/components/labels/StatusLabels.d.ts +2 -9
  222. package/lib/components/labels/StatusLabels.js +2 -26
  223. package/lib/components/labels/VisibilityLabel.d.ts +1 -1
  224. package/lib/components/landings/StepBlock.d.ts +1 -1
  225. package/lib/components/mcp/ClientBadge.d.ts +41 -0
  226. package/lib/components/mcp/ClientBadge.js +33 -0
  227. package/lib/components/mcp/McpErrorBlankslate.d.ts +21 -0
  228. package/lib/components/mcp/McpErrorBlankslate.js +17 -0
  229. package/lib/components/mcp/ScopeList.d.ts +28 -0
  230. package/lib/components/mcp/ScopeList.js +14 -0
  231. package/lib/components/mcp/index.d.ts +10 -0
  232. package/lib/components/mcp/index.js +18 -0
  233. package/lib/components/navbar/NavigationVisbilityObserver.d.ts +2 -1
  234. package/lib/components/navbar/SubdomainNavBar.d.ts +10 -5
  235. package/lib/components/navbar/SubdomainNavBar.js +2 -1
  236. package/lib/components/notebooks/JupyterNotebook.d.ts +1 -1
  237. package/lib/components/notebooks/JupyterNotebookToolbar.d.ts +1 -1
  238. package/lib/components/principal/PrincipalAppearance.d.ts +22 -42
  239. package/lib/components/principal/PrincipalAppearance.js +232 -182
  240. package/lib/components/principal/PrincipalAvatar.d.ts +9 -1
  241. package/lib/components/principal/PrincipalAvatar.js +18 -10
  242. package/lib/components/principal/PrincipalBadge.d.ts +1 -1
  243. package/lib/components/principal/PrincipalBanner.d.ts +1 -1
  244. package/lib/components/principal/PrincipalDetailsOverlay.d.ts +38 -1
  245. package/lib/components/principal/PrincipalDetailsOverlay.js +64 -33
  246. package/lib/components/principal/PrincipalHoverCard.d.ts +31 -0
  247. package/lib/components/principal/PrincipalHoverCard.js +52 -0
  248. package/lib/components/principal/PrincipalSwitcherMenu.d.ts +1 -0
  249. package/lib/components/principal/PrincipalSwitcherMenu.js +5 -14
  250. package/lib/components/principal/index.d.ts +2 -1
  251. package/lib/components/principal/index.js +2 -1
  252. package/lib/components/progress/ConsumptionBar.d.ts +1 -0
  253. package/lib/components/progress/ConsumptionBar.js +0 -4
  254. package/lib/components/progress/ProgressRing.d.ts +1 -0
  255. package/lib/components/progress/SpinnerBar.d.ts +1 -1
  256. package/lib/components/progress/Timer.d.ts +1 -0
  257. package/lib/components/progress/Timer.js +0 -4
  258. package/lib/components/screencapture/Screencapture.js +46 -3
  259. package/lib/components/screencapture/ScreencaptureButton.d.ts +1 -1
  260. package/lib/components/sharing/ShareAccessComponent.d.ts +58 -3
  261. package/lib/components/sharing/ShareAccessComponent.js +143 -98
  262. package/lib/components/sharing/SharingEditor.d.ts +21 -0
  263. package/lib/components/sharing/SharingEditor.js +9 -28
  264. package/lib/components/sharing/index.d.ts +1 -0
  265. package/lib/components/sharing/index.js +1 -0
  266. package/lib/components/sharing/sandboxSharing.d.ts +26 -0
  267. package/lib/components/sharing/sandboxSharing.js +41 -0
  268. package/lib/components/spaces/SpaceDetailsOverlay.d.ts +39 -0
  269. package/lib/components/spaces/SpaceDetailsOverlay.js +80 -0
  270. package/lib/components/spaces/SpaceDisplay.d.ts +38 -0
  271. package/lib/components/spaces/SpaceDisplay.js +92 -0
  272. package/lib/components/spaces/index.d.ts +4 -0
  273. package/lib/components/spaces/index.js +7 -0
  274. package/lib/components/spaces/spaceDisplayModel.d.ts +93 -0
  275. package/lib/components/spaces/spaceDisplayModel.js +170 -0
  276. package/lib/components/sparklines/Sparklines.js +3 -4
  277. package/lib/components/sparklines/index.js +0 -4
  278. package/lib/components/storage/ContentsBrowser.d.ts +25 -1
  279. package/lib/components/storage/ContentsBrowser.js +145 -52
  280. package/lib/components/storage/ContentsBrowserMock.d.ts +3 -0
  281. package/lib/components/storage/ContentsBrowserMock.js +75 -0
  282. package/lib/components/storage/ContentsItems.d.ts +2 -1
  283. package/lib/components/storage/ContentsItems.js +0 -4
  284. package/lib/components/storage/ContentsTable.d.ts +50 -0
  285. package/lib/components/storage/ContentsTable.js +134 -0
  286. package/lib/components/storage/HomeFolderDrive.d.ts +71 -0
  287. package/lib/components/storage/HomeFolderDrive.js +248 -0
  288. package/lib/components/storage/index.d.ts +2 -0
  289. package/lib/components/storage/index.js +2 -0
  290. package/lib/components/students/StudentItemStatus.d.ts +1 -1
  291. package/lib/components/students/StudentResultCircle.d.ts +1 -1
  292. package/lib/components/subnav/SubNav.d.ts +5 -5
  293. package/lib/components/subnav/SubNav.js +11 -9
  294. package/lib/components/tables/DataTable.d.ts +1 -1
  295. package/lib/components/text-reveal/TextRevealAnimation.d.ts +2 -2
  296. package/lib/components/text-reveal/useTextRevealAnimationLines.d.ts +1 -1
  297. package/lib/components/time/LiveRelativeTime.d.ts +1 -0
  298. package/lib/components/time/LiveRelativeTime.js +0 -8
  299. package/lib/components/time/index.js +0 -4
  300. package/lib/components/timeline/Timeline.d.ts +1 -1
  301. package/lib/components/timeline/index.js +0 -4
  302. package/lib/components/users/PeerIndicator.d.ts +1 -0
  303. package/lib/components/users/PeerIndicator.js +0 -4
  304. package/lib/config/Configuration.d.ts +15 -17
  305. package/lib/config/Configuration.js +7 -0
  306. package/lib/hooks/cacheConverters.d.ts +0 -7
  307. package/lib/hooks/cacheConverters.js +0 -25
  308. package/lib/hooks/index.d.ts +3 -0
  309. package/lib/hooks/index.js +3 -0
  310. package/lib/hooks/layouts/LayoutBackdrop.d.ts +1 -1
  311. package/lib/hooks/layouts/LayoutScreencapture.d.ts +1 -1
  312. package/lib/hooks/useBackdrop.d.ts +1 -1
  313. package/lib/hooks/useBackdropJupyterLab.d.ts +3 -2
  314. package/lib/hooks/useBackdropJupyterLab.js +0 -4
  315. package/lib/hooks/useBillingEntityStore.js +3 -0
  316. package/lib/hooks/useCache.d.ts +478 -130
  317. package/lib/hooks/useCache.js +1580 -676
  318. package/lib/hooks/useContainsFocus.d.ts +1 -1
  319. package/lib/hooks/useContents.d.ts +334 -0
  320. package/lib/hooks/useContents.js +1033 -0
  321. package/lib/hooks/useFocusTrap.d.ts +4 -4
  322. package/lib/hooks/useFocusTrap.js +1 -1
  323. package/lib/hooks/useMcp.d.ts +315 -0
  324. package/lib/hooks/useMcp.js +891 -0
  325. package/lib/hooks/useMobile.js +0 -5
  326. package/lib/hooks/useNavigate.d.ts +41 -3
  327. package/lib/hooks/useNavigate.js +106 -52
  328. package/lib/hooks/usePrincipalCacheStore.js +3 -0
  329. package/lib/hooks/usePrincipalStore.js +3 -0
  330. package/lib/hooks/useProjectStore.d.ts +3 -3
  331. package/lib/hooks/useProjectStore.js +4 -4
  332. package/lib/hooks/useRef.d.ts +1 -1
  333. package/lib/hooks/useRef.js +3 -0
  334. package/lib/hooks/useScreencapture.d.ts +2 -1
  335. package/lib/hooks/useScreencapture.js +0 -4
  336. package/lib/hooks/useSpaceCacheStore.d.ts +50 -0
  337. package/lib/hooks/useSpaceCacheStore.js +85 -0
  338. package/lib/hooks/useToast.js +0 -4
  339. package/lib/hooks/useVisibilityObserver.d.ts +1 -1
  340. package/lib/index.d.ts +4 -1
  341. package/lib/index.js +3 -1
  342. package/lib/mocks/components/FlashMock.d.ts +1 -1
  343. package/lib/mocks/views/ActionMenuMock.d.ts +1 -1
  344. package/lib/mocks/views/ChartMock.d.ts +1 -1
  345. package/lib/mocks/views/DashboardMock.d.ts +1 -1
  346. package/lib/mocks/views/FormMock.d.ts +1 -1
  347. package/lib/mocks/views/TableMock.d.ts +1 -1
  348. package/lib/mocks/views/WipMock.d.ts +1 -1
  349. package/lib/models/Credits.d.ts +16 -0
  350. package/lib/models/Credits.js +22 -0
  351. package/lib/models/CreditsDTO.d.ts +6 -5
  352. package/lib/models/CreditsDTO.js +7 -5
  353. package/lib/models/McpAuditEvent.d.ts +52 -0
  354. package/lib/models/McpAuditEvent.js +5 -0
  355. package/lib/models/McpBinding.d.ts +57 -0
  356. package/lib/models/McpBinding.js +5 -0
  357. package/lib/models/McpPolicy.d.ts +77 -0
  358. package/lib/models/McpPolicy.js +5 -0
  359. package/lib/models/McpTask.d.ts +94 -0
  360. package/lib/models/McpTask.js +7 -0
  361. package/lib/models/Organization.d.ts +69 -0
  362. package/lib/models/Organization.js +96 -0
  363. package/lib/models/Secret.d.ts +1 -2
  364. package/lib/models/Secret.js +2 -18
  365. package/lib/models/StartedBy.d.ts +91 -0
  366. package/lib/models/StartedBy.js +117 -0
  367. package/lib/models/Team.d.ts +2 -0
  368. package/lib/models/Team.js +2 -0
  369. package/lib/models/User.d.ts +4 -0
  370. package/lib/models/User.js +3 -0
  371. package/lib/models/UserDTO.js +4 -2
  372. package/lib/models/UserSettings.d.ts +13 -0
  373. package/lib/models/UserSettings.js +9 -0
  374. package/lib/models/contents/__fixtures__/solr-codec.json +57 -0
  375. package/lib/models/contents/__fixtures__/v1-contracts.json +194 -0
  376. package/lib/models/contents/fieldCase.d.ts +8 -0
  377. package/lib/models/contents/fieldCase.js +37 -0
  378. package/lib/models/contents/index.d.ts +2 -0
  379. package/lib/models/contents/index.js +6 -0
  380. package/lib/models/contents/permissions.d.ts +16 -0
  381. package/lib/models/contents/permissions.js +34 -0
  382. package/lib/models/index.d.ts +5 -1
  383. package/lib/models/index.js +5 -1
  384. package/lib/navigation/components.js +2 -3
  385. package/lib/routes/publicPaths.js +4 -0
  386. package/lib/state/index.d.ts +1 -0
  387. package/lib/state/index.js +1 -0
  388. package/lib/state/sessionEnd.d.ts +55 -0
  389. package/lib/state/sessionEnd.js +162 -0
  390. package/lib/state/substates/CoreState.d.ts +15 -7
  391. package/lib/state/substates/CoreState.js +21 -17
  392. package/lib/state/substates/IAMState.d.ts +1 -1
  393. package/lib/state/substates/IAMState.js +12 -5
  394. package/lib/state/substates/LayoutState.js +12 -0
  395. package/lib/state/substates/ProfileState.d.ts +1 -0
  396. package/lib/state/substates/ProfileState.js +1 -4
  397. package/lib/state/substates/index.d.ts +0 -1
  398. package/lib/state/substates/index.js +0 -1
  399. package/lib/utils/Jwt.d.ts +26 -0
  400. package/lib/utils/Jwt.js +37 -0
  401. package/lib/utils/Lazy.d.ts +20 -0
  402. package/lib/utils/Lazy.js +32 -6
  403. package/lib/utils/Screencapture.js +3 -0
  404. package/lib/utils/WithSuspense.d.ts +11 -1
  405. package/lib/utils/WithSuspense.js +11 -1
  406. package/lib/views/api-keys/APIKeyEdit.d.ts +1 -1
  407. package/lib/views/api-keys/APIKeyNew.d.ts +1 -1
  408. package/lib/views/api-keys/APIKeys.d.ts +1 -1
  409. package/lib/views/api-keys/APIKeys.js +30 -4
  410. package/lib/views/api-keys/APIKeysStandalone.d.ts +5 -1
  411. package/lib/views/api-keys/APIKeysStandalone.js +2 -2
  412. package/lib/views/datasources/DatasourceDetail.d.ts +12 -5
  413. package/lib/views/datasources/DatasourceDetail.js +80 -110
  414. package/lib/views/datasources/DatasourceNew.d.ts +14 -8
  415. package/lib/views/datasources/DatasourceNew.js +129 -118
  416. package/lib/views/datasources/Datasources.d.ts +39 -7
  417. package/lib/views/datasources/Datasources.js +95 -40
  418. package/lib/views/datasources/DatasourcesMock.d.ts +3 -0
  419. package/lib/views/datasources/DatasourcesMock.js +57 -0
  420. package/lib/views/iam/SignInSimple.d.ts +12 -0
  421. package/lib/views/iam/SignInSimple.js +4 -4
  422. package/lib/views/index.d.ts +1 -0
  423. package/lib/views/index.js +1 -0
  424. package/lib/views/mcp/AdmittedClients.d.ts +44 -0
  425. package/lib/views/mcp/AdmittedClients.js +59 -0
  426. package/lib/views/mcp/AlertDestinations.d.ts +34 -0
  427. package/lib/views/mcp/AlertDestinations.js +75 -0
  428. package/lib/views/mcp/AlertRules.d.ts +32 -0
  429. package/lib/views/mcp/AlertRules.js +245 -0
  430. package/lib/views/mcp/ApprovalQueue.d.ts +66 -0
  431. package/lib/views/mcp/ApprovalQueue.js +95 -0
  432. package/lib/views/mcp/AuditLog.d.ts +42 -0
  433. package/lib/views/mcp/AuditLog.js +144 -0
  434. package/lib/views/mcp/ConnectedAgents.d.ts +34 -0
  435. package/lib/views/mcp/ConnectedAgents.js +135 -0
  436. package/lib/views/mcp/EnterpriseConsole.d.ts +74 -0
  437. package/lib/views/mcp/EnterpriseConsole.js +195 -0
  438. package/lib/views/mcp/IdentityProviders.d.ts +33 -0
  439. package/lib/views/mcp/IdentityProviders.js +299 -0
  440. package/lib/views/mcp/McpDashboard.d.ts +50 -0
  441. package/lib/views/mcp/McpDashboard.js +430 -0
  442. package/lib/views/mcp/McpHome.d.ts +92 -0
  443. package/lib/views/mcp/McpHome.js +153 -0
  444. package/lib/views/mcp/McpObservability.d.ts +79 -0
  445. package/lib/views/mcp/McpObservability.js +236 -0
  446. package/lib/views/mcp/NotebookRuns.d.ts +39 -0
  447. package/lib/views/mcp/NotebookRuns.js +44 -0
  448. package/lib/views/mcp/OrganizationPolicy.d.ts +45 -0
  449. package/lib/views/mcp/OrganizationPolicy.js +108 -0
  450. package/lib/views/mcp/OrganizationUsage.d.ts +69 -0
  451. package/lib/views/mcp/OrganizationUsage.js +113 -0
  452. package/lib/views/mcp/PersonalPolicy.d.ts +54 -0
  453. package/lib/views/mcp/PersonalPolicy.js +126 -0
  454. package/lib/views/mcp/Policies.d.ts +53 -0
  455. package/lib/views/mcp/Policies.js +210 -0
  456. package/lib/views/mcp/PolicyForm.d.ts +83 -0
  457. package/lib/views/mcp/PolicyForm.js +113 -0
  458. package/lib/views/mcp/PolicyHistory.d.ts +58 -0
  459. package/lib/views/mcp/PolicyHistory.js +75 -0
  460. package/lib/views/mcp/RunDetail.d.ts +87 -0
  461. package/lib/views/mcp/RunDetail.js +186 -0
  462. package/lib/views/mcp/ScimProvisioning.d.ts +54 -0
  463. package/lib/views/mcp/ScimProvisioning.js +173 -0
  464. package/lib/views/mcp/ServiceAgents.d.ts +46 -0
  465. package/lib/views/mcp/ServiceAgents.js +194 -0
  466. package/lib/views/mcp/TeamPolicies.d.ts +33 -0
  467. package/lib/views/mcp/TeamPolicies.js +159 -0
  468. package/lib/views/mcp/ToolAccess.d.ts +60 -0
  469. package/lib/views/mcp/ToolAccess.js +101 -0
  470. package/lib/views/mcp/TraceTimeline.d.ts +81 -0
  471. package/lib/views/mcp/TraceTimeline.js +132 -0
  472. package/lib/views/mcp/format.d.ts +25 -0
  473. package/lib/views/mcp/format.js +77 -0
  474. package/lib/views/mcp/index.d.ts +34 -0
  475. package/lib/views/mcp/index.js +42 -0
  476. package/lib/views/mcp/types.d.ts +66 -0
  477. package/lib/views/mcp/types.js +5 -0
  478. package/lib/views/otel/simpleAuthStore.js +3 -0
  479. package/lib/views/secrets/SecretEdit.d.ts +5 -1
  480. package/lib/views/secrets/SecretEdit.js +5 -4
  481. package/lib/views/secrets/SecretNew.d.ts +11 -1
  482. package/lib/views/secrets/SecretNew.js +7 -3
  483. package/lib/views/secrets/Secrets.d.ts +12 -1
  484. package/lib/views/secrets/Secrets.js +2 -2
  485. package/package.json +269 -260
  486. package/scripts/generate-contents-types.py +169 -0
  487. package/scripts/generate-mcp-types.py +233 -0
  488. package/scripts/generate-orchestration-types.py +920 -0
  489. package/lib/api/iam/datasources.d.ts +0 -86
  490. package/lib/api/iam/datasources.js +0 -185
  491. package/lib/components/toolbars/index.d.ts +0 -1
  492. package/lib/models/Datasource.d.ts +0 -181
  493. package/lib/models/Datasource.js +0 -154
  494. package/lib/state/substates/DatasourceState.d.ts +0 -11
  495. package/lib/state/substates/DatasourceState.js +0 -16
  496. /package/lib/{components/toolbars/index.js → api/contents/generated.js} +0 -0
@@ -1,36 +1,17 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- /*
3
- * Copyright (c) 2023-2025 Datalayer, Inc.
4
- * Distributed under the terms of the Modified BSD License.
5
- */
6
- /*
7
- * Copyright (c) 2023-2026 Datalayer, Inc.
8
- * Distributed under the terms of the Modified BSD License.
9
- */
10
- /**
11
- * SharingEditor — inline editor for the sharing payload shape used by
12
- * `ShareAccessComponent` ACL endpoints.
13
- *
14
- * Unlike `ShareAccessComponent` (which is bound to a server-side resource
15
- * via `requestUrl`), this component edits a free-form
16
- * `{ access: { view/update/execute: { userUids, teamUids, organizationUids } } }`
17
- * blob in memory. It is intended for "create" flows where the resource does
18
- * not yet exist and the sharing payload must be POSTed alongside the rest of
19
- * the configuration.
20
- *
21
- * This is a scaffold: it currently exposes a structured JSON editor with
22
- * validation and the canonical default shape. Future iterations can replace
23
- * the textarea with the same principal-picker UI used by
24
- * `ShareAccessComponent`.
25
- */
26
2
  import { useEffect, useMemo, useState } from 'react';
27
3
  import { Box } from '@datalayer/primer-addons';
28
4
  import { FormControl, Text, Textarea } from '@primer/react';
29
5
  export const EMPTY_SHARING_PAYLOAD = {
30
6
  access: {
31
- view: { userUids: [], teamUids: [], organizationUids: [] },
32
- update: { userUids: [], teamUids: [], organizationUids: [] },
33
- execute: { userUids: [], teamUids: [], organizationUids: [] },
7
+ view: { userUids: [], teamUids: [], organizationUids: [], agentUids: [] },
8
+ update: { userUids: [], teamUids: [], organizationUids: [], agentUids: [] },
9
+ execute: {
10
+ userUids: [],
11
+ teamUids: [],
12
+ organizationUids: [],
13
+ agentUids: [],
14
+ },
34
15
  },
35
16
  };
36
17
  const stringify = (value) => {
@@ -41,7 +22,7 @@ const stringify = (value) => {
41
22
  return '{}';
42
23
  }
43
24
  };
44
- export function SharingEditor({ value, onChange, label = 'Sharing', caption = 'Edit the sharing payload. Each access level (view/update/execute) can grant access to user, team, and organization UIDs.', rows = 10, disabled = false, }) {
25
+ export function SharingEditor({ value, onChange, label = 'Sharing', caption = 'Edit the sharing payload. Each access level (view/update/execute) can grant access to user, team, organization, and agent UIDs.', rows = 10, disabled = false, }) {
45
26
  const initial = useMemo(() => stringify(value), [value]);
46
27
  const [raw, setRaw] = useState(initial);
47
28
  const [error, setError] = useState(null);
@@ -5,5 +5,6 @@ export * from '../principal/PrincipalBanner';
5
5
  export { buildPrincipalProfilePath, PrincipalDetailsOverlay, } from '../principal/PrincipalDetailsOverlay';
6
6
  export type { PrincipalDetailsOverlayProps } from '../principal/PrincipalDetailsOverlay';
7
7
  export * from '../principal/PrincipalSwitcherMenu';
8
+ export * from './sandboxSharing';
8
9
  export * from './ShareAccessComponent';
9
10
  export * from './SharingEditor';
@@ -8,5 +8,6 @@ export * from '../principal/PrincipalBadge.js';
8
8
  export * from '../principal/PrincipalBanner.js';
9
9
  export { buildPrincipalProfilePath, PrincipalDetailsOverlay, } from '../principal/PrincipalDetailsOverlay.js';
10
10
  export * from '../principal/PrincipalSwitcherMenu.js';
11
+ export * from './sandboxSharing.js';
11
12
  export * from './ShareAccessComponent.js';
12
13
  export * from './SharingEditor.js';
@@ -0,0 +1,26 @@
1
+ /**
2
+ * Where a sandbox's sharing lives.
3
+ *
4
+ * A sandbox is a runtime underneath, and Runtimes owns who it is shared with:
5
+ * `GET|PUT /api/runtimes/v1/runtimes/{name}/sharing`, answering an `access`
6
+ * document in exactly the shape `ShareAccessDialog` reads. So the dialog
7
+ * talks to Runtimes directly and there is no transport to write.
8
+ *
9
+ * The one thing worth a function of its own is **which name**. A sandbox has
10
+ * two: the handle its session holds (`sb_…`) and the runtime's own, and
11
+ * Runtimes' routes take the second. Sending the first gets a `403` that reads
12
+ * as "you are not the owner" — the confusion that made the CLI's sharing
13
+ * commands unusable until September 2026, and the reason this is written down
14
+ * once rather than spelled out at each call site.
15
+ *
16
+ * @module components/sharing/sandboxSharing
17
+ */
18
+ /**
19
+ * The sharing URL for a sandbox, or `undefined` when there is nothing to ask.
20
+ *
21
+ * Answers `undefined` rather than a broken URL for a sandbox with no runtime
22
+ * behind it — a browser or local kernel, or a binding still reserving — so a
23
+ * caller can use the answer itself to decide whether to offer sharing at all.
24
+ */
25
+ export declare const sandboxSharingUrl: (runtimesUrl: string | undefined | null, runtimeName: string | undefined | null) => string | undefined;
26
+ export default sandboxSharingUrl;
@@ -0,0 +1,41 @@
1
+ /*
2
+ * Copyright (c) 2023-2025 Datalayer, Inc.
3
+ * Distributed under the terms of the Modified BSD License.
4
+ */
5
+ /*
6
+ * Copyright (c) 2023-2026 Datalayer, Inc.
7
+ * Distributed under the terms of the Modified BSD License.
8
+ */
9
+ /**
10
+ * Where a sandbox's sharing lives.
11
+ *
12
+ * A sandbox is a runtime underneath, and Runtimes owns who it is shared with:
13
+ * `GET|PUT /api/runtimes/v1/runtimes/{name}/sharing`, answering an `access`
14
+ * document in exactly the shape `ShareAccessDialog` reads. So the dialog
15
+ * talks to Runtimes directly and there is no transport to write.
16
+ *
17
+ * The one thing worth a function of its own is **which name**. A sandbox has
18
+ * two: the handle its session holds (`sb_…`) and the runtime's own, and
19
+ * Runtimes' routes take the second. Sending the first gets a `403` that reads
20
+ * as "you are not the owner" — the confusion that made the CLI's sharing
21
+ * commands unusable until September 2026, and the reason this is written down
22
+ * once rather than spelled out at each call site.
23
+ *
24
+ * @module components/sharing/sandboxSharing
25
+ */
26
+ /**
27
+ * The sharing URL for a sandbox, or `undefined` when there is nothing to ask.
28
+ *
29
+ * Answers `undefined` rather than a broken URL for a sandbox with no runtime
30
+ * behind it — a browser or local kernel, or a binding still reserving — so a
31
+ * caller can use the answer itself to decide whether to offer sharing at all.
32
+ */
33
+ export const sandboxSharingUrl = (runtimesUrl, runtimeName) => {
34
+ const base = String(runtimesUrl ?? '').trim();
35
+ const name = String(runtimeName ?? '').trim();
36
+ if (!base || !name) {
37
+ return undefined;
38
+ }
39
+ return `${base.replace(/\/+$/, '')}/api/runtimes/v1/runtimes/${encodeURIComponent(name)}/sharing`;
40
+ };
41
+ export default sandboxSharingUrl;
@@ -0,0 +1,39 @@
1
+ /**
2
+ * A space's details: the card, and the overlay that opens it from a click on
3
+ * the space's name.
4
+ *
5
+ * Built the way {@link PrincipalDetailsOverlay} is — the name is the anchor,
6
+ * the card is shared — so a table's Owner and Space columns open the same kind
7
+ * of thing and read the same way.
8
+ *
9
+ * @module components/spaces/SpaceDetailsOverlay
10
+ */
11
+ import type { JSX } from 'react';
12
+ export type SpaceDetailsOverlayProps = {
13
+ uid?: string;
14
+ displayName: string;
15
+ handle?: string;
16
+ accountHandle?: string;
17
+ description?: string;
18
+ variant?: string;
19
+ isPublic?: boolean;
20
+ /**
21
+ * Show a route some other way than through the router of this subtree.
22
+ *
23
+ * The same escape hatch as the principal card's: an editor embedded under a
24
+ * `MemoryRouter` of its own hands the route to the view that has the
25
+ * application's routes. Left out, the route is followed with `useNavigate`.
26
+ */
27
+ onNavigate?: (path: string) => void;
28
+ };
29
+ /**
30
+ * The card of a space, on its own — its mark, identity, and the way to it.
31
+ */
32
+ export declare function SpaceDetailsCard({ uid, displayName, handle, accountHandle, description, variant, isPublic, onNavigate, }: SpaceDetailsOverlayProps): JSX.Element;
33
+ /**
34
+ * A space's details, shown from a click on its name.
35
+ *
36
+ * The name is the anchor; clicking it opens the shared {@link SpaceDetailsCard}.
37
+ */
38
+ export declare function SpaceDetailsOverlay(props: SpaceDetailsOverlayProps): JSX.Element;
39
+ export default SpaceDetailsOverlay;
@@ -0,0 +1,80 @@
1
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
+ import { ActionMenu, Box, Button, Label, Text, ThemeProvider, } from '@primer/react';
3
+ import { SpaceIcon } from '@primer/octicons-react';
4
+ import { useNavigate } from '../../hooks/index.js';
5
+ import { buildSpaceDetailsPath } from './spaceDisplayModel.js';
6
+ function normalize(value) {
7
+ return (value || '').trim();
8
+ }
9
+ /**
10
+ * The card of a space, on its own — its mark, identity, and the way to it.
11
+ */
12
+ export function SpaceDetailsCard({ uid, displayName, handle, accountHandle, description, variant, isPublic, onNavigate, }) {
13
+ const navigate = useNavigate();
14
+ const targetPath = buildSpaceDetailsPath({ accountHandle, handle });
15
+ const go = () => {
16
+ if (!targetPath) {
17
+ return;
18
+ }
19
+ if (onNavigate) {
20
+ onNavigate(targetPath);
21
+ }
22
+ else {
23
+ navigate(targetPath);
24
+ }
25
+ };
26
+ const normalizedHandle = normalize(handle);
27
+ const normalizedAccount = normalize(accountHandle).replace(/^@+/, '');
28
+ const normalizedUid = normalize(uid);
29
+ const normalizedDisplayName = normalize(displayName) || normalizedHandle || normalizedUid || 'Space';
30
+ // The address the space is reached at, as it reads in the location bar.
31
+ const address = normalizedAccount && normalizedHandle
32
+ ? `@${normalizedAccount}/${normalizedHandle}`
33
+ : normalizedHandle;
34
+ return (_jsxs(Box, { sx: { display: 'grid', gap: 3, p: 4, minWidth: 360 }, children: [_jsxs(Box, { sx: { display: 'flex', alignItems: 'center', gap: 2 }, children: [_jsx(Box, { "aria-hidden": "true", sx: {
35
+ display: 'inline-flex',
36
+ alignItems: 'center',
37
+ justifyContent: 'center',
38
+ width: 40,
39
+ height: 40,
40
+ flexShrink: 0,
41
+ borderRadius: 2,
42
+ bg: 'accent.subtle',
43
+ color: 'accent.fg',
44
+ }, children: _jsx(SpaceIcon, { size: 20 }) }), _jsxs(Box, { sx: { display: 'grid', gap: 0.5, minWidth: 0 }, children: [_jsx(Text, { sx: { fontWeight: 'semibold' }, children: normalizedDisplayName }), address ? (_jsx(Text, { sx: { fontSize: 0, color: 'fg.muted' }, children: address })) : null] })] }), _jsxs(Box, { sx: {
45
+ display: 'grid',
46
+ gridTemplateColumns: '110px 1fr',
47
+ gap: 1,
48
+ alignItems: 'baseline',
49
+ }, children: [_jsx(Text, { sx: { fontSize: 0, color: 'fg.muted' }, children: "Kind" }), _jsx(Text, { sx: { fontSize: 1 }, children: "space" }), normalizedHandle ? (_jsxs(_Fragment, { children: [_jsx(Text, { sx: { fontSize: 0, color: 'fg.muted' }, children: "Handle" }), _jsx(Text, { sx: { fontSize: 1 }, children: normalizedHandle })] })) : null, normalizedAccount ? (_jsxs(_Fragment, { children: [_jsx(Text, { sx: { fontSize: 0, color: 'fg.muted' }, children: "Account" }), _jsxs(Text, { sx: { fontSize: 1 }, children: ["@", normalizedAccount] })] })) : null, normalize(variant) ? (_jsxs(_Fragment, { children: [_jsx(Text, { sx: { fontSize: 0, color: 'fg.muted' }, children: "Variant" }), _jsx(Text, { sx: { fontSize: 1 }, children: normalize(variant) })] })) : null, typeof isPublic === 'boolean' ? (_jsxs(_Fragment, { children: [_jsx(Text, { sx: { fontSize: 0, color: 'fg.muted' }, children: "Visibility" }), _jsx(Label, { size: "small", variant: isPublic ? 'success' : 'secondary', sx: { justifySelf: 'start', width: 'fit-content' }, children: isPublic ? 'Public' : 'Private' })] })) : null, _jsx(Text, { sx: { fontSize: 0, color: 'fg.muted' }, children: "Description" }), _jsx(Text, { sx: { fontSize: 1 }, children: normalize(description) || 'N/A' }), normalizedUid ? (_jsxs(_Fragment, { children: [_jsx(Text, { sx: { fontSize: 0, color: 'fg.muted' }, children: "UID" }), _jsx(Text, { sx: { fontSize: 1 }, children: normalizedUid })] })) : null] }), _jsx(Box, { sx: { display: 'flex', justifyContent: 'flex-end', gap: 2 }, children: _jsx(Button, { size: "small", onClick: go, disabled: !targetPath, children: "View Space" }) })] }));
50
+ }
51
+ /**
52
+ * A space's details, shown from a click on its name.
53
+ *
54
+ * The name is the anchor; clicking it opens the shared {@link SpaceDetailsCard}.
55
+ */
56
+ export function SpaceDetailsOverlay(props) {
57
+ const normalizedDisplayName = normalize(props.displayName) ||
58
+ normalize(props.handle) ||
59
+ normalize(props.uid) ||
60
+ 'Space';
61
+ return (_jsx(ThemeProvider, { children: _jsxs(ActionMenu, { children: [_jsx(ActionMenu.Anchor, { children: _jsx(Box, { as: "button", type: "button", title: normalizedDisplayName, sx: {
62
+ fontWeight: 'semibold',
63
+ color: 'accent.fg',
64
+ textDecoration: 'underline',
65
+ background: 'transparent',
66
+ border: 0,
67
+ padding: 0,
68
+ margin: 0,
69
+ cursor: 'pointer',
70
+ maxWidth: '100%',
71
+ overflow: 'hidden',
72
+ textOverflow: 'ellipsis',
73
+ whiteSpace: 'nowrap',
74
+ textAlign: 'left',
75
+ ':hover': {
76
+ textDecoration: 'underline',
77
+ },
78
+ }, children: normalizedDisplayName }) }), _jsx(ActionMenu.Overlay, { width: "large", children: _jsx(SpaceDetailsCard, { ...props }) })] }) }));
79
+ }
80
+ export default SpaceDetailsOverlay;
@@ -0,0 +1,38 @@
1
+ /**
2
+ * SpaceDisplay – common display for the space a thing lives in: the space's
3
+ * name, clickable, opening a {@link SpaceDetailsOverlay} whose button goes to
4
+ * the space's page.
5
+ *
6
+ * The companion of {@link Principal}, for a table's Space column, and built
7
+ * for a table's arithmetic: a hundred rows in three spaces cost no request per
8
+ * row. A space is found, in order:
9
+ *
10
+ * 1. among the spaces the account has already loaded (`useUserSpaces`, the
11
+ * query the item tables already run, children included — which is how a
12
+ * row that knows only its item still finds its space);
13
+ * 2. in the in-memory {@link useSpaceCacheStore}, which paints a space that
14
+ * any earlier view resolved;
15
+ * 3. over the network by uid (`useSpace`) — only once the loaded list has
16
+ * answered without it, and every row naming that uid shares the request.
17
+ *
18
+ * @module components/spaces/SpaceDisplay
19
+ */
20
+ import * as React from 'react';
21
+ import { type SpaceDescriptor } from './spaceDisplayModel';
22
+ export type SpaceDisplayProps = {
23
+ /** Whatever the row knows of its space; see {@link SpaceDescriptor}. */
24
+ space: SpaceDescriptor;
25
+ /** Whether the space mark precedes the name. */
26
+ showIcon?: boolean;
27
+ iconSize?: number;
28
+ gap?: number;
29
+ /** Maximum length of the handle or uid shown before the name resolves. */
30
+ placeholderMaxLength?: number;
31
+ /** What is shown when the row names no space at all. */
32
+ emptyText?: string;
33
+ /** See {@link SpaceDetailsOverlayProps.onNavigate}. */
34
+ onNavigate?: (path: string) => void;
35
+ sx?: any;
36
+ };
37
+ export declare const SpaceDisplay: React.FC<SpaceDisplayProps>;
38
+ export default SpaceDisplay;
@@ -0,0 +1,92 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ /*
3
+ * Copyright (c) 2023-2025 Datalayer, Inc.
4
+ * Distributed under the terms of the Modified BSD License.
5
+ */
6
+ /**
7
+ * SpaceDisplay – common display for the space a thing lives in: the space's
8
+ * name, clickable, opening a {@link SpaceDetailsOverlay} whose button goes to
9
+ * the space's page.
10
+ *
11
+ * The companion of {@link Principal}, for a table's Space column, and built
12
+ * for a table's arithmetic: a hundred rows in three spaces cost no request per
13
+ * row. A space is found, in order:
14
+ *
15
+ * 1. among the spaces the account has already loaded (`useUserSpaces`, the
16
+ * query the item tables already run, children included — which is how a
17
+ * row that knows only its item still finds its space);
18
+ * 2. in the in-memory {@link useSpaceCacheStore}, which paints a space that
19
+ * any earlier view resolved;
20
+ * 3. over the network by uid (`useSpace`) — only once the loaded list has
21
+ * answered without it, and every row naming that uid shares the request.
22
+ *
23
+ * @module components/spaces/SpaceDisplay
24
+ */
25
+ import * as React from 'react';
26
+ import { Text } from '@primer/react';
27
+ import { SpaceIcon } from '@primer/octicons-react';
28
+ import { Box } from '@datalayer/primer-addons';
29
+ import { useCache } from '../../hooks/index.js';
30
+ import { useSpaceCacheStore } from '../../hooks/useSpaceCacheStore.js';
31
+ import { useIAMStore } from '../../state/index.js';
32
+ import { SpaceDetailsOverlay } from './SpaceDetailsOverlay.js';
33
+ import { findSpace, indexSpaces, resolveSpace, toCachedSpace, } from './spaceDisplayModel.js';
34
+ export const SpaceDisplay = ({ space, showIcon = true, iconSize = 16, gap = 1, placeholderMaxLength, emptyText = '—', onNavigate, sx, }) => {
35
+ const { uid, rootId, itemUid, handle, accountHandle, displayName } = space;
36
+ const { useUserSpaces, useSpace } = useCache();
37
+ const { user } = useIAMStore();
38
+ // 1. The spaces already loaded, indexed once per answer of the query.
39
+ const spacesQuery = useUserSpaces();
40
+ const index = React.useMemo(() => indexSpaces(spacesQuery.data), [spacesQuery.data]);
41
+ const listed = React.useMemo(() => toCachedSpace(findSpace(index, { uid, rootId, itemUid, handle, accountHandle })), [index, uid, rootId, itemUid, handle, accountHandle]);
42
+ // 2. A snapshot some earlier view resolved.
43
+ const givenUid = String(uid || '').trim();
44
+ const givenRootId = String(rootId || '').trim();
45
+ const cached = useSpaceCacheStore(state => {
46
+ const key = givenUid ||
47
+ listed?.uid ||
48
+ (givenRootId ? state.uidByRootId[givenRootId] : '');
49
+ return key ? state.spaces[key] : undefined;
50
+ });
51
+ const upsertSpace = useSpaceCacheStore(state => state.upsertSpace);
52
+ // 3. The network, last, and not while the list that may know it is loading.
53
+ const fetchUid = user &&
54
+ givenUid &&
55
+ !spacesQuery.isLoading &&
56
+ !listed &&
57
+ !cached?.displayName
58
+ ? givenUid
59
+ : '';
60
+ const fetchedQuery = useSpace(fetchUid);
61
+ const fetched = React.useMemo(() => toCachedSpace(fetchedQuery.data), [fetchedQuery.data]);
62
+ const found = listed ?? fetched;
63
+ const resolved = resolveSpace({
64
+ descriptor: space,
65
+ found,
66
+ cached,
67
+ placeholderMaxLength,
68
+ });
69
+ // Remember what was actually resolved — never a placeholder — so the next
70
+ // view paints it at once.
71
+ React.useEffect(() => {
72
+ if (found?.uid) {
73
+ upsertSpace(found);
74
+ }
75
+ }, [found, upsertSpace]);
76
+ const canName = Boolean(resolved.uid || resolved.handle || String(displayName || '').trim());
77
+ if (!canName) {
78
+ const waiting = Boolean(user) &&
79
+ spacesQuery.isLoading &&
80
+ Boolean(givenRootId || String(itemUid || '').trim());
81
+ return (_jsx(Text, { sx: { color: 'fg.muted', ...sx }, children: waiting ? '…' : emptyText }));
82
+ }
83
+ return (_jsxs(Box, { sx: {
84
+ display: 'inline-flex',
85
+ alignItems: 'center',
86
+ gap,
87
+ minWidth: 0,
88
+ maxWidth: '100%',
89
+ ...sx,
90
+ }, children: [showIcon ? (_jsx(Box, { as: "span", "aria-hidden": "true", sx: { display: 'inline-flex', color: 'fg.muted', flexShrink: 0 }, children: _jsx(SpaceIcon, { size: iconSize }) })) : null, _jsx(SpaceDetailsOverlay, { uid: resolved.uid, displayName: resolved.displayName, handle: resolved.handle, accountHandle: resolved.accountHandle, description: resolved.description, variant: resolved.variant, isPublic: resolved.isPublic, onNavigate: onNavigate })] }));
91
+ };
92
+ export default SpaceDisplay;
@@ -0,0 +1,4 @@
1
+ export * from './SpaceDisplay';
2
+ export { SpaceDetailsCard, SpaceDetailsOverlay } from './SpaceDetailsOverlay';
3
+ export type { SpaceDetailsOverlayProps } from './SpaceDetailsOverlay';
4
+ export * from './spaceDisplayModel';
@@ -0,0 +1,7 @@
1
+ /*
2
+ * Copyright (c) 2023-2025 Datalayer, Inc.
3
+ * Distributed under the terms of the Modified BSD License.
4
+ */
5
+ export * from './SpaceDisplay.js';
6
+ export { SpaceDetailsCard, SpaceDetailsOverlay } from './SpaceDetailsOverlay.js';
7
+ export * from './spaceDisplayModel.js';
@@ -0,0 +1,93 @@
1
+ /**
2
+ * What a space display needs to know, said without rendering anything.
3
+ *
4
+ * Apart from the components so the rules — how a row names its space, how a
5
+ * space is found among the ones already loaded, where its page is — can be
6
+ * tested without a DOM, a router or a query client.
7
+ *
8
+ * @module components/spaces/spaceDisplayModel
9
+ */
10
+ import type { CachedSpace } from '../../hooks/useSpaceCacheStore';
11
+ /**
12
+ * How a row names the space it belongs to — whatever it happens to know.
13
+ *
14
+ * Tables reach their rows by different roads, and each road knows something
15
+ * different: a table scoped to one space knows that space's uid; a row from
16
+ * the cross-space listing knows only its item, which carries its space's Solr
17
+ * id as `_root_`; a dataset knows its `spaceUid`. Any one of them is enough.
18
+ */
19
+ export type SpaceDescriptor = {
20
+ /** The space uid. */
21
+ uid?: string | null;
22
+ /** The space's Solr id, which an item carries as `_root_`. */
23
+ rootId?: string | null;
24
+ /** The uid of an item in the space, found among the loaded spaces' children. */
25
+ itemUid?: string | null;
26
+ /**
27
+ * The space handle. Handles repeat across accounts — everybody has a
28
+ * `library` — so it is matched together with `accountHandle`, and only
29
+ * when no uid was given.
30
+ */
31
+ handle?: string | null;
32
+ /** The account the space is addressed under. */
33
+ accountHandle?: string | null;
34
+ /** A name the row already has, shown until the space is resolved. */
35
+ displayName?: string | null;
36
+ };
37
+ /** Loaded spaces, looked up every way a row can name one. */
38
+ export type SpaceIndex = {
39
+ byUid: ReadonlyMap<string, unknown>;
40
+ byRootId: ReadonlyMap<string, unknown>;
41
+ byItemUid: ReadonlyMap<string, unknown>;
42
+ byAccountAndHandle: ReadonlyMap<string, unknown>;
43
+ };
44
+ /** A space as a display shows it: the cached fields, a name, and its page. */
45
+ export type ResolvedSpace = Omit<CachedSpace, 'uid' | 'updatedAt'> & {
46
+ uid?: string;
47
+ /** The space's name, or a placeholder derived from its handle or uid. */
48
+ displayName: string;
49
+ /** Where the space's page is, when both handles are known. */
50
+ path: string | null;
51
+ /** Whether the name is the space's own rather than a placeholder. */
52
+ resolved: boolean;
53
+ };
54
+ /** The uid of a space as the spacer API returns it, raw or converted. */
55
+ export declare const spaceUidOf: (space: any) => string;
56
+ /**
57
+ * The account a space is addressed under: its organization, else its owner.
58
+ *
59
+ * The same order the web application's `resolveSpaceAccountHandle` reads, so
60
+ * a link built here and a link built there go to the same page.
61
+ */
62
+ export declare const spaceAccountHandleOf: (space: any) => string;
63
+ /** A space as the cache keeps it, out of a spacer payload, raw or converted. */
64
+ export declare const toCachedSpace: (space: unknown) => CachedSpace | undefined;
65
+ /**
66
+ * Index loaded spaces by uid, Solr id, the uids of their items, and
67
+ * account/handle.
68
+ *
69
+ * Memoised on the array: a query answers with the same array until it
70
+ * refetches, so a table of a hundred rows builds the index once, not a hundred
71
+ * times.
72
+ */
73
+ export declare const indexSpaces: (spaces: readonly unknown[] | null | undefined) => SpaceIndex;
74
+ /** The loaded space a descriptor names, if any. */
75
+ export declare const findSpace: (index: SpaceIndex, descriptor: SpaceDescriptor) => unknown | undefined;
76
+ /** Where a space's page is: `/<account>/<space>`, or nothing without both. */
77
+ export declare const buildSpaceDetailsPath: ({ accountHandle, handle, }: {
78
+ accountHandle?: string | null;
79
+ handle?: string | null;
80
+ }) => string | null;
81
+ /**
82
+ * What a display shows for a descriptor, given what is known of its space.
83
+ *
84
+ * The space's own fields win over the snapshot remembered from an earlier
85
+ * view, which win over what the row said; the row's name is shown only until
86
+ * the space's own is known, and a handle or uid stands in before either.
87
+ */
88
+ export declare const resolveSpace: ({ descriptor, found, cached, placeholderMaxLength, }: {
89
+ descriptor: SpaceDescriptor;
90
+ found?: CachedSpace;
91
+ cached?: CachedSpace;
92
+ placeholderMaxLength?: number;
93
+ }) => ResolvedSpace;