@datalayer/agent-runtimes 1.0.28 → 1.3.10
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/lib/AgentDocument.js +5 -22
- package/lib/AgentNode.d.ts +1 -1
- package/lib/AgentNode.js +193 -23
- package/lib/AgentNotebook.js +1 -1
- package/lib/App.d.ts +1 -1
- package/lib/AppExamples2.d.ts +1 -1
- package/lib/agent-node/AgentNodeGallery.d.ts +14 -1
- package/lib/agent-node/AgentNodeGallery.js +19 -15
- package/lib/agent-node/themeStore.js +7 -6
- package/lib/agents/AgentDetails.d.ts +8 -2
- package/lib/agents/AgentDetails.js +41 -11
- package/lib/agents/AgentRuntimeChat.d.ts +3 -3
- package/lib/agents/AgentRuntimeChat.js +15 -15
- package/lib/api/agents.d.ts +10 -10
- package/lib/api/agents.js +15 -15
- package/lib/api/checkpoints.d.ts +40 -0
- package/lib/api/checkpoints.js +75 -0
- package/lib/api/index.d.ts +1 -0
- package/lib/api/index.js +18 -5
- package/lib/api/notifications.d.ts +21 -6
- package/lib/api/notifications.js +32 -14
- package/lib/api/runtimes/environments.d.ts +385 -4
- package/lib/api/runtimes/environments.js +610 -9
- package/lib/api/runtimes/runtimes.d.ts +19 -19
- package/lib/api/runtimes/runtimes.js +47 -46
- package/lib/api/spacer/notebooks.js +1 -1
- package/lib/chat/Chat.d.ts +16 -4
- package/lib/chat/Chat.js +18 -5
- package/lib/chat/ChatFloating.d.ts +13 -2
- package/lib/chat/ChatFloating.js +192 -117
- package/lib/chat/ChatInline.d.ts +15 -0
- package/lib/chat/ChatInline.js +0 -18
- package/lib/chat/ChatPopupStandalone.d.ts +1 -1
- package/lib/chat/ChatSidebar.d.ts +14 -2
- package/lib/chat/ChatSidebar.js +1 -1
- package/lib/chat/ChatStandalone.d.ts +1 -1
- package/lib/chat/EphemeralSurfaceControl.d.ts +30 -0
- package/lib/chat/EphemeralSurfaceControl.js +55 -0
- package/lib/chat/base/ChatAvailability.d.ts +34 -0
- package/lib/chat/base/ChatAvailability.js +18 -0
- package/lib/chat/base/ChatBase.d.ts +2 -1
- package/lib/chat/base/ChatBase.js +657 -28
- package/lib/chat/display/EmptyState.d.ts +15 -1
- package/lib/chat/display/EmptyState.js +78 -12
- package/lib/chat/display/FloatingBrandButton.d.ts +1 -1
- package/lib/chat/display/PoweredByTag.d.ts +1 -1
- package/lib/chat/display/groupSuggestions.d.ts +21 -0
- package/lib/chat/display/groupSuggestions.js +18 -0
- package/lib/chat/document/EphemeralDocument.d.ts +70 -6
- package/lib/chat/document/EphemeralDocument.js +154 -52
- package/lib/chat/header/ChatHeader.d.ts +1 -1
- package/lib/chat/header/ChatHeaderBase.d.ts +10 -1
- package/lib/chat/header/ChatHeaderBase.js +67 -96
- package/lib/chat/index.d.ts +4 -1
- package/lib/chat/index.js +8 -1
- package/lib/chat/indicators/McpStatusIndicator.d.ts +1 -1
- package/lib/chat/indicators/SandboxStatusIndicator.d.ts +1 -1
- package/lib/chat/indicators/SandboxStatusIndicator.js +1 -1
- package/lib/chat/indicators/SkillsStatusIndicator.d.ts +1 -1
- package/lib/chat/messages/ChatMessageList.d.ts +22 -1
- package/lib/chat/messages/ChatMessageList.js +370 -166
- package/lib/chat/messages/ChatMessages.d.ts +1 -1
- package/lib/chat/messages/NotebookToolSurfaces.d.ts +68 -0
- package/lib/chat/messages/NotebookToolSurfaces.js +302 -0
- package/lib/chat/messages/TurnFooter.d.ts +42 -0
- package/lib/chat/messages/TurnFooter.js +75 -0
- package/lib/chat/messages/assistantMarkdown.d.ts +22 -0
- package/lib/chat/messages/assistantMarkdown.js +56 -0
- package/lib/chat/notebook/EphemeralNotebook.d.ts +67 -6
- package/lib/chat/notebook/EphemeralNotebook.js +194 -61
- package/lib/chat/parts/DynamicToolPart.d.ts +1 -1
- package/lib/chat/parts/MessagePart.d.ts +1 -1
- package/lib/chat/parts/ReasoningPart.d.ts +8 -1
- package/lib/chat/parts/TextPart.d.ts +1 -1
- package/lib/chat/parts/ToolPart.d.ts +8 -1
- package/lib/chat/prompt/FloatingCard.d.ts +26 -0
- package/lib/chat/prompt/FloatingCard.js +80 -0
- package/lib/chat/prompt/InputPrompt.d.ts +206 -53
- package/lib/chat/prompt/InputPrompt.js +161 -80
- package/lib/chat/prompt/InputPromptBase.d.ts +112 -0
- package/lib/chat/prompt/InputPromptBase.js +225 -0
- package/lib/chat/prompt/InputPromptLexical.d.ts +18 -1
- package/lib/chat/prompt/InputPromptLexical.js +227 -30
- package/lib/chat/prompt/InputPromptText.d.ts +10 -2
- package/lib/chat/prompt/InputPromptText.js +35 -3
- package/lib/chat/prompt/footer/BelowPromptFooter.d.ts +25 -0
- package/lib/chat/prompt/footer/BelowPromptFooter.js +12 -0
- package/lib/chat/prompt/footer/InPromptFooter.d.ts +35 -0
- package/lib/chat/prompt/footer/InPromptFooter.js +16 -0
- package/lib/chat/prompt/footer/index.d.ts +7 -0
- package/lib/chat/prompt/footer/index.js +11 -0
- package/lib/chat/prompt/header/BelowPromptHeader.d.ts +23 -0
- package/lib/chat/prompt/header/BelowPromptHeader.js +12 -0
- package/lib/chat/prompt/header/InPromptHeader.d.ts +31 -0
- package/lib/chat/prompt/header/InPromptHeader.js +14 -0
- package/lib/chat/prompt/header/index.d.ts +7 -0
- package/lib/chat/prompt/header/index.js +11 -0
- package/lib/chat/prompt/index.d.ts +8 -4
- package/lib/chat/prompt/index.js +15 -3
- package/lib/chat/prompt/menus/AgentsMenu.d.ts +14 -0
- package/lib/chat/prompt/menus/AgentsMenu.js +42 -0
- package/lib/chat/prompt/menus/InlineAgentsMenu.d.ts +22 -0
- package/lib/chat/prompt/menus/InlineAgentsMenu.js +24 -0
- package/lib/chat/prompt/menus/ModelSelector.d.ts +7 -0
- package/lib/chat/prompt/menus/ModelSelector.js +27 -0
- package/lib/chat/prompt/menus/SkillsMenu.d.ts +10 -0
- package/lib/chat/prompt/menus/SkillsMenu.js +75 -0
- package/lib/chat/prompt/menus/SuggestionsMenu.d.ts +13 -0
- package/lib/chat/prompt/menus/SuggestionsMenu.js +31 -0
- package/lib/chat/prompt/menus/ToolsMenu.d.ts +13 -0
- package/lib/chat/prompt/menus/ToolsMenu.js +103 -0
- package/lib/chat/prompt/menus/index.d.ts +15 -0
- package/lib/chat/prompt/menus/index.js +19 -0
- package/lib/chat/prompt/plugins/AgentMentionPlugin.d.ts +54 -0
- package/lib/chat/prompt/plugins/AgentMentionPlugin.js +370 -0
- package/lib/chat/prompt/plugins/CommandPlugin.d.ts +52 -0
- package/lib/chat/prompt/plugins/CommandPlugin.js +359 -0
- package/lib/chat/prompt/plugins/MentionChip.d.ts +15 -0
- package/lib/chat/prompt/plugins/MentionChip.js +24 -0
- package/lib/chat/prompt/plugins/MentionNode.d.ts +66 -0
- package/lib/chat/prompt/plugins/MentionNode.js +77 -0
- package/lib/chat/prompt/promptHistory.d.ts +52 -0
- package/lib/chat/prompt/promptHistory.js +123 -0
- package/lib/chat/prompt/stack.d.ts +81 -0
- package/lib/chat/prompt/stack.js +41 -0
- package/lib/chat/prompt/useTypingPlaceholder.d.ts +52 -0
- package/lib/chat/prompt/useTypingPlaceholder.js +180 -0
- package/lib/chat/tools/A2AAgentDialog.d.ts +60 -0
- package/lib/chat/tools/A2AAgentDialog.js +265 -0
- package/lib/chat/tools/ToolApprovalBanner.d.ts +1 -1
- package/lib/chat/tools/ToolApprovalDialog.d.ts +1 -1
- package/lib/chat/tools/ToolCallDisplay.d.ts +8 -1
- package/lib/chat/tools/index.d.ts +1 -0
- package/lib/chat/tools/index.js +1 -0
- package/lib/chat/usage/ContextPie.d.ts +17 -0
- package/lib/chat/usage/{TokenUsageBar.js → ContextPie.js} +20 -14
- package/lib/chat/useViewportDrag.d.ts +11 -0
- package/lib/chat/useViewportDrag.js +61 -0
- package/lib/chat/viewModes.d.ts +51 -0
- package/lib/chat/viewModes.js +57 -0
- package/lib/client/AgentRuntimesClient.d.ts +10 -9
- package/lib/client/AgentRuntimesClient.js +1 -1
- package/lib/client/AgentRuntimesClientContext.d.ts +1 -0
- package/lib/client/AgentsMixin.d.ts +12 -12
- package/lib/client/AgentsMixin.js +31 -31
- package/lib/client/IAgentRuntimesClient.d.ts +10 -10
- package/lib/client/SdkAgentRuntimesClient.d.ts +10 -10
- package/lib/client/SdkAgentRuntimesClient.js +10 -10
- package/lib/client/mixins/RuntimesMixin.d.ts +37 -10
- package/lib/client/mixins/RuntimesMixin.js +54 -21
- package/lib/components/a2ui/A2uiSurfaceComposed.d.ts +1 -1
- package/lib/components/agents/AgentSummary.d.ts +13 -0
- package/lib/components/agents/AgentSummary.js +21 -4
- package/lib/components/cards/NotificationEventCard.d.ts +1 -1
- package/lib/components/cards/OutputCard.d.ts +1 -1
- package/lib/components/cards/ToolApprovalCard.d.ts +2 -2
- package/lib/components/cards/ToolApprovalCard.js +1 -0
- package/lib/components/code-sandboxes/CodeSandboxCellVariables.d.ts +1 -0
- package/lib/components/code-sandboxes/CodeSandboxCellVariables.js +0 -4
- package/lib/components/code-sandboxes/CodeSandboxCellVariablesDialog.d.ts +1 -0
- package/lib/components/code-sandboxes/CodeSandboxCellVariablesDialog.js +0 -4
- package/lib/components/code-sandboxes/CodeSandboxEnvironmentSelect.d.ts +76 -0
- package/lib/components/code-sandboxes/CodeSandboxEnvironmentSelect.js +81 -0
- package/lib/components/code-sandboxes/CodeSandboxLauncher.d.ts +12 -0
- package/lib/components/code-sandboxes/CodeSandboxLauncher.js +132 -25
- package/lib/components/code-sandboxes/CodeSandboxNames.js +75 -29
- package/lib/components/code-sandboxes/CodeSandboxPicker.d.ts +14 -1
- package/lib/components/code-sandboxes/CodeSandboxPicker.js +226 -45
- package/lib/components/code-sandboxes/CodeSandboxPickerCell.d.ts +1 -0
- package/lib/components/code-sandboxes/CodeSandboxPickerCell.js +0 -4
- package/lib/components/code-sandboxes/CodeSandboxReservationControl.d.ts +1 -0
- package/lib/components/code-sandboxes/CodeSandboxReservationControl.js +5 -7
- package/lib/components/code-sandboxes/CodeSandboxTransfer.d.ts +5 -0
- package/lib/components/code-sandboxes/CodeSandboxUtils.d.ts +16 -1
- package/lib/components/code-sandboxes/CodeSandboxUtils.js +69 -12
- package/lib/components/code-sandboxes/NewCodeSandboxControls.d.ts +21 -15
- package/lib/components/code-sandboxes/NewCodeSandboxControls.js +28 -51
- package/lib/components/code-sandboxes/codeSandboxAllowance.d.ts +33 -0
- package/lib/components/code-sandboxes/codeSandboxAllowance.js +37 -0
- package/lib/components/code-sandboxes/codeSandboxEnvironments.d.ts +86 -0
- package/lib/components/code-sandboxes/codeSandboxEnvironments.js +147 -0
- package/lib/components/code-sandboxes/codeSandboxProviders.d.ts +29 -0
- package/lib/components/code-sandboxes/codeSandboxProviders.js +90 -0
- package/lib/components/code-sandboxes/index.d.ts +3 -0
- package/lib/components/code-sandboxes/index.js +3 -0
- package/lib/components/context/SpaceSelect.d.ts +1 -1
- package/lib/components/flashes/FlashDisclaimer.d.ts +1 -1
- package/lib/components/icons/ArtifactIcon.d.ts +1 -0
- package/lib/components/nbgrader/NbGradesDetails.d.ts +1 -1
- package/lib/components/progress/CreditsIndicator.d.ts +1 -0
- package/lib/components/progress/CreditsIndicator.js +0 -4
- package/lib/components/scheduler/ScheduleMenu.d.ts +1 -1
- package/lib/components/snapshots/SandboxSnapshotMenu.d.ts +3 -2
- package/lib/components/snapshots/SandboxSnapshotMenu.js +11 -15
- package/lib/components/snippets/SnippetDialog.d.ts +1 -0
- package/lib/components/snippets/SnippetDialog.js +0 -4
- package/lib/components/specs/SpecPayloadPreview.d.ts +34 -0
- package/lib/components/specs/SpecPayloadPreview.js +102 -0
- package/lib/components/tokens/SpaceVariantToken.d.ts +1 -1
- package/lib/context/ContextDistribution.d.ts +1 -1
- package/lib/context/ContextInspector.d.ts +2 -1
- package/lib/context/ContextPanel.d.ts +1 -1
- package/lib/context/ContextUsage.d.ts +1 -1
- package/lib/context/CostTracker.d.ts +1 -1
- package/lib/context/CostUsageChart.d.ts +1 -1
- package/lib/context/CostUsageChart.js +4 -4
- package/lib/context/MessageHistory.d.ts +3 -2
- package/lib/context/TokenUsageChart.d.ts +1 -1
- package/lib/context/TokenUsageChart.js +4 -4
- package/lib/examples/A2UiAgentExample.js +15 -6
- package/lib/examples/A2UiComponentsGalleryExample.d.ts +10 -0
- package/lib/examples/A2UiComponentsGalleryExample.js +24 -855
- package/lib/examples/A2UiContactCardExample.d.ts +10 -0
- package/lib/examples/A2UiContactCardExample.js +23 -170
- package/lib/examples/A2UiJupyterOutputExample.d.ts +3 -0
- package/lib/examples/A2UiJupyterOutputExample.js +792 -0
- package/lib/examples/A2UiRestaurantExample.d.ts +10 -0
- package/lib/examples/A2UiRestaurantExample.js +24 -179
- package/lib/examples/A2UiViewerExample.d.ts +10 -0
- package/lib/examples/A2UiViewerExample.js +24 -378
- package/lib/examples/AgUiAgenticExample.js +2 -4
- package/lib/examples/AgUiBackendToolRenderingExample.js +3 -5
- package/lib/examples/AgUiHaikuGenUiExample.js +2 -4
- package/lib/examples/AgUiHumanInTheLoopExample.js +2 -4
- package/lib/examples/AgUiSharedStateExample.js +2 -4
- package/lib/examples/AgUiToolsBasedGenUiExample.js +2 -4
- package/lib/examples/AgentA2AExample.d.ts +17 -0
- package/lib/examples/AgentA2AExample.js +56 -0
- package/lib/examples/AgentCheckpointsExample.d.ts +9 -10
- package/lib/examples/AgentCheckpointsExample.js +72 -54
- package/lib/examples/AgentCodeSandboxExample.d.ts +7 -7
- package/lib/examples/AgentCodeSandboxExample.js +93 -303
- package/lib/examples/AgentCodeSandboxesExample.d.ts +10 -0
- package/lib/examples/AgentCodeSandboxesExample.js +56 -162
- package/lib/examples/AgentCodemodeExample.d.ts +7 -2
- package/lib/examples/AgentCodemodeExample.js +60 -125
- package/lib/examples/AgentCompactionExample.js +19 -135
- package/lib/examples/AgentEvalsExample.js +34 -66
- package/lib/examples/AgentGuardrailsExample.js +64 -112
- package/lib/examples/AgentHooksExample.d.ts +11 -0
- package/lib/examples/AgentHooksExample.js +30 -67
- package/lib/examples/AgentInferenceProviderExample.js +8 -32
- package/lib/examples/AgentLoopExample.d.ts +4 -2
- package/lib/examples/AgentLoopExample.js +45 -93
- package/lib/examples/AgentMCPExample.js +30 -79
- package/lib/examples/AgentMemoryExample.js +21 -64
- package/lib/examples/AgentMonitoringExample.js +33 -94
- package/lib/examples/AgentNotificationsExample.js +56 -95
- package/lib/examples/AgentOtelExample.js +35 -88
- package/lib/examples/AgentOutputsExample.d.ts +2 -1
- package/lib/examples/AgentOutputsExample.js +16 -137
- package/lib/examples/AgentParametersExample.js +7 -17
- package/lib/examples/AgentSkillsExample.js +40 -154
- package/lib/examples/AgentSubagentsExample.d.ts +7 -6
- package/lib/examples/AgentSubagentsExample.js +80 -191
- package/lib/examples/AgentToolApprovalsExample.js +35 -91
- package/lib/examples/AgentTriggersExample.js +43 -59
- package/lib/examples/AgentspecsExample.js +7 -7
- package/lib/examples/CellExample.d.ts +1 -1
- package/lib/examples/ChatExample.d.ts +12 -5
- package/lib/examples/ChatExample.js +38 -13
- package/lib/examples/CopilotKitLexicalExample.d.ts +1 -0
- package/lib/examples/CopilotKitLexicalExample.js +4 -41
- package/lib/examples/CopilotKitNotebookExample.d.ts +10 -0
- package/lib/examples/CopilotKitNotebookExample.js +2 -14
- package/lib/examples/DecksAgent.d.ts +21 -0
- package/lib/examples/DecksAgent.js +23 -0
- package/lib/examples/DocumentPageAgent.d.ts +19 -0
- package/lib/examples/DocumentPageAgent.js +15 -0
- package/lib/examples/Lexical2Example.d.ts +2 -2
- package/lib/examples/Lexical2Example.js +17 -38
- package/lib/examples/LexicalAgentExample.d.ts +2 -1
- package/lib/examples/LexicalAgentExample.js +29 -102
- package/lib/examples/LexicalAgentSidebarExample.d.ts +16 -5
- package/lib/examples/LexicalAgentSidebarExample.js +99 -131
- package/lib/examples/LoopShellExample.d.ts +38 -0
- package/lib/examples/LoopShellExample.js +68 -0
- package/lib/examples/LoopWorkspaceEmbed.d.ts +50 -0
- package/lib/examples/LoopWorkspaceEmbed.js +73 -0
- package/lib/examples/LoopWorkspaceExample.d.ts +150 -0
- package/lib/examples/LoopWorkspaceExample.js +151 -0
- package/lib/examples/NotebookAgentExample.d.ts +13 -0
- package/lib/examples/NotebookAgentExample.js +36 -86
- package/lib/examples/NotebookAgentSidebarExample.d.ts +10 -4
- package/lib/examples/NotebookAgentSidebarExample.js +39 -83
- package/lib/examples/NotebookCollaborationExample.d.ts +1 -1
- package/lib/examples/NotebookCollaborationExample.js +108 -20
- package/lib/examples/NotebookExample.d.ts +1 -1
- package/lib/examples/NotebookExample.js +20 -10
- package/lib/examples/NotebookPageAgent.d.ts +23 -0
- package/lib/examples/NotebookPageAgent.js +17 -0
- package/lib/examples/components/ExampleWrapper.d.ts +5 -0
- package/lib/examples/components/ExampleWrapper.js +36 -28
- package/lib/examples/components/LexicalEditor.d.ts +1 -1
- package/lib/examples/components/LexicalEditor.js +4 -24
- package/lib/examples/components/haiku/HaikuDisplay.d.ts +1 -1
- package/lib/examples/components/haiku/InlineHaikuCard.d.ts +1 -1
- package/lib/examples/components/weather/InlineWeatherCard.d.ts +1 -1
- package/lib/examples/example-selector.js +26 -6
- package/lib/examples/hooks/useCreateAgentOnce.d.ts +41 -0
- package/lib/examples/hooks/useCreateAgentOnce.js +51 -0
- package/lib/examples/hooks/useExampleAgentProtocol.d.ts +35 -0
- package/lib/examples/hooks/useExampleAgentProtocol.js +63 -0
- package/lib/examples/hooks/useExampleAgentRuntime.d.ts +16 -16
- package/lib/examples/hooks/useExampleAgentRuntime.js +26 -25
- package/lib/examples/hooks/useExampleAgentRuntimes.js +45 -61
- package/lib/examples/hooks/useExampleJupyterAgent.d.ts +91 -0
- package/lib/examples/hooks/useExampleJupyterAgent.js +151 -0
- package/lib/examples/index.d.ts +4 -0
- package/lib/examples/index.js +6 -0
- package/lib/examples/lexical/editorConfig.d.ts +2 -75
- package/lib/examples/lexical/editorConfig.js +26 -48
- package/lib/examples/lexical/lexical-theme.css +65 -47
- package/lib/examples/main.js +450 -322
- package/lib/examples/scenes/A2UiComponentsGalleryScene.d.ts +3 -0
- package/lib/examples/scenes/A2UiComponentsGalleryScene.js +872 -0
- package/lib/examples/scenes/A2UiContactCardScene.d.ts +3 -0
- package/lib/examples/scenes/A2UiContactCardScene.js +188 -0
- package/lib/examples/scenes/A2UiRestaurantScene.d.ts +3 -0
- package/lib/examples/scenes/A2UiRestaurantScene.js +196 -0
- package/lib/examples/scenes/A2UiViewerScene.d.ts +3 -0
- package/lib/examples/scenes/A2UiViewerScene.js +395 -0
- package/lib/examples/utils/agentSummaryStore.d.ts +7 -1
- package/lib/examples/utils/agents/earthquake-detector.ipynb.json +1 -1
- package/lib/examples/utils/agents/earthquake-detector.lexical.json +1 -1
- package/lib/examples/utils/agents/sales-forecaster.ipynb.json +1 -1
- package/lib/examples/utils/agents/sales-forecaster.lexical.json +1 -1
- package/lib/examples/utils/agents/social-post-generator.ipynb.json +1 -1
- package/lib/examples/utils/agents/social-post-generator.lexical.json +1 -1
- package/lib/examples/utils/exampleSurfaces.d.ts +31 -0
- package/lib/examples/utils/exampleSurfaces.js +38 -0
- package/lib/examples/utils/jupyterSandboxUrl.d.ts +27 -0
- package/lib/examples/utils/jupyterSandboxUrl.js +55 -0
- package/lib/examples/utils/localUrl.d.ts +2 -0
- package/lib/examples/utils/localUrl.js +49 -0
- package/lib/examples/utils/notebookToolbarItems.d.ts +46 -0
- package/lib/examples/utils/notebookToolbarItems.js +129 -0
- package/lib/examples/utils/runtimeTargetStore.d.ts +40 -1
- package/lib/examples/utils/runtimeTargetStore.js +82 -1
- package/lib/examples/utils/themedProvider.d.ts +7 -0
- package/lib/examples/utils/themedProvider.js +57 -4
- package/lib/examples/utils/useExampleAgentRuntimesUrl.js +30 -5
- package/lib/examples/utils/waitForAgent.d.ts +23 -0
- package/lib/examples/utils/waitForAgent.js +24 -0
- package/lib/examples2/CellExample.d.ts +1 -1
- package/lib/examples2/DatalayerNotebookExample.d.ts +1 -1
- package/lib/examples2/NotebookExample.d.ts +1 -1
- package/lib/examples2/NotebookMutationsKernel.d.ts +1 -1
- package/lib/examples2/NotebookMutationsServiceManager.d.ts +1 -1
- package/lib/examples2/main.js +24 -4
- package/lib/extensions/A2UIExtension.d.ts +1 -1
- package/lib/hooks/index.d.ts +8 -5
- package/lib/hooks/index.js +20 -5
- package/lib/hooks/useAgentRuntimes.d.ts +49 -22
- package/lib/hooks/useAgentRuntimes.js +214 -90
- package/lib/hooks/useAgentsCatalog.js +32 -4
- package/lib/hooks/useBrowserAgent.d.ts +26 -0
- package/lib/hooks/useBrowserAgent.js +75 -0
- package/lib/hooks/useBrowserInference.d.ts +27 -0
- package/lib/hooks/useBrowserInference.js +67 -0
- package/lib/hooks/useCheckpoints.d.ts +8 -17
- package/lib/hooks/useCheckpoints.js +25 -59
- package/lib/hooks/useConfig.d.ts +1 -1
- package/lib/hooks/useConfig.js +5 -1
- package/lib/hooks/useContextSnapshot.d.ts +18 -7
- package/lib/hooks/useContextSnapshot.js +14 -10
- package/lib/hooks/useNotifications.d.ts +11 -11
- package/lib/hooks/useNotifications.js +1 -1
- package/lib/hooks/useProjects.d.ts +7 -19
- package/lib/hooks/useProjects.js +5 -5
- package/lib/hooks/useSkills.d.ts +0 -1
- package/lib/hooks/useSkills.js +6 -2
- package/lib/hooks/useToolApprovals.d.ts +8 -8
- package/lib/hooks/useToolApprovals.js +3 -3
- package/lib/identity/AgentIdentity.d.ts +9 -2
- package/lib/identity/index.d.ts +1 -1
- package/lib/identity/index.js +1 -1
- package/lib/identity/types.d.ts +1 -1
- package/lib/identity/types.js +1 -1
- package/lib/index.d.ts +1 -0
- package/lib/index.js +4 -0
- package/lib/jupyter/index.d.ts +2 -1
- package/lib/jupyter/index.js +2 -1
- package/lib/jupyter/serverExecution.d.ts +78 -0
- package/lib/jupyter/serverExecution.js +258 -0
- package/lib/jupyter/useResumeServerExecutions.d.ts +11 -0
- package/lib/jupyter/useResumeServerExecutions.js +64 -0
- package/lib/lexical/ChatInlinePlugin.d.ts +33 -0
- package/lib/lexical/ChatInlinePlugin.js +0 -36
- package/lib/loop/core/focusRequests.d.ts +10 -0
- package/lib/loop/core/focusRequests.js +46 -0
- package/lib/loop/core/index.d.ts +894 -0
- package/lib/loop/core/index.js +264 -0
- package/lib/loop/core/promptStore.d.ts +44 -0
- package/lib/loop/core/promptStore.js +63 -0
- package/lib/loop/core/surfaceRequests.d.ts +33 -0
- package/lib/loop/core/surfaceRequests.js +29 -0
- package/lib/loop/core/toolbar.d.ts +28 -0
- package/lib/loop/core/toolbar.js +59 -0
- package/lib/loop/embed/LoopEmbed.d.ts +57 -0
- package/lib/loop/embed/LoopEmbed.js +118 -0
- package/lib/loop/extensions.d.ts +10 -0
- package/lib/loop/extensions.js +49 -0
- package/lib/loop/index.d.ts +68 -0
- package/lib/loop/index.js +87 -0
- package/lib/loop/plugins/a2a-sidebar/A2ASidebar.d.ts +48 -0
- package/lib/loop/plugins/a2a-sidebar/A2ASidebar.js +190 -0
- package/lib/loop/plugins/a2a-sidebar/index.d.ts +5 -0
- package/lib/loop/plugins/a2a-sidebar/index.js +39 -0
- package/lib/loop/plugins/a2ui/A2uiView.d.ts +12 -0
- package/lib/loop/plugins/a2ui/A2uiView.js +97 -0
- package/lib/loop/plugins/a2ui/index.d.ts +3 -0
- package/lib/loop/plugins/a2ui/index.js +50 -0
- package/lib/loop/plugins/a2ui-scene/index.d.ts +36 -0
- package/lib/loop/plugins/a2ui-scene/index.js +28 -0
- package/lib/loop/plugins/agent-a2a/index.d.ts +3 -0
- package/lib/loop/plugins/agent-a2a/index.js +26 -0
- package/lib/loop/plugins/agent-a2ui/index.d.ts +3 -0
- package/lib/loop/plugins/agent-a2ui/index.js +42 -0
- package/lib/loop/plugins/agent-a2ui-jupyter-output/index.d.ts +3 -0
- package/lib/loop/plugins/agent-a2ui-jupyter-output/index.js +53 -0
- package/lib/loop/plugins/agent-capacity/index.d.ts +39 -0
- package/lib/loop/plugins/agent-capacity/index.js +52 -0
- package/lib/loop/plugins/agent-checkpoints/index.d.ts +3 -0
- package/lib/loop/plugins/agent-checkpoints/index.js +26 -0
- package/lib/loop/plugins/agent-code-sandbox/index.d.ts +3 -0
- package/lib/loop/plugins/agent-code-sandbox/index.js +24 -0
- package/lib/loop/plugins/agent-code-sandboxes/index.d.ts +13 -0
- package/lib/loop/plugins/agent-code-sandboxes/index.js +85 -0
- package/lib/loop/plugins/agent-codemode/index.d.ts +5 -0
- package/lib/loop/plugins/agent-codemode/index.js +41 -0
- package/lib/loop/plugins/agent-compaction/index.d.ts +10 -0
- package/lib/loop/plugins/agent-compaction/index.js +34 -0
- package/lib/loop/plugins/agent-evals/index.d.ts +3 -0
- package/lib/loop/plugins/agent-evals/index.js +25 -0
- package/lib/loop/plugins/agent-guardrails/index.d.ts +3 -0
- package/lib/loop/plugins/agent-guardrails/index.js +25 -0
- package/lib/loop/plugins/agent-hooks/index.d.ts +3 -0
- package/lib/loop/plugins/agent-hooks/index.js +28 -0
- package/lib/loop/plugins/agent-inference/index.d.ts +7 -0
- package/lib/loop/plugins/agent-inference/index.js +29 -0
- package/lib/loop/plugins/agent-mcp/index.d.ts +3 -0
- package/lib/loop/plugins/agent-mcp/index.js +25 -0
- package/lib/loop/plugins/agent-memory/index.d.ts +3 -0
- package/lib/loop/plugins/agent-memory/index.js +25 -0
- package/lib/loop/plugins/agent-monitoring/index.d.ts +3 -0
- package/lib/loop/plugins/agent-monitoring/index.js +25 -0
- package/lib/loop/plugins/agent-notifications/index.d.ts +3 -0
- package/lib/loop/plugins/agent-notifications/index.js +25 -0
- package/lib/loop/plugins/agent-otel/index.d.ts +3 -0
- package/lib/loop/plugins/agent-otel/index.js +25 -0
- package/lib/loop/plugins/agent-outputs/index.d.ts +3 -0
- package/lib/loop/plugins/agent-outputs/index.js +25 -0
- package/lib/loop/plugins/agent-parameters/index.d.ts +3 -0
- package/lib/loop/plugins/agent-parameters/index.js +25 -0
- package/lib/loop/plugins/agent-skills/index.d.ts +3 -0
- package/lib/loop/plugins/agent-skills/index.js +25 -0
- package/lib/loop/plugins/agent-subagents/index.d.ts +3 -0
- package/lib/loop/plugins/agent-subagents/index.js +25 -0
- package/lib/loop/plugins/agent-tool-approvals/index.d.ts +11 -0
- package/lib/loop/plugins/agent-tool-approvals/index.js +38 -0
- package/lib/loop/plugins/agent-triggers/index.d.ts +3 -0
- package/lib/loop/plugins/agent-triggers/index.js +26 -0
- package/lib/loop/plugins/agents/AgentSummaryPanel.d.ts +20 -0
- package/lib/loop/plugins/agents/AgentSummaryPanel.js +50 -0
- package/lib/loop/plugins/agents/AnonymousKeyBadge.d.ts +35 -0
- package/lib/loop/plugins/agents/AnonymousKeyBadge.js +53 -0
- package/lib/loop/plugins/agents/DatalayerAgentBridge.d.ts +24 -0
- package/lib/loop/plugins/agents/DatalayerAgentBridge.js +102 -0
- package/lib/loop/plugins/agents/DatalayerAgentMount.d.ts +18 -0
- package/lib/loop/plugins/agents/DatalayerAgentMount.js +12 -0
- package/lib/loop/plugins/agents/SandboxSelector.d.ts +18 -0
- package/lib/loop/plugins/agents/SandboxSelector.js +99 -0
- package/lib/loop/plugins/agents/SandboxStatusBridge.d.ts +19 -0
- package/lib/loop/plugins/agents/SandboxStatusBridge.js +23 -0
- package/lib/loop/plugins/agents/SandboxView.d.ts +11 -0
- package/lib/loop/plugins/agents/SandboxView.js +43 -0
- package/lib/loop/plugins/agents/TeamMemberPicker.d.ts +17 -0
- package/lib/loop/plugins/agents/TeamMemberPicker.js +60 -0
- package/lib/loop/plugins/agents/agentIcons.d.ts +23 -0
- package/lib/loop/plugins/agents/agentIcons.js +88 -0
- package/lib/loop/plugins/agents/browserService.d.ts +50 -0
- package/lib/loop/plugins/agents/browserService.js +233 -0
- package/lib/loop/plugins/agents/index.d.ts +13 -0
- package/lib/loop/plugins/agents/index.js +17 -0
- package/lib/loop/plugins/agents/plugin.d.ts +91 -0
- package/lib/loop/plugins/agents/plugin.js +201 -0
- package/lib/loop/plugins/agents/service.d.ts +99 -0
- package/lib/loop/plugins/agents/service.js +167 -0
- package/lib/loop/plugins/agents/specSubagents.d.ts +18 -0
- package/lib/loop/plugins/agents/specSubagents.js +33 -0
- package/lib/loop/plugins/agents/switchable.d.ts +107 -0
- package/lib/loop/plugins/agents/switchable.js +405 -0
- package/lib/loop/plugins/agents/team.d.ts +87 -0
- package/lib/loop/plugins/agents/team.js +143 -0
- package/lib/loop/plugins/agents/useSandboxService.d.ts +11 -0
- package/lib/loop/plugins/agents/useSandboxService.js +36 -0
- package/lib/loop/plugins/agents/useTeamSelection.d.ts +10 -0
- package/lib/loop/plugins/agents/useTeamSelection.js +27 -0
- package/lib/loop/plugins/agentspecs/AgentspecPicker.d.ts +15 -0
- package/lib/loop/plugins/agentspecs/AgentspecPicker.js +90 -0
- package/lib/loop/plugins/agentspecs/index.d.ts +6 -0
- package/lib/loop/plugins/agentspecs/index.js +63 -0
- package/lib/loop/plugins/chat/ChatView.d.ts +20 -0
- package/lib/loop/plugins/chat/ChatView.js +1670 -0
- package/lib/loop/plugins/chat/chatViewTools.d.ts +41 -0
- package/lib/loop/plugins/chat/chatViewTools.js +92 -0
- package/lib/loop/plugins/chat/index.d.ts +111 -0
- package/lib/loop/plugins/chat/index.js +143 -0
- package/lib/loop/plugins/chat/turnState.d.ts +41 -0
- package/lib/loop/plugins/chat/turnState.js +90 -0
- package/lib/loop/plugins/chat-extras/index.d.ts +14 -0
- package/lib/loop/plugins/chat-extras/index.js +51 -0
- package/lib/loop/plugins/chat-header/HeaderView.d.ts +13 -0
- package/lib/loop/plugins/chat-header/HeaderView.js +6 -0
- package/lib/loop/plugins/chat-header/index.d.ts +3 -0
- package/lib/loop/plugins/chat-header/index.js +21 -0
- package/lib/loop/plugins/chat-view/index.d.ts +10 -0
- package/lib/loop/plugins/chat-view/index.js +29 -0
- package/lib/loop/plugins/checkpoints-sidebar/CheckpointsSidebar.d.ts +27 -0
- package/lib/loop/plugins/checkpoints-sidebar/CheckpointsSidebar.js +174 -0
- package/lib/loop/plugins/checkpoints-sidebar/index.d.ts +5 -0
- package/lib/loop/plugins/checkpoints-sidebar/index.js +39 -0
- package/lib/loop/plugins/commands/index.d.ts +20 -0
- package/lib/loop/plugins/commands/index.js +148 -0
- package/lib/loop/plugins/decks/DeckSurface.d.ts +10 -0
- package/lib/loop/plugins/decks/DeckSurface.js +6 -0
- package/lib/loop/plugins/decks/DecksMenu.d.ts +11 -0
- package/lib/loop/plugins/decks/DecksMenu.js +42 -0
- package/lib/loop/plugins/decks/index.d.ts +19 -0
- package/lib/loop/plugins/decks/index.js +133 -0
- package/lib/loop/plugins/decks/surface.d.ts +7 -0
- package/lib/loop/plugins/decks/surface.js +11 -0
- package/lib/loop/plugins/document/DocumentView.d.ts +12 -0
- package/lib/loop/plugins/document/DocumentView.js +68 -0
- package/lib/loop/plugins/document/index.d.ts +3 -0
- package/lib/loop/plugins/document/index.js +86 -0
- package/lib/loop/plugins/document/openingDocument.d.ts +28 -0
- package/lib/loop/plugins/document/openingDocument.js +122 -0
- package/lib/loop/plugins/document-toolbar/SandboxStatusItem.d.ts +16 -0
- package/lib/loop/plugins/document-toolbar/SandboxStatusItem.js +31 -0
- package/lib/loop/plugins/document-toolbar/index.d.ts +4 -0
- package/lib/loop/plugins/document-toolbar/index.js +35 -0
- package/lib/loop/plugins/document-toolbar/names.d.ts +6 -0
- package/lib/loop/plugins/document-toolbar/names.js +10 -0
- package/lib/loop/plugins/document-toolbar/plugin.d.ts +2 -0
- package/lib/loop/plugins/document-toolbar/plugin.js +38 -0
- package/lib/loop/plugins/document-view/index.d.ts +10 -0
- package/lib/loop/plugins/document-view/index.js +28 -0
- package/lib/loop/plugins/graph/GraphToggle.d.ts +17 -0
- package/lib/loop/plugins/graph/GraphToggle.js +22 -0
- package/lib/loop/plugins/graph/GraphView.d.ts +16 -0
- package/lib/loop/plugins/graph/GraphView.js +6 -0
- package/lib/loop/plugins/graph/index.d.ts +5 -0
- package/lib/loop/plugins/graph/index.js +80 -0
- package/lib/loop/plugins/graph/viewType.d.ts +10 -0
- package/lib/loop/plugins/graph/viewType.js +14 -0
- package/lib/loop/plugins/input-prompt/ComposerView.d.ts +15 -0
- package/lib/loop/plugins/input-prompt/ComposerView.js +25 -0
- package/lib/loop/plugins/input-prompt/index.d.ts +25 -0
- package/lib/loop/plugins/input-prompt/index.js +26 -0
- package/lib/loop/plugins/models/index.d.ts +3 -0
- package/lib/loop/plugins/models/index.js +49 -0
- package/lib/loop/plugins/notebook/NotebookView.d.ts +9 -0
- package/lib/loop/plugins/notebook/NotebookView.js +189 -0
- package/lib/loop/plugins/notebook/index.d.ts +3 -0
- package/lib/loop/plugins/notebook/index.js +91 -0
- package/lib/loop/plugins/notebook/openingNotebook.d.ts +72 -0
- package/lib/loop/plugins/notebook/openingNotebook.js +90 -0
- package/lib/loop/plugins/notebook-toolbar/index.d.ts +4 -0
- package/lib/loop/plugins/notebook-toolbar/index.js +45 -0
- package/lib/loop/plugins/notebook-toolbar/items.d.ts +10 -0
- package/lib/loop/plugins/notebook-toolbar/items.js +45 -0
- package/lib/loop/plugins/notebook-toolbar/names.d.ts +9 -0
- package/lib/loop/plugins/notebook-toolbar/names.js +13 -0
- package/lib/loop/plugins/notebook-toolbar/plugin.d.ts +2 -0
- package/lib/loop/plugins/notebook-toolbar/plugin.js +24 -0
- package/lib/loop/plugins/notebook-view/index.d.ts +10 -0
- package/lib/loop/plugins/notebook-view/index.js +30 -0
- package/lib/loop/plugins/page-layout/TurnPanel.d.ts +25 -0
- package/lib/loop/plugins/page-layout/TurnPanel.js +126 -0
- package/lib/loop/plugins/page-layout/index.d.ts +35 -0
- package/lib/loop/plugins/page-layout/index.js +80 -0
- package/lib/loop/plugins/plugins-panel/index.d.ts +14 -0
- package/lib/loop/plugins/plugins-panel/index.js +74 -0
- package/lib/loop/plugins/prompt/NewChatAction.d.ts +19 -0
- package/lib/loop/plugins/prompt/NewChatAction.js +10 -0
- package/lib/loop/plugins/prompt/index.d.ts +11 -0
- package/lib/loop/plugins/prompt/index.js +73 -0
- package/lib/loop/plugins/shell/editorChoice.d.ts +31 -0
- package/lib/loop/plugins/shell/editorChoice.js +58 -0
- package/lib/loop/plugins/shell/index.d.ts +47 -0
- package/lib/loop/plugins/shell/index.js +142 -0
- package/lib/loop/plugins/shell/useEditorPreviews.d.ts +32 -0
- package/lib/loop/plugins/shell/useEditorPreviews.js +217 -0
- package/lib/loop/plugins/subagent-activity/SubagentPulse.d.ts +16 -0
- package/lib/loop/plugins/subagent-activity/SubagentPulse.js +45 -0
- package/lib/loop/plugins/subagent-activity/index.d.ts +12 -0
- package/lib/loop/plugins/subagent-activity/index.js +42 -0
- package/lib/loop/plugins/view-switch/index.d.ts +46 -0
- package/lib/loop/plugins/view-switch/index.js +68 -0
- package/lib/loop/plugins/window-frame/WindowFrame.d.ts +48 -0
- package/lib/loop/plugins/window-frame/WindowFrame.js +63 -0
- package/lib/loop/plugins/window-frame/index.d.ts +6 -0
- package/lib/loop/plugins/window-frame/index.js +79 -0
- package/lib/loop/plugins/window-frame/slots.d.ts +26 -0
- package/lib/loop/plugins/window-frame/slots.js +30 -0
- package/lib/loop/presets.d.ts +167 -0
- package/lib/loop/presets.js +139 -0
- package/lib/loop/shell/LoopWorkspace.d.ts +109 -0
- package/lib/loop/shell/LoopWorkspace.js +231 -0
- package/lib/loop/shell/PluginToggles.d.ts +21 -0
- package/lib/loop/shell/PluginToggles.js +41 -0
- package/lib/loop/shell/ViewSwitcher.d.ts +24 -0
- package/lib/loop/shell/ViewSwitcher.js +43 -0
- package/lib/loop/shell/WorkspaceFullScreenAction.d.ts +25 -0
- package/lib/loop/shell/WorkspaceFullScreenAction.js +24 -0
- package/lib/loop/shell/index.d.ts +10 -0
- package/lib/loop/shell/index.js +14 -0
- package/lib/loop/shell/useWorkspaceFullScreen.d.ts +93 -0
- package/lib/loop/shell/useWorkspaceFullScreen.js +167 -0
- package/lib/loop-example-main.d.ts +1 -0
- package/lib/loop-example-main.js +42 -0
- package/lib/loop-main.d.ts +1 -0
- package/lib/loop-main.js +138 -0
- package/lib/mcp/McpServerManager.d.ts +1 -1
- package/lib/models/CodeSandboxSnapshotDTO.d.ts +1 -1
- package/lib/models/CodeSandboxVariant.d.ts +53 -0
- package/lib/models/CodeSandboxVariant.js +77 -0
- package/lib/models/Content.d.ts +26 -0
- package/lib/models/Environment.d.ts +561 -5
- package/lib/models/Environment.js +12 -1
- package/lib/models/EnvironmentDTO.d.ts +24 -6
- package/lib/models/EnvironmentDTO.js +13 -2
- package/lib/models/Exercise.d.ts +0 -2
- package/lib/models/Library.d.ts +0 -2
- package/lib/models/Notebook.d.ts +0 -2
- package/lib/models/ProjectDTO.d.ts +2 -2
- package/lib/models/ProjectDTO.js +4 -4
- package/lib/models/Runtime.d.ts +11 -11
- package/lib/models/RuntimeDTO.d.ts +16 -7
- package/lib/models/RuntimeDTO.js +9 -9
- package/lib/models/Space.d.ts +10 -0
- package/lib/models/Space.js +1 -1
- package/lib/models/SpaceDTO.d.ts +1 -1
- package/lib/models/SpaceItem.d.ts +1 -2
- package/lib/models/environments.generated.d.ts +113 -0
- package/lib/models/environments.generated.js +13 -0
- package/lib/models/index.d.ts +1 -1
- package/lib/models/index.js +1 -1
- package/lib/protocols/A2AAdapter.d.ts +39 -6
- package/lib/protocols/A2AAdapter.js +180 -11
- package/lib/protocols/ACPAdapter.js +40 -37
- package/lib/protocols/AGUIAdapter.d.ts +14 -0
- package/lib/protocols/AGUIAdapter.js +34 -9
- package/lib/protocols/BrowserAgentAdapter.d.ts +117 -0
- package/lib/protocols/BrowserAgentAdapter.js +310 -0
- package/lib/protocols/VercelAIAdapter.d.ts +10 -0
- package/lib/protocols/VercelAIAdapter.js +27 -7
- package/lib/protocols/index.d.ts +1 -0
- package/lib/protocols/index.js +1 -0
- package/lib/runtimes/actions.d.ts +3 -3
- package/lib/runtimes/actions.js +41 -16
- package/lib/runtimes/apis.d.ts +13 -4
- package/lib/runtimes/browser/agent.d.ts +54 -0
- package/lib/runtimes/browser/agent.js +63 -0
- package/lib/runtimes/browser/anonymousToken.d.ts +121 -0
- package/lib/runtimes/browser/anonymousToken.js +300 -0
- package/lib/runtimes/browser/frontendTools.d.ts +61 -0
- package/lib/runtimes/browser/frontendTools.js +152 -0
- package/lib/runtimes/browser/index.d.ts +11 -0
- package/lib/runtimes/browser/index.js +20 -0
- package/lib/runtimes/browser/model.d.ts +52 -0
- package/lib/runtimes/browser/model.js +110 -0
- package/lib/runtimes/browser/protocol.d.ts +54 -0
- package/lib/runtimes/browser/protocol.js +35 -0
- package/lib/runtimes/browser/subagents.d.ts +131 -0
- package/lib/runtimes/browser/subagents.js +241 -0
- package/lib/runtimes/index.d.ts +3 -0
- package/lib/runtimes/index.js +3 -0
- package/lib/runtimes/lifecycle.d.ts +76 -0
- package/lib/runtimes/lifecycle.js +99 -0
- package/lib/runtimes/variants.d.ts +172 -0
- package/lib/runtimes/variants.js +187 -0
- package/lib/services/reconnectToRuntime.d.ts +2 -2
- package/lib/services/reconnectToRuntime.js +3 -3
- package/lib/services/sandboxServiceManagers.d.ts +2 -2
- package/lib/services/sandboxServiceManagers.js +11 -11
- package/lib/specs/agents/agents.d.ts +128 -112
- package/lib/specs/agents/agents.js +8024 -5052
- package/lib/specs/envvars.d.ts +1 -1
- package/lib/specs/envvars.js +3 -3
- package/lib/specs/evals.js +9 -0
- package/lib/specs/frontendTools.d.ts +3 -0
- package/lib/specs/frontendTools.js +46 -3
- package/lib/specs/mcpServers.d.ts +1 -0
- package/lib/specs/mcpServers.js +27 -4
- package/lib/specs/models.d.ts +18 -0
- package/lib/specs/models.js +154 -0
- package/lib/specs/outputs.d.ts +2 -0
- package/lib/specs/outputs.js +22 -0
- package/lib/specs/personas.js +1 -1
- package/lib/specs/teams/teams.d.ts +2 -0
- package/lib/specs/teams/teams.js +628 -111
- package/lib/state/index.d.ts +1 -1
- package/lib/state/index.js +1 -1
- package/lib/state/substates/RuntimesState.d.ts +5 -5
- package/lib/state/substates/RuntimesState.js +17 -14
- package/lib/state/substates/index.d.ts +1 -1
- package/lib/state/substates/index.js +1 -1
- package/lib/stores/agentRuntimeStore.d.ts +43 -1
- package/lib/stores/agentRuntimeStore.js +100 -11
- package/lib/stores/index.d.ts +1 -1
- package/lib/stores/index.js +1 -1
- package/lib/stories/Button.d.ts +1 -1
- package/lib/stories/Button.stories.d.ts +1 -1
- package/lib/stories/Header.d.ts +1 -1
- package/lib/stories/Header.stories.d.ts +1 -1
- package/lib/test-setup.js +66 -0
- package/lib/tools/adapters/agent-runtimes/lexicalHooks.d.ts +15 -0
- package/lib/tools/adapters/agent-runtimes/lexicalHooks.js +43 -2
- package/lib/tools/adapters/agent-runtimes/notebookHooks.d.ts +9 -0
- package/lib/tools/adapters/agent-runtimes/notebookHooks.js +12 -0
- package/lib/tools/adapters/commands/frontendCommandTools.d.ts +11 -0
- package/lib/tools/adapters/commands/frontendCommandTools.js +60 -0
- package/lib/tools/adapters/commands/index.d.ts +1 -0
- package/lib/{models/Dataset.js → tools/adapters/commands/index.js} +1 -1
- package/lib/tools/adapters/copilotkit/lexicalHooks.js +7 -3
- package/lib/tools/index.d.ts +1 -0
- package/lib/tools/index.js +1 -0
- package/lib/types/a2a.d.ts +15 -1
- package/lib/types/agents-lifecycle.d.ts +11 -6
- package/lib/types/agents.d.ts +31 -6
- package/lib/types/agentspecs.d.ts +120 -4
- package/lib/types/chat.d.ts +251 -3
- package/lib/types/checkpoints.d.ts +20 -0
- package/lib/types/config.d.ts +13 -1
- package/lib/types/connection.d.ts +1 -1
- package/lib/types/evals.d.ts +2 -0
- package/lib/types/messages.d.ts +60 -0
- package/lib/types/models.d.ts +26 -0
- package/lib/types/notifications.d.ts +15 -6
- package/lib/types/protocol.d.ts +7 -2
- package/lib/types/stream.d.ts +48 -3
- package/lib/types/stream.js +5 -0
- package/lib/types/teams.d.ts +102 -4
- package/lib/types/tool-approvals.d.ts +1 -1
- package/lib/types/tools.d.ts +8 -2
- package/lib/utils/utils.js +7 -1
- package/package.json +376 -361
- package/scripts/codegen/__pycache__/compose.cpython-313.pyc +0 -0
- package/scripts/codegen/__pycache__/versioning.cpython-313.pyc +0 -0
- package/scripts/codegen/compose.py +208 -0
- package/scripts/codegen/generate_agents.py +202 -31
- package/scripts/codegen/generate_evals.py +2 -0
- package/scripts/codegen/generate_frontend_tools.py +35 -6
- package/scripts/codegen/generate_models.py +40 -15
- package/scripts/codegen/generate_sandbox_agents.py +76 -62
- package/scripts/codegen/generate_teams.py +178 -4
- package/scripts/codegen/generate_tools.py +6 -4
- package/scripts/gen_workers.py +279 -111
- package/scripts/generate-environments-types.py +404 -0
- package/lib/chat/prompt/InputFooter.d.ts +0 -58
- package/lib/chat/prompt/InputFooter.js +0 -194
- package/lib/chat/prompt/InputPromptFooter.d.ts +0 -27
- package/lib/chat/prompt/InputPromptFooter.js +0 -15
- package/lib/chat/prompt/InputPromptHeader.d.ts +0 -15
- package/lib/chat/prompt/InputPromptHeader.js +0 -15
- package/lib/chat/usage/TokenUsageBar.d.ts +0 -8
- package/lib/hooks/useRuntimes.d.ts +0 -5
- package/lib/hooks/useRuntimes.js +0 -34
- package/lib/jupyter/kernelsHandler.d.ts +0 -8
- package/lib/jupyter/kernelsHandler.js +0 -39
- package/lib/models/Dataset.d.ts +0 -16
- package/lib/utils/Cells.d.ts +0 -2
- package/lib/utils/Cells.js +0 -28
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright (c) 2025-2026 Datalayer, Inc.
|
|
3
|
+
* Distributed under the terms of the Modified BSD License.
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* `@datalayer/loop-plugin-document-view` — the document, one click away.
|
|
7
|
+
*
|
|
8
|
+
* The footer icon that opens the document beside the conversation. It shows
|
|
9
|
+
* only while a document is actually contributed, and requires the
|
|
10
|
+
* input-prompt plugin, whose footer the icon sits in.
|
|
11
|
+
*
|
|
12
|
+
* @module loop/plugins/document-view
|
|
13
|
+
*/
|
|
14
|
+
import { FileIcon } from '@primer/octicons-react';
|
|
15
|
+
import { defineViewPlugin } from '../view-switch';
|
|
16
|
+
export const DOCUMENT_VIEW_PLUGIN_NAME = '@datalayer/loop-plugin-document-view';
|
|
17
|
+
export const DocumentViewPlugin = defineViewPlugin({
|
|
18
|
+
key: 'document',
|
|
19
|
+
viewId: 'document',
|
|
20
|
+
displayName: 'Document view',
|
|
21
|
+
description: 'The document beside the chat, from the composer footer.',
|
|
22
|
+
icon: FileIcon,
|
|
23
|
+
tooltip: 'Show the document',
|
|
24
|
+
octicon: 'file',
|
|
25
|
+
emoji: '\u{1F4C4}',
|
|
26
|
+
order: 12,
|
|
27
|
+
});
|
|
28
|
+
export default DocumentViewPlugin;
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The button that opens the plugin graph, and closes it again.
|
|
3
|
+
*
|
|
4
|
+
* It belongs to the graph plugin rather than to the sidebar that renders it.
|
|
5
|
+
* The sidebar used to draw it and had to ask, by name, whether a graph view
|
|
6
|
+
* was mounted before showing it — which is a panel knowing about a plugin.
|
|
7
|
+
* Contributed here, the button simply goes when the plugin does.
|
|
8
|
+
*
|
|
9
|
+
* @module loop/plugins/graph/GraphToggle
|
|
10
|
+
*/
|
|
11
|
+
import type { JSX } from 'react';
|
|
12
|
+
import type { LoopWorkspaceContext } from '../../core';
|
|
13
|
+
export type GraphToggleProps = {
|
|
14
|
+
/** The workspace, so the button can move it to the graph and back. */
|
|
15
|
+
workspace?: LoopWorkspaceContext;
|
|
16
|
+
};
|
|
17
|
+
export default function GraphToggle({ workspace, }: GraphToggleProps): JSX.Element | null;
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { useRef } from 'react';
|
|
3
|
+
import { Button } from '@primer/react';
|
|
4
|
+
import { GRAPH_VIEW_TYPE } from './viewType';
|
|
5
|
+
export default function GraphToggle({ workspace, }) {
|
|
6
|
+
// Where to go back to. Remembered rather than assumed: "back" should return
|
|
7
|
+
// to what the person was looking at, not to whichever view happens to be
|
|
8
|
+
// first.
|
|
9
|
+
const previous = useRef('');
|
|
10
|
+
if (!workspace) {
|
|
11
|
+
return null;
|
|
12
|
+
}
|
|
13
|
+
const onGraph = workspace.activeViewType === GRAPH_VIEW_TYPE;
|
|
14
|
+
return (_jsx(Button, { sx: { width: '100%' }, onClick: () => {
|
|
15
|
+
if (onGraph) {
|
|
16
|
+
workspace.setActiveViewType(previous.current);
|
|
17
|
+
return;
|
|
18
|
+
}
|
|
19
|
+
previous.current = workspace.activeViewType;
|
|
20
|
+
workspace.setActiveViewType(GRAPH_VIEW_TYPE);
|
|
21
|
+
}, children: onGraph ? 'Back to the workspace' : 'View plugin graph' }));
|
|
22
|
+
}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The plugin graph, as a workspace view.
|
|
3
|
+
*
|
|
4
|
+
* `@datalayer/reactor-graph` is generic and knows nothing about a workspace: it
|
|
5
|
+
* fills a `graph` slot and reads the platform it is rendered inside. This is
|
|
6
|
+
* the twenty lines that put that slot where the workspace shows things — a
|
|
7
|
+
* view — so the graph arrives through the same door as every other surface.
|
|
8
|
+
*
|
|
9
|
+
* The backend props are left out on purpose. They are what a host knows and the
|
|
10
|
+
* graph cannot; a workspace whose server plugins are not tracked here is better
|
|
11
|
+
* drawn as the frontend platform alone than as a frontend plus a guess.
|
|
12
|
+
*
|
|
13
|
+
* @module loop/plugins/graph/GraphView
|
|
14
|
+
*/
|
|
15
|
+
import type { JSX } from 'react';
|
|
16
|
+
export default function GraphView(): JSX.Element;
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { Box } from '@primer/react';
|
|
3
|
+
import { ReactorSlot } from '@datalayer/reactor/react';
|
|
4
|
+
export default function GraphView() {
|
|
5
|
+
return (_jsx(Box, { sx: { height: '100%', overflowY: 'auto', px: 4, py: 3 }, children: _jsx(ReactorSlot, { slot: "graph" }) }));
|
|
6
|
+
}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { ReactorReactOutput } from '@datalayer/reactor/react';
|
|
2
|
+
export { GRAPH_VIEW_TYPE } from './viewType';
|
|
3
|
+
export declare const GRAPH_PLUGIN_NAME = "@datalayer/loop-plugin-graph";
|
|
4
|
+
export declare const GraphViewPlugin: import("@datalayer/reactor").ReactorPlugin<Record<string, never>, unknown, ReactorReactOutput>;
|
|
5
|
+
export default GraphViewPlugin;
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
/*
|
|
3
|
+
* Copyright (c) 2025-2026 Datalayer, Inc.
|
|
4
|
+
* Distributed under the terms of the Modified BSD License.
|
|
5
|
+
*/
|
|
6
|
+
/**
|
|
7
|
+
* `@datalayer/loop-plugin-graph` — the plugin graph, as a view.
|
|
8
|
+
*
|
|
9
|
+
* A thin adapter over the reusable `@datalayer/reactor-graph`: that plugin
|
|
10
|
+
* draws the graph into a `graph` slot, and this one gives the slot a place in
|
|
11
|
+
* the workspace. Keeping them apart is what lets the graph stay generic — it
|
|
12
|
+
* is drawn the same way in a music store and in an agent workspace.
|
|
13
|
+
*
|
|
14
|
+
* @module loop/plugins/graph
|
|
15
|
+
*/
|
|
16
|
+
import { WorkflowIcon } from '@primer/octicons-react';
|
|
17
|
+
import { configurePlugin, contribution, definePlugin, } from '@datalayer/reactor';
|
|
18
|
+
import { GraphPlugin } from '@datalayer/reactor-graph';
|
|
19
|
+
import { MANAGER_ACTIONS_SLOT } from '@datalayer/reactor-manager';
|
|
20
|
+
import { LoopCommand, LoopViewType, } from '../../core';
|
|
21
|
+
import GraphToggle from './GraphToggle';
|
|
22
|
+
import { GRAPH_VIEW_TYPE } from './viewType';
|
|
23
|
+
export { GRAPH_VIEW_TYPE } from './viewType';
|
|
24
|
+
export const GRAPH_PLUGIN_NAME = '@datalayer/loop-plugin-graph';
|
|
25
|
+
export const GraphViewPlugin = definePlugin({
|
|
26
|
+
name: GRAPH_PLUGIN_NAME,
|
|
27
|
+
displayName: 'Plugin graph',
|
|
28
|
+
description: 'Draws the plugins, their dependencies and their extension points.',
|
|
29
|
+
octicon: 'workflow',
|
|
30
|
+
emoji: '\u{1F578}',
|
|
31
|
+
/*
|
|
32
|
+
* The generic graph plugin is pulled in rather than assumed: mounting this
|
|
33
|
+
* one is enough, whether or not the host remembered the other.
|
|
34
|
+
*
|
|
35
|
+
* Its own "View the plugin graph" command is turned off, because this plugin
|
|
36
|
+
* already contributes one that works here. The generic command asks the host
|
|
37
|
+
* to route by dispatching an event; this workspace answers by setting the
|
|
38
|
+
* active view directly, and two palette entries for one action — one of them
|
|
39
|
+
* a hopeful event dispatch nothing in the loop listened for — is how the
|
|
40
|
+
* palette came to have an entry that did nothing.
|
|
41
|
+
*/
|
|
42
|
+
dependencies: [configurePlugin(GraphPlugin, { registerCommand: false })],
|
|
43
|
+
/*
|
|
44
|
+
* The way in, contributed beside the view it opens.
|
|
45
|
+
*
|
|
46
|
+
* It used to be drawn by the plugins panel, which had to ask whether a graph
|
|
47
|
+
* view existed before showing it — a panel checking for a plugin it knows by
|
|
48
|
+
* name. Owning the button here means switching this plugin off takes the
|
|
49
|
+
* button with it, and the manager needs to know nothing about graphs.
|
|
50
|
+
*/
|
|
51
|
+
build: () => ({
|
|
52
|
+
components: [
|
|
53
|
+
{
|
|
54
|
+
id: 'graph-toggle',
|
|
55
|
+
slot: MANAGER_ACTIONS_SLOT,
|
|
56
|
+
Component: ({ workspace }) => (_jsx(GraphToggle, { workspace: workspace })),
|
|
57
|
+
},
|
|
58
|
+
],
|
|
59
|
+
}),
|
|
60
|
+
contributes: [
|
|
61
|
+
contribution(LoopViewType, {
|
|
62
|
+
viewType: GRAPH_VIEW_TYPE,
|
|
63
|
+
title: 'Plugin graph',
|
|
64
|
+
icon: WorkflowIcon,
|
|
65
|
+
// Last: it is about the workspace rather than part of the work.
|
|
66
|
+
order: 900,
|
|
67
|
+
load: () => import('./GraphView'),
|
|
68
|
+
}, { id: 'graph', order: 900 }),
|
|
69
|
+
contribution(LoopCommand, {
|
|
70
|
+
name: 'graph',
|
|
71
|
+
description: 'Show the plugin graph',
|
|
72
|
+
group: 'Session',
|
|
73
|
+
keybinding: 'Mod+Alt+G',
|
|
74
|
+
run: async ({ workspace }) => {
|
|
75
|
+
workspace.setActiveViewType(GRAPH_VIEW_TYPE);
|
|
76
|
+
},
|
|
77
|
+
}, { id: 'graph' }),
|
|
78
|
+
],
|
|
79
|
+
});
|
|
80
|
+
export default GraphViewPlugin;
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The graph view's id, on its own.
|
|
3
|
+
*
|
|
4
|
+
* Split out so the button can name the view without importing the plugin that
|
|
5
|
+
* declares it — which would be a cycle, since the plugin imports the button.
|
|
6
|
+
*
|
|
7
|
+
* @module loop/plugins/graph/viewType
|
|
8
|
+
*/
|
|
9
|
+
/** The view the graph plugin contributes. */
|
|
10
|
+
export declare const GRAPH_VIEW_TYPE = "graph";
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright (c) 2025-2026 Datalayer, Inc.
|
|
3
|
+
* Distributed under the terms of the Modified BSD License.
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* The graph view's id, on its own.
|
|
7
|
+
*
|
|
8
|
+
* Split out so the button can name the view without importing the plugin that
|
|
9
|
+
* declares it — which would be a cycle, since the plugin imports the button.
|
|
10
|
+
*
|
|
11
|
+
* @module loop/plugins/graph/viewType
|
|
12
|
+
*/
|
|
13
|
+
/** The view the graph plugin contributes. */
|
|
14
|
+
export const GRAPH_VIEW_TYPE = 'graph';
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The composer, rendered from the props the chat view assembled.
|
|
3
|
+
*
|
|
4
|
+
* Plus whatever was hung on it: the `LoopPromptPanel` point takes panels for
|
|
5
|
+
* above and below the composer, and this view stacks them inside the prompt's
|
|
6
|
+
* own card — so a floating composer carries its panels with it. The page
|
|
7
|
+
* layout's current-turn panel is the first of these; the point is open to any
|
|
8
|
+
* plugin.
|
|
9
|
+
*
|
|
10
|
+
* @module loop/plugins/input-prompt/ComposerView
|
|
11
|
+
*/
|
|
12
|
+
import type { JSX } from 'react';
|
|
13
|
+
import { type LoopChatComposerProps } from '../../core';
|
|
14
|
+
export declare function ComposerView({ workspace, composer, }: LoopChatComposerProps): JSX.Element;
|
|
15
|
+
export default ComposerView;
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { jsx as _jsx, Fragment as _Fragment } from "react/jsx-runtime";
|
|
2
|
+
import { useMemo } from 'react';
|
|
3
|
+
import { Box } from '@datalayer/primer-addons';
|
|
4
|
+
import { useContributions } from '@datalayer/reactor/react';
|
|
5
|
+
import { InputPrompt } from '../../../chat/prompt/InputPrompt';
|
|
6
|
+
import { LoopPromptPanel, } from '../../core';
|
|
7
|
+
function byOrder(left, right) {
|
|
8
|
+
return (left.value.order ?? 100) - (right.value.order ?? 100);
|
|
9
|
+
}
|
|
10
|
+
export function ComposerView({ workspace, composer, }) {
|
|
11
|
+
const panels = useContributions(LoopPromptPanel);
|
|
12
|
+
const { above, below } = useMemo(() => {
|
|
13
|
+
const sorted = [...panels].sort(byOrder);
|
|
14
|
+
return {
|
|
15
|
+
above: sorted.filter(entry => entry.value.placement === 'above'),
|
|
16
|
+
below: sorted.filter(entry => entry.value.placement !== 'above'),
|
|
17
|
+
};
|
|
18
|
+
}, [panels]);
|
|
19
|
+
const stack = (entries) => entries.length > 0 ? (_jsx(_Fragment, { children: entries.map(entry => {
|
|
20
|
+
const Panel = entry.value.Component;
|
|
21
|
+
return _jsx(Panel, { workspace: workspace }, entry.value.id);
|
|
22
|
+
}) })) : undefined;
|
|
23
|
+
return (_jsx(Box, { sx: { flex: '0 0 auto' }, children: _jsx(InputPrompt, { ...composer, leadingPanel: stack(above), trailingPanel: stack(below) }) }));
|
|
24
|
+
}
|
|
25
|
+
export default ComposerView;
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
export declare const INPUT_PROMPT_PLUGIN_NAME = "@datalayer/loop-plugin-input-prompt";
|
|
2
|
+
/**
|
|
3
|
+
* What a host may set on the composer.
|
|
4
|
+
*/
|
|
5
|
+
export type InputPromptPluginConfig = {
|
|
6
|
+
/**
|
|
7
|
+
* Called once — the first time a person actually sends a message through
|
|
8
|
+
* this composer — and never again after, for the life of the mounted
|
|
9
|
+
* workspace.
|
|
10
|
+
*
|
|
11
|
+
* Typing does not count, and neither does a suggestion merely landing in
|
|
12
|
+
* the box: only a real send. This is the one place that sees every send
|
|
13
|
+
* regardless of which surface is open beside the chat, which is what
|
|
14
|
+
* makes it the right point for a host to notice "the conversation has
|
|
15
|
+
* started" rather than each editor plugin guessing at it independently.
|
|
16
|
+
*
|
|
17
|
+
* The usual reason to want it: a page that shows something *around* the
|
|
18
|
+
* workspace before the first message — an empty-state layout, a column
|
|
19
|
+
* beside it — and wants to react (give the editor the room that layout
|
|
20
|
+
* was holding, say) exactly once, when the workspace stops being empty.
|
|
21
|
+
*/
|
|
22
|
+
firstPromptHook?: () => void;
|
|
23
|
+
};
|
|
24
|
+
export declare const InputPromptPlugin: import("@datalayer/reactor").ReactorPlugin<InputPromptPluginConfig, unknown, unknown>;
|
|
25
|
+
export default InputPromptPlugin;
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { Suspense, lazy } from 'react';
|
|
3
|
+
import { contribution, definePlugin } from '@datalayer/reactor';
|
|
4
|
+
import { LoopChatComposer, LoopPromptPanel, } from '../../core';
|
|
5
|
+
export const INPUT_PROMPT_PLUGIN_NAME = '@datalayer/loop-plugin-input-prompt';
|
|
6
|
+
const LazyComposerView = lazy(() => import('./ComposerView'));
|
|
7
|
+
/** The lazy boundary, so the point's consumers need no Suspense of theirs. */
|
|
8
|
+
function ComposerView(props) {
|
|
9
|
+
return (_jsx(Suspense, { fallback: null, children: _jsx(LazyComposerView, { ...props }) }));
|
|
10
|
+
}
|
|
11
|
+
export const InputPromptPlugin = definePlugin({
|
|
12
|
+
name: INPUT_PROMPT_PLUGIN_NAME,
|
|
13
|
+
config: {},
|
|
14
|
+
displayName: 'Input Prompt',
|
|
15
|
+
description: 'The composer under (or over) the conversation.',
|
|
16
|
+
octicon: 'pencil',
|
|
17
|
+
emoji: '\u{270F}\u{FE0F}',
|
|
18
|
+
// The composer's own opening: panels hung above or below it, inside its
|
|
19
|
+
// card. Declared here so the graph shows the point before anything fills
|
|
20
|
+
// it; the page layout's current-turn panel is what normally does.
|
|
21
|
+
contributionPoints: [LoopPromptPanel],
|
|
22
|
+
contributes: [
|
|
23
|
+
contribution(LoopChatComposer, { id: 'input-prompt', Component: ComposerView }, { id: 'input-prompt' }),
|
|
24
|
+
],
|
|
25
|
+
});
|
|
26
|
+
export default InputPromptPlugin;
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright (c) 2025-2026 Datalayer, Inc.
|
|
3
|
+
* Distributed under the terms of the Modified BSD License.
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* `@datalayer/loop-plugin-models` — which model is answering.
|
|
7
|
+
*
|
|
8
|
+
* @module loop/plugins/models
|
|
9
|
+
*/
|
|
10
|
+
import { contribution, definePlugin } from '@datalayer/reactor';
|
|
11
|
+
import { LoopCommand } from '../../core';
|
|
12
|
+
export const MODELS_PLUGIN_NAME = '@datalayer/loop-plugin-models';
|
|
13
|
+
/*
|
|
14
|
+
* No header chip any more.
|
|
15
|
+
*
|
|
16
|
+
* The plugin used to put a model dropdown in the workspace header, and the
|
|
17
|
+
* prompt's footer grew one of its own — two controls choosing one model,
|
|
18
|
+
* which would eventually disagree. The footer's is the one that survives: it
|
|
19
|
+
* sits with the tools and skills that decide what the next message does, and
|
|
20
|
+
* it is on screen in every placement of the prompt, floating included.
|
|
21
|
+
*/
|
|
22
|
+
export const ModelsPlugin = definePlugin({
|
|
23
|
+
name: MODELS_PLUGIN_NAME,
|
|
24
|
+
displayName: 'Models',
|
|
25
|
+
description: 'Which model answers, from the agentspecs catalog.',
|
|
26
|
+
octicon: 'cpu',
|
|
27
|
+
emoji: '\u{1F9E0}',
|
|
28
|
+
contributes: [
|
|
29
|
+
contribution(LoopCommand, {
|
|
30
|
+
name: 'models',
|
|
31
|
+
aliases: ['model'],
|
|
32
|
+
description: 'Show the models available to this session',
|
|
33
|
+
group: 'Agents',
|
|
34
|
+
keybinding: 'Mod+Alt+M',
|
|
35
|
+
run: async ({ workspace }) => {
|
|
36
|
+
const response = await fetch(`${workspace.serverUrl}/api/v1/configure/models`);
|
|
37
|
+
if (!response.ok) {
|
|
38
|
+
return { content: 'The model catalogue is unavailable.' };
|
|
39
|
+
}
|
|
40
|
+
const payload = await response.json();
|
|
41
|
+
const reachable = (payload.models ?? []).filter((model) => model.available !== false).length;
|
|
42
|
+
return {
|
|
43
|
+
content: `${reachable} of ${(payload.models ?? []).length} models are ready. Pick one under the prompt.`,
|
|
44
|
+
};
|
|
45
|
+
},
|
|
46
|
+
}, { id: 'models' }),
|
|
47
|
+
],
|
|
48
|
+
});
|
|
49
|
+
export default ModelsPlugin;
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The notebook view: the ephemeral notebook, bound to the sandbox the base
|
|
3
|
+
* plugin owns.
|
|
4
|
+
*
|
|
5
|
+
* @module loop/plugins/notebook/NotebookView
|
|
6
|
+
*/
|
|
7
|
+
import type { JSX } from 'react';
|
|
8
|
+
import { type ChatSurfaceProps } from '../../core';
|
|
9
|
+
export default function NotebookView({ workspace, }: ChatSurfaceProps): JSX.Element;
|
|
@@ -0,0 +1,189 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { useEffect, useMemo, useRef } from 'react';
|
|
3
|
+
import { useContributions, useSignalValue } from '@datalayer/reactor/react';
|
|
4
|
+
import { Box, Text } from '@primer/react';
|
|
5
|
+
import { EphemeralNotebook } from '../../../chat/notebook/EphemeralNotebook';
|
|
6
|
+
import { LoopNotebookToolbar, LoopNotebookToolbarItem, LoopOpeningNotebook, } from '../../core';
|
|
7
|
+
import { useEditorToolbar } from '../../core/toolbar';
|
|
8
|
+
import { openingCode, openingNotebook } from './openingNotebook';
|
|
9
|
+
import { useSandboxService } from '../agents';
|
|
10
|
+
export default function NotebookView({ workspace, }) {
|
|
11
|
+
const service = useSandboxService();
|
|
12
|
+
const snapshot = useSignalValue(service.snapshot);
|
|
13
|
+
// Named once: it identifies the notebook to its store, and it is what a
|
|
14
|
+
// toolbar item is handed so it can report on *this* notebook.
|
|
15
|
+
const notebookId = workspace.surfaceId;
|
|
16
|
+
// The toolbar is not this view's to draw. It offers the point, and a plugin
|
|
17
|
+
// provides the bar; with that plugin switched off there is no toolbar here
|
|
18
|
+
// at all, not an empty one. Items come from whoever adds to it — the toolbar
|
|
19
|
+
// plugin's kernel light, the chat's agent actions — and this view names none
|
|
20
|
+
// of them. It used to hardcode two buttons that submitted prompts, which
|
|
21
|
+
// meant the notebook knew about the chat.
|
|
22
|
+
const toolbar = useEditorToolbar(LoopNotebookToolbar, LoopNotebookToolbarItem, {
|
|
23
|
+
workspace,
|
|
24
|
+
editorId: notebookId,
|
|
25
|
+
});
|
|
26
|
+
/*
|
|
27
|
+
* One document per mount, built before anything can return.
|
|
28
|
+
*
|
|
29
|
+
* `EphemeralNotebook` holds on to the object it is first handed and edits it
|
|
30
|
+
* in place, so a shared literal would be a shared notebook — hence the memo.
|
|
31
|
+
* It sits up here with the other hooks because the guard below returns
|
|
32
|
+
* early, and a hook after an early return runs on some renders and not
|
|
33
|
+
* others, which is the one thing React cannot tolerate.
|
|
34
|
+
*/
|
|
35
|
+
/*
|
|
36
|
+
* A host's own opening notebook wins over the plugin's one cell.
|
|
37
|
+
*
|
|
38
|
+
* Read from the `LoopOpeningNotebook` point: a page whose argument needs
|
|
39
|
+
* several cells and an output in the first viewport contributes them, and
|
|
40
|
+
* this view opens on that instead. First contribution wins. What to run so
|
|
41
|
+
* the kernel agrees with the cells comes with it, or is the code cells'
|
|
42
|
+
* own source joined top to bottom.
|
|
43
|
+
*/
|
|
44
|
+
const openingEntries = useContributions(LoopOpeningNotebook);
|
|
45
|
+
const contributedOpening = openingEntries[0]?.value;
|
|
46
|
+
const opening = useMemo(() => contributedOpening ? contributedOpening.notebook() : openingNotebook(), [contributedOpening]);
|
|
47
|
+
const primeCode = useMemo(() => {
|
|
48
|
+
if (!contributedOpening) {
|
|
49
|
+
return openingCode();
|
|
50
|
+
}
|
|
51
|
+
if (contributedOpening.prime !== undefined) {
|
|
52
|
+
return contributedOpening.prime;
|
|
53
|
+
}
|
|
54
|
+
return opening.cells
|
|
55
|
+
.filter(cell => cell.cell_type === 'code')
|
|
56
|
+
.map(cell => Array.isArray(cell.source) ? cell.source.join('') : cell.source)
|
|
57
|
+
.join('\n');
|
|
58
|
+
}, [contributedOpening, opening]);
|
|
59
|
+
/*
|
|
60
|
+
* Run the opening cell on the sandbox, once it has one.
|
|
61
|
+
*
|
|
62
|
+
* The notebook opens showing that cell as already executed — `[1]`, with its
|
|
63
|
+
* frame printed underneath — and until this runs, that is a picture of a
|
|
64
|
+
* session rather than one: `sales` is on screen and undefined, so the first
|
|
65
|
+
* thing the agent or the reader does with it raises `NameError`. Executing
|
|
66
|
+
* the same source the cell displays makes the kernel agree with the page.
|
|
67
|
+
*
|
|
68
|
+
* Through the sandbox service rather than the notebook's own run command,
|
|
69
|
+
* because the two share a kernel and only one of them exists this early: the
|
|
70
|
+
* service is ready the moment the sandbox is, while the notebook is still
|
|
71
|
+
* mounting its editor. The output goes to the service's own execution log,
|
|
72
|
+
* so the cell keeps the result it was born with rather than gaining a second
|
|
73
|
+
* copy.
|
|
74
|
+
*
|
|
75
|
+
* Keyed on the kernel, so a target switch — which is a new kernel — primes
|
|
76
|
+
* the new one, and a re-render does not run it again.
|
|
77
|
+
*/
|
|
78
|
+
const primed = useRef(null);
|
|
79
|
+
useEffect(() => {
|
|
80
|
+
const kernelId = snapshot.kernelId;
|
|
81
|
+
if (snapshot.state !== 'running' || !kernelId) {
|
|
82
|
+
return;
|
|
83
|
+
}
|
|
84
|
+
if (primed.current === kernelId) {
|
|
85
|
+
return;
|
|
86
|
+
}
|
|
87
|
+
primed.current = kernelId;
|
|
88
|
+
void service.execute(primeCode).catch((error) => {
|
|
89
|
+
// Not worth a banner. The notebook still shows what it showed; what a
|
|
90
|
+
// reader loses is the variable, and the agent will say so plainly the
|
|
91
|
+
// first time it looks.
|
|
92
|
+
console.warn('[loop] could not prime the opening cell', error);
|
|
93
|
+
});
|
|
94
|
+
}, [service, snapshot.state, snapshot.kernelId, primeCode]);
|
|
95
|
+
// The switcher's `canOpen` gate should have kept this view shut, but a
|
|
96
|
+
// sandbox can go away while it is on screen — say so rather than rendering a
|
|
97
|
+
// notebook wired to nothing.
|
|
98
|
+
if (snapshot.state !== 'running') {
|
|
99
|
+
return (_jsx(Box, { sx: {
|
|
100
|
+
height: '100%',
|
|
101
|
+
display: 'flex',
|
|
102
|
+
alignItems: 'center',
|
|
103
|
+
justifyContent: 'center',
|
|
104
|
+
color: 'fg.muted',
|
|
105
|
+
fontSize: 1,
|
|
106
|
+
px: 4,
|
|
107
|
+
textAlign: 'center',
|
|
108
|
+
}, children: _jsx(Text, { children: "The notebook needs a running sandbox. Open the Sandbox view to see what it is doing." }) }));
|
|
109
|
+
}
|
|
110
|
+
// A browser sandbox already owns its kernel; binding to that manager is what
|
|
111
|
+
// puts the agent's executions and the reader's cells in the same one. A
|
|
112
|
+
// server sandbox is reached by URL, as before, and returns null here.
|
|
113
|
+
const browserManager = service.getServiceManager() ??
|
|
114
|
+
undefined;
|
|
115
|
+
return (_jsx(Box, { sx: {
|
|
116
|
+
height: '100%',
|
|
117
|
+
minHeight: 0,
|
|
118
|
+
/*
|
|
119
|
+
A height for the Lumino widgets, forced.
|
|
120
|
+
|
|
121
|
+
WORKAROUND, and knowingly a blunt one. The notebook renders inside a
|
|
122
|
+
chain of Lumino widgets — `.jp-NotebookPanel` holds `.jp-Notebook`,
|
|
123
|
+
which is absolutely positioned and therefore sized entirely by its
|
|
124
|
+
parent. Lumino sets those sizes itself, from a resize it expects to
|
|
125
|
+
be told about; when that message does not arrive, or arrives before
|
|
126
|
+
the panel has a box of its own, the parent measures zero and the
|
|
127
|
+
absolutely positioned notebook inside it has nothing to fill. The
|
|
128
|
+
cells are in the DOM the whole time. Nothing is on screen.
|
|
129
|
+
|
|
130
|
+
It is intermittent, which is what makes it worth a hack: measured
|
|
131
|
+
side by side on a good load, every element here — panel, notebook,
|
|
132
|
+
cell, editor — has exactly the geometry it has locally, so there is
|
|
133
|
+
no wrong number to correct, only a number that sometimes never
|
|
134
|
+
arrives. Declaring it in CSS means the browser resolves it on layout
|
|
135
|
+
whether or not Lumino ever says anything.
|
|
136
|
+
|
|
137
|
+
`!important` because Lumino writes its own inline sizes and would
|
|
138
|
+
otherwise win. Scoped to this view, so it is the LOOP workspace's
|
|
139
|
+
notebook that is pinned and not every notebook in the package — the
|
|
140
|
+
real fix belongs in the widget layer, and this must not make that
|
|
141
|
+
harder to find.
|
|
142
|
+
*/
|
|
143
|
+
'& .jp-NotebookPanel': {
|
|
144
|
+
height: '100% !important',
|
|
145
|
+
minHeight: 0,
|
|
146
|
+
},
|
|
147
|
+
/* The panel is the only thing between the flex column above and the
|
|
148
|
+
absolutely positioned notebook below, so it has to be a box that
|
|
149
|
+
fills rather than one that wraps its content. */
|
|
150
|
+
'& .dla-Box-Notebook': {
|
|
151
|
+
display: 'flex',
|
|
152
|
+
flexDirection: 'column',
|
|
153
|
+
minHeight: 0,
|
|
154
|
+
},
|
|
155
|
+
}, children: _jsx(EphemeralNotebook
|
|
156
|
+
/*
|
|
157
|
+
Opened on a small analysis that has already run, not on a blank cell.
|
|
158
|
+
|
|
159
|
+
Every opener this agent offers refers to "this notebook" — analyze
|
|
160
|
+
this dataset, find the anomalies, plot revenue by region — and
|
|
161
|
+
against an empty document those are questions with no answer. Built
|
|
162
|
+
once per mount: the notebook component keeps the object it is given
|
|
163
|
+
and edits it in place.
|
|
164
|
+
*/
|
|
165
|
+
, {
|
|
166
|
+
/*
|
|
167
|
+
Opened on a small analysis that has already run, not on a blank cell.
|
|
168
|
+
|
|
169
|
+
Every opener this agent offers refers to "this notebook" — analyze
|
|
170
|
+
this dataset, find the anomalies, plot revenue by region — and
|
|
171
|
+
against an empty document those are questions with no answer. Built
|
|
172
|
+
once per mount: the notebook component keeps the object it is given
|
|
173
|
+
and edits it in place.
|
|
174
|
+
*/
|
|
175
|
+
nbformat: opening,
|
|
176
|
+
// The entry point owns the theme; a second provider here would fight
|
|
177
|
+
// it over BaseStyles and font tokens (§3.5, §3.6).
|
|
178
|
+
inheritTheme: true, notebookId: notebookId, serviceManager: browserManager,
|
|
179
|
+
// Join the sandbox's kernel rather than starting a rival one.
|
|
180
|
+
kernelId: browserManager ? snapshot.kernelId : undefined, showToolbar: toolbar.present, toolbarExtraItems: toolbar.items, runtimeOverride: !browserManager && snapshot.jupyterUrl
|
|
181
|
+
? {
|
|
182
|
+
baseUrl: snapshot.jupyterUrl,
|
|
183
|
+
// Without the token the server refuses every request and the
|
|
184
|
+
// cell runs into silence — no kernel, no output, no error the
|
|
185
|
+
// reader can act on.
|
|
186
|
+
token: snapshot.jupyterToken,
|
|
187
|
+
}
|
|
188
|
+
: undefined }) }));
|
|
189
|
+
}
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright (c) 2025-2026 Datalayer, Inc.
|
|
3
|
+
* Distributed under the terms of the Modified BSD License.
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* `@datalayer/loop-plugin-notebook` — a notebook editor, beside the chat.
|
|
7
|
+
*
|
|
8
|
+
* Contributed to the chat rather than to the workspace: a notebook is what the
|
|
9
|
+
* conversation is about, and a person reading a reply wants the cell it just
|
|
10
|
+
* changed in view, not one tab away.
|
|
11
|
+
*
|
|
12
|
+
* It declares the sandbox plugin as a dependency, which is the point: the
|
|
13
|
+
* relationship is in the extension graph rather than in prose, and the reactor
|
|
14
|
+
* pulls the base plugin in whether or not the host remembered to mount it.
|
|
15
|
+
*
|
|
16
|
+
* @module loop/plugins/notebook
|
|
17
|
+
*/
|
|
18
|
+
import { RowsIcon } from '@primer/octicons-react';
|
|
19
|
+
import { contribution, definePlugin } from '@datalayer/reactor';
|
|
20
|
+
import { LoopCommand, LoopEditorView, LoopFrontendTool, LoopOpeningNotebook, requestSurface, LoopNotebookToolbar, } from '../../core';
|
|
21
|
+
import { AgentsPlugin } from '../agents';
|
|
22
|
+
export const NOTEBOOK_PLUGIN_NAME = '@datalayer/loop-plugin-notebook';
|
|
23
|
+
export const NotebookPlugin = definePlugin({
|
|
24
|
+
name: NOTEBOOK_PLUGIN_NAME,
|
|
25
|
+
displayName: 'Notebook editor',
|
|
26
|
+
description: 'A notebook beside the chat, on the session\u2019s kernel.',
|
|
27
|
+
octicon: 'rows',
|
|
28
|
+
emoji: '\u{1F4D3}',
|
|
29
|
+
// The sandbox is a hard dependency: a notebook with no kernel is a text
|
|
30
|
+
// file. The shell and the chat are extended through their points instead —
|
|
31
|
+
// a dependency would take this plugin down with them, and unticking the
|
|
32
|
+
// chat must leave the notebook standing.
|
|
33
|
+
dependencies: [AgentsPlugin],
|
|
34
|
+
// Declared, not merely used: the registry knows who contributed to a
|
|
35
|
+
// point, it cannot know who opened it. Declaring it is also what makes
|
|
36
|
+
// the notebook toolbar visible on the plugin graph before anything has
|
|
37
|
+
// filled it — which is exactly when knowing it exists is most useful.
|
|
38
|
+
// And the opening notebook: what the editor holds before anyone types. The
|
|
39
|
+
// plugin ships one cell with a result; a host whose argument needs several
|
|
40
|
+
// contributes its own, and the view opens on that instead.
|
|
41
|
+
contributionPoints: [LoopNotebookToolbar, LoopOpeningNotebook],
|
|
42
|
+
contributes: [
|
|
43
|
+
// The editor: one entry in the shell's segmented control, one view in
|
|
44
|
+
// the editor column.
|
|
45
|
+
contribution(LoopEditorView, {
|
|
46
|
+
surfaceId: 'notebook',
|
|
47
|
+
title: 'Notebook',
|
|
48
|
+
icon: RowsIcon,
|
|
49
|
+
order: 10,
|
|
50
|
+
canOpen: workspace => workspace.sandbox.state === 'running',
|
|
51
|
+
unavailableReason: () => 'Needs a running sandbox',
|
|
52
|
+
load: () => import('./NotebookView'),
|
|
53
|
+
}, { id: 'notebook', order: 10 }),
|
|
54
|
+
contribution(LoopCommand, {
|
|
55
|
+
name: 'notebook',
|
|
56
|
+
description: 'Open the notebook beside the chat',
|
|
57
|
+
group: 'Open',
|
|
58
|
+
keybinding: 'Mod+Alt+N',
|
|
59
|
+
run: async ({ workspace }) => {
|
|
60
|
+
// The chat first, because the surface lives beside it; then the
|
|
61
|
+
// surface itself. Switching the view alone leaves whichever surface
|
|
62
|
+
// was already open, so on the chat view — where a reader usually is
|
|
63
|
+
// — this used to do nothing at all.
|
|
64
|
+
workspace.setActiveViewType('chat');
|
|
65
|
+
if (!requestSurface('notebook')) {
|
|
66
|
+
throw new Error('No chat is on screen to open the notebook beside.');
|
|
67
|
+
}
|
|
68
|
+
},
|
|
69
|
+
}, { id: 'notebook' }),
|
|
70
|
+
],
|
|
71
|
+
build: ctx => {
|
|
72
|
+
/*
|
|
73
|
+
* The tools — what lets the agent create, edit and run cells —
|
|
74
|
+
* contributed when their module arrives. `notebookHooks` imports
|
|
75
|
+
* `@datalayer/jupyter-react` at module load, which is most of Jupyter's
|
|
76
|
+
* frontend; a static contribution would put that whole graph in front
|
|
77
|
+
* of the shell's first paint. The reactor takes contributions at any
|
|
78
|
+
* time and bumps its revision, so the chat re-reads its tools point
|
|
79
|
+
* the moment these land — the same arrangement as the document's
|
|
80
|
+
* lexical tools.
|
|
81
|
+
*/
|
|
82
|
+
void import('../../../tools/adapters/agent-runtimes/notebookHooks').then(({ createNotebookTools }) => {
|
|
83
|
+
ctx.contribute(LoopFrontendTool, {
|
|
84
|
+
id: 'notebook-tools',
|
|
85
|
+
tools: workspace => createNotebookTools(workspace.surfaceId),
|
|
86
|
+
}, { id: 'notebook-tools' });
|
|
87
|
+
});
|
|
88
|
+
return {};
|
|
89
|
+
},
|
|
90
|
+
});
|
|
91
|
+
export default NotebookPlugin;
|