@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
@@ -8,7 +8,7 @@ import * as events from '../api/events';
8
8
  import * as output from '../api/output';
9
9
  import * as evals from '../api/evals';
10
10
  import * as context from '../api/context';
11
- import * as agentSpecs from '../specs/agents';
11
+ import * as agentspecs from '../specs/agents';
12
12
  import { requestDatalayerAPI } from '@datalayer/core/lib/api/DatalayerApi';
13
13
  /** Agents mixin providing durable agent management. */
14
14
  export function AgentsMixin(Base) {
@@ -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
  // ========================================================================
@@ -261,24 +261,24 @@ export function AgentsMixin(Base) {
261
261
  * @param agentSpecId - Agent spec identifier.
262
262
  * @returns The agent spec, or undefined if not found.
263
263
  */
264
- getAgentSpec(agentSpecId) {
265
- return agentSpecs.getAgentSpecs(agentSpecId);
264
+ getAgentspec(agentSpecId) {
265
+ return agentspecs.getAgentspecs(agentSpecId);
266
266
  }
267
267
  /**
268
268
  * List all available agent specifications.
269
269
  * @param prefix - If provided, only return specs whose ID starts with this prefix.
270
270
  * @returns Array of agent specifications.
271
271
  */
272
- listAgentSpecs(prefix) {
273
- return agentSpecs.listAgentSpecs(prefix);
272
+ listAgentspecs(prefix) {
273
+ return agentspecs.listAgentspecs(prefix);
274
274
  }
275
275
  /**
276
276
  * Get required environment variables for an agent spec.
277
277
  * @param spec - The agent specification.
278
278
  * @returns Deduplicated array of required environment variable names.
279
279
  */
280
- getAgentSpecRequiredEnvVars(spec) {
281
- return agentSpecs.getAgentSpecRequiredEnvVars(spec);
280
+ getAgentspecRequiredEnvVars(spec) {
281
+ return agentspecs.getAgentspecRequiredEnvVars(spec);
282
282
  }
283
283
  // ========================================================================
284
284
  // Project Agent Assignment
@@ -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
  */
@@ -13,7 +13,7 @@
13
13
  * import { AgentsMixin, SdkAgentRuntimesClient } from '@datalayer/agent-runtimes';
14
14
  *
15
15
  * const ClientWithAgents = AgentsMixin(DatalayerClient);
16
- * const sdk = new ClientWithAgents({ iamRunUrl, runtimesRunUrl, spacerRunUrl });
16
+ * const sdk = new ClientWithAgents({ iamUrl, runtimesUrl, spacerUrl });
17
17
  * const client = new SdkAgentRuntimesClient(sdk);
18
18
  * ```
19
19
  */
@@ -0,0 +1,93 @@
1
+ import type { Constructor } from '@datalayer/core/lib/client/utils/mixins';
2
+ import { EnvironmentDTO } from '../../models/EnvironmentDTO';
3
+ import { RuntimeDTO } from '../../models/RuntimeDTO';
4
+ import { CodeSandboxSnapshotDTO } from '../../models/CodeSandboxSnapshotDTO';
5
+ import { HealthCheck } from '@datalayer/core/lib/models/HealthCheck';
6
+ /** Options for ensuring a runtime is available. */
7
+ export interface EnsureRuntimeOptions {
8
+ /** Name of the environment to use */
9
+ environmentName?: string;
10
+ /** Maximum credits to allocate */
11
+ creditsLimit?: number;
12
+ /** Whether to wait for runtime to be ready */
13
+ waitForReady?: boolean;
14
+ /** Maximum time to wait for ready state (ms) */
15
+ maxWaitTime?: number;
16
+ /** Whether to reuse existing suitable runtime */
17
+ reuseExisting?: boolean;
18
+ /** Snapshot ID to create runtime from */
19
+ snapshotId?: string;
20
+ }
21
+ /** Runtimes mixin providing computational environment and runtime management. */
22
+ export declare function RuntimesMixin<TBase extends Constructor>(Base: TBase): {
23
+ new (...args: any[]): {
24
+ _extractRuntimePodName(runtimePodNameOrInstance: string | RuntimeDTO): string;
25
+ _extractSnapshotId(snapshotIdOrInstance: string | CodeSandboxSnapshotDTO): string;
26
+ /**
27
+ * List all available computational environments.
28
+ * @returns Array of Environment model instances
29
+ */
30
+ listEnvironments(): Promise<EnvironmentDTO[]>;
31
+ /**
32
+ * Create a new computational runtime.
33
+ * @param environmentName - Name of the environment to use
34
+ * @param type - Type of runtime
35
+ * @param givenName - User-friendly name for the runtime
36
+ * @param creditsLimit - Credits limit
37
+ * @returns Created runtime
38
+ */
39
+ createRuntime(environmentName: string, type: "notebook" | "terminal" | "job", givenName: string, minutesLimit: number, fromSnapshotId?: string): Promise<RuntimeDTO>;
40
+ /**
41
+ * List all runtimes.
42
+ * @returns Array of runtimes
43
+ */
44
+ listRuntimes(): Promise<RuntimeDTO[]>;
45
+ /**
46
+ * Get details for a specific runtime by pod name.
47
+ * @param podName - Runtime pod name
48
+ * @returns Runtime details
49
+ */
50
+ getRuntime(podName: string): Promise<RuntimeDTO>;
51
+ /**
52
+ * Delete a runtime permanently.
53
+ * @param podName - Runtime pod name
54
+ */
55
+ deleteRuntime(podName: string): Promise<void>;
56
+ /**
57
+ * Terminate all runtimes.
58
+ * Lists all runtimes and deletes them in parallel.
59
+ * @returns Array of results for each deletion (fulfilled or rejected)
60
+ */
61
+ terminateAllRuntimes(): Promise<PromiseSettledResult<void>[]>;
62
+ /**
63
+ * Create a snapshot of a runtime.
64
+ * @param podName - Pod name of the runtime to snapshot
65
+ * @param name - Name for the snapshot
66
+ * @param description - Description of the snapshot
67
+ * @param stop - Whether to stop the runtime after creating snapshot (defaults to false)
68
+ * @returns Created snapshot
69
+ */
70
+ createSnapshot(podName: string, name: string, description: string, stop?: boolean): Promise<CodeSandboxSnapshotDTO>;
71
+ /**
72
+ * List all code sandbox snapshots.
73
+ * @returns Array of snapshots
74
+ */
75
+ listSnapshots(): Promise<CodeSandboxSnapshotDTO[]>;
76
+ /**
77
+ * Get details for a specific snapshot by ID.
78
+ * @param id - Snapshot ID
79
+ * @returns Snapshot details
80
+ */
81
+ getSnapshot(id: string): Promise<CodeSandboxSnapshotDTO>;
82
+ /**
83
+ * Delete a snapshot permanently.
84
+ * @param id - Snapshot ID
85
+ */
86
+ deleteSnapshot(id: string): Promise<void>;
87
+ /**
88
+ * Check the health status of the Runtimes service.
89
+ * @returns Health check result with status and response time
90
+ */
91
+ checkRuntimesHealth(): Promise<HealthCheck>;
92
+ };
93
+ } & TBase;
@@ -0,0 +1,229 @@
1
+ /*
2
+ * Copyright (c) 2025-2026 Datalayer, Inc.
3
+ * Distributed under the terms of the Modified BSD License.
4
+ */
5
+ /**
6
+ * Runtimes mixin for managing computational environments and runtime instances.
7
+ * @module client/mixins/RuntimesMixin
8
+ */
9
+ import * as environments from '../../api/runtimes/environments';
10
+ import * as runtimes from '../../api/runtimes/runtimes';
11
+ import * as snapshots from '../../api/runtimes/snapshots';
12
+ import { EnvironmentDTO } from '../../models/EnvironmentDTO';
13
+ import { RuntimeDTO } from '../../models/RuntimeDTO';
14
+ import { CodeSandboxSnapshotDTO } from '../../models/CodeSandboxSnapshotDTO';
15
+ import { HealthCheck } from '@datalayer/core/lib/models/HealthCheck';
16
+ /** Runtimes mixin providing computational environment and runtime management. */
17
+ export function RuntimesMixin(Base) {
18
+ return class extends Base {
19
+ // ========================================================================
20
+ // Helper Functions
21
+ // ========================================================================
22
+ _extractRuntimePodName(runtimePodNameOrInstance) {
23
+ return typeof runtimePodNameOrInstance === 'string'
24
+ ? runtimePodNameOrInstance
25
+ : runtimePodNameOrInstance.podName;
26
+ }
27
+ _extractSnapshotId(snapshotIdOrInstance) {
28
+ return typeof snapshotIdOrInstance === 'string'
29
+ ? snapshotIdOrInstance
30
+ : snapshotIdOrInstance.uid;
31
+ }
32
+ // ========================================================================
33
+ // Environments
34
+ // ========================================================================
35
+ /**
36
+ * List all available computational environments.
37
+ * @returns Array of Environment model instances
38
+ */
39
+ async listEnvironments() {
40
+ const token = this.getToken();
41
+ const runtimesUrl = this.getRuntimesUrl();
42
+ const response = await environments.listEnvironments(token, runtimesUrl);
43
+ // Save for later use after first call
44
+ this.environments = response.environments.map(env => new EnvironmentDTO(env, this));
45
+ return this.environments;
46
+ }
47
+ // ========================================================================
48
+ // Runtimes
49
+ // ========================================================================
50
+ /**
51
+ * Create a new computational runtime.
52
+ * @param environmentName - Name of the environment to use
53
+ * @param type - Type of runtime
54
+ * @param givenName - User-friendly name for the runtime
55
+ * @param creditsLimit - Credits limit
56
+ * @returns Created runtime
57
+ */
58
+ async createRuntime(environmentName, type, givenName, minutesLimit, fromSnapshotId) {
59
+ if (!this.environments) {
60
+ await this.listEnvironments();
61
+ }
62
+ if (this.environments) {
63
+ const env = this.environments.find((e) => e.name === environmentName);
64
+ if (!env) {
65
+ throw new Error(`Environment "${environmentName}" not found. Available environments: ${this.environments.map((e) => e.name).join(', ')}`);
66
+ }
67
+ else {
68
+ const token = this.getToken();
69
+ const runtimesUrl = this.getRuntimesUrl();
70
+ const creditsLimit = this.calculateCreditsFromMinutes(minutesLimit, env.burningRate);
71
+ const data = {
72
+ environment_name: environmentName,
73
+ type,
74
+ given_name: givenName,
75
+ credits_limit: creditsLimit,
76
+ from: fromSnapshotId,
77
+ };
78
+ const response = await runtimes.createRuntime(token, data, runtimesUrl);
79
+ return new RuntimeDTO(response.runtime, this);
80
+ }
81
+ }
82
+ else {
83
+ throw new Error('Environments not loaded');
84
+ }
85
+ }
86
+ /**
87
+ * List all runtimes.
88
+ * @returns Array of runtimes
89
+ */
90
+ async listRuntimes() {
91
+ const token = this.getToken();
92
+ const runtimesUrl = this.getRuntimesUrl();
93
+ const response = await runtimes.listRuntimes(token, runtimesUrl);
94
+ return response.runtimes.map(r => new RuntimeDTO(r, this));
95
+ }
96
+ /**
97
+ * Get details for a specific runtime by pod name.
98
+ * @param podName - Runtime pod name
99
+ * @returns Runtime details
100
+ */
101
+ async getRuntime(podName) {
102
+ const token = this.getToken();
103
+ const runtimesUrl = this.getRuntimesUrl();
104
+ const runtimeData = await runtimes.getRuntime(token, podName, runtimesUrl);
105
+ return new RuntimeDTO(runtimeData, this);
106
+ }
107
+ /**
108
+ * Delete a runtime permanently.
109
+ * @param podName - Runtime pod name
110
+ */
111
+ async deleteRuntime(podName) {
112
+ const token = this.getToken();
113
+ const runtimesUrl = this.getRuntimesUrl();
114
+ await runtimes.deleteRuntime(token, podName, runtimesUrl);
115
+ }
116
+ /**
117
+ * Terminate all runtimes.
118
+ * Lists all runtimes and deletes them in parallel.
119
+ * @returns Array of results for each deletion (fulfilled or rejected)
120
+ */
121
+ async terminateAllRuntimes() {
122
+ const token = this.getToken();
123
+ const runtimesUrl = this.getRuntimesUrl();
124
+ // List all runtimes
125
+ const response = await runtimes.listRuntimes(token, runtimesUrl);
126
+ // Delete all runtimes in parallel
127
+ const deletePromises = response.runtimes.map(runtime => runtimes.deleteRuntime(token, runtime.pod_name, runtimesUrl));
128
+ return Promise.allSettled(deletePromises);
129
+ }
130
+ // ========================================================================
131
+ // Snapshots
132
+ // ========================================================================
133
+ /**
134
+ * Create a snapshot of a runtime.
135
+ * @param podName - Pod name of the runtime to snapshot
136
+ * @param name - Name for the snapshot
137
+ * @param description - Description of the snapshot
138
+ * @param stop - Whether to stop the runtime after creating snapshot (defaults to false)
139
+ * @returns Created snapshot
140
+ */
141
+ async createSnapshot(podName, name, description, stop = false) {
142
+ const token = this.getToken();
143
+ const runtimesUrl = this.getRuntimesUrl();
144
+ const data = {
145
+ pod_name: podName,
146
+ name,
147
+ description,
148
+ stop,
149
+ };
150
+ const response = await snapshots.createSnapshot(token, data, runtimesUrl);
151
+ return new CodeSandboxSnapshotDTO(response.snapshot, this);
152
+ }
153
+ /**
154
+ * List all code sandbox snapshots.
155
+ * @returns Array of snapshots
156
+ */
157
+ async listSnapshots() {
158
+ const token = this.getToken();
159
+ const runtimesUrl = this.getRuntimesUrl();
160
+ const response = await snapshots.listSnapshots(token, runtimesUrl);
161
+ return response.snapshots.map(s => new CodeSandboxSnapshotDTO(s, this));
162
+ }
163
+ /**
164
+ * Get details for a specific snapshot by ID.
165
+ * @param id - Snapshot ID
166
+ * @returns Snapshot details
167
+ */
168
+ async getSnapshot(id) {
169
+ const token = this.getToken();
170
+ const runtimesUrl = this.getRuntimesUrl();
171
+ const response = await snapshots.getSnapshot(token, id, runtimesUrl);
172
+ return new CodeSandboxSnapshotDTO(response.snapshot, this);
173
+ }
174
+ /**
175
+ * Delete a snapshot permanently.
176
+ * @param id - Snapshot ID
177
+ */
178
+ async deleteSnapshot(id) {
179
+ const token = this.getToken();
180
+ const runtimesUrl = this.getRuntimesUrl();
181
+ await snapshots.deleteSnapshot(token, id, runtimesUrl);
182
+ }
183
+ // ========================================================================
184
+ // Service Health Checks
185
+ // ========================================================================
186
+ /**
187
+ * Check the health status of the Runtimes service.
188
+ * @returns Health check result with status and response time
189
+ */
190
+ async checkRuntimesHealth() {
191
+ const startTime = Date.now();
192
+ const errors = [];
193
+ let status = 'unknown';
194
+ let healthy = false;
195
+ try {
196
+ // Test basic connectivity by listing environments (lightweight operation)
197
+ const environments = await this.listEnvironments();
198
+ const responseTime = Date.now() - startTime;
199
+ if (Array.isArray(environments)) {
200
+ healthy = true;
201
+ status = 'operational';
202
+ }
203
+ else {
204
+ status = 'degraded';
205
+ errors.push('Unexpected response format from environments endpoint');
206
+ }
207
+ return new HealthCheck({
208
+ healthy,
209
+ status,
210
+ responseTime,
211
+ errors,
212
+ timestamp: new Date(),
213
+ }, this);
214
+ }
215
+ catch (error) {
216
+ const responseTime = Date.now() - startTime;
217
+ status = 'down';
218
+ errors.push(`Service unreachable: ${error}`);
219
+ return new HealthCheck({
220
+ healthy: false,
221
+ status,
222
+ responseTime,
223
+ errors,
224
+ timestamp: new Date(),
225
+ }, this);
226
+ }
227
+ }
228
+ };
229
+ }