@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
@@ -0,0 +1,119 @@
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
+ * An organization's service agents: agents that are principals rather than
11
+ * a person's proxy.
12
+ *
13
+ * A connected agent is a grant — somebody's authority, narrowed to one
14
+ * client, dying with their account. A service agent is the other kind: it
15
+ * belongs to the organization, holds its own key, spends under its own name
16
+ * and outlives whoever set it up. An organization whose nightly pipeline
17
+ * runs on an engineer's grant loses the pipeline when the engineer leaves,
18
+ * and its spend shows against somebody who was asleep.
19
+ *
20
+ * **The key exists in one response and no other.** IAM stores a hash of it,
21
+ * so no later read can return it — `create` and `rotate` carry it and
22
+ * `list` never does. Anything rendering it must say so in the same breath,
23
+ * because somebody who does not know stores nothing and rotates an hour
24
+ * later.
25
+ *
26
+ * @module api/iam/serviceAgents
27
+ */
28
+ import { requestDatalayerAPI } from '../DatalayerApi.js';
29
+ import { API_BASE_PATHS, DEFAULT_SERVICE_URLS } from '../constants.js';
30
+ /**
31
+ * What a service agent may be granted.
32
+ *
33
+ * A subset of the OAuth scopes, and deliberately not all of them: the ones
34
+ * about a *person* — reading their profile, acting as them — mean nothing
35
+ * for a principal that is not one, and IAM refuses them. Offering one would
36
+ * invite somebody to grant something that silently does nothing.
37
+ */
38
+ export const SERVICE_AGENT_SCOPES = [
39
+ 'runtimes:read',
40
+ 'runtimes:write',
41
+ 'data:read',
42
+ 'sandboxes:manage',
43
+ ];
44
+ const fromWire = (agent) => ({
45
+ uid: agent.uid,
46
+ name: agent.name ?? '',
47
+ description: agent.description ?? '',
48
+ teamUid: agent.team_uid ?? '',
49
+ scopes: agent.scopes ?? '',
50
+ revoked: Boolean(agent.revoked),
51
+ createdBy: agent.created_by ?? '',
52
+ createdAt: agent.created_at ?? null,
53
+ keyRotatedAt: agent.key_rotated_at ?? null,
54
+ });
55
+ const withKey = (agent) => ({
56
+ ...fromWire(agent),
57
+ key: agent.key ?? '',
58
+ });
59
+ const agentsUrl = (baseUrl, orgUid, suffix = '') => `${baseUrl}${API_BASE_PATHS.IAM}/organizations/${encodeURIComponent(orgUid)}` +
60
+ `/mcp-service-agents${suffix}`;
61
+ /**
62
+ * One organization's service agents, revoked ones included.
63
+ *
64
+ * Included because hiding them makes a revoked agent invisible to whoever
65
+ * is deciding whether it is still needed, while its audit rows still name
66
+ * it. Any member of the organization may read this; only owners may write.
67
+ */
68
+ export const listServiceAgents = async (token, orgUid, baseUrl = DEFAULT_SERVICE_URLS.IAM) => {
69
+ const response = await requestDatalayerAPI({
70
+ url: agentsUrl(baseUrl, orgUid),
71
+ method: 'GET',
72
+ token,
73
+ });
74
+ return (response.agents ?? []).map(fromWire);
75
+ };
76
+ /**
77
+ * Create one. **The key is in this answer and in no other.**
78
+ *
79
+ * Scopes are sent as the array the caller holds; IAM joins and validates
80
+ * them, and refuses one that is not grantable to a principal that is not a
81
+ * person.
82
+ */
83
+ export const createServiceAgent = async (token, orgUid, agent, baseUrl = DEFAULT_SERVICE_URLS.IAM) => {
84
+ const response = await requestDatalayerAPI({
85
+ url: agentsUrl(baseUrl, orgUid),
86
+ method: 'POST',
87
+ token,
88
+ body: {
89
+ name: agent.name,
90
+ scopes: agent.scopes,
91
+ description: agent.description ?? '',
92
+ team_uid: agent.teamUid ?? '',
93
+ },
94
+ });
95
+ return withKey(response.agent ?? { uid: '' });
96
+ };
97
+ /**
98
+ * Replace the agent's key. The old one stops working with this call.
99
+ *
100
+ * No grace period, which is the point of rotating: a leaked key that still
101
+ * works for an hour is a leaked key that still works.
102
+ */
103
+ export const rotateServiceAgentKey = async (token, orgUid, agentUid, baseUrl = DEFAULT_SERVICE_URLS.IAM) => {
104
+ const response = await requestDatalayerAPI({
105
+ url: agentsUrl(baseUrl, orgUid, `/${encodeURIComponent(agentUid)}/rotate`),
106
+ method: 'POST',
107
+ token,
108
+ });
109
+ return withKey(response.agent ?? { uid: agentUid });
110
+ };
111
+ /** Stop the agent, keeping it readable for its audit. */
112
+ export const revokeServiceAgent = async (token, orgUid, agentUid, baseUrl = DEFAULT_SERVICE_URLS.IAM) => {
113
+ const response = await requestDatalayerAPI({
114
+ url: agentsUrl(baseUrl, orgUid, `/${encodeURIComponent(agentUid)}/revoke`),
115
+ method: 'POST',
116
+ token,
117
+ });
118
+ return fromWire(response.agent ?? { uid: agentUid });
119
+ };
@@ -0,0 +1,38 @@
1
+ /** Where a claim carries the trial's own key. */
2
+ export declare const TRIAL_TOKEN_HEADER = "X-Datalayer-Trial-Token";
3
+ /** What a visitor may try here, if anything. */
4
+ export interface TrialOffer {
5
+ offered: boolean;
6
+ /** The one benchmark a trial may run. */
7
+ evalsetId: string;
8
+ /** The credits it may spend. */
9
+ credits: number;
10
+ /** How long it lives, in seconds. */
11
+ ttlSeconds: number;
12
+ }
13
+ export interface Trial {
14
+ id: string;
15
+ /** The uid the trial's work is owned by, which is the trial's own. */
16
+ ownerUid: string;
17
+ state: 'open' | 'claimed' | 'expired';
18
+ evalsetId: string;
19
+ creditsLimit: number | null;
20
+ creditsSpent: number;
21
+ expiresAt: string | null;
22
+ claimedByUid: string;
23
+ claimedAt: string | null;
24
+ }
25
+ /** A trial and the key that acts as it. The key is answered once. */
26
+ export interface IssuedTrial {
27
+ trial: Trial;
28
+ token: string;
29
+ }
30
+ /**
31
+ * Whether this deployment lets a visitor try a benchmark, and which one.
32
+ * Unauthenticated: it is what a public page asks before it offers the run.
33
+ */
34
+ export declare const getTrialOffer: (baseUrl?: string) => Promise<TrialOffer>;
35
+ /** Take a trial. Unauthenticated, rate limited, and refused where none are offered. */
36
+ export declare const createTrial: (baseUrl?: string) => Promise<IssuedTrial>;
37
+ /** The trial a key acts as: what it has left, and how long it has. */
38
+ export declare const getCurrentTrial: (trialToken: string, baseUrl?: string) => Promise<Trial>;
@@ -0,0 +1,66 @@
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
+ * The anonymous trial: running the public benchmark before signing up
11
+ * (BENCHMARK.md, B2-14).
12
+ *
13
+ * A visitor with no account asks for a trial and gets a principal of its
14
+ * own with one benchmark it may run, a few credits and a short expiry. The
15
+ * work they make is owned by that principal, so when they sign up it is
16
+ * given to them rather than lost — `claimTrial` in the evals client moves
17
+ * it, and the trial's own key has to be presented alongside their new one.
18
+ *
19
+ * A deployment that has not named a public benchmark offers no trials, and
20
+ * `getTrialOffer` says so: a page asks before it shows the button.
21
+ *
22
+ * @module api/iam/trials
23
+ */
24
+ import { requestDatalayerAPI } from '../DatalayerApi.js';
25
+ import { API_BASE_PATHS, DEFAULT_SERVICE_URLS } from '../constants.js';
26
+ /** Where a claim carries the trial's own key. */
27
+ export const TRIAL_TOKEN_HEADER = 'X-Datalayer-Trial-Token';
28
+ const trialsUrl = (baseUrl, suffix = '') => `${baseUrl}${API_BASE_PATHS.IAM}/trials${suffix}`;
29
+ const asTrial = (wire) => ({
30
+ id: wire.id,
31
+ ownerUid: wire.owner_uid ?? wire.id,
32
+ state: wire.state ?? 'open',
33
+ evalsetId: wire.evalset_id ?? '',
34
+ creditsLimit: wire.credits_limit ?? null,
35
+ creditsSpent: wire.credits_spent ?? 0,
36
+ expiresAt: wire.expires_at ?? null,
37
+ claimedByUid: wire.claimed_by_uid ?? '',
38
+ claimedAt: wire.claimed_at ?? null,
39
+ });
40
+ /**
41
+ * Whether this deployment lets a visitor try a benchmark, and which one.
42
+ * Unauthenticated: it is what a public page asks before it offers the run.
43
+ */
44
+ export const getTrialOffer = async (baseUrl = DEFAULT_SERVICE_URLS.IAM) => {
45
+ const response = await requestDatalayerAPI({ url: trialsUrl(baseUrl, '/offer'), method: 'GET' });
46
+ return {
47
+ offered: !!response.offered,
48
+ evalsetId: response.evalset_id ?? '',
49
+ credits: response.credits ?? 0,
50
+ ttlSeconds: response.ttl_seconds ?? 0,
51
+ };
52
+ };
53
+ /** Take a trial. Unauthenticated, rate limited, and refused where none are offered. */
54
+ export const createTrial = async (baseUrl = DEFAULT_SERVICE_URLS.IAM) => {
55
+ const response = await requestDatalayerAPI({ url: trialsUrl(baseUrl), method: 'POST' });
56
+ return { trial: asTrial(response.trial), token: response.token };
57
+ };
58
+ /** The trial a key acts as: what it has left, and how long it has. */
59
+ export const getCurrentTrial = async (trialToken, baseUrl = DEFAULT_SERVICE_URLS.IAM) => {
60
+ const response = await requestDatalayerAPI({
61
+ url: trialsUrl(baseUrl, '/me'),
62
+ method: 'GET',
63
+ token: trialToken,
64
+ });
65
+ return asTrial(response.trial);
66
+ };
@@ -6,8 +6,15 @@
6
6
  *
7
7
  * @module @datalayer/core/api
8
8
  */
9
- export { requestDatalayerAPI, RunResponseError, NetworkError, } from './DatalayerApi';
9
+ export { requestDatalayerAPI, requestDatalayerAPIWithResponse, RunResponseError, NetworkError, TokenExpiredError, } from './DatalayerApi';
10
10
  export type { IRequestDatalayerAPIOptions } from './DatalayerApi';
11
+ export type { IDatalayerAPIResponse } from './DatalayerApi';
11
12
  export * as iam from './iam';
13
+ export * as contents from './contents';
14
+ export * as evals from './evals';
15
+ export * as mcp from './mcp';
16
+ export * as orchestration from './orchestration';
12
17
  export * as otel from './otel';
18
+ export * as scheduler from './scheduler';
19
+ export * as spacer from './spacer';
13
20
  export * from '../api/DatalayerApi';
package/lib/api/index.js CHANGED
@@ -11,8 +11,14 @@
11
11
  * @module @datalayer/core/api
12
12
  */
13
13
  // Base client exports
14
- export { requestDatalayerAPI, RunResponseError, NetworkError, } from './DatalayerApi.js';
14
+ export { requestDatalayerAPI, requestDatalayerAPIWithResponse, RunResponseError, NetworkError, TokenExpiredError, } from './DatalayerApi.js';
15
15
  // Domain-organized API exports
16
16
  export * as iam from './iam/index.js';
17
+ export * as contents from './contents/index.js';
18
+ export * as evals from './evals/index.js';
19
+ export * as mcp from './mcp/index.js';
20
+ export * as orchestration from './orchestration/index.js';
17
21
  export * as otel from './otel/index.js';
22
+ export * as scheduler from './scheduler/index.js';
23
+ export * as spacer from './spacer/index.js';
18
24
  export * from '../api/DatalayerApi.js';
@@ -0,0 +1,37 @@
1
+ import type { McpAuditEvent } from '../../models/McpAuditEvent';
2
+ import type { McpBinding } from '../../models/McpBinding';
3
+ import type { McpTask } from '../../models/McpTask';
4
+ /** A connected client, as the dashboard shows it, with its last call. */
5
+ export interface McpActiveClient {
6
+ clientId: string;
7
+ clientName?: string | null;
8
+ /** The IAM grant behind the connection, what **Disconnect** revokes. */
9
+ grantUid?: string | null;
10
+ scopes?: string[];
11
+ connectedAt?: string | null;
12
+ lastCall?: McpAuditEvent | null;
13
+ }
14
+ /** Today's counts for the caller, or for the organization. */
15
+ export interface McpActivityCounts {
16
+ calls: number;
17
+ refusals: number;
18
+ tasks: number;
19
+ /** Credits spent by agents today. */
20
+ credits: number;
21
+ }
22
+ export interface McpActivity {
23
+ /** The moment the answer was assembled; the cache is five seconds. */
24
+ at: string;
25
+ orgUid?: string | null;
26
+ clients: McpActiveClient[];
27
+ sandboxes: McpBinding[];
28
+ tasks: McpTask[];
29
+ calls: McpAuditEvent[];
30
+ today: McpActivityCounts;
31
+ }
32
+ export interface McpActivityFilters {
33
+ /** An owner's view of an organization. */
34
+ org?: string;
35
+ team?: string;
36
+ }
37
+ export declare const getMcpActivity: (token: string, filters?: McpActivityFilters, baseUrl?: string) => Promise<McpActivity>;
@@ -0,0 +1,26 @@
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
+ * "What is going on" for the caller, in one answer: the connected clients
11
+ * joined with their last call, the bound sandboxes with their state, the
12
+ * tasks in `working`/`input_required`, the last calls and today's counts.
13
+ *
14
+ * Read from `mcp-gateway`, `mcp-tasks` and `mcp-audit` with bounded
15
+ * queries, cached for five seconds per caller. An owner adds `?org=`.
16
+ *
17
+ * @module api/mcp/activity
18
+ */
19
+ import { requestDatalayerAPI } from '../DatalayerApi.js';
20
+ import { DEFAULT_SERVICE_URLS } from '../constants.js';
21
+ import { fromWire, mcpUrl } from './gateway.js';
22
+ export const getMcpActivity = async (token, filters = {}, baseUrl = DEFAULT_SERVICE_URLS.JUPYTER_MCP_SERVER) => fromWire(await requestDatalayerAPI({
23
+ url: mcpUrl(baseUrl, '/activity', { ...filters }),
24
+ method: 'GET',
25
+ token,
26
+ }));
@@ -0,0 +1,25 @@
1
+ export interface McpAlertRuleTrial {
2
+ /** Whether anything could answer the condition at all. */
3
+ readable: boolean;
4
+ /** The reading, when there was one. */
5
+ value?: number;
6
+ /** Whether the rule would fire on it. */
7
+ wouldFire: boolean;
8
+ /** Why it could not be read, or what the reader had to add. */
9
+ detail: string;
10
+ }
11
+ /**
12
+ * What this rule would see now.
13
+ *
14
+ * The organization is the caller's own, whatever is sent — testing another
15
+ * organization's numbers is reading their numbers, and the gateway refuses
16
+ * to do it rather than trusting the body.
17
+ */
18
+ export declare const testAlertRule: (token: string, rule: {
19
+ condition: string;
20
+ operator: string;
21
+ threshold: number;
22
+ windowSeconds: number;
23
+ scopeKind?: string;
24
+ scopeUid?: string;
25
+ }, mcpServerUrl?: string) => Promise<McpAlertRuleTrial>;
@@ -0,0 +1,51 @@
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
+ * Trying a rule before trusting it.
11
+ *
12
+ * The gateway answers what a rule would see *right now*, recording nothing
13
+ * and telling nobody. The question worth asking is not what the number is
14
+ * but whether the condition can be **read at all**: a rule on something
15
+ * nothing reads never fires, and never firing is exactly what a
16
+ * correctly-quiet rule looks like — so writing one and waiting teaches
17
+ * nothing, for as long as somebody is willing to wait.
18
+ *
19
+ * @module api/mcp/alerts
20
+ */
21
+ import { requestDatalayerAPI } from '../DatalayerApi.js';
22
+ import { DEFAULT_SERVICE_URLS } from '../constants.js';
23
+ import { mcpUrl } from './gateway.js';
24
+ /**
25
+ * What this rule would see now.
26
+ *
27
+ * The organization is the caller's own, whatever is sent — testing another
28
+ * organization's numbers is reading their numbers, and the gateway refuses
29
+ * to do it rather than trusting the body.
30
+ */
31
+ export const testAlertRule = async (token, rule, mcpServerUrl = DEFAULT_SERVICE_URLS.JUPYTER_MCP_SERVER) => {
32
+ const response = await requestDatalayerAPI({
33
+ url: mcpUrl(mcpServerUrl, '/alerts/test'),
34
+ method: 'POST',
35
+ token,
36
+ body: {
37
+ condition: rule.condition,
38
+ operator: rule.operator,
39
+ threshold: rule.threshold,
40
+ window_seconds: rule.windowSeconds,
41
+ scope_kind: rule.scopeKind ?? 'organization',
42
+ scope_uid: rule.scopeUid ?? '',
43
+ },
44
+ });
45
+ return {
46
+ readable: Boolean(response.readable),
47
+ value: response.value,
48
+ wouldFire: Boolean(response.would_fire),
49
+ detail: response.detail ?? '',
50
+ };
51
+ };
@@ -0,0 +1,29 @@
1
+ import type { McpAuditDecision, McpAuditEventList, McpAuditExportFormat, McpAuditOutcome } from '../../models/McpAuditEvent';
2
+ export type { McpAuditDecision, McpAuditEvent, McpAuditEventList, McpAuditExportFormat, McpAuditOutcome, McpClientInfo, } from '../../models/McpAuditEvent';
3
+ export interface McpAuditFilters {
4
+ org?: string;
5
+ team?: string;
6
+ /** The `client_id` of the agent, or a service agent's uid. */
7
+ agent?: string;
8
+ user?: string;
9
+ tool?: string;
10
+ method?: string;
11
+ decision?: McpAuditDecision;
12
+ outcome?: McpAuditOutcome;
13
+ /** ISO 8601, UTC. */
14
+ since?: string;
15
+ until?: string;
16
+ taskId?: string;
17
+ traceId?: string;
18
+ cursor?: string;
19
+ limit?: number;
20
+ }
21
+ /** One page of audit rows, newest first. */
22
+ export declare const listAuditEvents: (token: string, filters?: McpAuditFilters, baseUrl?: string) => Promise<McpAuditEventList>;
23
+ /**
24
+ * The rows matching the filters, whole, as one JSONL or CSV document.
25
+ *
26
+ * The cursor of the filters is ignored: an export is everything the filters
27
+ * select, which is what a SIEM or a spreadsheet wants.
28
+ */
29
+ export declare const exportAuditEvents: (token: string, filters?: Omit<McpAuditFilters, "cursor" | "limit">, format?: McpAuditExportFormat, baseUrl?: string) => Promise<string>;
@@ -0,0 +1,55 @@
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
+ * The audit log of the Jupyter MCP Server, for `organization_security_auditor`s
11
+ * and owners: cursor-paged, exportable as JSONL or CSV.
12
+ *
13
+ * @module api/mcp/audit
14
+ */
15
+ import { requestDatalayerAPI } from '../DatalayerApi.js';
16
+ import { DEFAULT_SERVICE_URLS } from '../constants.js';
17
+ import { fromWire, mcpUrl } from './gateway.js';
18
+ const auditQuery = (filters) => ({
19
+ org: filters.org,
20
+ team: filters.team,
21
+ agent: filters.agent,
22
+ user: filters.user,
23
+ tool: filters.tool,
24
+ method: filters.method,
25
+ decision: filters.decision,
26
+ outcome: filters.outcome,
27
+ since: filters.since,
28
+ until: filters.until,
29
+ task_id: filters.taskId,
30
+ trace_id: filters.traceId,
31
+ cursor: filters.cursor,
32
+ limit: filters.limit,
33
+ });
34
+ /** One page of audit rows, newest first. */
35
+ export const listAuditEvents = async (token, filters = {}, baseUrl = DEFAULT_SERVICE_URLS.JUPYTER_MCP_SERVER) => fromWire(await requestDatalayerAPI({
36
+ url: mcpUrl(baseUrl, '/audit', auditQuery(filters)),
37
+ method: 'GET',
38
+ token,
39
+ }));
40
+ /**
41
+ * The rows matching the filters, whole, as one JSONL or CSV document.
42
+ *
43
+ * The cursor of the filters is ignored: an export is everything the filters
44
+ * select, which is what a SIEM or a spreadsheet wants.
45
+ */
46
+ export const exportAuditEvents = async (token, filters = {}, format = 'jsonl', baseUrl = DEFAULT_SERVICE_URLS.JUPYTER_MCP_SERVER) => {
47
+ const data = await requestDatalayerAPI({
48
+ url: mcpUrl(baseUrl, '/audit', { ...auditQuery(filters), export: format }),
49
+ method: 'GET',
50
+ token,
51
+ headers: { Accept: format === 'csv' ? 'text/csv' : 'application/x-ndjson' },
52
+ responseType: 'text',
53
+ });
54
+ return typeof data === 'string' ? data : JSON.stringify(data);
55
+ };
@@ -0,0 +1,18 @@
1
+ import type { McpBinding, McpBindingKind, McpBindingList, McpBindingState } from '../../models/McpBinding';
2
+ export type { McpBinding, McpBindingKind, McpBindingList, McpBindingOnLost, McpBindingState, } from '../../models/McpBinding';
3
+ export interface McpBindingListFilters {
4
+ kind?: McpBindingKind;
5
+ state?: McpBindingState;
6
+ /** The `client_id` of the agent holding the handle. */
7
+ agent?: string;
8
+ org?: string;
9
+ cursor?: string;
10
+ limit?: number;
11
+ }
12
+ /** Every handle the caller holds, optionally of one kind. */
13
+ export declare const listBindings: (token: string, filters?: McpBindingListFilters, baseUrl?: string) => Promise<McpBindingList>;
14
+ /**
15
+ * Release a handle. For a sandbox binding this terminates the runtime; a
16
+ * notebook or toolset binding is simply forgotten.
17
+ */
18
+ export declare const terminateBinding: (token: string, bindingUid: string, baseUrl?: string) => Promise<McpBinding>;
@@ -0,0 +1,42 @@
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
+ * The caller's handles: notebooks, toolsets and the sandbox bindings that
11
+ * are their sessions.
12
+ *
13
+ * `DELETE /bindings/{uid}` on a sandbox binding terminates the runtime
14
+ * through Runtimes and ends the tasks running on it `SANDBOX_LOST`.
15
+ *
16
+ * @module api/mcp/bindings
17
+ */
18
+ import { requestDatalayerAPI } from '../DatalayerApi.js';
19
+ import { DEFAULT_SERVICE_URLS } from '../constants.js';
20
+ import { fromWire, mcpUrl } from './gateway.js';
21
+ /** Every handle the caller holds, optionally of one kind. */
22
+ export const listBindings = async (token, filters = {}, baseUrl = DEFAULT_SERVICE_URLS.JUPYTER_MCP_SERVER) => fromWire(await requestDatalayerAPI({
23
+ url: mcpUrl(baseUrl, '/bindings', {
24
+ kind: filters.kind,
25
+ state: filters.state,
26
+ agent: filters.agent,
27
+ org: filters.org,
28
+ cursor: filters.cursor,
29
+ limit: filters.limit,
30
+ }),
31
+ method: 'GET',
32
+ token,
33
+ }));
34
+ /**
35
+ * Release a handle. For a sandbox binding this terminates the runtime; a
36
+ * notebook or toolset binding is simply forgotten.
37
+ */
38
+ export const terminateBinding = async (token, bindingUid, baseUrl = DEFAULT_SERVICE_URLS.JUPYTER_MCP_SERVER) => fromWire(await requestDatalayerAPI({
39
+ url: mcpUrl(baseUrl, `/bindings/${encodeURIComponent(bindingUid)}`),
40
+ method: 'DELETE',
41
+ token,
42
+ }));
@@ -0,0 +1,25 @@
1
+ export interface McpForwardingState {
2
+ orgUid: string;
3
+ /** When a batch was last accepted by the destination. */
4
+ lastDeliveredAt?: string | null;
5
+ /** What the destination last said, when it refused. */
6
+ lastError?: string | null;
7
+ lastErrorAt?: string | null;
8
+ delivered: number;
9
+ failed: number;
10
+ /** Whether the last attempt succeeded. */
11
+ healthy: boolean;
12
+ }
13
+ export interface McpForwarding {
14
+ /**
15
+ * Whether anything has ever been delivered or attempted.
16
+ *
17
+ * Kept apart from `healthy` because "never attempted" and "working" read
18
+ * the same in a counter — and for an organization that configured a
19
+ * destination, the first is the worse state and the one that looks most
20
+ * like fine.
21
+ */
22
+ configured: boolean;
23
+ state: McpForwardingState | null;
24
+ }
25
+ export declare const getMcpForwarding: (token: string, org?: string, mcpServerUrl?: string) => Promise<McpForwarding>;
@@ -0,0 +1,46 @@
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
+ * Whether an organization's audit is reaching its own system of record.
11
+ *
12
+ * Forwarding never fails the call it describes — an audit row that could not
13
+ * be shipped is still a row, and holding up somebody's tool call because
14
+ * their SIEM is down would be the worse trade. Which means a failure is
15
+ * **invisible unless something reports it**, and a silently dropped record
16
+ * looks exactly like nothing having happened.
17
+ *
18
+ * This is that something.
19
+ *
20
+ * @module api/mcp/forwarding
21
+ */
22
+ import { requestDatalayerAPI } from '../DatalayerApi.js';
23
+ import { DEFAULT_SERVICE_URLS } from '../constants.js';
24
+ import { mcpUrl } from './gateway.js';
25
+ export const getMcpForwarding = async (token, org = '', mcpServerUrl = DEFAULT_SERVICE_URLS.JUPYTER_MCP_SERVER) => {
26
+ const response = await requestDatalayerAPI({
27
+ url: mcpUrl(mcpServerUrl, '/audit/forwarding', org ? { org } : {}),
28
+ method: 'GET',
29
+ token,
30
+ });
31
+ const wire = response.state;
32
+ return {
33
+ configured: Boolean(response.configured),
34
+ state: wire
35
+ ? {
36
+ orgUid: wire.org_uid ?? '',
37
+ lastDeliveredAt: wire.last_delivered_at ?? null,
38
+ lastError: wire.last_error ?? null,
39
+ lastErrorAt: wire.last_error_at ?? null,
40
+ delivered: wire.delivered ?? 0,
41
+ failed: wire.failed ?? 0,
42
+ healthy: Boolean(wire.healthy),
43
+ }
44
+ : null,
45
+ };
46
+ };
@@ -0,0 +1,16 @@
1
+ /** The host and scheme of the gateway, without the `/mcp` resource path. */
2
+ export declare const mcpGatewayOrigin: (mcpServerUrl?: string) => string;
3
+ export type McpQuery = Record<string, string | number | boolean | undefined | null>;
4
+ /** A REST route of the gateway, with its query string. */
5
+ export declare const mcpUrl: (mcpServerUrl: string, suffix: string, query?: McpQuery) => string;
6
+ /** A route outside the versioned API: `/api/mcp/version`, `/api/mcp/healthz`. */
7
+ export declare const mcpServiceUrl: (mcpServerUrl: string, suffix: string) => string;
8
+ /**
9
+ * A wire document as a model: snake case to camel case through the envelope,
10
+ * the preserved fields carried as they came.
11
+ */
12
+ export declare const fromWire: <T>(value: unknown) => T;
13
+ /** A request body as the gateway reads it. */
14
+ export declare const toWire: (value: unknown) => unknown;
15
+ /** For the few answers with no tool-owned field, the Contents converter as is. */
16
+ export declare const fromWireStrict: <T>(value: unknown) => T;