@datalayer/agent-runtimes 1.0.9 → 1.0.17

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 (462) hide show
  1. package/README.md +82 -1
  2. package/lib/{AgentLexical.d.ts → AgentDocument.d.ts} +5 -5
  3. package/lib/{AgentLexical.js → AgentDocument.js} +156 -26
  4. package/lib/AgentNode.js +32 -31
  5. package/lib/AgentNotebook.js +172 -17
  6. package/lib/AppExamples2.css +47 -0
  7. package/lib/AppExamples2.d.ts +3 -0
  8. package/lib/AppExamples2.js +21 -0
  9. package/lib/{agent-lexical-main.js → agent-document-main.js} +2 -2
  10. package/lib/agents/AgentRuntimeChat.d.ts +73 -0
  11. package/lib/agents/AgentRuntimeChat.js +198 -0
  12. package/lib/api/index.d.ts +12 -0
  13. package/lib/api/index.js +46 -0
  14. package/lib/api/runtimes/checkpoints.d.ts +122 -0
  15. package/lib/api/runtimes/checkpoints.js +118 -0
  16. package/lib/api/runtimes/environments.d.ts +9 -0
  17. package/lib/api/runtimes/environments.js +29 -0
  18. package/lib/api/runtimes/healthz.d.ts +15 -0
  19. package/lib/api/runtimes/healthz.js +44 -0
  20. package/lib/api/runtimes/index.d.ts +12 -0
  21. package/lib/api/runtimes/index.js +16 -0
  22. package/lib/api/runtimes/runtimes.d.ts +138 -0
  23. package/lib/api/runtimes/runtimes.js +230 -0
  24. package/lib/api/runtimes/snapshots.d.ts +38 -0
  25. package/lib/api/runtimes/snapshots.js +82 -0
  26. package/lib/api/scheduler/index.d.ts +6 -0
  27. package/lib/api/scheduler/index.js +10 -0
  28. package/lib/api/scheduler/schedules.d.ts +85 -0
  29. package/lib/api/scheduler/schedules.js +78 -0
  30. package/lib/api/spacer/documents.d.ts +12 -0
  31. package/lib/api/spacer/documents.js +43 -0
  32. package/lib/api/spacer/healthz.d.ts +15 -0
  33. package/lib/api/spacer/healthz.js +44 -0
  34. package/lib/api/spacer/index.d.ts +15 -0
  35. package/lib/api/spacer/index.js +19 -0
  36. package/lib/api/spacer/items.d.ts +25 -0
  37. package/lib/api/spacer/items.js +55 -0
  38. package/lib/api/spacer/lexicals.d.ts +34 -0
  39. package/lib/api/spacer/lexicals.js +89 -0
  40. package/lib/api/spacer/notebooks.d.ts +34 -0
  41. package/lib/api/spacer/notebooks.js +89 -0
  42. package/lib/api/spacer/spaces.d.ts +84 -0
  43. package/lib/api/spacer/spaces.js +170 -0
  44. package/lib/api/spacer/users.d.ts +9 -0
  45. package/lib/api/spacer/users.js +29 -0
  46. package/lib/chat/Chat.d.ts +1 -1
  47. package/lib/chat/Chat.js +54 -54
  48. package/lib/chat/ChatFloating.d.ts +2 -2
  49. package/lib/chat/ChatFloating.js +136 -25
  50. package/lib/chat/ChatSidebar.js +20 -22
  51. package/lib/chat/base/ChatBase.js +468 -40
  52. package/lib/chat/display/EmptyState.js +21 -21
  53. package/lib/chat/document/EphemeralDocument.d.ts +23 -0
  54. package/lib/chat/document/EphemeralDocument.js +270 -0
  55. package/lib/chat/header/ChatHeaderBase.d.ts +12 -2
  56. package/lib/chat/header/ChatHeaderBase.js +78 -23
  57. package/lib/chat/index.d.ts +1 -0
  58. package/lib/chat/index.js +2 -0
  59. package/lib/chat/notebook/EphemeralNotebook.d.ts +24 -0
  60. package/lib/chat/notebook/EphemeralNotebook.js +252 -0
  61. package/lib/chat/prompt/InputFooter.js +4 -1
  62. package/lib/client/AgentRuntimesClient.d.ts +127 -0
  63. package/lib/client/AgentRuntimesClient.js +36 -0
  64. package/lib/client/AgentsMixin.d.ts +4 -4
  65. package/lib/client/AgentsMixin.js +35 -35
  66. package/lib/client/SdkAgentRuntimesClient.d.ts +1 -1
  67. package/lib/client/SdkAgentRuntimesClient.js +1 -1
  68. package/lib/client/mixins/RuntimesMixin.d.ts +93 -0
  69. package/lib/client/mixins/RuntimesMixin.js +229 -0
  70. package/lib/client/mixins/SpacerMixin.d.ts +210 -0
  71. package/lib/client/mixins/SpacerMixin.js +615 -0
  72. package/lib/client/utils/spacerUtils.d.ts +18 -0
  73. package/lib/client/utils/spacerUtils.js +32 -0
  74. package/lib/collaboration/DatalayerCollaboration.d.ts +13 -0
  75. package/lib/collaboration/DatalayerCollaboration.js +28 -0
  76. package/lib/collaboration/DatalayerCollaborationProvider.d.ts +58 -0
  77. package/lib/collaboration/DatalayerCollaborationProvider.js +148 -0
  78. package/lib/collaboration/index.d.ts +2 -0
  79. package/lib/collaboration/index.js +6 -0
  80. package/lib/components/AgentSummary.d.ts +19 -0
  81. package/lib/components/AgentSummary.js +89 -0
  82. package/lib/components/ToolApprovalCard.js +13 -3
  83. package/lib/components/a2ui/A2uiSurfaceComposed.d.ts +13 -0
  84. package/lib/components/a2ui/A2uiSurfaceComposed.js +110 -0
  85. package/lib/components/a2ui/index.d.ts +2 -0
  86. package/lib/components/a2ui/index.js +6 -0
  87. package/lib/components/a2ui/styles.d.ts +14 -0
  88. package/lib/components/a2ui/styles.js +142 -0
  89. package/lib/components/context/SpaceSelect.d.ts +2 -0
  90. package/lib/components/context/SpaceSelect.js +42 -0
  91. package/lib/components/flashes/FlashDisclaimer.d.ts +2 -0
  92. package/lib/components/flashes/FlashDisclaimer.js +17 -0
  93. package/lib/components/icons/ArtifactIcon.d.ts +10 -0
  94. package/lib/components/icons/ArtifactIcon.js +58 -0
  95. package/lib/components/icons/index.d.ts +1 -0
  96. package/lib/components/icons/index.js +5 -0
  97. package/lib/components/index.d.ts +5 -0
  98. package/lib/components/index.js +5 -0
  99. package/lib/components/nbgrader/NbGradesDetails.d.ts +5 -0
  100. package/lib/components/nbgrader/NbGradesDetails.js +19 -0
  101. package/lib/components/nbgrader/index.d.ts +1 -0
  102. package/lib/components/nbgrader/index.js +5 -0
  103. package/lib/components/progress/CreditsIndicator.d.ts +33 -0
  104. package/lib/components/progress/CreditsIndicator.js +23 -0
  105. package/lib/components/progress/index.d.ts +2 -0
  106. package/lib/components/progress/index.js +6 -0
  107. package/lib/components/runtimes/RuntimeCellVariables.d.ts +39 -0
  108. package/lib/components/runtimes/RuntimeCellVariables.js +172 -0
  109. package/lib/components/runtimes/RuntimeCellVariablesDialog.d.ts +37 -0
  110. package/lib/components/runtimes/RuntimeCellVariablesDialog.js +101 -0
  111. package/lib/components/runtimes/RuntimeLauncherDialog.d.ts +57 -0
  112. package/lib/components/runtimes/RuntimeLauncherDialog.js +275 -0
  113. package/lib/components/runtimes/RuntimePickerBase.d.ts +69 -0
  114. package/lib/components/runtimes/RuntimePickerBase.js +122 -0
  115. package/lib/components/runtimes/RuntimePickerCell.d.ts +34 -0
  116. package/lib/components/runtimes/RuntimePickerCell.js +104 -0
  117. package/lib/components/runtimes/RuntimePickerNotebook.d.ts +42 -0
  118. package/lib/components/runtimes/RuntimePickerNotebook.js +232 -0
  119. package/lib/components/runtimes/RuntimeReservationControl.d.ts +47 -0
  120. package/lib/components/runtimes/RuntimeReservationControl.js +42 -0
  121. package/lib/components/runtimes/RuntimeSimplePicker.d.ts +38 -0
  122. package/lib/components/runtimes/RuntimeSimplePicker.js +155 -0
  123. package/lib/components/runtimes/RuntimeTransfer.d.ts +16 -0
  124. package/lib/components/runtimes/RuntimeTransfer.js +5 -0
  125. package/lib/components/runtimes/RuntimeUtils.d.ts +17 -0
  126. package/lib/components/runtimes/RuntimeUtils.js +178 -0
  127. package/lib/components/runtimes/RuntimeVariables.d.ts +38 -0
  128. package/lib/components/runtimes/RuntimeVariables.js +75 -0
  129. package/lib/components/runtimes/index.d.ts +11 -0
  130. package/lib/components/runtimes/index.js +15 -0
  131. package/lib/components/scheduler/ScheduleMenu.d.ts +54 -0
  132. package/lib/components/scheduler/ScheduleMenu.js +154 -0
  133. package/lib/components/scheduler/index.d.ts +1 -0
  134. package/lib/components/scheduler/index.js +5 -0
  135. package/lib/components/snapshots/SandboxSnapshotMenu.d.ts +33 -0
  136. package/lib/components/snapshots/SandboxSnapshotMenu.js +169 -0
  137. package/lib/components/snapshots/index.d.ts +1 -0
  138. package/lib/components/snapshots/index.js +5 -0
  139. package/lib/components/snippets/SnippetDialog.d.ts +42 -0
  140. package/lib/components/snippets/SnippetDialog.js +42 -0
  141. package/lib/components/students/StudentItemStatus.d.ts +7 -0
  142. package/lib/components/students/StudentItemStatus.js +68 -0
  143. package/lib/components/students/index.d.ts +1 -0
  144. package/lib/components/students/index.js +5 -0
  145. package/lib/components/tokens/SpaceVariantToken.d.ts +5 -0
  146. package/lib/components/tokens/SpaceVariantToken.js +23 -0
  147. package/lib/components/tokens/index.d.ts +1 -0
  148. package/lib/components/tokens/index.js +5 -0
  149. package/lib/components/toolbars/AssignmentEditorToolbar.d.ts +4 -0
  150. package/lib/components/toolbars/AssignmentEditorToolbar.js +18 -0
  151. package/lib/components/toolbars/DocumentEditorToolbar.d.ts +2 -0
  152. package/lib/components/toolbars/DocumentEditorToolbar.js +12 -0
  153. package/lib/components/toolbars/NotebookEditorToolbar.d.ts +29 -0
  154. package/lib/components/toolbars/NotebookEditorToolbar.js +30 -0
  155. package/lib/config/AgentConfiguration.d.ts +2 -2
  156. package/lib/config/index.d.ts +1 -1
  157. package/lib/context/ContextInspector.d.ts +1 -14
  158. package/lib/context/ContextInspector.js +3 -73
  159. package/lib/context/CostUsageChart.d.ts +4 -3
  160. package/lib/context/CostUsageChart.js +236 -35
  161. package/lib/context/MessageHistory.d.ts +30 -0
  162. package/lib/context/MessageHistory.js +129 -0
  163. package/lib/context/TokenUsageChart.d.ts +4 -3
  164. package/lib/context/TokenUsageChart.js +180 -30
  165. package/lib/context/TurnGraphChart.d.ts +1 -1
  166. package/lib/context/TurnGraphChart.js +6 -6
  167. package/lib/examples/A2UiAgentExample.d.ts +22 -0
  168. package/lib/examples/A2UiAgentExample.js +442 -0
  169. package/lib/examples/A2UiComponentsGalleryExample.d.ts +3 -0
  170. package/lib/examples/A2UiComponentsGalleryExample.js +863 -0
  171. package/lib/examples/A2UiContactCardExample.js +9 -5
  172. package/lib/examples/A2UiRestaurantExample.js +23 -8
  173. package/lib/examples/A2UiViewerExample.js +75 -3
  174. package/lib/examples/AgUiAgenticExample.d.ts +1 -12
  175. package/lib/examples/AgUiAgenticExample.js +52 -8
  176. package/lib/examples/AgUiBackendToolRenderingExample.d.ts +1 -16
  177. package/lib/examples/AgUiBackendToolRenderingExample.js +32 -17
  178. package/lib/examples/AgUiHaikuGenUiExample.d.ts +1 -17
  179. package/lib/examples/AgUiHaikuGenUiExample.js +49 -33
  180. package/lib/examples/AgUiHumanInTheLoopExample.d.ts +1 -12
  181. package/lib/examples/AgUiHumanInTheLoopExample.js +21 -6
  182. package/lib/examples/AgUiSharedStateExample.d.ts +1 -14
  183. package/lib/examples/AgUiSharedStateExample.js +21 -6
  184. package/lib/examples/AgUiToolsBasedGenUiExample.d.ts +1 -14
  185. package/lib/examples/AgUiToolsBasedGenUiExample.js +21 -6
  186. package/lib/examples/AgentCheckpointsExample.d.ts +1 -1
  187. package/lib/examples/AgentCheckpointsExample.js +21 -22
  188. package/lib/examples/AgentCodemodeExample.js +3 -3
  189. package/lib/examples/AgentEvalsExample.js +8 -8
  190. package/lib/examples/AgentGuardrailsExample.js +22 -17
  191. package/lib/examples/AgentHooksExample.js +16 -57
  192. package/lib/examples/AgentInferenceProviderExample.js +8 -8
  193. package/lib/examples/AgentLoopExample.d.ts +10 -0
  194. package/lib/examples/AgentLoopExample.js +304 -0
  195. package/lib/examples/AgentMCPExample.js +9 -9
  196. package/lib/examples/AgentMemoryExample.js +6 -6
  197. package/lib/examples/AgentMonitoringExample.js +116 -46
  198. package/lib/examples/AgentNotificationsExample.js +6 -6
  199. package/lib/examples/AgentOtelExample.d.ts +3 -3
  200. package/lib/examples/AgentOtelExample.js +20 -15
  201. package/lib/examples/AgentOutputsExample.js +8 -8
  202. package/lib/examples/AgentParametersExample.js +24 -36
  203. package/lib/examples/AgentSandboxExample.js +7 -7
  204. package/lib/examples/AgentSkillsExample.js +9 -9
  205. package/lib/examples/AgentSubagentsExample.js +6 -6
  206. package/lib/examples/AgentToolApprovalsExample.js +37 -11
  207. package/lib/examples/AgentTriggersExample.js +12 -12
  208. package/lib/examples/AgentspecsExample.js +63 -41
  209. package/lib/examples/ChatCustomExample.js +23 -77
  210. package/lib/examples/ChatExample.js +15 -46
  211. package/lib/examples/LexicalAgentExample.js +43 -91
  212. package/lib/examples/LexicalAgentSidebarExample.js +45 -73
  213. package/lib/examples/NotebookAgentExample.js +52 -81
  214. package/lib/examples/NotebookAgentSidebarExample.js +43 -71
  215. package/lib/examples/NotebookCollaborationExample.js +11 -9
  216. package/lib/examples/NotebookExample.js +5 -2
  217. package/lib/examples/components/AuthRequiredView.js +1 -1
  218. package/lib/examples/components/ExampleErrorBoundary.d.ts +46 -0
  219. package/lib/examples/components/ExampleErrorBoundary.js +67 -0
  220. package/lib/examples/components/haiku/haiku-card.css +11 -0
  221. package/lib/examples/components/weather/weather-card.css +11 -0
  222. package/lib/examples/example-selector.js +3 -1
  223. package/lib/examples/hooks/useExampleAgentRuntime.d.ts +35 -0
  224. package/lib/examples/hooks/useExampleAgentRuntime.js +82 -0
  225. package/lib/examples/hooks/useSpecRenderToolResult.d.ts +30 -0
  226. package/lib/examples/hooks/useSpecRenderToolResult.js +61 -0
  227. package/lib/examples/index.d.ts +3 -1
  228. package/lib/examples/index.js +3 -1
  229. package/lib/examples/main.js +340 -93
  230. package/lib/examples/utils/a2ui.d.ts +2 -0
  231. package/lib/examples/utils/a2ui.js +97 -2
  232. package/lib/examples/utils/agentSummaryStore.d.ts +21 -0
  233. package/lib/examples/utils/agentSummaryStore.js +23 -0
  234. package/lib/examples/utils/notebooks/Empty.ipynb.json +30 -30
  235. package/lib/examples/utils/runtimeTargetStore.d.ts +9 -0
  236. package/lib/examples/utils/runtimeTargetStore.js +27 -0
  237. package/lib/examples/utils/teardownAgents.d.ts +13 -0
  238. package/lib/examples/utils/teardownAgents.js +78 -0
  239. package/lib/examples/utils/useExampleAgentRuntimesUrl.d.ts +2 -0
  240. package/lib/examples/utils/useExampleAgentRuntimesUrl.js +26 -7
  241. package/lib/examples2/CellExample.d.ts +6 -0
  242. package/lib/examples2/CellExample.js +20 -0
  243. package/lib/examples2/DatalayerNotebookExample.d.ts +16 -0
  244. package/lib/examples2/DatalayerNotebookExample.js +109 -0
  245. package/lib/examples2/NativeNavigationExample.d.ts +8 -0
  246. package/lib/examples2/NativeNavigationExample.js +97 -0
  247. package/lib/examples2/NotebookExample.d.ts +6 -0
  248. package/lib/examples2/NotebookExample.js +19 -0
  249. package/lib/examples2/NotebookMutationsKernel.d.ts +2 -0
  250. package/lib/examples2/NotebookMutationsKernel.js +105 -0
  251. package/lib/examples2/NotebookMutationsServiceManager.d.ts +2 -0
  252. package/lib/examples2/NotebookMutationsServiceManager.js +109 -0
  253. package/lib/examples2/ReactRouterExample.d.ts +6 -0
  254. package/lib/examples2/ReactRouterExample.js +175 -0
  255. package/lib/examples2/example-selector.d.ts +22 -0
  256. package/lib/examples2/example-selector.js +45 -0
  257. package/lib/examples2/index.d.ts +2 -0
  258. package/lib/examples2/index.js +6 -0
  259. package/lib/examples2/lexical-theme.css +436 -0
  260. package/lib/examples2/main.d.ts +2 -0
  261. package/lib/examples2/main.js +330 -0
  262. package/lib/examples2/notebooks/IPyWidgetsExample.ipynb.json +101 -0
  263. package/lib/examples2/notebooks/IPyWidgetsExampleWithState.ipynb.json +112 -0
  264. package/lib/examples2/notebooks/Lite.ipynb.json +128 -0
  265. package/lib/examples2/notebooks/Matplotlib.ipynb.json +137 -0
  266. package/lib/examples2/notebooks/NotebookExample1.ipynb.json +126 -0
  267. package/lib/examples2/notebooks/NotebookExample2.ipynb.json +48 -0
  268. package/lib/examples2/notebooks/NotebookOutputs.ipynb.json +49 -0
  269. package/lib/examples2/notebooks/NotebookToCExample.ipynb.json +102 -0
  270. package/lib/examples2/notebooks/OutputIPyWidgetsExample.d.ts +145 -0
  271. package/lib/examples2/notebooks/OutputIPyWidgetsExample.js +153 -0
  272. package/lib/examples2/notebooks/PyGWalker.ipynb.json +55 -0
  273. package/lib/hooks/index.d.ts +9 -1
  274. package/lib/hooks/index.js +13 -1
  275. package/lib/hooks/useAIAgentsWebSocket.d.ts +1 -1
  276. package/lib/hooks/useAIAgentsWebSocket.js +39 -3
  277. package/lib/hooks/useAgentRuntimes.d.ts +15 -3
  278. package/lib/hooks/useAgentRuntimes.js +188 -29
  279. package/lib/hooks/useAgentsCatalog.d.ts +3 -3
  280. package/lib/hooks/useAgentsCatalog.js +4 -4
  281. package/lib/hooks/useAgentsService.js +5 -5
  282. package/lib/hooks/useCellOutputshot.d.ts +4 -0
  283. package/lib/hooks/useCellOutputshot.js +25 -0
  284. package/lib/hooks/useCheckpoints.d.ts +8 -8
  285. package/lib/hooks/useCheckpoints.js +38 -28
  286. package/lib/hooks/useConfig.d.ts +1 -1
  287. package/lib/hooks/useMonitoring.d.ts +7 -5
  288. package/lib/hooks/useMonitoring.js +16 -10
  289. package/lib/hooks/useNotifications.d.ts +11 -11
  290. package/lib/hooks/useNotifications.js +1 -1
  291. package/lib/hooks/useProgressStore.d.ts +25 -0
  292. package/lib/hooks/useProgressStore.js +58 -0
  293. package/lib/hooks/useProgressTask.d.ts +9 -0
  294. package/lib/hooks/useProgressTask.js +41 -0
  295. package/lib/hooks/useProjects.d.ts +628 -0
  296. package/lib/hooks/useProjects.js +190 -0
  297. package/lib/hooks/useRuntimes.d.ts +5 -0
  298. package/lib/hooks/useRuntimes.js +34 -0
  299. package/lib/hooks/useToolApprovals.d.ts +14 -6
  300. package/lib/hooks/useToolApprovals.js +20 -1
  301. package/lib/index.d.ts +2 -1
  302. package/lib/index.js +1 -0
  303. package/lib/jupyter/exec/Python.d.ts +5 -0
  304. package/lib/jupyter/exec/Python.js +100 -0
  305. package/lib/jupyter/exec/Snippets.d.ts +105 -0
  306. package/lib/jupyter/exec/Snippets.js +101 -0
  307. package/lib/jupyter/exec/index.d.ts +2 -0
  308. package/lib/jupyter/exec/index.js +6 -0
  309. package/lib/jupyter/index.d.ts +2 -0
  310. package/lib/jupyter/index.js +6 -0
  311. package/lib/jupyter/kernelsHandler.d.ts +8 -0
  312. package/lib/jupyter/kernelsHandler.js +39 -0
  313. package/lib/mocks/models/CourseMock.d.ts +6 -0
  314. package/lib/mocks/models/CourseMock.js +29 -0
  315. package/lib/mocks/models/SpaceMock.d.ts +6 -0
  316. package/lib/mocks/models/SpaceMock.js +25 -0
  317. package/lib/models/Assignment.d.ts +7 -0
  318. package/lib/models/Assignment.js +5 -0
  319. package/lib/models/Cell.d.ts +8 -0
  320. package/lib/models/Cell.js +5 -0
  321. package/lib/models/CodeBlock.d.ts +10 -0
  322. package/lib/models/CodeBlock.js +5 -0
  323. package/lib/models/CodeSandboxSnapshot.d.ts +92 -0
  324. package/lib/models/CodeSandboxSnapshot.js +13 -0
  325. package/lib/models/CodeSandboxSnapshotDTO.d.ts +173 -0
  326. package/lib/models/CodeSandboxSnapshotDTO.js +139 -0
  327. package/lib/models/CodefeedBlocks.d.ts +7 -0
  328. package/lib/models/CodefeedBlocks.js +5 -0
  329. package/lib/models/Content.d.ts +5 -0
  330. package/lib/models/Content.js +5 -0
  331. package/lib/models/Course.d.ts +17 -0
  332. package/lib/models/Course.js +5 -0
  333. package/lib/models/Dataset.d.ts +16 -0
  334. package/lib/models/Dataset.js +5 -0
  335. package/lib/models/Document.d.ts +8 -0
  336. package/lib/models/Document.js +5 -0
  337. package/lib/models/Environment.d.ts +86 -0
  338. package/lib/models/Environment.js +5 -0
  339. package/lib/models/EnvironmentDTO.d.ts +125 -0
  340. package/lib/models/EnvironmentDTO.js +88 -0
  341. package/lib/models/Exercise.d.ts +16 -0
  342. package/lib/models/Exercise.js +5 -0
  343. package/lib/models/Item.d.ts +20 -0
  344. package/lib/models/Item.js +5 -0
  345. package/lib/models/ItemDTO.d.ts +74 -0
  346. package/lib/models/ItemDTO.js +186 -0
  347. package/lib/models/ItemType.d.ts +2 -0
  348. package/lib/models/ItemType.js +5 -0
  349. package/lib/models/Lesson.d.ts +5 -0
  350. package/lib/models/Lesson.js +5 -0
  351. package/lib/models/LexicalDTO.d.ts +155 -0
  352. package/lib/models/LexicalDTO.js +157 -0
  353. package/lib/models/Library.d.ts +10 -0
  354. package/lib/models/Library.js +5 -0
  355. package/lib/models/Notebook.d.ts +11 -0
  356. package/lib/models/Notebook.js +5 -0
  357. package/lib/models/NotebookDTO.d.ts +96 -0
  358. package/lib/models/NotebookDTO.js +153 -0
  359. package/lib/models/Page.d.ts +41 -0
  360. package/lib/models/Page.js +25 -0
  361. package/lib/models/PageTag.d.ts +19 -0
  362. package/lib/models/PageTag.js +94 -0
  363. package/lib/models/ProjectDTO.d.ts +89 -0
  364. package/lib/models/ProjectDTO.js +131 -0
  365. package/lib/models/Runtime.d.ts +160 -0
  366. package/lib/models/Runtime.js +18 -0
  367. package/lib/models/RuntimeDTO.d.ts +172 -0
  368. package/lib/models/RuntimeDTO.js +204 -0
  369. package/lib/models/Space.d.ts +35 -0
  370. package/lib/models/Space.js +66 -0
  371. package/lib/models/SpaceDTO.d.ts +334 -0
  372. package/lib/models/SpaceDTO.js +244 -0
  373. package/lib/models/SpaceItem.d.ts +10 -0
  374. package/lib/models/SpaceItem.js +5 -0
  375. package/lib/models/SpaceMember.d.ts +6 -0
  376. package/lib/models/SpaceMember.js +5 -0
  377. package/lib/models/StudentItem.d.ts +21 -0
  378. package/lib/models/StudentItem.js +5 -0
  379. package/lib/models/index.d.ts +32 -0
  380. package/lib/models/index.js +39 -0
  381. package/lib/protocols/AGUIAdapter.js +1 -1
  382. package/lib/runtimes/actions.d.ts +102 -0
  383. package/lib/runtimes/actions.js +249 -0
  384. package/lib/runtimes/apis.d.ts +273 -0
  385. package/lib/runtimes/apis.js +5 -0
  386. package/lib/runtimes/index.d.ts +5 -0
  387. package/lib/runtimes/index.js +9 -0
  388. package/lib/runtimes/settings.d.ts +15 -0
  389. package/lib/runtimes/settings.js +31 -0
  390. package/lib/runtimes/snapshots.d.ts +25 -0
  391. package/lib/runtimes/snapshots.js +150 -0
  392. package/lib/runtimes/utils.d.ts +7 -0
  393. package/lib/runtimes/utils.js +14 -0
  394. package/lib/services/DatalayerServiceManager.d.ts +23 -0
  395. package/lib/services/DatalayerServiceManager.js +90 -0
  396. package/lib/services/reconnectToRuntime.d.ts +32 -0
  397. package/lib/services/reconnectToRuntime.js +59 -0
  398. package/lib/services/sandboxServiceManagers.d.ts +31 -0
  399. package/lib/services/sandboxServiceManagers.js +57 -0
  400. package/lib/specs/agents/agents.d.ts +95 -50
  401. package/lib/specs/agents/agents.js +4037 -1669
  402. package/lib/specs/agents/index.d.ts +5 -5
  403. package/lib/specs/agents/index.js +9 -9
  404. package/lib/specs/index.d.ts +1 -0
  405. package/lib/specs/index.js +1 -0
  406. package/lib/specs/loops.d.ts +34 -0
  407. package/lib/specs/loops.js +188 -0
  408. package/lib/specs/mcpServers.d.ts +1 -0
  409. package/lib/specs/mcpServers.js +17 -0
  410. package/lib/specs/models.d.ts +4 -0
  411. package/lib/specs/models.js +30 -0
  412. package/lib/specs/skills.d.ts +1 -0
  413. package/lib/specs/skills.js +18 -0
  414. package/lib/specs/tools.d.ts +15 -0
  415. package/lib/specs/tools.js +285 -0
  416. package/lib/state/index.d.ts +4 -0
  417. package/lib/state/index.js +10 -0
  418. package/lib/state/substates/CellState.d.ts +12 -0
  419. package/lib/state/substates/CellState.js +22 -0
  420. package/lib/state/substates/DocumentState.d.ts +10 -0
  421. package/lib/state/substates/DocumentState.js +14 -0
  422. package/lib/state/substates/GradeState.d.ts +10 -0
  423. package/lib/state/substates/GradeState.js +14 -0
  424. package/lib/state/substates/JupyterLabState.d.ts +16 -0
  425. package/lib/state/substates/JupyterLabState.js +17 -0
  426. package/lib/state/substates/NbformatState.d.ts +13 -0
  427. package/lib/state/substates/NbformatState.js +16 -0
  428. package/lib/state/substates/RuntimesState.d.ts +87 -0
  429. package/lib/state/substates/RuntimesState.js +192 -0
  430. package/lib/state/substates/SpaceState.d.ts +11 -0
  431. package/lib/state/substates/SpaceState.js +16 -0
  432. package/lib/state/substates/index.d.ts +8 -0
  433. package/lib/state/substates/index.js +14 -0
  434. package/lib/stores/agentRuntimeStore.d.ts +25 -2
  435. package/lib/stores/agentRuntimeStore.js +114 -19
  436. package/lib/stories/Button.stories.d.ts +1 -1
  437. package/lib/stories/Header.stories.d.ts +3 -3
  438. package/lib/test-setup.js +10 -0
  439. package/lib/types/agents-lifecycle.d.ts +5 -5
  440. package/lib/types/agents.d.ts +6 -6
  441. package/lib/types/agentspecs.d.ts +8 -4
  442. package/lib/types/chat.d.ts +135 -3
  443. package/lib/types/config.d.ts +19 -1
  444. package/lib/types/index.d.ts +1 -0
  445. package/lib/types/index.js +1 -0
  446. package/lib/types/loops.d.ts +64 -0
  447. package/lib/types/loops.js +5 -0
  448. package/lib/types/teams.d.ts +2 -2
  449. package/lib/types/tools.d.ts +16 -0
  450. package/lib/utils/Cells.d.ts +2 -0
  451. package/lib/utils/Cells.js +28 -0
  452. package/package.json +24 -18
  453. package/scripts/codegen/generate_agents.py +96 -61
  454. package/scripts/codegen/generate_loops.py +443 -0
  455. package/scripts/codegen/generate_teams.py +4 -4
  456. package/lib/examples/A2UiComponentGalleryExample.d.ts +0 -3
  457. package/lib/examples/A2UiComponentGalleryExample.js +0 -361
  458. package/scripts/codegen/__pycache__/generate_agents.cpython-313.pyc +0 -0
  459. package/scripts/codegen/__pycache__/generate_benchmarks.cpython-313.pyc +0 -0
  460. package/scripts/codegen/__pycache__/generate_evals.cpython-313.pyc +0 -0
  461. package/scripts/codegen/__pycache__/generate_events.cpython-313.pyc +0 -0
  462. /package/lib/{agent-lexical-main.d.ts → agent-document-main.d.ts} +0 -0
@@ -0,0 +1,34 @@
1
+ import { ISessionContext } from '@jupyterlab/apputils';
2
+ import { CodeCellModel } from '@jupyterlab/cells';
3
+ import type { IMarkdownParser, IRenderMime } from '@jupyterlab/rendermime';
4
+ import { IRuntimePickerBaseProps } from './RuntimePickerBase';
5
+ /**
6
+ * {@link RuntimePickerCell} properties
7
+ */
8
+ export type IRuntimePickerCellProps = Pick<IRuntimePickerBaseProps, 'multiServiceManager' | 'preference' | 'translator'> & {
9
+ /**
10
+ * Callback to allow the user to login
11
+ */
12
+ logIn?: () => void;
13
+ /**
14
+ * Code cell model
15
+ */
16
+ model: CodeCellModel;
17
+ /**
18
+ * Document session context
19
+ */
20
+ sessionContext?: ISessionContext;
21
+ /**
22
+ * Markdown parser
23
+ */
24
+ markdownParser?: IMarkdownParser;
25
+ /**
26
+ * HTML sanitizer; if not provided the produced HTML will not be sanitized.
27
+ */
28
+ sanitizer?: IRenderMime.ISanitizer;
29
+ };
30
+ /**
31
+ * Runtime picker component for a cell.
32
+ */
33
+ export declare function RuntimePickerCell(props: IRuntimePickerCellProps): JSX.Element;
34
+ export default RuntimePickerCell;
@@ -0,0 +1,104 @@
1
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
+ /*
3
+ * Copyright (c) 2025-2026 Datalayer, Inc.
4
+ * Distributed under the terms of the Modified BSD License.
5
+ */
6
+ import { useCallback, useEffect, useMemo, useState } from 'react';
7
+ import { nullTranslator } from '@jupyterlab/translation';
8
+ import { ActionList } from '@primer/react';
9
+ import { CloudUploadIcon } from '@datalayer/icons-react';
10
+ import { useCoreStore, useIAMStore } from '../../state/substates';
11
+ import { isRuntimeRemote } from '../../runtimes';
12
+ import { RuntimeSnippetsFacade } from '../../jupyter';
13
+ import { ExternalTokenSilentLogin } from '@datalayer/core/lib/components/iam';
14
+ import { SnippetDialog } from '../../components/snippets/SnippetDialog';
15
+ import { RuntimeLauncherDialog } from './RuntimeLauncherDialog';
16
+ import { RuntimePickerBase } from './RuntimePickerBase';
17
+ import { RuntimeCellVariablesDialog } from './RuntimeCellVariablesDialog';
18
+ /**
19
+ * Runtime picker component for a cell.
20
+ */
21
+ export function RuntimePickerCell(props) {
22
+ const { logIn, markdownParser, model, preference, sanitizer, multiServiceManager, sessionContext, translator, } = props;
23
+ const { token } = useIAMStore();
24
+ const { configuration } = useCoreStore();
25
+ const [isForeign, setIsForeign] = useState(false);
26
+ const [hasCellRuntime, setHasCellRuntime] = useState(false);
27
+ const [isKernelDialogOpen, setIsKernelDialogOpen] = useState(false);
28
+ const [isVariableDialogOpen, setIsVariableDialogOpen] = useState(false);
29
+ const [language, setLanguage] = useState('');
30
+ const [snippets, setSnippets] = useState([]);
31
+ const [isSnippetDialogOpen, setIsSnippetDialogOpen] = useState(false);
32
+ const trans = useMemo(() => (translator ?? nullTranslator).load('jupyterlab'), [translator]);
33
+ useEffect(() => {
34
+ const updateState = (model) => {
35
+ const datalayerMeta = model.getMetadata('datalayer') ?? {};
36
+ const runtime = datalayerMeta.kernel;
37
+ setIsForeign(!!runtime);
38
+ setHasCellRuntime(runtime?.params?.notebook === false);
39
+ const newSnippets = new Array();
40
+ if (runtime) {
41
+ const spec = multiServiceManager.remote?.environments
42
+ .get()
43
+ .find(env => env.name === runtime.name);
44
+ setLanguage(spec?.language ?? '');
45
+ if (spec?.snippets) {
46
+ newSnippets.push(...spec.snippets);
47
+ }
48
+ }
49
+ setSnippets(newSnippets);
50
+ };
51
+ updateState(model);
52
+ model.metadataChanged.connect(updateState);
53
+ return () => {
54
+ model.metadataChanged.disconnect(updateState);
55
+ };
56
+ }, [model]);
57
+ const filterKernel = useCallback((desc) => {
58
+ return (!!desc.kernelId &&
59
+ isRuntimeRemote(desc.location) &&
60
+ (!preference?.language || desc.language === preference?.language));
61
+ }, [preference]);
62
+ const setSelectedRuntimeDesc = useCallback((kernel) => {
63
+ const datalayerMeta = model.getMetadata('datalayer') ?? {
64
+ runtime: undefined,
65
+ };
66
+ if (!kernel) {
67
+ delete datalayerMeta.kernel;
68
+ model.setMetadata('datalayer', datalayerMeta);
69
+ }
70
+ else {
71
+ model.setMetadata('datalayer', Object.assign(datalayerMeta, { kernel }));
72
+ }
73
+ }, [model]);
74
+ const closeVariableDialog = useCallback(() => {
75
+ setIsVariableDialogOpen(false);
76
+ }, []);
77
+ const openVariableDialog = useCallback(() => {
78
+ setIsVariableDialogOpen(true);
79
+ }, []);
80
+ const closeSnippetDialog = useCallback(() => {
81
+ setIsSnippetDialogOpen(false);
82
+ }, []);
83
+ const openSnippetDialog = useCallback(() => {
84
+ setIsSnippetDialogOpen(true);
85
+ }, []);
86
+ const setCell = useCallback(() => {
87
+ setIsKernelDialogOpen(true);
88
+ }, []);
89
+ const onStartRemote = useCallback((desc) => {
90
+ if (desc) {
91
+ desc.params = {
92
+ ...desc.params,
93
+ notebook: false,
94
+ };
95
+ setSelectedRuntimeDesc(desc);
96
+ }
97
+ setIsKernelDialogOpen(false);
98
+ }, [setSelectedRuntimeDesc]);
99
+ const datalayerMeta = model.getMetadata('datalayer') ?? {};
100
+ return (_jsxs(_Fragment, { children: [_jsx(RuntimePickerBase, { display: "menu", filterRuntime: filterKernel, preference: preference, multiServiceManager: multiServiceManager, runtimeDesc: datalayerMeta.kernel ? datalayerMeta.kernel : undefined, setRuntimeDesc: setSelectedRuntimeDesc, variant: 'cell', preActions: _jsxs(ActionList.Item, { disabled: !multiServiceManager.remote, onSelect: setCell, selected: hasCellRuntime, title: !multiServiceManager.remote
101
+ ? 'You are not connected with Datalayer.'
102
+ : 'Assign a new temporary Runtime on each Cell execution.', children: [_jsx(ActionList.LeadingVisual, { children: _jsx(CloudUploadIcon, {}) }), trans.__('Assign a Cell Runtime')] }), postActions: token || !logIn ? (_jsxs(_Fragment, { children: [RuntimeSnippetsFacade.supports(preference?.language ?? '') && (_jsx(ActionList.Item, { onSelect: openVariableDialog, disabled: !isForeign, title: trans.__('Define variables to transfer between the document kernel and the cell kernel.'), children: trans.__('Define Cell Variables Transfer') })), !configuration.whiteLabel && (_jsx(ActionList.Item, { onSelect: openSnippetDialog, disabled: snippets.length === 0, title: trans.__('Inject a code snippet at the end of the cell.'), children: trans.__('Inject Code Snippet') }))] })) : (_jsx(ActionList.Item, { onSelect: props.logIn, title: 'Connect to the Runtime provider.', children: _jsx(ExternalTokenSilentLogin, { message: "Connect to the Runtime provider" }) })), translator: translator }), isVariableDialogOpen && (_jsx(RuntimeCellVariablesDialog, { model: model, onClose: closeVariableDialog, preference: preference, sessionContext: sessionContext, translator: translator })), isSnippetDialogOpen && (_jsx(SnippetDialog, { language: language, model: model, snippets: snippets, onClose: closeSnippetDialog, markdownParser: markdownParser, sanitizer: sanitizer })), isKernelDialogOpen && (_jsx(RuntimeLauncherDialog, { manager: multiServiceManager.remote, onSubmit: onStartRemote, startRuntime: 'defer', submitLabel: "Assign", markdownParser: markdownParser, sanitizer: sanitizer }))] }));
103
+ }
104
+ export default RuntimePickerCell;
@@ -0,0 +1,42 @@
1
+ import { ITranslator } from '@jupyterlab/translation';
2
+ import { CommandRegistry } from '@lumino/commands';
3
+ import type { IMultiServiceManager, IDatalayerSessionContext } from '../../runtimes';
4
+ import { RuntimeTransfer } from './RuntimeTransfer';
5
+ /**
6
+ * {@link RuntimePickerNotebook} properties
7
+ */
8
+ export interface IRuntimePickerNotebookProps {
9
+ /**
10
+ * Callback to allow the user to login
11
+ */
12
+ logIn?: () => void;
13
+ /**
14
+ * Document session context
15
+ */
16
+ sessionContext: IDatalayerSessionContext;
17
+ /**
18
+ * Multi service manager
19
+ */
20
+ multiServiceManager: IMultiServiceManager;
21
+ /**
22
+ * Set the selected kernel
23
+ */
24
+ setValue: (v: RuntimeTransfer | Error) => void;
25
+ /**
26
+ * Close the dialog
27
+ */
28
+ close: () => void;
29
+ /**
30
+ * Command registry
31
+ */
32
+ commands: CommandRegistry;
33
+ /**
34
+ * Application translator
35
+ */
36
+ translator?: ITranslator;
37
+ }
38
+ /**
39
+ * Runtime Picker components for a Notebook.
40
+ */
41
+ export declare function RuntimePickerNotebook(props: IRuntimePickerNotebookProps): JSX.Element;
42
+ export default RuntimePickerNotebook;
@@ -0,0 +1,232 @@
1
+ import { Fragment as _Fragment, jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ /*
3
+ * Copyright (c) 2025-2026 Datalayer, Inc.
4
+ * Distributed under the terms of the Modified BSD License.
5
+ */
6
+ import { useCallback, useEffect, useState } from 'react';
7
+ import { ActionList, FormControl, ToggleSwitch, Tooltip, IconButton, } from '@primer/react';
8
+ import { Box } from '@datalayer/primer-addons';
9
+ import { AlertIcon } from '@primer/octicons-react';
10
+ import { JSONExt } from '@lumino/coreutils';
11
+ import { KernelExecutor } from '@datalayer/jupyter-react';
12
+ import { RuntimeSnippetsFacade } from '../../jupyter';
13
+ import { ExternalTokenSilentLogin } from '@datalayer/core/lib/components/iam';
14
+ import { useCoreStore, useIAMStore } from '../../state/substates';
15
+ import { RuntimeReservationControl, MAXIMAL_RUNTIME_TIME_RESERVATION_MINUTES, } from './RuntimeReservationControl';
16
+ import { RuntimeVariables } from './RuntimeVariables';
17
+ import { RuntimePickerBase } from './RuntimePickerBase';
18
+ /**
19
+ * Runtime Picker components for a Notebook.
20
+ */
21
+ export function RuntimePickerNotebook(props) {
22
+ const { multiServiceManager, sessionContext, setValue, translator } = props;
23
+ const { configuration } = useCoreStore();
24
+ const { credits, refreshCredits, token, user } = useIAMStore();
25
+ const [selectedRuntimeDesc, setSelectedRuntimeDesc] = useState();
26
+ const [timeLimit, setTimeLimit] = useState(10);
27
+ const [userStorage, setUserStorage] = useState(false);
28
+ const [canTransferFrom, setTransferFrom] = useState(false);
29
+ const [canTransferTo, setTransferTo] = useState(false);
30
+ const [transferVariables, setTransferVariables] = useState(false);
31
+ const [hasLoadedVariables, setHasLoadedVariables] = useState(false);
32
+ const [kernelVariables, setRuntimeVariables] = useState();
33
+ const [toTransfer, setToTransfer] = useState([]);
34
+ useEffect(() => {
35
+ refreshCredits();
36
+ }, []);
37
+ useEffect(() => {
38
+ const specs = sessionContext.specsManager.specs?.kernelspecs;
39
+ if (sessionContext.session?.kernel?.name && specs) {
40
+ const spec = Object.values(specs).find(spec => spec?.name === sessionContext.session.kernel.name);
41
+ if (spec) {
42
+ setSelectedRuntimeDesc({
43
+ name: spec.name,
44
+ kernelId: sessionContext.session.kernel.id,
45
+ location: sessionContext.location,
46
+ language: spec.language,
47
+ displayName: sessionContext.kernelDisplayName,
48
+ });
49
+ setTransferFrom(RuntimeSnippetsFacade.supports(spec.language));
50
+ }
51
+ }
52
+ }, [sessionContext]);
53
+ const listRuntimeVariables = useCallback(async () => {
54
+ if (hasLoadedVariables) {
55
+ return Promise.resolve();
56
+ }
57
+ setHasLoadedVariables(true);
58
+ const connection = sessionContext.session.kernel;
59
+ const spec = sessionContext.specsManager.specs.kernelspecs[connection.model.name];
60
+ const snippets = new RuntimeSnippetsFacade(spec.language);
61
+ const outputs = await new KernelExecutor({ connection }).execute(snippets.listVariables());
62
+ const content = outputs.get(0).data['text/plain'];
63
+ if (content) {
64
+ setRuntimeVariables(JSON.parse(
65
+ // We need to remove the quotes prior to parsing.
66
+ content.slice(1, content.length - 1)));
67
+ if (toTransfer.length) {
68
+ const candidates = Object.keys(kernelVariables ?? {});
69
+ setToTransfer(toTransfer.filter(n => candidates.includes(n)));
70
+ }
71
+ else {
72
+ // By default select all variables.
73
+ setToTransfer(Object.keys(kernelVariables ?? {}));
74
+ }
75
+ }
76
+ else {
77
+ setRuntimeVariables({});
78
+ }
79
+ }, [hasLoadedVariables, kernelVariables, toTransfer]);
80
+ const setSelectedVariables = useCallback((l) => {
81
+ if (!JSONExt.deepEqual(toTransfer, l)) {
82
+ setToTransfer(l);
83
+ }
84
+ }, [toTransfer]);
85
+ const setTransferVariable = useCallback((value) => {
86
+ if (transferVariables !== value) {
87
+ if (value) {
88
+ listRuntimeVariables().catch(error => {
89
+ console.error('Failed to list the runtime variable', error);
90
+ setHasLoadedVariables(false);
91
+ });
92
+ }
93
+ setTransferVariables(value);
94
+ }
95
+ }, [transferVariables]);
96
+ const setRuntimeDesc = useCallback((runtimeDesc) => {
97
+ if (!runtimeDesc) {
98
+ if (selectedRuntimeDesc) {
99
+ setSelectedRuntimeDesc(undefined);
100
+ setTransferTo(false);
101
+ }
102
+ return;
103
+ }
104
+ if (selectedRuntimeDesc?.displayName !== runtimeDesc.displayName ||
105
+ selectedRuntimeDesc?.kernelId !== runtimeDesc.kernelId) {
106
+ setSelectedRuntimeDesc({ ...runtimeDesc });
107
+ setTransferTo(RuntimeSnippetsFacade.supports(runtimeDesc.language));
108
+ }
109
+ }, [selectedRuntimeDesc]);
110
+ const handleUserStorageChange = useCallback((e) => {
111
+ e.preventDefault();
112
+ setUserStorage(!userStorage);
113
+ }, [userStorage]);
114
+ useEffect(() => {
115
+ const resolvedBurningRate = selectedRuntimeDesc?.burningRate ??
116
+ multiServiceManager.remote?.environments
117
+ .get()
118
+ .find(env => env.name === selectedRuntimeDesc?.name)?.burning_rate;
119
+ const includedRuns = user?.subscription?.usage?.included_runs ??
120
+ user?.subscription?.included_runs;
121
+ const currentRuns = user?.subscription?.usage?.current_runs ??
122
+ user?.subscription?.current_runs ??
123
+ user?.subscription?.used_runs;
124
+ const hasKnownRunAllowance = typeof includedRuns === 'number';
125
+ const hasRemainingRuns = hasKnownRunAllowance &&
126
+ typeof currentRuns === 'number' &&
127
+ includedRuns > 0 &&
128
+ currentRuns < includedRuns;
129
+ const hasKnownCredits = typeof credits?.available === 'number';
130
+ const maxMinutes = selectedRuntimeDesc?.location === 'remote' && resolvedBurningRate
131
+ ? Math.floor((credits?.available ?? 0) / resolvedBurningRate / 60.0)
132
+ : undefined;
133
+ const effectiveTimeLimit = selectedRuntimeDesc?.location === 'remote'
134
+ ? Math.max(1, Math.min(timeLimit, maxMinutes && maxMinutes > 0 ? maxMinutes : 10))
135
+ : timeLimit;
136
+ const creditsLimit = selectedRuntimeDesc?.location === 'remote' && resolvedBurningRate
137
+ ? Math.min(effectiveTimeLimit, MAXIMAL_RUNTIME_TIME_RESERVATION_MINUTES) *
138
+ resolvedBurningRate *
139
+ 60
140
+ : undefined;
141
+ const requiresRuntimeStart = !!selectedRuntimeDesc && !selectedRuntimeDesc.kernelId;
142
+ if (requiresRuntimeStart && selectedRuntimeDesc.location === 'remote') {
143
+ if (!resolvedBurningRate || !Number.isFinite(resolvedBurningRate)) {
144
+ setValue({ runtime: null, selectedVariables: toTransfer });
145
+ return;
146
+ }
147
+ if (hasKnownCredits &&
148
+ hasKnownRunAllowance &&
149
+ !hasRemainingRuns &&
150
+ (!creditsLimit || creditsLimit <= 0)) {
151
+ setValue({ runtime: null, selectedVariables: toTransfer });
152
+ return;
153
+ }
154
+ }
155
+ setValue({
156
+ runtime: selectedRuntimeDesc
157
+ ? {
158
+ environmentName: ['browser', 'remote'].includes(selectedRuntimeDesc.location)
159
+ ? `${selectedRuntimeDesc.location}-${selectedRuntimeDesc.name}`
160
+ : selectedRuntimeDesc.name,
161
+ id: selectedRuntimeDesc.kernelId,
162
+ creditsLimit,
163
+ capabilities: userStorage ? ['user_storage'] : undefined,
164
+ }
165
+ : null,
166
+ selectedVariables: toTransfer,
167
+ });
168
+ }, [
169
+ selectedRuntimeDesc,
170
+ userStorage,
171
+ toTransfer,
172
+ timeLimit,
173
+ multiServiceManager.remote,
174
+ credits?.available,
175
+ user,
176
+ ]);
177
+ const { kernelPreference: { canStart }, } = sessionContext;
178
+ const resolvedBurningRate = selectedRuntimeDesc?.burningRate ??
179
+ multiServiceManager.remote?.environments
180
+ .get()
181
+ .find(env => env.name === selectedRuntimeDesc?.name)?.burning_rate;
182
+ const maxFromCredits = resolvedBurningRate
183
+ ? Math.floor((credits?.available ?? 0) / resolvedBurningRate / 60.0)
184
+ : -1;
185
+ const includedRuns = user?.subscription?.usage?.included_runs ??
186
+ user?.subscription?.included_runs;
187
+ const currentRuns = user?.subscription?.usage?.current_runs ??
188
+ user?.subscription?.current_runs ??
189
+ user?.subscription?.used_runs;
190
+ const hasKnownRunAllowance = typeof includedRuns === 'number';
191
+ const hasRemainingRuns = hasKnownRunAllowance &&
192
+ typeof currentRuns === 'number' &&
193
+ includedRuns > 0 &&
194
+ currentRuns < includedRuns;
195
+ const hasKnownCredits = typeof credits?.available === 'number';
196
+ const effectiveMaxMinutes = selectedRuntimeDesc?.location === 'remote'
197
+ ? hasKnownCredits && hasKnownRunAllowance && !hasRemainingRuns
198
+ ? Math.max(1, maxFromCredits)
199
+ : Math.max(10, maxFromCredits > 0 ? maxFromCredits : 0)
200
+ : Math.max(1, maxFromCredits);
201
+ const outOfCredits = hasKnownCredits &&
202
+ hasKnownRunAllowance &&
203
+ !hasRemainingRuns &&
204
+ maxFromCredits < Number.EPSILON;
205
+ return (_jsxs(Box, { as: "form", className: "dla-Runtimes-picker", children: [_jsx(Box, { sx: { padding: 'var(--stack-padding-condensed) 0' }, children: _jsx(RuntimePickerBase, { display: "radio", disabled: canStart === false, preference: {
206
+ id: sessionContext.session?.id,
207
+ kernelDisplayName: sessionContext.kernelPreference.shouldStart
208
+ ? sessionContext.kernelDisplayName
209
+ : undefined,
210
+ }, sessionContext: sessionContext, multiServiceManager: multiServiceManager, translator: translator, runtimeDesc: selectedRuntimeDesc, setRuntimeDesc: setRuntimeDesc, postActions: token || !props.logIn ? (
211
+ /*
212
+ <Button
213
+ variant="default"
214
+ onClick={e => {
215
+ e.preventDefault();
216
+ commands.execute(CommandIDs.launchRemoteRuntime);
217
+ close();
218
+ }}
219
+ >
220
+ Launch a New Runtime
221
+ </Button>
222
+ */
223
+ _jsx(_Fragment, {})) : (_jsx(ActionList.Item, { onSelect: props.logIn, title: 'Connect to Runtime provider.', children: _jsx(ExternalTokenSilentLogin, { message: "Connect to the Runtime provider" }) })) }) }), !selectedRuntimeDesc?.kernelId &&
224
+ selectedRuntimeDesc?.location === 'remote' && (_jsxs(_Fragment, { children: [_jsx(RuntimeReservationControl, { disabled: outOfCredits || selectedRuntimeDesc?.location !== 'remote', label: 'Time reservation', max: effectiveMaxMinutes, time: timeLimit, onTimeChange: setTimeLimit, error: outOfCredits && maxFromCredits >= 0
225
+ ? 'You must add credits to your account.'
226
+ : timeLimit === 0
227
+ ? 'You must set a time limit.'
228
+ : undefined, burningRate: selectedRuntimeDesc.burningRate }), !configuration.whiteLabel && (_jsxs(FormControl, { disabled: !!selectedRuntimeDesc?.kernelId ||
229
+ selectedRuntimeDesc?.location !== 'remote', layout: "horizontal", children: [_jsxs(FormControl.Label, { id: "user-storage-picker-label", children: ["User storage", _jsx(Tooltip, { text: "The runtime will be slower to start.", direction: "e", style: { marginLeft: 3 }, children: _jsx(IconButton, { icon: AlertIcon, "aria-label": "", variant: "invisible" }) })] }), _jsx(ToggleSwitch, { disabled: !!selectedRuntimeDesc?.kernelId ||
230
+ selectedRuntimeDesc?.location !== 'remote', checked: userStorage, size: "small", onClick: handleUserStorageChange, "aria-labelledby": "user-storage-picker-label" })] }))] })), canTransferFrom && canTransferTo && (_jsx(RuntimeVariables, { selectedVariables: toTransfer, setSelectVariable: setSelectedVariables, transferVariables: transferVariables, setTransferVariable: setTransferVariable, kernelVariables: kernelVariables, translator: translator }))] }));
231
+ }
232
+ export default RuntimePickerNotebook;
@@ -0,0 +1,47 @@
1
+ /**
2
+ * Maximal time reservable for a runtime in minutes.
3
+ *
4
+ * TODO this should be configurable
5
+ */
6
+ export declare const MAXIMAL_RUNTIME_TIME_RESERVATION_MINUTES: number;
7
+ /**
8
+ * Time control properties
9
+ */
10
+ export interface IKernelReservationControlProps {
11
+ /**
12
+ * Callback on add credits button
13
+ */
14
+ addCredits?: () => void;
15
+ /**
16
+ * Disabled state
17
+ */
18
+ disabled?: boolean;
19
+ /**
20
+ * Control error message
21
+ */
22
+ error?: string;
23
+ /**
24
+ * Control label
25
+ */
26
+ label: string;
27
+ /**
28
+ * Maximal time
29
+ */
30
+ max: number;
31
+ /**
32
+ * Callback when time value changes
33
+ */
34
+ onTimeChange: (value: number) => void;
35
+ /**
36
+ * Time control value
37
+ */
38
+ time: number;
39
+ /**
40
+ * Burning rate
41
+ */
42
+ burningRate?: number;
43
+ }
44
+ /**
45
+ * Runtime reservation control
46
+ */
47
+ export declare function RuntimeReservationControl(props: IKernelReservationControlProps): JSX.Element;
@@ -0,0 +1,42 @@
1
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
+ /*
3
+ * Copyright (c) 2025-2026 Datalayer, Inc.
4
+ * Distributed under the terms of the Modified BSD License.
5
+ */
6
+ import { FormControl, IconButton, Text, TextInput } from '@primer/react';
7
+ import { Box } from '@datalayer/primer-addons';
8
+ import { PlusIcon } from '@primer/octicons-react';
9
+ import { Slider } from '@datalayer/primer-addons';
10
+ /**
11
+ * Maximal time reservable for a runtime in minutes.
12
+ *
13
+ * TODO this should be configurable
14
+ */
15
+ export const MAXIMAL_RUNTIME_TIME_RESERVATION_MINUTES = 24 * 60;
16
+ /**
17
+ * Runtime reservation control
18
+ */
19
+ export function RuntimeReservationControl(props) {
20
+ const { addCredits, burningRate, disabled, error, label, max: maxProps, onTimeChange, time, } = props;
21
+ const max = Math.max(1, Math.min(maxProps, MAXIMAL_RUNTIME_TIME_RESERVATION_MINUTES));
22
+ const displayedTime = Number.isFinite(time)
23
+ ? Math.min(max, Math.max(1, time))
24
+ : 1;
25
+ const handleTimeChange = (valueOrEvent) => {
26
+ const rawValue = typeof valueOrEvent === 'number'
27
+ ? valueOrEvent
28
+ : parseFloat(valueOrEvent?.target?.value);
29
+ if (Number.isFinite(rawValue)) {
30
+ onTimeChange(Math.min(max, Math.max(1, rawValue)));
31
+ }
32
+ };
33
+ // Temporary workaround to not show disabled components.
34
+ const hidden = disabled;
35
+ return !hidden ? (_jsxs(FormControl, { disabled: disabled, sx: { paddingBottom: 'var(--stack-padding-condensed)' }, children: [_jsx(FormControl.Label, { children: label }), _jsxs(Box, { style: {
36
+ alignItems: 'center',
37
+ display: 'grid',
38
+ gridTemplateColumns: 'max-content 1fr max-content max-content',
39
+ gridGap: 'var(--stack-gap-condensed)',
40
+ width: '100%',
41
+ }, children: [_jsx(Slider, { step: 1, min: 1, max: max, value: displayedTime, onChange: handleTimeChange, disabled: disabled, label: "", displayValue: false }), _jsx(TextInput, { type: "number", step: "1", min: "1", max: max, disabled: disabled, value: displayedTime.toFixed(2), onChange: handleTimeChange }), (max === 0 || max > Number.EPSILON) && (_jsxs(_Fragment, { children: [_jsxs(Text, { children: ["out of ", maxProps, " available minutes"] }), addCredits && (_jsx(IconButton, { icon: PlusIcon, "aria-label": "Add credits", onClick: () => addCredits() }))] }))] }), _jsxs(FormControl.Caption, { children: ["Maximum execution time that can be consumed by the runtime. It must be less than ", (MAXIMAL_RUNTIME_TIME_RESERVATION_MINUTES / 60).toFixed(0), ' ', "hours.", burningRate && (_jsxs(_Fragment, { children: [_jsx("br", {}), `With the current value, the runtime execution will consume at most ${(time * burningRate * 60).toFixed(2)} credits.`] }))] }), error && (_jsx(FormControl.Validation, { variant: "error", children: error }))] })) : (_jsx(_Fragment, {}));
42
+ }
@@ -0,0 +1,38 @@
1
+ import { Session } from '@jupyterlab/services';
2
+ import { IRuntimeModel, type IRuntimeDesc } from '../../models';
3
+ export interface IRuntimeAssignOptions {
4
+ /**
5
+ * Runtime description.
6
+ */
7
+ runtimeDesc?: IRuntimeDesc;
8
+ /**
9
+ * Runtime model to connect to.
10
+ */
11
+ runtimeModel?: IRuntimeModel;
12
+ /**
13
+ * Whether to transfer the state to the runtime model.
14
+ */
15
+ transferState?: boolean;
16
+ }
17
+ /**
18
+ * Runtime picker component properties.
19
+ */
20
+ interface IRuntimeSimplePickerProps {
21
+ /**
22
+ * Runtime assignment callback.
23
+ */
24
+ assignRuntime: (options: IRuntimeAssignOptions) => Promise<void>;
25
+ /**
26
+ * Connection to the active runtime.
27
+ */
28
+ sessionConnection?: Session.ISessionConnection;
29
+ /**
30
+ * Whether browser runtime is available.
31
+ */
32
+ browserRuntimeAvailable?: boolean;
33
+ }
34
+ /**
35
+ * Runtime simple picker component.
36
+ */
37
+ export declare function RuntimeSimplePicker(props: IRuntimeSimplePickerProps): JSX.Element;
38
+ export {};