@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
@@ -7,6 +7,7 @@ import { useEffect, useMemo, useRef, useState } from 'react';
7
7
  import ReactECharts from 'echarts-for-react';
8
8
  import { buildOtelWebSocketUrl } from '@datalayer/core/lib/otel';
9
9
  import { toMetricValue } from '../hooks/useMonitoring';
10
+ import { fetchOtelMetricRows } from '../hooks/useMonitoring';
10
11
  import { subscribeOtelWs } from './otelWsPool';
11
12
  import { agentRuntimeStore, getMonitoringCacheKey, useAgentRuntimeStore, } from '../stores/agentRuntimeStore';
12
13
  const SERIES = [
@@ -181,7 +182,7 @@ function extractServiceName(row) {
181
182
  return candidate;
182
183
  }
183
184
  }
184
- const resourceAttributes = row.resource_attributes;
185
+ const resourceAttributes = parseResourceAttributes(row.resource_attributes);
185
186
  if (resourceAttributes && typeof resourceAttributes === 'object') {
186
187
  const nested = resourceAttributes['service.name'];
187
188
  if (typeof nested === 'string' && nested.length > 0) {
@@ -190,34 +191,101 @@ function extractServiceName(row) {
190
191
  }
191
192
  return undefined;
192
193
  }
193
- /** Extract `agent.id` from the `attributes` field of a metric row. */
194
- function extractAgentId(row) {
195
- const attrs = row.attributes;
194
+ function parseAttributes(attrs) {
195
+ if (attrs && typeof attrs === 'object' && !Array.isArray(attrs)) {
196
+ return attrs;
197
+ }
196
198
  if (typeof attrs === 'string') {
197
199
  try {
198
200
  const parsed = JSON.parse(attrs);
199
- if (typeof parsed === 'object' && parsed !== null) {
200
- const aid = parsed['agent.id'];
201
- if (typeof aid === 'string')
202
- return aid;
201
+ if (parsed && typeof parsed === 'object' && !Array.isArray(parsed)) {
202
+ return parsed;
203
203
  }
204
204
  }
205
205
  catch {
206
- // ignore
206
+ // Ignore malformed attributes payloads.
207
207
  }
208
208
  }
209
- else if (typeof attrs === 'object' && attrs !== null) {
210
- const aid = attrs['agent.id'];
211
- if (typeof aid === 'string')
212
- return aid;
209
+ return {};
210
+ }
211
+ function parseResourceAttributes(attrs) {
212
+ if (attrs && typeof attrs === 'object' && !Array.isArray(attrs)) {
213
+ return attrs;
213
214
  }
215
+ if (typeof attrs === 'string') {
216
+ try {
217
+ const parsed = JSON.parse(attrs);
218
+ if (parsed && typeof parsed === 'object' && !Array.isArray(parsed)) {
219
+ return parsed;
220
+ }
221
+ }
222
+ catch {
223
+ // Ignore malformed resource attributes payloads.
224
+ }
225
+ }
226
+ return {};
227
+ }
228
+ function extractRuntimeId(row) {
229
+ const directCandidates = [
230
+ row.runtime_id,
231
+ row.runtime,
232
+ row.pod_name,
233
+ row.k8s_pod_name,
234
+ ];
235
+ for (const candidate of directCandidates) {
236
+ if (typeof candidate === 'string' && candidate.trim().length > 0) {
237
+ return candidate.trim();
238
+ }
239
+ }
240
+ const attrs = parseAttributes(row.attributes);
241
+ const attrCandidates = [
242
+ attrs['runtime.id'],
243
+ attrs['runtime.pod_name'],
244
+ attrs['k8s.pod.name'],
245
+ ];
246
+ for (const candidate of attrCandidates) {
247
+ if (typeof candidate === 'string' && candidate.trim().length > 0) {
248
+ return candidate.trim();
249
+ }
250
+ }
251
+ const resourceAttributes = parseResourceAttributes(row.resource_attributes);
252
+ const resourceCandidates = [
253
+ resourceAttributes['runtime.id'],
254
+ resourceAttributes['runtime.pod_name'],
255
+ resourceAttributes['k8s.pod.name'],
256
+ ];
257
+ for (const candidate of resourceCandidates) {
258
+ if (typeof candidate === 'string' && candidate.trim().length > 0) {
259
+ return candidate.trim();
260
+ }
261
+ }
262
+ return undefined;
263
+ }
264
+ function rowMatchesSource(row, serviceName, runtimeId) {
265
+ const resolvedServiceName = String(serviceName || '').trim();
266
+ const resolvedRuntimeId = String(runtimeId || '').trim();
267
+ if (!resolvedServiceName && !resolvedRuntimeId) {
268
+ return true;
269
+ }
270
+ const serviceMatches = resolvedServiceName.length > 0 &&
271
+ extractServiceName(row) === resolvedServiceName;
272
+ const runtimeMatches = resolvedRuntimeId.length > 0 && extractRuntimeId(row) === resolvedRuntimeId;
273
+ return serviceMatches || runtimeMatches;
274
+ }
275
+ /** Extract `agent.id` from the `attributes` field of a metric row. */
276
+ function extractAgentId(row) {
277
+ const parsed = parseAttributes(row.attributes);
278
+ const aid = parsed['agent.id'];
279
+ if (typeof aid === 'string')
280
+ return aid;
214
281
  return undefined;
215
282
  }
216
- export function TokenUsageChart({ serviceName, agentId, apiKey, runUrl, wsRunUrl, liveSystemPromptTokens, liveToolsDescriptionTokens, liveUserMessageTokens, liveAgentMessageTokens, liveToolsUsageTokens, liveTimestampMs, height = 160, }) {
283
+ export function TokenUsageChart({ serviceName, agentId, runtimeId, apiKey, datalayerUrl, wsUrl, liveSystemPromptTokens, liveToolsDescriptionTokens, liveUserMessageTokens, liveAgentMessageTokens, liveToolsUsageTokens, liveTimestampMs, height = 160, }) {
284
+ const cacheServiceKey = String(serviceName || runtimeId || '').trim() || undefined;
217
285
  const monitoringCache = useAgentRuntimeStore(s => s.monitoringCache);
218
286
  const mergeTokenTurns = useAgentRuntimeStore(s => s.mergeTokenTurns);
219
287
  const appendLocalTokenTurnFull = useAgentRuntimeStore(s => s.appendLocalTokenTurnFull);
220
- const cachedEntry = useMemo(() => resolveMonitoringEntry(monitoringCache, serviceName, agentId), [agentId, monitoringCache, serviceName]);
288
+ const cachedEntry = useMemo(() => resolveMonitoringEntry(monitoringCache, cacheServiceKey, agentId), [agentId, cacheServiceKey, monitoringCache]);
221
289
  const [turns, setTurns] = useState([]);
222
290
  const initialTimestampMsRef = useRef(Date.now());
223
291
  const cumulativeRef = useRef({
@@ -226,7 +294,7 @@ export function TokenUsageChart({ serviceName, agentId, apiKey, runUrl, wsRunUrl
226
294
  });
227
295
  // ── Reset state on source switch ──────────────────────────────
228
296
  useEffect(() => {
229
- if (!serviceName) {
297
+ if (!cacheServiceKey) {
230
298
  setTurns([]);
231
299
  initialTimestampMsRef.current = Date.now();
232
300
  cumulativeRef.current = { completions: 0, values: emptyValues() };
@@ -239,10 +307,82 @@ export function TokenUsageChart({ serviceName, agentId, apiKey, runUrl, wsRunUrl
239
307
  cumulativeRef.current = latestTurn
240
308
  ? { completions: latestTurn.turnNumber, values: latestTurn.values }
241
309
  : { completions: 0, values: emptyValues() };
242
- }, [agentId, cachedEntry, serviceName]);
310
+ }, [agentId, cacheServiceKey, cachedEntry]);
311
+ // Bootstrap chart with historical OTEL metrics so charts are populated even
312
+ // before the first websocket update arrives.
313
+ useEffect(() => {
314
+ if (!cacheServiceKey || !apiKey || !datalayerUrl) {
315
+ return;
316
+ }
317
+ let cancelled = false;
318
+ const loadInitialMetrics = async () => {
319
+ try {
320
+ const metricNames = [COMPLETIONS_METRIC, ...SERIES.map(s => s.metric)];
321
+ const results = await Promise.all(metricNames.map(metric => fetchOtelMetricRows({
322
+ metric,
323
+ serviceName,
324
+ datalayerUrl,
325
+ apiKey,
326
+ limit: 1000,
327
+ })));
328
+ if (cancelled) {
329
+ return;
330
+ }
331
+ let rows = results.flat().filter(row => {
332
+ const castedRow = row;
333
+ if (!rowMatchesSource(castedRow, serviceName, runtimeId)) {
334
+ return false;
335
+ }
336
+ return !agentId || extractAgentId(castedRow) === agentId;
337
+ });
338
+ if (rows.length === 0 && runtimeId && !serviceName) {
339
+ rows = results.flat().filter(row => {
340
+ const castedRow = row;
341
+ return (rowMatchesSource(castedRow, undefined, runtimeId) &&
342
+ (!agentId || extractAgentId(castedRow) === agentId));
343
+ });
344
+ }
345
+ const { turns: initialTurns, finalState } = extractTurnsFromRows(rows, {
346
+ completions: 0,
347
+ values: emptyValues(),
348
+ });
349
+ if (cancelled || initialTurns.length === 0) {
350
+ return;
351
+ }
352
+ cumulativeRef.current = finalState;
353
+ mergeTokenTurns({
354
+ serviceName: cacheServiceKey,
355
+ agentId,
356
+ turns: initialTurns.map(pointToLocalTokenTurn),
357
+ });
358
+ const mergedEntry = resolveMonitoringEntry(agentRuntimeStore.getState().monitoringCache, cacheServiceKey, agentId);
359
+ if (mergedEntry) {
360
+ setTurns(mergedEntry.tokenTurns.map(localTokenTurnToPoint));
361
+ }
362
+ else {
363
+ setTurns(initialTurns);
364
+ }
365
+ }
366
+ catch {
367
+ // Fail open: websocket updates can still populate the chart.
368
+ }
369
+ };
370
+ void loadInitialMetrics();
371
+ return () => {
372
+ cancelled = true;
373
+ };
374
+ }, [
375
+ agentId,
376
+ apiKey,
377
+ cacheServiceKey,
378
+ datalayerUrl,
379
+ mergeTokenTurns,
380
+ runtimeId,
381
+ serviceName,
382
+ ]);
243
383
  // Apply immediate post-turn token totals from monitoring snapshots.
244
384
  useEffect(() => {
245
- if (!serviceName)
385
+ if (!cacheServiceKey)
246
386
  return;
247
387
  const rawValues = [
248
388
  liveSystemPromptTokens,
@@ -268,7 +408,7 @@ export function TokenUsageChart({ serviceName, agentId, apiKey, runUrl, wsRunUrl
268
408
  ? liveTimestampMs
269
409
  : Date.now();
270
410
  appendLocalTokenTurnFull({
271
- serviceName,
411
+ serviceName: cacheServiceKey,
272
412
  agentId,
273
413
  timestampMs,
274
414
  systemPromptTokens,
@@ -278,12 +418,13 @@ export function TokenUsageChart({ serviceName, agentId, apiKey, runUrl, wsRunUrl
278
418
  toolsUsageTokens,
279
419
  totalTokens,
280
420
  });
281
- const mergedEntry = resolveMonitoringEntry(agentRuntimeStore.getState().monitoringCache, serviceName, agentId);
421
+ const mergedEntry = resolveMonitoringEntry(agentRuntimeStore.getState().monitoringCache, cacheServiceKey, agentId);
282
422
  if (mergedEntry) {
283
423
  setTurns(mergedEntry.tokenTurns.map(localTokenTurnToPoint));
284
424
  }
285
425
  }, [
286
426
  agentId,
427
+ cacheServiceKey,
287
428
  appendLocalTokenTurnFull,
288
429
  liveAgentMessageTokens,
289
430
  liveSystemPromptTokens,
@@ -295,10 +436,10 @@ export function TokenUsageChart({ serviceName, agentId, apiKey, runUrl, wsRunUrl
295
436
  ]);
296
437
  // ── WebSocket subscription (shared connection pool) ─────────
297
438
  useEffect(() => {
298
- if (!serviceName || !apiKey)
439
+ if (!cacheServiceKey || !apiKey)
299
440
  return;
300
- const rawBaseUrl = wsRunUrl ||
301
- runUrl ||
441
+ const rawBaseUrl = wsUrl ||
442
+ datalayerUrl ||
302
443
  (typeof window !== 'undefined' ? window.location.origin : '');
303
444
  if (!rawBaseUrl)
304
445
  return;
@@ -311,9 +452,9 @@ export function TokenUsageChart({ serviceName, agentId, apiKey, runUrl, wsRunUrl
311
452
  window.location.protocol === 'https:'
312
453
  ? 'https:'
313
454
  : 'http:'}//${typeof window !== 'undefined' ? window.location.host : ''}${rawBaseUrl}`;
314
- let wsUrl;
455
+ let resolvedWsUrl;
315
456
  try {
316
- wsUrl = buildOtelWebSocketUrl({
457
+ resolvedWsUrl = buildOtelWebSocketUrl({
317
458
  baseUrl: baseWithProtocol,
318
459
  token: apiKey,
319
460
  });
@@ -321,11 +462,11 @@ export function TokenUsageChart({ serviceName, agentId, apiKey, runUrl, wsRunUrl
321
462
  catch {
322
463
  return;
323
464
  }
324
- const unsubscribe = subscribeOtelWs(wsUrl, msg => {
465
+ const unsubscribe = subscribeOtelWs(resolvedWsUrl, msg => {
325
466
  if (msg.signal !== 'metrics')
326
467
  return;
327
468
  const rows = Array.isArray(msg.data) ? msg.data : [];
328
- let matchingRows = rows.filter(row => extractServiceName(row) === serviceName);
469
+ let matchingRows = rows.filter(row => rowMatchesSource(row, serviceName, runtimeId));
329
470
  // Filter by agent.id when specified.
330
471
  if (agentId) {
331
472
  matchingRows = matchingRows.filter(row => extractAgentId(row) === agentId);
@@ -336,11 +477,11 @@ export function TokenUsageChart({ serviceName, agentId, apiKey, runUrl, wsRunUrl
336
477
  if (newTurns.length > 0) {
337
478
  cumulativeRef.current = finalState;
338
479
  mergeTokenTurns({
339
- serviceName,
480
+ serviceName: cacheServiceKey,
340
481
  agentId,
341
482
  turns: newTurns.map(pointToLocalTokenTurn),
342
483
  });
343
- const mergedEntry = resolveMonitoringEntry(agentRuntimeStore.getState().monitoringCache, serviceName, agentId);
484
+ const mergedEntry = resolveMonitoringEntry(agentRuntimeStore.getState().monitoringCache, cacheServiceKey, agentId);
344
485
  if (mergedEntry) {
345
486
  setTurns(mergedEntry.tokenTurns.map(localTokenTurnToPoint));
346
487
  }
@@ -350,7 +491,16 @@ export function TokenUsageChart({ serviceName, agentId, apiKey, runUrl, wsRunUrl
350
491
  }
351
492
  });
352
493
  return unsubscribe;
353
- }, [agentId, apiKey, mergeTokenTurns, runUrl, serviceName, wsRunUrl]);
494
+ }, [
495
+ agentId,
496
+ apiKey,
497
+ cacheServiceKey,
498
+ mergeTokenTurns,
499
+ datalayerUrl,
500
+ runtimeId,
501
+ serviceName,
502
+ wsUrl,
503
+ ]);
354
504
  // ── Chart options ─────────────────────────────────────────────
355
505
  const option = useMemo(() => {
356
506
  const legendLabels = Array.from(new Set(SERIES.map(item => item.label)));
@@ -24,7 +24,7 @@ export interface TurnGraphChartProps {
24
24
  /** Filter spans to this agent ID (matches ``agent.id`` span attribute). */
25
25
  agentId?: string;
26
26
  /** Base URL for the Datalayer OTEL service. */
27
- runUrl?: string;
27
+ datalayerUrl?: string;
28
28
  /** JWT / API key for OTEL auth. */
29
29
  apiKey?: string;
30
30
  /**
@@ -386,7 +386,7 @@ function buildOption(run) {
386
386
  ],
387
387
  };
388
388
  }
389
- export const TurnGraphChart = ({ serviceName, agentId, runUrl, apiKey, autoRefreshMs = 10_000, height = 320, style, }) => {
389
+ export const TurnGraphChart = ({ serviceName, agentId, datalayerUrl, apiKey, autoRefreshMs = 10_000, height = 320, style, }) => {
390
390
  const [runs, setRuns] = useState([]);
391
391
  const [selectedIdx, setSelectedIdx] = useState(0);
392
392
  const [loading, setLoading] = useState(false);
@@ -440,12 +440,12 @@ export const TurnGraphChart = ({ serviceName, agentId, runUrl, apiKey, autoRefre
440
440
  };
441
441
  }, []);
442
442
  const fetchData = useCallback(async () => {
443
- if (!runUrl || !apiKey)
443
+ if (!datalayerUrl || !apiKey)
444
444
  return;
445
445
  setLoading(true);
446
446
  setError(null);
447
447
  try {
448
- const client = createOtelClient({ baseUrl: runUrl, token: apiKey });
448
+ const client = createOtelClient({ baseUrl: datalayerUrl, token: apiKey });
449
449
  const result = await client.fetchTraces({ serviceName, limit: 200 });
450
450
  if (mountedRef.current)
451
451
  upsertRunsFromSpans(result.data, 'replace');
@@ -459,9 +459,9 @@ export const TurnGraphChart = ({ serviceName, agentId, runUrl, apiKey, autoRefre
459
459
  if (mountedRef.current)
460
460
  setLoading(false);
461
461
  }
462
- }, [runUrl, apiKey, serviceName, upsertRunsFromSpans]);
462
+ }, [datalayerUrl, apiKey, serviceName, upsertRunsFromSpans]);
463
463
  const { connected: wsConnected, error: wsError } = useOtelWebSocket({
464
- baseUrl: runUrl,
464
+ baseUrl: datalayerUrl,
465
465
  token: apiKey,
466
466
  callbacks: {
467
467
  onTraces: spans => {
@@ -480,7 +480,7 @@ export const TurnGraphChart = ({ serviceName, agentId, runUrl, apiKey, autoRefre
480
480
  const selectedRun = runs[selectedIdx];
481
481
  const option = useMemo(() => (selectedRun ? buildOption(selectedRun) : null), [selectedRun]);
482
482
  // Not configured — caller didn't pass auth.
483
- if (!runUrl || !apiKey)
483
+ if (!datalayerUrl || !apiKey)
484
484
  return null;
485
485
  if (loading && runs.length === 0) {
486
486
  return (_jsx(Box, { sx: { color: 'fg.muted', fontSize: 1, py: 2 }, children: "Loading OTEL traces\u2026" }));
@@ -0,0 +1,22 @@
1
+ /**
2
+ * A2UiAgentExample
3
+ *
4
+ * A comprehensive, real-world A2UI generative-UI example. The agent
5
+ * (agentspec: `example-a2ui-agent`) exposes a single backend tool,
6
+ * `render_a2ui_surface`, that turns a natural-language request into a
7
+ * validated A2UI v0.9 surface (createSurface + updateComponents +
8
+ * updateDataModel). The frontend renders the returned messages live:
9
+ *
10
+ * - INLINE in the chat as a compact confirmation card.
11
+ * - In the main canvas as a fully interactive A2UI surface (forms, cards,
12
+ * choice pickers, sliders, date pickers, ...).
13
+ *
14
+ * Submitting the rendered surface emits an A2UI client action which we display
15
+ * in a "Submitted values" panel, closing the generate → interact loop.
16
+ *
17
+ * This mirrors the working tool-based generative UI pattern (see
18
+ * AgUiHaikuGenUiExample) but renders A2UI surfaces instead of bespoke cards.
19
+ */
20
+ import React from 'react';
21
+ declare const A2UiAgentExample: React.FC;
22
+ export default A2UiAgentExample;