@datalayer/agent-runtimes 1.0.9 → 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 +468 -40
- 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.d.ts +4 -4
- package/lib/client/AgentsMixin.js +35 -35
- 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/ToolApprovalCard.js +13 -3
- 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/config/AgentConfiguration.d.ts +2 -2
- package/lib/config/index.d.ts +1 -1
- 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 +21 -22
- package/lib/examples/AgentCodemodeExample.js +3 -3
- package/lib/examples/AgentEvalsExample.js +8 -8
- package/lib/examples/AgentGuardrailsExample.js +22 -17
- package/lib/examples/AgentHooksExample.js +16 -57
- package/lib/examples/AgentInferenceProviderExample.js +8 -8
- package/lib/examples/AgentLoopExample.d.ts +10 -0
- package/lib/examples/AgentLoopExample.js +304 -0
- package/lib/examples/AgentMCPExample.js +9 -9
- package/lib/examples/AgentMemoryExample.js +6 -6
- package/lib/examples/AgentMonitoringExample.js +116 -46
- package/lib/examples/AgentNotificationsExample.js +6 -6
- package/lib/examples/AgentOtelExample.d.ts +3 -3
- package/lib/examples/AgentOtelExample.js +20 -15
- package/lib/examples/AgentOutputsExample.js +8 -8
- package/lib/examples/AgentParametersExample.js +24 -36
- package/lib/examples/AgentSandboxExample.js +7 -7
- package/lib/examples/AgentSkillsExample.js +9 -9
- package/lib/examples/AgentSubagentsExample.js +6 -6
- package/lib/examples/AgentToolApprovalsExample.js +37 -11
- package/lib/examples/AgentTriggersExample.js +12 -12
- package/lib/examples/AgentspecsExample.js +63 -41
- package/lib/examples/ChatCustomExample.js +23 -77
- package/lib/examples/ChatExample.js +15 -46
- 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 +188 -29
- package/lib/hooks/useAgentsCatalog.d.ts +3 -3
- package/lib/hooks/useAgentsCatalog.js +4 -4
- 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 +38 -28
- 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 +14 -6
- package/lib/hooks/useToolApprovals.js +20 -1
- package/lib/index.d.ts +2 -1
- 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 +95 -50
- package/lib/specs/agents/agents.js +4037 -1669
- package/lib/specs/agents/index.d.ts +5 -5
- package/lib/specs/agents/index.js +9 -9
- 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 +6 -6
- package/lib/types/agentspecs.d.ts +8 -4
- 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/teams.d.ts +2 -2
- 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/generate_agents.py +96 -61
- package/scripts/codegen/generate_loops.py +443 -0
- package/scripts/codegen/generate_teams.py +4 -4
- package/lib/examples/A2UiComponentGalleryExample.d.ts +0 -3
- package/lib/examples/A2UiComponentGalleryExample.js +0 -361
- package/scripts/codegen/__pycache__/generate_agents.cpython-313.pyc +0 -0
- package/scripts/codegen/__pycache__/generate_benchmarks.cpython-313.pyc +0 -0
- package/scripts/codegen/__pycache__/generate_evals.cpython-313.pyc +0 -0
- package/scripts/codegen/__pycache__/generate_events.cpython-313.pyc +0 -0
- /package/lib/{agent-lexical-main.d.ts → agent-document-main.d.ts} +0 -0
|
@@ -8,7 +8,7 @@ import * as events from '../api/events';
|
|
|
8
8
|
import * as output from '../api/output';
|
|
9
9
|
import * as evals from '../api/evals';
|
|
10
10
|
import * as context from '../api/context';
|
|
11
|
-
import * as
|
|
11
|
+
import * as agentspecs from '../specs/agents';
|
|
12
12
|
import { requestDatalayerAPI } from '@datalayer/core/lib/api/DatalayerApi';
|
|
13
13
|
/** Agents mixin providing durable agent management. */
|
|
14
14
|
export function AgentsMixin(Base) {
|
|
@@ -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
|
// ========================================================================
|
|
@@ -261,24 +261,24 @@ export function AgentsMixin(Base) {
|
|
|
261
261
|
* @param agentSpecId - Agent spec identifier.
|
|
262
262
|
* @returns The agent spec, or undefined if not found.
|
|
263
263
|
*/
|
|
264
|
-
|
|
265
|
-
return
|
|
264
|
+
getAgentspec(agentSpecId) {
|
|
265
|
+
return agentspecs.getAgentspecs(agentSpecId);
|
|
266
266
|
}
|
|
267
267
|
/**
|
|
268
268
|
* List all available agent specifications.
|
|
269
269
|
* @param prefix - If provided, only return specs whose ID starts with this prefix.
|
|
270
270
|
* @returns Array of agent specifications.
|
|
271
271
|
*/
|
|
272
|
-
|
|
273
|
-
return
|
|
272
|
+
listAgentspecs(prefix) {
|
|
273
|
+
return agentspecs.listAgentspecs(prefix);
|
|
274
274
|
}
|
|
275
275
|
/**
|
|
276
276
|
* Get required environment variables for an agent spec.
|
|
277
277
|
* @param spec - The agent specification.
|
|
278
278
|
* @returns Deduplicated array of required environment variable names.
|
|
279
279
|
*/
|
|
280
|
-
|
|
281
|
-
return
|
|
280
|
+
getAgentspecRequiredEnvVars(spec) {
|
|
281
|
+
return agentspecs.getAgentspecRequiredEnvVars(spec);
|
|
282
282
|
}
|
|
283
283
|
// ========================================================================
|
|
284
284
|
// Project Agent Assignment
|
|
@@ -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
|
*/
|
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
* import { AgentsMixin, SdkAgentRuntimesClient } from '@datalayer/agent-runtimes';
|
|
14
14
|
*
|
|
15
15
|
* const ClientWithAgents = AgentsMixin(DatalayerClient);
|
|
16
|
-
* const sdk = new ClientWithAgents({
|
|
16
|
+
* const sdk = new ClientWithAgents({ iamUrl, runtimesUrl, spacerUrl });
|
|
17
17
|
* const client = new SdkAgentRuntimesClient(sdk);
|
|
18
18
|
* ```
|
|
19
19
|
*/
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
import type { Constructor } from '@datalayer/core/lib/client/utils/mixins';
|
|
2
|
+
import { EnvironmentDTO } from '../../models/EnvironmentDTO';
|
|
3
|
+
import { RuntimeDTO } from '../../models/RuntimeDTO';
|
|
4
|
+
import { CodeSandboxSnapshotDTO } from '../../models/CodeSandboxSnapshotDTO';
|
|
5
|
+
import { HealthCheck } from '@datalayer/core/lib/models/HealthCheck';
|
|
6
|
+
/** Options for ensuring a runtime is available. */
|
|
7
|
+
export interface EnsureRuntimeOptions {
|
|
8
|
+
/** Name of the environment to use */
|
|
9
|
+
environmentName?: string;
|
|
10
|
+
/** Maximum credits to allocate */
|
|
11
|
+
creditsLimit?: number;
|
|
12
|
+
/** Whether to wait for runtime to be ready */
|
|
13
|
+
waitForReady?: boolean;
|
|
14
|
+
/** Maximum time to wait for ready state (ms) */
|
|
15
|
+
maxWaitTime?: number;
|
|
16
|
+
/** Whether to reuse existing suitable runtime */
|
|
17
|
+
reuseExisting?: boolean;
|
|
18
|
+
/** Snapshot ID to create runtime from */
|
|
19
|
+
snapshotId?: string;
|
|
20
|
+
}
|
|
21
|
+
/** Runtimes mixin providing computational environment and runtime management. */
|
|
22
|
+
export declare function RuntimesMixin<TBase extends Constructor>(Base: TBase): {
|
|
23
|
+
new (...args: any[]): {
|
|
24
|
+
_extractRuntimePodName(runtimePodNameOrInstance: string | RuntimeDTO): string;
|
|
25
|
+
_extractSnapshotId(snapshotIdOrInstance: string | CodeSandboxSnapshotDTO): string;
|
|
26
|
+
/**
|
|
27
|
+
* List all available computational environments.
|
|
28
|
+
* @returns Array of Environment model instances
|
|
29
|
+
*/
|
|
30
|
+
listEnvironments(): Promise<EnvironmentDTO[]>;
|
|
31
|
+
/**
|
|
32
|
+
* Create a new computational runtime.
|
|
33
|
+
* @param environmentName - Name of the environment to use
|
|
34
|
+
* @param type - Type of runtime
|
|
35
|
+
* @param givenName - User-friendly name for the runtime
|
|
36
|
+
* @param creditsLimit - Credits limit
|
|
37
|
+
* @returns Created runtime
|
|
38
|
+
*/
|
|
39
|
+
createRuntime(environmentName: string, type: "notebook" | "terminal" | "job", givenName: string, minutesLimit: number, fromSnapshotId?: string): Promise<RuntimeDTO>;
|
|
40
|
+
/**
|
|
41
|
+
* List all runtimes.
|
|
42
|
+
* @returns Array of runtimes
|
|
43
|
+
*/
|
|
44
|
+
listRuntimes(): Promise<RuntimeDTO[]>;
|
|
45
|
+
/**
|
|
46
|
+
* Get details for a specific runtime by pod name.
|
|
47
|
+
* @param podName - Runtime pod name
|
|
48
|
+
* @returns Runtime details
|
|
49
|
+
*/
|
|
50
|
+
getRuntime(podName: string): Promise<RuntimeDTO>;
|
|
51
|
+
/**
|
|
52
|
+
* Delete a runtime permanently.
|
|
53
|
+
* @param podName - Runtime pod name
|
|
54
|
+
*/
|
|
55
|
+
deleteRuntime(podName: string): Promise<void>;
|
|
56
|
+
/**
|
|
57
|
+
* Terminate all runtimes.
|
|
58
|
+
* Lists all runtimes and deletes them in parallel.
|
|
59
|
+
* @returns Array of results for each deletion (fulfilled or rejected)
|
|
60
|
+
*/
|
|
61
|
+
terminateAllRuntimes(): Promise<PromiseSettledResult<void>[]>;
|
|
62
|
+
/**
|
|
63
|
+
* Create a snapshot of a runtime.
|
|
64
|
+
* @param podName - Pod name of the runtime to snapshot
|
|
65
|
+
* @param name - Name for the snapshot
|
|
66
|
+
* @param description - Description of the snapshot
|
|
67
|
+
* @param stop - Whether to stop the runtime after creating snapshot (defaults to false)
|
|
68
|
+
* @returns Created snapshot
|
|
69
|
+
*/
|
|
70
|
+
createSnapshot(podName: string, name: string, description: string, stop?: boolean): Promise<CodeSandboxSnapshotDTO>;
|
|
71
|
+
/**
|
|
72
|
+
* List all code sandbox snapshots.
|
|
73
|
+
* @returns Array of snapshots
|
|
74
|
+
*/
|
|
75
|
+
listSnapshots(): Promise<CodeSandboxSnapshotDTO[]>;
|
|
76
|
+
/**
|
|
77
|
+
* Get details for a specific snapshot by ID.
|
|
78
|
+
* @param id - Snapshot ID
|
|
79
|
+
* @returns Snapshot details
|
|
80
|
+
*/
|
|
81
|
+
getSnapshot(id: string): Promise<CodeSandboxSnapshotDTO>;
|
|
82
|
+
/**
|
|
83
|
+
* Delete a snapshot permanently.
|
|
84
|
+
* @param id - Snapshot ID
|
|
85
|
+
*/
|
|
86
|
+
deleteSnapshot(id: string): Promise<void>;
|
|
87
|
+
/**
|
|
88
|
+
* Check the health status of the Runtimes service.
|
|
89
|
+
* @returns Health check result with status and response time
|
|
90
|
+
*/
|
|
91
|
+
checkRuntimesHealth(): Promise<HealthCheck>;
|
|
92
|
+
};
|
|
93
|
+
} & TBase;
|
|
@@ -0,0 +1,229 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright (c) 2025-2026 Datalayer, Inc.
|
|
3
|
+
* Distributed under the terms of the Modified BSD License.
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* Runtimes mixin for managing computational environments and runtime instances.
|
|
7
|
+
* @module client/mixins/RuntimesMixin
|
|
8
|
+
*/
|
|
9
|
+
import * as environments from '../../api/runtimes/environments';
|
|
10
|
+
import * as runtimes from '../../api/runtimes/runtimes';
|
|
11
|
+
import * as snapshots from '../../api/runtimes/snapshots';
|
|
12
|
+
import { EnvironmentDTO } from '../../models/EnvironmentDTO';
|
|
13
|
+
import { RuntimeDTO } from '../../models/RuntimeDTO';
|
|
14
|
+
import { CodeSandboxSnapshotDTO } from '../../models/CodeSandboxSnapshotDTO';
|
|
15
|
+
import { HealthCheck } from '@datalayer/core/lib/models/HealthCheck';
|
|
16
|
+
/** Runtimes mixin providing computational environment and runtime management. */
|
|
17
|
+
export function RuntimesMixin(Base) {
|
|
18
|
+
return class extends Base {
|
|
19
|
+
// ========================================================================
|
|
20
|
+
// Helper Functions
|
|
21
|
+
// ========================================================================
|
|
22
|
+
_extractRuntimePodName(runtimePodNameOrInstance) {
|
|
23
|
+
return typeof runtimePodNameOrInstance === 'string'
|
|
24
|
+
? runtimePodNameOrInstance
|
|
25
|
+
: runtimePodNameOrInstance.podName;
|
|
26
|
+
}
|
|
27
|
+
_extractSnapshotId(snapshotIdOrInstance) {
|
|
28
|
+
return typeof snapshotIdOrInstance === 'string'
|
|
29
|
+
? snapshotIdOrInstance
|
|
30
|
+
: snapshotIdOrInstance.uid;
|
|
31
|
+
}
|
|
32
|
+
// ========================================================================
|
|
33
|
+
// Environments
|
|
34
|
+
// ========================================================================
|
|
35
|
+
/**
|
|
36
|
+
* List all available computational environments.
|
|
37
|
+
* @returns Array of Environment model instances
|
|
38
|
+
*/
|
|
39
|
+
async listEnvironments() {
|
|
40
|
+
const token = this.getToken();
|
|
41
|
+
const runtimesUrl = this.getRuntimesUrl();
|
|
42
|
+
const response = await environments.listEnvironments(token, runtimesUrl);
|
|
43
|
+
// Save for later use after first call
|
|
44
|
+
this.environments = response.environments.map(env => new EnvironmentDTO(env, this));
|
|
45
|
+
return this.environments;
|
|
46
|
+
}
|
|
47
|
+
// ========================================================================
|
|
48
|
+
// Runtimes
|
|
49
|
+
// ========================================================================
|
|
50
|
+
/**
|
|
51
|
+
* Create a new computational runtime.
|
|
52
|
+
* @param environmentName - Name of the environment to use
|
|
53
|
+
* @param type - Type of runtime
|
|
54
|
+
* @param givenName - User-friendly name for the runtime
|
|
55
|
+
* @param creditsLimit - Credits limit
|
|
56
|
+
* @returns Created runtime
|
|
57
|
+
*/
|
|
58
|
+
async createRuntime(environmentName, type, givenName, minutesLimit, fromSnapshotId) {
|
|
59
|
+
if (!this.environments) {
|
|
60
|
+
await this.listEnvironments();
|
|
61
|
+
}
|
|
62
|
+
if (this.environments) {
|
|
63
|
+
const env = this.environments.find((e) => e.name === environmentName);
|
|
64
|
+
if (!env) {
|
|
65
|
+
throw new Error(`Environment "${environmentName}" not found. Available environments: ${this.environments.map((e) => e.name).join(', ')}`);
|
|
66
|
+
}
|
|
67
|
+
else {
|
|
68
|
+
const token = this.getToken();
|
|
69
|
+
const runtimesUrl = this.getRuntimesUrl();
|
|
70
|
+
const creditsLimit = this.calculateCreditsFromMinutes(minutesLimit, env.burningRate);
|
|
71
|
+
const data = {
|
|
72
|
+
environment_name: environmentName,
|
|
73
|
+
type,
|
|
74
|
+
given_name: givenName,
|
|
75
|
+
credits_limit: creditsLimit,
|
|
76
|
+
from: fromSnapshotId,
|
|
77
|
+
};
|
|
78
|
+
const response = await runtimes.createRuntime(token, data, runtimesUrl);
|
|
79
|
+
return new RuntimeDTO(response.runtime, this);
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
else {
|
|
83
|
+
throw new Error('Environments not loaded');
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* List all runtimes.
|
|
88
|
+
* @returns Array of runtimes
|
|
89
|
+
*/
|
|
90
|
+
async listRuntimes() {
|
|
91
|
+
const token = this.getToken();
|
|
92
|
+
const runtimesUrl = this.getRuntimesUrl();
|
|
93
|
+
const response = await runtimes.listRuntimes(token, runtimesUrl);
|
|
94
|
+
return response.runtimes.map(r => new RuntimeDTO(r, this));
|
|
95
|
+
}
|
|
96
|
+
/**
|
|
97
|
+
* Get details for a specific runtime by pod name.
|
|
98
|
+
* @param podName - Runtime pod name
|
|
99
|
+
* @returns Runtime details
|
|
100
|
+
*/
|
|
101
|
+
async getRuntime(podName) {
|
|
102
|
+
const token = this.getToken();
|
|
103
|
+
const runtimesUrl = this.getRuntimesUrl();
|
|
104
|
+
const runtimeData = await runtimes.getRuntime(token, podName, runtimesUrl);
|
|
105
|
+
return new RuntimeDTO(runtimeData, this);
|
|
106
|
+
}
|
|
107
|
+
/**
|
|
108
|
+
* Delete a runtime permanently.
|
|
109
|
+
* @param podName - Runtime pod name
|
|
110
|
+
*/
|
|
111
|
+
async deleteRuntime(podName) {
|
|
112
|
+
const token = this.getToken();
|
|
113
|
+
const runtimesUrl = this.getRuntimesUrl();
|
|
114
|
+
await runtimes.deleteRuntime(token, podName, runtimesUrl);
|
|
115
|
+
}
|
|
116
|
+
/**
|
|
117
|
+
* Terminate all runtimes.
|
|
118
|
+
* Lists all runtimes and deletes them in parallel.
|
|
119
|
+
* @returns Array of results for each deletion (fulfilled or rejected)
|
|
120
|
+
*/
|
|
121
|
+
async terminateAllRuntimes() {
|
|
122
|
+
const token = this.getToken();
|
|
123
|
+
const runtimesUrl = this.getRuntimesUrl();
|
|
124
|
+
// List all runtimes
|
|
125
|
+
const response = await runtimes.listRuntimes(token, runtimesUrl);
|
|
126
|
+
// Delete all runtimes in parallel
|
|
127
|
+
const deletePromises = response.runtimes.map(runtime => runtimes.deleteRuntime(token, runtime.pod_name, runtimesUrl));
|
|
128
|
+
return Promise.allSettled(deletePromises);
|
|
129
|
+
}
|
|
130
|
+
// ========================================================================
|
|
131
|
+
// Snapshots
|
|
132
|
+
// ========================================================================
|
|
133
|
+
/**
|
|
134
|
+
* Create a snapshot of a runtime.
|
|
135
|
+
* @param podName - Pod name of the runtime to snapshot
|
|
136
|
+
* @param name - Name for the snapshot
|
|
137
|
+
* @param description - Description of the snapshot
|
|
138
|
+
* @param stop - Whether to stop the runtime after creating snapshot (defaults to false)
|
|
139
|
+
* @returns Created snapshot
|
|
140
|
+
*/
|
|
141
|
+
async createSnapshot(podName, name, description, stop = false) {
|
|
142
|
+
const token = this.getToken();
|
|
143
|
+
const runtimesUrl = this.getRuntimesUrl();
|
|
144
|
+
const data = {
|
|
145
|
+
pod_name: podName,
|
|
146
|
+
name,
|
|
147
|
+
description,
|
|
148
|
+
stop,
|
|
149
|
+
};
|
|
150
|
+
const response = await snapshots.createSnapshot(token, data, runtimesUrl);
|
|
151
|
+
return new CodeSandboxSnapshotDTO(response.snapshot, this);
|
|
152
|
+
}
|
|
153
|
+
/**
|
|
154
|
+
* List all code sandbox snapshots.
|
|
155
|
+
* @returns Array of snapshots
|
|
156
|
+
*/
|
|
157
|
+
async listSnapshots() {
|
|
158
|
+
const token = this.getToken();
|
|
159
|
+
const runtimesUrl = this.getRuntimesUrl();
|
|
160
|
+
const response = await snapshots.listSnapshots(token, runtimesUrl);
|
|
161
|
+
return response.snapshots.map(s => new CodeSandboxSnapshotDTO(s, this));
|
|
162
|
+
}
|
|
163
|
+
/**
|
|
164
|
+
* Get details for a specific snapshot by ID.
|
|
165
|
+
* @param id - Snapshot ID
|
|
166
|
+
* @returns Snapshot details
|
|
167
|
+
*/
|
|
168
|
+
async getSnapshot(id) {
|
|
169
|
+
const token = this.getToken();
|
|
170
|
+
const runtimesUrl = this.getRuntimesUrl();
|
|
171
|
+
const response = await snapshots.getSnapshot(token, id, runtimesUrl);
|
|
172
|
+
return new CodeSandboxSnapshotDTO(response.snapshot, this);
|
|
173
|
+
}
|
|
174
|
+
/**
|
|
175
|
+
* Delete a snapshot permanently.
|
|
176
|
+
* @param id - Snapshot ID
|
|
177
|
+
*/
|
|
178
|
+
async deleteSnapshot(id) {
|
|
179
|
+
const token = this.getToken();
|
|
180
|
+
const runtimesUrl = this.getRuntimesUrl();
|
|
181
|
+
await snapshots.deleteSnapshot(token, id, runtimesUrl);
|
|
182
|
+
}
|
|
183
|
+
// ========================================================================
|
|
184
|
+
// Service Health Checks
|
|
185
|
+
// ========================================================================
|
|
186
|
+
/**
|
|
187
|
+
* Check the health status of the Runtimes service.
|
|
188
|
+
* @returns Health check result with status and response time
|
|
189
|
+
*/
|
|
190
|
+
async checkRuntimesHealth() {
|
|
191
|
+
const startTime = Date.now();
|
|
192
|
+
const errors = [];
|
|
193
|
+
let status = 'unknown';
|
|
194
|
+
let healthy = false;
|
|
195
|
+
try {
|
|
196
|
+
// Test basic connectivity by listing environments (lightweight operation)
|
|
197
|
+
const environments = await this.listEnvironments();
|
|
198
|
+
const responseTime = Date.now() - startTime;
|
|
199
|
+
if (Array.isArray(environments)) {
|
|
200
|
+
healthy = true;
|
|
201
|
+
status = 'operational';
|
|
202
|
+
}
|
|
203
|
+
else {
|
|
204
|
+
status = 'degraded';
|
|
205
|
+
errors.push('Unexpected response format from environments endpoint');
|
|
206
|
+
}
|
|
207
|
+
return new HealthCheck({
|
|
208
|
+
healthy,
|
|
209
|
+
status,
|
|
210
|
+
responseTime,
|
|
211
|
+
errors,
|
|
212
|
+
timestamp: new Date(),
|
|
213
|
+
}, this);
|
|
214
|
+
}
|
|
215
|
+
catch (error) {
|
|
216
|
+
const responseTime = Date.now() - startTime;
|
|
217
|
+
status = 'down';
|
|
218
|
+
errors.push(`Service unreachable: ${error}`);
|
|
219
|
+
return new HealthCheck({
|
|
220
|
+
healthy: false,
|
|
221
|
+
status,
|
|
222
|
+
responseTime,
|
|
223
|
+
errors,
|
|
224
|
+
timestamp: new Date(),
|
|
225
|
+
}, this);
|
|
226
|
+
}
|
|
227
|
+
}
|
|
228
|
+
};
|
|
229
|
+
}
|