@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,150 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The LOOP workspace: a blank shell, and everything else on a checkbox.
|
|
3
|
+
*
|
|
4
|
+
* Two claims made checkable in one page.
|
|
5
|
+
*
|
|
6
|
+
* The **sidebar** says the extension model is real. The workspace itself
|
|
7
|
+
* renders one view host and some slots — no prompt, no chat, no editor. Untick
|
|
8
|
+
* the chat and the prompt goes with it, because the prompt is the chat's.
|
|
9
|
+
* Untick the notebook and it leaves the chat's editor picker. The panel doing
|
|
10
|
+
* the unticking is itself a plugin, which is the joke and also the proof — and
|
|
11
|
+
* the button above it draws the whole graph, so the relationships being claimed
|
|
12
|
+
* here can be looked at rather than taken on trust.
|
|
13
|
+
*
|
|
14
|
+
* The **browser / local / cloud** control in the header says the sandbox is an
|
|
15
|
+
* interface rather than one implementation with a type annotation. `browser` is
|
|
16
|
+
* Pyodide in this page; `local` and `cloud` are server-backed and differ in the
|
|
17
|
+
* variant the server runs. The notebook binds to whichever kernel is there, and
|
|
18
|
+
* does not know the difference.
|
|
19
|
+
*
|
|
20
|
+
* It starts on `browser` because that is the target that needs nothing: no
|
|
21
|
+
* server, no runtime, no credentials. Move it once there is something to move
|
|
22
|
+
* it to.
|
|
23
|
+
*
|
|
24
|
+
* @module examples/LoopWorkspaceExample
|
|
25
|
+
*/
|
|
26
|
+
import type { JSX } from 'react';
|
|
27
|
+
import { type ReactNode } from 'react';
|
|
28
|
+
import { type SandboxTarget } from '../loop/plugins/agents';
|
|
29
|
+
export type LoopWorkspaceExampleProps = {
|
|
30
|
+
/** Server backing the session. Defaults to this page's origin. */
|
|
31
|
+
serverUrl?: string;
|
|
32
|
+
/**
|
|
33
|
+
* Render without wrapping the workspace in a theme provider.
|
|
34
|
+
*
|
|
35
|
+
* For a host that owns the theme — the landing page embeds this example, and
|
|
36
|
+
* `ThemedProvider` does not merely provide a theme: it writes the examples'
|
|
37
|
+
* own choice into the shared primer-addons singleton, which is where that
|
|
38
|
+
* host reads its theme from. Mounting this unconditionally overwrote the
|
|
39
|
+
* reader's theme the moment the workspace finished loading.
|
|
40
|
+
*/
|
|
41
|
+
inheritTheme?: boolean;
|
|
42
|
+
/**
|
|
43
|
+
* Which editor opens beside the chat.
|
|
44
|
+
*
|
|
45
|
+
* `'none'` leaves the chat full width; the others open that editor as soon
|
|
46
|
+
* as it can be opened — its plugin has loaded and, for these two, a sandbox
|
|
47
|
+
* is running.
|
|
48
|
+
*/
|
|
49
|
+
defaultEditor?: 'none' | 'notebook' | 'document';
|
|
50
|
+
/** Agent to start with. */
|
|
51
|
+
agentId?: string;
|
|
52
|
+
/** Where the sandbox starts. Defaults to the browser, which needs nothing. */
|
|
53
|
+
initialTarget?: SandboxTarget;
|
|
54
|
+
/**
|
|
55
|
+
* Whether a reader may choose where the agent runs.
|
|
56
|
+
*
|
|
57
|
+
* True by default: the segmented control in the header is most of what this
|
|
58
|
+
* example is for.
|
|
59
|
+
*
|
|
60
|
+
* False pins the workspace to the browser and hides the control. That is
|
|
61
|
+
* what a public page needs — a visitor with no account cannot reach a local
|
|
62
|
+
* server or a Datalayer runtime, so offering all four is offering three
|
|
63
|
+
* doors of which two are locked.
|
|
64
|
+
*/
|
|
65
|
+
showAgentVariants?: boolean;
|
|
66
|
+
/**
|
|
67
|
+
* The team to work with, by id.
|
|
68
|
+
*
|
|
69
|
+
* Given one, the header gains a control for choosing which member the next
|
|
70
|
+
* prompt reaches. `jupyter` is the notebook's six specialists — analyst,
|
|
71
|
+
* reviewer, writer, decks, tutor, compactor — behind a supervising analyst.
|
|
72
|
+
*/
|
|
73
|
+
teamId?: string;
|
|
74
|
+
/**
|
|
75
|
+
* Whether the plugin graph is available.
|
|
76
|
+
*
|
|
77
|
+
* True by default: the graph is one of the things this example exists to
|
|
78
|
+
* show, and switching it off in the sidebar is part of that.
|
|
79
|
+
*
|
|
80
|
+
* False leaves the plugin out entirely — no view, and no button in the
|
|
81
|
+
* sidebar, since the graph plugin owns that button. What a public page
|
|
82
|
+
* wants: a visitor came for a notebook and an agent, and a diagram of the
|
|
83
|
+
* plugin system is a developer's tool shown to somebody who did not ask for
|
|
84
|
+
* one.
|
|
85
|
+
*/
|
|
86
|
+
showGraph?: boolean;
|
|
87
|
+
/** Whether Ctrl-K opens the command palette. */
|
|
88
|
+
showCommandPalette?: boolean;
|
|
89
|
+
/**
|
|
90
|
+
* Whether the workspace is drawn inside a window.
|
|
91
|
+
*
|
|
92
|
+
* The frame is how a page embeds Loop — the landing page does exactly this —
|
|
93
|
+
* so the example shows it rather than describing it. Off gives the bare
|
|
94
|
+
* workspace filling whatever it was given, which is what a full-page host
|
|
95
|
+
* wants.
|
|
96
|
+
*/
|
|
97
|
+
showWindowFrame?: boolean;
|
|
98
|
+
/**
|
|
99
|
+
* Whether the plugin manager is mounted.
|
|
100
|
+
*
|
|
101
|
+
* True by default: the sidebar is how this example shows that the extension
|
|
102
|
+
* model is real, and switching plugins on and off is the point of it.
|
|
103
|
+
*
|
|
104
|
+
* False leaves the plugin out, which takes the sidebar with it — the column
|
|
105
|
+
* exists because something contributed to it, so there is no empty gutter
|
|
106
|
+
* to tidy up afterwards. What a public page wants: a visitor came for a
|
|
107
|
+
* notebook and an agent, not for a list of the parts they are made of.
|
|
108
|
+
*/
|
|
109
|
+
showPluginsManager?: boolean;
|
|
110
|
+
/**
|
|
111
|
+
* Whether the header offers a choice of view.
|
|
112
|
+
*
|
|
113
|
+
* True by default. False opens on `defaultEditor` and stays there, for a
|
|
114
|
+
* host embedding the workspace to show one thing.
|
|
115
|
+
*/
|
|
116
|
+
showViewSelector?: boolean;
|
|
117
|
+
/**
|
|
118
|
+
* Whether to hide the chat's own title bar.
|
|
119
|
+
*
|
|
120
|
+
* False by default. True for a host whose page already names the workspace,
|
|
121
|
+
* where the bar repeats a heading the reader has just read.
|
|
122
|
+
*/
|
|
123
|
+
hideChatHeader?: boolean;
|
|
124
|
+
/**
|
|
125
|
+
* Whether the workspace draws its header row.
|
|
126
|
+
*
|
|
127
|
+
* True by default. False removes the row and every control a plugin put in
|
|
128
|
+
* it, for a host whose page already frames the workspace. The plugins stay
|
|
129
|
+
* switched on — this is about where their controls render, not what they do.
|
|
130
|
+
*/
|
|
131
|
+
showHeader?: boolean;
|
|
132
|
+
/**
|
|
133
|
+
* Where the prompt sits.
|
|
134
|
+
*
|
|
135
|
+
* `bottom` (the default) spans the workspace; `bottom-chat` keeps it inside
|
|
136
|
+
* the chat column, under the transcript, as the other examples do.
|
|
137
|
+
*/
|
|
138
|
+
promptPlacement?: 'bottom' | 'bottom-chat';
|
|
139
|
+
/**
|
|
140
|
+
* Extra controls for the chat's own title bar.
|
|
141
|
+
*
|
|
142
|
+
* For a host with something to add beside the agent's name without writing
|
|
143
|
+
* a plugin to add it. Plugins reach the same row through
|
|
144
|
+
* `LoopSlots.chatHeader`, which is where anything belonging to a capability
|
|
145
|
+
* belongs — the trial-key countdown arrives that way.
|
|
146
|
+
*/
|
|
147
|
+
chatHeaderActions?: ReactNode;
|
|
148
|
+
};
|
|
149
|
+
export declare function LoopWorkspaceExample({ serverUrl, agentId, initialTarget, showAgentVariants, teamId, showGraph, showCommandPalette, showWindowFrame, showPluginsManager, showViewSelector, hideChatHeader, showHeader, promptPlacement, inheritTheme, defaultEditor, chatHeaderActions, }: LoopWorkspaceExampleProps): JSX.Element;
|
|
150
|
+
export default LoopWorkspaceExample;
|
|
@@ -0,0 +1,151 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { useEffect, useMemo } from 'react';
|
|
3
|
+
import { Box } from '@primer/react';
|
|
4
|
+
import { QueryClientProvider } from '@tanstack/react-query';
|
|
5
|
+
import { useReactor, useSignalValue } from '@datalayer/reactor/react';
|
|
6
|
+
import { buildLoopReactor, LoopWorkspace } from '../loop/shell';
|
|
7
|
+
import { loopPlugins } from '../loop/presets';
|
|
8
|
+
import { WindowFrame } from '../loop/plugins/window-frame';
|
|
9
|
+
import { IDLE_SANDBOX_SNAPSHOT_SIGNAL, IDLE_SANDBOX_TARGET_SIGNAL, } from '../loop/core';
|
|
10
|
+
import { AGENTS_PLUGIN_NAME, } from '../loop/plugins/agents';
|
|
11
|
+
import { internalQueryClient } from '../utils';
|
|
12
|
+
import { resolveExampleAgentRuntimesUrl } from './utils/useExampleAgentRuntimesUrl';
|
|
13
|
+
import { ThemedProvider } from './utils/themedProvider';
|
|
14
|
+
import { agentSummaryStore } from './utils/agentSummaryStore';
|
|
15
|
+
import { targetHasAgent } from './utils/runtimeTargetStore';
|
|
16
|
+
export function LoopWorkspaceExample({
|
|
17
|
+
// The examples Vite server deliberately has no /api proxy. Using the page
|
|
18
|
+
// origin here sends sandbox switches to port 3000 and produces the exact
|
|
19
|
+
// "clicked, nothing happened" failure this example is meant to expose.
|
|
20
|
+
serverUrl = resolveExampleAgentRuntimesUrl('local'), agentId = 'loop-workspace', initialTarget = 'browser', showAgentVariants = true, teamId = 'jupyter', showGraph = true, showCommandPalette = true, showWindowFrame = true, showPluginsManager = true, showViewSelector = true, hideChatHeader = false, showHeader = true, promptPlacement = 'bottom', inheritTheme = false, defaultEditor = 'notebook', chatHeaderActions, }) {
|
|
21
|
+
// Built once: rebuilding would restart every plugin on each render.
|
|
22
|
+
const reactor = useMemo(() => buildLoopReactor(loopPlugins({
|
|
23
|
+
serverUrl,
|
|
24
|
+
target: initialTarget,
|
|
25
|
+
defaultEditor,
|
|
26
|
+
showViewSelector,
|
|
27
|
+
hideChatHeader,
|
|
28
|
+
promptPlacement,
|
|
29
|
+
showAgentVariants,
|
|
30
|
+
teamId,
|
|
31
|
+
localAgentSpec: 'example-simple',
|
|
32
|
+
// The demonstration's switches. Each is left out rather than
|
|
33
|
+
// mounted-and-hidden: the sidebar is drawn only when something
|
|
34
|
+
// contributes to it, so leaving these out is what removes the column.
|
|
35
|
+
graph: showGraph,
|
|
36
|
+
commandPalette: showCommandPalette,
|
|
37
|
+
// Opens the title bar's two slots; the frame itself is composed below,
|
|
38
|
+
// because a plugin cannot wrap the shell.
|
|
39
|
+
windowFrame: showWindowFrame,
|
|
40
|
+
pluginsPanel: showPluginsManager,
|
|
41
|
+
})), [
|
|
42
|
+
serverUrl,
|
|
43
|
+
initialTarget,
|
|
44
|
+
showAgentVariants,
|
|
45
|
+
teamId,
|
|
46
|
+
showGraph,
|
|
47
|
+
showCommandPalette,
|
|
48
|
+
showWindowFrame,
|
|
49
|
+
showPluginsManager,
|
|
50
|
+
showViewSelector,
|
|
51
|
+
hideChatHeader,
|
|
52
|
+
promptPlacement,
|
|
53
|
+
defaultEditor,
|
|
54
|
+
]);
|
|
55
|
+
// Registered here rather than inside the workspace: the checkbox list below
|
|
56
|
+
// renders first and reads the platform, so it has to exist by then.
|
|
57
|
+
useReactor(reactor);
|
|
58
|
+
// The plugin list is a plugin, so it arrives through the sidebar slot rather
|
|
59
|
+
// than being wrapped around the workspace. Nothing here is above the shell.
|
|
60
|
+
// Tell the page where this workspace is running.
|
|
61
|
+
//
|
|
62
|
+
// The examples shell draws its "Active Agent" panel from a summary store,
|
|
63
|
+
// and the workspace's segmented control is a *different* control over a
|
|
64
|
+
// *different* signal — so switching from Browser to Local moved the sandbox
|
|
65
|
+
// and left the header saying `browser` with no agent id.
|
|
66
|
+
//
|
|
67
|
+
// The summary only. Writing the page's `runtimeTargetStore` too looked
|
|
68
|
+
// tidier — one notion of where things run — but the page mounts each example
|
|
69
|
+
// under `key={`${example}:${runtimeTarget}`}`, so changing it tore the
|
|
70
|
+
// workspace down and rebuilt it at its initial target: the control snapped
|
|
71
|
+
// straight back to Browser. The page-level target is which target the
|
|
72
|
+
// *example* was opened for; this workspace moves within that, and the two
|
|
73
|
+
// are not the same fact.
|
|
74
|
+
//
|
|
75
|
+
// This example is where they meet: the plugin must not know an examples page
|
|
76
|
+
// exists, and the page cannot see inside the reactor.
|
|
77
|
+
const sandbox = reactor.getOutput(AGENTS_PLUGIN_NAME)?.sandbox;
|
|
78
|
+
const sandboxTarget = useSignalValue(sandbox?.target ?? IDLE_SANDBOX_TARGET_SIGNAL);
|
|
79
|
+
const sandboxSnapshot = useSignalValue(sandbox?.snapshot ?? IDLE_SANDBOX_SNAPSHOT_SIGNAL);
|
|
80
|
+
const sandboxState = sandboxSnapshot.state;
|
|
81
|
+
const sandboxJupyterUrl = sandboxSnapshot.jupyterUrl;
|
|
82
|
+
useEffect(() => {
|
|
83
|
+
if (!sandboxTarget) {
|
|
84
|
+
return;
|
|
85
|
+
}
|
|
86
|
+
const summary = {
|
|
87
|
+
exampleId: 'LoopWorkspaceExample',
|
|
88
|
+
agentName: agentId,
|
|
89
|
+
// Only the targets that bring an agent report one. On Browser and
|
|
90
|
+
// Jupyter the panel should say there is none rather than name one that
|
|
91
|
+
// cannot answer.
|
|
92
|
+
agentId: targetHasAgent(sandboxTarget) ? agentId : undefined,
|
|
93
|
+
location: sandboxTarget,
|
|
94
|
+
baseUrl: serverUrl,
|
|
95
|
+
sandboxBaseUrl: sandboxJupyterUrl,
|
|
96
|
+
status: sandboxState,
|
|
97
|
+
isReady: sandboxState === 'running',
|
|
98
|
+
};
|
|
99
|
+
const publish = () => agentSummaryStore.getState().setActive(summary);
|
|
100
|
+
publish();
|
|
101
|
+
// Hold it against the page's own seed.
|
|
102
|
+
//
|
|
103
|
+
// The shell re-seeds a base summary whenever its inputs change, and only
|
|
104
|
+
// spares a richer one whose `location` matches the *page* target — which
|
|
105
|
+
// this one deliberately does not, because the workspace moves within the
|
|
106
|
+
// target it was opened at. Without this, an unrelated change on the page
|
|
107
|
+
// would quietly put the panel back to `browser`.
|
|
108
|
+
//
|
|
109
|
+
// Compared by identity against the exact object published above, so a
|
|
110
|
+
// re-publish cannot trigger itself.
|
|
111
|
+
return agentSummaryStore.subscribe(state => {
|
|
112
|
+
if (state.active !== summary) {
|
|
113
|
+
publish();
|
|
114
|
+
}
|
|
115
|
+
});
|
|
116
|
+
}, [agentId, sandboxTarget, sandboxState, sandboxJupyterUrl, serverUrl]);
|
|
117
|
+
const shell = (_jsx(LoopWorkspace, { serverUrl: serverUrl, agentId: agentId, reactor: reactor, manageReactor: false, showViewSelector: showViewSelector, showHeader: showHeader, chatHeaderActions: chatHeaderActions }));
|
|
118
|
+
const workspace = (_jsx(QueryClientProvider, { client: internalQueryClient, children: showWindowFrame ? (
|
|
119
|
+
/*
|
|
120
|
+
* The window, composed rather than injected: a plugin cannot wrap the
|
|
121
|
+
* shell, so the host puts the frame around it. That is the one thing
|
|
122
|
+
* the host still does, and the one thing only it knows — how much of
|
|
123
|
+
* its page to give away.
|
|
124
|
+
*
|
|
125
|
+
* The room around it is what makes the frame read as a window sitting
|
|
126
|
+
* on a page rather than as a border drawn at the edges of the screen.
|
|
127
|
+
*/
|
|
128
|
+
_jsx(Box, { sx: { height: '100%', minHeight: 0, p: 3, boxSizing: 'border-box' }, children: _jsx(WindowFrame, { title: _jsx(Box, { as: "span", sx: { fontSize: 1, fontWeight: 'semibold' }, children: "Loop" }), children: shell }) })) : (_jsx(Box, { sx: { height: '100%', minHeight: 0 }, children: shell })) }));
|
|
129
|
+
// A host that owns the theme gets the workspace and nothing else.
|
|
130
|
+
if (inheritTheme) {
|
|
131
|
+
return workspace;
|
|
132
|
+
}
|
|
133
|
+
return (
|
|
134
|
+
// The theme, as every other example provides it.
|
|
135
|
+
//
|
|
136
|
+
// Not decoration: it is what defines the Primer CSS custom properties —
|
|
137
|
+
// `--bgColor-default` among them — on an ancestor of everything below.
|
|
138
|
+
// The workspace's own chrome reads Primer tokens through `sx` and looked
|
|
139
|
+
// right without this, which is why its absence went unnoticed; the
|
|
140
|
+
// document editor reads them as *CSS variables*, because that is how
|
|
141
|
+
// Lexical's stylesheets are written (`background: var(--bgColor-default,
|
|
142
|
+
// #fff)`). With no provider the variable was undefined and every one of
|
|
143
|
+
// those rules took its white fallback, so the document rendered as a white
|
|
144
|
+
// sheet inside a dark workspace.
|
|
145
|
+
//
|
|
146
|
+
// The plugins the views mount pass `inheritTheme`, so this is the one
|
|
147
|
+
// provider in the tree — nested providers fight over BaseStyles and font
|
|
148
|
+
// tokens, and the inner one wins for the wrong reasons.
|
|
149
|
+
_jsx(ThemedProvider, { children: workspace }));
|
|
150
|
+
}
|
|
151
|
+
export default LoopWorkspaceExample;
|
|
@@ -1,3 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Notebook Agent with Agent-Runtimes Integration
|
|
3
|
+
*
|
|
4
|
+
* This example demonstrates using the agent-runtimes ChatFloating component
|
|
5
|
+
* with notebook tools for AI-assisted notebook editing.
|
|
6
|
+
*
|
|
7
|
+
* To run this example:
|
|
8
|
+
* 1. Start the agent-runtimes server: `npm run start:server`
|
|
9
|
+
* 2. Start the frontend: `npm run dev`
|
|
10
|
+
*
|
|
11
|
+
* @module examples/NotebookAgentExample
|
|
12
|
+
*/
|
|
13
|
+
import type { JSX } from 'react';
|
|
1
14
|
import { ServiceManager } from '@jupyterlab/services';
|
|
2
15
|
/**
|
|
3
16
|
* Main Agent Runtime notebook example component
|
|
@@ -1,56 +1,20 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs } 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
|
-
* Agent Runtime Notebook Example with Agent-Runtimes Integration
|
|
8
|
-
*
|
|
9
|
-
* This example demonstrates using the agent-runtimes ChatFloating component
|
|
10
|
-
* with notebook tools for AI-assisted notebook editing.
|
|
11
|
-
*
|
|
12
|
-
* To run this example:
|
|
13
|
-
* 1. Start the agent-runtimes server: `npm run start:server`
|
|
14
|
-
* 2. Start the frontend: `npm run dev`
|
|
15
|
-
*
|
|
16
|
-
* @module examples/NotebookAgentExample
|
|
17
|
-
*/
|
|
18
|
-
import React, { useCallback, useEffect, useMemo, useState } from 'react';
|
|
2
|
+
import React, { useCallback, useState } from 'react';
|
|
19
3
|
import { Box } from '@datalayer/primer-addons';
|
|
20
4
|
import { Notebook } from '@datalayer/jupyter-react';
|
|
21
5
|
import { ThemedJupyterProvider } from './utils/themedProvider';
|
|
22
6
|
// Agent-runtimes imports
|
|
23
7
|
import { ChatFloating } from '../chat';
|
|
24
8
|
import { useNotebookTools } from '../tools/adapters/agent-runtimes/notebookHooks';
|
|
25
|
-
import {
|
|
26
|
-
import { useExampleAgentRuntime } from './hooks/useExampleAgentRuntime';
|
|
9
|
+
import { useExampleJupyterAgent } from './hooks/useExampleJupyterAgent';
|
|
27
10
|
// Import Matplotlib notebook
|
|
28
11
|
import MatplotlibNotebook from './utils/notebooks/Matplotlib.ipynb.json';
|
|
29
|
-
import {
|
|
12
|
+
import { ExampleNotebookToolbar } from './utils/notebookToolbarItems';
|
|
30
13
|
// Fixed notebook ID
|
|
31
14
|
const NOTEBOOK_ID = 'agui-notebook-example';
|
|
32
15
|
// Use the imported Matplotlib notebook
|
|
33
16
|
const NOTEBOOK_CONTENT = MatplotlibNotebook;
|
|
34
17
|
const AGENT_ID = 'notebook-agent-runtime-example';
|
|
35
|
-
function getJupyterSandboxUrl(serviceManager) {
|
|
36
|
-
const envUrl = import.meta.env.VITE_JUPYTER_SANDBOX_URL;
|
|
37
|
-
if (envUrl) {
|
|
38
|
-
return envUrl;
|
|
39
|
-
}
|
|
40
|
-
const baseUrl = serviceManager?.serverSettings?.baseUrl?.replace(/\/$/, '');
|
|
41
|
-
if (!baseUrl) {
|
|
42
|
-
return undefined;
|
|
43
|
-
}
|
|
44
|
-
if (baseUrl.includes('token=')) {
|
|
45
|
-
return baseUrl;
|
|
46
|
-
}
|
|
47
|
-
const token = serviceManager?.serverSettings?.token;
|
|
48
|
-
if (!token) {
|
|
49
|
-
return baseUrl;
|
|
50
|
-
}
|
|
51
|
-
const separator = baseUrl.includes('?') ? '&' : '?';
|
|
52
|
-
return `${baseUrl}${separator}token=${encodeURIComponent(token)}`;
|
|
53
|
-
}
|
|
54
18
|
const NotebookUI = React.memo(function NotebookUI({ serviceManager, onSessionConnection, }) {
|
|
55
19
|
return (_jsxs(Box, { sx: {
|
|
56
20
|
flex: 1,
|
|
@@ -63,71 +27,41 @@ const NotebookUI = React.memo(function NotebookUI({ serviceManager, onSessionCon
|
|
|
63
27
|
paddingBottom: 3,
|
|
64
28
|
borderBottom: '1px solid',
|
|
65
29
|
borderColor: 'border.default',
|
|
66
|
-
}, children: [_jsx(Box, { as: "h1", sx: { margin: 0 }, children: "Agent
|
|
30
|
+
}, children: [_jsx(Box, { as: "h1", sx: { margin: 0 }, children: "Notebook Agent Example" }), _jsx("p", { children: "Platform-agnostic usage with agent-runtimes integration. Use the AI Agent to manipulate the Notebook." })] }), _jsx(Box, { sx: {
|
|
67
31
|
border: '1px solid',
|
|
68
32
|
borderColor: 'border.default',
|
|
69
33
|
borderRadius: 2,
|
|
70
34
|
padding: 3,
|
|
71
35
|
backgroundColor: 'canvas.default',
|
|
72
|
-
}, children: serviceManager ? (_jsx(ThemedJupyterProvider, { children: _jsx(Notebook, { nbformat: NOTEBOOK_CONTENT, id: NOTEBOOK_ID, serviceManager: serviceManager, onSessionConnection: onSessionConnection, height: "calc(100vh - 300px)", cellSidebarMargin: 120, startDefaultKernel: true }) })) : (_jsx(Box, { sx: { padding: 3 }, children: _jsx("p", { children: "Loading service manager..." }) })) })] }));
|
|
36
|
+
}, children: serviceManager ? (_jsx(ThemedJupyterProvider, { children: _jsx(Notebook, { nbformat: NOTEBOOK_CONTENT, id: NOTEBOOK_ID, Toolbar: ExampleNotebookToolbar, serviceManager: serviceManager, onSessionConnection: onSessionConnection, height: "calc(100vh - 300px)", cellSidebarMargin: 120, startDefaultKernel: true }) })) : (_jsx(Box, { sx: { padding: 3 }, children: _jsx("p", { children: "Loading service manager..." }) })) })] }));
|
|
73
37
|
});
|
|
74
38
|
function NotebookWithChat({ serviceManager, }) {
|
|
75
|
-
const baseUrl = useExampleAgentRuntimesUrl();
|
|
76
|
-
const jupyterSandboxUrl = useMemo(() => getJupyterSandboxUrl(serviceManager), [serviceManager]);
|
|
77
|
-
const [createRequested, setCreateRequested] = useState(false);
|
|
78
39
|
const [notebookKernel, setNotebookKernel] = useState(null);
|
|
79
|
-
|
|
40
|
+
// Get notebook tools. Which of the chat and the harness runs them depends on
|
|
41
|
+
// where the loop turns, and the hook decides that.
|
|
42
|
+
const frontendTools = useNotebookTools(NOTEBOOK_ID);
|
|
43
|
+
const { agentReady, protocol: protocolConfig, chatFrontendTools, error, unavailableReason, } = useExampleJupyterAgent({
|
|
80
44
|
exampleId: 'NotebookAgentExample',
|
|
81
45
|
agentName: AGENT_ID,
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
protocol: 'vercel-ai',
|
|
87
|
-
model: DEFAULT_MODEL,
|
|
88
|
-
systemPrompt: 'You are a helpful AI assistant that helps users work with Jupyter notebooks. For notebook operations, always use the notebook frontend tools (runCell, readAllCells, readCell, insertCell, updateCell, deleteCells) so actions happen in the live notebook UI. Use executeCode only for temporary inspection code that should not modify notebook cells.',
|
|
89
|
-
enableCodemode: false,
|
|
90
|
-
sandboxVariant: 'jupyter',
|
|
91
|
-
jupyterSandbox: jupyterSandboxUrl,
|
|
92
|
-
},
|
|
46
|
+
description: 'Demo agent for notebook example',
|
|
47
|
+
systemPrompt: 'You are a helpful AI assistant that helps users work with Jupyter notebooks. For notebook operations, always use the notebook frontend tools (runCell, readAllCells, readCell, insertCell, updateCell, deleteCells) so actions happen in the live notebook UI. Use executeCodeInNotebook only for temporary inspection code that should not modify notebook cells.',
|
|
48
|
+
serviceManager,
|
|
49
|
+
frontendTools,
|
|
93
50
|
});
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
void createAgent({
|
|
100
|
-
name: AGENT_ID,
|
|
101
|
-
description: 'Demo agent for notebook example',
|
|
102
|
-
protocol: 'vercel-ai',
|
|
103
|
-
model: DEFAULT_MODEL,
|
|
104
|
-
systemPrompt: 'You are a helpful AI assistant that helps users work with Jupyter notebooks. For notebook operations, always use the notebook frontend tools (runCell, readAllCells, readCell, insertCell, updateCell, deleteCells) so actions happen in the live notebook UI. Use executeCode only for temporary inspection code that should not modify notebook cells.',
|
|
105
|
-
enableCodemode: false,
|
|
106
|
-
sandboxVariant: 'jupyter',
|
|
107
|
-
jupyterSandbox: jupyterSandboxUrl,
|
|
108
|
-
}).catch(() => {
|
|
109
|
-
setCreateRequested(false);
|
|
110
|
-
});
|
|
111
|
-
}, [jupyterSandboxUrl, createRequested, agentId, createAgent]);
|
|
112
|
-
const effectiveReady = isReady || status === 'ready';
|
|
51
|
+
// The example's own agent, not merely the runtime: on the cloud target the
|
|
52
|
+
// runtime is ready before this agent has been registered on it.
|
|
53
|
+
const effectiveReady = agentReady;
|
|
54
|
+
// One failed attempt is reported, not retried — see `useExampleJupyterAgent`.
|
|
55
|
+
const chatError = error || unavailableReason;
|
|
113
56
|
const handleSessionConnection = useCallback((session) => {
|
|
114
57
|
setNotebookKernel(session?.kernel ?? null);
|
|
115
58
|
}, []);
|
|
116
|
-
const protocolConfig = useMemo(() => ({
|
|
117
|
-
type: 'vercel-ai',
|
|
118
|
-
endpoint: `${baseUrl}/api/v1/vercel-ai/${AGENT_ID}`,
|
|
119
|
-
agentId: AGENT_ID,
|
|
120
|
-
enableConfigQuery: true,
|
|
121
|
-
configEndpoint: `${baseUrl}/api/v1/configure`,
|
|
122
|
-
}), [baseUrl]);
|
|
123
|
-
// Get notebook tools for ChatFloating
|
|
124
|
-
const frontendTools = useNotebookTools(NOTEBOOK_ID);
|
|
125
59
|
return (_jsxs(Box, { sx: {
|
|
126
60
|
height: '100%',
|
|
127
61
|
width: '100%',
|
|
128
62
|
display: 'flex',
|
|
129
63
|
overflow: 'hidden',
|
|
130
|
-
}, children: [_jsx(NotebookUI, { serviceManager: serviceManager, onSessionConnection: handleSessionConnection }),
|
|
64
|
+
}, children: [_jsx(NotebookUI, { serviceManager: serviceManager, onSessionConnection: handleSessionConnection }), chatError && (_jsxs(Box, { sx: {
|
|
131
65
|
position: 'fixed',
|
|
132
66
|
bottom: 20,
|
|
133
67
|
right: 20,
|
|
@@ -136,7 +70,23 @@ function NotebookWithChat({ serviceManager, }) {
|
|
|
136
70
|
color: 'danger.fg',
|
|
137
71
|
borderRadius: 2,
|
|
138
72
|
maxWidth: 300,
|
|
139
|
-
}, children: [_jsx("strong", { children: "Error:" }), " ",
|
|
73
|
+
}, children: [_jsx("strong", { children: "Error:" }), " ", chatError] })), effectiveReady && (_jsx(ChatFloating, { protocol: protocolConfig, title: "Notebook AI Agent Runtime", description: "Hi! I can help you edit notebook cells. Try: 'Add a new code cell', 'Run cell 1', or 'Delete the last cell'", defaultOpen: true, defaultViewMode: "panel", position: "bottom-right", frontendTools: chatFrontendTools, useStore: false,
|
|
74
|
+
/*
|
|
75
|
+
Every control this chat has, which is what an example is for.
|
|
76
|
+
|
|
77
|
+
The menus draw themselves only where there is something behind
|
|
78
|
+
them: on a remote agent the config request answers and all three
|
|
79
|
+
appear, while an in-page agent has no config endpoint to ask, so
|
|
80
|
+
tools and skills are simply absent rather than pending. That used
|
|
81
|
+
to read as "Loading controls..." for ever.
|
|
82
|
+
*/
|
|
83
|
+
showModelSelector: true, showToolsMenu: true, showSkillsMenu: true, showTokenUsage: true,
|
|
84
|
+
// The ring, here of all places: an agent working through a notebook
|
|
85
|
+
// is the case that actually fills a context window, so how it is
|
|
86
|
+
// being spent is worth a picture rather than two numbers.
|
|
87
|
+
showContextRing: true, showInformation: true, showHeader: true,
|
|
88
|
+
// The Lexical editor, which is the one with the `@` menu.
|
|
89
|
+
promptVariant: "lexical", panelProps: {
|
|
140
90
|
kernel: notebookKernel,
|
|
141
91
|
}, suggestions: [
|
|
142
92
|
{
|
|
@@ -1,13 +1,19 @@
|
|
|
1
1
|
import { ServiceManager } from '@jupyterlab/services';
|
|
2
2
|
/**
|
|
3
|
-
*
|
|
3
|
+
* Notebook Chat Sidebar Example
|
|
4
4
|
*/
|
|
5
5
|
interface ChatJupyterNotebookExampleProps {
|
|
6
6
|
serviceManager?: ServiceManager.IManager;
|
|
7
7
|
}
|
|
8
|
-
export declare function AgentRuntimeNotebookExampleInner({ serviceManager, }: ChatJupyterNotebookExampleProps): import("react
|
|
8
|
+
export declare function AgentRuntimeNotebookExampleInner({ serviceManager, }: ChatJupyterNotebookExampleProps): import("react").JSX.Element;
|
|
9
9
|
/**
|
|
10
|
-
*
|
|
10
|
+
* The example, in the app's theme.
|
|
11
|
+
*
|
|
12
|
+
* The service manager comes from the shell, as it does in every other example:
|
|
13
|
+
* the shell owns which of the four runtime targets is selected, and reading it
|
|
14
|
+
* from an ambient Jupyter provider instead — which is what this example used
|
|
15
|
+
* to do — meant it could be showing a notebook on a different runtime than the
|
|
16
|
+
* one the picker says.
|
|
11
17
|
*/
|
|
12
|
-
export declare function AgentRuntimeNotebookAgentSidebarExample(): import("react
|
|
18
|
+
export declare function AgentRuntimeNotebookAgentSidebarExample({ serviceManager, }: ChatJupyterNotebookExampleProps): import("react").JSX.Element;
|
|
13
19
|
export default AgentRuntimeNotebookAgentSidebarExample;
|