@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,86 @@
|
|
|
1
|
+
import { IContent } from './Content';
|
|
2
|
+
import { IItem } from './Item';
|
|
3
|
+
export type IEnvironment = IItem & {
|
|
4
|
+
type: 'environment';
|
|
5
|
+
};
|
|
6
|
+
export interface IResources {
|
|
7
|
+
cpu: string;
|
|
8
|
+
memory: string;
|
|
9
|
+
'nvidia.com/gpu'?: string;
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* Code snippet
|
|
13
|
+
*/
|
|
14
|
+
export interface ISnippet {
|
|
15
|
+
/**
|
|
16
|
+
* Snippet summary
|
|
17
|
+
*/
|
|
18
|
+
title: string;
|
|
19
|
+
/**
|
|
20
|
+
* Snippet long description
|
|
21
|
+
*/
|
|
22
|
+
description?: string;
|
|
23
|
+
/**
|
|
24
|
+
* Code snippet
|
|
25
|
+
*/
|
|
26
|
+
code: string;
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Datalayer environment
|
|
30
|
+
*/
|
|
31
|
+
export interface IDatalayerEnvironment {
|
|
32
|
+
/**
|
|
33
|
+
* Name
|
|
34
|
+
*/
|
|
35
|
+
name: string;
|
|
36
|
+
/**
|
|
37
|
+
* Title
|
|
38
|
+
*/
|
|
39
|
+
title: string;
|
|
40
|
+
/**
|
|
41
|
+
* Description
|
|
42
|
+
*/
|
|
43
|
+
description: string;
|
|
44
|
+
/**
|
|
45
|
+
* Icon key (e.g. ai-agent -> AiAgentIcon)
|
|
46
|
+
*/
|
|
47
|
+
icon?: string;
|
|
48
|
+
/**
|
|
49
|
+
* Execution language
|
|
50
|
+
*/
|
|
51
|
+
language: string;
|
|
52
|
+
/**
|
|
53
|
+
* Docker image
|
|
54
|
+
*/
|
|
55
|
+
dockerImage: string;
|
|
56
|
+
/**
|
|
57
|
+
* Example notebook URL
|
|
58
|
+
*/
|
|
59
|
+
example?: string;
|
|
60
|
+
/**
|
|
61
|
+
* Example code snippets
|
|
62
|
+
*/
|
|
63
|
+
snippets?: ISnippet[];
|
|
64
|
+
/**
|
|
65
|
+
* Associate kernel attributes
|
|
66
|
+
*/
|
|
67
|
+
runtime?: {
|
|
68
|
+
/**
|
|
69
|
+
* Proposed display name
|
|
70
|
+
*/
|
|
71
|
+
givenNameTemplate?: string;
|
|
72
|
+
};
|
|
73
|
+
/**
|
|
74
|
+
* Environment credits burning rate
|
|
75
|
+
*/
|
|
76
|
+
burning_rate: number;
|
|
77
|
+
/**
|
|
78
|
+
* Environment server resources
|
|
79
|
+
*/
|
|
80
|
+
resources?: IResources;
|
|
81
|
+
/**
|
|
82
|
+
* Environment contents.
|
|
83
|
+
*/
|
|
84
|
+
contents?: IContent[];
|
|
85
|
+
}
|
|
86
|
+
export default IEnvironment;
|
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Environment domain model for the Datalayer Client.
|
|
3
|
+
*
|
|
4
|
+
* @module models/EnvironmentDTO
|
|
5
|
+
*/
|
|
6
|
+
import type { AgentRuntimesClient as DatalayerClient } from '../client/AgentRuntimesClient';
|
|
7
|
+
/**
|
|
8
|
+
* Represents a computing environment available in the Datalayer platform.
|
|
9
|
+
* @interface EnvironmentData
|
|
10
|
+
*/
|
|
11
|
+
export interface EnvironmentData {
|
|
12
|
+
/** Human-readable title for the environment */
|
|
13
|
+
title: string;
|
|
14
|
+
/** Detailed description of the environment */
|
|
15
|
+
description: string;
|
|
16
|
+
/** Docker image used for this environment */
|
|
17
|
+
dockerImage: string;
|
|
18
|
+
/** Example usage or description */
|
|
19
|
+
example?: string;
|
|
20
|
+
/** Code snippets for this environment */
|
|
21
|
+
snippets?: any[];
|
|
22
|
+
/** Content mounts for this environment */
|
|
23
|
+
contents?: any[];
|
|
24
|
+
/** Kernel configuration */
|
|
25
|
+
runtime?: {
|
|
26
|
+
/** Template for kernel naming */
|
|
27
|
+
givenNameTemplate?: string;
|
|
28
|
+
};
|
|
29
|
+
/** Programming language (e.g., "python", "r") */
|
|
30
|
+
language: string;
|
|
31
|
+
/** Resource ranges configuration */
|
|
32
|
+
resourcesRanges?: any;
|
|
33
|
+
/** Credits consumed per hour when running */
|
|
34
|
+
burning_rate: number;
|
|
35
|
+
/** Simple resource specification */
|
|
36
|
+
resources?: any;
|
|
37
|
+
/** Name identifier for the environment */
|
|
38
|
+
name: string;
|
|
39
|
+
/** Docker registry for the image */
|
|
40
|
+
dockerRegistry?: string;
|
|
41
|
+
/** Icon or avatar URL for the environment */
|
|
42
|
+
icon?: string;
|
|
43
|
+
/** Whether the environment is enabled */
|
|
44
|
+
enabled?: boolean;
|
|
45
|
+
/** Tags associated with the environment */
|
|
46
|
+
tags?: string[];
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Stable public interface for Environment data.
|
|
50
|
+
* This is the contract that Client consumers can rely on.
|
|
51
|
+
* The raw API may change, but this interface remains stable.
|
|
52
|
+
*/
|
|
53
|
+
export interface EnvironmentJSON {
|
|
54
|
+
/** Human-readable title for the environment */
|
|
55
|
+
title: string;
|
|
56
|
+
/** Unique name identifier for the environment */
|
|
57
|
+
name: string;
|
|
58
|
+
/** Credits consumed per hour for this environment */
|
|
59
|
+
burningRate: number;
|
|
60
|
+
/** Description of the environment (contains HTML markup) */
|
|
61
|
+
description: string;
|
|
62
|
+
/** Rich description of the environment (contains HTML markup) */
|
|
63
|
+
richDescription: string;
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* Response from listing available environments
|
|
67
|
+
* @interface ListEnvironmentsResponse
|
|
68
|
+
*/
|
|
69
|
+
export interface ListEnvironmentsResponse {
|
|
70
|
+
/** Whether the request was successful */
|
|
71
|
+
success: boolean;
|
|
72
|
+
/** Response message from the server */
|
|
73
|
+
message: string;
|
|
74
|
+
/** Array of available environments */
|
|
75
|
+
environments: EnvironmentData[];
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* Environment domain model that wraps API responses with convenient methods.
|
|
79
|
+
* Provides information about available computational environments.
|
|
80
|
+
*
|
|
81
|
+
* @example
|
|
82
|
+
* ```typescript
|
|
83
|
+
* const environments = await client.listEnvironments();
|
|
84
|
+
* const aiEnv = environments.find(env => env.name === 'ai-env');
|
|
85
|
+
* console.log(aiEnv.title); // "AI Environment"
|
|
86
|
+
* ```
|
|
87
|
+
*/
|
|
88
|
+
export declare class EnvironmentDTO {
|
|
89
|
+
/** @internal */
|
|
90
|
+
_data: EnvironmentData;
|
|
91
|
+
/**
|
|
92
|
+
* Create an Environment instance.
|
|
93
|
+
*
|
|
94
|
+
* @param data - Environment data from API
|
|
95
|
+
* @param _client - Client instance (not currently used but kept for consistency)
|
|
96
|
+
*/
|
|
97
|
+
constructor(data: EnvironmentData, _client: DatalayerClient);
|
|
98
|
+
/** Human-readable title for the environment (e.g., 'AI Environment', 'Python CPU Environment'). */
|
|
99
|
+
get title(): string;
|
|
100
|
+
/** Unique name identifier for the environment (e.g., 'ai-env', 'ai-agents-env'). */
|
|
101
|
+
get name(): string;
|
|
102
|
+
/** Credits consumed per hour for this environment. */
|
|
103
|
+
get burningRate(): number;
|
|
104
|
+
/** Rich description of the environment (contains HTML markup). */
|
|
105
|
+
get richDescription(): string;
|
|
106
|
+
/** Clean description without HTML tags. */
|
|
107
|
+
get description(): string;
|
|
108
|
+
/**
|
|
109
|
+
* Get environment data in camelCase format.
|
|
110
|
+
* Returns only the core fields that consumers need.
|
|
111
|
+
* This provides a stable interface regardless of API changes.
|
|
112
|
+
*
|
|
113
|
+
* @returns Core environment data with camelCase properties
|
|
114
|
+
*/
|
|
115
|
+
toJSON(): EnvironmentJSON;
|
|
116
|
+
/**
|
|
117
|
+
* Get the raw environment data exactly as received from the API.
|
|
118
|
+
* This preserves the original snake_case naming from the API response.
|
|
119
|
+
*
|
|
120
|
+
* @returns Raw environment data from API
|
|
121
|
+
*/
|
|
122
|
+
rawData(): EnvironmentData;
|
|
123
|
+
/** String representation of the environment. */
|
|
124
|
+
toString(): string;
|
|
125
|
+
}
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright (c) 2025-2026 Datalayer, Inc.
|
|
3
|
+
* Distributed under the terms of the Modified BSD License.
|
|
4
|
+
*/
|
|
5
|
+
import { validateJSON } from '@datalayer/core/lib/api/utils/validation';
|
|
6
|
+
/**
|
|
7
|
+
* Environment domain model that wraps API responses with convenient methods.
|
|
8
|
+
* Provides information about available computational environments.
|
|
9
|
+
*
|
|
10
|
+
* @example
|
|
11
|
+
* ```typescript
|
|
12
|
+
* const environments = await client.listEnvironments();
|
|
13
|
+
* const aiEnv = environments.find(env => env.name === 'ai-env');
|
|
14
|
+
* console.log(aiEnv.title); // "AI Environment"
|
|
15
|
+
* ```
|
|
16
|
+
*/
|
|
17
|
+
export class EnvironmentDTO {
|
|
18
|
+
/** @internal */
|
|
19
|
+
_data;
|
|
20
|
+
/**
|
|
21
|
+
* Create an Environment instance.
|
|
22
|
+
*
|
|
23
|
+
* @param data - Environment data from API
|
|
24
|
+
* @param _client - Client instance (not currently used but kept for consistency)
|
|
25
|
+
*/
|
|
26
|
+
constructor(data, _client) {
|
|
27
|
+
this._data = data;
|
|
28
|
+
// Client instance not currently used but kept for future extensibility
|
|
29
|
+
}
|
|
30
|
+
// ========================================================================
|
|
31
|
+
// Properties
|
|
32
|
+
// ========================================================================
|
|
33
|
+
/** Human-readable title for the environment (e.g., 'AI Environment', 'Python CPU Environment'). */
|
|
34
|
+
get title() {
|
|
35
|
+
return this._data.title;
|
|
36
|
+
}
|
|
37
|
+
/** Unique name identifier for the environment (e.g., 'ai-env', 'ai-agents-env'). */
|
|
38
|
+
get name() {
|
|
39
|
+
return this._data.name;
|
|
40
|
+
}
|
|
41
|
+
/** Credits consumed per hour for this environment. */
|
|
42
|
+
get burningRate() {
|
|
43
|
+
return this._data.burning_rate;
|
|
44
|
+
}
|
|
45
|
+
/** Rich description of the environment (contains HTML markup). */
|
|
46
|
+
get richDescription() {
|
|
47
|
+
return this._data.description;
|
|
48
|
+
}
|
|
49
|
+
/** Clean description without HTML tags. */
|
|
50
|
+
get description() {
|
|
51
|
+
// Simple HTML tag removal
|
|
52
|
+
return this._data.description.replace(/<[^>]*>/g, '').trim();
|
|
53
|
+
}
|
|
54
|
+
// ========================================================================
|
|
55
|
+
// Utility Methods
|
|
56
|
+
// ========================================================================
|
|
57
|
+
/**
|
|
58
|
+
* Get environment data in camelCase format.
|
|
59
|
+
* Returns only the core fields that consumers need.
|
|
60
|
+
* This provides a stable interface regardless of API changes.
|
|
61
|
+
*
|
|
62
|
+
* @returns Core environment data with camelCase properties
|
|
63
|
+
*/
|
|
64
|
+
toJSON() {
|
|
65
|
+
const obj = {
|
|
66
|
+
title: this.title,
|
|
67
|
+
name: this.name,
|
|
68
|
+
burningRate: this.burningRate,
|
|
69
|
+
description: this.description,
|
|
70
|
+
richDescription: this.richDescription,
|
|
71
|
+
};
|
|
72
|
+
validateJSON(obj, 'Environment');
|
|
73
|
+
return obj;
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* Get the raw environment data exactly as received from the API.
|
|
77
|
+
* This preserves the original snake_case naming from the API response.
|
|
78
|
+
*
|
|
79
|
+
* @returns Raw environment data from API
|
|
80
|
+
*/
|
|
81
|
+
rawData() {
|
|
82
|
+
return this._data;
|
|
83
|
+
}
|
|
84
|
+
/** String representation of the environment. */
|
|
85
|
+
toString() {
|
|
86
|
+
return `Environment(${this.name}, ${this.title})`;
|
|
87
|
+
}
|
|
88
|
+
}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { IDataset } from './Dataset';
|
|
2
|
+
import { IItem } from './Item';
|
|
3
|
+
export type ICode = string;
|
|
4
|
+
export type IHelp = string;
|
|
5
|
+
export type IExercise = IItem & {
|
|
6
|
+
type: 'exercise';
|
|
7
|
+
help: IHelp;
|
|
8
|
+
codePre: ICode;
|
|
9
|
+
codeSolution: ICode;
|
|
10
|
+
codeQuestion: ICode;
|
|
11
|
+
codeTest: ICode;
|
|
12
|
+
datasets: Array<IDataset>;
|
|
13
|
+
lastUpdateDate?: Date;
|
|
14
|
+
lastPublicationDate?: Date;
|
|
15
|
+
};
|
|
16
|
+
export default IExercise;
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { ISpaceItem } from './SpaceItem';
|
|
2
|
+
import { IUser } from '@datalayer/core/lib/models/User';
|
|
3
|
+
import { IAnyOrganization } from '@datalayer/core/lib/models/Organization';
|
|
4
|
+
import { IAnySpace } from './Space';
|
|
5
|
+
import { IItemType } from './ItemType';
|
|
6
|
+
export type IAnyItem = ISpaceItem;
|
|
7
|
+
export type IItem = {
|
|
8
|
+
id: string;
|
|
9
|
+
type: IItemType;
|
|
10
|
+
name: string;
|
|
11
|
+
description: string;
|
|
12
|
+
public: boolean;
|
|
13
|
+
creationDate: Date;
|
|
14
|
+
lastUpdateDate?: Date;
|
|
15
|
+
lastPublicationDate?: Date;
|
|
16
|
+
owner: IUser;
|
|
17
|
+
space: Partial<IAnySpace>;
|
|
18
|
+
organization: Partial<IAnyOrganization>;
|
|
19
|
+
};
|
|
20
|
+
export default IItem;
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Abstract base class for all Datalayer content items.
|
|
3
|
+
*
|
|
4
|
+
* @module models/ItemDTO
|
|
5
|
+
*/
|
|
6
|
+
import type { AgentRuntimesClient as DatalayerClient } from '../client/AgentRuntimesClient';
|
|
7
|
+
/**
|
|
8
|
+
* Abstract base class for all Datalayer content items.
|
|
9
|
+
* Provides common functionality for content management including lifecycle tracking.
|
|
10
|
+
*
|
|
11
|
+
* @template TData - Raw data type from API
|
|
12
|
+
* @template TUpdateRequest - Update request type for API
|
|
13
|
+
*/
|
|
14
|
+
export declare abstract class ItemDTO<TData> {
|
|
15
|
+
protected _data: TData;
|
|
16
|
+
private _client;
|
|
17
|
+
private _deleted;
|
|
18
|
+
/**
|
|
19
|
+
* Create an Item instance.
|
|
20
|
+
* @param data - Item data from API
|
|
21
|
+
* @param client - Client instance
|
|
22
|
+
*/
|
|
23
|
+
constructor(data: TData, client: DatalayerClient);
|
|
24
|
+
/** Check if this item has been deleted. */
|
|
25
|
+
get isDeleted(): boolean;
|
|
26
|
+
/**
|
|
27
|
+
* Check if this item has been deleted and throw error if so.
|
|
28
|
+
* @throws Error if deleted
|
|
29
|
+
*/
|
|
30
|
+
protected _checkDeleted(): void;
|
|
31
|
+
/** Item ID. */
|
|
32
|
+
get id(): string;
|
|
33
|
+
/** Unique identifier for the item. */
|
|
34
|
+
get uid(): string;
|
|
35
|
+
/** Parent space ID. */
|
|
36
|
+
get spaceId(): string;
|
|
37
|
+
/** Owner user ID. */
|
|
38
|
+
get ownerId(): string;
|
|
39
|
+
/** When the item was created. */
|
|
40
|
+
get createdAt(): Date;
|
|
41
|
+
/** The cached update time. */
|
|
42
|
+
get updatedAt(): Date;
|
|
43
|
+
/** Get the item type identifier. */
|
|
44
|
+
abstract get type(): string;
|
|
45
|
+
/** The cached name. */
|
|
46
|
+
abstract get name(): string;
|
|
47
|
+
/** Get the current name from API. */
|
|
48
|
+
abstract getName(): Promise<string>;
|
|
49
|
+
/** The cached content. */
|
|
50
|
+
abstract get content(): any;
|
|
51
|
+
/** Get when the item was last updated from API. */
|
|
52
|
+
abstract getUpdatedAt(): Promise<Date>;
|
|
53
|
+
/** Update the item. */
|
|
54
|
+
abstract update(...args: any[]): Promise<this>;
|
|
55
|
+
/**
|
|
56
|
+
* Delete this item permanently.
|
|
57
|
+
* After deletion, all subsequent method calls will throw errors.
|
|
58
|
+
*/
|
|
59
|
+
delete(): Promise<void>;
|
|
60
|
+
/** Get the document content from API. */
|
|
61
|
+
getContent(): Promise<any>;
|
|
62
|
+
/** Get raw item data object. */
|
|
63
|
+
rawData(): TData;
|
|
64
|
+
/** Convert to JSON representation - must be implemented by subclasses. */
|
|
65
|
+
abstract toJSON(): any;
|
|
66
|
+
/** String representation of the item. */
|
|
67
|
+
toString(): string;
|
|
68
|
+
/** Get Client token for API calls. */
|
|
69
|
+
protected _getToken(): string;
|
|
70
|
+
/** Get spacer API URL for API calls. */
|
|
71
|
+
protected _getSpacerUrl(): string;
|
|
72
|
+
/** Update internal data after API call. */
|
|
73
|
+
protected _updateData(newData: TData): void;
|
|
74
|
+
}
|
|
@@ -0,0 +1,186 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright (c) 2025-2026 Datalayer, Inc.
|
|
3
|
+
* Distributed under the terms of the Modified BSD License.
|
|
4
|
+
*/
|
|
5
|
+
import * as items from '../api/spacer/items';
|
|
6
|
+
/**
|
|
7
|
+
* Abstract base class for all Datalayer content items.
|
|
8
|
+
* Provides common functionality for content management including lifecycle tracking.
|
|
9
|
+
*
|
|
10
|
+
* @template TData - Raw data type from API
|
|
11
|
+
* @template TUpdateRequest - Update request type for API
|
|
12
|
+
*/
|
|
13
|
+
export class ItemDTO {
|
|
14
|
+
_data;
|
|
15
|
+
_client;
|
|
16
|
+
_deleted = false;
|
|
17
|
+
/**
|
|
18
|
+
* Create an Item instance.
|
|
19
|
+
* @param data - Item data from API
|
|
20
|
+
* @param client - Client instance
|
|
21
|
+
*/
|
|
22
|
+
constructor(data, client) {
|
|
23
|
+
this._data = data;
|
|
24
|
+
this._client = client;
|
|
25
|
+
}
|
|
26
|
+
// ========================================================================
|
|
27
|
+
// Deletion State Management
|
|
28
|
+
// ========================================================================
|
|
29
|
+
/** Check if this item has been deleted. */
|
|
30
|
+
get isDeleted() {
|
|
31
|
+
return this._deleted;
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Check if this item has been deleted and throw error if so.
|
|
35
|
+
* @throws Error if deleted
|
|
36
|
+
*/
|
|
37
|
+
_checkDeleted() {
|
|
38
|
+
if (this._deleted) {
|
|
39
|
+
throw new Error(`${this.constructor.name} ${this._data.id} has been deleted and no longer exists`);
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
// ========================================================================
|
|
43
|
+
// Static Properties (set at creation, never change)
|
|
44
|
+
// ========================================================================
|
|
45
|
+
/** Item ID. */
|
|
46
|
+
get id() {
|
|
47
|
+
this._checkDeleted();
|
|
48
|
+
return this._data.id;
|
|
49
|
+
}
|
|
50
|
+
/** Unique identifier for the item. */
|
|
51
|
+
get uid() {
|
|
52
|
+
this._checkDeleted();
|
|
53
|
+
return this._data.uid;
|
|
54
|
+
}
|
|
55
|
+
/** Parent space ID. */
|
|
56
|
+
get spaceId() {
|
|
57
|
+
this._checkDeleted();
|
|
58
|
+
// Try the direct field first (if API provides it)
|
|
59
|
+
if (this._data.space_id) {
|
|
60
|
+
return this._data.space_id;
|
|
61
|
+
}
|
|
62
|
+
// Extract from s3_path_s if available: "datalayer.ai/SPACE_ID/..."
|
|
63
|
+
const s3Path = this._data.s3_path_s;
|
|
64
|
+
if (s3Path && typeof s3Path === 'string') {
|
|
65
|
+
const match = s3Path.match(/^datalayer\.app\/([^/]+)\//);
|
|
66
|
+
if (match) {
|
|
67
|
+
return match[1];
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
// Fallback to empty string if no space ID can be determined
|
|
71
|
+
return '';
|
|
72
|
+
}
|
|
73
|
+
/** Owner user ID. */
|
|
74
|
+
get ownerId() {
|
|
75
|
+
this._checkDeleted();
|
|
76
|
+
return (this._data.owner_id || this._data.creator_uid || '');
|
|
77
|
+
}
|
|
78
|
+
/** When the item was created. */
|
|
79
|
+
get createdAt() {
|
|
80
|
+
this._checkDeleted();
|
|
81
|
+
const dateStr = this._data.creation_ts_dt || this._data.created_at;
|
|
82
|
+
if (!dateStr) {
|
|
83
|
+
throw new Error(`No creation timestamp available for ${this.constructor.name.toLowerCase()}`);
|
|
84
|
+
}
|
|
85
|
+
return new Date(dateStr);
|
|
86
|
+
}
|
|
87
|
+
/** The cached update time. */
|
|
88
|
+
get updatedAt() {
|
|
89
|
+
this._checkDeleted();
|
|
90
|
+
const dateStr = this._data.last_update_ts_dt ||
|
|
91
|
+
this._data.updated_at ||
|
|
92
|
+
this._data.creation_ts_dt ||
|
|
93
|
+
this._data.created_at;
|
|
94
|
+
if (!dateStr) {
|
|
95
|
+
throw new Error(`No update timestamp available for ${this.constructor.name.toLowerCase()}`);
|
|
96
|
+
}
|
|
97
|
+
return new Date(dateStr);
|
|
98
|
+
}
|
|
99
|
+
// ========================================================================
|
|
100
|
+
// Action Methods
|
|
101
|
+
// ========================================================================
|
|
102
|
+
/**
|
|
103
|
+
* Delete this item permanently.
|
|
104
|
+
* After deletion, all subsequent method calls will throw errors.
|
|
105
|
+
*/
|
|
106
|
+
async delete() {
|
|
107
|
+
this._checkDeleted();
|
|
108
|
+
const token = this._client.getToken();
|
|
109
|
+
const spacerUrl = this._client.getSpacerUrl();
|
|
110
|
+
await items.deleteItem(token, this.uid, spacerUrl);
|
|
111
|
+
this._deleted = true;
|
|
112
|
+
}
|
|
113
|
+
/** Get the document content from API. */
|
|
114
|
+
async getContent() {
|
|
115
|
+
this._checkDeleted();
|
|
116
|
+
// First try: CDN URL (fastest)
|
|
117
|
+
const cdnUrl = this._data.cdn_url_s;
|
|
118
|
+
if (cdnUrl) {
|
|
119
|
+
try {
|
|
120
|
+
const response = await fetch(cdnUrl);
|
|
121
|
+
if (!response.ok) {
|
|
122
|
+
throw new Error('Failed to fetch content from CDN');
|
|
123
|
+
}
|
|
124
|
+
const data = await response.json();
|
|
125
|
+
if (data.content !== undefined && data.content !== null) {
|
|
126
|
+
return data.content;
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
catch (error) {
|
|
130
|
+
console.error('Error fetching content from CDN:', error);
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
// Second try: Check if content is already loaded
|
|
134
|
+
const cachedContent = this.content;
|
|
135
|
+
if (cachedContent !== undefined && cachedContent !== null) {
|
|
136
|
+
return cachedContent;
|
|
137
|
+
}
|
|
138
|
+
// Third try: Fetch full item details from API
|
|
139
|
+
try {
|
|
140
|
+
const token = this._client.getToken();
|
|
141
|
+
const spacerUrl = this._client.getSpacerUrl();
|
|
142
|
+
const response = await items.getItem(token, this.uid, spacerUrl);
|
|
143
|
+
// Update internal data with full item details
|
|
144
|
+
if (response.success && response.item) {
|
|
145
|
+
this._data = response.item;
|
|
146
|
+
const freshContent = this.content;
|
|
147
|
+
if (freshContent !== undefined && freshContent !== null) {
|
|
148
|
+
return freshContent;
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
catch (error) {
|
|
153
|
+
console.error('Error fetching full item details:', error);
|
|
154
|
+
}
|
|
155
|
+
throw new Error(`Content is not available for item ${this.uid}. The item may not have been fully loaded or the content is not yet available.`);
|
|
156
|
+
}
|
|
157
|
+
// ========================================================================
|
|
158
|
+
// Utility Methods
|
|
159
|
+
// ========================================================================
|
|
160
|
+
/** Get raw item data object. */
|
|
161
|
+
rawData() {
|
|
162
|
+
this._checkDeleted();
|
|
163
|
+
return this._data;
|
|
164
|
+
}
|
|
165
|
+
/** String representation of the item. */
|
|
166
|
+
toString() {
|
|
167
|
+
this._checkDeleted();
|
|
168
|
+
const name = this.name || 'Unnamed';
|
|
169
|
+
return `${this.constructor.name}(${this.id}, ${name})`;
|
|
170
|
+
}
|
|
171
|
+
// ========================================================================
|
|
172
|
+
// Protected Helper Methods
|
|
173
|
+
// ========================================================================
|
|
174
|
+
/** Get Client token for API calls. */
|
|
175
|
+
_getToken() {
|
|
176
|
+
return this._client.getToken();
|
|
177
|
+
}
|
|
178
|
+
/** Get spacer API URL for API calls. */
|
|
179
|
+
_getSpacerUrl() {
|
|
180
|
+
return this._client.getSpacerUrl();
|
|
181
|
+
}
|
|
182
|
+
/** Update internal data after API call. */
|
|
183
|
+
_updateData(newData) {
|
|
184
|
+
this._data = newData;
|
|
185
|
+
}
|
|
186
|
+
}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export type IItemType = 'assignment' | 'authoring' | 'cell' | 'content' | 'credits' | 'dataset' | 'datasource' | 'document' | 'documentation' | 'environment' | 'exercise' | 'growth' | 'home' | 'invite' | 'lesson' | 'library' | 'mail' | 'management' | 'notebook' | 'onboarding' | 'organization' | 'page' | 'runtime' | 'runtime-snapshot' | 'settings' | 'share' | 'space' | 'storage' | 'success' | 'support' | 'tag' | 'team' | 'usage' | 'user' | 'undefined';
|
|
2
|
+
export default IItemType;
|