@datalayer/agent-runtimes 1.0.10 → 1.0.18

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 (452) 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 +429 -39
  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.js +28 -28
  65. package/lib/client/SdkAgentRuntimesClient.d.ts +1 -1
  66. package/lib/client/SdkAgentRuntimesClient.js +1 -1
  67. package/lib/client/mixins/RuntimesMixin.d.ts +93 -0
  68. package/lib/client/mixins/RuntimesMixin.js +229 -0
  69. package/lib/client/mixins/SpacerMixin.d.ts +210 -0
  70. package/lib/client/mixins/SpacerMixin.js +615 -0
  71. package/lib/client/utils/spacerUtils.d.ts +18 -0
  72. package/lib/client/utils/spacerUtils.js +32 -0
  73. package/lib/collaboration/DatalayerCollaboration.d.ts +13 -0
  74. package/lib/collaboration/DatalayerCollaboration.js +28 -0
  75. package/lib/collaboration/DatalayerCollaborationProvider.d.ts +58 -0
  76. package/lib/collaboration/DatalayerCollaborationProvider.js +148 -0
  77. package/lib/collaboration/index.d.ts +2 -0
  78. package/lib/collaboration/index.js +6 -0
  79. package/lib/components/AgentSummary.d.ts +19 -0
  80. package/lib/components/AgentSummary.js +89 -0
  81. package/lib/components/a2ui/A2uiSurfaceComposed.d.ts +13 -0
  82. package/lib/components/a2ui/A2uiSurfaceComposed.js +110 -0
  83. package/lib/components/a2ui/index.d.ts +2 -0
  84. package/lib/components/a2ui/index.js +6 -0
  85. package/lib/components/a2ui/styles.d.ts +14 -0
  86. package/lib/components/a2ui/styles.js +142 -0
  87. package/lib/components/context/SpaceSelect.d.ts +2 -0
  88. package/lib/components/context/SpaceSelect.js +42 -0
  89. package/lib/components/flashes/FlashDisclaimer.d.ts +2 -0
  90. package/lib/components/flashes/FlashDisclaimer.js +17 -0
  91. package/lib/components/icons/ArtifactIcon.d.ts +10 -0
  92. package/lib/components/icons/ArtifactIcon.js +58 -0
  93. package/lib/components/icons/index.d.ts +1 -0
  94. package/lib/components/icons/index.js +5 -0
  95. package/lib/components/index.d.ts +5 -0
  96. package/lib/components/index.js +5 -0
  97. package/lib/components/nbgrader/NbGradesDetails.d.ts +5 -0
  98. package/lib/components/nbgrader/NbGradesDetails.js +19 -0
  99. package/lib/components/nbgrader/index.d.ts +1 -0
  100. package/lib/components/nbgrader/index.js +5 -0
  101. package/lib/components/progress/CreditsIndicator.d.ts +33 -0
  102. package/lib/components/progress/CreditsIndicator.js +23 -0
  103. package/lib/components/progress/index.d.ts +2 -0
  104. package/lib/components/progress/index.js +6 -0
  105. package/lib/components/runtimes/RuntimeCellVariables.d.ts +39 -0
  106. package/lib/components/runtimes/RuntimeCellVariables.js +172 -0
  107. package/lib/components/runtimes/RuntimeCellVariablesDialog.d.ts +37 -0
  108. package/lib/components/runtimes/RuntimeCellVariablesDialog.js +101 -0
  109. package/lib/components/runtimes/RuntimeLauncherDialog.d.ts +57 -0
  110. package/lib/components/runtimes/RuntimeLauncherDialog.js +275 -0
  111. package/lib/components/runtimes/RuntimePickerBase.d.ts +69 -0
  112. package/lib/components/runtimes/RuntimePickerBase.js +122 -0
  113. package/lib/components/runtimes/RuntimePickerCell.d.ts +34 -0
  114. package/lib/components/runtimes/RuntimePickerCell.js +104 -0
  115. package/lib/components/runtimes/RuntimePickerNotebook.d.ts +42 -0
  116. package/lib/components/runtimes/RuntimePickerNotebook.js +232 -0
  117. package/lib/components/runtimes/RuntimeReservationControl.d.ts +47 -0
  118. package/lib/components/runtimes/RuntimeReservationControl.js +42 -0
  119. package/lib/components/runtimes/RuntimeSimplePicker.d.ts +38 -0
  120. package/lib/components/runtimes/RuntimeSimplePicker.js +155 -0
  121. package/lib/components/runtimes/RuntimeTransfer.d.ts +16 -0
  122. package/lib/components/runtimes/RuntimeTransfer.js +5 -0
  123. package/lib/components/runtimes/RuntimeUtils.d.ts +17 -0
  124. package/lib/components/runtimes/RuntimeUtils.js +178 -0
  125. package/lib/components/runtimes/RuntimeVariables.d.ts +38 -0
  126. package/lib/components/runtimes/RuntimeVariables.js +75 -0
  127. package/lib/components/runtimes/index.d.ts +11 -0
  128. package/lib/components/runtimes/index.js +15 -0
  129. package/lib/components/scheduler/ScheduleMenu.d.ts +54 -0
  130. package/lib/components/scheduler/ScheduleMenu.js +154 -0
  131. package/lib/components/scheduler/index.d.ts +1 -0
  132. package/lib/components/scheduler/index.js +5 -0
  133. package/lib/components/snapshots/SandboxSnapshotMenu.d.ts +33 -0
  134. package/lib/components/snapshots/SandboxSnapshotMenu.js +169 -0
  135. package/lib/components/snapshots/index.d.ts +1 -0
  136. package/lib/components/snapshots/index.js +5 -0
  137. package/lib/components/snippets/SnippetDialog.d.ts +42 -0
  138. package/lib/components/snippets/SnippetDialog.js +42 -0
  139. package/lib/components/students/StudentItemStatus.d.ts +7 -0
  140. package/lib/components/students/StudentItemStatus.js +68 -0
  141. package/lib/components/students/index.d.ts +1 -0
  142. package/lib/components/students/index.js +5 -0
  143. package/lib/components/tokens/SpaceVariantToken.d.ts +5 -0
  144. package/lib/components/tokens/SpaceVariantToken.js +23 -0
  145. package/lib/components/tokens/index.d.ts +1 -0
  146. package/lib/components/tokens/index.js +5 -0
  147. package/lib/components/toolbars/AssignmentEditorToolbar.d.ts +4 -0
  148. package/lib/components/toolbars/AssignmentEditorToolbar.js +18 -0
  149. package/lib/components/toolbars/DocumentEditorToolbar.d.ts +2 -0
  150. package/lib/components/toolbars/DocumentEditorToolbar.js +12 -0
  151. package/lib/components/toolbars/NotebookEditorToolbar.d.ts +29 -0
  152. package/lib/components/toolbars/NotebookEditorToolbar.js +30 -0
  153. package/lib/context/ContextInspector.d.ts +1 -14
  154. package/lib/context/ContextInspector.js +3 -73
  155. package/lib/context/CostUsageChart.d.ts +4 -3
  156. package/lib/context/CostUsageChart.js +236 -35
  157. package/lib/context/MessageHistory.d.ts +30 -0
  158. package/lib/context/MessageHistory.js +129 -0
  159. package/lib/context/TokenUsageChart.d.ts +4 -3
  160. package/lib/context/TokenUsageChart.js +180 -30
  161. package/lib/context/TurnGraphChart.d.ts +1 -1
  162. package/lib/context/TurnGraphChart.js +6 -6
  163. package/lib/examples/A2UiAgentExample.d.ts +22 -0
  164. package/lib/examples/A2UiAgentExample.js +442 -0
  165. package/lib/examples/A2UiComponentsGalleryExample.d.ts +3 -0
  166. package/lib/examples/A2UiComponentsGalleryExample.js +863 -0
  167. package/lib/examples/A2UiContactCardExample.js +9 -5
  168. package/lib/examples/A2UiRestaurantExample.js +23 -8
  169. package/lib/examples/A2UiViewerExample.js +75 -3
  170. package/lib/examples/AgUiAgenticExample.d.ts +1 -12
  171. package/lib/examples/AgUiAgenticExample.js +52 -8
  172. package/lib/examples/AgUiBackendToolRenderingExample.d.ts +1 -16
  173. package/lib/examples/AgUiBackendToolRenderingExample.js +32 -17
  174. package/lib/examples/AgUiHaikuGenUiExample.d.ts +1 -17
  175. package/lib/examples/AgUiHaikuGenUiExample.js +49 -33
  176. package/lib/examples/AgUiHumanInTheLoopExample.d.ts +1 -12
  177. package/lib/examples/AgUiHumanInTheLoopExample.js +21 -6
  178. package/lib/examples/AgUiSharedStateExample.d.ts +1 -14
  179. package/lib/examples/AgUiSharedStateExample.js +21 -6
  180. package/lib/examples/AgUiToolsBasedGenUiExample.d.ts +1 -14
  181. package/lib/examples/AgUiToolsBasedGenUiExample.js +21 -6
  182. package/lib/examples/AgentCheckpointsExample.d.ts +1 -1
  183. package/lib/examples/AgentCheckpointsExample.js +9 -10
  184. package/lib/examples/AgentCodeSandboxesExample.d.ts +3 -0
  185. package/lib/examples/AgentCodeSandboxesExample.js +192 -0
  186. package/lib/examples/AgentCodemodeExample.js +3 -3
  187. package/lib/examples/AgentEvalsExample.js +5 -5
  188. package/lib/examples/AgentGuardrailsExample.js +17 -12
  189. package/lib/examples/AgentHooksExample.js +14 -55
  190. package/lib/examples/AgentInferenceProviderExample.js +4 -4
  191. package/lib/examples/AgentLoopExample.d.ts +10 -0
  192. package/lib/examples/AgentLoopExample.js +304 -0
  193. package/lib/examples/AgentMCPExample.js +7 -7
  194. package/lib/examples/AgentMemoryExample.js +4 -4
  195. package/lib/examples/AgentMonitoringExample.js +114 -44
  196. package/lib/examples/AgentNotificationsExample.js +4 -4
  197. package/lib/examples/AgentOtelExample.d.ts +3 -3
  198. package/lib/examples/AgentOtelExample.js +15 -10
  199. package/lib/examples/AgentOutputsExample.js +6 -6
  200. package/lib/examples/AgentParametersExample.js +21 -33
  201. package/lib/examples/AgentSandboxExample.js +5 -5
  202. package/lib/examples/AgentSkillsExample.js +7 -7
  203. package/lib/examples/AgentSubagentsExample.js +4 -4
  204. package/lib/examples/AgentToolApprovalsExample.js +5 -5
  205. package/lib/examples/AgentTriggersExample.js +9 -9
  206. package/lib/examples/AgentspecsExample.js +63 -41
  207. package/lib/examples/ChatCustomExample.js +23 -77
  208. package/lib/examples/ChatExample.js +13 -44
  209. package/lib/examples/LexicalAgentExample.js +43 -91
  210. package/lib/examples/LexicalAgentSidebarExample.js +45 -73
  211. package/lib/examples/NotebookAgentExample.js +52 -81
  212. package/lib/examples/NotebookAgentSidebarExample.js +43 -71
  213. package/lib/examples/NotebookCollaborationExample.js +11 -9
  214. package/lib/examples/NotebookExample.js +5 -2
  215. package/lib/examples/components/AuthRequiredView.js +1 -1
  216. package/lib/examples/components/ExampleErrorBoundary.d.ts +46 -0
  217. package/lib/examples/components/ExampleErrorBoundary.js +67 -0
  218. package/lib/examples/components/haiku/haiku-card.css +11 -0
  219. package/lib/examples/components/weather/weather-card.css +11 -0
  220. package/lib/examples/example-selector.js +4 -1
  221. package/lib/examples/hooks/useExampleAgentRuntime.d.ts +35 -0
  222. package/lib/examples/hooks/useExampleAgentRuntime.js +82 -0
  223. package/lib/examples/hooks/useSpecRenderToolResult.d.ts +30 -0
  224. package/lib/examples/hooks/useSpecRenderToolResult.js +61 -0
  225. package/lib/examples/index.d.ts +4 -1
  226. package/lib/examples/index.js +4 -1
  227. package/lib/examples/main.js +340 -93
  228. package/lib/examples/utils/a2ui.d.ts +2 -0
  229. package/lib/examples/utils/a2ui.js +97 -2
  230. package/lib/examples/utils/agentSummaryStore.d.ts +21 -0
  231. package/lib/examples/utils/agentSummaryStore.js +23 -0
  232. package/lib/examples/utils/notebooks/Empty.ipynb.json +30 -30
  233. package/lib/examples/utils/runtimeTargetStore.d.ts +9 -0
  234. package/lib/examples/utils/runtimeTargetStore.js +27 -0
  235. package/lib/examples/utils/teardownAgents.d.ts +13 -0
  236. package/lib/examples/utils/teardownAgents.js +78 -0
  237. package/lib/examples/utils/useExampleAgentRuntimesUrl.d.ts +2 -0
  238. package/lib/examples/utils/useExampleAgentRuntimesUrl.js +26 -7
  239. package/lib/examples2/CellExample.d.ts +6 -0
  240. package/lib/examples2/CellExample.js +20 -0
  241. package/lib/examples2/DatalayerNotebookExample.d.ts +16 -0
  242. package/lib/examples2/DatalayerNotebookExample.js +109 -0
  243. package/lib/examples2/NativeNavigationExample.d.ts +8 -0
  244. package/lib/examples2/NativeNavigationExample.js +97 -0
  245. package/lib/examples2/NotebookExample.d.ts +6 -0
  246. package/lib/examples2/NotebookExample.js +19 -0
  247. package/lib/examples2/NotebookMutationsKernel.d.ts +2 -0
  248. package/lib/examples2/NotebookMutationsKernel.js +105 -0
  249. package/lib/examples2/NotebookMutationsServiceManager.d.ts +2 -0
  250. package/lib/examples2/NotebookMutationsServiceManager.js +109 -0
  251. package/lib/examples2/ReactRouterExample.d.ts +6 -0
  252. package/lib/examples2/ReactRouterExample.js +175 -0
  253. package/lib/examples2/example-selector.d.ts +22 -0
  254. package/lib/examples2/example-selector.js +45 -0
  255. package/lib/examples2/index.d.ts +2 -0
  256. package/lib/examples2/index.js +6 -0
  257. package/lib/examples2/lexical-theme.css +436 -0
  258. package/lib/examples2/main.d.ts +2 -0
  259. package/lib/examples2/main.js +330 -0
  260. package/lib/examples2/notebooks/IPyWidgetsExample.ipynb.json +101 -0
  261. package/lib/examples2/notebooks/IPyWidgetsExampleWithState.ipynb.json +112 -0
  262. package/lib/examples2/notebooks/Lite.ipynb.json +128 -0
  263. package/lib/examples2/notebooks/Matplotlib.ipynb.json +137 -0
  264. package/lib/examples2/notebooks/NotebookExample1.ipynb.json +126 -0
  265. package/lib/examples2/notebooks/NotebookExample2.ipynb.json +48 -0
  266. package/lib/examples2/notebooks/NotebookOutputs.ipynb.json +49 -0
  267. package/lib/examples2/notebooks/NotebookToCExample.ipynb.json +102 -0
  268. package/lib/examples2/notebooks/OutputIPyWidgetsExample.d.ts +145 -0
  269. package/lib/examples2/notebooks/OutputIPyWidgetsExample.js +153 -0
  270. package/lib/examples2/notebooks/PyGWalker.ipynb.json +55 -0
  271. package/lib/hooks/index.d.ts +9 -1
  272. package/lib/hooks/index.js +13 -1
  273. package/lib/hooks/useAIAgentsWebSocket.d.ts +1 -1
  274. package/lib/hooks/useAIAgentsWebSocket.js +39 -3
  275. package/lib/hooks/useAgentRuntimes.d.ts +15 -3
  276. package/lib/hooks/useAgentRuntimes.js +186 -27
  277. package/lib/hooks/useAgentsService.js +5 -5
  278. package/lib/hooks/useCellOutputshot.d.ts +4 -0
  279. package/lib/hooks/useCellOutputshot.js +25 -0
  280. package/lib/hooks/useCheckpoints.d.ts +8 -8
  281. package/lib/hooks/useCheckpoints.js +36 -26
  282. package/lib/hooks/useConfig.d.ts +1 -1
  283. package/lib/hooks/useMonitoring.d.ts +7 -5
  284. package/lib/hooks/useMonitoring.js +16 -10
  285. package/lib/hooks/useNotifications.d.ts +11 -11
  286. package/lib/hooks/useNotifications.js +1 -1
  287. package/lib/hooks/useProgressStore.d.ts +25 -0
  288. package/lib/hooks/useProgressStore.js +58 -0
  289. package/lib/hooks/useProgressTask.d.ts +9 -0
  290. package/lib/hooks/useProgressTask.js +41 -0
  291. package/lib/hooks/useProjects.d.ts +628 -0
  292. package/lib/hooks/useProjects.js +190 -0
  293. package/lib/hooks/useRuntimes.d.ts +5 -0
  294. package/lib/hooks/useRuntimes.js +34 -0
  295. package/lib/hooks/useToolApprovals.d.ts +6 -6
  296. package/lib/index.d.ts +1 -0
  297. package/lib/index.js +1 -0
  298. package/lib/jupyter/exec/Python.d.ts +5 -0
  299. package/lib/jupyter/exec/Python.js +100 -0
  300. package/lib/jupyter/exec/Snippets.d.ts +105 -0
  301. package/lib/jupyter/exec/Snippets.js +101 -0
  302. package/lib/jupyter/exec/index.d.ts +2 -0
  303. package/lib/jupyter/exec/index.js +6 -0
  304. package/lib/jupyter/index.d.ts +2 -0
  305. package/lib/jupyter/index.js +6 -0
  306. package/lib/jupyter/kernelsHandler.d.ts +8 -0
  307. package/lib/jupyter/kernelsHandler.js +39 -0
  308. package/lib/mocks/models/CourseMock.d.ts +6 -0
  309. package/lib/mocks/models/CourseMock.js +29 -0
  310. package/lib/mocks/models/SpaceMock.d.ts +6 -0
  311. package/lib/mocks/models/SpaceMock.js +25 -0
  312. package/lib/models/Assignment.d.ts +7 -0
  313. package/lib/models/Assignment.js +5 -0
  314. package/lib/models/Cell.d.ts +8 -0
  315. package/lib/models/Cell.js +5 -0
  316. package/lib/models/CodeBlock.d.ts +10 -0
  317. package/lib/models/CodeBlock.js +5 -0
  318. package/lib/models/CodeSandboxSnapshot.d.ts +92 -0
  319. package/lib/models/CodeSandboxSnapshot.js +13 -0
  320. package/lib/models/CodeSandboxSnapshotDTO.d.ts +173 -0
  321. package/lib/models/CodeSandboxSnapshotDTO.js +139 -0
  322. package/lib/models/CodefeedBlocks.d.ts +7 -0
  323. package/lib/models/CodefeedBlocks.js +5 -0
  324. package/lib/models/Content.d.ts +5 -0
  325. package/lib/models/Content.js +5 -0
  326. package/lib/models/Course.d.ts +17 -0
  327. package/lib/models/Course.js +5 -0
  328. package/lib/models/Dataset.d.ts +16 -0
  329. package/lib/models/Dataset.js +5 -0
  330. package/lib/models/Document.d.ts +8 -0
  331. package/lib/models/Document.js +5 -0
  332. package/lib/models/Environment.d.ts +86 -0
  333. package/lib/models/Environment.js +5 -0
  334. package/lib/models/EnvironmentDTO.d.ts +125 -0
  335. package/lib/models/EnvironmentDTO.js +88 -0
  336. package/lib/models/Exercise.d.ts +16 -0
  337. package/lib/models/Exercise.js +5 -0
  338. package/lib/models/Item.d.ts +20 -0
  339. package/lib/models/Item.js +5 -0
  340. package/lib/models/ItemDTO.d.ts +74 -0
  341. package/lib/models/ItemDTO.js +186 -0
  342. package/lib/models/ItemType.d.ts +2 -0
  343. package/lib/models/ItemType.js +5 -0
  344. package/lib/models/Lesson.d.ts +5 -0
  345. package/lib/models/Lesson.js +5 -0
  346. package/lib/models/LexicalDTO.d.ts +155 -0
  347. package/lib/models/LexicalDTO.js +157 -0
  348. package/lib/models/Library.d.ts +10 -0
  349. package/lib/models/Library.js +5 -0
  350. package/lib/models/Notebook.d.ts +11 -0
  351. package/lib/models/Notebook.js +5 -0
  352. package/lib/models/NotebookDTO.d.ts +96 -0
  353. package/lib/models/NotebookDTO.js +153 -0
  354. package/lib/models/Page.d.ts +41 -0
  355. package/lib/models/Page.js +25 -0
  356. package/lib/models/PageTag.d.ts +19 -0
  357. package/lib/models/PageTag.js +94 -0
  358. package/lib/models/ProjectDTO.d.ts +89 -0
  359. package/lib/models/ProjectDTO.js +131 -0
  360. package/lib/models/Runtime.d.ts +160 -0
  361. package/lib/models/Runtime.js +18 -0
  362. package/lib/models/RuntimeDTO.d.ts +172 -0
  363. package/lib/models/RuntimeDTO.js +204 -0
  364. package/lib/models/Space.d.ts +35 -0
  365. package/lib/models/Space.js +66 -0
  366. package/lib/models/SpaceDTO.d.ts +334 -0
  367. package/lib/models/SpaceDTO.js +244 -0
  368. package/lib/models/SpaceItem.d.ts +10 -0
  369. package/lib/models/SpaceItem.js +5 -0
  370. package/lib/models/SpaceMember.d.ts +6 -0
  371. package/lib/models/SpaceMember.js +5 -0
  372. package/lib/models/StudentItem.d.ts +21 -0
  373. package/lib/models/StudentItem.js +5 -0
  374. package/lib/models/index.d.ts +32 -0
  375. package/lib/models/index.js +39 -0
  376. package/lib/protocols/AGUIAdapter.js +1 -1
  377. package/lib/runtimes/actions.d.ts +102 -0
  378. package/lib/runtimes/actions.js +249 -0
  379. package/lib/runtimes/apis.d.ts +273 -0
  380. package/lib/runtimes/apis.js +5 -0
  381. package/lib/runtimes/index.d.ts +5 -0
  382. package/lib/runtimes/index.js +9 -0
  383. package/lib/runtimes/settings.d.ts +15 -0
  384. package/lib/runtimes/settings.js +31 -0
  385. package/lib/runtimes/snapshots.d.ts +25 -0
  386. package/lib/runtimes/snapshots.js +150 -0
  387. package/lib/runtimes/utils.d.ts +7 -0
  388. package/lib/runtimes/utils.js +14 -0
  389. package/lib/services/DatalayerServiceManager.d.ts +23 -0
  390. package/lib/services/DatalayerServiceManager.js +90 -0
  391. package/lib/services/reconnectToRuntime.d.ts +32 -0
  392. package/lib/services/reconnectToRuntime.js +59 -0
  393. package/lib/services/sandboxServiceManagers.d.ts +31 -0
  394. package/lib/services/sandboxServiceManagers.js +57 -0
  395. package/lib/specs/agents/agents.d.ts +78 -26
  396. package/lib/specs/agents/agents.js +4434 -1639
  397. package/lib/specs/index.d.ts +1 -0
  398. package/lib/specs/index.js +1 -0
  399. package/lib/specs/loops.d.ts +34 -0
  400. package/lib/specs/loops.js +188 -0
  401. package/lib/specs/mcpServers.d.ts +1 -0
  402. package/lib/specs/mcpServers.js +17 -0
  403. package/lib/specs/models.d.ts +4 -0
  404. package/lib/specs/models.js +30 -0
  405. package/lib/specs/skills.d.ts +1 -0
  406. package/lib/specs/skills.js +18 -0
  407. package/lib/specs/tools.d.ts +15 -0
  408. package/lib/specs/tools.js +285 -0
  409. package/lib/state/index.d.ts +4 -0
  410. package/lib/state/index.js +10 -0
  411. package/lib/state/substates/CellState.d.ts +12 -0
  412. package/lib/state/substates/CellState.js +22 -0
  413. package/lib/state/substates/DocumentState.d.ts +10 -0
  414. package/lib/state/substates/DocumentState.js +14 -0
  415. package/lib/state/substates/GradeState.d.ts +10 -0
  416. package/lib/state/substates/GradeState.js +14 -0
  417. package/lib/state/substates/JupyterLabState.d.ts +16 -0
  418. package/lib/state/substates/JupyterLabState.js +17 -0
  419. package/lib/state/substates/NbformatState.d.ts +13 -0
  420. package/lib/state/substates/NbformatState.js +16 -0
  421. package/lib/state/substates/RuntimesState.d.ts +87 -0
  422. package/lib/state/substates/RuntimesState.js +192 -0
  423. package/lib/state/substates/SpaceState.d.ts +11 -0
  424. package/lib/state/substates/SpaceState.js +16 -0
  425. package/lib/state/substates/index.d.ts +8 -0
  426. package/lib/state/substates/index.js +14 -0
  427. package/lib/stores/agentRuntimeStore.d.ts +25 -2
  428. package/lib/stores/agentRuntimeStore.js +114 -19
  429. package/lib/stories/Button.stories.d.ts +1 -1
  430. package/lib/stories/Header.stories.d.ts +3 -3
  431. package/lib/test-setup.js +10 -0
  432. package/lib/types/agents-lifecycle.d.ts +5 -5
  433. package/lib/types/agents.d.ts +3 -3
  434. package/lib/types/agentspecs.d.ts +4 -2
  435. package/lib/types/chat.d.ts +135 -3
  436. package/lib/types/config.d.ts +19 -1
  437. package/lib/types/index.d.ts +1 -0
  438. package/lib/types/index.js +1 -0
  439. package/lib/types/loops.d.ts +64 -0
  440. package/lib/types/loops.js +5 -0
  441. package/lib/types/tools.d.ts +16 -0
  442. package/lib/utils/Cells.d.ts +2 -0
  443. package/lib/utils/Cells.js +28 -0
  444. package/package.json +24 -18
  445. package/scripts/codegen/__pycache__/generate_sandbox_agents.cpython-313.pyc +0 -0
  446. package/scripts/codegen/__pycache__/versioning.cpython-313.pyc +0 -0
  447. package/scripts/codegen/generate_agents.py +21 -4
  448. package/scripts/codegen/generate_loops.py +443 -0
  449. package/scripts/codegen/generate_sandbox_agents.py +145 -0
  450. package/lib/examples/A2UiComponentGalleryExample.d.ts +0 -3
  451. package/lib/examples/A2UiComponentGalleryExample.js +0 -361
  452. /package/lib/{agent-lexical-main.d.ts → agent-document-main.d.ts} +0 -0
@@ -0,0 +1,252 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ /*
3
+ * Copyright (c) 2025-2026 Datalayer, Inc.
4
+ * Distributed under the terms of the Modified BSD License.
5
+ */
6
+ /**
7
+ * EphemeralNotebook — an in-memory Jupyter notebook rendered next to the chat.
8
+ *
9
+ * The notebook model lives purely in memory (the `nbformat` content below is
10
+ * never persisted to a file) and is backed by a sandbox kernel obtained via
11
+ * `useJupyter`. This mirrors the pattern used by the notebook editor and the
12
+ * `NotebookNbformat` example, so the agent can drive the notebook through the
13
+ * registered notebook frontend tools while nothing is written to disk.
14
+ *
15
+ * The container structure (relative wrapper + absolutely positioned inner box
16
+ * + `#dla-Jupyter-Notebook` overrides) is copied from the notebook editor
17
+ * (`NotebookEditorPanel`) so the cells get a resolved height and actually
18
+ * render — a plain `height: 100%` collapses to zero inside a flex parent.
19
+ *
20
+ * @module chat/notebook/EphemeralNotebook
21
+ */
22
+ import { useEffect, useMemo, useRef, useState } from 'react';
23
+ import { ServerConnection, ServiceManager } from '@jupyterlab/services';
24
+ import { Box, DatalayerThemeProvider, getThemeConfig, useSystemColorMode, useThemeStore, } from '@datalayer/primer-addons';
25
+ import { Notebook, NotebookToolbar, CellSidebarExtension, CellSidebarButton, JupyterReactTheme, notebookStore, disposeServiceManager, } from '@datalayer/jupyter-react';
26
+ import { useAgentsRuntimes } from '../../hooks/useAgentRuntimes';
27
+ import { registerSandboxServiceManager } from '../../services/sandboxServiceManagers';
28
+ import { useProgressTask } from '../../hooks/useProgressTask';
29
+ /**
30
+ * Minimal in-memory notebook content. A single empty code cell is provided so
31
+ * the notebook renders immediately and the agent can insert/update cells.
32
+ */
33
+ const EPHEMERAL_NOTEBOOK_CONTENT = {
34
+ cells: [
35
+ {
36
+ cell_type: 'code',
37
+ source: [''],
38
+ metadata: {},
39
+ outputs: [],
40
+ execution_count: null,
41
+ },
42
+ ],
43
+ metadata: {
44
+ kernelspec: {
45
+ display_name: 'Python 3',
46
+ language: 'python',
47
+ name: 'python3',
48
+ },
49
+ language_info: { name: 'python' },
50
+ },
51
+ nbformat: 4,
52
+ nbformat_minor: 5,
53
+ };
54
+ /**
55
+ * Renders an in-memory notebook backed by a sandbox kernel.
56
+ */
57
+ export function EphemeralNotebook({ notebookId, runtimePodName, cellSidebarMargin = 120, nbformat, onNbformatChange, toolbarComponent, }) {
58
+ // The `nbformat` passed to the `Notebook` component MUST stay a stable
59
+ // reference for the lifetime of a given `notebookId`: the underlying
60
+ // `useNotebookModel` hook rebuilds the notebook model (and its context /
61
+ // adapter) every time the `nbformat` reference changes. Feeding the live
62
+ // model back into this prop would thrash the notebook and can persist
63
+ // transient/empty content. So we capture the initial/restore content ONCE
64
+ // per `notebookId` and never mutate it from the live model.
65
+ const initialNbformatRef = useRef(nbformat ?? EPHEMERAL_NOTEBOOK_CONTENT);
66
+ const initialNotebookIdRef = useRef(notebookId);
67
+ if (initialNotebookIdRef.current !== notebookId) {
68
+ // Notebook scope changed (e.g. switching agents) — reset the restore seed.
69
+ initialNotebookIdRef.current = notebookId;
70
+ initialNbformatRef.current = nbformat ?? EPHEMERAL_NOTEBOOK_CONTENT;
71
+ }
72
+ const initialNbformat = initialNbformatRef.current;
73
+ // Hash of the last content we persisted, so the poll only writes on change.
74
+ const lastSavedHashRef = useRef(JSON.stringify(initialNbformat));
75
+ // Resolve the runtime sandbox strictly by its assigned pod name. There is
76
+ // deliberately NO fallback to "first running" or `runtimes[0]`: the ephemeral
77
+ // notebook must bind to exactly the runtime assigned to this agent, or to
78
+ // none at all (straight path).
79
+ const { runtimes, refetchRuntimes } = useAgentsRuntimes();
80
+ const selectedRuntime = useMemo(() => {
81
+ const preferredPod = String(runtimePodName || '').trim();
82
+ if (!preferredPod) {
83
+ return undefined;
84
+ }
85
+ return runtimes.find(rt => String(rt?.pod_name || '') === preferredPod);
86
+ }, [runtimePodName, runtimes]);
87
+ // While the assigned pod has not yet appeared in the runtimes list, poll the
88
+ // list quickly instead of waiting for the default (10s) refresh interval.
89
+ // This is what makes the "Starting notebook…" state clear promptly once the
90
+ // agent runtime is ready, rather than lingering for several seconds.
91
+ const needsRuntimeLookup = Boolean(String(runtimePodName || '').trim() && !selectedRuntime);
92
+ useEffect(() => {
93
+ if (!needsRuntimeLookup) {
94
+ return;
95
+ }
96
+ void refetchRuntimes();
97
+ const intervalId = window.setInterval(() => {
98
+ void refetchRuntimes();
99
+ }, 1000);
100
+ return () => {
101
+ window.clearInterval(intervalId);
102
+ };
103
+ }, [needsRuntimeLookup, refetchRuntimes]);
104
+ const [runtimeServiceManager, setRuntimeServiceManager] = useState(null);
105
+ const [runtimeKernelId, setRuntimeKernelId] = useState(undefined);
106
+ const [runtimeStartDefaultKernel, setRuntimeStartDefaultKernel] = useState(false);
107
+ useEffect(() => {
108
+ let cancelled = false;
109
+ let manager = null;
110
+ let unregisterManager = null;
111
+ const connectRuntime = async () => {
112
+ const baseUrl = String(selectedRuntime?.url || '').trim();
113
+ if (!baseUrl) {
114
+ if (!cancelled) {
115
+ setRuntimeServiceManager(null);
116
+ setRuntimeKernelId(undefined);
117
+ setRuntimeStartDefaultKernel(false);
118
+ }
119
+ return;
120
+ }
121
+ try {
122
+ const token = String(selectedRuntime?.token || '').trim();
123
+ const serverSettings = ServerConnection.makeSettings({
124
+ baseUrl,
125
+ wsUrl: baseUrl.replace(/^http/, 'ws'),
126
+ token,
127
+ appendToken: true,
128
+ });
129
+ manager = new ServiceManager({ serverSettings });
130
+ // Central sandbox registry: runtime terminate/pause disposes this
131
+ // manager immediately so its pollers cannot hit the dead pod ingress.
132
+ unregisterManager = registerSandboxServiceManager(String(selectedRuntime?.pod_name || ''), manager);
133
+ await manager.ready;
134
+ await manager.kernels.refreshRunning();
135
+ const runningKernel = [...manager.kernels.running()][0];
136
+ if (!cancelled) {
137
+ setRuntimeServiceManager(manager);
138
+ setRuntimeKernelId(runningKernel?.id);
139
+ setRuntimeStartDefaultKernel(!runningKernel);
140
+ }
141
+ }
142
+ catch {
143
+ if (!cancelled) {
144
+ setRuntimeServiceManager(null);
145
+ setRuntimeKernelId(undefined);
146
+ setRuntimeStartDefaultKernel(false);
147
+ }
148
+ }
149
+ };
150
+ connectRuntime();
151
+ return () => {
152
+ cancelled = true;
153
+ unregisterManager?.();
154
+ if (manager) {
155
+ disposeServiceManager(manager);
156
+ }
157
+ };
158
+ }, [selectedRuntime?.pod_name, selectedRuntime?.url, selectedRuntime?.token]);
159
+ // Bind strictly to the agent runtime sandbox; there is NO local fallback
160
+ // kernel. The notebook executes on the agent's runtime or shows a waiting
161
+ // state until the runtime is ready.
162
+ const activeServiceManager = runtimeServiceManager;
163
+ const activeKernelId = runtimeKernelId;
164
+ const activeStartDefaultKernel = runtimeStartDefaultKernel;
165
+ const ToolbarComponent = toolbarComponent || NotebookToolbar;
166
+ const isRuntimeStarting = Boolean(String(runtimePodName || '').trim() && !activeServiceManager);
167
+ useProgressTask(`ephemeral-notebook-start-${notebookId}`, isRuntimeStarting);
168
+ useEffect(() => {
169
+ // Read the CURRENT live notebook model straight from the notebook store.
170
+ // The `NotebookAdapter` exposes `notebook` (the widget, whose `.model` is
171
+ // the `INotebookModel`) and `panel` (`panel.content.model`). There is NO
172
+ // `notebookPanel` getter, so we read through those real accessors.
173
+ const readLiveModel = () => {
174
+ const notebook = notebookStore.getState().selectNotebook(notebookId);
175
+ const adapter = notebook?.adapter;
176
+ const model = adapter?.notebook?.model ?? adapter?.panel?.content?.model ?? null;
177
+ const modelJson = model?.toJSON?.();
178
+ return modelJson ?? null;
179
+ };
180
+ // Persist the current model to the store, but only when it actually
181
+ // changed. This never feeds back into the `nbformat` prop, so the live
182
+ // notebook is not rebuilt.
183
+ const persistLiveModel = () => {
184
+ const model = readLiveModel();
185
+ if (!model || !Array.isArray(model.cells)) {
186
+ return;
187
+ }
188
+ const nextHash = JSON.stringify(model);
189
+ if (nextHash === lastSavedHashRef.current) {
190
+ return;
191
+ }
192
+ lastSavedHashRef.current = nextHash;
193
+ onNbformatChange?.(model);
194
+ };
195
+ const intervalId = window.setInterval(persistLiveModel, 500);
196
+ return () => {
197
+ window.clearInterval(intervalId);
198
+ // Capture the final model on unmount (navigating away) so the very last
199
+ // edits are persisted before the notebook adapter is disposed.
200
+ persistLiveModel();
201
+ };
202
+ }, [activeServiceManager, notebookId, onNbformatChange]);
203
+ // Resolve the active theme/color-mode exactly like the notebook editor
204
+ // (NotebookEditorPanel) so the notebook honours dark / branded themes
205
+ // instead of always rendering light.
206
+ const { colorMode, theme: themeVariant } = useThemeStore();
207
+ const systemMode = useSystemColorMode();
208
+ const themeConfig = getThemeConfig(themeVariant);
209
+ const resolvedMode = colorMode === 'auto' ? systemMode : colorMode;
210
+ const modeStyles = resolvedMode === 'dark'
211
+ ? themeConfig.themeStyles.dark
212
+ : themeConfig.themeStyles.light;
213
+ const themeBackground = modeStyles.backgroundColor ?? '';
214
+ const extensions = useMemo(() => [new CellSidebarExtension({ factory: CellSidebarButton })], []);
215
+ return (_jsx(Box, { sx: {
216
+ flex: 1,
217
+ minHeight: 0,
218
+ height: '100%',
219
+ position: 'relative',
220
+ overflow: 'hidden',
221
+ bg: 'canvas.default',
222
+ }, children: activeServiceManager ? (_jsx(DatalayerThemeProvider, { colorMode: colorMode, theme: themeConfig.primerTheme, themeStyles: themeConfig.themeStyles, children: _jsx(JupyterReactTheme, { colormode: resolvedMode, backgroundColor: themeBackground, children: _jsx(Box, { sx: {
223
+ position: 'absolute',
224
+ inset: 0,
225
+ display: 'flex',
226
+ flexDirection: 'column',
227
+ overflow: 'hidden',
228
+ overscrollBehaviorY: 'contain',
229
+ overflowAnchor: 'none',
230
+ padding: 2,
231
+ // Give the notebook a resolved height so cells render. The
232
+ // Jupyter Notebook component renders its outer container with
233
+ // id "dla-Jupyter-Notebook"; pin its toolbar and let the cell
234
+ // area grow to fill the remaining space.
235
+ '& #dla-Jupyter-Notebook': {
236
+ display: 'flex',
237
+ flexDirection: 'column',
238
+ },
239
+ '& #dla-Jupyter-Notebook > :first-of-type': {
240
+ position: 'sticky',
241
+ top: 0,
242
+ zIndex: 2,
243
+ flex: '0 0 auto',
244
+ background: 'var(--jp-layout-color0, transparent)',
245
+ },
246
+ '& #dla-Jupyter-Notebook > .dla-Box-Notebook': {
247
+ flex: '1 1 auto',
248
+ minHeight: 0,
249
+ },
250
+ }, children: _jsx(Notebook, { nbformat: initialNbformat, id: notebookId, serviceManager: activeServiceManager, startDefaultKernel: activeStartDefaultKernel, kernelId: activeKernelId, height: "100%", cellSidebarMargin: cellSidebarMargin, extensions: extensions, Toolbar: ToolbarComponent }) }) }) })) : null }));
251
+ }
252
+ export default EphemeralNotebook;
@@ -27,7 +27,7 @@ export function InputToolbar({ input, setInput, isLoading, kernelStatus, connect
27
27
  const hasSelectorsContent = hasConfigData || hasSkillsData;
28
28
  // Show token usage when we have valid context data
29
29
  const hasContext = Boolean(agentUsage && !agentUsage.error && agentUsage.totalTokens > 0);
30
- return (_jsxs(Box, { children: [_jsx(InputPrompt, { placeholder: placeholder || 'Type a message...', isLoading: isLoading, isKernelBusy: isKernelBusy, disabled: disableInputPrompt, readOnly: !connectionConfirmed, onSend: onSend, onStop: onStop, autoFocus: autoFocus, focusTrigger: focusTrigger, padding: padding, value: input, onChange: setInput, footerRightContent: _jsxs(_Fragment, { children: [_jsx(McpStatusIndicator, { apiBase: apiBase, authToken: authToken, data: mcpStatusData }), _jsx(SkillsStatusIndicator, { skillsCount: skills.length, enabledCount: enabledSkills.size, loading: skillsLoading })] }) }), showTokenUsage && (_jsx(Box, { sx: { minHeight: hasContext && agentUsage ? 28 : 8 }, children: hasContext && agentUsage ? (_jsx(TokenUsageBar, { agentUsage: agentUsage, padding: padding })) : null })), showSelectorsBar && (_jsx(Box, { sx: {
30
+ return (_jsxs(Box, { children: [_jsx(InputPrompt, { placeholder: placeholder || 'Type a message...', isLoading: isLoading, isKernelBusy: isKernelBusy, disabled: disableInputPrompt, readOnly: !connectionConfirmed, onSend: onSend, onStop: onStop, autoFocus: autoFocus, focusTrigger: focusTrigger, padding: padding, value: input, onChange: setInput, footerRightContent: _jsxs(_Fragment, { children: [_jsx(McpStatusIndicator, { apiBase: apiBase, authToken: authToken, data: mcpStatusData }), _jsx(SkillsStatusIndicator, { skillsCount: skills.length, enabledCount: enabledSkills.size, loading: skillsLoading })] }) }), showTokenUsage && (_jsx(Box, { sx: { minHeight: hasContext && agentUsage ? 28 : 8 }, children: hasContext && agentUsage ? (_jsx(TokenUsageBar, { agentUsage: agentUsage, padding: padding })) : null })), showSelectorsBar && (_jsx(Box, { "aria-disabled": disableInputPrompt || undefined, sx: {
31
31
  display: 'flex',
32
32
  gap: 2,
33
33
  px: padding,
@@ -37,6 +37,9 @@ export function InputToolbar({ input, setInput, isLoading, kernelStatus, connect
37
37
  borderColor: 'border.default',
38
38
  alignItems: 'center',
39
39
  bg: 'canvas.subtle',
40
+ ...(disableInputPrompt
41
+ ? { opacity: 0.5, pointerEvents: 'none', filter: 'grayscale(1)' }
42
+ : null),
40
43
  }, children: hasSelectorsContent ? (_jsxs(_Fragment, { children: [showToolsMenu && (_jsx(ToolsMenu, { codemodeEnabled: codemodeEnabled, onToggleCodemode: onToggleCodemode, mcpServers: mcpServers, enabledMcpTools: enabledMcpTools, enabledMcpToolCount: enabledMcpToolCount, onToggleMcpTool: onToggleMcpTool, onToggleAllMcpServerTools: onToggleAllMcpServerTools, approvedMcpTools: approvedMcpTools, onToggleMcpToolApproval: onToggleMcpToolApproval, availableTools: availableTools })), showSkillsMenu && (_jsx(SkillsMenu, { skills: skills, skillsLoading: skillsLoading, enabledSkills: enabledSkills, onToggleSkill: onToggleSkill, onToggleAllSkills: onToggleAllSkills, approvedSkills: approvedSkills, onToggleSkillApproval: onToggleSkillApproval })), showModelSelector && models.length > 0 && selectedModel && (_jsx(ModelSelector, { models: models, selectedModel: selectedModel, onModelSelect: onModelSelect, isA2AProtocol: isA2AProtocol }))] })) : (_jsx(Text, { sx: { fontSize: 0, color: 'fg.muted' }, children: "Loading controls..." })) }))] }));
41
44
  }
42
45
  // ---------------------------------------------------------------------------
@@ -0,0 +1,127 @@
1
+ /**
2
+ * Agent Runtimes client: extends the core Datalayer client (IAM / plans) with
3
+ * runtime and workspace/content (Spacer) capabilities.
4
+ *
5
+ * @module client/AgentRuntimesClient
6
+ */
7
+ import { DatalayerCoreClient, type DatalayerClientConfig } from '@datalayer/core/lib/client';
8
+ import type { HealthCheck } from '@datalayer/core/lib/models/HealthCheck';
9
+ import type { RuntimeDTO } from '../models/RuntimeDTO';
10
+ import type { EnvironmentDTO } from '../models/EnvironmentDTO';
11
+ import type { CodeSandboxSnapshotDTO } from '../models/CodeSandboxSnapshotDTO';
12
+ import type { SpaceDTO, UpdateSpaceRequest } from '../models/SpaceDTO';
13
+ import type { NotebookDTO } from '../models/NotebookDTO';
14
+ import type { LexicalDTO } from '../models/LexicalDTO';
15
+ import type { ProjectDTO, ProjectDefaultItems } from '../models/ProjectDTO';
16
+ declare const AgentRuntimesClientWithMixins: {
17
+ new (...args: any[]): {
18
+ getMySpaces(): Promise<SpaceDTO[]>;
19
+ createSpace(name: string, description: string, variant: string, spaceHandle: string, organizationId: string, seedSpaceId: string, isPublic: boolean): Promise<SpaceDTO>;
20
+ createNotebook(spaceId: string, name: string, description: string, file?: File | Blob): Promise<NotebookDTO>;
21
+ getNotebook(id: string): Promise<NotebookDTO>;
22
+ updateNotebook(id: string, name?: string, description?: string): Promise<NotebookDTO>;
23
+ createLexical(spaceId: string, name: string, description: string, file?: File | Blob): Promise<LexicalDTO>;
24
+ getLexical(id: string): Promise<LexicalDTO>;
25
+ updateLexical(id: string, name?: string, description?: string): Promise<LexicalDTO>;
26
+ getSpaceItems(spaceId: string): Promise<(NotebookDTO | LexicalDTO)[]>;
27
+ getSpaceItem(itemId: string): Promise<NotebookDTO | LexicalDTO>;
28
+ deleteSpaceItem(itemId: string): Promise<void>;
29
+ getContent(itemId: string): Promise<any>;
30
+ checkSpacerHealth(): Promise<HealthCheck>;
31
+ getCollaborationSessionId(documentId: string): Promise<string>;
32
+ getSpace(uid: string): Promise<SpaceDTO>;
33
+ updateSpace(uid: string, data: UpdateSpaceRequest): Promise<SpaceDTO>;
34
+ updateUserSpace(uid: string, userId: string, data: UpdateSpaceRequest): Promise<SpaceDTO>;
35
+ deleteSpace(uid: string): Promise<void>;
36
+ makeSpacePublic(uid: string): Promise<SpaceDTO>;
37
+ makeSpacePrivate(uid: string): Promise<SpaceDTO>;
38
+ exportSpace(uid: string): Promise<any>;
39
+ cloneNotebook(id: string): Promise<NotebookDTO>;
40
+ cloneLexical(id: string): Promise<LexicalDTO>;
41
+ getProjects(): Promise<ProjectDTO[]>;
42
+ getProject(uid: string): Promise<ProjectDTO>;
43
+ createProject(name: string, description?: string): Promise<ProjectDTO>;
44
+ updateProject(uid: string, data: UpdateSpaceRequest): Promise<ProjectDTO>;
45
+ renameProject(uid: string, newName: string, description?: string): Promise<ProjectDTO>;
46
+ getProjectDefaultItems(uid: string): Promise<ProjectDefaultItems>;
47
+ };
48
+ } & {
49
+ new (...args: any[]): {
50
+ _extractRuntimePodName(runtimePodNameOrInstance: string | RuntimeDTO): string;
51
+ _extractSnapshotId(snapshotIdOrInstance: string | CodeSandboxSnapshotDTO): string;
52
+ listEnvironments(): Promise<EnvironmentDTO[]>;
53
+ createRuntime(environmentName: string, type: "notebook" | "terminal" | "job", givenName: string, minutesLimit: number, fromSnapshotId?: string): Promise<RuntimeDTO>;
54
+ listRuntimes(): Promise<RuntimeDTO[]>;
55
+ getRuntime(podName: string): Promise<RuntimeDTO>;
56
+ deleteRuntime(podName: string): Promise<void>;
57
+ terminateAllRuntimes(): Promise<PromiseSettledResult<void>[]>;
58
+ createSnapshot(podName: string, name: string, description: string, stop?: boolean): Promise<CodeSandboxSnapshotDTO>;
59
+ listSnapshots(): Promise<CodeSandboxSnapshotDTO[]>;
60
+ getSnapshot(id: string): Promise<CodeSandboxSnapshotDTO>;
61
+ deleteSnapshot(id: string): Promise<void>;
62
+ checkRuntimesHealth(): Promise<HealthCheck>;
63
+ };
64
+ } & typeof DatalayerCoreClient;
65
+ /**
66
+ * Full Datalayer client for agent runtimes: identity/plans (from core) plus
67
+ * runtime and workspace/content operations.
68
+ *
69
+ * @example
70
+ * ```typescript
71
+ * const client = new AgentRuntimesClient({ token: 'your-token' });
72
+ * const user = await client.whoami();
73
+ * const runtime = await client.createRuntime('env', 'notebook', 'name', 10);
74
+ * ```
75
+ */
76
+ export declare class AgentRuntimesClient extends AgentRuntimesClientWithMixins {
77
+ /**
78
+ * Create an AgentRuntimesClient instance.
79
+ *
80
+ * @param config - Client configuration options.
81
+ */
82
+ constructor(config: DatalayerClientConfig);
83
+ }
84
+ export interface AgentRuntimesClient extends DatalayerCoreClient {
85
+ listEnvironments(): Promise<EnvironmentDTO[]>;
86
+ ensureRuntime(environmentName?: string, creditsLimit?: number, waitForReady?: boolean, maxWaitTime?: number, reuseExisting?: boolean, snapshotId?: string): Promise<RuntimeDTO>;
87
+ createRuntime(environmentName: string, type: 'notebook' | 'terminal' | 'job', givenName: string, minutesLimit: number, fromSnapshotId?: string): Promise<RuntimeDTO>;
88
+ listRuntimes(): Promise<RuntimeDTO[]>;
89
+ getRuntime(podName: string): Promise<RuntimeDTO>;
90
+ deleteRuntime(podName: string): Promise<void>;
91
+ terminateAllRuntimes(): Promise<PromiseSettledResult<void>[]>;
92
+ createSnapshot(podName: string, name: string, description: string, stop?: boolean): Promise<CodeSandboxSnapshotDTO>;
93
+ listSnapshots(): Promise<CodeSandboxSnapshotDTO[]>;
94
+ getSnapshot(id: string): Promise<CodeSandboxSnapshotDTO>;
95
+ deleteSnapshot(id: string): Promise<void>;
96
+ checkRuntimesHealth(): Promise<HealthCheck>;
97
+ getMySpaces(): Promise<SpaceDTO[]>;
98
+ createSpace(name: string, description: string, variant: string, spaceHandle: string, organizationId: string, seedSpaceId: string, isPublic: boolean): Promise<SpaceDTO>;
99
+ createNotebook(spaceId: string, name: string, description: string, file?: File | Blob): Promise<NotebookDTO>;
100
+ getNotebook(id: string): Promise<NotebookDTO>;
101
+ updateNotebook(id: string, name?: string, description?: string): Promise<NotebookDTO>;
102
+ createLexical(spaceId: string, name: string, description: string, file?: File | Blob): Promise<LexicalDTO>;
103
+ getLexical(id: string): Promise<LexicalDTO>;
104
+ updateLexical(id: string, name?: string, description?: string): Promise<LexicalDTO>;
105
+ getSpaceItems(spaceId: string): Promise<(NotebookDTO | LexicalDTO)[]>;
106
+ getSpaceItem(itemId: string): Promise<NotebookDTO | LexicalDTO>;
107
+ deleteSpaceItem(itemId: string): Promise<void>;
108
+ getCollaborationSessionId(documentId: string): Promise<string>;
109
+ getContent(itemId: string): Promise<any>;
110
+ checkSpacerHealth(): Promise<HealthCheck>;
111
+ getSpace(uid: string): Promise<SpaceDTO>;
112
+ updateSpace(uid: string, data: UpdateSpaceRequest): Promise<SpaceDTO>;
113
+ updateUserSpace(uid: string, userId: string, data: UpdateSpaceRequest): Promise<SpaceDTO>;
114
+ deleteSpace(uid: string): Promise<void>;
115
+ makeSpacePublic(uid: string): Promise<SpaceDTO>;
116
+ makeSpacePrivate(uid: string): Promise<SpaceDTO>;
117
+ exportSpace(uid: string): Promise<any>;
118
+ cloneNotebook(id: string): Promise<NotebookDTO>;
119
+ cloneLexical(id: string): Promise<LexicalDTO>;
120
+ getProjects(): Promise<ProjectDTO[]>;
121
+ getProject(uid: string): Promise<ProjectDTO>;
122
+ createProject(name: string, description?: string): Promise<ProjectDTO>;
123
+ updateProject(uid: string, data: UpdateSpaceRequest): Promise<ProjectDTO>;
124
+ renameProject(uid: string, newName: string, description?: string): Promise<ProjectDTO>;
125
+ getProjectDefaultItems(uid: string): Promise<ProjectDefaultItems>;
126
+ }
127
+ export {};
@@ -0,0 +1,36 @@
1
+ /*
2
+ * Copyright (c) 2025-2026 Datalayer, Inc.
3
+ * Distributed under the terms of the Modified BSD License.
4
+ */
5
+ /**
6
+ * Agent Runtimes client: extends the core Datalayer client (IAM / plans) with
7
+ * runtime and workspace/content (Spacer) capabilities.
8
+ *
9
+ * @module client/AgentRuntimesClient
10
+ */
11
+ import { DatalayerCoreClient, } from '@datalayer/core/lib/client';
12
+ import { RuntimesMixin } from './mixins/RuntimesMixin';
13
+ import { SpacerMixin } from './mixins/SpacerMixin';
14
+ // Apply the runtime + content mixins on top of the core client.
15
+ const AgentRuntimesClientWithMixins = SpacerMixin(RuntimesMixin(DatalayerCoreClient));
16
+ /**
17
+ * Full Datalayer client for agent runtimes: identity/plans (from core) plus
18
+ * runtime and workspace/content operations.
19
+ *
20
+ * @example
21
+ * ```typescript
22
+ * const client = new AgentRuntimesClient({ token: 'your-token' });
23
+ * const user = await client.whoami();
24
+ * const runtime = await client.createRuntime('env', 'notebook', 'name', 10);
25
+ * ```
26
+ */
27
+ export class AgentRuntimesClient extends AgentRuntimesClientWithMixins {
28
+ /**
29
+ * Create an AgentRuntimesClient instance.
30
+ *
31
+ * @param config - Client configuration options.
32
+ */
33
+ constructor(config) {
34
+ super(config);
35
+ }
36
+ }
@@ -22,7 +22,7 @@ export function AgentsMixin(Base) {
22
22
  */
23
23
  async getRunningAgents() {
24
24
  const token = this.getToken();
25
- const baseUrl = this.getIamRunUrl();
25
+ const baseUrl = this.getIamUrl();
26
26
  return agents.getRunningAgents(token, baseUrl);
27
27
  }
28
28
  /**
@@ -33,7 +33,7 @@ export function AgentsMixin(Base) {
33
33
  */
34
34
  async getAgentStatus(podName, agentId) {
35
35
  const token = this.getToken();
36
- const baseUrl = this.getIamRunUrl();
36
+ const baseUrl = this.getIamUrl();
37
37
  return agents.getAgentStatus(token, podName, agentId, baseUrl);
38
38
  }
39
39
  /**
@@ -42,7 +42,7 @@ export function AgentsMixin(Base) {
42
42
  */
43
43
  async pauseAgent(podName) {
44
44
  const token = this.getToken();
45
- const baseUrl = this.getIamRunUrl();
45
+ const baseUrl = this.getIamUrl();
46
46
  return agents.pauseAgent(token, podName, baseUrl);
47
47
  }
48
48
  /**
@@ -51,7 +51,7 @@ export function AgentsMixin(Base) {
51
51
  */
52
52
  async resumeAgent(podName) {
53
53
  const token = this.getToken();
54
- const baseUrl = this.getIamRunUrl();
54
+ const baseUrl = this.getIamUrl();
55
55
  return agents.resumeAgent(token, podName, baseUrl);
56
56
  }
57
57
  /**
@@ -62,7 +62,7 @@ export function AgentsMixin(Base) {
62
62
  */
63
63
  async getAgentCheckpoints(podName, agentId) {
64
64
  const token = this.getToken();
65
- const baseUrl = this.getIamRunUrl();
65
+ const baseUrl = this.getIamUrl();
66
66
  return agents.getAgentCheckpoints(token, podName, agentId, baseUrl);
67
67
  }
68
68
  /**
@@ -73,7 +73,7 @@ export function AgentsMixin(Base) {
73
73
  */
74
74
  async getAgentUsage(podName, agentId) {
75
75
  const token = this.getToken();
76
- const baseUrl = this.getIamRunUrl();
76
+ const baseUrl = this.getIamUrl();
77
77
  return agents.getAgentUsage(token, podName, agentId, baseUrl);
78
78
  }
79
79
  // ========================================================================
@@ -95,7 +95,7 @@ export function AgentsMixin(Base) {
95
95
  */
96
96
  async getNotifications(filters) {
97
97
  const token = this.getToken();
98
- const baseUrl = this.getIamRunUrl();
98
+ const baseUrl = this.getIamUrl();
99
99
  return notifications.getNotifications(token, filters, baseUrl);
100
100
  }
101
101
  /**
@@ -104,7 +104,7 @@ export function AgentsMixin(Base) {
104
104
  */
105
105
  async markNotificationRead(notificationId) {
106
106
  const token = this.getToken();
107
- const baseUrl = this.getIamRunUrl();
107
+ const baseUrl = this.getIamUrl();
108
108
  return notifications.markNotificationRead(token, notificationId, baseUrl);
109
109
  }
110
110
  /**
@@ -112,7 +112,7 @@ export function AgentsMixin(Base) {
112
112
  */
113
113
  async markAllNotificationsRead() {
114
114
  const token = this.getToken();
115
- const baseUrl = this.getIamRunUrl();
115
+ const baseUrl = this.getIamUrl();
116
116
  return notifications.markAllRead(token, undefined, baseUrl);
117
117
  }
118
118
  // ========================================================================
@@ -125,7 +125,7 @@ export function AgentsMixin(Base) {
125
125
  */
126
126
  async createEvent(data) {
127
127
  const token = this.getToken();
128
- const baseUrl = this.getIamRunUrl();
128
+ const baseUrl = this.getIamUrl();
129
129
  return events.createEvent(token, data, baseUrl);
130
130
  }
131
131
  /**
@@ -135,7 +135,7 @@ export function AgentsMixin(Base) {
135
135
  */
136
136
  async listEvents(agentId, params = {}) {
137
137
  const token = this.getToken();
138
- const baseUrl = this.getIamRunUrl();
138
+ const baseUrl = this.getIamUrl();
139
139
  return events.listEvents(token, agentId, params, baseUrl);
140
140
  }
141
141
  /**
@@ -145,7 +145,7 @@ export function AgentsMixin(Base) {
145
145
  */
146
146
  async getEvent(agentId, eventId) {
147
147
  const token = this.getToken();
148
- const baseUrl = this.getIamRunUrl();
148
+ const baseUrl = this.getIamUrl();
149
149
  return events.getEvent(token, agentId, eventId, baseUrl);
150
150
  }
151
151
  /**
@@ -156,7 +156,7 @@ export function AgentsMixin(Base) {
156
156
  */
157
157
  async updateEvent(agentId, eventId, data) {
158
158
  const token = this.getToken();
159
- const baseUrl = this.getIamRunUrl();
159
+ const baseUrl = this.getIamUrl();
160
160
  return events.updateEvent(token, agentId, eventId, data, baseUrl);
161
161
  }
162
162
  // ========================================================================
@@ -169,7 +169,7 @@ export function AgentsMixin(Base) {
169
169
  */
170
170
  async getAgentOutputs(agentId) {
171
171
  const token = this.getToken();
172
- const baseUrl = this.getIamRunUrl();
172
+ const baseUrl = this.getIamUrl();
173
173
  return output.getAgentOutputs(token, agentId, baseUrl);
174
174
  }
175
175
  /**
@@ -180,7 +180,7 @@ export function AgentsMixin(Base) {
180
180
  */
181
181
  async getAgentOutput(agentId, outputId) {
182
182
  const token = this.getToken();
183
- const baseUrl = this.getIamRunUrl();
183
+ const baseUrl = this.getIamUrl();
184
184
  return output.getAgentOutput(token, agentId, outputId, baseUrl);
185
185
  }
186
186
  /**
@@ -192,7 +192,7 @@ export function AgentsMixin(Base) {
192
192
  */
193
193
  async generateAgentOutput(agentId, format, options) {
194
194
  const token = this.getToken();
195
- const baseUrl = this.getIamRunUrl();
195
+ const baseUrl = this.getIamUrl();
196
196
  return output.generateAgentOutput(token, agentId, format, options, baseUrl);
197
197
  }
198
198
  // ========================================================================
@@ -206,7 +206,7 @@ export function AgentsMixin(Base) {
206
206
  */
207
207
  async runEvals(agentId, request) {
208
208
  const token = this.getToken();
209
- const baseUrl = this.getIamRunUrl();
209
+ const baseUrl = this.getIamUrl();
210
210
  return evals.runEvals(token, agentId, request, baseUrl);
211
211
  }
212
212
  /**
@@ -216,7 +216,7 @@ export function AgentsMixin(Base) {
216
216
  */
217
217
  async listEvals(agentId) {
218
218
  const token = this.getToken();
219
- const baseUrl = this.getIamRunUrl();
219
+ const baseUrl = this.getIamUrl();
220
220
  return evals.listEvals(token, agentId, baseUrl);
221
221
  }
222
222
  /**
@@ -227,7 +227,7 @@ export function AgentsMixin(Base) {
227
227
  */
228
228
  async getEval(agentId, evalId) {
229
229
  const token = this.getToken();
230
- const baseUrl = this.getIamRunUrl();
230
+ const baseUrl = this.getIamUrl();
231
231
  return evals.getEval(token, agentId, evalId, baseUrl);
232
232
  }
233
233
  // ========================================================================
@@ -240,7 +240,7 @@ export function AgentsMixin(Base) {
240
240
  */
241
241
  async getContextUsage(agentId) {
242
242
  const token = this.getToken();
243
- const baseUrl = this.getIamRunUrl();
243
+ const baseUrl = this.getIamUrl();
244
244
  return context.getContextUsage(token, agentId, baseUrl);
245
245
  }
246
246
  /**
@@ -250,7 +250,7 @@ export function AgentsMixin(Base) {
250
250
  */
251
251
  async getCostUsage(agentId) {
252
252
  const token = this.getToken();
253
- const baseUrl = this.getIamRunUrl();
253
+ const baseUrl = this.getIamUrl();
254
254
  return context.getCostUsage(token, agentId, baseUrl);
255
255
  }
256
256
  // ========================================================================
@@ -328,14 +328,14 @@ export function AgentsMixin(Base) {
328
328
  */
329
329
  async createAgentRuntime(data) {
330
330
  const token = this.getToken();
331
- const runtimesRunUrl = this.getRuntimesRunUrl();
331
+ const runtimesUrl = this.getRuntimesUrl();
332
332
  const normalizedVolumeUids = Array.isArray(data.volumeUids)
333
333
  ? data.volumeUids.map(uid => String(uid || '').trim()).filter(Boolean)
334
334
  : data.volumeUid
335
335
  ? [String(data.volumeUid).trim()]
336
336
  : [];
337
337
  return requestDatalayerAPI({
338
- url: `${runtimesRunUrl}/api/runtimes/v1/runtimes`,
338
+ url: `${runtimesUrl}/api/runtimes/v1/runtimes`,
339
339
  method: 'POST',
340
340
  token,
341
341
  body: {
@@ -348,11 +348,11 @@ export function AgentsMixin(Base) {
348
348
  agent_spec_id: data.agentSpecId || undefined,
349
349
  agent_spec: data.agentSpec || undefined,
350
350
  user_account_handle: data.userAccountHandle || undefined,
351
- billable_account_uid: data.billableAccountUid || undefined,
352
- billable_account_type: data.billableAccountType || undefined,
353
- billable_account_handle: data.billableAccountHandle || undefined,
354
- billable_source_organization_uid: data.billableSourceOrganizationUid || undefined,
355
- billable_source_organization_handle: data.billableSourceOrganizationHandle || undefined,
351
+ billing_entity_uid: data.billingEntityUid || undefined,
352
+ billing_entity_type: data.billingEntityType || undefined,
353
+ billing_entity_handle: data.billingEntityHandle || undefined,
354
+ billing_source_organization_uid: data.billingSourceOrganizationUid || undefined,
355
+ billing_source_organization_handle: data.billingSourceOrganizationHandle || undefined,
356
356
  mount_home_folder: data.mountHomeFolder ?? false,
357
357
  volume_uids: normalizedVolumeUids.length > 0 ? normalizedVolumeUids : undefined,
358
358
  volume_uid: normalizedVolumeUids[0] || data.volumeUid || undefined,
@@ -79,7 +79,7 @@ export interface AgentsSdkLike {
79
79
  * import { AgentsMixin, SdkAgentRuntimesClient } from '@datalayer/agent-runtimes';
80
80
  *
81
81
  * const ClientWithAgents = AgentsMixin(DatalayerClient);
82
- * const sdk = new ClientWithAgents({ iamRunUrl, runtimesRunUrl, spacerRunUrl });
82
+ * const sdk = new ClientWithAgents({ iamUrl, runtimesUrl, spacerUrl });
83
83
  * const client = new SdkAgentRuntimesClient(sdk);
84
84
  * ```
85
85
  */