@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
|
@@ -0,0 +1,192 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright (c) 2025-2026 Datalayer, Inc.
|
|
3
|
+
* Distributed under the terms of the Modified BSD License.
|
|
4
|
+
*/
|
|
5
|
+
import { useStore } from 'zustand';
|
|
6
|
+
import { createStore } from 'zustand/vanilla';
|
|
7
|
+
import { JSONExt } from '@lumino/coreutils';
|
|
8
|
+
import { Poll } from '@lumino/polling';
|
|
9
|
+
import { getRuntimes } from '../../runtimes';
|
|
10
|
+
import { coreStore } from '@datalayer/core/lib/state/substates/CoreState';
|
|
11
|
+
import { iamStore } from '@datalayer/core/lib/state/substates/IAMState';
|
|
12
|
+
/**
|
|
13
|
+
* Kernel store
|
|
14
|
+
*/
|
|
15
|
+
export const runtimesStore = createStore((set, get) => {
|
|
16
|
+
return {
|
|
17
|
+
configuration: {
|
|
18
|
+
maxNotebookRuntimes: 5,
|
|
19
|
+
maxCellRuntimes: 3,
|
|
20
|
+
},
|
|
21
|
+
setConfiguration: (configuration) => {
|
|
22
|
+
set(state => JSONExt.deepEqual(state.configuration, configuration)
|
|
23
|
+
? {}
|
|
24
|
+
: { configuration: { ...configuration } });
|
|
25
|
+
},
|
|
26
|
+
runtimesUrl: coreStore.getState().configuration?.runtimesUrl,
|
|
27
|
+
tab: 0.0,
|
|
28
|
+
getIntTab: () => Math.floor(get().tab),
|
|
29
|
+
setTab: (tab) => set(state => ({ tab })),
|
|
30
|
+
/**
|
|
31
|
+
* Remote runtime pods.
|
|
32
|
+
*/
|
|
33
|
+
runtimePods: [],
|
|
34
|
+
/**
|
|
35
|
+
* Refresh the runtime pods.
|
|
36
|
+
*/
|
|
37
|
+
refreshRuntimePods: async () => {
|
|
38
|
+
const servers = await getRuntimes();
|
|
39
|
+
// Update the state with the Remote Kernels.
|
|
40
|
+
if (!JSONExt.deepEqual(get().runtimePods, servers)) {
|
|
41
|
+
set({ runtimePods: [...servers] });
|
|
42
|
+
}
|
|
43
|
+
},
|
|
44
|
+
/**
|
|
45
|
+
* Remove a runtime pod by its pod name.
|
|
46
|
+
*/
|
|
47
|
+
removeRuntimePod: (podName) => {
|
|
48
|
+
if (!podName) {
|
|
49
|
+
return;
|
|
50
|
+
}
|
|
51
|
+
const current = get().runtimePods;
|
|
52
|
+
const next = current.filter(pod => pod.pod_name !== podName);
|
|
53
|
+
if (next.length !== current.length) {
|
|
54
|
+
set({ runtimePods: next });
|
|
55
|
+
}
|
|
56
|
+
},
|
|
57
|
+
/**
|
|
58
|
+
* Cached runtime models.
|
|
59
|
+
*/
|
|
60
|
+
runtimeModels: [],
|
|
61
|
+
/**
|
|
62
|
+
* Add a runtime model
|
|
63
|
+
*/
|
|
64
|
+
addRuntimeModel: (model) => {
|
|
65
|
+
const kernels = get().runtimeModels;
|
|
66
|
+
// Identity check: a runtime may not have a kernel `id` yet (it appears
|
|
67
|
+
// only once a kernel is attached), so fall back to the stable pod `uid`.
|
|
68
|
+
// See the IRuntimeModel / IRuntimePod / Kernel.IModel docs in models/Runtime.ts.
|
|
69
|
+
const index = kernels.findIndex(m => (model.id && model.id === m.id) ||
|
|
70
|
+
(!!model.uid && model.uid === m.uid));
|
|
71
|
+
if (index < 0) {
|
|
72
|
+
set({ runtimeModels: [...kernels, model] });
|
|
73
|
+
}
|
|
74
|
+
},
|
|
75
|
+
/**
|
|
76
|
+
* Remove a runtime model by ID.
|
|
77
|
+
*/
|
|
78
|
+
removeRuntimeModel: (id) => {
|
|
79
|
+
const kernels = [...get().runtimeModels];
|
|
80
|
+
const index = kernels?.findIndex(model => id === model.id) ?? -1;
|
|
81
|
+
if (index >= 0) {
|
|
82
|
+
kernels.splice(index, 1);
|
|
83
|
+
set({ runtimeModels: kernels });
|
|
84
|
+
}
|
|
85
|
+
},
|
|
86
|
+
setRuntimeModels: (models) => {
|
|
87
|
+
if (!JSONExt.deepEqual(get().runtimeModels, models)) {
|
|
88
|
+
set({ runtimeModels: [...models] });
|
|
89
|
+
}
|
|
90
|
+
},
|
|
91
|
+
multiServiceManager: undefined,
|
|
92
|
+
setMultiServiceManager: multiServiceManager => {
|
|
93
|
+
set(state => ({ multiServiceManager }));
|
|
94
|
+
},
|
|
95
|
+
showDisclaimer: false,
|
|
96
|
+
setShowDisclaimer: showDisclaimer => {
|
|
97
|
+
set(state => ({ showDisclaimer }));
|
|
98
|
+
},
|
|
99
|
+
/**
|
|
100
|
+
* Kernel Snapshots.
|
|
101
|
+
*/
|
|
102
|
+
runtimeSnapshots: [],
|
|
103
|
+
/**
|
|
104
|
+
* Add a Kernel Snapshot
|
|
105
|
+
*/
|
|
106
|
+
addSandboxSnapshot: (snapshot) => {
|
|
107
|
+
const snapshots = get().runtimeSnapshots;
|
|
108
|
+
const index = snapshots.findIndex(s => s.id === snapshot.id);
|
|
109
|
+
if (index < 0) {
|
|
110
|
+
const kernelSnapshots = [...snapshots, snapshot];
|
|
111
|
+
set({ runtimeSnapshots: kernelSnapshots });
|
|
112
|
+
}
|
|
113
|
+
else if (!JSONExt.deepEqual(snapshots[index], snapshot)) {
|
|
114
|
+
const kernelSnapshots = [...snapshots];
|
|
115
|
+
kernelSnapshots.splice(index, 1, snapshot);
|
|
116
|
+
set({ runtimeSnapshots: kernelSnapshots });
|
|
117
|
+
}
|
|
118
|
+
},
|
|
119
|
+
/**
|
|
120
|
+
* Remove a Kernel Snapshot.
|
|
121
|
+
*/
|
|
122
|
+
removeSandboxSnapshot: (id) => {
|
|
123
|
+
const snapshots = get().runtimeSnapshots;
|
|
124
|
+
const index = snapshots.findIndex(s => s.id === id);
|
|
125
|
+
if (index >= 0) {
|
|
126
|
+
const kernelSnapshots = [...snapshots];
|
|
127
|
+
kernelSnapshots.splice(index, 1);
|
|
128
|
+
set({ runtimeSnapshots: kernelSnapshots });
|
|
129
|
+
}
|
|
130
|
+
},
|
|
131
|
+
/**
|
|
132
|
+
* Set Kernel Snapshots.
|
|
133
|
+
*/
|
|
134
|
+
setSandboxSnapshots: (snapshots) => {
|
|
135
|
+
if (!JSONExt.deepEqual(get().runtimeSnapshots, snapshots)) {
|
|
136
|
+
set({ runtimeSnapshots: [...snapshots] });
|
|
137
|
+
}
|
|
138
|
+
},
|
|
139
|
+
version: '',
|
|
140
|
+
setVersion: version => {
|
|
141
|
+
if (version && !get().version) {
|
|
142
|
+
set(state => ({ version }));
|
|
143
|
+
}
|
|
144
|
+
},
|
|
145
|
+
};
|
|
146
|
+
});
|
|
147
|
+
// Poll remote kernels
|
|
148
|
+
const kernelsPoll = new Poll({
|
|
149
|
+
auto: true,
|
|
150
|
+
factory: () => runtimesStore.getState().refreshRuntimePods(),
|
|
151
|
+
frequency: {
|
|
152
|
+
interval: 61 * 1000,
|
|
153
|
+
backoff: true,
|
|
154
|
+
max: 300 * 1000,
|
|
155
|
+
},
|
|
156
|
+
name: '@datalayer/jupyter-kernels:KernelsManager#kernels',
|
|
157
|
+
standby: () => iamStore.getState().token || runtimesStore.getState().runtimesUrl
|
|
158
|
+
? 'when-hidden'
|
|
159
|
+
: true,
|
|
160
|
+
});
|
|
161
|
+
// Force refresh at expiration date if next tick is after it.
|
|
162
|
+
runtimesStore.subscribe((state, prevState) => {
|
|
163
|
+
if (!JSONExt.deepEqual(state.runtimePods, prevState.runtimePods)) {
|
|
164
|
+
const now = Date.now();
|
|
165
|
+
const minExpiredAt = Math.min(...state.runtimePods.map(kernel => kernel.expired_at ? parseFloat(kernel.expired_at) : Infinity)) * 1_000;
|
|
166
|
+
// Refresh 2 sec after the closest expiration time
|
|
167
|
+
// to let some times to the system to dispose the resources.
|
|
168
|
+
if (now + kernelsPoll.frequency.interval > minExpiredAt + 2_000) {
|
|
169
|
+
setTimeout(() => {
|
|
170
|
+
kernelsPoll.refresh();
|
|
171
|
+
}, minExpiredAt + 2_000 - now);
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
});
|
|
175
|
+
coreStore.subscribe((state, prevState) => {
|
|
176
|
+
if (state.configuration.runtimesUrl &&
|
|
177
|
+
state.configuration.runtimesUrl !== prevState.configuration.runtimesUrl) {
|
|
178
|
+
const runtimesUrl = state.configuration.runtimesUrl;
|
|
179
|
+
console.log(`Updating runtimesUrl with new value ${runtimesUrl}`);
|
|
180
|
+
runtimesStore.setState({ runtimesUrl });
|
|
181
|
+
kernelsPoll
|
|
182
|
+
.refresh()
|
|
183
|
+
.then(() => kernelsPoll.tick)
|
|
184
|
+
.catch(reason => {
|
|
185
|
+
console.error('Failed to refresh kernel servers list following service URL changed.', reason);
|
|
186
|
+
});
|
|
187
|
+
}
|
|
188
|
+
});
|
|
189
|
+
export function useRuntimesStore(selector) {
|
|
190
|
+
return useStore(runtimesStore, selector);
|
|
191
|
+
}
|
|
192
|
+
export default useRuntimesStore;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
type IBaseSpace = Record<string, any>;
|
|
2
|
+
export type ISpaceState = {
|
|
3
|
+
spaces: IBaseSpace[];
|
|
4
|
+
};
|
|
5
|
+
export type SpaceState = ISpaceState & {
|
|
6
|
+
updateSpaces: (spaces: IBaseSpace[]) => void;
|
|
7
|
+
};
|
|
8
|
+
export declare const spaceStore: import("zustand").StoreApi<SpaceState>;
|
|
9
|
+
export declare function useSpaceStore(): SpaceState;
|
|
10
|
+
export declare function useSpaceStore<T>(selector: (state: SpaceState) => T): T;
|
|
11
|
+
export default useSpaceStore;
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright (c) 2025-2026 Datalayer, Inc.
|
|
3
|
+
* Distributed under the terms of the Modified BSD License.
|
|
4
|
+
*/
|
|
5
|
+
import { createStore } from 'zustand/vanilla';
|
|
6
|
+
import { useStore } from 'zustand';
|
|
7
|
+
export const spaceStore = createStore((set, get) => ({
|
|
8
|
+
spaces: [],
|
|
9
|
+
updateSpaces: (spaces) => set((state) => ({
|
|
10
|
+
spaces,
|
|
11
|
+
})),
|
|
12
|
+
}));
|
|
13
|
+
export function useSpaceStore(selector) {
|
|
14
|
+
return useStore(spaceStore, selector);
|
|
15
|
+
}
|
|
16
|
+
export default useSpaceStore;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export * from './CellState';
|
|
2
|
+
export * from './DocumentState';
|
|
3
|
+
export * from './GradeState';
|
|
4
|
+
export * from './NbformatState';
|
|
5
|
+
export * from './RuntimesState';
|
|
6
|
+
export * from './JupyterLabState';
|
|
7
|
+
export * from './SpaceState';
|
|
8
|
+
export { coreStore, useCoreStore, iamStore, useIAMStore, layoutStore, useLayoutStore, organizationStore, useOrganizationStore, surveysStore, useSurveysStore, teamStore, useTeamStore, datasourceStore, useDatasourceStore, runStore, useRunStore, DATALAYER_IAM_TOKEN_KEY, DATALAYER_IAM_USER_KEY, } from '@datalayer/core/lib/state';
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright (c) 2025-2026 Datalayer, Inc.
|
|
3
|
+
* Distributed under the terms of the Modified BSD License.
|
|
4
|
+
*/
|
|
5
|
+
// Moved runtime + content substates (owned by agent-runtimes).
|
|
6
|
+
export * from './CellState';
|
|
7
|
+
export * from './DocumentState';
|
|
8
|
+
export * from './GradeState';
|
|
9
|
+
export * from './NbformatState';
|
|
10
|
+
export * from './RuntimesState';
|
|
11
|
+
export * from './JupyterLabState';
|
|
12
|
+
export * from './SpaceState';
|
|
13
|
+
// Re-export the identity/plans/layout state that stays in core.
|
|
14
|
+
export { coreStore, useCoreStore, iamStore, useIAMStore, layoutStore, useLayoutStore, organizationStore, useOrganizationStore, surveysStore, useSurveysStore, teamStore, useTeamStore, datasourceStore, useDatasourceStore, runStore, useRunStore, DATALAYER_IAM_TOKEN_KEY, DATALAYER_IAM_USER_KEY, } from '@datalayer/core/lib/state';
|
|
@@ -1,10 +1,12 @@
|
|
|
1
1
|
import type { ServiceManager } from '@jupyterlab/services';
|
|
2
|
-
import type {
|
|
2
|
+
import type { INotebookContent } from '@jupyterlab/nbformat';
|
|
3
|
+
import type { IRuntimeOptions } from '../runtimes/apis';
|
|
3
4
|
import type { AgentStatus, AgentConnection, AgentConfig, Protocol } from '../types';
|
|
4
5
|
import type { AgentStreamSnapshotPayload, AgentStreamToolApprovalPayload, CodemodeStatusData } from '../types/stream';
|
|
5
6
|
import type { ContextSnapshotData } from '../types/context';
|
|
6
7
|
import type { McpToolsetsStatusResponse } from '../types/mcp';
|
|
7
8
|
import type { LoadedSkillInfo } from '../types/skills';
|
|
9
|
+
import type { EphemeralSurfaceMode } from '../types/chat';
|
|
8
10
|
/**
|
|
9
11
|
* A URL-addressable agent that has been previously connected.
|
|
10
12
|
* May originate from an agent runtime pod OR from the stable agents service.
|
|
@@ -59,6 +61,19 @@ export interface AgentRuntimeStoreState {
|
|
|
59
61
|
fullContext: Record<string, unknown> | null;
|
|
60
62
|
monitoringCache: Record<string, MonitoringCacheEntry>;
|
|
61
63
|
loadedSkillsByAgentId: Record<string, LoadedSkillInfo[]>;
|
|
64
|
+
ephemeralNotebookModels: Record<string, INotebookContent>;
|
|
65
|
+
/**
|
|
66
|
+
* Persisted in-memory ephemeral document (Lexical) editor states, keyed by
|
|
67
|
+
* document id. The value is a serialized Lexical editor state (JSON string)
|
|
68
|
+
* so the document survives navigation away from and back to a runtime page.
|
|
69
|
+
*/
|
|
70
|
+
ephemeralDocumentModels: Record<string, string>;
|
|
71
|
+
/**
|
|
72
|
+
* Persisted companion editor choice (`none` | `notebook` | `document`) keyed
|
|
73
|
+
* by runtime id, so the chosen editor is restored when navigating away from
|
|
74
|
+
* and back to a runtime page.
|
|
75
|
+
*/
|
|
76
|
+
editorModeByRuntime: Record<string, EphemeralSurfaceMode>;
|
|
62
77
|
}
|
|
63
78
|
export interface AgentRuntimeStoreActions {
|
|
64
79
|
upsertAgent: (agent: Partial<AgentRegistryEntry> & {
|
|
@@ -75,6 +90,14 @@ export interface AgentRuntimeStoreActions {
|
|
|
75
90
|
setLoadedSkillsForAgent: (agentId: string, skills: LoadedSkillInfo[]) => void;
|
|
76
91
|
getLoadedSkillsForAgent: (agentId: string) => LoadedSkillInfo[];
|
|
77
92
|
clearLoadedSkillsForAgent: (agentId: string) => void;
|
|
93
|
+
setEphemeralNotebookModel: (notebookId: string, model: INotebookContent) => void;
|
|
94
|
+
getEphemeralNotebookModel: (notebookId: string) => INotebookContent | null;
|
|
95
|
+
clearEphemeralNotebookModel: (notebookId: string) => void;
|
|
96
|
+
setEphemeralDocumentModel: (documentId: string, model: string) => void;
|
|
97
|
+
getEphemeralDocumentModel: (documentId: string) => string | null;
|
|
98
|
+
clearEphemeralDocumentModel: (documentId: string) => void;
|
|
99
|
+
setEditorMode: (runtimeId: string, mode: EphemeralSurfaceMode) => void;
|
|
100
|
+
getEditorMode: (runtimeId: string) => EphemeralSurfaceMode | null;
|
|
78
101
|
launchAgent: (options: LaunchAgentOptions) => Promise<AgentConnection>;
|
|
79
102
|
connectAgent: (connection: {
|
|
80
103
|
podName: string;
|
|
@@ -136,7 +159,7 @@ export interface AgentRuntimeStoreActions {
|
|
|
136
159
|
export type AgentRuntimeStore = AgentRuntimeStoreState & AgentRuntimeStoreActions;
|
|
137
160
|
export interface LaunchAgentOptions extends IRuntimeOptions {
|
|
138
161
|
/** Optional runtimes API base URL override for runtime creation. */
|
|
139
|
-
|
|
162
|
+
runtimesUrl?: string;
|
|
140
163
|
}
|
|
141
164
|
export declare const agentRuntimeStore: Omit<Omit<import("zustand").StoreApi<AgentRuntimeStore>, "subscribe"> & {
|
|
142
165
|
subscribe: {
|
|
@@ -42,26 +42,51 @@ function getTransportEndpoint(baseUrl, transport, agentId) {
|
|
|
42
42
|
}
|
|
43
43
|
}
|
|
44
44
|
async function createAgentOnRuntime(agentBaseUrl, agentId, config = {}) {
|
|
45
|
-
if (!config.protocol) {
|
|
45
|
+
if (!config.protocol && !config.agentSpecId) {
|
|
46
46
|
throw new Error('Agent protocol is required. Provide config.protocol from the selected spec/config.');
|
|
47
47
|
}
|
|
48
|
-
const transport = config.protocol;
|
|
49
|
-
if (!config.model) {
|
|
48
|
+
const transport = config.protocol || 'vercel-ai';
|
|
49
|
+
if (!config.model && !config.agentSpecId) {
|
|
50
50
|
throw new Error('Agent model is required. Provide config.model from the selected spec/config.');
|
|
51
51
|
}
|
|
52
|
+
const payload = {
|
|
53
|
+
name: config.name || agentId,
|
|
54
|
+
description: config.description || 'AI assistant',
|
|
55
|
+
agent_library: config.agentLibrary || 'pydantic-ai',
|
|
56
|
+
transport,
|
|
57
|
+
model: config.model,
|
|
58
|
+
system_prompt: config.systemPrompt || 'You are a helpful AI assistant.',
|
|
59
|
+
};
|
|
60
|
+
if (config.agentSpecId) {
|
|
61
|
+
payload.agent_spec_id = config.agentSpecId;
|
|
62
|
+
}
|
|
63
|
+
if (typeof config.enableSkills === 'boolean') {
|
|
64
|
+
payload.enable_skills = config.enableSkills;
|
|
65
|
+
}
|
|
66
|
+
if (Array.isArray(config.tools)) {
|
|
67
|
+
payload.tools = config.tools;
|
|
68
|
+
}
|
|
69
|
+
if (config.inferenceProvider) {
|
|
70
|
+
payload.inferenceProvider = config.inferenceProvider;
|
|
71
|
+
}
|
|
72
|
+
if (typeof config.enableCodemode === 'boolean') {
|
|
73
|
+
payload.enable_codemode = config.enableCodemode;
|
|
74
|
+
}
|
|
75
|
+
if (config.sandboxVariant) {
|
|
76
|
+
payload.sandbox_variant = config.sandboxVariant;
|
|
77
|
+
}
|
|
78
|
+
if (config.jupyterSandbox) {
|
|
79
|
+
payload.jupyter_sandbox = config.jupyterSandbox;
|
|
80
|
+
}
|
|
81
|
+
if (config.createPayload && typeof config.createPayload === 'object') {
|
|
82
|
+
Object.assign(payload, config.createPayload);
|
|
83
|
+
}
|
|
52
84
|
const response = await fetch(`${agentBaseUrl}/api/v1/agents`, {
|
|
53
85
|
method: 'POST',
|
|
54
86
|
headers: { 'Content-Type': 'application/json' },
|
|
55
|
-
body: JSON.stringify(
|
|
56
|
-
name: config.name || agentId,
|
|
57
|
-
description: config.description || 'AI assistant',
|
|
58
|
-
agent_library: config.agentLibrary || 'pydantic-ai',
|
|
59
|
-
transport,
|
|
60
|
-
model: config.model,
|
|
61
|
-
system_prompt: config.systemPrompt || 'You are a helpful AI assistant.',
|
|
62
|
-
}),
|
|
87
|
+
body: JSON.stringify(payload),
|
|
63
88
|
});
|
|
64
|
-
if (response.ok || response.status === 400) {
|
|
89
|
+
if (response.ok || response.status === 400 || response.status === 409) {
|
|
65
90
|
const endpoint = getTransportEndpoint(agentBaseUrl, transport, agentId);
|
|
66
91
|
return { agentId, endpoint, isReady: true };
|
|
67
92
|
}
|
|
@@ -89,6 +114,11 @@ const initialWsState = {
|
|
|
89
114
|
monitoringCache: {},
|
|
90
115
|
loadedSkillsByAgentId: {},
|
|
91
116
|
};
|
|
117
|
+
const initialNotebookState = {
|
|
118
|
+
ephemeralNotebookModels: {},
|
|
119
|
+
ephemeralDocumentModels: {},
|
|
120
|
+
editorModeByRuntime: {},
|
|
121
|
+
};
|
|
92
122
|
const countPendingApprovals = (approvals) => approvals.filter(approval => approval.status === 'pending').length;
|
|
93
123
|
// ---------------------------------------------------------------------------
|
|
94
124
|
// Store
|
|
@@ -207,6 +237,54 @@ export const agentRuntimeStore = createStore()(subscribeWithSelector(persist((se
|
|
|
207
237
|
return { loadedSkillsByAgentId: remaining };
|
|
208
238
|
});
|
|
209
239
|
},
|
|
240
|
+
setEphemeralNotebookModel: (notebookId, model) => {
|
|
241
|
+
set(state => ({
|
|
242
|
+
ephemeralNotebookModels: {
|
|
243
|
+
...state.ephemeralNotebookModels,
|
|
244
|
+
[notebookId]: model,
|
|
245
|
+
},
|
|
246
|
+
}));
|
|
247
|
+
},
|
|
248
|
+
getEphemeralNotebookModel: notebookId => get().ephemeralNotebookModels[notebookId] ?? null,
|
|
249
|
+
clearEphemeralNotebookModel: notebookId => {
|
|
250
|
+
set(state => {
|
|
251
|
+
if (!(notebookId in state.ephemeralNotebookModels)) {
|
|
252
|
+
return {};
|
|
253
|
+
}
|
|
254
|
+
const { [notebookId]: _removed, ...remaining } = state.ephemeralNotebookModels;
|
|
255
|
+
return { ephemeralNotebookModels: remaining };
|
|
256
|
+
});
|
|
257
|
+
},
|
|
258
|
+
setEphemeralDocumentModel: (documentId, model) => {
|
|
259
|
+
set(state => ({
|
|
260
|
+
ephemeralDocumentModels: {
|
|
261
|
+
...state.ephemeralDocumentModels,
|
|
262
|
+
[documentId]: model,
|
|
263
|
+
},
|
|
264
|
+
}));
|
|
265
|
+
},
|
|
266
|
+
getEphemeralDocumentModel: documentId => get().ephemeralDocumentModels[documentId] ?? null,
|
|
267
|
+
clearEphemeralDocumentModel: documentId => {
|
|
268
|
+
set(state => {
|
|
269
|
+
if (!(documentId in state.ephemeralDocumentModels)) {
|
|
270
|
+
return {};
|
|
271
|
+
}
|
|
272
|
+
const { [documentId]: _removed, ...remaining } = state.ephemeralDocumentModels;
|
|
273
|
+
return { ephemeralDocumentModels: remaining };
|
|
274
|
+
});
|
|
275
|
+
},
|
|
276
|
+
setEditorMode: (runtimeId, mode) => {
|
|
277
|
+
if (!runtimeId) {
|
|
278
|
+
return;
|
|
279
|
+
}
|
|
280
|
+
set(state => ({
|
|
281
|
+
editorModeByRuntime: {
|
|
282
|
+
...state.editorModeByRuntime,
|
|
283
|
+
[runtimeId]: mode,
|
|
284
|
+
},
|
|
285
|
+
}));
|
|
286
|
+
},
|
|
287
|
+
getEditorMode: runtimeId => get().editorModeByRuntime[runtimeId] ?? null,
|
|
210
288
|
// ── Runtime connection ────────────────────────────────────────
|
|
211
289
|
...initialRuntimeState,
|
|
212
290
|
connectAgent: connection => {
|
|
@@ -233,14 +311,14 @@ export const agentRuntimeStore = createStore()(subscribeWithSelector(persist((se
|
|
|
233
311
|
launchAgent: async (config) => {
|
|
234
312
|
set({ status: 'launching', error: null, isLaunching: true });
|
|
235
313
|
try {
|
|
236
|
-
const { createRuntime } = await import('
|
|
237
|
-
const { runtimesStore } = await import('
|
|
238
|
-
if (config.
|
|
314
|
+
const { createRuntime } = await import('../runtimes/actions');
|
|
315
|
+
const { runtimesStore } = await import('../state/substates');
|
|
316
|
+
if (config.runtimesUrl) {
|
|
239
317
|
runtimesStore.setState({
|
|
240
|
-
|
|
318
|
+
runtimesUrl: config.runtimesUrl,
|
|
241
319
|
});
|
|
242
320
|
}
|
|
243
|
-
const {
|
|
321
|
+
const { runtimesUrl: _runtimesUrl, ...runtimeOptions } = config;
|
|
244
322
|
const runtimePod = await createRuntime({
|
|
245
323
|
environmentName: runtimeOptions.environmentName,
|
|
246
324
|
creditsLimit: runtimeOptions.creditsLimit,
|
|
@@ -299,6 +377,7 @@ export const agentRuntimeStore = createStore()(subscribeWithSelector(persist((se
|
|
|
299
377
|
setError: error => set({ error, status: 'error' }),
|
|
300
378
|
// ── WebSocket stream ──────────────────────────────────────────
|
|
301
379
|
...initialWsState,
|
|
380
|
+
...initialNotebookState,
|
|
302
381
|
setWsState: wsState => set({ wsState }),
|
|
303
382
|
setWs: (ws, agentId) => {
|
|
304
383
|
_ws = ws;
|
|
@@ -581,7 +660,14 @@ export const agentRuntimeStore = createStore()(subscribeWithSelector(persist((se
|
|
|
581
660
|
}
|
|
582
661
|
_ws = null;
|
|
583
662
|
_wsByAgentId.clear();
|
|
584
|
-
set(
|
|
663
|
+
set(state => ({
|
|
664
|
+
...initialRuntimeState,
|
|
665
|
+
...initialWsState,
|
|
666
|
+
// Keep persisted notebook models across navigation/reset cycles.
|
|
667
|
+
ephemeralNotebookModels: state.ephemeralNotebookModels,
|
|
668
|
+
ephemeralDocumentModels: state.ephemeralDocumentModels,
|
|
669
|
+
editorModeByRuntime: state.editorModeByRuntime,
|
|
670
|
+
}));
|
|
585
671
|
},
|
|
586
672
|
resetWs: () => {
|
|
587
673
|
if (_ws) {
|
|
@@ -594,7 +680,13 @@ export const agentRuntimeStore = createStore()(subscribeWithSelector(persist((se
|
|
|
594
680
|
}
|
|
595
681
|
_ws = null;
|
|
596
682
|
_wsByAgentId.clear();
|
|
597
|
-
set(
|
|
683
|
+
set(state => ({
|
|
684
|
+
...initialWsState,
|
|
685
|
+
// Preserve notebook models when the chat websocket reconnects.
|
|
686
|
+
ephemeralNotebookModels: state.ephemeralNotebookModels,
|
|
687
|
+
ephemeralDocumentModels: state.ephemeralDocumentModels,
|
|
688
|
+
editorModeByRuntime: state.editorModeByRuntime,
|
|
689
|
+
}));
|
|
598
690
|
},
|
|
599
691
|
}), {
|
|
600
692
|
name: 'agent-runtimes-storage',
|
|
@@ -613,6 +705,9 @@ export const agentRuntimeStore = createStore()(subscribeWithSelector(persist((se
|
|
|
613
705
|
})),
|
|
614
706
|
monitoringCache: state.monitoringCache,
|
|
615
707
|
loadedSkillsByAgentId: state.loadedSkillsByAgentId,
|
|
708
|
+
ephemeralNotebookModels: state.ephemeralNotebookModels,
|
|
709
|
+
ephemeralDocumentModels: state.ephemeralDocumentModels,
|
|
710
|
+
editorModeByRuntime: state.editorModeByRuntime,
|
|
616
711
|
}),
|
|
617
712
|
})));
|
|
618
713
|
export function useAgentRuntimeStore(selector) {
|
|
@@ -7,9 +7,9 @@ declare const meta: {
|
|
|
7
7
|
layout: string;
|
|
8
8
|
};
|
|
9
9
|
args: {
|
|
10
|
-
onLogin: import("
|
|
11
|
-
onLogout: import("
|
|
12
|
-
onCreateAccount: import("
|
|
10
|
+
onLogin: import("storybook/test").Mock<(...args: any[]) => any>;
|
|
11
|
+
onLogout: import("storybook/test").Mock<(...args: any[]) => any>;
|
|
12
|
+
onCreateAccount: import("storybook/test").Mock<(...args: any[]) => any>;
|
|
13
13
|
};
|
|
14
14
|
};
|
|
15
15
|
export default meta;
|
package/lib/test-setup.js
CHANGED
|
@@ -57,6 +57,16 @@ vi.mock('@datalayer/jupyter-react', () => ({
|
|
|
57
57
|
serviceManager: null,
|
|
58
58
|
}),
|
|
59
59
|
JupyterReactTheme: ({ children }) => children,
|
|
60
|
+
Notebook: () => null,
|
|
61
|
+
NotebookToolbar: () => null,
|
|
62
|
+
CellSidebarExtension: class CellSidebarExtension {
|
|
63
|
+
},
|
|
64
|
+
CellSidebarButton: () => null,
|
|
65
|
+
notebookStore: { getState: () => ({}) },
|
|
66
|
+
DefaultExecutor: class DefaultExecutor {
|
|
67
|
+
},
|
|
68
|
+
notebookToolDefinitions: {},
|
|
69
|
+
notebookToolOperations: {},
|
|
60
70
|
CollaborationProviderBase: class CollaborationProviderBase {
|
|
61
71
|
},
|
|
62
72
|
CollaborationStatus: {
|
|
@@ -19,17 +19,17 @@ export type CreateAgentRuntimeRequest = {
|
|
|
19
19
|
/** Full agent spec payload to propagate to backend services */
|
|
20
20
|
agentSpec?: Record<string, any>;
|
|
21
21
|
/** Account UID (user or organization) charged for runtime costs */
|
|
22
|
-
|
|
22
|
+
billingEntityUid?: string;
|
|
23
23
|
/** User account handle used for user home mount path. */
|
|
24
24
|
userAccountHandle?: string;
|
|
25
25
|
/** Account kind charged for runtime costs. */
|
|
26
|
-
|
|
26
|
+
billingEntityType?: 'user' | 'organization' | 'team';
|
|
27
27
|
/** Account handle charged for runtime costs. */
|
|
28
|
-
|
|
28
|
+
billingEntityHandle?: string;
|
|
29
29
|
/** Source organization UID for team-billed runtimes. */
|
|
30
|
-
|
|
30
|
+
billingSourceOrganizationUid?: string;
|
|
31
31
|
/** Source organization handle for team-billed runtimes. */
|
|
32
|
-
|
|
32
|
+
billingSourceOrganizationHandle?: string;
|
|
33
33
|
/** Mount account home folder into runtime. */
|
|
34
34
|
mountHomeFolder?: boolean;
|
|
35
35
|
/** Optional volume UID to mount into runtime. */
|
package/lib/types/agents.d.ts
CHANGED
|
@@ -53,9 +53,9 @@ export type AgentRuntimeData = {
|
|
|
53
53
|
token?: string;
|
|
54
54
|
agentSpec?: Agentspec;
|
|
55
55
|
agent_spec_id?: string;
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
56
|
+
billing_entity_uid?: string;
|
|
57
|
+
billing_entity_type?: 'user' | 'organization' | 'team';
|
|
58
|
+
billing_entity_handle?: string;
|
|
59
59
|
mount_home_folder?: boolean;
|
|
60
60
|
volume_uid?: string;
|
|
61
61
|
volume_uids?: string[];
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { SkillSpec } from './skills';
|
|
2
2
|
import type { MCPServer, AgentMCPServerToolConfig } from './mcp';
|
|
3
|
-
import type { ToolSpec, FrontendToolSpec } from './tools';
|
|
3
|
+
import type { ToolSpec, FrontendToolSpec, FrontendRenderToolSpec } from './tools';
|
|
4
4
|
import type { AgentTriggerConfig } from './triggers';
|
|
5
5
|
import type { AgentModelConfig } from './models';
|
|
6
6
|
import type { AgentOutputConfig } from './outputs';
|
|
@@ -45,6 +45,8 @@ export interface Agentspec {
|
|
|
45
45
|
disableToolApprovals?: boolean;
|
|
46
46
|
/** Frontend tool sets available to this agent */
|
|
47
47
|
frontendTools?: FrontendToolSpec[];
|
|
48
|
+
/** Bindings of backend tools to frontend renderers (tool name + css) */
|
|
49
|
+
frontendRenderTools?: FrontendRenderToolSpec[];
|
|
48
50
|
/** Runtime environment name for this agent */
|
|
49
51
|
environmentName: string;
|
|
50
52
|
/** Icon identifier or URL for the agent */
|