@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,198 @@
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 alert rules an organization asked to be told about.
11
+ *
12
+ * A rule is a condition over a number the gateway already counts, checked
13
+ * once a minute, firing at most once per condition per window. IAM stores
14
+ * them; the gateway's evaluator reads the enabled ones on its tick.
15
+ *
16
+ * **A rule the evaluator cannot evaluate is refused when it is written**,
17
+ * not at the tick. That is the whole reason the vocabulary below is
18
+ * exported: a rule that never fires because of a typo is indistinguishable
19
+ * from a condition that never happened, and the second is what somebody will
20
+ * believe. A form built from these lists cannot produce one.
21
+ *
22
+ * @module api/iam/mcpAlertRules
23
+ */
24
+ import { requestDatalayerAPI } from '../DatalayerApi.js';
25
+ import { API_BASE_PATHS, DEFAULT_SERVICE_URLS } from '../constants.js';
26
+ /**
27
+ * What a rule may be about.
28
+ *
29
+ * Each name is answered by one reader in the gateway. `measurable` says
30
+ * whether a reader exists *today*: a condition with none is counted
31
+ * unreadable and never fires, which is exactly the silence rules are written
32
+ * to avoid — so a form shows it as not yet available rather than offering it
33
+ * as though it worked.
34
+ */
35
+ export const ALERT_CONDITIONS = [
36
+ {
37
+ name: 'tasks.open',
38
+ label: 'Open tasks',
39
+ help: 'Runs still going. A backlog that is not draining.',
40
+ measurable: true,
41
+ },
42
+ {
43
+ name: 'tasks.failed',
44
+ label: 'Failed tasks',
45
+ help: 'Runs that ended badly in the window.',
46
+ measurable: true,
47
+ },
48
+ {
49
+ name: 'spend.budget_fraction',
50
+ label: 'Share of the daily budget spent',
51
+ help: 'A fraction: 0.8 is 80%. Prefer this to a credit figure — it follows ' +
52
+ 'the budget, so raising the budget does not silently move the alert.',
53
+ measurable: true,
54
+ },
55
+ {
56
+ name: 'spend.credits',
57
+ label: 'Credits spent',
58
+ help: 'An absolute figure. Raising the budget leaves this rule where it ' +
59
+ 'was, and you will be told at a share you did not choose.',
60
+ measurable: true,
61
+ },
62
+ {
63
+ name: 'audit.write_failures',
64
+ label: 'Audit writes that failed',
65
+ help: 'A gap in the record. Worth knowing about immediately.',
66
+ measurable: true,
67
+ },
68
+ {
69
+ name: 'sli.availability',
70
+ label: 'Availability',
71
+ help: 'The share of calls that did not fail, as a fraction. An organization ' +
72
+ 'with no calls has no availability, and is not alerted on.',
73
+ measurable: true,
74
+ },
75
+ {
76
+ name: 'sli.latency',
77
+ label: 'Latency (p95)',
78
+ help: 'The 95th percentile call duration, in milliseconds, read from the ' +
79
+ 'audit — which is never sampled, so it is the more complete source. ' +
80
+ 'A very busy window holds more rows than one reading takes, and is ' +
81
+ 'reported as unreadable rather than as a percentile of the newest ' +
82
+ 'slice; Test says so straight away.',
83
+ measurable: true,
84
+ },
85
+ {
86
+ name: 'sandbox.lost',
87
+ label: 'Sandboxes lost',
88
+ help: 'Sessions whose sandbox was found gone. Relaunched ones count: a ' +
89
+ 'provider losing sandboxes steadily and quietly relaunching them is ' +
90
+ 'invisible from the outside precisely because it recovers.',
91
+ measurable: true,
92
+ },
93
+ {
94
+ name: 'dependency.down',
95
+ label: 'Dependencies down',
96
+ help: 'How many of the services the gateway needs are not answering. A ' +
97
+ 'service nobody configured is not counted. This is about the ' +
98
+ 'platform rather than your organization, and is your outage anyway.',
99
+ measurable: true,
100
+ },
101
+ ];
102
+ /** How a reading is compared with the threshold. */
103
+ export const ALERT_OPERATORS = [
104
+ { name: 'gt', label: 'is above' },
105
+ { name: 'gte', label: 'is at or above' },
106
+ { name: 'lt', label: 'is below' },
107
+ { name: 'lte', label: 'is at or below' },
108
+ { name: 'eq', label: 'equals' },
109
+ ];
110
+ export const ALERT_SEVERITIES = ['info', 'warning', 'critical'];
111
+ /** What a rule is measured over. */
112
+ export const ALERT_SCOPE_KINDS = ['organization', 'team', 'user', 'agent'];
113
+ const fromWire = (rule) => ({
114
+ uid: rule.uid,
115
+ orgUid: rule.org_uid ?? '',
116
+ condition: rule.condition ?? '',
117
+ operator: rule.operator ?? 'gt',
118
+ threshold: rule.threshold ?? 0,
119
+ severity: rule.severity ?? 'warning',
120
+ windowSeconds: rule.window_seconds ?? 3600,
121
+ scopeKind: rule.scope_kind ?? 'organization',
122
+ scopeUid: rule.scope_uid ?? '',
123
+ enabled: rule.enabled ?? true,
124
+ version: rule.version ?? undefined,
125
+ });
126
+ const toWire = (rule) => ({
127
+ condition: rule.condition,
128
+ operator: rule.operator,
129
+ threshold: rule.threshold,
130
+ severity: rule.severity,
131
+ window_seconds: rule.windowSeconds,
132
+ scope_kind: rule.scopeKind,
133
+ scope_uid: rule.scopeUid,
134
+ enabled: rule.enabled,
135
+ });
136
+ /** Raised when the evaluator could not evaluate the rule as written. */
137
+ export class AlertRuleInvalid extends Error {
138
+ constructor(message) {
139
+ super(message);
140
+ this.name = 'AlertRuleInvalid';
141
+ }
142
+ }
143
+ const rulesUrl = (baseUrl, orgUid, suffix = '') => `${baseUrl}${API_BASE_PATHS.IAM}/mcp-alert-rules/${encodeURIComponent(orgUid)}${suffix}`;
144
+ export const listAlertRules = async (token, orgUid, baseUrl = DEFAULT_SERVICE_URLS.IAM) => {
145
+ const response = await requestDatalayerAPI({
146
+ url: rulesUrl(baseUrl, orgUid),
147
+ method: 'GET',
148
+ token,
149
+ });
150
+ return (response.rules ?? []).map(fromWire);
151
+ };
152
+ export const createAlertRule = async (token, orgUid, rule, baseUrl = DEFAULT_SERVICE_URLS.IAM) => {
153
+ const response = await withRefusal(() => requestDatalayerAPI({
154
+ url: rulesUrl(baseUrl, orgUid),
155
+ method: 'POST',
156
+ token,
157
+ body: toWire(rule),
158
+ }));
159
+ return fromWire(response.rule ?? { uid: '' });
160
+ };
161
+ export const updateAlertRule = async (token, orgUid, uid, rule, baseUrl = DEFAULT_SERVICE_URLS.IAM) => {
162
+ const response = await withRefusal(() => requestDatalayerAPI({
163
+ url: rulesUrl(baseUrl, orgUid, `/${encodeURIComponent(uid)}`),
164
+ method: 'PUT',
165
+ token,
166
+ body: toWire(rule),
167
+ }));
168
+ return fromWire(response.rule ?? { uid });
169
+ };
170
+ /** Remove one rule. What it watched is unwatched from the next tick. */
171
+ export const deleteAlertRule = async (token, orgUid, uid, baseUrl = DEFAULT_SERVICE_URLS.IAM) => {
172
+ await requestDatalayerAPI({
173
+ url: rulesUrl(baseUrl, orgUid, `/${encodeURIComponent(uid)}`),
174
+ method: 'DELETE',
175
+ token,
176
+ });
177
+ };
178
+ /**
179
+ * Turn IAM's refusal into one the form can show beside the field.
180
+ *
181
+ * `422` here is never a bug in the client: it is the evaluator saying it
182
+ * could not evaluate this rule, and its message names what is wrong. Losing
183
+ * it behind a generic failure would leave somebody guessing at the one thing
184
+ * the platform already knows.
185
+ */
186
+ const withRefusal = async (call) => {
187
+ try {
188
+ return await call();
189
+ }
190
+ catch (error) {
191
+ const candidate = error;
192
+ const status = candidate?.status ?? candidate?.response?.status;
193
+ if (status === 422) {
194
+ throw new AlertRuleInvalid(candidate.message || 'The evaluator could not evaluate this rule.');
195
+ }
196
+ throw error;
197
+ }
198
+ };
@@ -0,0 +1,46 @@
1
+ /** Where a copy of the audit can be shipped. */
2
+ export declare const AUDIT_DESTINATION_KINDS: readonly ["https", "s3"];
3
+ export type AuditDestinationKind = (typeof AUDIT_DESTINATION_KINDS)[number];
4
+ export interface McpAuditSettings {
5
+ /** How long rows are kept. Rows a sweep deletes do not come back. */
6
+ retentionDays?: number;
7
+ /** Empty when nothing is forwarded, which is the default. */
8
+ destinationKind: string;
9
+ destinationUrl: string;
10
+ /** The *reference* to a signing secret, never the secret. */
11
+ destinationSecretRef: string;
12
+ /** An endpoint a fired alert is POSTed to, beside the in-app notice. */
13
+ alertWebhookUrl: string;
14
+ /** A Slack incoming webhook. Its own field: Slack gets Block Kit. */
15
+ alertSlackWebhookUrl: string;
16
+ /** Who is emailed, comma-separated. */
17
+ alertEmails: string;
18
+ version?: number;
19
+ }
20
+ /** Raised when IAM refused a setting, carrying its reason. */
21
+ export declare class AuditSettingInvalid extends Error {
22
+ constructor(message: string);
23
+ }
24
+ /**
25
+ * One organization's settings, or `null` where it has none.
26
+ *
27
+ * `null` is an ordinary answer: an organization with no settings is neither
28
+ * swept nor forwarded, which is the default rather than a failure.
29
+ */
30
+ export declare const getAuditSettings: (token: string, orgUid: string, baseUrl?: string) => Promise<McpAuditSettings | null>;
31
+ /**
32
+ * Change some of the settings. Only what is passed is sent.
33
+ *
34
+ * A partial write, deliberately: IAM merges, so a page that only edits the
35
+ * alert destinations must not send an empty retention and clear it.
36
+ */
37
+ export declare const setAuditSettings: (token: string, orgUid: string, settings: Partial<{
38
+ retentionDays: number;
39
+ destinationKind: string;
40
+ destinationUrl: string;
41
+ alertWebhookUrl: string;
42
+ alertSlackWebhookUrl: string;
43
+ alertEmails: string;
44
+ }>, options?: {
45
+ expectedVersion?: number;
46
+ }, baseUrl?: string) => Promise<McpAuditSettings>;
@@ -0,0 +1,120 @@
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 audit retention, forwarding, and where alerts go.
11
+ *
12
+ * Three things on one document, and they are together because they are all
13
+ * "what this organization has decided about its own record": how long rows
14
+ * are kept, where a copy is shipped, and who is told when a rule fires.
15
+ *
16
+ * The alert destinations live here rather than on each rule because a URL
17
+ * repeated on twenty rules is nineteen places to forget when it rotates,
18
+ * and the rules would disagree about where the organization is reachable.
19
+ *
20
+ * **Writes merge, they do not replace.** Retention and forwarding are set by
21
+ * different people at different times, and making somebody resend a
22
+ * destination in order to change a retention is how a destination gets
23
+ * resent wrong.
24
+ *
25
+ * @module api/iam/mcpAuditSettings
26
+ */
27
+ import { requestDatalayerAPI } from '../DatalayerApi.js';
28
+ import { API_BASE_PATHS, DEFAULT_SERVICE_URLS } from '../constants.js';
29
+ /** Where a copy of the audit can be shipped. */
30
+ export const AUDIT_DESTINATION_KINDS = ['https', 's3'];
31
+ const fromWire = (settings) => ({
32
+ retentionDays: settings.retention_days ?? undefined,
33
+ destinationKind: settings.destination_kind ?? '',
34
+ destinationUrl: settings.destination_url ?? '',
35
+ destinationSecretRef: settings.destination_secret_ref ?? '',
36
+ alertWebhookUrl: settings.alert_webhook_url ?? '',
37
+ alertSlackWebhookUrl: settings.alert_slack_webhook_url ?? '',
38
+ alertEmails: settings.alert_emails ?? '',
39
+ version: settings.version ?? undefined,
40
+ });
41
+ /** Raised when IAM refused a setting, carrying its reason. */
42
+ export class AuditSettingInvalid extends Error {
43
+ constructor(message) {
44
+ super(message);
45
+ this.name = 'AuditSettingInvalid';
46
+ }
47
+ }
48
+ const settingsUrl = (baseUrl, orgUid, query = '') => `${baseUrl}${API_BASE_PATHS.IAM}/mcp-audit-settings/${encodeURIComponent(orgUid)}${query}`;
49
+ /**
50
+ * One organization's settings, or `null` where it has none.
51
+ *
52
+ * `null` is an ordinary answer: an organization with no settings is neither
53
+ * swept nor forwarded, which is the default rather than a failure.
54
+ */
55
+ export const getAuditSettings = async (token, orgUid, baseUrl = DEFAULT_SERVICE_URLS.IAM) => {
56
+ try {
57
+ const response = await requestDatalayerAPI({
58
+ url: settingsUrl(baseUrl, orgUid),
59
+ method: 'GET',
60
+ token,
61
+ });
62
+ return fromWire(response.settings ?? {});
63
+ }
64
+ catch (error) {
65
+ if (statusOf(error) === 404) {
66
+ return null;
67
+ }
68
+ throw error;
69
+ }
70
+ };
71
+ /**
72
+ * Change some of the settings. Only what is passed is sent.
73
+ *
74
+ * A partial write, deliberately: IAM merges, so a page that only edits the
75
+ * alert destinations must not send an empty retention and clear it.
76
+ */
77
+ export const setAuditSettings = async (token, orgUid, settings, options = {}, baseUrl = DEFAULT_SERVICE_URLS.IAM) => {
78
+ const body = {};
79
+ if (settings.retentionDays !== undefined) {
80
+ body.retention_days = settings.retentionDays;
81
+ }
82
+ if (settings.destinationKind !== undefined) {
83
+ body.destination_kind = settings.destinationKind;
84
+ }
85
+ if (settings.destinationUrl !== undefined) {
86
+ body.destination_url = settings.destinationUrl;
87
+ }
88
+ if (settings.alertWebhookUrl !== undefined) {
89
+ body.alert_webhook_url = settings.alertWebhookUrl;
90
+ }
91
+ if (settings.alertSlackWebhookUrl !== undefined) {
92
+ body.alert_slack_webhook_url = settings.alertSlackWebhookUrl;
93
+ }
94
+ if (settings.alertEmails !== undefined) {
95
+ body.alert_emails = settings.alertEmails;
96
+ }
97
+ const query = options.expectedVersion === undefined
98
+ ? ''
99
+ : `?expected_version=${encodeURIComponent(String(options.expectedVersion))}`;
100
+ try {
101
+ const response = await requestDatalayerAPI({
102
+ url: settingsUrl(baseUrl, orgUid, query),
103
+ method: 'PUT',
104
+ token,
105
+ body,
106
+ });
107
+ return fromWire(response.settings ?? {});
108
+ }
109
+ catch (error) {
110
+ if (statusOf(error) === 422) {
111
+ throw new AuditSettingInvalid(error.message ||
112
+ 'IAM refused one of these settings.');
113
+ }
114
+ throw error;
115
+ }
116
+ };
117
+ const statusOf = (error) => {
118
+ const candidate = error;
119
+ return candidate?.status ?? candidate?.response?.status;
120
+ };
@@ -0,0 +1,181 @@
1
+ /**
2
+ * Which layer a policy belongs to.
3
+ *
4
+ * The names IAM stores, exactly: `personal`, not `user`. It refuses an
5
+ * unknown scope with a `422`, so getting this wrong is not a subtle
6
+ * mis-scoping — it is every read and every write of that layer failing.
7
+ * Held against IAM's own `POLICY_SCOPES` by a test in the gateway's suite.
8
+ */
9
+ export declare const MCP_POLICY_SCOPES: readonly ["organization", "team", "personal"];
10
+ export type McpPolicyScope = (typeof MCP_POLICY_SCOPES)[number];
11
+ /**
12
+ * The rules a layer may set. Every one is optional: a layer that sets
13
+ * nothing narrows nothing.
14
+ */
15
+ export interface McpPolicyRules {
16
+ /** Tools this layer forbids. Unions across layers — a layer may add a
17
+ * denial, never lift one. */
18
+ toolDenylist?: string[];
19
+ /**
20
+ * Tools this layer permits, to the exclusion of the rest.
21
+ *
22
+ * An empty array **as written** is not an allowlist. A setting somebody
23
+ * created and has not filled in would otherwise refuse every tool in the
24
+ * organization, and the first conclusion drawn would be that the gateway
25
+ * is down.
26
+ */
27
+ toolAllowlist?: string[];
28
+ /** CIMD URLs or hostnames this layer admits. Empty is not an allowlist,
29
+ * for the same reason. */
30
+ allowedClients?: string[];
31
+ /** Calls a minute. **At least 1**: see `maxCallsPerMinute` below. */
32
+ maxCallsPerMinute?: number;
33
+ /** Credits a day, across the layer's agents. */
34
+ maxCreditsPerDay?: number;
35
+ /** Sandboxes at once. Counted per scope — a team's counts the team's. */
36
+ maxConcurrentSandboxes?: number;
37
+ /**
38
+ * GPU-hours over the last 30 days. Refuses a launch on a **GPU**
39
+ * environment; a CPU sandbox is unaffected.
40
+ *
41
+ * Not expressible as credits: the credits a GPU hour costs differ per
42
+ * environment, so neither number can be derived from the other.
43
+ *
44
+ * A trailing 30 days, not a calendar month — a limit that resets on the
45
+ * 1st can be spent twice inside 48 hours, once each side of the reset.
46
+ * And it counts **every** GPU-hour billed to the scope, agents' or not:
47
+ * the agent dimension lives on a child document in the ledger and cannot
48
+ * be a clause of the sum. A form must say both.
49
+ */
50
+ gpuHoursPerMonth?: number;
51
+ /**
52
+ * Bytes stored. Refuses **every** launch when reached, not only one that
53
+ * attaches content — every sandbox can write, so unlike the GPU-hour limit
54
+ * there is nothing to condition on.
55
+ *
56
+ * In **bytes**, not gigabytes. A number whose unit is implied is one
57
+ * somebody eventually reads as the other, and this is compared against a
58
+ * figure Contents reports in bytes; a form converts for the reader.
59
+ *
60
+ * Counted over every live object *version* rather than every object: an
61
+ * object's recorded size is its current version's, and a scope keeping a
62
+ * hundred versions of a one-gigabyte file stores a hundred gigabytes.
63
+ */
64
+ storageBytes?: number;
65
+ /**
66
+ * How long a connection may go on being refreshed before the person signs
67
+ * in and consents again. Hours, because that is the unit it is set in.
68
+ *
69
+ * Enforced by **IAM**, at its token endpoint, rather than by the gateway:
70
+ * a session's age is a fact about the grant, and the grant is IAM's. The
71
+ * gateway never sees it.
72
+ */
73
+ sessionMaxHours?: number;
74
+ /**
75
+ * Whether this organization's own identity provider may stand in for the
76
+ * consent screen, for a client it already admits.
77
+ *
78
+ * Narrow by construction, and off unless turned on: it applies only to a
79
+ * session that came through one of this organization's own enabled
80
+ * providers, only for a client named on `allowedClients`, and only when
81
+ * that list is not empty. Every other session still sees the screen.
82
+ *
83
+ * Not "require SSO": it does not stop anybody signing in another way.
84
+ */
85
+ ssoAdmitsWithoutConsent?: boolean;
86
+ }
87
+ /** A stored layer, with the version a write must carry back. */
88
+ export interface McpPolicy extends McpPolicyRules {
89
+ /**
90
+ * What was read. Passed to the next write so a change made in between is
91
+ * a `409` rather than a silent overwrite.
92
+ *
93
+ * Absent when nobody has written this layer yet.
94
+ */
95
+ version?: number;
96
+ }
97
+ /**
98
+ * Every rule name IAM will store, in the order a form should show them.
99
+ *
100
+ * Exported so a form cannot drift from what the gateway enforces: a rule
101
+ * rendered here and unknown to IAM is refused at the write, which reads to
102
+ * the person filling it in as the page being broken.
103
+ */
104
+ export declare const MCP_POLICY_RULES: readonly ["toolDenylist", "toolAllowlist", "allowedClients", "maxCallsPerMinute", "maxCreditsPerDay", "maxConcurrentSandboxes", "gpuHoursPerMonth", "storageBytes", "sessionMaxHours", "ssoAdmitsWithoutConsent"];
105
+ /** Raised when the policy changed between the read and the write. */
106
+ export declare class McpPolicyConflict extends Error {
107
+ constructor(message: string);
108
+ }
109
+ /**
110
+ * One layer's rules, or `null` where nobody has written it.
111
+ *
112
+ * `null` rather than an empty object, and the difference is the whole point:
113
+ * "this organization narrows nothing" and "this organization has no policy"
114
+ * are the same in effect and different to edit. A form that cannot tell them
115
+ * apart offers **Remove** for a policy that does not exist.
116
+ */
117
+ export declare const getMcpPolicy: (token: string, scope: McpPolicyScope, subjectUid: string, baseUrl?: string) => Promise<McpPolicy | null>;
118
+ /**
119
+ * Replace one layer's rules.
120
+ *
121
+ * Replace, not merge: a policy is read whole and small, and merging would
122
+ * leave no way to express *removing* a rule — an owner clearing a denylist
123
+ * would find it still there.
124
+ */
125
+ export declare const setMcpPolicy: (token: string, scope: McpPolicyScope, subjectUid: string, rules: McpPolicyRules, options?: {
126
+ expectedVersion?: number;
127
+ }, baseUrl?: string) => Promise<McpPolicy>;
128
+ /** Remove one layer, so it narrows nothing again. */
129
+ export declare const deleteMcpPolicy: (token: string, scope: McpPolicyScope, subjectUid: string, baseUrl?: string) => Promise<void>;
130
+ /**
131
+ * One `allowedClients` entry, as the server can describe it.
132
+ *
133
+ * Three states, kept apart deliberately — collapsing any two of them is the
134
+ * mistake this shape exists to prevent.
135
+ */
136
+ export interface AdmittedClient {
137
+ /** Exactly as it is stored, so somebody can find the line they typed. */
138
+ entry: string;
139
+ /**
140
+ * `hostname` admits every client that host publishes and has no document
141
+ * to read. `url` names one client document. `unusable` matches nothing —
142
+ * almost always a URL pasted without its scheme.
143
+ */
144
+ kind: 'hostname' | 'url' | 'unusable';
145
+ hostname?: string;
146
+ /**
147
+ * Only for `url`. `false` means the document could not be read, which is
148
+ * an entry that silently admits nobody — and reads to the vendor whose
149
+ * agent is refused as a deliberate decision.
150
+ */
151
+ resolved?: boolean;
152
+ clientName?: string;
153
+ clientHostname?: string;
154
+ clientUri?: string;
155
+ /** Every redirect goes to the reader's own machine. */
156
+ localhostOnly?: boolean;
157
+ /** Why it cannot be read, or what a hostname entry admits. */
158
+ detail?: string;
159
+ }
160
+ export interface AdmittedClients {
161
+ /**
162
+ * Whether this layer names an allowlist **at all**.
163
+ *
164
+ * `false` for an absent or empty list, and it is not a detail: an empty
165
+ * list is not an allowlist, and the gateway admits every client through a
166
+ * layer that has not filled one in. A page rendering "0 clients admitted"
167
+ * over `false` would state the opposite of what is enforced.
168
+ */
169
+ allowlisted: boolean;
170
+ clients: AdmittedClient[];
171
+ detail?: string;
172
+ }
173
+ /**
174
+ * What this layer's admitted-client entries actually name.
175
+ *
176
+ * Its own call rather than part of `getMcpPolicy`, because that one is what
177
+ * the gateway reads on every uncached tool call and this may fetch a client
178
+ * document per entry — which is exactly what must never happen on the
179
+ * enforcement path.
180
+ */
181
+ export declare const getAdmittedClients: (token: string, scope: McpPolicyScope, subjectUid: string, baseUrl?: string) => Promise<AdmittedClients>;