@datalayer/agent-runtimes 1.0.10 → 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 (448) hide show
  1. package/README.md +82 -1
  2. package/lib/{AgentLexical.d.ts → AgentDocument.d.ts} +5 -5
  3. package/lib/{AgentLexical.js → AgentDocument.js} +156 -26
  4. package/lib/AgentNode.js +32 -31
  5. package/lib/AgentNotebook.js +172 -17
  6. package/lib/AppExamples2.css +47 -0
  7. package/lib/AppExamples2.d.ts +3 -0
  8. package/lib/AppExamples2.js +21 -0
  9. package/lib/{agent-lexical-main.js → agent-document-main.js} +2 -2
  10. package/lib/agents/AgentRuntimeChat.d.ts +73 -0
  11. package/lib/agents/AgentRuntimeChat.js +198 -0
  12. package/lib/api/index.d.ts +12 -0
  13. package/lib/api/index.js +46 -0
  14. package/lib/api/runtimes/checkpoints.d.ts +122 -0
  15. package/lib/api/runtimes/checkpoints.js +118 -0
  16. package/lib/api/runtimes/environments.d.ts +9 -0
  17. package/lib/api/runtimes/environments.js +29 -0
  18. package/lib/api/runtimes/healthz.d.ts +15 -0
  19. package/lib/api/runtimes/healthz.js +44 -0
  20. package/lib/api/runtimes/index.d.ts +12 -0
  21. package/lib/api/runtimes/index.js +16 -0
  22. package/lib/api/runtimes/runtimes.d.ts +138 -0
  23. package/lib/api/runtimes/runtimes.js +230 -0
  24. package/lib/api/runtimes/snapshots.d.ts +38 -0
  25. package/lib/api/runtimes/snapshots.js +82 -0
  26. package/lib/api/scheduler/index.d.ts +6 -0
  27. package/lib/api/scheduler/index.js +10 -0
  28. package/lib/api/scheduler/schedules.d.ts +85 -0
  29. package/lib/api/scheduler/schedules.js +78 -0
  30. package/lib/api/spacer/documents.d.ts +12 -0
  31. package/lib/api/spacer/documents.js +43 -0
  32. package/lib/api/spacer/healthz.d.ts +15 -0
  33. package/lib/api/spacer/healthz.js +44 -0
  34. package/lib/api/spacer/index.d.ts +15 -0
  35. package/lib/api/spacer/index.js +19 -0
  36. package/lib/api/spacer/items.d.ts +25 -0
  37. package/lib/api/spacer/items.js +55 -0
  38. package/lib/api/spacer/lexicals.d.ts +34 -0
  39. package/lib/api/spacer/lexicals.js +89 -0
  40. package/lib/api/spacer/notebooks.d.ts +34 -0
  41. package/lib/api/spacer/notebooks.js +89 -0
  42. package/lib/api/spacer/spaces.d.ts +84 -0
  43. package/lib/api/spacer/spaces.js +170 -0
  44. package/lib/api/spacer/users.d.ts +9 -0
  45. package/lib/api/spacer/users.js +29 -0
  46. package/lib/chat/Chat.d.ts +1 -1
  47. package/lib/chat/Chat.js +54 -54
  48. package/lib/chat/ChatFloating.d.ts +2 -2
  49. package/lib/chat/ChatFloating.js +136 -25
  50. package/lib/chat/ChatSidebar.js +20 -22
  51. package/lib/chat/base/ChatBase.js +429 -39
  52. package/lib/chat/display/EmptyState.js +21 -21
  53. package/lib/chat/document/EphemeralDocument.d.ts +23 -0
  54. package/lib/chat/document/EphemeralDocument.js +270 -0
  55. package/lib/chat/header/ChatHeaderBase.d.ts +12 -2
  56. package/lib/chat/header/ChatHeaderBase.js +78 -23
  57. package/lib/chat/index.d.ts +1 -0
  58. package/lib/chat/index.js +2 -0
  59. package/lib/chat/notebook/EphemeralNotebook.d.ts +24 -0
  60. package/lib/chat/notebook/EphemeralNotebook.js +252 -0
  61. package/lib/chat/prompt/InputFooter.js +4 -1
  62. package/lib/client/AgentRuntimesClient.d.ts +127 -0
  63. package/lib/client/AgentRuntimesClient.js +36 -0
  64. package/lib/client/AgentsMixin.js +28 -28
  65. package/lib/client/SdkAgentRuntimesClient.d.ts +1 -1
  66. package/lib/client/SdkAgentRuntimesClient.js +1 -1
  67. package/lib/client/mixins/RuntimesMixin.d.ts +93 -0
  68. package/lib/client/mixins/RuntimesMixin.js +229 -0
  69. package/lib/client/mixins/SpacerMixin.d.ts +210 -0
  70. package/lib/client/mixins/SpacerMixin.js +615 -0
  71. package/lib/client/utils/spacerUtils.d.ts +18 -0
  72. package/lib/client/utils/spacerUtils.js +32 -0
  73. package/lib/collaboration/DatalayerCollaboration.d.ts +13 -0
  74. package/lib/collaboration/DatalayerCollaboration.js +28 -0
  75. package/lib/collaboration/DatalayerCollaborationProvider.d.ts +58 -0
  76. package/lib/collaboration/DatalayerCollaborationProvider.js +148 -0
  77. package/lib/collaboration/index.d.ts +2 -0
  78. package/lib/collaboration/index.js +6 -0
  79. package/lib/components/AgentSummary.d.ts +19 -0
  80. package/lib/components/AgentSummary.js +89 -0
  81. package/lib/components/a2ui/A2uiSurfaceComposed.d.ts +13 -0
  82. package/lib/components/a2ui/A2uiSurfaceComposed.js +110 -0
  83. package/lib/components/a2ui/index.d.ts +2 -0
  84. package/lib/components/a2ui/index.js +6 -0
  85. package/lib/components/a2ui/styles.d.ts +14 -0
  86. package/lib/components/a2ui/styles.js +142 -0
  87. package/lib/components/context/SpaceSelect.d.ts +2 -0
  88. package/lib/components/context/SpaceSelect.js +42 -0
  89. package/lib/components/flashes/FlashDisclaimer.d.ts +2 -0
  90. package/lib/components/flashes/FlashDisclaimer.js +17 -0
  91. package/lib/components/icons/ArtifactIcon.d.ts +10 -0
  92. package/lib/components/icons/ArtifactIcon.js +58 -0
  93. package/lib/components/icons/index.d.ts +1 -0
  94. package/lib/components/icons/index.js +5 -0
  95. package/lib/components/index.d.ts +5 -0
  96. package/lib/components/index.js +5 -0
  97. package/lib/components/nbgrader/NbGradesDetails.d.ts +5 -0
  98. package/lib/components/nbgrader/NbGradesDetails.js +19 -0
  99. package/lib/components/nbgrader/index.d.ts +1 -0
  100. package/lib/components/nbgrader/index.js +5 -0
  101. package/lib/components/progress/CreditsIndicator.d.ts +33 -0
  102. package/lib/components/progress/CreditsIndicator.js +23 -0
  103. package/lib/components/progress/index.d.ts +2 -0
  104. package/lib/components/progress/index.js +6 -0
  105. package/lib/components/runtimes/RuntimeCellVariables.d.ts +39 -0
  106. package/lib/components/runtimes/RuntimeCellVariables.js +172 -0
  107. package/lib/components/runtimes/RuntimeCellVariablesDialog.d.ts +37 -0
  108. package/lib/components/runtimes/RuntimeCellVariablesDialog.js +101 -0
  109. package/lib/components/runtimes/RuntimeLauncherDialog.d.ts +57 -0
  110. package/lib/components/runtimes/RuntimeLauncherDialog.js +275 -0
  111. package/lib/components/runtimes/RuntimePickerBase.d.ts +69 -0
  112. package/lib/components/runtimes/RuntimePickerBase.js +122 -0
  113. package/lib/components/runtimes/RuntimePickerCell.d.ts +34 -0
  114. package/lib/components/runtimes/RuntimePickerCell.js +104 -0
  115. package/lib/components/runtimes/RuntimePickerNotebook.d.ts +42 -0
  116. package/lib/components/runtimes/RuntimePickerNotebook.js +232 -0
  117. package/lib/components/runtimes/RuntimeReservationControl.d.ts +47 -0
  118. package/lib/components/runtimes/RuntimeReservationControl.js +42 -0
  119. package/lib/components/runtimes/RuntimeSimplePicker.d.ts +38 -0
  120. package/lib/components/runtimes/RuntimeSimplePicker.js +155 -0
  121. package/lib/components/runtimes/RuntimeTransfer.d.ts +16 -0
  122. package/lib/components/runtimes/RuntimeTransfer.js +5 -0
  123. package/lib/components/runtimes/RuntimeUtils.d.ts +17 -0
  124. package/lib/components/runtimes/RuntimeUtils.js +178 -0
  125. package/lib/components/runtimes/RuntimeVariables.d.ts +38 -0
  126. package/lib/components/runtimes/RuntimeVariables.js +75 -0
  127. package/lib/components/runtimes/index.d.ts +11 -0
  128. package/lib/components/runtimes/index.js +15 -0
  129. package/lib/components/scheduler/ScheduleMenu.d.ts +54 -0
  130. package/lib/components/scheduler/ScheduleMenu.js +154 -0
  131. package/lib/components/scheduler/index.d.ts +1 -0
  132. package/lib/components/scheduler/index.js +5 -0
  133. package/lib/components/snapshots/SandboxSnapshotMenu.d.ts +33 -0
  134. package/lib/components/snapshots/SandboxSnapshotMenu.js +169 -0
  135. package/lib/components/snapshots/index.d.ts +1 -0
  136. package/lib/components/snapshots/index.js +5 -0
  137. package/lib/components/snippets/SnippetDialog.d.ts +42 -0
  138. package/lib/components/snippets/SnippetDialog.js +42 -0
  139. package/lib/components/students/StudentItemStatus.d.ts +7 -0
  140. package/lib/components/students/StudentItemStatus.js +68 -0
  141. package/lib/components/students/index.d.ts +1 -0
  142. package/lib/components/students/index.js +5 -0
  143. package/lib/components/tokens/SpaceVariantToken.d.ts +5 -0
  144. package/lib/components/tokens/SpaceVariantToken.js +23 -0
  145. package/lib/components/tokens/index.d.ts +1 -0
  146. package/lib/components/tokens/index.js +5 -0
  147. package/lib/components/toolbars/AssignmentEditorToolbar.d.ts +4 -0
  148. package/lib/components/toolbars/AssignmentEditorToolbar.js +18 -0
  149. package/lib/components/toolbars/DocumentEditorToolbar.d.ts +2 -0
  150. package/lib/components/toolbars/DocumentEditorToolbar.js +12 -0
  151. package/lib/components/toolbars/NotebookEditorToolbar.d.ts +29 -0
  152. package/lib/components/toolbars/NotebookEditorToolbar.js +30 -0
  153. package/lib/context/ContextInspector.d.ts +1 -14
  154. package/lib/context/ContextInspector.js +3 -73
  155. package/lib/context/CostUsageChart.d.ts +4 -3
  156. package/lib/context/CostUsageChart.js +236 -35
  157. package/lib/context/MessageHistory.d.ts +30 -0
  158. package/lib/context/MessageHistory.js +129 -0
  159. package/lib/context/TokenUsageChart.d.ts +4 -3
  160. package/lib/context/TokenUsageChart.js +180 -30
  161. package/lib/context/TurnGraphChart.d.ts +1 -1
  162. package/lib/context/TurnGraphChart.js +6 -6
  163. package/lib/examples/A2UiAgentExample.d.ts +22 -0
  164. package/lib/examples/A2UiAgentExample.js +442 -0
  165. package/lib/examples/A2UiComponentsGalleryExample.d.ts +3 -0
  166. package/lib/examples/A2UiComponentsGalleryExample.js +863 -0
  167. package/lib/examples/A2UiContactCardExample.js +9 -5
  168. package/lib/examples/A2UiRestaurantExample.js +23 -8
  169. package/lib/examples/A2UiViewerExample.js +75 -3
  170. package/lib/examples/AgUiAgenticExample.d.ts +1 -12
  171. package/lib/examples/AgUiAgenticExample.js +52 -8
  172. package/lib/examples/AgUiBackendToolRenderingExample.d.ts +1 -16
  173. package/lib/examples/AgUiBackendToolRenderingExample.js +32 -17
  174. package/lib/examples/AgUiHaikuGenUiExample.d.ts +1 -17
  175. package/lib/examples/AgUiHaikuGenUiExample.js +49 -33
  176. package/lib/examples/AgUiHumanInTheLoopExample.d.ts +1 -12
  177. package/lib/examples/AgUiHumanInTheLoopExample.js +21 -6
  178. package/lib/examples/AgUiSharedStateExample.d.ts +1 -14
  179. package/lib/examples/AgUiSharedStateExample.js +21 -6
  180. package/lib/examples/AgUiToolsBasedGenUiExample.d.ts +1 -14
  181. package/lib/examples/AgUiToolsBasedGenUiExample.js +21 -6
  182. package/lib/examples/AgentCheckpointsExample.d.ts +1 -1
  183. package/lib/examples/AgentCheckpointsExample.js +9 -10
  184. package/lib/examples/AgentCodemodeExample.js +3 -3
  185. package/lib/examples/AgentEvalsExample.js +5 -5
  186. package/lib/examples/AgentGuardrailsExample.js +17 -12
  187. package/lib/examples/AgentHooksExample.js +14 -55
  188. package/lib/examples/AgentInferenceProviderExample.js +4 -4
  189. package/lib/examples/AgentLoopExample.d.ts +10 -0
  190. package/lib/examples/AgentLoopExample.js +304 -0
  191. package/lib/examples/AgentMCPExample.js +7 -7
  192. package/lib/examples/AgentMemoryExample.js +4 -4
  193. package/lib/examples/AgentMonitoringExample.js +114 -44
  194. package/lib/examples/AgentNotificationsExample.js +4 -4
  195. package/lib/examples/AgentOtelExample.d.ts +3 -3
  196. package/lib/examples/AgentOtelExample.js +15 -10
  197. package/lib/examples/AgentOutputsExample.js +6 -6
  198. package/lib/examples/AgentParametersExample.js +21 -33
  199. package/lib/examples/AgentSandboxExample.js +5 -5
  200. package/lib/examples/AgentSkillsExample.js +7 -7
  201. package/lib/examples/AgentSubagentsExample.js +4 -4
  202. package/lib/examples/AgentToolApprovalsExample.js +5 -5
  203. package/lib/examples/AgentTriggersExample.js +9 -9
  204. package/lib/examples/AgentspecsExample.js +63 -41
  205. package/lib/examples/ChatCustomExample.js +23 -77
  206. package/lib/examples/ChatExample.js +13 -44
  207. package/lib/examples/LexicalAgentExample.js +43 -91
  208. package/lib/examples/LexicalAgentSidebarExample.js +45 -73
  209. package/lib/examples/NotebookAgentExample.js +52 -81
  210. package/lib/examples/NotebookAgentSidebarExample.js +43 -71
  211. package/lib/examples/NotebookCollaborationExample.js +11 -9
  212. package/lib/examples/NotebookExample.js +5 -2
  213. package/lib/examples/components/AuthRequiredView.js +1 -1
  214. package/lib/examples/components/ExampleErrorBoundary.d.ts +46 -0
  215. package/lib/examples/components/ExampleErrorBoundary.js +67 -0
  216. package/lib/examples/components/haiku/haiku-card.css +11 -0
  217. package/lib/examples/components/weather/weather-card.css +11 -0
  218. package/lib/examples/example-selector.js +3 -1
  219. package/lib/examples/hooks/useExampleAgentRuntime.d.ts +35 -0
  220. package/lib/examples/hooks/useExampleAgentRuntime.js +82 -0
  221. package/lib/examples/hooks/useSpecRenderToolResult.d.ts +30 -0
  222. package/lib/examples/hooks/useSpecRenderToolResult.js +61 -0
  223. package/lib/examples/index.d.ts +3 -1
  224. package/lib/examples/index.js +3 -1
  225. package/lib/examples/main.js +340 -93
  226. package/lib/examples/utils/a2ui.d.ts +2 -0
  227. package/lib/examples/utils/a2ui.js +97 -2
  228. package/lib/examples/utils/agentSummaryStore.d.ts +21 -0
  229. package/lib/examples/utils/agentSummaryStore.js +23 -0
  230. package/lib/examples/utils/notebooks/Empty.ipynb.json +30 -30
  231. package/lib/examples/utils/runtimeTargetStore.d.ts +9 -0
  232. package/lib/examples/utils/runtimeTargetStore.js +27 -0
  233. package/lib/examples/utils/teardownAgents.d.ts +13 -0
  234. package/lib/examples/utils/teardownAgents.js +78 -0
  235. package/lib/examples/utils/useExampleAgentRuntimesUrl.d.ts +2 -0
  236. package/lib/examples/utils/useExampleAgentRuntimesUrl.js +26 -7
  237. package/lib/examples2/CellExample.d.ts +6 -0
  238. package/lib/examples2/CellExample.js +20 -0
  239. package/lib/examples2/DatalayerNotebookExample.d.ts +16 -0
  240. package/lib/examples2/DatalayerNotebookExample.js +109 -0
  241. package/lib/examples2/NativeNavigationExample.d.ts +8 -0
  242. package/lib/examples2/NativeNavigationExample.js +97 -0
  243. package/lib/examples2/NotebookExample.d.ts +6 -0
  244. package/lib/examples2/NotebookExample.js +19 -0
  245. package/lib/examples2/NotebookMutationsKernel.d.ts +2 -0
  246. package/lib/examples2/NotebookMutationsKernel.js +105 -0
  247. package/lib/examples2/NotebookMutationsServiceManager.d.ts +2 -0
  248. package/lib/examples2/NotebookMutationsServiceManager.js +109 -0
  249. package/lib/examples2/ReactRouterExample.d.ts +6 -0
  250. package/lib/examples2/ReactRouterExample.js +175 -0
  251. package/lib/examples2/example-selector.d.ts +22 -0
  252. package/lib/examples2/example-selector.js +45 -0
  253. package/lib/examples2/index.d.ts +2 -0
  254. package/lib/examples2/index.js +6 -0
  255. package/lib/examples2/lexical-theme.css +436 -0
  256. package/lib/examples2/main.d.ts +2 -0
  257. package/lib/examples2/main.js +330 -0
  258. package/lib/examples2/notebooks/IPyWidgetsExample.ipynb.json +101 -0
  259. package/lib/examples2/notebooks/IPyWidgetsExampleWithState.ipynb.json +112 -0
  260. package/lib/examples2/notebooks/Lite.ipynb.json +128 -0
  261. package/lib/examples2/notebooks/Matplotlib.ipynb.json +137 -0
  262. package/lib/examples2/notebooks/NotebookExample1.ipynb.json +126 -0
  263. package/lib/examples2/notebooks/NotebookExample2.ipynb.json +48 -0
  264. package/lib/examples2/notebooks/NotebookOutputs.ipynb.json +49 -0
  265. package/lib/examples2/notebooks/NotebookToCExample.ipynb.json +102 -0
  266. package/lib/examples2/notebooks/OutputIPyWidgetsExample.d.ts +145 -0
  267. package/lib/examples2/notebooks/OutputIPyWidgetsExample.js +153 -0
  268. package/lib/examples2/notebooks/PyGWalker.ipynb.json +55 -0
  269. package/lib/hooks/index.d.ts +9 -1
  270. package/lib/hooks/index.js +13 -1
  271. package/lib/hooks/useAIAgentsWebSocket.d.ts +1 -1
  272. package/lib/hooks/useAIAgentsWebSocket.js +39 -3
  273. package/lib/hooks/useAgentRuntimes.d.ts +15 -3
  274. package/lib/hooks/useAgentRuntimes.js +186 -27
  275. package/lib/hooks/useAgentsService.js +5 -5
  276. package/lib/hooks/useCellOutputshot.d.ts +4 -0
  277. package/lib/hooks/useCellOutputshot.js +25 -0
  278. package/lib/hooks/useCheckpoints.d.ts +8 -8
  279. package/lib/hooks/useCheckpoints.js +36 -26
  280. package/lib/hooks/useConfig.d.ts +1 -1
  281. package/lib/hooks/useMonitoring.d.ts +7 -5
  282. package/lib/hooks/useMonitoring.js +16 -10
  283. package/lib/hooks/useNotifications.d.ts +11 -11
  284. package/lib/hooks/useNotifications.js +1 -1
  285. package/lib/hooks/useProgressStore.d.ts +25 -0
  286. package/lib/hooks/useProgressStore.js +58 -0
  287. package/lib/hooks/useProgressTask.d.ts +9 -0
  288. package/lib/hooks/useProgressTask.js +41 -0
  289. package/lib/hooks/useProjects.d.ts +628 -0
  290. package/lib/hooks/useProjects.js +190 -0
  291. package/lib/hooks/useRuntimes.d.ts +5 -0
  292. package/lib/hooks/useRuntimes.js +34 -0
  293. package/lib/hooks/useToolApprovals.d.ts +6 -6
  294. package/lib/index.d.ts +1 -0
  295. package/lib/index.js +1 -0
  296. package/lib/jupyter/exec/Python.d.ts +5 -0
  297. package/lib/jupyter/exec/Python.js +100 -0
  298. package/lib/jupyter/exec/Snippets.d.ts +105 -0
  299. package/lib/jupyter/exec/Snippets.js +101 -0
  300. package/lib/jupyter/exec/index.d.ts +2 -0
  301. package/lib/jupyter/exec/index.js +6 -0
  302. package/lib/jupyter/index.d.ts +2 -0
  303. package/lib/jupyter/index.js +6 -0
  304. package/lib/jupyter/kernelsHandler.d.ts +8 -0
  305. package/lib/jupyter/kernelsHandler.js +39 -0
  306. package/lib/mocks/models/CourseMock.d.ts +6 -0
  307. package/lib/mocks/models/CourseMock.js +29 -0
  308. package/lib/mocks/models/SpaceMock.d.ts +6 -0
  309. package/lib/mocks/models/SpaceMock.js +25 -0
  310. package/lib/models/Assignment.d.ts +7 -0
  311. package/lib/models/Assignment.js +5 -0
  312. package/lib/models/Cell.d.ts +8 -0
  313. package/lib/models/Cell.js +5 -0
  314. package/lib/models/CodeBlock.d.ts +10 -0
  315. package/lib/models/CodeBlock.js +5 -0
  316. package/lib/models/CodeSandboxSnapshot.d.ts +92 -0
  317. package/lib/models/CodeSandboxSnapshot.js +13 -0
  318. package/lib/models/CodeSandboxSnapshotDTO.d.ts +173 -0
  319. package/lib/models/CodeSandboxSnapshotDTO.js +139 -0
  320. package/lib/models/CodefeedBlocks.d.ts +7 -0
  321. package/lib/models/CodefeedBlocks.js +5 -0
  322. package/lib/models/Content.d.ts +5 -0
  323. package/lib/models/Content.js +5 -0
  324. package/lib/models/Course.d.ts +17 -0
  325. package/lib/models/Course.js +5 -0
  326. package/lib/models/Dataset.d.ts +16 -0
  327. package/lib/models/Dataset.js +5 -0
  328. package/lib/models/Document.d.ts +8 -0
  329. package/lib/models/Document.js +5 -0
  330. package/lib/models/Environment.d.ts +86 -0
  331. package/lib/models/Environment.js +5 -0
  332. package/lib/models/EnvironmentDTO.d.ts +125 -0
  333. package/lib/models/EnvironmentDTO.js +88 -0
  334. package/lib/models/Exercise.d.ts +16 -0
  335. package/lib/models/Exercise.js +5 -0
  336. package/lib/models/Item.d.ts +20 -0
  337. package/lib/models/Item.js +5 -0
  338. package/lib/models/ItemDTO.d.ts +74 -0
  339. package/lib/models/ItemDTO.js +186 -0
  340. package/lib/models/ItemType.d.ts +2 -0
  341. package/lib/models/ItemType.js +5 -0
  342. package/lib/models/Lesson.d.ts +5 -0
  343. package/lib/models/Lesson.js +5 -0
  344. package/lib/models/LexicalDTO.d.ts +155 -0
  345. package/lib/models/LexicalDTO.js +157 -0
  346. package/lib/models/Library.d.ts +10 -0
  347. package/lib/models/Library.js +5 -0
  348. package/lib/models/Notebook.d.ts +11 -0
  349. package/lib/models/Notebook.js +5 -0
  350. package/lib/models/NotebookDTO.d.ts +96 -0
  351. package/lib/models/NotebookDTO.js +153 -0
  352. package/lib/models/Page.d.ts +41 -0
  353. package/lib/models/Page.js +25 -0
  354. package/lib/models/PageTag.d.ts +19 -0
  355. package/lib/models/PageTag.js +94 -0
  356. package/lib/models/ProjectDTO.d.ts +89 -0
  357. package/lib/models/ProjectDTO.js +131 -0
  358. package/lib/models/Runtime.d.ts +160 -0
  359. package/lib/models/Runtime.js +18 -0
  360. package/lib/models/RuntimeDTO.d.ts +172 -0
  361. package/lib/models/RuntimeDTO.js +204 -0
  362. package/lib/models/Space.d.ts +35 -0
  363. package/lib/models/Space.js +66 -0
  364. package/lib/models/SpaceDTO.d.ts +334 -0
  365. package/lib/models/SpaceDTO.js +244 -0
  366. package/lib/models/SpaceItem.d.ts +10 -0
  367. package/lib/models/SpaceItem.js +5 -0
  368. package/lib/models/SpaceMember.d.ts +6 -0
  369. package/lib/models/SpaceMember.js +5 -0
  370. package/lib/models/StudentItem.d.ts +21 -0
  371. package/lib/models/StudentItem.js +5 -0
  372. package/lib/models/index.d.ts +32 -0
  373. package/lib/models/index.js +39 -0
  374. package/lib/protocols/AGUIAdapter.js +1 -1
  375. package/lib/runtimes/actions.d.ts +102 -0
  376. package/lib/runtimes/actions.js +249 -0
  377. package/lib/runtimes/apis.d.ts +273 -0
  378. package/lib/runtimes/apis.js +5 -0
  379. package/lib/runtimes/index.d.ts +5 -0
  380. package/lib/runtimes/index.js +9 -0
  381. package/lib/runtimes/settings.d.ts +15 -0
  382. package/lib/runtimes/settings.js +31 -0
  383. package/lib/runtimes/snapshots.d.ts +25 -0
  384. package/lib/runtimes/snapshots.js +150 -0
  385. package/lib/runtimes/utils.d.ts +7 -0
  386. package/lib/runtimes/utils.js +14 -0
  387. package/lib/services/DatalayerServiceManager.d.ts +23 -0
  388. package/lib/services/DatalayerServiceManager.js +90 -0
  389. package/lib/services/reconnectToRuntime.d.ts +32 -0
  390. package/lib/services/reconnectToRuntime.js +59 -0
  391. package/lib/services/sandboxServiceManagers.d.ts +31 -0
  392. package/lib/services/sandboxServiceManagers.js +57 -0
  393. package/lib/specs/agents/agents.d.ts +70 -26
  394. package/lib/specs/agents/agents.js +3994 -1639
  395. package/lib/specs/index.d.ts +1 -0
  396. package/lib/specs/index.js +1 -0
  397. package/lib/specs/loops.d.ts +34 -0
  398. package/lib/specs/loops.js +188 -0
  399. package/lib/specs/mcpServers.d.ts +1 -0
  400. package/lib/specs/mcpServers.js +17 -0
  401. package/lib/specs/models.d.ts +4 -0
  402. package/lib/specs/models.js +30 -0
  403. package/lib/specs/skills.d.ts +1 -0
  404. package/lib/specs/skills.js +18 -0
  405. package/lib/specs/tools.d.ts +15 -0
  406. package/lib/specs/tools.js +285 -0
  407. package/lib/state/index.d.ts +4 -0
  408. package/lib/state/index.js +10 -0
  409. package/lib/state/substates/CellState.d.ts +12 -0
  410. package/lib/state/substates/CellState.js +22 -0
  411. package/lib/state/substates/DocumentState.d.ts +10 -0
  412. package/lib/state/substates/DocumentState.js +14 -0
  413. package/lib/state/substates/GradeState.d.ts +10 -0
  414. package/lib/state/substates/GradeState.js +14 -0
  415. package/lib/state/substates/JupyterLabState.d.ts +16 -0
  416. package/lib/state/substates/JupyterLabState.js +17 -0
  417. package/lib/state/substates/NbformatState.d.ts +13 -0
  418. package/lib/state/substates/NbformatState.js +16 -0
  419. package/lib/state/substates/RuntimesState.d.ts +87 -0
  420. package/lib/state/substates/RuntimesState.js +192 -0
  421. package/lib/state/substates/SpaceState.d.ts +11 -0
  422. package/lib/state/substates/SpaceState.js +16 -0
  423. package/lib/state/substates/index.d.ts +8 -0
  424. package/lib/state/substates/index.js +14 -0
  425. package/lib/stores/agentRuntimeStore.d.ts +25 -2
  426. package/lib/stores/agentRuntimeStore.js +114 -19
  427. package/lib/stories/Button.stories.d.ts +1 -1
  428. package/lib/stories/Header.stories.d.ts +3 -3
  429. package/lib/test-setup.js +10 -0
  430. package/lib/types/agents-lifecycle.d.ts +5 -5
  431. package/lib/types/agents.d.ts +3 -3
  432. package/lib/types/agentspecs.d.ts +3 -1
  433. package/lib/types/chat.d.ts +135 -3
  434. package/lib/types/config.d.ts +19 -1
  435. package/lib/types/index.d.ts +1 -0
  436. package/lib/types/index.js +1 -0
  437. package/lib/types/loops.d.ts +64 -0
  438. package/lib/types/loops.js +5 -0
  439. package/lib/types/tools.d.ts +16 -0
  440. package/lib/utils/Cells.d.ts +2 -0
  441. package/lib/utils/Cells.js +28 -0
  442. package/package.json +24 -18
  443. package/scripts/codegen/__pycache__/versioning.cpython-313.pyc +0 -0
  444. package/scripts/codegen/generate_agents.py +21 -4
  445. package/scripts/codegen/generate_loops.py +443 -0
  446. package/lib/examples/A2UiComponentGalleryExample.d.ts +0 -3
  447. package/lib/examples/A2UiComponentGalleryExample.js +0 -361
  448. /package/lib/{agent-lexical-main.d.ts → agent-document-main.d.ts} +0 -0
@@ -0,0 +1,169 @@
1
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
+ /*
3
+ * Copyright (c) 2025-2026 Datalayer, Inc.
4
+ * Distributed under the terms of the Modified BSD License.
5
+ */
6
+ import { useCallback, useEffect, useState, } from 'react';
7
+ import { DeviceCameraIcon } from '@primer/octicons-react';
8
+ import { ActionList, ActionMenu, Flash, FormControl, Select, Spinner, } from '@primer/react';
9
+ import { Dialog } from '@primer/react/experimental';
10
+ import { Box } from '@datalayer/primer-addons';
11
+ import { useToast } from '@datalayer/core/lib/hooks';
12
+ import { createSandboxSnapshot, getSandboxSnapshots, loadBrowserSandboxSnapshot, loadSandboxSnapshot, } from '../../runtimes';
13
+ import { useRuntimesStore } from '../../state/substates';
14
+ import { createSandboxSnapshotName } from '@datalayer/core/lib/utils';
15
+ /**
16
+ * Code Sandbox Snapshot menu component.
17
+ */
18
+ export function SandboxSnapshotMenu({ children, connection, podName, multiServiceManager, disabled = false, }) {
19
+ const { addSandboxSnapshot, runtimesUrl, runtimeSnapshots, setSandboxSnapshots, } = useRuntimesStore();
20
+ const { enqueueToast, trackAsyncTask } = useToast();
21
+ const [openLoadDialog, setOpenLoadDialog] = useState(false);
22
+ const [loadingSandboxSnapshot, setLoadingSandboxSnapshot] = useState(false);
23
+ const [takingSandboxSnapshot, setTakingSandboxSnapshot] = useState(false);
24
+ const [selection, setSelection] = useState(runtimeSnapshots[0]?.id ?? '');
25
+ const [error, setError] = useState();
26
+ useEffect(() => {
27
+ getSandboxSnapshots()
28
+ .then(snapshots => {
29
+ setSandboxSnapshots(snapshots);
30
+ if (!selection && snapshots.length > 0) {
31
+ setSelection(snapshots[0].id);
32
+ }
33
+ })
34
+ .catch(reason => {
35
+ console.error(`Failed to fetch remote kernel snapshots; ${reason}`);
36
+ });
37
+ }, [runtimesUrl]);
38
+ const onLoadSandboxSnapshot = useCallback(() => {
39
+ setError(undefined);
40
+ setOpenLoadDialog(true);
41
+ }, []);
42
+ const onSandboxSnapshotChanged = useCallback(event => {
43
+ setSelection(event.target.value);
44
+ }, []);
45
+ const onLoadSandboxSnapshotSubmit = useCallback(async ({ id, connection, podName, }) => {
46
+ if (podName) {
47
+ await loadSandboxSnapshot({ id: podName, from: id });
48
+ enqueueToast(`Code Sandbox snapshot ${podName} is loaded.`, {
49
+ variant: 'success',
50
+ });
51
+ }
52
+ else if (connection) {
53
+ await loadBrowserSandboxSnapshot({ connection, id });
54
+ enqueueToast(`Code Sandbox snapshot ${id} is loaded.`, {
55
+ variant: 'success',
56
+ });
57
+ }
58
+ }, []);
59
+ const onTakeSandboxSnapshot = useCallback(async () => {
60
+ try {
61
+ setTakingSandboxSnapshot(true);
62
+ let snapshot;
63
+ let task;
64
+ let ref = '';
65
+ let snapshotName = '';
66
+ if (podName && multiServiceManager?.remote) {
67
+ snapshotName = createSandboxSnapshotName('cloud');
68
+ task = multiServiceManager.remote.runtimesManager.snapshotRuntime({
69
+ podName,
70
+ name: snapshotName,
71
+ description: snapshotName,
72
+ stop: false,
73
+ });
74
+ ref = podName.split('-', 2).reverse()[0];
75
+ task.then(s => {
76
+ snapshot = s;
77
+ });
78
+ }
79
+ else if (connection && multiServiceManager?.browser) {
80
+ const model = connection.model;
81
+ ref = model.id;
82
+ snapshotName = createSandboxSnapshotName('browser');
83
+ let isPending = true;
84
+ task = createSandboxSnapshot({
85
+ connection: multiServiceManager.browser.kernels.connectTo({
86
+ model,
87
+ }),
88
+ metadata: { filename: `${snapshotName}.data` },
89
+ onUploadProgress: () => {
90
+ if (isPending) {
91
+ isPending = false;
92
+ // Get the kernel snapshot uid.
93
+ getSandboxSnapshots().then(snapshots => {
94
+ snapshot = snapshots.find(s => s.name === snapshotName);
95
+ });
96
+ }
97
+ },
98
+ });
99
+ }
100
+ if (task) {
101
+ trackAsyncTask(task, {
102
+ error: {
103
+ message: (reason, data) => {
104
+ const msg = reason === 'Empty snapshot'
105
+ ? `Runtime ${ref} will not be snapshotted as it does not contain any serializable state.`
106
+ : `Failed to snapshot runtime ${ref} - ${reason}`;
107
+ return msg;
108
+ },
109
+ },
110
+ pending: { message: `Taking a snapshot of runtime ${ref}…` },
111
+ success: {
112
+ message: () => `Runtime ${ref} successfully snapshotted as ${snapshotName}.`,
113
+ },
114
+ });
115
+ await task;
116
+ if (snapshot) {
117
+ addSandboxSnapshot(snapshot);
118
+ }
119
+ }
120
+ }
121
+ finally {
122
+ setTakingSandboxSnapshot(false);
123
+ }
124
+ }, [connection, podName, multiServiceManager]);
125
+ return (_jsxs(_Fragment, { children: [_jsxs(ActionMenu, { children: [_jsx(ActionMenu.Button, { leadingVisual: DeviceCameraIcon, variant: "invisible", size: "small", disabled: loadingSandboxSnapshot || takingSandboxSnapshot || disabled, children: children }), _jsx(ActionMenu.Overlay, { children: _jsxs(ActionList, { children: [_jsx(ActionList.Item, { onSelect: onLoadSandboxSnapshot, disabled: loadingSandboxSnapshot || runtimeSnapshots.length === 0, children: "Load a code sandbox snapshot\u2026" }), _jsx(ActionList.Item, { onSelect: onTakeSandboxSnapshot, disabled: takingSandboxSnapshot, children: "Take a code sandbox snapshot" })] }) })] }), openLoadDialog && (_jsx(Dialog, { title: _jsx("span", { style: { color: 'var(--fgColor-default)' }, children: "Choose a code sandbox snapshot to load" }), onClose: () => {
126
+ setOpenLoadDialog(false);
127
+ }, footerButtons: [
128
+ {
129
+ buttonType: 'default',
130
+ content: 'Cancel',
131
+ onClick: event => {
132
+ if (!event.defaultPrevented) {
133
+ event.preventDefault();
134
+ setOpenLoadDialog(false);
135
+ }
136
+ },
137
+ },
138
+ {
139
+ buttonType: 'primary',
140
+ content: loadingSandboxSnapshot ? (_jsx(Spinner, { size: "small" })) : ('Load'),
141
+ disabled: loadingSandboxSnapshot,
142
+ onClick: async (event) => {
143
+ if (!event.defaultPrevented) {
144
+ event.preventDefault();
145
+ setLoadingSandboxSnapshot(true);
146
+ try {
147
+ setError(undefined);
148
+ const snapshot = runtimeSnapshots.find(s => s.id === selection);
149
+ if (snapshot && (connection || podName)) {
150
+ await onLoadSandboxSnapshotSubmit({
151
+ connection,
152
+ id: snapshot.id,
153
+ podName,
154
+ });
155
+ }
156
+ else {
157
+ setError('No code sandbox snapshot found.');
158
+ }
159
+ }
160
+ finally {
161
+ setLoadingSandboxSnapshot(false);
162
+ setOpenLoadDialog(false);
163
+ }
164
+ }
165
+ },
166
+ autoFocus: true,
167
+ },
168
+ ], children: _jsxs(Box, { as: "form", children: [_jsxs(FormControl, { children: [_jsx(FormControl.Label, { children: "Snapshot" }), _jsx(Select, { name: "snapshot", value: selection, onChange: onSandboxSnapshotChanged, block: true, children: runtimeSnapshots.map(s => (_jsx(Select.Option, { value: s.id, children: s.name ? `${s.name} (${s.id})` : s.id }, s.id))) })] }), error && _jsx(Flash, { variant: "danger", children: error })] }) }))] }));
169
+ }
@@ -0,0 +1 @@
1
+ export * from './SandboxSnapshotMenu';
@@ -0,0 +1,5 @@
1
+ /*
2
+ * Copyright (c) 2025-2026 Datalayer, Inc.
3
+ * Distributed under the terms of the Modified BSD License.
4
+ */
5
+ export * from './SandboxSnapshotMenu';
@@ -0,0 +1,42 @@
1
+ import { CodeCellModel } from '@jupyterlab/cells';
2
+ import type { IMarkdownParser, IRenderMime } from '@jupyterlab/rendermime';
3
+ import { ITranslator } from '@jupyterlab/translation';
4
+ import type { ISnippet } from '../../models';
5
+ /**
6
+ * {@link SnippetDialog} properties
7
+ */
8
+ export interface ISnippetDialogProps {
9
+ /**
10
+ * Code cell model
11
+ */
12
+ model: CodeCellModel;
13
+ /**
14
+ * Callback request the dialog closure.
15
+ */
16
+ onClose: () => void;
17
+ /**
18
+ * Code snippets language
19
+ */
20
+ language: string;
21
+ /**
22
+ * Code snippets
23
+ */
24
+ snippets: ISnippet[];
25
+ /**
26
+ * Markdown parser
27
+ */
28
+ markdownParser?: IMarkdownParser;
29
+ /**
30
+ * HTML sanitizer
31
+ */
32
+ sanitizer?: IRenderMime.ISanitizer;
33
+ /**
34
+ * Application translator
35
+ */
36
+ translator?: ITranslator;
37
+ }
38
+ /**
39
+ * Dialog to inject snippet in a cell.
40
+ */
41
+ export declare function SnippetDialog(props: ISnippetDialogProps): JSX.Element;
42
+ export default SnippetDialog;
@@ -0,0 +1,42 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ /*
3
+ * Copyright (c) 2025-2026 Datalayer, Inc.
4
+ * Distributed under the terms of the Modified BSD License.
5
+ */
6
+ import { useCallback, useMemo, useState } from 'react';
7
+ import { nullTranslator } from '@jupyterlab/translation';
8
+ import { FormControl, Select, Text } from '@primer/react';
9
+ import { Box } from '@datalayer/primer-addons';
10
+ import { Dialog } from '@primer/react/experimental';
11
+ import { Markdown } from '@datalayer/core/lib/components/display';
12
+ /**
13
+ * Dialog to inject snippet in a cell.
14
+ */
15
+ export function SnippetDialog(props) {
16
+ const { model, onClose, language, snippets, markdownParser, sanitizer, translator, } = props;
17
+ const [selection, setSelection] = useState(snippets[0]);
18
+ const trans = useMemo(() => (translator ?? nullTranslator).load('jupyterlab'), [translator]);
19
+ const onSelectionChange = useCallback((e) => {
20
+ const selection = e.target.value;
21
+ setSelection(snippets[parseInt(selection, 10)]);
22
+ }, [setSelection, snippets]);
23
+ const injectSnippet = useCallback(() => {
24
+ const size = model.sharedModel.getSource().length;
25
+ model.sharedModel.updateSource(size, size, '\n'.repeat(size ? 2 : 0) + selection.code);
26
+ onClose();
27
+ }, [model, selection, onClose]);
28
+ return (_jsx(Dialog, { title: _jsx("span", { style: { color: 'var(--fgColor-default)' }, children: "Pick a snippet to inject" }), onClose: onClose, footerButtons: [
29
+ {
30
+ buttonType: 'default',
31
+ content: trans.__('Cancel'),
32
+ onClick: onClose,
33
+ },
34
+ {
35
+ buttonType: 'primary',
36
+ content: trans.__('Inject snippet'),
37
+ onClick: injectSnippet,
38
+ autoFocus: true,
39
+ },
40
+ ], children: _jsx(Box, { as: "form", children: _jsxs(FormControl, { children: [_jsx(FormControl.Label, {}), _jsx(Select, { block: true, onChange: onSelectionChange, children: snippets.map((snippet, index) => (_jsx(Select.Option, { value: `${index}`, children: snippet.title }, index))) }), _jsxs(FormControl.Caption, { children: [selection.description && (_jsx(Text, { as: "p", children: selection.description })), markdownParser ? (_jsx(Markdown, { markdownParser: markdownParser, sanitizer: sanitizer, text: `\`\`\`${language}\n${selection.code}\`\`\`` })) : (_jsx("code", { children: selection.code }))] })] }) }) }));
41
+ }
42
+ export default SnippetDialog;
@@ -0,0 +1,7 @@
1
+ import { IStudent, IStudentItem } from '../../models';
2
+ type Props = {
3
+ student?: IStudent;
4
+ studentItem?: IStudentItem;
5
+ };
6
+ export declare const StudentItemStatus: (props: Props) => import("react/jsx-runtime").JSX.Element;
7
+ export default StudentItemStatus;
@@ -0,0 +1,68 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { StudentResultCircle } from '@datalayer/core/lib/components/students/StudentResultCircle';
3
+ const getExerciseScore = (studentItem) => {
4
+ if (studentItem && studentItem.score) {
5
+ return studentItem.score;
6
+ }
7
+ return 0;
8
+ };
9
+ export const StudentItemStatus = (props) => {
10
+ const { studentItem } = props;
11
+ if (!studentItem) {
12
+ return _jsx(StudentResultCircle, { status: "none", label: "No result yet" });
13
+ }
14
+ switch (studentItem.itemType) {
15
+ case 'dataset': {
16
+ if (studentItem.completed === undefined) {
17
+ return (_jsx(StudentResultCircle, { status: "none", label: "Dataset not started" }));
18
+ }
19
+ const completed = Boolean(studentItem.completed);
20
+ return (_jsx(StudentResultCircle, { status: completed ? 'pass' : 'fail', label: completed ? 'Dataset completed' : 'Dataset not completed' }));
21
+ }
22
+ case 'lesson': {
23
+ if (studentItem.completed === undefined) {
24
+ return _jsx(StudentResultCircle, { status: "none", label: "Lesson not started" });
25
+ }
26
+ const completed = Boolean(studentItem.completed);
27
+ return (_jsx(StudentResultCircle, { status: completed ? 'pass' : 'fail', label: completed ? 'Lesson completed' : 'Lesson not completed' }));
28
+ }
29
+ case 'exercise': {
30
+ const hasResult = Boolean(studentItem.id) ||
31
+ Boolean(studentItem.codeStudent) ||
32
+ studentItem.score !== undefined;
33
+ if (!hasResult) {
34
+ return (_jsx(StudentResultCircle, { status: "none", label: "Exercise not started" }));
35
+ }
36
+ const passed = getExerciseScore(studentItem) > 0;
37
+ return (_jsx(StudentResultCircle, { status: passed ? 'pass' : 'fail', label: passed ? 'Exercise passed' : 'Exercise failed' }));
38
+ }
39
+ case 'assignment': {
40
+ const hasRecordedAttempt = Boolean(studentItem.id) ||
41
+ studentItem.nbgradesTotalScore !== undefined ||
42
+ studentItem.nbgradesTotalPoints !== undefined ||
43
+ Boolean(studentItem.nbgrades);
44
+ if (!hasRecordedAttempt) {
45
+ return (_jsx(StudentResultCircle, { status: "none", label: "Assignment not graded" }));
46
+ }
47
+ const totalScore = studentItem.nbgradesTotalScore ?? 0;
48
+ const totalPoints = studentItem.nbgradesTotalPoints ?? 0;
49
+ const nbgrades = Array.isArray(studentItem.nbgrades)
50
+ ? studentItem.nbgrades
51
+ : [];
52
+ const status = totalPoints === 0
53
+ ? 'pass'
54
+ : totalScore <= 0
55
+ ? 'fail'
56
+ : totalScore >= totalPoints
57
+ ? 'pass'
58
+ : 'partial';
59
+ const tooltip = nbgrades.length > 0
60
+ ? `Assignment graded: ${totalScore} / ${totalPoints} (${nbgrades.length} checks)`
61
+ : `Assignment graded: ${totalScore} / ${totalPoints}`;
62
+ return _jsx(StudentResultCircle, { status: status, label: tooltip });
63
+ }
64
+ default:
65
+ return _jsx(StudentResultCircle, { status: "none", label: "No result yet" });
66
+ }
67
+ };
68
+ export default StudentItemStatus;
@@ -0,0 +1 @@
1
+ export * from './StudentItemStatus';
@@ -0,0 +1,5 @@
1
+ /*
2
+ * Copyright (c) 2025-2026 Datalayer, Inc.
3
+ * Distributed under the terms of the Modified BSD License.
4
+ */
5
+ export * from './StudentItemStatus';
@@ -0,0 +1,5 @@
1
+ import { ISpaceVariant } from '../../models';
2
+ export declare const SpaceVariantToken: (props: {
3
+ variant: ISpaceVariant | string;
4
+ }) => import("react/jsx-runtime").JSX.Element;
5
+ export default SpaceVariantToken;
@@ -0,0 +1,23 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ /*
3
+ * Copyright (c) 2025-2026 Datalayer, Inc.
4
+ * Distributed under the terms of the Modified BSD License.
5
+ */
6
+ import { Token } from '@primer/react';
7
+ import { ProjectIcon } from '@primer/octicons-react';
8
+ import { StudentIcon } from '@datalayer/icons-react';
9
+ export const SpaceVariantToken = (props) => {
10
+ const variant = String(props.variant || 'default').toLowerCase();
11
+ if (variant.includes('project')) {
12
+ return _jsx(Token, { text: "project", leadingVisual: ProjectIcon });
13
+ }
14
+ switch (variant) {
15
+ case 'default':
16
+ return _jsx(Token, { text: "default" });
17
+ case 'course':
18
+ return _jsx(Token, { text: "course", leadingVisual: StudentIcon });
19
+ default:
20
+ return _jsx(Token, { text: String(variant || 'default') });
21
+ }
22
+ };
23
+ export default SpaceVariantToken;
@@ -0,0 +1 @@
1
+ export * from './SpaceVariantToken';
@@ -0,0 +1,5 @@
1
+ /*
2
+ * Copyright (c) 2025-2026 Datalayer, Inc.
3
+ * Distributed under the terms of the Modified BSD License.
4
+ */
5
+ export * from './SpaceVariantToken';
@@ -0,0 +1,4 @@
1
+ export declare const AssignmentEditorToolbar: (props: {
2
+ notebookId: string;
3
+ }) => import("react/jsx-runtime").JSX.Element;
4
+ export default AssignmentEditorToolbar;
@@ -0,0 +1,18 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ /*
3
+ * Copyright (c) 2025-2026 Datalayer, Inc.
4
+ * Distributed under the terms of the Modified BSD License.
5
+ */
6
+ import { Button } from '@primer/react';
7
+ import { Box } from '@datalayer/primer-addons';
8
+ import { RepoPushIcon } from '@primer/octicons-react';
9
+ // import { PlayIcon, StopIcon } from '@primer/octicons-react';
10
+ // import { notebookStore } from '@datalayer/jupyter-react';
11
+ import { useGradeStore } from '../../state/substates';
12
+ export const AssignmentEditorToolbar = (props) => {
13
+ // const { notebookId } = props;
14
+ // const notebook = notebookStore.getState().selectNotebook(notebookId);
15
+ const { grade } = useGradeStore();
16
+ return (_jsx(Box, { display: "flex", children: _jsx(Box, { children: _jsx(Button, { variant: "invisible", size: "small", leadingVisual: RepoPushIcon, onClick: () => grade(new Date()), children: "Grade" }) }) }));
17
+ };
18
+ export default AssignmentEditorToolbar;
@@ -0,0 +1,2 @@
1
+ export declare const DocumentEditorToolbar: () => import("react/jsx-runtime").JSX.Element;
2
+ export default DocumentEditorToolbar;
@@ -0,0 +1,12 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ /*
3
+ * Copyright (c) 2025-2026 Datalayer, Inc.
4
+ * Distributed under the terms of the Modified BSD License.
5
+ */
6
+ import { Button, Box } from '@primer/react';
7
+ import { RepoPushIcon } from '@primer/octicons-react';
8
+ import { documentStore } from '../../state/substates';
9
+ export const DocumentEditorToolbar = () => {
10
+ return (_jsx(Box, { display: "flex", children: _jsx(Box, { children: _jsx(Button, { variant: "invisible", size: "small", leadingVisual: RepoPushIcon, onClick: () => documentStore.getState().save(new Date()), children: "Save" }) }) }));
11
+ };
12
+ export default DocumentEditorToolbar;
@@ -0,0 +1,29 @@
1
+ import { Session } from '@jupyterlab/services';
2
+ import { CommandRegistry } from '@lumino/commands';
3
+ import type { IRuntimeDesc } from '../../models';
4
+ /**
5
+ * NotebookEditorToolbar component properties
6
+ */
7
+ export type INotebookEditorToolbar = {
8
+ /**
9
+ * Jupyter commands registry
10
+ */
11
+ commandRegistry?: CommandRegistry;
12
+ /**
13
+ * Kernel description
14
+ */
15
+ runtimeDesc?: IRuntimeDesc;
16
+ /**
17
+ * Callback to save the notebook model
18
+ */
19
+ save: () => void;
20
+ /**
21
+ * Session connection
22
+ */
23
+ sessionConnection?: Session.ISessionConnection;
24
+ };
25
+ /**
26
+ * Notebook editor toolbar
27
+ */
28
+ export declare function NotebookEditorToolbar(props: INotebookEditorToolbar): JSX.Element;
29
+ export default NotebookEditorToolbar;
@@ -0,0 +1,30 @@
1
+ import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
2
+ /*
3
+ * Copyright (c) 2025-2026 Datalayer, Inc.
4
+ * Distributed under the terms of the Modified BSD License.
5
+ */
6
+ import { NotebookCommandIds } from '@datalayer/jupyter-react';
7
+ import { Button } from '@primer/react';
8
+ import { PlayIcon, StopIcon } from '@primer/octicons-react';
9
+ import { useEffect, useState } from 'react';
10
+ /**
11
+ * Notebook editor toolbar
12
+ */
13
+ export function NotebookEditorToolbar(props) {
14
+ const { commandRegistry, runtimeDesc, sessionConnection } = props;
15
+ const [kernelStatus, setKernelStatus] = useState();
16
+ useEffect(() => {
17
+ const onStatusChanged = () => {
18
+ setKernelStatus(sessionConnection?.kernel?.status);
19
+ };
20
+ onStatusChanged();
21
+ sessionConnection?.statusChanged.connect(onStatusChanged);
22
+ sessionConnection?.connectionStatusChanged.connect(onStatusChanged);
23
+ return () => {
24
+ sessionConnection?.statusChanged.disconnect(onStatusChanged);
25
+ sessionConnection?.connectionStatusChanged.disconnect(onStatusChanged);
26
+ };
27
+ }, [sessionConnection]);
28
+ return (_jsxs(_Fragment, { children: [_jsx(Button, { variant: "invisible", size: "small", leadingVisual: PlayIcon, disabled: !runtimeDesc?.location || kernelStatus === 'busy', onClick: (e) => commandRegistry?.execute(NotebookCommandIds.runAll), children: "Run all" }), _jsx(Button, { variant: "invisible", size: "small", leadingVisual: StopIcon, disabled: !runtimeDesc?.location || kernelStatus !== 'busy', onClick: (e) => commandRegistry?.execute(NotebookCommandIds.interrupt), children: "Interrupt" })] }));
29
+ }
30
+ export default NotebookEditorToolbar;
@@ -1,3 +1,4 @@
1
+ import type { MessageDetail } from './MessageHistory';
1
2
  /**
2
3
  * Tool detail from API
3
4
  */
@@ -12,20 +13,6 @@ interface ToolDetail {
12
13
  requiresApproval: boolean;
13
14
  sourceCode: string | null;
14
15
  }
15
- /**
16
- * Message detail from API
17
- */
18
- interface MessageDetail {
19
- role: string;
20
- content: string;
21
- estimatedTokens: number;
22
- timestamp: string | null;
23
- inContext: boolean;
24
- toolName: string | null;
25
- toolCallId: string | null;
26
- isToolCall: boolean;
27
- isToolResult: boolean;
28
- }
29
16
  /**
30
17
  * System prompt from API
31
18
  */
@@ -7,8 +7,8 @@ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-run
7
7
  */
8
8
  import { Text, Button, Label, ProgressBar } from '@primer/react';
9
9
  import { Box } from '@datalayer/primer-addons';
10
- import { AiModelIcon, TerminalIcon, CommentDiscussionIcon, DatabaseIcon, KeyIcon, CodeIcon, CheckCircleIcon, XCircleIcon, ChevronDownIcon, ChevronRightIcon, InfoIcon, } from '@primer/octicons-react';
11
- import React, { useState, useMemo } from 'react';
10
+ import { AiModelIcon, TerminalIcon, DatabaseIcon, KeyIcon, CodeIcon, ChevronDownIcon, ChevronRightIcon, InfoIcon, } from '@primer/octicons-react';
11
+ import React, { useState } from 'react';
12
12
  /**
13
13
  * Get the API base URL for fetching context data.
14
14
  * If apiBase prop is provided, use it.
@@ -84,48 +84,6 @@ function ToolDetailView({ tool }) {
84
84
  maxHeight: 300,
85
85
  }, children: tool.sourceCode }))] }));
86
86
  }
87
- /**
88
- * Message detail view component
89
- */
90
- function MessageDetailView({ message }) {
91
- const roleColors = {
92
- user: 'accent.fg',
93
- assistant: 'success.fg',
94
- system: 'attention.fg',
95
- tool: 'done.fg',
96
- };
97
- const roleIcons = {
98
- user: CommentDiscussionIcon,
99
- assistant: AiModelIcon,
100
- system: InfoIcon,
101
- tool: TerminalIcon,
102
- };
103
- const RoleIcon = roleIcons[message.role] || CommentDiscussionIcon;
104
- return (_jsxs(Box, { sx: {
105
- p: 2,
106
- mb: 1,
107
- bg: message.inContext ? 'canvas.default' : 'canvas.inset',
108
- border: '1px solid',
109
- borderColor: message.inContext ? 'border.default' : 'border.muted',
110
- borderRadius: 2,
111
- opacity: message.inContext ? 1 : 0.7,
112
- }, children: [_jsxs(Box, { sx: { display: 'flex', alignItems: 'center', gap: 2, mb: 1 }, children: [_jsx(RoleIcon, { size: 14 }), _jsx(Text, { sx: {
113
- fontWeight: 'semibold',
114
- fontSize: 0,
115
- color: roleColors[message.role] || 'fg.default',
116
- textTransform: 'capitalize',
117
- }, children: message.role }), message.toolName && (_jsx(Label, { size: "small", variant: "secondary", children: message.toolName })), message.isToolCall && (_jsx(Label, { size: "small", variant: "accent", children: "call" })), message.isToolResult && (_jsx(Label, { size: "small", variant: "success", children: "result" })), message.inContext ? (_jsx(CheckCircleIcon, { size: 12, fill: "var(--fgColor-success)" })) : (_jsx(XCircleIcon, { size: 12, fill: "var(--fgColor-muted)" })), _jsxs(Text, { sx: { fontSize: 0, color: 'fg.muted', ml: 'auto' }, children: [formatTokens(message.estimatedTokens), " tokens"] })] }), _jsx(Text, { sx: {
118
- fontSize: 0,
119
- fontFamily: 'mono',
120
- display: 'block',
121
- whiteSpace: 'pre-wrap',
122
- wordBreak: 'break-word',
123
- maxHeight: 100,
124
- overflow: 'auto',
125
- }, children: message.content.length > 500
126
- ? message.content.slice(0, 500) + '...'
127
- : message.content })] }));
128
- }
129
87
  /**
130
88
  * ContextInspector component displays full detailed context snapshot.
131
89
  */
@@ -133,22 +91,6 @@ export function ContextInspector({ agentId, apiBase, liveData, }) {
133
91
  const hasLiveData = liveData !== undefined;
134
92
  // REST polling removed — data comes exclusively via WS `agent.snapshot`.
135
93
  const contextData = liveData;
136
- // Separate messages by in_context status
137
- const { inContextMessages, outOfContextMessages } = useMemo(() => {
138
- if (!contextData?.messages) {
139
- return { inContextMessages: [], outOfContextMessages: [] };
140
- }
141
- return {
142
- inContextMessages: contextData.messages.filter(m => m.inContext),
143
- outOfContextMessages: contextData.messages.filter(m => !m.inContext),
144
- };
145
- }, [contextData?.messages]);
146
- const messageHistoryTokens = useMemo(() => {
147
- if (!contextData?.messages) {
148
- return 0;
149
- }
150
- return contextData.messages.reduce((sum, message) => sum + (message.estimatedTokens || 0), 0);
151
- }, [contextData?.messages]);
152
94
  if (!hasLiveData) {
153
95
  return (_jsx(Box, { sx: {
154
96
  p: 3,
@@ -210,19 +152,7 @@ export function ContextInspector({ agentId, apiBase, liveData, }) {
210
152
  wordBreak: 'break-word',
211
153
  maxHeight: 200,
212
154
  overflow: 'auto',
213
- }, children: prompt.content })] }, idx)))) }), _jsx(CollapsibleSection, { title: "Tool Definitions", icon: TerminalIcon, count: contextData.tools.length, tokens: contextData.toolTokens, children: contextData.tools.length === 0 ? (_jsx(Text, { sx: { color: 'fg.muted', fontSize: 1 }, children: "No tools configured" })) : (contextData.tools.map((tool, idx) => (_jsx(ToolDetailView, { tool: tool }, idx)))) }), _jsx(CollapsibleSection, { title: "Message History", icon: CommentDiscussionIcon, count: contextData.messages.length, tokens: messageHistoryTokens, children: contextData.messages.length === 0 ? (_jsx(Text, { sx: { color: 'fg.muted', fontSize: 1 }, children: "No messages yet" })) : (_jsxs(_Fragment, { children: [outOfContextMessages.length > 0 && (_jsxs(Box, { sx: { mb: 3 }, children: [_jsxs(Text, { sx: {
214
- fontWeight: 'semibold',
215
- fontSize: 1,
216
- color: 'fg.muted',
217
- mb: 2,
218
- display: 'block',
219
- }, children: ["Out of Context (", outOfContextMessages.length, ")"] }), outOfContextMessages.map((msg, idx) => (_jsx(MessageDetailView, { message: msg }, `out-${idx}`)))] })), inContextMessages.length > 0 && (_jsxs(Box, { children: [_jsxs(Text, { sx: {
220
- fontWeight: 'semibold',
221
- fontSize: 1,
222
- color: 'success.fg',
223
- mb: 2,
224
- display: 'block',
225
- }, children: ["In Context (", inContextMessages.length, ")"] }), inContextMessages.map((msg, idx) => (_jsx(MessageDetailView, { message: msg }, `in-${idx}`)))] }))] })) }), contextData.memoryBlocks.length > 0 && (_jsx(CollapsibleSection, { title: "Memory Blocks", icon: DatabaseIcon, count: contextData.memoryBlocks.length, tokens: contextData.memoryTokens, children: contextData.memoryBlocks.map((block, idx) => (_jsx(Box, { as: "pre", sx: {
155
+ }, children: prompt.content })] }, idx)))) }), _jsx(CollapsibleSection, { title: "Tool Definitions", icon: TerminalIcon, count: contextData.tools.length, tokens: contextData.toolTokens, children: contextData.tools.length === 0 ? (_jsx(Text, { sx: { color: 'fg.muted', fontSize: 1 }, children: "No tools configured" })) : (contextData.tools.map((tool, idx) => (_jsx(ToolDetailView, { tool: tool }, idx)))) }), contextData.memoryBlocks.length > 0 && (_jsx(CollapsibleSection, { title: "Memory Blocks", icon: DatabaseIcon, count: contextData.memoryBlocks.length, tokens: contextData.memoryTokens, children: contextData.memoryBlocks.map((block, idx) => (_jsx(Box, { as: "pre", sx: {
226
156
  p: 2,
227
157
  mb: 2,
228
158
  bg: 'canvas.inset',
@@ -1,12 +1,13 @@
1
1
  export interface CostUsageChartProps {
2
2
  serviceName?: string;
3
3
  agentId?: string;
4
+ runtimeId?: string;
4
5
  apiKey?: string;
5
- runUrl?: string;
6
- wsRunUrl?: string;
6
+ datalayerUrl?: string;
7
+ wsUrl?: string;
7
8
  liveCumulativeUsd?: number;
8
9
  liveTimestampMs?: number | null;
9
10
  height?: number;
10
11
  }
11
- export declare function CostUsageChart({ serviceName, agentId, apiKey, runUrl, wsRunUrl, liveCumulativeUsd, liveTimestampMs, height, }: CostUsageChartProps): import("react/jsx-runtime").JSX.Element;
12
+ export declare function CostUsageChart({ serviceName, agentId, runtimeId, apiKey, datalayerUrl, wsUrl, liveCumulativeUsd, liveTimestampMs, height, }: CostUsageChartProps): import("react/jsx-runtime").JSX.Element;
12
13
  export default CostUsageChart;