@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,252 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
/*
|
|
3
|
+
* Copyright (c) 2025-2026 Datalayer, Inc.
|
|
4
|
+
* Distributed under the terms of the Modified BSD License.
|
|
5
|
+
*/
|
|
6
|
+
/**
|
|
7
|
+
* EphemeralNotebook — an in-memory Jupyter notebook rendered next to the chat.
|
|
8
|
+
*
|
|
9
|
+
* The notebook model lives purely in memory (the `nbformat` content below is
|
|
10
|
+
* never persisted to a file) and is backed by a sandbox kernel obtained via
|
|
11
|
+
* `useJupyter`. This mirrors the pattern used by the notebook editor and the
|
|
12
|
+
* `NotebookNbformat` example, so the agent can drive the notebook through the
|
|
13
|
+
* registered notebook frontend tools while nothing is written to disk.
|
|
14
|
+
*
|
|
15
|
+
* The container structure (relative wrapper + absolutely positioned inner box
|
|
16
|
+
* + `#dla-Jupyter-Notebook` overrides) is copied from the notebook editor
|
|
17
|
+
* (`NotebookEditorPanel`) so the cells get a resolved height and actually
|
|
18
|
+
* render — a plain `height: 100%` collapses to zero inside a flex parent.
|
|
19
|
+
*
|
|
20
|
+
* @module chat/notebook/EphemeralNotebook
|
|
21
|
+
*/
|
|
22
|
+
import { useEffect, useMemo, useRef, useState } from 'react';
|
|
23
|
+
import { ServerConnection, ServiceManager } from '@jupyterlab/services';
|
|
24
|
+
import { Box, DatalayerThemeProvider, getThemeConfig, useSystemColorMode, useThemeStore, } from '@datalayer/primer-addons';
|
|
25
|
+
import { Notebook, NotebookToolbar, CellSidebarExtension, CellSidebarButton, JupyterReactTheme, notebookStore, disposeServiceManager, } from '@datalayer/jupyter-react';
|
|
26
|
+
import { useAgentsRuntimes } from '../../hooks/useAgentRuntimes';
|
|
27
|
+
import { registerSandboxServiceManager } from '../../services/sandboxServiceManagers';
|
|
28
|
+
import { useProgressTask } from '../../hooks/useProgressTask';
|
|
29
|
+
/**
|
|
30
|
+
* Minimal in-memory notebook content. A single empty code cell is provided so
|
|
31
|
+
* the notebook renders immediately and the agent can insert/update cells.
|
|
32
|
+
*/
|
|
33
|
+
const EPHEMERAL_NOTEBOOK_CONTENT = {
|
|
34
|
+
cells: [
|
|
35
|
+
{
|
|
36
|
+
cell_type: 'code',
|
|
37
|
+
source: [''],
|
|
38
|
+
metadata: {},
|
|
39
|
+
outputs: [],
|
|
40
|
+
execution_count: null,
|
|
41
|
+
},
|
|
42
|
+
],
|
|
43
|
+
metadata: {
|
|
44
|
+
kernelspec: {
|
|
45
|
+
display_name: 'Python 3',
|
|
46
|
+
language: 'python',
|
|
47
|
+
name: 'python3',
|
|
48
|
+
},
|
|
49
|
+
language_info: { name: 'python' },
|
|
50
|
+
},
|
|
51
|
+
nbformat: 4,
|
|
52
|
+
nbformat_minor: 5,
|
|
53
|
+
};
|
|
54
|
+
/**
|
|
55
|
+
* Renders an in-memory notebook backed by a sandbox kernel.
|
|
56
|
+
*/
|
|
57
|
+
export function EphemeralNotebook({ notebookId, runtimePodName, cellSidebarMargin = 120, nbformat, onNbformatChange, toolbarComponent, }) {
|
|
58
|
+
// The `nbformat` passed to the `Notebook` component MUST stay a stable
|
|
59
|
+
// reference for the lifetime of a given `notebookId`: the underlying
|
|
60
|
+
// `useNotebookModel` hook rebuilds the notebook model (and its context /
|
|
61
|
+
// adapter) every time the `nbformat` reference changes. Feeding the live
|
|
62
|
+
// model back into this prop would thrash the notebook and can persist
|
|
63
|
+
// transient/empty content. So we capture the initial/restore content ONCE
|
|
64
|
+
// per `notebookId` and never mutate it from the live model.
|
|
65
|
+
const initialNbformatRef = useRef(nbformat ?? EPHEMERAL_NOTEBOOK_CONTENT);
|
|
66
|
+
const initialNotebookIdRef = useRef(notebookId);
|
|
67
|
+
if (initialNotebookIdRef.current !== notebookId) {
|
|
68
|
+
// Notebook scope changed (e.g. switching agents) — reset the restore seed.
|
|
69
|
+
initialNotebookIdRef.current = notebookId;
|
|
70
|
+
initialNbformatRef.current = nbformat ?? EPHEMERAL_NOTEBOOK_CONTENT;
|
|
71
|
+
}
|
|
72
|
+
const initialNbformat = initialNbformatRef.current;
|
|
73
|
+
// Hash of the last content we persisted, so the poll only writes on change.
|
|
74
|
+
const lastSavedHashRef = useRef(JSON.stringify(initialNbformat));
|
|
75
|
+
// Resolve the runtime sandbox strictly by its assigned pod name. There is
|
|
76
|
+
// deliberately NO fallback to "first running" or `runtimes[0]`: the ephemeral
|
|
77
|
+
// notebook must bind to exactly the runtime assigned to this agent, or to
|
|
78
|
+
// none at all (straight path).
|
|
79
|
+
const { runtimes, refetchRuntimes } = useAgentsRuntimes();
|
|
80
|
+
const selectedRuntime = useMemo(() => {
|
|
81
|
+
const preferredPod = String(runtimePodName || '').trim();
|
|
82
|
+
if (!preferredPod) {
|
|
83
|
+
return undefined;
|
|
84
|
+
}
|
|
85
|
+
return runtimes.find(rt => String(rt?.pod_name || '') === preferredPod);
|
|
86
|
+
}, [runtimePodName, runtimes]);
|
|
87
|
+
// While the assigned pod has not yet appeared in the runtimes list, poll the
|
|
88
|
+
// list quickly instead of waiting for the default (10s) refresh interval.
|
|
89
|
+
// This is what makes the "Starting notebook…" state clear promptly once the
|
|
90
|
+
// agent runtime is ready, rather than lingering for several seconds.
|
|
91
|
+
const needsRuntimeLookup = Boolean(String(runtimePodName || '').trim() && !selectedRuntime);
|
|
92
|
+
useEffect(() => {
|
|
93
|
+
if (!needsRuntimeLookup) {
|
|
94
|
+
return;
|
|
95
|
+
}
|
|
96
|
+
void refetchRuntimes();
|
|
97
|
+
const intervalId = window.setInterval(() => {
|
|
98
|
+
void refetchRuntimes();
|
|
99
|
+
}, 1000);
|
|
100
|
+
return () => {
|
|
101
|
+
window.clearInterval(intervalId);
|
|
102
|
+
};
|
|
103
|
+
}, [needsRuntimeLookup, refetchRuntimes]);
|
|
104
|
+
const [runtimeServiceManager, setRuntimeServiceManager] = useState(null);
|
|
105
|
+
const [runtimeKernelId, setRuntimeKernelId] = useState(undefined);
|
|
106
|
+
const [runtimeStartDefaultKernel, setRuntimeStartDefaultKernel] = useState(false);
|
|
107
|
+
useEffect(() => {
|
|
108
|
+
let cancelled = false;
|
|
109
|
+
let manager = null;
|
|
110
|
+
let unregisterManager = null;
|
|
111
|
+
const connectRuntime = async () => {
|
|
112
|
+
const baseUrl = String(selectedRuntime?.url || '').trim();
|
|
113
|
+
if (!baseUrl) {
|
|
114
|
+
if (!cancelled) {
|
|
115
|
+
setRuntimeServiceManager(null);
|
|
116
|
+
setRuntimeKernelId(undefined);
|
|
117
|
+
setRuntimeStartDefaultKernel(false);
|
|
118
|
+
}
|
|
119
|
+
return;
|
|
120
|
+
}
|
|
121
|
+
try {
|
|
122
|
+
const token = String(selectedRuntime?.token || '').trim();
|
|
123
|
+
const serverSettings = ServerConnection.makeSettings({
|
|
124
|
+
baseUrl,
|
|
125
|
+
wsUrl: baseUrl.replace(/^http/, 'ws'),
|
|
126
|
+
token,
|
|
127
|
+
appendToken: true,
|
|
128
|
+
});
|
|
129
|
+
manager = new ServiceManager({ serverSettings });
|
|
130
|
+
// Central sandbox registry: runtime terminate/pause disposes this
|
|
131
|
+
// manager immediately so its pollers cannot hit the dead pod ingress.
|
|
132
|
+
unregisterManager = registerSandboxServiceManager(String(selectedRuntime?.pod_name || ''), manager);
|
|
133
|
+
await manager.ready;
|
|
134
|
+
await manager.kernels.refreshRunning();
|
|
135
|
+
const runningKernel = [...manager.kernels.running()][0];
|
|
136
|
+
if (!cancelled) {
|
|
137
|
+
setRuntimeServiceManager(manager);
|
|
138
|
+
setRuntimeKernelId(runningKernel?.id);
|
|
139
|
+
setRuntimeStartDefaultKernel(!runningKernel);
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
catch {
|
|
143
|
+
if (!cancelled) {
|
|
144
|
+
setRuntimeServiceManager(null);
|
|
145
|
+
setRuntimeKernelId(undefined);
|
|
146
|
+
setRuntimeStartDefaultKernel(false);
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
};
|
|
150
|
+
connectRuntime();
|
|
151
|
+
return () => {
|
|
152
|
+
cancelled = true;
|
|
153
|
+
unregisterManager?.();
|
|
154
|
+
if (manager) {
|
|
155
|
+
disposeServiceManager(manager);
|
|
156
|
+
}
|
|
157
|
+
};
|
|
158
|
+
}, [selectedRuntime?.pod_name, selectedRuntime?.url, selectedRuntime?.token]);
|
|
159
|
+
// Bind strictly to the agent runtime sandbox; there is NO local fallback
|
|
160
|
+
// kernel. The notebook executes on the agent's runtime or shows a waiting
|
|
161
|
+
// state until the runtime is ready.
|
|
162
|
+
const activeServiceManager = runtimeServiceManager;
|
|
163
|
+
const activeKernelId = runtimeKernelId;
|
|
164
|
+
const activeStartDefaultKernel = runtimeStartDefaultKernel;
|
|
165
|
+
const ToolbarComponent = toolbarComponent || NotebookToolbar;
|
|
166
|
+
const isRuntimeStarting = Boolean(String(runtimePodName || '').trim() && !activeServiceManager);
|
|
167
|
+
useProgressTask(`ephemeral-notebook-start-${notebookId}`, isRuntimeStarting);
|
|
168
|
+
useEffect(() => {
|
|
169
|
+
// Read the CURRENT live notebook model straight from the notebook store.
|
|
170
|
+
// The `NotebookAdapter` exposes `notebook` (the widget, whose `.model` is
|
|
171
|
+
// the `INotebookModel`) and `panel` (`panel.content.model`). There is NO
|
|
172
|
+
// `notebookPanel` getter, so we read through those real accessors.
|
|
173
|
+
const readLiveModel = () => {
|
|
174
|
+
const notebook = notebookStore.getState().selectNotebook(notebookId);
|
|
175
|
+
const adapter = notebook?.adapter;
|
|
176
|
+
const model = adapter?.notebook?.model ?? adapter?.panel?.content?.model ?? null;
|
|
177
|
+
const modelJson = model?.toJSON?.();
|
|
178
|
+
return modelJson ?? null;
|
|
179
|
+
};
|
|
180
|
+
// Persist the current model to the store, but only when it actually
|
|
181
|
+
// changed. This never feeds back into the `nbformat` prop, so the live
|
|
182
|
+
// notebook is not rebuilt.
|
|
183
|
+
const persistLiveModel = () => {
|
|
184
|
+
const model = readLiveModel();
|
|
185
|
+
if (!model || !Array.isArray(model.cells)) {
|
|
186
|
+
return;
|
|
187
|
+
}
|
|
188
|
+
const nextHash = JSON.stringify(model);
|
|
189
|
+
if (nextHash === lastSavedHashRef.current) {
|
|
190
|
+
return;
|
|
191
|
+
}
|
|
192
|
+
lastSavedHashRef.current = nextHash;
|
|
193
|
+
onNbformatChange?.(model);
|
|
194
|
+
};
|
|
195
|
+
const intervalId = window.setInterval(persistLiveModel, 500);
|
|
196
|
+
return () => {
|
|
197
|
+
window.clearInterval(intervalId);
|
|
198
|
+
// Capture the final model on unmount (navigating away) so the very last
|
|
199
|
+
// edits are persisted before the notebook adapter is disposed.
|
|
200
|
+
persistLiveModel();
|
|
201
|
+
};
|
|
202
|
+
}, [activeServiceManager, notebookId, onNbformatChange]);
|
|
203
|
+
// Resolve the active theme/color-mode exactly like the notebook editor
|
|
204
|
+
// (NotebookEditorPanel) so the notebook honours dark / branded themes
|
|
205
|
+
// instead of always rendering light.
|
|
206
|
+
const { colorMode, theme: themeVariant } = useThemeStore();
|
|
207
|
+
const systemMode = useSystemColorMode();
|
|
208
|
+
const themeConfig = getThemeConfig(themeVariant);
|
|
209
|
+
const resolvedMode = colorMode === 'auto' ? systemMode : colorMode;
|
|
210
|
+
const modeStyles = resolvedMode === 'dark'
|
|
211
|
+
? themeConfig.themeStyles.dark
|
|
212
|
+
: themeConfig.themeStyles.light;
|
|
213
|
+
const themeBackground = modeStyles.backgroundColor ?? '';
|
|
214
|
+
const extensions = useMemo(() => [new CellSidebarExtension({ factory: CellSidebarButton })], []);
|
|
215
|
+
return (_jsx(Box, { sx: {
|
|
216
|
+
flex: 1,
|
|
217
|
+
minHeight: 0,
|
|
218
|
+
height: '100%',
|
|
219
|
+
position: 'relative',
|
|
220
|
+
overflow: 'hidden',
|
|
221
|
+
bg: 'canvas.default',
|
|
222
|
+
}, children: activeServiceManager ? (_jsx(DatalayerThemeProvider, { colorMode: colorMode, theme: themeConfig.primerTheme, themeStyles: themeConfig.themeStyles, children: _jsx(JupyterReactTheme, { colormode: resolvedMode, backgroundColor: themeBackground, children: _jsx(Box, { sx: {
|
|
223
|
+
position: 'absolute',
|
|
224
|
+
inset: 0,
|
|
225
|
+
display: 'flex',
|
|
226
|
+
flexDirection: 'column',
|
|
227
|
+
overflow: 'hidden',
|
|
228
|
+
overscrollBehaviorY: 'contain',
|
|
229
|
+
overflowAnchor: 'none',
|
|
230
|
+
padding: 2,
|
|
231
|
+
// Give the notebook a resolved height so cells render. The
|
|
232
|
+
// Jupyter Notebook component renders its outer container with
|
|
233
|
+
// id "dla-Jupyter-Notebook"; pin its toolbar and let the cell
|
|
234
|
+
// area grow to fill the remaining space.
|
|
235
|
+
'& #dla-Jupyter-Notebook': {
|
|
236
|
+
display: 'flex',
|
|
237
|
+
flexDirection: 'column',
|
|
238
|
+
},
|
|
239
|
+
'& #dla-Jupyter-Notebook > :first-of-type': {
|
|
240
|
+
position: 'sticky',
|
|
241
|
+
top: 0,
|
|
242
|
+
zIndex: 2,
|
|
243
|
+
flex: '0 0 auto',
|
|
244
|
+
background: 'var(--jp-layout-color0, transparent)',
|
|
245
|
+
},
|
|
246
|
+
'& #dla-Jupyter-Notebook > .dla-Box-Notebook': {
|
|
247
|
+
flex: '1 1 auto',
|
|
248
|
+
minHeight: 0,
|
|
249
|
+
},
|
|
250
|
+
}, children: _jsx(Notebook, { nbformat: initialNbformat, id: notebookId, serviceManager: activeServiceManager, startDefaultKernel: activeStartDefaultKernel, kernelId: activeKernelId, height: "100%", cellSidebarMargin: cellSidebarMargin, extensions: extensions, Toolbar: ToolbarComponent }) }) }) })) : null }));
|
|
251
|
+
}
|
|
252
|
+
export default EphemeralNotebook;
|
|
@@ -27,7 +27,7 @@ export function InputToolbar({ input, setInput, isLoading, kernelStatus, connect
|
|
|
27
27
|
const hasSelectorsContent = hasConfigData || hasSkillsData;
|
|
28
28
|
// Show token usage when we have valid context data
|
|
29
29
|
const hasContext = Boolean(agentUsage && !agentUsage.error && agentUsage.totalTokens > 0);
|
|
30
|
-
return (_jsxs(Box, { children: [_jsx(InputPrompt, { placeholder: placeholder || 'Type a message...', isLoading: isLoading, isKernelBusy: isKernelBusy, disabled: disableInputPrompt, readOnly: !connectionConfirmed, onSend: onSend, onStop: onStop, autoFocus: autoFocus, focusTrigger: focusTrigger, padding: padding, value: input, onChange: setInput, footerRightContent: _jsxs(_Fragment, { children: [_jsx(McpStatusIndicator, { apiBase: apiBase, authToken: authToken, data: mcpStatusData }), _jsx(SkillsStatusIndicator, { skillsCount: skills.length, enabledCount: enabledSkills.size, loading: skillsLoading })] }) }), showTokenUsage && (_jsx(Box, { sx: { minHeight: hasContext && agentUsage ? 28 : 8 }, children: hasContext && agentUsage ? (_jsx(TokenUsageBar, { agentUsage: agentUsage, padding: padding })) : null })), showSelectorsBar && (_jsx(Box, { sx: {
|
|
30
|
+
return (_jsxs(Box, { children: [_jsx(InputPrompt, { placeholder: placeholder || 'Type a message...', isLoading: isLoading, isKernelBusy: isKernelBusy, disabled: disableInputPrompt, readOnly: !connectionConfirmed, onSend: onSend, onStop: onStop, autoFocus: autoFocus, focusTrigger: focusTrigger, padding: padding, value: input, onChange: setInput, footerRightContent: _jsxs(_Fragment, { children: [_jsx(McpStatusIndicator, { apiBase: apiBase, authToken: authToken, data: mcpStatusData }), _jsx(SkillsStatusIndicator, { skillsCount: skills.length, enabledCount: enabledSkills.size, loading: skillsLoading })] }) }), showTokenUsage && (_jsx(Box, { sx: { minHeight: hasContext && agentUsage ? 28 : 8 }, children: hasContext && agentUsage ? (_jsx(TokenUsageBar, { agentUsage: agentUsage, padding: padding })) : null })), showSelectorsBar && (_jsx(Box, { "aria-disabled": disableInputPrompt || undefined, sx: {
|
|
31
31
|
display: 'flex',
|
|
32
32
|
gap: 2,
|
|
33
33
|
px: padding,
|
|
@@ -37,6 +37,9 @@ export function InputToolbar({ input, setInput, isLoading, kernelStatus, connect
|
|
|
37
37
|
borderColor: 'border.default',
|
|
38
38
|
alignItems: 'center',
|
|
39
39
|
bg: 'canvas.subtle',
|
|
40
|
+
...(disableInputPrompt
|
|
41
|
+
? { opacity: 0.5, pointerEvents: 'none', filter: 'grayscale(1)' }
|
|
42
|
+
: null),
|
|
40
43
|
}, children: hasSelectorsContent ? (_jsxs(_Fragment, { children: [showToolsMenu && (_jsx(ToolsMenu, { codemodeEnabled: codemodeEnabled, onToggleCodemode: onToggleCodemode, mcpServers: mcpServers, enabledMcpTools: enabledMcpTools, enabledMcpToolCount: enabledMcpToolCount, onToggleMcpTool: onToggleMcpTool, onToggleAllMcpServerTools: onToggleAllMcpServerTools, approvedMcpTools: approvedMcpTools, onToggleMcpToolApproval: onToggleMcpToolApproval, availableTools: availableTools })), showSkillsMenu && (_jsx(SkillsMenu, { skills: skills, skillsLoading: skillsLoading, enabledSkills: enabledSkills, onToggleSkill: onToggleSkill, onToggleAllSkills: onToggleAllSkills, approvedSkills: approvedSkills, onToggleSkillApproval: onToggleSkillApproval })), showModelSelector && models.length > 0 && selectedModel && (_jsx(ModelSelector, { models: models, selectedModel: selectedModel, onModelSelect: onModelSelect, isA2AProtocol: isA2AProtocol }))] })) : (_jsx(Text, { sx: { fontSize: 0, color: 'fg.muted' }, children: "Loading controls..." })) }))] }));
|
|
41
44
|
}
|
|
42
45
|
// ---------------------------------------------------------------------------
|
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Agent Runtimes client: extends the core Datalayer client (IAM / plans) with
|
|
3
|
+
* runtime and workspace/content (Spacer) capabilities.
|
|
4
|
+
*
|
|
5
|
+
* @module client/AgentRuntimesClient
|
|
6
|
+
*/
|
|
7
|
+
import { DatalayerCoreClient, type DatalayerClientConfig } from '@datalayer/core/lib/client';
|
|
8
|
+
import type { HealthCheck } from '@datalayer/core/lib/models/HealthCheck';
|
|
9
|
+
import type { RuntimeDTO } from '../models/RuntimeDTO';
|
|
10
|
+
import type { EnvironmentDTO } from '../models/EnvironmentDTO';
|
|
11
|
+
import type { CodeSandboxSnapshotDTO } from '../models/CodeSandboxSnapshotDTO';
|
|
12
|
+
import type { SpaceDTO, UpdateSpaceRequest } from '../models/SpaceDTO';
|
|
13
|
+
import type { NotebookDTO } from '../models/NotebookDTO';
|
|
14
|
+
import type { LexicalDTO } from '../models/LexicalDTO';
|
|
15
|
+
import type { ProjectDTO, ProjectDefaultItems } from '../models/ProjectDTO';
|
|
16
|
+
declare const AgentRuntimesClientWithMixins: {
|
|
17
|
+
new (...args: any[]): {
|
|
18
|
+
getMySpaces(): Promise<SpaceDTO[]>;
|
|
19
|
+
createSpace(name: string, description: string, variant: string, spaceHandle: string, organizationId: string, seedSpaceId: string, isPublic: boolean): Promise<SpaceDTO>;
|
|
20
|
+
createNotebook(spaceId: string, name: string, description: string, file?: File | Blob): Promise<NotebookDTO>;
|
|
21
|
+
getNotebook(id: string): Promise<NotebookDTO>;
|
|
22
|
+
updateNotebook(id: string, name?: string, description?: string): Promise<NotebookDTO>;
|
|
23
|
+
createLexical(spaceId: string, name: string, description: string, file?: File | Blob): Promise<LexicalDTO>;
|
|
24
|
+
getLexical(id: string): Promise<LexicalDTO>;
|
|
25
|
+
updateLexical(id: string, name?: string, description?: string): Promise<LexicalDTO>;
|
|
26
|
+
getSpaceItems(spaceId: string): Promise<(NotebookDTO | LexicalDTO)[]>;
|
|
27
|
+
getSpaceItem(itemId: string): Promise<NotebookDTO | LexicalDTO>;
|
|
28
|
+
deleteSpaceItem(itemId: string): Promise<void>;
|
|
29
|
+
getContent(itemId: string): Promise<any>;
|
|
30
|
+
checkSpacerHealth(): Promise<HealthCheck>;
|
|
31
|
+
getCollaborationSessionId(documentId: string): Promise<string>;
|
|
32
|
+
getSpace(uid: string): Promise<SpaceDTO>;
|
|
33
|
+
updateSpace(uid: string, data: UpdateSpaceRequest): Promise<SpaceDTO>;
|
|
34
|
+
updateUserSpace(uid: string, userId: string, data: UpdateSpaceRequest): Promise<SpaceDTO>;
|
|
35
|
+
deleteSpace(uid: string): Promise<void>;
|
|
36
|
+
makeSpacePublic(uid: string): Promise<SpaceDTO>;
|
|
37
|
+
makeSpacePrivate(uid: string): Promise<SpaceDTO>;
|
|
38
|
+
exportSpace(uid: string): Promise<any>;
|
|
39
|
+
cloneNotebook(id: string): Promise<NotebookDTO>;
|
|
40
|
+
cloneLexical(id: string): Promise<LexicalDTO>;
|
|
41
|
+
getProjects(): Promise<ProjectDTO[]>;
|
|
42
|
+
getProject(uid: string): Promise<ProjectDTO>;
|
|
43
|
+
createProject(name: string, description?: string): Promise<ProjectDTO>;
|
|
44
|
+
updateProject(uid: string, data: UpdateSpaceRequest): Promise<ProjectDTO>;
|
|
45
|
+
renameProject(uid: string, newName: string, description?: string): Promise<ProjectDTO>;
|
|
46
|
+
getProjectDefaultItems(uid: string): Promise<ProjectDefaultItems>;
|
|
47
|
+
};
|
|
48
|
+
} & {
|
|
49
|
+
new (...args: any[]): {
|
|
50
|
+
_extractRuntimePodName(runtimePodNameOrInstance: string | RuntimeDTO): string;
|
|
51
|
+
_extractSnapshotId(snapshotIdOrInstance: string | CodeSandboxSnapshotDTO): string;
|
|
52
|
+
listEnvironments(): Promise<EnvironmentDTO[]>;
|
|
53
|
+
createRuntime(environmentName: string, type: "notebook" | "terminal" | "job", givenName: string, minutesLimit: number, fromSnapshotId?: string): Promise<RuntimeDTO>;
|
|
54
|
+
listRuntimes(): Promise<RuntimeDTO[]>;
|
|
55
|
+
getRuntime(podName: string): Promise<RuntimeDTO>;
|
|
56
|
+
deleteRuntime(podName: string): Promise<void>;
|
|
57
|
+
terminateAllRuntimes(): Promise<PromiseSettledResult<void>[]>;
|
|
58
|
+
createSnapshot(podName: string, name: string, description: string, stop?: boolean): Promise<CodeSandboxSnapshotDTO>;
|
|
59
|
+
listSnapshots(): Promise<CodeSandboxSnapshotDTO[]>;
|
|
60
|
+
getSnapshot(id: string): Promise<CodeSandboxSnapshotDTO>;
|
|
61
|
+
deleteSnapshot(id: string): Promise<void>;
|
|
62
|
+
checkRuntimesHealth(): Promise<HealthCheck>;
|
|
63
|
+
};
|
|
64
|
+
} & typeof DatalayerCoreClient;
|
|
65
|
+
/**
|
|
66
|
+
* Full Datalayer client for agent runtimes: identity/plans (from core) plus
|
|
67
|
+
* runtime and workspace/content operations.
|
|
68
|
+
*
|
|
69
|
+
* @example
|
|
70
|
+
* ```typescript
|
|
71
|
+
* const client = new AgentRuntimesClient({ token: 'your-token' });
|
|
72
|
+
* const user = await client.whoami();
|
|
73
|
+
* const runtime = await client.createRuntime('env', 'notebook', 'name', 10);
|
|
74
|
+
* ```
|
|
75
|
+
*/
|
|
76
|
+
export declare class AgentRuntimesClient extends AgentRuntimesClientWithMixins {
|
|
77
|
+
/**
|
|
78
|
+
* Create an AgentRuntimesClient instance.
|
|
79
|
+
*
|
|
80
|
+
* @param config - Client configuration options.
|
|
81
|
+
*/
|
|
82
|
+
constructor(config: DatalayerClientConfig);
|
|
83
|
+
}
|
|
84
|
+
export interface AgentRuntimesClient extends DatalayerCoreClient {
|
|
85
|
+
listEnvironments(): Promise<EnvironmentDTO[]>;
|
|
86
|
+
ensureRuntime(environmentName?: string, creditsLimit?: number, waitForReady?: boolean, maxWaitTime?: number, reuseExisting?: boolean, snapshotId?: string): Promise<RuntimeDTO>;
|
|
87
|
+
createRuntime(environmentName: string, type: 'notebook' | 'terminal' | 'job', givenName: string, minutesLimit: number, fromSnapshotId?: string): Promise<RuntimeDTO>;
|
|
88
|
+
listRuntimes(): Promise<RuntimeDTO[]>;
|
|
89
|
+
getRuntime(podName: string): Promise<RuntimeDTO>;
|
|
90
|
+
deleteRuntime(podName: string): Promise<void>;
|
|
91
|
+
terminateAllRuntimes(): Promise<PromiseSettledResult<void>[]>;
|
|
92
|
+
createSnapshot(podName: string, name: string, description: string, stop?: boolean): Promise<CodeSandboxSnapshotDTO>;
|
|
93
|
+
listSnapshots(): Promise<CodeSandboxSnapshotDTO[]>;
|
|
94
|
+
getSnapshot(id: string): Promise<CodeSandboxSnapshotDTO>;
|
|
95
|
+
deleteSnapshot(id: string): Promise<void>;
|
|
96
|
+
checkRuntimesHealth(): Promise<HealthCheck>;
|
|
97
|
+
getMySpaces(): Promise<SpaceDTO[]>;
|
|
98
|
+
createSpace(name: string, description: string, variant: string, spaceHandle: string, organizationId: string, seedSpaceId: string, isPublic: boolean): Promise<SpaceDTO>;
|
|
99
|
+
createNotebook(spaceId: string, name: string, description: string, file?: File | Blob): Promise<NotebookDTO>;
|
|
100
|
+
getNotebook(id: string): Promise<NotebookDTO>;
|
|
101
|
+
updateNotebook(id: string, name?: string, description?: string): Promise<NotebookDTO>;
|
|
102
|
+
createLexical(spaceId: string, name: string, description: string, file?: File | Blob): Promise<LexicalDTO>;
|
|
103
|
+
getLexical(id: string): Promise<LexicalDTO>;
|
|
104
|
+
updateLexical(id: string, name?: string, description?: string): Promise<LexicalDTO>;
|
|
105
|
+
getSpaceItems(spaceId: string): Promise<(NotebookDTO | LexicalDTO)[]>;
|
|
106
|
+
getSpaceItem(itemId: string): Promise<NotebookDTO | LexicalDTO>;
|
|
107
|
+
deleteSpaceItem(itemId: string): Promise<void>;
|
|
108
|
+
getCollaborationSessionId(documentId: string): Promise<string>;
|
|
109
|
+
getContent(itemId: string): Promise<any>;
|
|
110
|
+
checkSpacerHealth(): Promise<HealthCheck>;
|
|
111
|
+
getSpace(uid: string): Promise<SpaceDTO>;
|
|
112
|
+
updateSpace(uid: string, data: UpdateSpaceRequest): Promise<SpaceDTO>;
|
|
113
|
+
updateUserSpace(uid: string, userId: string, data: UpdateSpaceRequest): Promise<SpaceDTO>;
|
|
114
|
+
deleteSpace(uid: string): Promise<void>;
|
|
115
|
+
makeSpacePublic(uid: string): Promise<SpaceDTO>;
|
|
116
|
+
makeSpacePrivate(uid: string): Promise<SpaceDTO>;
|
|
117
|
+
exportSpace(uid: string): Promise<any>;
|
|
118
|
+
cloneNotebook(id: string): Promise<NotebookDTO>;
|
|
119
|
+
cloneLexical(id: string): Promise<LexicalDTO>;
|
|
120
|
+
getProjects(): Promise<ProjectDTO[]>;
|
|
121
|
+
getProject(uid: string): Promise<ProjectDTO>;
|
|
122
|
+
createProject(name: string, description?: string): Promise<ProjectDTO>;
|
|
123
|
+
updateProject(uid: string, data: UpdateSpaceRequest): Promise<ProjectDTO>;
|
|
124
|
+
renameProject(uid: string, newName: string, description?: string): Promise<ProjectDTO>;
|
|
125
|
+
getProjectDefaultItems(uid: string): Promise<ProjectDefaultItems>;
|
|
126
|
+
}
|
|
127
|
+
export {};
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright (c) 2025-2026 Datalayer, Inc.
|
|
3
|
+
* Distributed under the terms of the Modified BSD License.
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* Agent Runtimes client: extends the core Datalayer client (IAM / plans) with
|
|
7
|
+
* runtime and workspace/content (Spacer) capabilities.
|
|
8
|
+
*
|
|
9
|
+
* @module client/AgentRuntimesClient
|
|
10
|
+
*/
|
|
11
|
+
import { DatalayerCoreClient, } from '@datalayer/core/lib/client';
|
|
12
|
+
import { RuntimesMixin } from './mixins/RuntimesMixin';
|
|
13
|
+
import { SpacerMixin } from './mixins/SpacerMixin';
|
|
14
|
+
// Apply the runtime + content mixins on top of the core client.
|
|
15
|
+
const AgentRuntimesClientWithMixins = SpacerMixin(RuntimesMixin(DatalayerCoreClient));
|
|
16
|
+
/**
|
|
17
|
+
* Full Datalayer client for agent runtimes: identity/plans (from core) plus
|
|
18
|
+
* runtime and workspace/content operations.
|
|
19
|
+
*
|
|
20
|
+
* @example
|
|
21
|
+
* ```typescript
|
|
22
|
+
* const client = new AgentRuntimesClient({ token: 'your-token' });
|
|
23
|
+
* const user = await client.whoami();
|
|
24
|
+
* const runtime = await client.createRuntime('env', 'notebook', 'name', 10);
|
|
25
|
+
* ```
|
|
26
|
+
*/
|
|
27
|
+
export class AgentRuntimesClient extends AgentRuntimesClientWithMixins {
|
|
28
|
+
/**
|
|
29
|
+
* Create an AgentRuntimesClient instance.
|
|
30
|
+
*
|
|
31
|
+
* @param config - Client configuration options.
|
|
32
|
+
*/
|
|
33
|
+
constructor(config) {
|
|
34
|
+
super(config);
|
|
35
|
+
}
|
|
36
|
+
}
|
|
@@ -22,7 +22,7 @@ export function AgentsMixin(Base) {
|
|
|
22
22
|
*/
|
|
23
23
|
async getRunningAgents() {
|
|
24
24
|
const token = this.getToken();
|
|
25
|
-
const baseUrl = this.
|
|
25
|
+
const baseUrl = this.getIamUrl();
|
|
26
26
|
return agents.getRunningAgents(token, baseUrl);
|
|
27
27
|
}
|
|
28
28
|
/**
|
|
@@ -33,7 +33,7 @@ export function AgentsMixin(Base) {
|
|
|
33
33
|
*/
|
|
34
34
|
async getAgentStatus(podName, agentId) {
|
|
35
35
|
const token = this.getToken();
|
|
36
|
-
const baseUrl = this.
|
|
36
|
+
const baseUrl = this.getIamUrl();
|
|
37
37
|
return agents.getAgentStatus(token, podName, agentId, baseUrl);
|
|
38
38
|
}
|
|
39
39
|
/**
|
|
@@ -42,7 +42,7 @@ export function AgentsMixin(Base) {
|
|
|
42
42
|
*/
|
|
43
43
|
async pauseAgent(podName) {
|
|
44
44
|
const token = this.getToken();
|
|
45
|
-
const baseUrl = this.
|
|
45
|
+
const baseUrl = this.getIamUrl();
|
|
46
46
|
return agents.pauseAgent(token, podName, baseUrl);
|
|
47
47
|
}
|
|
48
48
|
/**
|
|
@@ -51,7 +51,7 @@ export function AgentsMixin(Base) {
|
|
|
51
51
|
*/
|
|
52
52
|
async resumeAgent(podName) {
|
|
53
53
|
const token = this.getToken();
|
|
54
|
-
const baseUrl = this.
|
|
54
|
+
const baseUrl = this.getIamUrl();
|
|
55
55
|
return agents.resumeAgent(token, podName, baseUrl);
|
|
56
56
|
}
|
|
57
57
|
/**
|
|
@@ -62,7 +62,7 @@ export function AgentsMixin(Base) {
|
|
|
62
62
|
*/
|
|
63
63
|
async getAgentCheckpoints(podName, agentId) {
|
|
64
64
|
const token = this.getToken();
|
|
65
|
-
const baseUrl = this.
|
|
65
|
+
const baseUrl = this.getIamUrl();
|
|
66
66
|
return agents.getAgentCheckpoints(token, podName, agentId, baseUrl);
|
|
67
67
|
}
|
|
68
68
|
/**
|
|
@@ -73,7 +73,7 @@ export function AgentsMixin(Base) {
|
|
|
73
73
|
*/
|
|
74
74
|
async getAgentUsage(podName, agentId) {
|
|
75
75
|
const token = this.getToken();
|
|
76
|
-
const baseUrl = this.
|
|
76
|
+
const baseUrl = this.getIamUrl();
|
|
77
77
|
return agents.getAgentUsage(token, podName, agentId, baseUrl);
|
|
78
78
|
}
|
|
79
79
|
// ========================================================================
|
|
@@ -95,7 +95,7 @@ export function AgentsMixin(Base) {
|
|
|
95
95
|
*/
|
|
96
96
|
async getNotifications(filters) {
|
|
97
97
|
const token = this.getToken();
|
|
98
|
-
const baseUrl = this.
|
|
98
|
+
const baseUrl = this.getIamUrl();
|
|
99
99
|
return notifications.getNotifications(token, filters, baseUrl);
|
|
100
100
|
}
|
|
101
101
|
/**
|
|
@@ -104,7 +104,7 @@ export function AgentsMixin(Base) {
|
|
|
104
104
|
*/
|
|
105
105
|
async markNotificationRead(notificationId) {
|
|
106
106
|
const token = this.getToken();
|
|
107
|
-
const baseUrl = this.
|
|
107
|
+
const baseUrl = this.getIamUrl();
|
|
108
108
|
return notifications.markNotificationRead(token, notificationId, baseUrl);
|
|
109
109
|
}
|
|
110
110
|
/**
|
|
@@ -112,7 +112,7 @@ export function AgentsMixin(Base) {
|
|
|
112
112
|
*/
|
|
113
113
|
async markAllNotificationsRead() {
|
|
114
114
|
const token = this.getToken();
|
|
115
|
-
const baseUrl = this.
|
|
115
|
+
const baseUrl = this.getIamUrl();
|
|
116
116
|
return notifications.markAllRead(token, undefined, baseUrl);
|
|
117
117
|
}
|
|
118
118
|
// ========================================================================
|
|
@@ -125,7 +125,7 @@ export function AgentsMixin(Base) {
|
|
|
125
125
|
*/
|
|
126
126
|
async createEvent(data) {
|
|
127
127
|
const token = this.getToken();
|
|
128
|
-
const baseUrl = this.
|
|
128
|
+
const baseUrl = this.getIamUrl();
|
|
129
129
|
return events.createEvent(token, data, baseUrl);
|
|
130
130
|
}
|
|
131
131
|
/**
|
|
@@ -135,7 +135,7 @@ export function AgentsMixin(Base) {
|
|
|
135
135
|
*/
|
|
136
136
|
async listEvents(agentId, params = {}) {
|
|
137
137
|
const token = this.getToken();
|
|
138
|
-
const baseUrl = this.
|
|
138
|
+
const baseUrl = this.getIamUrl();
|
|
139
139
|
return events.listEvents(token, agentId, params, baseUrl);
|
|
140
140
|
}
|
|
141
141
|
/**
|
|
@@ -145,7 +145,7 @@ export function AgentsMixin(Base) {
|
|
|
145
145
|
*/
|
|
146
146
|
async getEvent(agentId, eventId) {
|
|
147
147
|
const token = this.getToken();
|
|
148
|
-
const baseUrl = this.
|
|
148
|
+
const baseUrl = this.getIamUrl();
|
|
149
149
|
return events.getEvent(token, agentId, eventId, baseUrl);
|
|
150
150
|
}
|
|
151
151
|
/**
|
|
@@ -156,7 +156,7 @@ export function AgentsMixin(Base) {
|
|
|
156
156
|
*/
|
|
157
157
|
async updateEvent(agentId, eventId, data) {
|
|
158
158
|
const token = this.getToken();
|
|
159
|
-
const baseUrl = this.
|
|
159
|
+
const baseUrl = this.getIamUrl();
|
|
160
160
|
return events.updateEvent(token, agentId, eventId, data, baseUrl);
|
|
161
161
|
}
|
|
162
162
|
// ========================================================================
|
|
@@ -169,7 +169,7 @@ export function AgentsMixin(Base) {
|
|
|
169
169
|
*/
|
|
170
170
|
async getAgentOutputs(agentId) {
|
|
171
171
|
const token = this.getToken();
|
|
172
|
-
const baseUrl = this.
|
|
172
|
+
const baseUrl = this.getIamUrl();
|
|
173
173
|
return output.getAgentOutputs(token, agentId, baseUrl);
|
|
174
174
|
}
|
|
175
175
|
/**
|
|
@@ -180,7 +180,7 @@ export function AgentsMixin(Base) {
|
|
|
180
180
|
*/
|
|
181
181
|
async getAgentOutput(agentId, outputId) {
|
|
182
182
|
const token = this.getToken();
|
|
183
|
-
const baseUrl = this.
|
|
183
|
+
const baseUrl = this.getIamUrl();
|
|
184
184
|
return output.getAgentOutput(token, agentId, outputId, baseUrl);
|
|
185
185
|
}
|
|
186
186
|
/**
|
|
@@ -192,7 +192,7 @@ export function AgentsMixin(Base) {
|
|
|
192
192
|
*/
|
|
193
193
|
async generateAgentOutput(agentId, format, options) {
|
|
194
194
|
const token = this.getToken();
|
|
195
|
-
const baseUrl = this.
|
|
195
|
+
const baseUrl = this.getIamUrl();
|
|
196
196
|
return output.generateAgentOutput(token, agentId, format, options, baseUrl);
|
|
197
197
|
}
|
|
198
198
|
// ========================================================================
|
|
@@ -206,7 +206,7 @@ export function AgentsMixin(Base) {
|
|
|
206
206
|
*/
|
|
207
207
|
async runEvals(agentId, request) {
|
|
208
208
|
const token = this.getToken();
|
|
209
|
-
const baseUrl = this.
|
|
209
|
+
const baseUrl = this.getIamUrl();
|
|
210
210
|
return evals.runEvals(token, agentId, request, baseUrl);
|
|
211
211
|
}
|
|
212
212
|
/**
|
|
@@ -216,7 +216,7 @@ export function AgentsMixin(Base) {
|
|
|
216
216
|
*/
|
|
217
217
|
async listEvals(agentId) {
|
|
218
218
|
const token = this.getToken();
|
|
219
|
-
const baseUrl = this.
|
|
219
|
+
const baseUrl = this.getIamUrl();
|
|
220
220
|
return evals.listEvals(token, agentId, baseUrl);
|
|
221
221
|
}
|
|
222
222
|
/**
|
|
@@ -227,7 +227,7 @@ export function AgentsMixin(Base) {
|
|
|
227
227
|
*/
|
|
228
228
|
async getEval(agentId, evalId) {
|
|
229
229
|
const token = this.getToken();
|
|
230
|
-
const baseUrl = this.
|
|
230
|
+
const baseUrl = this.getIamUrl();
|
|
231
231
|
return evals.getEval(token, agentId, evalId, baseUrl);
|
|
232
232
|
}
|
|
233
233
|
// ========================================================================
|
|
@@ -240,7 +240,7 @@ export function AgentsMixin(Base) {
|
|
|
240
240
|
*/
|
|
241
241
|
async getContextUsage(agentId) {
|
|
242
242
|
const token = this.getToken();
|
|
243
|
-
const baseUrl = this.
|
|
243
|
+
const baseUrl = this.getIamUrl();
|
|
244
244
|
return context.getContextUsage(token, agentId, baseUrl);
|
|
245
245
|
}
|
|
246
246
|
/**
|
|
@@ -250,7 +250,7 @@ export function AgentsMixin(Base) {
|
|
|
250
250
|
*/
|
|
251
251
|
async getCostUsage(agentId) {
|
|
252
252
|
const token = this.getToken();
|
|
253
|
-
const baseUrl = this.
|
|
253
|
+
const baseUrl = this.getIamUrl();
|
|
254
254
|
return context.getCostUsage(token, agentId, baseUrl);
|
|
255
255
|
}
|
|
256
256
|
// ========================================================================
|
|
@@ -328,14 +328,14 @@ export function AgentsMixin(Base) {
|
|
|
328
328
|
*/
|
|
329
329
|
async createAgentRuntime(data) {
|
|
330
330
|
const token = this.getToken();
|
|
331
|
-
const
|
|
331
|
+
const runtimesUrl = this.getRuntimesUrl();
|
|
332
332
|
const normalizedVolumeUids = Array.isArray(data.volumeUids)
|
|
333
333
|
? data.volumeUids.map(uid => String(uid || '').trim()).filter(Boolean)
|
|
334
334
|
: data.volumeUid
|
|
335
335
|
? [String(data.volumeUid).trim()]
|
|
336
336
|
: [];
|
|
337
337
|
return requestDatalayerAPI({
|
|
338
|
-
url: `${
|
|
338
|
+
url: `${runtimesUrl}/api/runtimes/v1/runtimes`,
|
|
339
339
|
method: 'POST',
|
|
340
340
|
token,
|
|
341
341
|
body: {
|
|
@@ -348,11 +348,11 @@ export function AgentsMixin(Base) {
|
|
|
348
348
|
agent_spec_id: data.agentSpecId || undefined,
|
|
349
349
|
agent_spec: data.agentSpec || undefined,
|
|
350
350
|
user_account_handle: data.userAccountHandle || undefined,
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
351
|
+
billing_entity_uid: data.billingEntityUid || undefined,
|
|
352
|
+
billing_entity_type: data.billingEntityType || undefined,
|
|
353
|
+
billing_entity_handle: data.billingEntityHandle || undefined,
|
|
354
|
+
billing_source_organization_uid: data.billingSourceOrganizationUid || undefined,
|
|
355
|
+
billing_source_organization_handle: data.billingSourceOrganizationHandle || undefined,
|
|
356
356
|
mount_home_folder: data.mountHomeFolder ?? false,
|
|
357
357
|
volume_uids: normalizedVolumeUids.length > 0 ? normalizedVolumeUids : undefined,
|
|
358
358
|
volume_uid: normalizedVolumeUids[0] || data.volumeUid || undefined,
|
|
@@ -79,7 +79,7 @@ export interface AgentsSdkLike {
|
|
|
79
79
|
* import { AgentsMixin, SdkAgentRuntimesClient } from '@datalayer/agent-runtimes';
|
|
80
80
|
*
|
|
81
81
|
* const ClientWithAgents = AgentsMixin(DatalayerClient);
|
|
82
|
-
* const sdk = new ClientWithAgents({
|
|
82
|
+
* const sdk = new ClientWithAgents({ iamUrl, runtimesUrl, spacerUrl });
|
|
83
83
|
* const client = new SdkAgentRuntimesClient(sdk);
|
|
84
84
|
* ```
|
|
85
85
|
*/
|