@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
@@ -17,9 +17,11 @@ import { create } from 'zustand';
17
17
  import { persist, createJSONStorage } from 'zustand/middleware';
18
18
  import { useCoreStore, useDatalayer } from '@datalayer/core';
19
19
  import { useIAMStore } from '@datalayer/core/lib/state';
20
+ import { runtimesStore } from '../state';
20
21
  import { agentRuntimeStore, useAgentRuntimeStore, useAgentRuntimeConnection, useAgentRuntimeStatus, useAgentRuntimeError, useAgentRuntimeIsLaunching, } from '../stores/agentRuntimeStore';
21
22
  import { parseAgentStreamMessage, } from '../types/stream';
22
23
  import { DEFAULT_AGENT_CONFIG } from '../types/config';
24
+ import { disposeSandboxServiceManagers } from '../services/sandboxServiceManagers';
23
25
  // ═══════════════════════════════════════════════════════════════════════════
24
26
  // Constants
25
27
  // ═══════════════════════════════════════════════════════════════════════════
@@ -46,6 +48,60 @@ export const agentQueryKeys = {
46
48
  // ═══════════════════════════════════════════════════════════════════════════
47
49
  // Helpers
48
50
  // ═══════════════════════════════════════════════════════════════════════════
51
+ /**
52
+ * Session tombstones for runtime pods deleted from this client.
53
+ *
54
+ * After a DELETE succeeds, the control plane can keep returning the pod
55
+ * (status \"running\") for a few seconds. Without a tombstone, the immediate
56
+ * list refetch re-adds the dead pod to the query cache (and re-seeds the
57
+ * per-pod detail cache), so consumers rebuild Jupyter `ServiceManager`s
58
+ * against the dead ingress — producing endless CORS `/api/kernels` errors.
59
+ *
60
+ * Entries expire after a TTL so a pod that legitimately reappears later
61
+ * (e.g. resumed from a checkpoint under the same pod name) is not hidden
62
+ * forever; resume/create mutations also clear the tombstone eagerly.
63
+ */
64
+ const DELETED_POD_TOMBSTONE_TTL_MS = 5 * 60 * 1000;
65
+ const deletedRuntimePodTombstones = new Map();
66
+ /** Mark a runtime pod as deleted by this client (tombstone). */
67
+ export function markRuntimePodDeleted(podName) {
68
+ const normalized = String(podName || '').trim();
69
+ if (normalized) {
70
+ deletedRuntimePodTombstones.set(normalized, Date.now());
71
+ // Centralized teardown: dispose every ServiceManager any surface opened
72
+ // against this pod's sandbox so their kernelspecs/sessions/users pollers
73
+ // stop immediately instead of waiting for query-cache propagation.
74
+ disposeSandboxServiceManagers(normalized);
75
+ }
76
+ }
77
+ /** Clear a deleted-pod tombstone (pod legitimately exists again). */
78
+ export function clearRuntimePodDeleted(podName) {
79
+ deletedRuntimePodTombstones.delete(String(podName || '').trim());
80
+ }
81
+ /** Statuses that imply a live pod the client would connect to. */
82
+ const LIVE_RUNTIME_STATUSES = new Set([
83
+ 'running',
84
+ 'resumed',
85
+ 'starting',
86
+ 'resuming',
87
+ ]);
88
+ /**
89
+ * True when a runtime record is a stale control-plane echo of a pod this
90
+ * client already deleted: tombstoned, within TTL, and claiming a live status.
91
+ * Checkpoint-synthesised `paused` records pass through (no live pod to poll).
92
+ */
93
+ function isStaleDeletedRuntime(runtime) {
94
+ const podName = String(runtime?.pod_name || '').trim();
95
+ const deletedAt = deletedRuntimePodTombstones.get(podName);
96
+ if (deletedAt === undefined) {
97
+ return false;
98
+ }
99
+ if (Date.now() - deletedAt > DELETED_POD_TOMBSTONE_TTL_MS) {
100
+ deletedRuntimePodTombstones.delete(podName);
101
+ return false;
102
+ }
103
+ return LIVE_RUNTIME_STATUSES.has(runtime.status);
104
+ }
49
105
  const RUNTIME_STATUS_MAP = {
50
106
  resume: 'resumed',
51
107
  resumed: 'resumed',
@@ -148,11 +204,11 @@ export function useAgentRuntimes(options = {}) {
148
204
  import.meta.env.VITE_BASE_URL ||
149
205
  'http://localhost:8765');
150
206
  }
151
- return (configuration?.runtimesRunUrl ||
207
+ return (configuration?.runtimesUrl ||
152
208
  import.meta.env.VITE_DATALAYER_AGENT_RUNTIMES_URL ||
153
209
  'https://r1.datalayer.run');
154
210
  }, [
155
- configuration?.runtimesRunUrl,
211
+ configuration?.runtimesUrl,
156
212
  runtimeCreationBaseUrl,
157
213
  runtimeCreationTarget,
158
214
  ]);
@@ -162,12 +218,12 @@ export function useAgentRuntimes(options = {}) {
162
218
  const { iamStore, coreStore } = await import('@datalayer/core/lib/state');
163
219
  const token = iamStore.getState().token || '';
164
220
  const config = coreStore.getState().configuration;
165
- const runUrl = config?.aiagentsRunUrl || '';
166
- const runtimesRunUrl = resolvedRuntimeCreationBaseUrl;
167
- return { token, runUrl, runtimesRunUrl };
221
+ const datalayerUrl = config?.aiAgentsUrl || '';
222
+ const runtimesUrl = resolvedRuntimeCreationBaseUrl;
223
+ return { token, datalayerUrl, runtimesUrl };
168
224
  }
169
225
  catch {
170
- return { token: '', runUrl: '', runtimesRunUrl: '' };
226
+ return { token: '', datalayerUrl: '', runtimesUrl: '' };
171
227
  }
172
228
  }, [resolvedRuntimeCreationBaseUrl]);
173
229
  // ─── Launch Runtime ─────────────────────────────────────────────────
@@ -188,13 +244,13 @@ export function useAgentRuntimes(options = {}) {
188
244
  const conn = await storeLaunchAgent(runtimeOptions
189
245
  ? {
190
246
  ...runtimeOptions,
191
- runtimesRunUrl: resolvedRuntimeCreationBaseUrl,
247
+ runtimesUrl: resolvedRuntimeCreationBaseUrl,
192
248
  }
193
249
  : {
194
250
  environmentName: 'ai-agents-env',
195
251
  creditsLimit: 10,
196
252
  givenName: safeName,
197
- runtimesRunUrl: resolvedRuntimeCreationBaseUrl,
253
+ runtimesUrl: resolvedRuntimeCreationBaseUrl,
198
254
  });
199
255
  setLifecycleStatus('ready');
200
256
  return conn;
@@ -212,7 +268,7 @@ export function useAgentRuntimes(options = {}) {
212
268
  }
213
269
  return storeLaunchAgent({
214
270
  ...runtimeOptions,
215
- runtimesRunUrl: resolvedRuntimeCreationBaseUrl,
271
+ runtimesUrl: resolvedRuntimeCreationBaseUrl,
216
272
  });
217
273
  }
218
274
  }, [
@@ -271,6 +327,29 @@ export function useAgentRuntimes(options = {}) {
271
327
  setIsCreating(false);
272
328
  }
273
329
  }, [agentSpecId, agentConfig, agentSpec, hasSpec, runtime, storeCreateAgent]);
330
+ // ─── Teardown ───────────────────────────────────────────────────────
331
+ const teardown = useCallback(async () => {
332
+ const agentId = runtime?.agentId;
333
+ const agentBaseUrl = runtime?.agentBaseUrl;
334
+ if (agentId && agentBaseUrl) {
335
+ try {
336
+ const { token } = await getAuthHeaders();
337
+ await fetch(`${agentBaseUrl}/api/v1/agents/${encodeURIComponent(agentId)}`, {
338
+ method: 'DELETE',
339
+ headers: token ? { Authorization: `Bearer ${token}` } : {},
340
+ });
341
+ }
342
+ catch {
343
+ // Best-effort teardown: ignore network / 404 errors.
344
+ }
345
+ }
346
+ // Reset in-process runtime state so a fresh agent can be launched.
347
+ hasCreatedAgentRef.current = false;
348
+ hasAutoStarted.current = false;
349
+ setLifecycleStatus('idle');
350
+ setLifecycleError(null);
351
+ agentRuntimeStore.getState().reset();
352
+ }, [runtime?.agentId, runtime?.agentBaseUrl, getAuthHeaders]);
274
353
  // ─── Auto-create agent when runtime is ready (connect mode) ───────
275
354
  useEffect(() => {
276
355
  if (!hasSpec &&
@@ -324,12 +403,12 @@ export function useAgentRuntimes(options = {}) {
324
403
  let cancelled = false;
325
404
  const bootstrap = async () => {
326
405
  try {
327
- const { token, runtimesRunUrl } = await getAuthHeaders();
406
+ const { token, runtimesUrl } = await getAuthHeaders();
328
407
  if (!token) {
329
408
  return;
330
409
  }
331
- const { listRuntimes } = await import('@datalayer/core/lib/api/runtimes/runtimes');
332
- const runtimesResponse = await listRuntimes(token, runtimesRunUrl);
410
+ const { listRuntimes } = await import('../api/runtimes/runtimes');
411
+ const runtimesResponse = await listRuntimes(token, runtimesUrl);
333
412
  const runtimes = runtimesResponse.runtimes || [];
334
413
  const aiAgentRuntimes = runtimes.filter(rt => {
335
414
  if (rt.environment_name !== 'ai-agents-env') {
@@ -338,9 +417,9 @@ export function useAgentRuntimes(options = {}) {
338
417
  if (!agentSpecId) {
339
418
  return true;
340
419
  }
341
- const runtimeAgentSpecId = rt
420
+ const runtimeAgentspecId = rt
342
421
  .agent_spec_id;
343
- return runtimeAgentSpecId === agentSpecId;
422
+ return runtimeAgentspecId === agentSpecId;
344
423
  });
345
424
  const latestRuntime = aiAgentRuntimes.slice().sort((a, b) => {
346
425
  const aTs = Number(a.started_at || 0);
@@ -441,6 +520,7 @@ export function useAgentRuntimes(options = {}) {
441
520
  endpoint,
442
521
  serviceManager,
443
522
  createAgent,
523
+ teardown,
444
524
  isCreating,
445
525
  // Status
446
526
  isReady,
@@ -487,13 +567,16 @@ export function useAgentRuntimesQuery(scope, queryOptions) {
487
567
  }
488
568
  const query = params.toString();
489
569
  const resp = await requestDatalayer({
490
- url: `${configuration.runtimesRunUrl}/api/runtimes/v1/runtimes${query ? `?${query}` : ''}`,
570
+ url: `${configuration.runtimesUrl}/api/runtimes/v1/runtimes${query ? `?${query}` : ''}`,
491
571
  method: 'GET',
492
572
  });
493
573
  if (resp.success && resp.runtimes) {
494
574
  const agentRuntimes = resp.runtimes
495
575
  .filter(rt => rt.environment_name === 'ai-agents-env')
496
- .map(toAgentRuntimeData);
576
+ .map(toAgentRuntimeData)
577
+ // Drop stale echoes of pods deleted from this client so consumers
578
+ // never reconnect a ServiceManager to a dead ingress (CORS spam).
579
+ .filter(runtime => !isStaleDeletedRuntime(runtime));
497
580
  agentRuntimes.forEach((runtime) => {
498
581
  queryClient.setQueryData(agentQueryKeys.agentRuntimes.detail(runtime.pod_name), runtime);
499
582
  });
@@ -518,11 +601,17 @@ export function useAgentRuntimeByPodName(podName) {
518
601
  queryKey: agentQueryKeys.agentRuntimes.detail(podName ?? ''),
519
602
  queryFn: async () => {
520
603
  const resp = await requestDatalayer({
521
- url: `${configuration.runtimesRunUrl}/api/runtimes/v1/runtimes/${podName}`,
604
+ url: `${configuration.runtimesUrl}/api/runtimes/v1/runtimes/${podName}`,
522
605
  method: 'GET',
523
606
  });
524
607
  if (resp.runtime) {
525
- return toAgentRuntimeData(resp.runtime);
608
+ const runtime = toAgentRuntimeData(resp.runtime);
609
+ if (isStaleDeletedRuntime(runtime)) {
610
+ // Stale echo of a pod deleted from this client — surface as an
611
+ // error so the poll stops and consumers tear the connection down.
612
+ throw new Error('Agent runtime deleted');
613
+ }
614
+ return runtime;
526
615
  }
527
616
  throw new Error('Failed to fetch agent runtime');
528
617
  },
@@ -551,7 +640,7 @@ export function useCreateAgentRuntime() {
551
640
  ? [String(data.volumeUid).trim()]
552
641
  : [];
553
642
  return requestDatalayer({
554
- url: `${configuration.runtimesRunUrl}/api/runtimes/v1/runtimes`,
643
+ url: `${configuration.runtimesUrl}/api/runtimes/v1/runtimes`,
555
644
  method: 'POST',
556
645
  body: {
557
646
  environment_name: data.environmentName || 'ai-agents-env',
@@ -563,11 +652,11 @@ export function useCreateAgentRuntime() {
563
652
  agent_spec_id: data.agentSpecId || undefined,
564
653
  agent_spec: data.agentSpec || undefined,
565
654
  user_account_handle: data.userAccountHandle || undefined,
566
- billable_account_uid: data.billableAccountUid || undefined,
567
- billable_account_type: data.billableAccountType || undefined,
568
- billable_account_handle: data.billableAccountHandle || undefined,
569
- billable_source_organization_uid: data.billableSourceOrganizationUid || undefined,
570
- billable_source_organization_handle: data.billableSourceOrganizationHandle || undefined,
655
+ billing_entity_uid: data.billingEntityUid || undefined,
656
+ billing_entity_type: data.billingEntityType || undefined,
657
+ billing_entity_handle: data.billingEntityHandle || undefined,
658
+ billing_source_organization_uid: data.billingSourceOrganizationUid || undefined,
659
+ billing_source_organization_handle: data.billingSourceOrganizationHandle || undefined,
571
660
  mount_home_folder: data.mountHomeFolder ?? false,
572
661
  volume_uids: normalizedVolumeUids.length > 0 ? normalizedVolumeUids : undefined,
573
662
  volume_uid: normalizedVolumeUids[0] || data.volumeUid || undefined,
@@ -577,6 +666,8 @@ export function useCreateAgentRuntime() {
577
666
  onSuccess: resp => {
578
667
  if (resp.success && resp.runtime) {
579
668
  const mapped = toAgentRuntimeData(resp.runtime);
669
+ // A fresh runtime legitimately exists — drop any stale tombstone.
670
+ clearRuntimePodDeleted(mapped.pod_name);
580
671
  queryClient.setQueryData(agentQueryKeys.agentRuntimes.detail(mapped.pod_name), mapped);
581
672
  queryClient.invalidateQueries({
582
673
  queryKey: agentQueryKeys.agentRuntimes.all(),
@@ -592,14 +683,70 @@ export function useDeleteAgentRuntime() {
592
683
  const { configuration } = useCoreStore();
593
684
  const { requestDatalayer } = useDatalayer({ notifyOnError: false });
594
685
  const queryClient = useQueryClient();
686
+ const getErrorStatus = (error) => {
687
+ if (!error || typeof error !== 'object') {
688
+ return undefined;
689
+ }
690
+ const response = error.response;
691
+ return typeof response?.status === 'number' ? response.status : undefined;
692
+ };
693
+ const getErrorText = (error) => {
694
+ if (!error || typeof error !== 'object') {
695
+ return '';
696
+ }
697
+ const responseData = error.response?.data;
698
+ return String(responseData?.detail ||
699
+ responseData?.message ||
700
+ error.message ||
701
+ '').toLowerCase();
702
+ };
595
703
  return useMutation({
596
704
  mutationFn: async (podName) => {
597
- return requestDatalayer({
598
- url: `${configuration.runtimesRunUrl}/api/runtimes/v1/runtimes/${podName}`,
599
- method: 'DELETE',
600
- });
705
+ try {
706
+ return await requestDatalayer({
707
+ url: `${configuration.runtimesUrl}/api/runtimes/v1/runtimes/${podName}`,
708
+ method: 'DELETE',
709
+ });
710
+ }
711
+ catch (error) {
712
+ const status = getErrorStatus(error);
713
+ const message = getErrorText(error);
714
+ const maybeAlreadyDeleted = status === 404 ||
715
+ message.includes('no reservation') ||
716
+ message.includes('unknown reservation') ||
717
+ message.includes('not found');
718
+ if (!maybeAlreadyDeleted) {
719
+ throw error;
720
+ }
721
+ // The backend can return an IAM reservation error even after the pod
722
+ // has already been deleted successfully. Confirm state by checking if
723
+ // the runtime detail endpoint still exists.
724
+ try {
725
+ await requestDatalayer({
726
+ url: `${configuration.runtimesUrl}/api/runtimes/v1/runtimes/${podName}`,
727
+ method: 'GET',
728
+ });
729
+ // Runtime still exists: propagate original DELETE failure.
730
+ throw error;
731
+ }
732
+ catch (checkError) {
733
+ const checkStatus = getErrorStatus(checkError);
734
+ if (checkStatus === 404) {
735
+ return { success: true, recovered: true };
736
+ }
737
+ throw error;
738
+ }
739
+ }
601
740
  },
602
741
  onSuccess: (_data, podName) => {
742
+ // Tombstone the pod so refetches that still echo it from the control
743
+ // plane (deletion lag) do not re-add it to the caches below.
744
+ markRuntimePodDeleted(podName);
745
+ // Prune the pod from the runtimes store immediately so the remote service
746
+ // managers dispose right away and stop polling the now-dead pod ingress
747
+ // (otherwise `/api/kernels` requests keep firing until the next
748
+ // `refreshRuntimePods()` poll tick, producing CORS errors).
749
+ runtimesStore.getState().removeRuntimePod(podName);
603
750
  queryClient.setQueriesData({ queryKey: agentQueryKeys.agentRuntimes.lists() }, (current) => {
604
751
  if (!Array.isArray(current)) {
605
752
  return current;
@@ -707,6 +854,16 @@ export function useAgentsRuntimes(scope, queryOptions) {
707
854
  const createRuntimeMutation = useCreateAgentRuntime();
708
855
  const deleteRuntimeMutation = useDeleteAgentRuntime();
709
856
  const refreshRuntimes = useRefreshAgentRuntimes();
857
+ const terminateRuntimeByPod = useCallback(async (podName, options) => {
858
+ const normalizedPodName = String(podName || '').trim();
859
+ if (!normalizedPodName) {
860
+ return;
861
+ }
862
+ if (options?.beforeTerminate) {
863
+ await options.beforeTerminate();
864
+ }
865
+ return deleteRuntimeMutation.mutateAsync(normalizedPodName);
866
+ }, [deleteRuntimeMutation]);
710
867
  return useMemo(() => ({
711
868
  runtimes: runtimesQuery.data ?? EMPTY_RUNTIMES,
712
869
  isRuntimesLoading: runtimesQuery.isLoading,
@@ -714,7 +871,8 @@ export function useAgentsRuntimes(scope, queryOptions) {
714
871
  runtimesError: runtimesQuery.error,
715
872
  refetchRuntimes: () => runtimesQuery.refetch(),
716
873
  refreshRuntimes,
717
- deleteRuntimeByPod: async (podName) => deleteRuntimeMutation.mutateAsync(podName),
874
+ terminateRuntimeByPod,
875
+ deleteRuntimeByPod: async (podName) => terminateRuntimeByPod(podName),
718
876
  createRuntime: async (data) => createRuntimeMutation.mutateAsync(data),
719
877
  }), [
720
878
  runtimesQuery.data,
@@ -723,6 +881,7 @@ export function useAgentsRuntimes(scope, queryOptions) {
723
881
  runtimesQuery.error,
724
882
  runtimesQuery.refetch,
725
883
  refreshRuntimes,
884
+ terminateRuntimeByPod,
726
885
  createRuntimeMutation,
727
886
  deleteRuntimeMutation,
728
887
  ]);
@@ -1,10 +1,10 @@
1
- import type { AgentRuntimeData, AgentSpec } from '../types';
1
+ import type { AgentRuntimeData, Agentspec } from '../types';
2
2
  /**
3
3
  * Centralised Zustand store for agents.
4
4
  *
5
5
  * Two collections are maintained:
6
6
  *
7
- * 1. **agentSpecs** – the static catalogue of available agent blueprints
7
+ * 1. **agentspecs** – the static catalogue of available agent blueprints
8
8
  * (from `@datalayer/agent-runtimes/lib/specs`).
9
9
  * Populated once at import time; call `refreshSpecs()` to re-read.
10
10
  *
@@ -14,7 +14,7 @@ import type { AgentRuntimeData, AgentSpec } from '../types';
14
14
  */
15
15
  export type AgentCatalogStoreState = {
16
16
  /** Static catalogue of agent blueprints. */
17
- agentSpecs: AgentSpec[];
17
+ agentspecs: Agentspec[];
18
18
  /** Live agent runtimes (running / starting). */
19
19
  runningAgents: AgentRuntimeData[];
20
20
  /** Re-read agent specs from the config. */
@@ -10,18 +10,18 @@
10
10
  * @module hooks/useAgentsCatalog
11
11
  */
12
12
  import { create } from 'zustand';
13
- import { listAgentSpecs } from '../specs';
13
+ import { listAgentspecs } from '../specs';
14
14
  export const useAgentCatalogStore = create()(set => ({
15
- agentSpecs: listAgentSpecs(),
15
+ agentspecs: listAgentspecs(),
16
16
  runningAgents: [],
17
- refreshSpecs: () => set({ agentSpecs: listAgentSpecs() }),
17
+ refreshSpecs: () => set({ agentspecs: listAgentspecs() }),
18
18
  setRunningAgents: agents => set(state => ({
19
19
  runningAgents: agents.map(agent => {
20
20
  if (agent.agentSpec)
21
21
  return agent;
22
22
  if (!agent.agent_spec_id)
23
23
  return agent;
24
- const spec = state.agentSpecs.find(s => s.id === agent.agent_spec_id);
24
+ const spec = state.agentspecs.find(s => s.id === agent.agent_spec_id);
25
25
  return spec ? { ...agent, agentSpec: spec } : agent;
26
26
  }),
27
27
  })),
@@ -23,7 +23,7 @@ export const useAgentsService = (baseUrlOverride = 'api/ai-agents/v1') => {
23
23
  const { requestDatalayer } = useDatalayer({ notifyOnError: false });
24
24
  const createAgent = (documentId, documentType, ingress, token, kernelId, { signal, baseUrl = baseUrlOverride } = {}) => {
25
25
  return requestDatalayer({
26
- url: URLExt.join(configuration.aiagentsRunUrl, baseUrl, 'agents'),
26
+ url: URLExt.join(configuration.aiAgentsUrl, baseUrl, 'agents'),
27
27
  method: 'POST',
28
28
  body: {
29
29
  document_id: documentId,
@@ -39,28 +39,28 @@ export const useAgentsService = (baseUrlOverride = 'api/ai-agents/v1') => {
39
39
  };
40
40
  const getAgents = ({ signal, baseUrl = baseUrlOverride, } = {}) => {
41
41
  return requestDatalayer({
42
- url: URLExt.join(configuration.aiagentsRunUrl, baseUrl, 'agents'),
42
+ url: URLExt.join(configuration.aiAgentsUrl, baseUrl, 'agents'),
43
43
  method: 'GET',
44
44
  signal,
45
45
  });
46
46
  };
47
47
  const deleteAgent = (documentId, { signal, baseUrl = baseUrlOverride } = {}) => {
48
48
  return requestDatalayer({
49
- url: URLExt.join(configuration.aiagentsRunUrl, baseUrl, 'agents', documentId),
49
+ url: URLExt.join(configuration.aiAgentsUrl, baseUrl, 'agents', documentId),
50
50
  method: 'DELETE',
51
51
  signal,
52
52
  });
53
53
  };
54
54
  const getAgent = (documentId, { signal, baseUrl = baseUrlOverride } = {}) => {
55
55
  return requestDatalayer({
56
- url: URLExt.join(configuration.aiagentsRunUrl, baseUrl, 'agents', documentId),
56
+ url: URLExt.join(configuration.aiAgentsUrl, baseUrl, 'agents', documentId),
57
57
  method: 'GET',
58
58
  signal,
59
59
  });
60
60
  };
61
61
  const patchAgent = (documentId, ingress, token, kernelId, { signal, baseUrl = baseUrlOverride } = {}) => {
62
62
  return requestDatalayer({
63
- url: URLExt.join(configuration.aiagentsRunUrl, baseUrl, 'agents', documentId),
63
+ url: URLExt.join(configuration.aiAgentsUrl, baseUrl, 'agents', documentId),
64
64
  method: 'PATCH',
65
65
  body: {
66
66
  runtime: ingress && token && kernelId
@@ -0,0 +1,4 @@
1
+ declare const useCellOutputshot: () => (string | ((node: HTMLDivElement) => void) | {
2
+ error: undefined;
3
+ })[];
4
+ export default useCellOutputshot;
@@ -0,0 +1,25 @@
1
+ /*
2
+ * Copyright (c) 2025-2026 Datalayer, Inc.
3
+ * Distributed under the terms of the Modified BSD License.
4
+ */
5
+ import { useState } from 'react';
6
+ import { useCellStore } from '../state/substates';
7
+ import { takeHTMLNodeScreencapture } from '@datalayer/core/lib/utils/Screencapture';
8
+ const useCellOutputshot = () => {
9
+ const [outputshot, setOutputshot] = useState('');
10
+ const [error, setError] = useState();
11
+ const { update } = useCellStore();
12
+ const takeOutputshot = (node) => {
13
+ takeHTMLNodeScreencapture(node)
14
+ .then(outputshotData => {
15
+ setOutputshot(outputshotData);
16
+ update({
17
+ outputshotData,
18
+ });
19
+ return outputshotData;
20
+ })
21
+ .catch(reason => setError(reason));
22
+ };
23
+ return [outputshot, takeOutputshot, { error }];
24
+ };
25
+ export default useCellOutputshot;
@@ -48,7 +48,7 @@ export type TerminateAgentParams = {
48
48
  * Calls ``GET /api/runtimes/v1/runtime-checkpoints`` and returns
49
49
  * the list of checkpoint records in visible states.
50
50
  */
51
- export declare function useCheckpointsQuery(): import("@tanstack/react-query").UseQueryResult<CheckpointData[], Error>;
51
+ export declare function useCheckpointsQuery(): import("@tanstack/react-query").UseQueryResult<NoInfer<CheckpointData[]>, Error>;
52
52
  /**
53
53
  * Hook to refresh the checkpoints list.
54
54
  */
@@ -73,14 +73,14 @@ export declare function useResumePausedAgentRuntime(): import("@tanstack/react-q
73
73
  * until the checkpoint reaches ``paused`` or ``failed``.
74
74
  * On success, both runtimes and checkpoints queries are invalidated.
75
75
  */
76
- export declare function usePauseAgent(): import("@tanstack/react-query").UseMutationResult<import("@datalayer/core/lib/api/runtimes/runtimes").PauseResumeResponse, Error, PauseAgentParams, unknown>;
76
+ export declare function usePauseAgent(): import("@tanstack/react-query").UseMutationResult<import("../api/runtimes/runtimes").PauseResumeResponse, Error, PauseAgentParams, unknown>;
77
77
  /**
78
78
  * Hook to resume a paused agent runtime from a checkpoint.
79
79
  *
80
80
  * Calls ``POST .../resume`` then invalidates both runtimes and
81
81
  * checkpoints queries so the UI reflects the new state.
82
82
  */
83
- export declare function useResumeAgent(): import("@tanstack/react-query").UseMutationResult<import("@datalayer/core/lib/api/runtimes/runtimes").PauseResumeResponse, Error, ResumeAgentParams, unknown>;
83
+ export declare function useResumeAgent(): import("@tanstack/react-query").UseMutationResult<import("../api/runtimes/runtimes").PauseResumeResponse, Error, ResumeAgentParams, unknown>;
84
84
  /**
85
85
  * Hook to create a named checkpoint (pause → wait → stay paused).
86
86
  *
@@ -88,7 +88,7 @@ export declare function useResumeAgent(): import("@tanstack/react-query").UseMut
88
88
  * this hook creates a named checkpoint record for later restore.
89
89
  */
90
90
  export declare function useCheckpointAgent(): import("@tanstack/react-query").UseMutationResult<{
91
- checkpoint: import("@datalayer/core/lib/api/runtimes/checkpoints").RuntimeCheckpointData;
91
+ checkpoint: import("../api/runtimes/checkpoints").RuntimeCheckpointData;
92
92
  success: boolean;
93
93
  message: string;
94
94
  checkpoint_id: string | null;
@@ -163,12 +163,12 @@ export declare function useAgentLifecycle(options: AgentLifecycleOptions): Agent
163
163
  * for pause, resume, and checkpoint lifecycle.
164
164
  */
165
165
  export declare function useCheckpoints(): {
166
- checkpointsQuery: import("@tanstack/react-query").UseQueryResult<CheckpointData[], Error>;
166
+ checkpointsQuery: import("@tanstack/react-query").UseQueryResult<NoInfer<CheckpointData[]>, Error>;
167
167
  refresh: () => void;
168
- pauseAgent: import("@tanstack/react-query").UseMutationResult<import("@datalayer/core/lib/api/runtimes/runtimes").PauseResumeResponse, Error, PauseAgentParams, unknown>;
169
- resumeAgent: import("@tanstack/react-query").UseMutationResult<import("@datalayer/core/lib/api/runtimes/runtimes").PauseResumeResponse, Error, ResumeAgentParams, unknown>;
168
+ pauseAgent: import("@tanstack/react-query").UseMutationResult<import("../api/runtimes/runtimes").PauseResumeResponse, Error, PauseAgentParams, unknown>;
169
+ resumeAgent: import("@tanstack/react-query").UseMutationResult<import("../api/runtimes/runtimes").PauseResumeResponse, Error, ResumeAgentParams, unknown>;
170
170
  checkpointAgent: import("@tanstack/react-query").UseMutationResult<{
171
- checkpoint: import("@datalayer/core/lib/api/runtimes/checkpoints").RuntimeCheckpointData;
171
+ checkpoint: import("../api/runtimes/checkpoints").RuntimeCheckpointData;
172
172
  success: boolean;
173
173
  message: string;
174
174
  checkpoint_id: string | null;