@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.
- package/README.md +82 -1
- package/lib/{AgentLexical.d.ts → AgentDocument.d.ts} +5 -5
- package/lib/{AgentLexical.js → AgentDocument.js} +156 -26
- package/lib/AgentNode.js +32 -31
- package/lib/AgentNotebook.js +172 -17
- package/lib/AppExamples2.css +47 -0
- package/lib/AppExamples2.d.ts +3 -0
- package/lib/AppExamples2.js +21 -0
- package/lib/{agent-lexical-main.js → agent-document-main.js} +2 -2
- package/lib/agents/AgentRuntimeChat.d.ts +73 -0
- package/lib/agents/AgentRuntimeChat.js +198 -0
- package/lib/api/index.d.ts +12 -0
- package/lib/api/index.js +46 -0
- package/lib/api/runtimes/checkpoints.d.ts +122 -0
- package/lib/api/runtimes/checkpoints.js +118 -0
- package/lib/api/runtimes/environments.d.ts +9 -0
- package/lib/api/runtimes/environments.js +29 -0
- package/lib/api/runtimes/healthz.d.ts +15 -0
- package/lib/api/runtimes/healthz.js +44 -0
- package/lib/api/runtimes/index.d.ts +12 -0
- package/lib/api/runtimes/index.js +16 -0
- package/lib/api/runtimes/runtimes.d.ts +138 -0
- package/lib/api/runtimes/runtimes.js +230 -0
- package/lib/api/runtimes/snapshots.d.ts +38 -0
- package/lib/api/runtimes/snapshots.js +82 -0
- package/lib/api/scheduler/index.d.ts +6 -0
- package/lib/api/scheduler/index.js +10 -0
- package/lib/api/scheduler/schedules.d.ts +85 -0
- package/lib/api/scheduler/schedules.js +78 -0
- package/lib/api/spacer/documents.d.ts +12 -0
- package/lib/api/spacer/documents.js +43 -0
- package/lib/api/spacer/healthz.d.ts +15 -0
- package/lib/api/spacer/healthz.js +44 -0
- package/lib/api/spacer/index.d.ts +15 -0
- package/lib/api/spacer/index.js +19 -0
- package/lib/api/spacer/items.d.ts +25 -0
- package/lib/api/spacer/items.js +55 -0
- package/lib/api/spacer/lexicals.d.ts +34 -0
- package/lib/api/spacer/lexicals.js +89 -0
- package/lib/api/spacer/notebooks.d.ts +34 -0
- package/lib/api/spacer/notebooks.js +89 -0
- package/lib/api/spacer/spaces.d.ts +84 -0
- package/lib/api/spacer/spaces.js +170 -0
- package/lib/api/spacer/users.d.ts +9 -0
- package/lib/api/spacer/users.js +29 -0
- package/lib/chat/Chat.d.ts +1 -1
- package/lib/chat/Chat.js +54 -54
- package/lib/chat/ChatFloating.d.ts +2 -2
- package/lib/chat/ChatFloating.js +136 -25
- package/lib/chat/ChatSidebar.js +20 -22
- package/lib/chat/base/ChatBase.js +429 -39
- package/lib/chat/display/EmptyState.js +21 -21
- package/lib/chat/document/EphemeralDocument.d.ts +23 -0
- package/lib/chat/document/EphemeralDocument.js +270 -0
- package/lib/chat/header/ChatHeaderBase.d.ts +12 -2
- package/lib/chat/header/ChatHeaderBase.js +78 -23
- package/lib/chat/index.d.ts +1 -0
- package/lib/chat/index.js +2 -0
- package/lib/chat/notebook/EphemeralNotebook.d.ts +24 -0
- package/lib/chat/notebook/EphemeralNotebook.js +252 -0
- package/lib/chat/prompt/InputFooter.js +4 -1
- package/lib/client/AgentRuntimesClient.d.ts +127 -0
- package/lib/client/AgentRuntimesClient.js +36 -0
- package/lib/client/AgentsMixin.js +28 -28
- package/lib/client/SdkAgentRuntimesClient.d.ts +1 -1
- package/lib/client/SdkAgentRuntimesClient.js +1 -1
- package/lib/client/mixins/RuntimesMixin.d.ts +93 -0
- package/lib/client/mixins/RuntimesMixin.js +229 -0
- package/lib/client/mixins/SpacerMixin.d.ts +210 -0
- package/lib/client/mixins/SpacerMixin.js +615 -0
- package/lib/client/utils/spacerUtils.d.ts +18 -0
- package/lib/client/utils/spacerUtils.js +32 -0
- package/lib/collaboration/DatalayerCollaboration.d.ts +13 -0
- package/lib/collaboration/DatalayerCollaboration.js +28 -0
- package/lib/collaboration/DatalayerCollaborationProvider.d.ts +58 -0
- package/lib/collaboration/DatalayerCollaborationProvider.js +148 -0
- package/lib/collaboration/index.d.ts +2 -0
- package/lib/collaboration/index.js +6 -0
- package/lib/components/AgentSummary.d.ts +19 -0
- package/lib/components/AgentSummary.js +89 -0
- package/lib/components/a2ui/A2uiSurfaceComposed.d.ts +13 -0
- package/lib/components/a2ui/A2uiSurfaceComposed.js +110 -0
- package/lib/components/a2ui/index.d.ts +2 -0
- package/lib/components/a2ui/index.js +6 -0
- package/lib/components/a2ui/styles.d.ts +14 -0
- package/lib/components/a2ui/styles.js +142 -0
- package/lib/components/context/SpaceSelect.d.ts +2 -0
- package/lib/components/context/SpaceSelect.js +42 -0
- package/lib/components/flashes/FlashDisclaimer.d.ts +2 -0
- package/lib/components/flashes/FlashDisclaimer.js +17 -0
- package/lib/components/icons/ArtifactIcon.d.ts +10 -0
- package/lib/components/icons/ArtifactIcon.js +58 -0
- package/lib/components/icons/index.d.ts +1 -0
- package/lib/components/icons/index.js +5 -0
- package/lib/components/index.d.ts +5 -0
- package/lib/components/index.js +5 -0
- package/lib/components/nbgrader/NbGradesDetails.d.ts +5 -0
- package/lib/components/nbgrader/NbGradesDetails.js +19 -0
- package/lib/components/nbgrader/index.d.ts +1 -0
- package/lib/components/nbgrader/index.js +5 -0
- package/lib/components/progress/CreditsIndicator.d.ts +33 -0
- package/lib/components/progress/CreditsIndicator.js +23 -0
- package/lib/components/progress/index.d.ts +2 -0
- package/lib/components/progress/index.js +6 -0
- package/lib/components/runtimes/RuntimeCellVariables.d.ts +39 -0
- package/lib/components/runtimes/RuntimeCellVariables.js +172 -0
- package/lib/components/runtimes/RuntimeCellVariablesDialog.d.ts +37 -0
- package/lib/components/runtimes/RuntimeCellVariablesDialog.js +101 -0
- package/lib/components/runtimes/RuntimeLauncherDialog.d.ts +57 -0
- package/lib/components/runtimes/RuntimeLauncherDialog.js +275 -0
- package/lib/components/runtimes/RuntimePickerBase.d.ts +69 -0
- package/lib/components/runtimes/RuntimePickerBase.js +122 -0
- package/lib/components/runtimes/RuntimePickerCell.d.ts +34 -0
- package/lib/components/runtimes/RuntimePickerCell.js +104 -0
- package/lib/components/runtimes/RuntimePickerNotebook.d.ts +42 -0
- package/lib/components/runtimes/RuntimePickerNotebook.js +232 -0
- package/lib/components/runtimes/RuntimeReservationControl.d.ts +47 -0
- package/lib/components/runtimes/RuntimeReservationControl.js +42 -0
- package/lib/components/runtimes/RuntimeSimplePicker.d.ts +38 -0
- package/lib/components/runtimes/RuntimeSimplePicker.js +155 -0
- package/lib/components/runtimes/RuntimeTransfer.d.ts +16 -0
- package/lib/components/runtimes/RuntimeTransfer.js +5 -0
- package/lib/components/runtimes/RuntimeUtils.d.ts +17 -0
- package/lib/components/runtimes/RuntimeUtils.js +178 -0
- package/lib/components/runtimes/RuntimeVariables.d.ts +38 -0
- package/lib/components/runtimes/RuntimeVariables.js +75 -0
- package/lib/components/runtimes/index.d.ts +11 -0
- package/lib/components/runtimes/index.js +15 -0
- package/lib/components/scheduler/ScheduleMenu.d.ts +54 -0
- package/lib/components/scheduler/ScheduleMenu.js +154 -0
- package/lib/components/scheduler/index.d.ts +1 -0
- package/lib/components/scheduler/index.js +5 -0
- package/lib/components/snapshots/SandboxSnapshotMenu.d.ts +33 -0
- package/lib/components/snapshots/SandboxSnapshotMenu.js +169 -0
- package/lib/components/snapshots/index.d.ts +1 -0
- package/lib/components/snapshots/index.js +5 -0
- package/lib/components/snippets/SnippetDialog.d.ts +42 -0
- package/lib/components/snippets/SnippetDialog.js +42 -0
- package/lib/components/students/StudentItemStatus.d.ts +7 -0
- package/lib/components/students/StudentItemStatus.js +68 -0
- package/lib/components/students/index.d.ts +1 -0
- package/lib/components/students/index.js +5 -0
- package/lib/components/tokens/SpaceVariantToken.d.ts +5 -0
- package/lib/components/tokens/SpaceVariantToken.js +23 -0
- package/lib/components/tokens/index.d.ts +1 -0
- package/lib/components/tokens/index.js +5 -0
- package/lib/components/toolbars/AssignmentEditorToolbar.d.ts +4 -0
- package/lib/components/toolbars/AssignmentEditorToolbar.js +18 -0
- package/lib/components/toolbars/DocumentEditorToolbar.d.ts +2 -0
- package/lib/components/toolbars/DocumentEditorToolbar.js +12 -0
- package/lib/components/toolbars/NotebookEditorToolbar.d.ts +29 -0
- package/lib/components/toolbars/NotebookEditorToolbar.js +30 -0
- package/lib/context/ContextInspector.d.ts +1 -14
- package/lib/context/ContextInspector.js +3 -73
- package/lib/context/CostUsageChart.d.ts +4 -3
- package/lib/context/CostUsageChart.js +236 -35
- package/lib/context/MessageHistory.d.ts +30 -0
- package/lib/context/MessageHistory.js +129 -0
- package/lib/context/TokenUsageChart.d.ts +4 -3
- package/lib/context/TokenUsageChart.js +180 -30
- package/lib/context/TurnGraphChart.d.ts +1 -1
- package/lib/context/TurnGraphChart.js +6 -6
- package/lib/examples/A2UiAgentExample.d.ts +22 -0
- package/lib/examples/A2UiAgentExample.js +442 -0
- package/lib/examples/A2UiComponentsGalleryExample.d.ts +3 -0
- package/lib/examples/A2UiComponentsGalleryExample.js +863 -0
- package/lib/examples/A2UiContactCardExample.js +9 -5
- package/lib/examples/A2UiRestaurantExample.js +23 -8
- package/lib/examples/A2UiViewerExample.js +75 -3
- package/lib/examples/AgUiAgenticExample.d.ts +1 -12
- package/lib/examples/AgUiAgenticExample.js +52 -8
- package/lib/examples/AgUiBackendToolRenderingExample.d.ts +1 -16
- package/lib/examples/AgUiBackendToolRenderingExample.js +32 -17
- package/lib/examples/AgUiHaikuGenUiExample.d.ts +1 -17
- package/lib/examples/AgUiHaikuGenUiExample.js +49 -33
- package/lib/examples/AgUiHumanInTheLoopExample.d.ts +1 -12
- package/lib/examples/AgUiHumanInTheLoopExample.js +21 -6
- package/lib/examples/AgUiSharedStateExample.d.ts +1 -14
- package/lib/examples/AgUiSharedStateExample.js +21 -6
- package/lib/examples/AgUiToolsBasedGenUiExample.d.ts +1 -14
- package/lib/examples/AgUiToolsBasedGenUiExample.js +21 -6
- package/lib/examples/AgentCheckpointsExample.d.ts +1 -1
- package/lib/examples/AgentCheckpointsExample.js +9 -10
- package/lib/examples/AgentCodemodeExample.js +3 -3
- package/lib/examples/AgentEvalsExample.js +5 -5
- package/lib/examples/AgentGuardrailsExample.js +17 -12
- package/lib/examples/AgentHooksExample.js +14 -55
- package/lib/examples/AgentInferenceProviderExample.js +4 -4
- package/lib/examples/AgentLoopExample.d.ts +10 -0
- package/lib/examples/AgentLoopExample.js +304 -0
- package/lib/examples/AgentMCPExample.js +7 -7
- package/lib/examples/AgentMemoryExample.js +4 -4
- package/lib/examples/AgentMonitoringExample.js +114 -44
- package/lib/examples/AgentNotificationsExample.js +4 -4
- package/lib/examples/AgentOtelExample.d.ts +3 -3
- package/lib/examples/AgentOtelExample.js +15 -10
- package/lib/examples/AgentOutputsExample.js +6 -6
- package/lib/examples/AgentParametersExample.js +21 -33
- package/lib/examples/AgentSandboxExample.js +5 -5
- package/lib/examples/AgentSkillsExample.js +7 -7
- package/lib/examples/AgentSubagentsExample.js +4 -4
- package/lib/examples/AgentToolApprovalsExample.js +5 -5
- package/lib/examples/AgentTriggersExample.js +9 -9
- package/lib/examples/AgentspecsExample.js +63 -41
- package/lib/examples/ChatCustomExample.js +23 -77
- package/lib/examples/ChatExample.js +13 -44
- package/lib/examples/LexicalAgentExample.js +43 -91
- package/lib/examples/LexicalAgentSidebarExample.js +45 -73
- package/lib/examples/NotebookAgentExample.js +52 -81
- package/lib/examples/NotebookAgentSidebarExample.js +43 -71
- package/lib/examples/NotebookCollaborationExample.js +11 -9
- package/lib/examples/NotebookExample.js +5 -2
- package/lib/examples/components/AuthRequiredView.js +1 -1
- package/lib/examples/components/ExampleErrorBoundary.d.ts +46 -0
- package/lib/examples/components/ExampleErrorBoundary.js +67 -0
- package/lib/examples/components/haiku/haiku-card.css +11 -0
- package/lib/examples/components/weather/weather-card.css +11 -0
- package/lib/examples/example-selector.js +3 -1
- package/lib/examples/hooks/useExampleAgentRuntime.d.ts +35 -0
- package/lib/examples/hooks/useExampleAgentRuntime.js +82 -0
- package/lib/examples/hooks/useSpecRenderToolResult.d.ts +30 -0
- package/lib/examples/hooks/useSpecRenderToolResult.js +61 -0
- package/lib/examples/index.d.ts +3 -1
- package/lib/examples/index.js +3 -1
- package/lib/examples/main.js +340 -93
- package/lib/examples/utils/a2ui.d.ts +2 -0
- package/lib/examples/utils/a2ui.js +97 -2
- package/lib/examples/utils/agentSummaryStore.d.ts +21 -0
- package/lib/examples/utils/agentSummaryStore.js +23 -0
- package/lib/examples/utils/notebooks/Empty.ipynb.json +30 -30
- package/lib/examples/utils/runtimeTargetStore.d.ts +9 -0
- package/lib/examples/utils/runtimeTargetStore.js +27 -0
- package/lib/examples/utils/teardownAgents.d.ts +13 -0
- package/lib/examples/utils/teardownAgents.js +78 -0
- package/lib/examples/utils/useExampleAgentRuntimesUrl.d.ts +2 -0
- package/lib/examples/utils/useExampleAgentRuntimesUrl.js +26 -7
- package/lib/examples2/CellExample.d.ts +6 -0
- package/lib/examples2/CellExample.js +20 -0
- package/lib/examples2/DatalayerNotebookExample.d.ts +16 -0
- package/lib/examples2/DatalayerNotebookExample.js +109 -0
- package/lib/examples2/NativeNavigationExample.d.ts +8 -0
- package/lib/examples2/NativeNavigationExample.js +97 -0
- package/lib/examples2/NotebookExample.d.ts +6 -0
- package/lib/examples2/NotebookExample.js +19 -0
- package/lib/examples2/NotebookMutationsKernel.d.ts +2 -0
- package/lib/examples2/NotebookMutationsKernel.js +105 -0
- package/lib/examples2/NotebookMutationsServiceManager.d.ts +2 -0
- package/lib/examples2/NotebookMutationsServiceManager.js +109 -0
- package/lib/examples2/ReactRouterExample.d.ts +6 -0
- package/lib/examples2/ReactRouterExample.js +175 -0
- package/lib/examples2/example-selector.d.ts +22 -0
- package/lib/examples2/example-selector.js +45 -0
- package/lib/examples2/index.d.ts +2 -0
- package/lib/examples2/index.js +6 -0
- package/lib/examples2/lexical-theme.css +436 -0
- package/lib/examples2/main.d.ts +2 -0
- package/lib/examples2/main.js +330 -0
- package/lib/examples2/notebooks/IPyWidgetsExample.ipynb.json +101 -0
- package/lib/examples2/notebooks/IPyWidgetsExampleWithState.ipynb.json +112 -0
- package/lib/examples2/notebooks/Lite.ipynb.json +128 -0
- package/lib/examples2/notebooks/Matplotlib.ipynb.json +137 -0
- package/lib/examples2/notebooks/NotebookExample1.ipynb.json +126 -0
- package/lib/examples2/notebooks/NotebookExample2.ipynb.json +48 -0
- package/lib/examples2/notebooks/NotebookOutputs.ipynb.json +49 -0
- package/lib/examples2/notebooks/NotebookToCExample.ipynb.json +102 -0
- package/lib/examples2/notebooks/OutputIPyWidgetsExample.d.ts +145 -0
- package/lib/examples2/notebooks/OutputIPyWidgetsExample.js +153 -0
- package/lib/examples2/notebooks/PyGWalker.ipynb.json +55 -0
- package/lib/hooks/index.d.ts +9 -1
- package/lib/hooks/index.js +13 -1
- package/lib/hooks/useAIAgentsWebSocket.d.ts +1 -1
- package/lib/hooks/useAIAgentsWebSocket.js +39 -3
- package/lib/hooks/useAgentRuntimes.d.ts +15 -3
- package/lib/hooks/useAgentRuntimes.js +186 -27
- package/lib/hooks/useAgentsService.js +5 -5
- package/lib/hooks/useCellOutputshot.d.ts +4 -0
- package/lib/hooks/useCellOutputshot.js +25 -0
- package/lib/hooks/useCheckpoints.d.ts +8 -8
- package/lib/hooks/useCheckpoints.js +36 -26
- package/lib/hooks/useConfig.d.ts +1 -1
- package/lib/hooks/useMonitoring.d.ts +7 -5
- package/lib/hooks/useMonitoring.js +16 -10
- package/lib/hooks/useNotifications.d.ts +11 -11
- package/lib/hooks/useNotifications.js +1 -1
- package/lib/hooks/useProgressStore.d.ts +25 -0
- package/lib/hooks/useProgressStore.js +58 -0
- package/lib/hooks/useProgressTask.d.ts +9 -0
- package/lib/hooks/useProgressTask.js +41 -0
- package/lib/hooks/useProjects.d.ts +628 -0
- package/lib/hooks/useProjects.js +190 -0
- package/lib/hooks/useRuntimes.d.ts +5 -0
- package/lib/hooks/useRuntimes.js +34 -0
- package/lib/hooks/useToolApprovals.d.ts +6 -6
- package/lib/index.d.ts +1 -0
- package/lib/index.js +1 -0
- package/lib/jupyter/exec/Python.d.ts +5 -0
- package/lib/jupyter/exec/Python.js +100 -0
- package/lib/jupyter/exec/Snippets.d.ts +105 -0
- package/lib/jupyter/exec/Snippets.js +101 -0
- package/lib/jupyter/exec/index.d.ts +2 -0
- package/lib/jupyter/exec/index.js +6 -0
- package/lib/jupyter/index.d.ts +2 -0
- package/lib/jupyter/index.js +6 -0
- package/lib/jupyter/kernelsHandler.d.ts +8 -0
- package/lib/jupyter/kernelsHandler.js +39 -0
- package/lib/mocks/models/CourseMock.d.ts +6 -0
- package/lib/mocks/models/CourseMock.js +29 -0
- package/lib/mocks/models/SpaceMock.d.ts +6 -0
- package/lib/mocks/models/SpaceMock.js +25 -0
- package/lib/models/Assignment.d.ts +7 -0
- package/lib/models/Assignment.js +5 -0
- package/lib/models/Cell.d.ts +8 -0
- package/lib/models/Cell.js +5 -0
- package/lib/models/CodeBlock.d.ts +10 -0
- package/lib/models/CodeBlock.js +5 -0
- package/lib/models/CodeSandboxSnapshot.d.ts +92 -0
- package/lib/models/CodeSandboxSnapshot.js +13 -0
- package/lib/models/CodeSandboxSnapshotDTO.d.ts +173 -0
- package/lib/models/CodeSandboxSnapshotDTO.js +139 -0
- package/lib/models/CodefeedBlocks.d.ts +7 -0
- package/lib/models/CodefeedBlocks.js +5 -0
- package/lib/models/Content.d.ts +5 -0
- package/lib/models/Content.js +5 -0
- package/lib/models/Course.d.ts +17 -0
- package/lib/models/Course.js +5 -0
- package/lib/models/Dataset.d.ts +16 -0
- package/lib/models/Dataset.js +5 -0
- package/lib/models/Document.d.ts +8 -0
- package/lib/models/Document.js +5 -0
- package/lib/models/Environment.d.ts +86 -0
- package/lib/models/Environment.js +5 -0
- package/lib/models/EnvironmentDTO.d.ts +125 -0
- package/lib/models/EnvironmentDTO.js +88 -0
- package/lib/models/Exercise.d.ts +16 -0
- package/lib/models/Exercise.js +5 -0
- package/lib/models/Item.d.ts +20 -0
- package/lib/models/Item.js +5 -0
- package/lib/models/ItemDTO.d.ts +74 -0
- package/lib/models/ItemDTO.js +186 -0
- package/lib/models/ItemType.d.ts +2 -0
- package/lib/models/ItemType.js +5 -0
- package/lib/models/Lesson.d.ts +5 -0
- package/lib/models/Lesson.js +5 -0
- package/lib/models/LexicalDTO.d.ts +155 -0
- package/lib/models/LexicalDTO.js +157 -0
- package/lib/models/Library.d.ts +10 -0
- package/lib/models/Library.js +5 -0
- package/lib/models/Notebook.d.ts +11 -0
- package/lib/models/Notebook.js +5 -0
- package/lib/models/NotebookDTO.d.ts +96 -0
- package/lib/models/NotebookDTO.js +153 -0
- package/lib/models/Page.d.ts +41 -0
- package/lib/models/Page.js +25 -0
- package/lib/models/PageTag.d.ts +19 -0
- package/lib/models/PageTag.js +94 -0
- package/lib/models/ProjectDTO.d.ts +89 -0
- package/lib/models/ProjectDTO.js +131 -0
- package/lib/models/Runtime.d.ts +160 -0
- package/lib/models/Runtime.js +18 -0
- package/lib/models/RuntimeDTO.d.ts +172 -0
- package/lib/models/RuntimeDTO.js +204 -0
- package/lib/models/Space.d.ts +35 -0
- package/lib/models/Space.js +66 -0
- package/lib/models/SpaceDTO.d.ts +334 -0
- package/lib/models/SpaceDTO.js +244 -0
- package/lib/models/SpaceItem.d.ts +10 -0
- package/lib/models/SpaceItem.js +5 -0
- package/lib/models/SpaceMember.d.ts +6 -0
- package/lib/models/SpaceMember.js +5 -0
- package/lib/models/StudentItem.d.ts +21 -0
- package/lib/models/StudentItem.js +5 -0
- package/lib/models/index.d.ts +32 -0
- package/lib/models/index.js +39 -0
- package/lib/protocols/AGUIAdapter.js +1 -1
- package/lib/runtimes/actions.d.ts +102 -0
- package/lib/runtimes/actions.js +249 -0
- package/lib/runtimes/apis.d.ts +273 -0
- package/lib/runtimes/apis.js +5 -0
- package/lib/runtimes/index.d.ts +5 -0
- package/lib/runtimes/index.js +9 -0
- package/lib/runtimes/settings.d.ts +15 -0
- package/lib/runtimes/settings.js +31 -0
- package/lib/runtimes/snapshots.d.ts +25 -0
- package/lib/runtimes/snapshots.js +150 -0
- package/lib/runtimes/utils.d.ts +7 -0
- package/lib/runtimes/utils.js +14 -0
- package/lib/services/DatalayerServiceManager.d.ts +23 -0
- package/lib/services/DatalayerServiceManager.js +90 -0
- package/lib/services/reconnectToRuntime.d.ts +32 -0
- package/lib/services/reconnectToRuntime.js +59 -0
- package/lib/services/sandboxServiceManagers.d.ts +31 -0
- package/lib/services/sandboxServiceManagers.js +57 -0
- package/lib/specs/agents/agents.d.ts +70 -26
- package/lib/specs/agents/agents.js +3994 -1639
- package/lib/specs/index.d.ts +1 -0
- package/lib/specs/index.js +1 -0
- package/lib/specs/loops.d.ts +34 -0
- package/lib/specs/loops.js +188 -0
- package/lib/specs/mcpServers.d.ts +1 -0
- package/lib/specs/mcpServers.js +17 -0
- package/lib/specs/models.d.ts +4 -0
- package/lib/specs/models.js +30 -0
- package/lib/specs/skills.d.ts +1 -0
- package/lib/specs/skills.js +18 -0
- package/lib/specs/tools.d.ts +15 -0
- package/lib/specs/tools.js +285 -0
- package/lib/state/index.d.ts +4 -0
- package/lib/state/index.js +10 -0
- package/lib/state/substates/CellState.d.ts +12 -0
- package/lib/state/substates/CellState.js +22 -0
- package/lib/state/substates/DocumentState.d.ts +10 -0
- package/lib/state/substates/DocumentState.js +14 -0
- package/lib/state/substates/GradeState.d.ts +10 -0
- package/lib/state/substates/GradeState.js +14 -0
- package/lib/state/substates/JupyterLabState.d.ts +16 -0
- package/lib/state/substates/JupyterLabState.js +17 -0
- package/lib/state/substates/NbformatState.d.ts +13 -0
- package/lib/state/substates/NbformatState.js +16 -0
- package/lib/state/substates/RuntimesState.d.ts +87 -0
- package/lib/state/substates/RuntimesState.js +192 -0
- package/lib/state/substates/SpaceState.d.ts +11 -0
- package/lib/state/substates/SpaceState.js +16 -0
- package/lib/state/substates/index.d.ts +8 -0
- package/lib/state/substates/index.js +14 -0
- package/lib/stores/agentRuntimeStore.d.ts +25 -2
- package/lib/stores/agentRuntimeStore.js +114 -19
- package/lib/stories/Button.stories.d.ts +1 -1
- package/lib/stories/Header.stories.d.ts +3 -3
- package/lib/test-setup.js +10 -0
- package/lib/types/agents-lifecycle.d.ts +5 -5
- package/lib/types/agents.d.ts +3 -3
- package/lib/types/agentspecs.d.ts +3 -1
- package/lib/types/chat.d.ts +135 -3
- package/lib/types/config.d.ts +19 -1
- package/lib/types/index.d.ts +1 -0
- package/lib/types/index.js +1 -0
- package/lib/types/loops.d.ts +64 -0
- package/lib/types/loops.js +5 -0
- package/lib/types/tools.d.ts +16 -0
- package/lib/utils/Cells.d.ts +2 -0
- package/lib/utils/Cells.js +28 -0
- package/package.json +24 -18
- package/scripts/codegen/__pycache__/versioning.cpython-313.pyc +0 -0
- package/scripts/codegen/generate_agents.py +21 -4
- package/scripts/codegen/generate_loops.py +443 -0
- package/lib/examples/A2UiComponentGalleryExample.d.ts +0 -3
- package/lib/examples/A2UiComponentGalleryExample.js +0 -361
- /package/lib/{agent-lexical-main.d.ts → agent-document-main.d.ts} +0 -0
|
@@ -13,12 +13,12 @@ import { BriefcaseIcon, FileIcon } from '@primer/octicons-react';
|
|
|
13
13
|
import { useSimpleAuthStore } from '@datalayer/core/lib/views/otel';
|
|
14
14
|
import { ThemedProvider } from './utils/themedProvider';
|
|
15
15
|
import { uniqueAgentId } from './utils/agentId';
|
|
16
|
+
import { useExampleAgentRuntimesUrl } from './utils/useExampleAgentRuntimesUrl';
|
|
16
17
|
import { Chat } from '../chat';
|
|
17
18
|
import { useSkills, useSkillActions } from '../hooks';
|
|
18
19
|
const queryClient = new QueryClient();
|
|
19
20
|
const AGENT_NAME = 'skills-example-agent';
|
|
20
21
|
const AGENTSPEC_ID = 'example-skills';
|
|
21
|
-
const DEFAULT_LOCAL_BASE_URL = import.meta.env.VITE_BASE_URL || 'http://localhost:8765';
|
|
22
22
|
const SkillCard = ({ skill, onToggle, onToggleApproval }) => {
|
|
23
23
|
const [showDefinition, setShowDefinition] = useState(false);
|
|
24
24
|
const sourceVariant = skill.source_variant ?? 'unknown';
|
|
@@ -68,7 +68,7 @@ const AgentSkillsInner = ({ onLogout }) => {
|
|
|
68
68
|
const [hookError, setHookError] = useState(null);
|
|
69
69
|
const [agentId, setAgentId] = useState(agentName);
|
|
70
70
|
const [isReconnectedAgent, setIsReconnectedAgent] = useState(false);
|
|
71
|
-
const agentBaseUrl =
|
|
71
|
+
const agentBaseUrl = useExampleAgentRuntimesUrl();
|
|
72
72
|
const chatAuthToken = token === null ? undefined : token;
|
|
73
73
|
// WS-sourced skills (reads from codemodeStatus pushed via monitoring WS)
|
|
74
74
|
const skillsQuery = useSkills(isReady);
|
|
@@ -176,7 +176,7 @@ const AgentSkillsInner = ({ onLogout }) => {
|
|
|
176
176
|
flexDirection: 'column',
|
|
177
177
|
alignItems: 'center',
|
|
178
178
|
justifyContent: 'center',
|
|
179
|
-
height: '
|
|
179
|
+
height: '100%',
|
|
180
180
|
gap: 3,
|
|
181
181
|
}, children: [_jsx(Spinner, { size: "large" }), _jsx(Text, { sx: { color: 'fg.muted' }, children: "Launching skills example agent..." })] }));
|
|
182
182
|
}
|
|
@@ -184,7 +184,7 @@ const AgentSkillsInner = ({ onLogout }) => {
|
|
|
184
184
|
return _jsx(ErrorView, { error: hookError, onLogout: onLogout });
|
|
185
185
|
}
|
|
186
186
|
return (_jsxs(Box, { sx: {
|
|
187
|
-
height: '
|
|
187
|
+
height: '100%',
|
|
188
188
|
display: 'flex',
|
|
189
189
|
flexDirection: 'column',
|
|
190
190
|
}, children: [isReconnectedAgent && (_jsx(Box, { sx: {
|
|
@@ -192,7 +192,7 @@ const AgentSkillsInner = ({ onLogout }) => {
|
|
|
192
192
|
py: 1,
|
|
193
193
|
borderBottom: '1px solid',
|
|
194
194
|
borderColor: 'border.default',
|
|
195
|
-
}, children: _jsx(Text, { sx: { color: 'fg.muted', fontSize: 0 }, children: "Agent already running - reconnected." }) })), _jsxs(Box, { sx: { flex: 1, minHeight: 0, display: 'flex' }, children: [_jsx(Box, { sx: { flex: 1, minWidth: 0 }, children: _jsx(Chat, { protocol: "vercel-ai", baseUrl: agentBaseUrl, agentId: agentId, authToken: chatAuthToken, title: `Skills Demo Agent`, brandIcon: _jsx(BriefcaseIcon, { size: 16 }), placeholder: "Ask the agent to use its skills...", showHeader: true, showNewChatButton: true, showClearButton:
|
|
195
|
+
}, children: _jsx(Text, { sx: { color: 'fg.muted', fontSize: 0 }, children: "Agent already running - reconnected." }) })), _jsxs(Box, { sx: { flex: 1, minHeight: 0, display: 'flex' }, children: [_jsx(Box, { sx: { flex: 1, minWidth: 0 }, children: _jsx(Chat, { protocol: "vercel-ai", baseUrl: agentBaseUrl, agentId: agentId, authToken: chatAuthToken, title: `Skills Demo Agent`, brandIcon: _jsx(BriefcaseIcon, { size: 16 }), placeholder: "Ask the agent to use its skills...", showHeader: true, showNewChatButton: true, showClearButton: true, showTokenUsage: true, showSkillsMenu: true, autoFocus: true, height: "100%", runtimeId: agentId, historyEndpoint: `${agentBaseUrl}/api/v1/history`, headerActions: _jsx(Box, { sx: { display: 'flex', alignItems: 'center', gap: 2 }, children: _jsxs(Text, { sx: { color: 'fg.muted', fontSize: 1 }, children: ["Skills: ", skills.length] }) }), suggestions: [
|
|
196
196
|
{
|
|
197
197
|
title: 'List available skills',
|
|
198
198
|
message: 'List all your available skills and what they can do.',
|
|
@@ -248,7 +248,7 @@ const AgentSkillsInner = ({ onLogout }) => {
|
|
|
248
248
|
}, children: [_jsx(Heading, { as: "h5", sx: { fontSize: 0, mb: 1 }, children: "Skill Statuses" }), _jsxs(Box, { sx: { fontSize: 0, color: 'fg.muted' }, children: [_jsxs(Box, { sx: { display: 'flex', alignItems: 'center', gap: 1, mb: 1 }, children: [_jsx(Label, { size: "small", variant: "secondary", children: "available" }), _jsx(Text, { children: "In catalog, not yet enabled" })] }), _jsxs(Box, { sx: { display: 'flex', alignItems: 'center', gap: 1, mb: 1 }, children: [_jsx(Label, { size: "small", variant: "attention", children: "enabled" }), _jsx(Text, { children: "Enabled, loading pending" })] }), _jsxs(Box, { sx: { display: 'flex', alignItems: 'center', gap: 1 }, children: [_jsx(Label, { size: "small", variant: "success", children: "loaded" }), _jsx(Text, { children: "SKILL.md loaded, in system prompt" })] })] })] })] })] })] })] }));
|
|
249
249
|
};
|
|
250
250
|
const syncTokenToIamStore = (token) => {
|
|
251
|
-
import('
|
|
251
|
+
import('../state/substates').then(({ iamStore }) => {
|
|
252
252
|
iamStore.setState({ token });
|
|
253
253
|
});
|
|
254
254
|
};
|
|
@@ -264,7 +264,7 @@ const AgentSkillsExample = () => {
|
|
|
264
264
|
const handleLogout = useCallback(() => {
|
|
265
265
|
clearAuth();
|
|
266
266
|
hasSynced.current = false;
|
|
267
|
-
import('
|
|
267
|
+
import('../state/substates').then(({ iamStore }) => {
|
|
268
268
|
iamStore.setState({ token: undefined });
|
|
269
269
|
});
|
|
270
270
|
}, [clearAuth]);
|
|
@@ -24,9 +24,9 @@ import { ThemedProvider } from './utils/themedProvider';
|
|
|
24
24
|
import { uniqueAgentId } from './utils/agentId';
|
|
25
25
|
import { useSimpleAuthStore } from '@datalayer/core/lib/views/otel';
|
|
26
26
|
import { Chat } from '../chat';
|
|
27
|
+
import { useExampleAgentRuntimesUrl } from './utils/useExampleAgentRuntimesUrl';
|
|
27
28
|
const AGENT_NAME = 'subagents-example-agent';
|
|
28
29
|
const AGENTSPEC_ID = 'example-subagents';
|
|
29
|
-
const DEFAULT_LOCAL_BASE_URL = import.meta.env.VITE_BASE_URL || 'http://localhost:8765';
|
|
30
30
|
const SUBAGENTS = [
|
|
31
31
|
{
|
|
32
32
|
name: 'researcher',
|
|
@@ -51,7 +51,7 @@ const AgentSubagentsInner = ({ onLogout, }) => {
|
|
|
51
51
|
const [hookError, setHookError] = useState(null);
|
|
52
52
|
const [agentId, setAgentId] = useState(agentName);
|
|
53
53
|
const [isReconnectedAgent, setIsReconnectedAgent] = useState(false);
|
|
54
|
-
const agentBaseUrl =
|
|
54
|
+
const agentBaseUrl = useExampleAgentRuntimesUrl();
|
|
55
55
|
const chatAuthToken = token === null ? undefined : token;
|
|
56
56
|
const authFetch = useCallback((url, opts = {}) => fetch(url, {
|
|
57
57
|
...opts,
|
|
@@ -132,7 +132,7 @@ const AgentSubagentsInner = ({ onLogout, }) => {
|
|
|
132
132
|
flexDirection: 'column',
|
|
133
133
|
alignItems: 'center',
|
|
134
134
|
justifyContent: 'center',
|
|
135
|
-
height: '
|
|
135
|
+
height: '100%',
|
|
136
136
|
gap: 3,
|
|
137
137
|
}, children: [_jsx(Spinner, { size: "large" }), _jsx(Text, { sx: { color: 'fg.muted' }, children: "Launching subagents example agent..." })] }));
|
|
138
138
|
}
|
|
@@ -140,7 +140,7 @@ const AgentSubagentsInner = ({ onLogout, }) => {
|
|
|
140
140
|
return _jsx(ErrorView, { error: hookError, onLogout: onLogout });
|
|
141
141
|
}
|
|
142
142
|
return (_jsxs(Box, { sx: {
|
|
143
|
-
height: '
|
|
143
|
+
height: '100%',
|
|
144
144
|
display: 'flex',
|
|
145
145
|
flexDirection: 'column',
|
|
146
146
|
}, children: [_jsxs(Box, { sx: {
|
|
@@ -13,12 +13,12 @@ import { CheckCircleIcon } from '@primer/octicons-react';
|
|
|
13
13
|
import { useSimpleAuthStore } from '@datalayer/core/lib/views/otel';
|
|
14
14
|
import { ThemedProvider } from './utils/themedProvider';
|
|
15
15
|
import { uniqueAgentId } from './utils/agentId';
|
|
16
|
+
import { useExampleAgentRuntimesUrl } from './utils/useExampleAgentRuntimesUrl';
|
|
16
17
|
import { Chat } from '../chat';
|
|
17
18
|
import { useAgentRuntimeApprovals } from '../stores/agentRuntimeStore';
|
|
18
19
|
const queryClient = new QueryClient();
|
|
19
20
|
const AGENT_NAME_PREFIX = 'tool-approval-example-agent';
|
|
20
21
|
const DEFAULT_AGENTSPEC_ID = 'example-tool-approvals';
|
|
21
|
-
const DEFAULT_LOCAL_BASE_URL = import.meta.env.VITE_BASE_URL || 'http://localhost:8765';
|
|
22
22
|
const getSelectedAgentspecIdFromUi = () => {
|
|
23
23
|
const params = new URLSearchParams(window.location.search);
|
|
24
24
|
const directKeys = [
|
|
@@ -71,7 +71,7 @@ const AgentToolApprovalsInner = ({ onLogout, }) => {
|
|
|
71
71
|
const [agentId, setAgentId] = useState(agentName);
|
|
72
72
|
const [isReconnectedAgent, setIsReconnectedAgent] = useState(false);
|
|
73
73
|
const chatAuthToken = token === null ? undefined : token;
|
|
74
|
-
const agentBaseUrl =
|
|
74
|
+
const agentBaseUrl = useExampleAgentRuntimesUrl();
|
|
75
75
|
const podName = 'localhost';
|
|
76
76
|
const approvals = useAgentRuntimeApprovals();
|
|
77
77
|
const pendingApprovalCount = useMemo(() => approvals.filter(approval => approval.status === 'pending' &&
|
|
@@ -188,7 +188,7 @@ const AgentToolApprovalsInner = ({ onLogout, }) => {
|
|
|
188
188
|
py: 1,
|
|
189
189
|
borderBottom: '1px solid',
|
|
190
190
|
borderColor: 'border.default',
|
|
191
|
-
}, children: _jsx(Text, { sx: { color: 'fg.muted', fontSize: 0 }, children: "Agent already running - reconnected." }) })), _jsx(Box, { sx: { flex: 1, minHeight: 0, display: 'flex' }, children: _jsx(Box, { sx: { flex: 1, minWidth: 0 }, children: _jsx(Chat, { protocol: "vercel-ai", baseUrl: agentBaseUrl, agentId: agentId, authToken: chatAuthToken, title: `Tool Approval Agent - ${podName}`, brandIcon: _jsx(CheckCircleIcon, { size: 16 }), placeholder: "Ask for actions that require approval...", showHeader: true, showNewChatButton: true, showClearButton:
|
|
191
|
+
}, children: _jsx(Text, { sx: { color: 'fg.muted', fontSize: 0 }, children: "Agent already running - reconnected." }) })), _jsx(Box, { sx: { flex: 1, minHeight: 0, display: 'flex' }, children: _jsx(Box, { sx: { flex: 1, minWidth: 0 }, children: _jsx(Chat, { protocol: "vercel-ai", baseUrl: agentBaseUrl, agentId: agentId, authToken: chatAuthToken, title: `Tool Approval Agent - ${podName}`, brandIcon: _jsx(CheckCircleIcon, { size: 16 }), placeholder: "Ask for actions that require approval...", showHeader: true, showNewChatButton: true, showClearButton: true, showTokenUsage: true, autoFocus: true, height: "100%", runtimeId: agentId, historyEndpoint: `${agentBaseUrl}/api/v1/history`, headerActions: _jsxs(Box, { sx: { display: 'flex', alignItems: 'center', gap: 2 }, children: [_jsxs(Text, { sx: { color: 'fg.muted', fontSize: 1 }, children: ["Pending: ", pendingApprovalCount] }), _jsxs("label", { style: {
|
|
192
192
|
display: 'flex',
|
|
193
193
|
alignItems: 'center',
|
|
194
194
|
gap: 6,
|
|
@@ -223,7 +223,7 @@ const AgentToolApprovalsInner = ({ onLogout, }) => {
|
|
|
223
223
|
], submitOnSuggestionClick: true }) }) })] }));
|
|
224
224
|
};
|
|
225
225
|
const syncTokenToIamStore = (token) => {
|
|
226
|
-
import('
|
|
226
|
+
import('../state/substates').then(({ iamStore }) => {
|
|
227
227
|
iamStore.setState({ token });
|
|
228
228
|
});
|
|
229
229
|
};
|
|
@@ -239,7 +239,7 @@ const AgentToolApprovalsExample = () => {
|
|
|
239
239
|
const handleLogout = useCallback(() => {
|
|
240
240
|
clearAuth();
|
|
241
241
|
hasSynced.current = false;
|
|
242
|
-
import('
|
|
242
|
+
import('../state/substates').then(({ iamStore }) => {
|
|
243
243
|
iamStore.setState({ token: undefined });
|
|
244
244
|
});
|
|
245
245
|
}, [clearAuth]);
|
|
@@ -25,6 +25,7 @@ import { ThemedProvider } from './utils/themedProvider';
|
|
|
25
25
|
import { uniqueAgentId } from './utils/agentId';
|
|
26
26
|
import { useSimpleAuthStore } from '@datalayer/core/lib/views/otel';
|
|
27
27
|
import { Chat } from '../chat';
|
|
28
|
+
import { useExampleAgentRuntimesUrl } from './utils/useExampleAgentRuntimesUrl';
|
|
28
29
|
import { useConnectedIdentities } from '../identity';
|
|
29
30
|
import { ToolApprovalBanner, ToolApprovalDialog, } from '../chat/tools';
|
|
30
31
|
import { useAgentEvents, useDeleteAgentEvent, useMarkEventRead, useMarkEventUnread, useAIAgentsWebSocket, } from '../hooks';
|
|
@@ -34,11 +35,10 @@ const queryClient = new QueryClient();
|
|
|
34
35
|
// ─── Constants ─────────────────────────────────────────────────────────────
|
|
35
36
|
const AGENT_NAME = 'trigger-example-agent';
|
|
36
37
|
const AGENTSPEC_ID = 'example-one-trigger';
|
|
37
|
-
const APPROVAL_AGENT_NAME = 'trigger-approval-
|
|
38
|
-
const APPROVAL_AGENTSPEC_ID = 'example-
|
|
38
|
+
const APPROVAL_AGENT_NAME = 'trigger-approval-agent';
|
|
39
|
+
const APPROVAL_AGENTSPEC_ID = 'example-tool-approvals';
|
|
39
40
|
const ONCE_TRIGGER_PROMPT = "List the user's top 3 public and top 3 private GitHub repositories, ranked by recent activity, and provide a brief summary of each. Execute exactly two tool calls: run_skill_script(skill_name='github', script_name='list_repos', kwargs={visibility:'public', sort:'updated', limit:3, format:'json'}) and run_skill_script(skill_name='github', script_name='list_repos', kwargs={visibility:'private', sort:'updated', limit:3, format:'json'}). Do not call list_skills/load_skill/read_skill_resource. Do not retry. If a tool call fails, report failure_reason/error/stderr exactly as returned.";
|
|
40
41
|
const ONCE_TRIGGER_APPROVAL_PROMPT = 'Use the runtime_sensitive_echo tool once.';
|
|
41
|
-
const DEFAULT_LOCAL_BASE_URL = import.meta.env.VITE_BASE_URL || 'http://localhost:8765';
|
|
42
42
|
const DEFAULT_CRON = '0 8 * * *'; // daily at 08:00 UTC
|
|
43
43
|
// ─── Inner component (rendered after auth) ─────────────────────────────────
|
|
44
44
|
const AgentTriggerInner = ({ onLogout, }) => {
|
|
@@ -58,7 +58,7 @@ const AgentTriggerInner = ({ onLogout, }) => {
|
|
|
58
58
|
const [isReady, setIsReady] = useState(false);
|
|
59
59
|
const [hookError, setHookError] = useState(null);
|
|
60
60
|
const [agentId, setAgentId] = useState(agentName);
|
|
61
|
-
const agentBaseUrl =
|
|
61
|
+
const agentBaseUrl = useExampleAgentRuntimesUrl();
|
|
62
62
|
const chatAuthToken = token === null ? undefined : token;
|
|
63
63
|
// Cron state
|
|
64
64
|
const [cronExpr, setCronExpr] = useState(DEFAULT_CRON);
|
|
@@ -807,7 +807,7 @@ const AgentTriggerInner = ({ onLogout, }) => {
|
|
|
807
807
|
flexDirection: 'column',
|
|
808
808
|
alignItems: 'center',
|
|
809
809
|
justifyContent: 'center',
|
|
810
|
-
height: '
|
|
810
|
+
height: '100%',
|
|
811
811
|
gap: 3,
|
|
812
812
|
}, children: [_jsx(Spinner, { size: "large" }), _jsx(Text, { sx: { color: 'fg.muted' }, children: "Launching runtime for trigger agent..." })] }));
|
|
813
813
|
}
|
|
@@ -822,7 +822,7 @@ const AgentTriggerInner = ({ onLogout, }) => {
|
|
|
822
822
|
padding: 0,
|
|
823
823
|
minWidth: 0,
|
|
824
824
|
}, children: _jsxs(Box, { sx: {
|
|
825
|
-
height: '
|
|
825
|
+
height: '100%',
|
|
826
826
|
display: 'flex',
|
|
827
827
|
flexDirection: 'column',
|
|
828
828
|
}, children: [_jsxs(Box, { sx: {
|
|
@@ -855,7 +855,7 @@ const AgentTriggerInner = ({ onLogout, }) => {
|
|
|
855
855
|
setActiveApproval(null);
|
|
856
856
|
}
|
|
857
857
|
}
|
|
858
|
-
}, onClose: () => setActiveApproval(null) }), approvalError && (_jsx(Box, { sx: { px: 3, py: 1 }, children: _jsx(Text, { sx: { color: 'danger.fg', fontSize: 0 }, children: approvalError }) })), _jsxs(Box, { sx: { flex: 1, minHeight: 0, display: 'flex' }, children: [_jsx(Box, { sx: { flex: 1, minWidth: 0 }, children: isReady ? (_jsx(Chat, { protocol: "vercel-ai", baseUrl: agentBaseUrl, agentId: agentId, authToken: chatAuthToken, title: "Trigger Agent", brandIcon: _jsx(ZapIcon, { size: 16 }), description: `View-only trigger output. Cron: ${cronExpr} | Webhook: ${webhookEnabled ? 'on' : 'off'} | Event: ${eventSubscribed ? eventTopic : 'none'}`, showHeader: true, autoFocus: false, height: "100%", runtimeId: agentId, showInput: true, disableInputPrompt: true, showModelSelector:
|
|
858
|
+
}, onClose: () => setActiveApproval(null) }), approvalError && (_jsx(Box, { sx: { px: 3, py: 1 }, children: _jsx(Text, { sx: { color: 'danger.fg', fontSize: 0 }, children: approvalError }) })), _jsxs(Box, { sx: { flex: 1, minHeight: 0, display: 'flex' }, children: [_jsx(Box, { sx: { flex: 1, minWidth: 0 }, children: isReady ? (_jsx(Chat, { protocol: "vercel-ai", baseUrl: agentBaseUrl, agentId: agentId, authToken: chatAuthToken, title: "Trigger Agent", brandIcon: _jsx(ZapIcon, { size: 16 }), description: `View-only trigger output. Cron: ${cronExpr} | Webhook: ${webhookEnabled ? 'on' : 'off'} | Event: ${eventSubscribed ? eventTopic : 'none'}`, showHeader: true, autoFocus: false, height: "100%", runtimeId: agentId, showInput: true, disableInputPrompt: true, showModelSelector: true, showToolsMenu: true, showSkillsMenu: true })) : (_jsx(Box, { sx: {
|
|
859
859
|
height: '100%',
|
|
860
860
|
display: 'flex',
|
|
861
861
|
alignItems: 'center',
|
|
@@ -1315,7 +1315,7 @@ const AgentTriggerInner = ({ onLogout, }) => {
|
|
|
1315
1315
|
};
|
|
1316
1316
|
// ─── Sync token to core IAM store ──────────────────────────────────────────
|
|
1317
1317
|
const syncTokenToIamStore = (token) => {
|
|
1318
|
-
import('
|
|
1318
|
+
import('../state/substates').then(({ iamStore }) => {
|
|
1319
1319
|
iamStore.setState({ token });
|
|
1320
1320
|
});
|
|
1321
1321
|
};
|
|
@@ -1332,7 +1332,7 @@ const AgentTriggersExample = () => {
|
|
|
1332
1332
|
const handleLogout = useCallback(() => {
|
|
1333
1333
|
clearAuth();
|
|
1334
1334
|
hasSynced.current = false;
|
|
1335
|
-
import('
|
|
1335
|
+
import('../state/substates').then(({ iamStore }) => {
|
|
1336
1336
|
iamStore.setState({ token: undefined });
|
|
1337
1337
|
});
|
|
1338
1338
|
}, [clearAuth]);
|
|
@@ -211,11 +211,11 @@ const resolveCloudRuntimeBaseUrlFromSpec = (spec) => {
|
|
|
211
211
|
return null;
|
|
212
212
|
}
|
|
213
213
|
const preferredKeys = [
|
|
214
|
-
'
|
|
215
|
-
'
|
|
214
|
+
'runtimesUrl',
|
|
215
|
+
'runtimeUrl',
|
|
216
216
|
'runtimes_url',
|
|
217
217
|
'runtime_url',
|
|
218
|
-
'
|
|
218
|
+
'datalayerUrl',
|
|
219
219
|
'baseUrl',
|
|
220
220
|
'endpoint',
|
|
221
221
|
];
|
|
@@ -298,13 +298,13 @@ githubClientId, kaggleToken, }) => {
|
|
|
298
298
|
const { configuration } = useCoreStore();
|
|
299
299
|
const { token } = useSimpleAuthStore();
|
|
300
300
|
const cloudCatalogBaseUrl = useMemo(() => {
|
|
301
|
-
const configured = normalizeHttpUrl(configuration?.
|
|
301
|
+
const configured = normalizeHttpUrl(configuration?.runtimesUrl);
|
|
302
302
|
const envConfigured = normalizeHttpUrl(import.meta.env.VITE_DATALAYER_AGENT_RUNTIMES_URL);
|
|
303
303
|
if (configured && !isLocalhostUrl(configured)) {
|
|
304
304
|
return configured;
|
|
305
305
|
}
|
|
306
306
|
return envConfigured || 'https://r1.datalayer.run';
|
|
307
|
-
}, [configuration?.
|
|
307
|
+
}, [configuration?.runtimesUrl]);
|
|
308
308
|
const isCloudMode = isCloudSpecSelection(selectedAgentId);
|
|
309
309
|
const selectedSpec = selectedCloudSpec || selectedLibrarySpec;
|
|
310
310
|
const cloudRuntimeCreationBaseUrl = useMemo(() => {
|
|
@@ -770,42 +770,64 @@ githubClientId, kaggleToken, }) => {
|
|
|
770
770
|
const specId = isSpecSelection(selectedAgentId)
|
|
771
771
|
? getSpecId(selectedAgentId)
|
|
772
772
|
: undefined;
|
|
773
|
-
const
|
|
774
|
-
|
|
775
|
-
|
|
776
|
-
|
|
777
|
-
|
|
778
|
-
|
|
779
|
-
|
|
780
|
-
|
|
781
|
-
|
|
782
|
-
|
|
783
|
-
|
|
784
|
-
|
|
785
|
-
|
|
786
|
-
|
|
787
|
-
|
|
788
|
-
|
|
789
|
-
|
|
790
|
-
|
|
791
|
-
|
|
792
|
-
|
|
793
|
-
|
|
794
|
-
|
|
795
|
-
|
|
796
|
-
|
|
797
|
-
|
|
798
|
-
|
|
799
|
-
|
|
800
|
-
|
|
801
|
-
|
|
802
|
-
|
|
803
|
-
|
|
804
|
-
|
|
773
|
+
const createRequestBody = {
|
|
774
|
+
name: agentName,
|
|
775
|
+
description: description || `Agent created via UI (${agentLibrary})`,
|
|
776
|
+
goal: goal || undefined,
|
|
777
|
+
agent_library: agentLibrary,
|
|
778
|
+
transport: transport,
|
|
779
|
+
model: model,
|
|
780
|
+
system_prompt: systemPrompt || DEFAULT_SYSTEM_PROMPT,
|
|
781
|
+
system_prompt_codemode_addons: systemPromptCodemodeAddons || undefined,
|
|
782
|
+
tools: tools,
|
|
783
|
+
sandbox_variant: sandboxVariant || undefined,
|
|
784
|
+
enable_skills: enableSkills,
|
|
785
|
+
enable_codemode: enableCodemode,
|
|
786
|
+
allow_direct_tool_calls: allowDirectToolCalls,
|
|
787
|
+
enable_tool_reranker: enableToolReranker,
|
|
788
|
+
selected_mcp_servers: selectedMcpServers,
|
|
789
|
+
skills: selectedSkills,
|
|
790
|
+
jupyter_sandbox: useJupyterSandbox ? jupyterSandboxUrl : undefined,
|
|
791
|
+
agent_spec: mergedSpecForLaunch,
|
|
792
|
+
...(specId ? { agent_spec_id: specId } : {}),
|
|
793
|
+
};
|
|
794
|
+
const tryCreate = async () => {
|
|
795
|
+
const response = await fetch(`${baseUrl}/api/v1/agents`, {
|
|
796
|
+
method: 'POST',
|
|
797
|
+
headers: {
|
|
798
|
+
'Content-Type': 'application/json',
|
|
799
|
+
},
|
|
800
|
+
body: JSON.stringify(createRequestBody),
|
|
801
|
+
});
|
|
802
|
+
if (!response.ok) {
|
|
803
|
+
const errorData = await response
|
|
804
|
+
.json()
|
|
805
|
+
.catch(() => ({ detail: 'Unknown error' }));
|
|
806
|
+
throw new Error(errorData.detail || `Failed to create agent: ${response.status}`);
|
|
807
|
+
}
|
|
808
|
+
const data = await response.json();
|
|
809
|
+
console.log('[AgentRuntimeExample] Agent created:', data);
|
|
810
|
+
return data.id;
|
|
811
|
+
};
|
|
812
|
+
try {
|
|
813
|
+
return await tryCreate();
|
|
814
|
+
}
|
|
815
|
+
catch (error) {
|
|
816
|
+
const errorMessage = error instanceof Error ? error.message : 'Failed to create agent';
|
|
817
|
+
const alreadyExists = /already exists/i.test(errorMessage);
|
|
818
|
+
// If the agent already exists, terminate (delete) it then retry once.
|
|
819
|
+
if (alreadyExists && agentName) {
|
|
820
|
+
console.warn(`[AgentRuntimeExample] Agent '${agentName}' already exists, deleting and retrying create once.`);
|
|
821
|
+
const deleteResponse = await fetch(`${baseUrl}/api/v1/agents/${encodeURIComponent(agentName)}`, {
|
|
822
|
+
method: 'DELETE',
|
|
823
|
+
});
|
|
824
|
+
if (deleteResponse.ok) {
|
|
825
|
+
return await tryCreate();
|
|
826
|
+
}
|
|
827
|
+
throw new Error(`Failed to delete existing agent '${agentName}' before retry: ${deleteResponse.status}`);
|
|
828
|
+
}
|
|
829
|
+
throw error;
|
|
805
830
|
}
|
|
806
|
-
const data = await response.json();
|
|
807
|
-
console.log('[AgentRuntimeExample] Agent created:', data);
|
|
808
|
-
return data.id;
|
|
809
831
|
}
|
|
810
832
|
catch (error) {
|
|
811
833
|
const errorMessage = error instanceof Error ? error.message : 'Failed to create agent';
|
|
@@ -1021,7 +1043,7 @@ githubClientId, kaggleToken, }) => {
|
|
|
1021
1043
|
showModelSelector: true,
|
|
1022
1044
|
showToolsMenu: true,
|
|
1023
1045
|
showSkillsMenu: true,
|
|
1024
|
-
showInformation:
|
|
1046
|
+
showInformation: true,
|
|
1025
1047
|
codemodeEnabled: enableCodemode,
|
|
1026
1048
|
initialModel: model,
|
|
1027
1049
|
mcpServers: selectedMcpServers,
|
|
@@ -3,13 +3,13 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
|
3
3
|
* Copyright (c) 2025-2026 Datalayer, Inc.
|
|
4
4
|
* Distributed under the terms of the Modified BSD License.
|
|
5
5
|
*/
|
|
6
|
-
import {
|
|
6
|
+
import { useMemo } from 'react';
|
|
7
7
|
import { Spinner, Text } from '@primer/react';
|
|
8
8
|
import { QueryClient, QueryClientProvider } from '@tanstack/react-query';
|
|
9
9
|
import { Box } from '@datalayer/primer-addons';
|
|
10
10
|
import { ThemedProvider } from './utils/themedProvider';
|
|
11
11
|
import { uniqueAgentId } from './utils/agentId';
|
|
12
|
-
import {
|
|
12
|
+
import { useExampleAgentRuntime } from './hooks/useExampleAgentRuntime';
|
|
13
13
|
import { Chat } from '../chat';
|
|
14
14
|
// Create a query client for React Query
|
|
15
15
|
const queryClient = new QueryClient({
|
|
@@ -24,28 +24,24 @@ const queryClient = new QueryClient({
|
|
|
24
24
|
});
|
|
25
25
|
const AGENT_NAME = 'datalayer-assistant';
|
|
26
26
|
/**
|
|
27
|
-
*
|
|
28
|
-
*
|
|
27
|
+
* Agent Runtime Custom Example Component
|
|
28
|
+
*
|
|
29
|
+
* Demonstrates the unified Chat component with AG-UI transport
|
|
30
|
+
* and all necessary providers:
|
|
31
|
+
* - QueryClientProvider for data fetching
|
|
32
|
+
* - Auto-creates agent on the server if it doesn't exist
|
|
29
33
|
*/
|
|
30
|
-
|
|
31
|
-
const agentName =
|
|
32
|
-
const
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
},
|
|
42
|
-
body: JSON.stringify({
|
|
43
|
-
name: agentName,
|
|
44
|
-
description: 'Datalayer AI Assistant - Your helpful coding companion',
|
|
45
|
-
agent_library: 'pydantic-ai',
|
|
46
|
-
transport: 'ag-ui',
|
|
47
|
-
model: 'openai:gpt-4o-mini',
|
|
48
|
-
system_prompt: `You are custom chat assistant, a helpful AI assistant specialized in data science, Python programming, and Jupyter notebooks.
|
|
34
|
+
const AgentRuntimeCustomExample = () => {
|
|
35
|
+
const agentName = useMemo(() => uniqueAgentId(AGENT_NAME), []);
|
|
36
|
+
const { agentId, status, error, isReady } = useExampleAgentRuntime({
|
|
37
|
+
exampleId: 'ChatCustomExample',
|
|
38
|
+
agentName,
|
|
39
|
+
agentConfig: {
|
|
40
|
+
description: 'Datalayer AI Assistant - Your helpful coding companion',
|
|
41
|
+
agentLibrary: 'pydantic-ai',
|
|
42
|
+
protocol: 'ag-ui',
|
|
43
|
+
model: 'bedrock:us.anthropic.claude-sonnet-4-5-20250929-v1:0',
|
|
44
|
+
systemPrompt: `You are custom chat assistant, a helpful AI assistant specialized in data science, Python programming, and Jupyter notebooks.
|
|
49
45
|
|
|
50
46
|
You can help users with:
|
|
51
47
|
- Writing and debugging Python code
|
|
@@ -55,60 +51,10 @@ You can help users with:
|
|
|
55
51
|
- General programming questions
|
|
56
52
|
|
|
57
53
|
Be concise, helpful, and provide working code examples when appropriate.`,
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
.json()
|
|
63
|
-
.catch(() => ({ detail: 'Unknown error' }));
|
|
64
|
-
throw new Error(errorData.detail || `Failed to create agent: ${response.status}`);
|
|
65
|
-
}
|
|
66
|
-
const data = await response.json();
|
|
67
|
-
console.log('[AgentRuntimeCustomExample] Agent created:', data);
|
|
68
|
-
return data.id;
|
|
69
|
-
}
|
|
70
|
-
catch (err) {
|
|
71
|
-
console.error('[AgentRuntimeCustomExample] Error creating agent:', err);
|
|
72
|
-
throw err;
|
|
73
|
-
}
|
|
74
|
-
}, [agentName, baseUrl]);
|
|
75
|
-
const initAgent = useCallback(async () => {
|
|
76
|
-
setIsLoading(true);
|
|
77
|
-
setError(null);
|
|
78
|
-
try {
|
|
79
|
-
console.log('[AgentRuntimeCustomExample] Creating new agent...');
|
|
80
|
-
const newAgentId = await createAgent();
|
|
81
|
-
if (newAgentId) {
|
|
82
|
-
setAgentId(newAgentId);
|
|
83
|
-
}
|
|
84
|
-
else {
|
|
85
|
-
setError('Failed to create agent');
|
|
86
|
-
}
|
|
87
|
-
}
|
|
88
|
-
catch (err) {
|
|
89
|
-
const errorMessage = err instanceof Error ? err.message : 'Failed to initialize agent';
|
|
90
|
-
setError(errorMessage);
|
|
91
|
-
}
|
|
92
|
-
finally {
|
|
93
|
-
setIsLoading(false);
|
|
94
|
-
}
|
|
95
|
-
}, [createAgent]);
|
|
96
|
-
useEffect(() => {
|
|
97
|
-
initAgent();
|
|
98
|
-
}, [initAgent]);
|
|
99
|
-
return { agentId, isLoading, error, retry: initAgent };
|
|
100
|
-
}
|
|
101
|
-
/**
|
|
102
|
-
* Agent Runtime Custom Example Component
|
|
103
|
-
*
|
|
104
|
-
* Demonstrates the unified Chat component with AG-UI transport
|
|
105
|
-
* and all necessary providers:
|
|
106
|
-
* - QueryClientProvider for data fetching
|
|
107
|
-
* - Auto-creates agent on the server if it doesn't exist
|
|
108
|
-
*/
|
|
109
|
-
const AgentRuntimeCustomExample = () => {
|
|
110
|
-
const baseUrl = useExampleAgentRuntimesUrl();
|
|
111
|
-
const { agentId, isLoading, error, retry } = useEnsureAgent(baseUrl);
|
|
54
|
+
},
|
|
55
|
+
});
|
|
56
|
+
const isLoading = !isReady && status !== 'error';
|
|
57
|
+
const retry = () => window.location.reload();
|
|
112
58
|
return (_jsx(QueryClientProvider, { client: queryClient, children: _jsx(ThemedProvider, { children: _jsxs(Box, { sx: {
|
|
113
59
|
display: 'flex',
|
|
114
60
|
flexDirection: 'column',
|
|
@@ -15,12 +15,13 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
|
15
15
|
*
|
|
16
16
|
* Backend: POST /api/v1/agents → /api/v1/ag-ui/{agentId}/
|
|
17
17
|
*/
|
|
18
|
-
import {
|
|
18
|
+
import { useMemo } from 'react';
|
|
19
19
|
import { Text, Spinner } from '@primer/react';
|
|
20
20
|
import { Box, setupPrimerPortals } from '@datalayer/primer-addons';
|
|
21
21
|
import { ThemedProvider } from './utils/themedProvider';
|
|
22
22
|
import { uniqueAgentId } from './utils/agentId';
|
|
23
23
|
import { useExampleAgentRuntimesUrl } from './utils/useExampleAgentRuntimesUrl';
|
|
24
|
+
import { useExampleAgentRuntime } from './hooks/useExampleAgentRuntime';
|
|
24
25
|
import { ErrorView } from './components';
|
|
25
26
|
import { Chat } from '../chat';
|
|
26
27
|
setupPrimerPortals();
|
|
@@ -28,49 +29,17 @@ const AGENTSPEC_ID = 'example-simple';
|
|
|
28
29
|
const AGENT_NAME = 'simple';
|
|
29
30
|
const AgentRuntimeChatExample = () => {
|
|
30
31
|
const baseUrl = useExampleAgentRuntimesUrl();
|
|
31
|
-
const
|
|
32
|
-
const
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
method: 'POST',
|
|
43
|
-
headers: { 'Content-Type': 'application/json' },
|
|
44
|
-
body: JSON.stringify({
|
|
45
|
-
name,
|
|
46
|
-
agent_spec_id: AGENTSPEC_ID,
|
|
47
|
-
transport: 'ag-ui',
|
|
48
|
-
}),
|
|
49
|
-
});
|
|
50
|
-
if (!response.ok) {
|
|
51
|
-
const data = await response
|
|
52
|
-
.json()
|
|
53
|
-
.catch(() => ({ detail: 'Unknown error' }));
|
|
54
|
-
throw new Error(data.detail || `Failed to create agent: ${response.status}`);
|
|
55
|
-
}
|
|
56
|
-
const data = await response.json();
|
|
57
|
-
if (!cancelled) {
|
|
58
|
-
setAgentId(data.id);
|
|
59
|
-
setIsCreating(false);
|
|
60
|
-
}
|
|
61
|
-
}
|
|
62
|
-
catch (err) {
|
|
63
|
-
if (!cancelled) {
|
|
64
|
-
setError(err instanceof Error ? err.message : 'Failed to create agent');
|
|
65
|
-
setIsCreating(false);
|
|
66
|
-
}
|
|
67
|
-
}
|
|
68
|
-
};
|
|
69
|
-
createAgent();
|
|
70
|
-
return () => {
|
|
71
|
-
cancelled = true;
|
|
72
|
-
};
|
|
73
|
-
}, [baseUrl]);
|
|
32
|
+
const agentName = useMemo(() => uniqueAgentId(AGENT_NAME), []);
|
|
33
|
+
const { agentId, error, status, isReady } = useExampleAgentRuntime({
|
|
34
|
+
exampleId: 'ChatExample',
|
|
35
|
+
agentName,
|
|
36
|
+
specId: AGENTSPEC_ID,
|
|
37
|
+
agentConfig: {
|
|
38
|
+
protocol: 'ag-ui',
|
|
39
|
+
agentSpecId: AGENTSPEC_ID,
|
|
40
|
+
},
|
|
41
|
+
});
|
|
42
|
+
const isCreating = !isReady && status !== 'error';
|
|
74
43
|
// Loading state while agent is being created
|
|
75
44
|
if (isCreating) {
|
|
76
45
|
return (_jsx(ThemedProvider, { children: _jsxs(Box, { sx: {
|