@datalayer/agent-runtimes 1.0.29 → 1.3.11
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 +2 -1
- package/lib/api/notifications.d.ts +21 -6
- package/lib/api/notifications.js +32 -14
- package/lib/api/runtimes/environments.d.ts +406 -4
- package/lib/api/runtimes/environments.js +641 -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 +20 -2
- package/lib/chat/ChatFloating.js +196 -118
- 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/ButtonGlow.d.ts +9 -0
- package/lib/chat/display/ButtonGlow.js +60 -0
- package/lib/chat/display/EmptyState.d.ts +15 -1
- package/lib/chat/display/EmptyState.js +81 -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 +21 -102
- package/lib/chat/header/ChatViewModeToggle.d.ts +29 -0
- package/lib/chat/header/ChatViewModeToggle.js +55 -0
- package/lib/chat/index.d.ts +5 -1
- package/lib/chat/index.js +9 -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 +35 -0
- package/lib/components/code-sandboxes/CodeSandboxEnvironmentSelect.js +27 -29
- package/lib/components/code-sandboxes/CodeSandboxLauncher.d.ts +9 -0
- package/lib/components/code-sandboxes/CodeSandboxLauncher.js +95 -23
- package/lib/components/code-sandboxes/CodeSandboxNames.js +7 -6
- package/lib/components/code-sandboxes/CodeSandboxPicker.js +89 -42
- 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 +13 -1
- package/lib/components/code-sandboxes/CodeSandboxUtils.js +10 -4
- 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 +97 -0
- package/lib/components/code-sandboxes/codeSandboxEnvironments.js +184 -0
- package/lib/components/code-sandboxes/codeSandboxProviders.js +14 -5
- package/lib/components/code-sandboxes/index.d.ts +1 -0
- package/lib/components/code-sandboxes/index.js +1 -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/icons/ArtifactIcon.js +2 -1
- 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 +4 -4
- 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/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 +903 -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 +124 -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 +1679 -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 +71 -0
- package/lib/loop/plugins/page-layout/index.js +160 -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 +181 -0
- package/lib/loop/presets.js +141 -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 +13 -5
- package/lib/models/CodeSandboxVariant.js +17 -5
- package/lib/models/Content.d.ts +26 -0
- package/lib/models/Deck.d.ts +14 -0
- package/lib/models/Environment.d.ts +678 -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/ItemType.d.ts +1 -1
- 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 +17 -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 +2 -2
- package/lib/models/environments.generated.d.ts +141 -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 +125 -0
- package/lib/protocols/BrowserAgentAdapter.js +317 -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 +8 -3
- package/lib/runtimes/actions.js +46 -14
- 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 +129 -112
- package/lib/specs/agents/agents.js +8200 -5044
- package/lib/specs/evals.js +9 -0
- package/lib/specs/frontendTools.d.ts +4 -0
- package/lib/specs/frontendTools.js +77 -3
- package/lib/specs/mcpServers.d.ts +1 -0
- package/lib/specs/mcpServers.js +38 -15
- 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 +31 -0
- package/lib/specs/personas.js +1 -1
- package/lib/specs/skills.js +7 -7
- 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 +14 -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/tools/adapters/commands/index.js +5 -0
- 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/outputs.d.ts +2 -0
- 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/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_mcp_servers.py +2 -2
- package/scripts/codegen/generate_models.py +40 -15
- package/scripts/codegen/generate_outputs.py +2 -0
- package/scripts/codegen/generate_sandbox_agents.py +76 -62
- package/scripts/codegen/generate_skills.py +2 -2
- package/scripts/codegen/generate_teams.py +178 -4
- package/scripts/codegen/generate_tools.py +6 -4
- package/scripts/gen_workers.py +278 -110
- 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
- /package/lib/models/{Dataset.js → Deck.js} +0 -0
|
@@ -0,0 +1,264 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright (c) 2025-2026 Datalayer, Inc.
|
|
3
|
+
* Distributed under the terms of the Modified BSD License.
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* `@datalayer/loop-core` — the contracts, and nothing else.
|
|
7
|
+
*
|
|
8
|
+
* Everything the workspace can be extended with is declared here: the points
|
|
9
|
+
* plugins contribute to, and the shapes they contribute. No React, no server
|
|
10
|
+
* calls, no opinions about layout — a plugin depends on this and on the reactor,
|
|
11
|
+
* never on the shell, so the shell can be replaced (a browser page, a JupyterLab
|
|
12
|
+
* panel) without touching a single plugin.
|
|
13
|
+
*
|
|
14
|
+
* @module loop/core
|
|
15
|
+
*/
|
|
16
|
+
import { defineContributionPoint, defineGate } from '@datalayer/reactor';
|
|
17
|
+
/**
|
|
18
|
+
* What a view reads while the sandbox plugin is absent.
|
|
19
|
+
*
|
|
20
|
+
* Every plugin that watches the sandbox has to call `useSignalValue`
|
|
21
|
+
* unconditionally — the plugin can be switched off from the sidebar, and hook
|
|
22
|
+
* order cannot depend on that — so each needs something signal-shaped to read
|
|
23
|
+
* instead. They used to declare their own, and all four made the same mistake:
|
|
24
|
+
* building the value inside `peek()`.
|
|
25
|
+
*
|
|
26
|
+
* `useSignalValue` is a `useSyncExternalStore`, so `peek()` *is* the snapshot
|
|
27
|
+
* and React compares it by identity. A fresh object per call means the snapshot
|
|
28
|
+
* never settles, and the page re-renders without bound — React says "the result
|
|
29
|
+
* of getSnapshot should be cached", and then a nested-update overflow surfaces
|
|
30
|
+
* wherever the fiftieth render happens to land, which is nowhere near here.
|
|
31
|
+
*
|
|
32
|
+
* So: one frozen value, read by every caller. Typed rather than cast, because
|
|
33
|
+
* the `as never` the four copies used is exactly what let the wrong shape
|
|
34
|
+
* through without a word from the compiler.
|
|
35
|
+
*/
|
|
36
|
+
export const IDLE_SANDBOX_SNAPSHOT = Object.freeze({
|
|
37
|
+
state: 'idle',
|
|
38
|
+
});
|
|
39
|
+
/** {@link IDLE_SANDBOX_SNAPSHOT}, shaped as a signal to be read like one. */
|
|
40
|
+
export const IDLE_SANDBOX_SNAPSHOT_SIGNAL = {
|
|
41
|
+
value: IDLE_SANDBOX_SNAPSHOT,
|
|
42
|
+
peek: () => IDLE_SANDBOX_SNAPSHOT,
|
|
43
|
+
};
|
|
44
|
+
/**
|
|
45
|
+
* The target read while the sandbox plugin is absent.
|
|
46
|
+
*
|
|
47
|
+
* Typed as `undefined` rather than `string | undefined` so that
|
|
48
|
+
* `service?.target ?? IDLE_SANDBOX_TARGET_SIGNAL` keeps whatever the service
|
|
49
|
+
* says a target is: widening it here would quietly turn every caller's
|
|
50
|
+
* `SandboxTarget` into a bare string.
|
|
51
|
+
*/
|
|
52
|
+
export const IDLE_SANDBOX_TARGET_SIGNAL = {
|
|
53
|
+
value: undefined,
|
|
54
|
+
peek: () => undefined,
|
|
55
|
+
};
|
|
56
|
+
/**
|
|
57
|
+
* The id the workspace's surfaces are known by.
|
|
58
|
+
*
|
|
59
|
+
* One expression in one place, because three things have to agree on it: the
|
|
60
|
+
* notebook that renders, the document that renders, and the frontend tools an
|
|
61
|
+
* in-page agent is given to reach them. A tool addressed to a different id than
|
|
62
|
+
* the surface on screen edits nothing and reports success, which is the worst
|
|
63
|
+
* way for this to be wrong.
|
|
64
|
+
*
|
|
65
|
+
* Keyed on the *session*, never on the agent. Keying it on the agent meant
|
|
66
|
+
* every switch renamed the surface, and a renamed surface is a new one: the
|
|
67
|
+
* notebook remounted empty, so changing who you were talking to silently threw
|
|
68
|
+
* away the work you were talking about. The notebook belongs to the workspace;
|
|
69
|
+
* the agent is only a visitor to it.
|
|
70
|
+
*/
|
|
71
|
+
export function loopSurfaceId(sessionId) {
|
|
72
|
+
return `loop-${sessionId || 'default'}`;
|
|
73
|
+
}
|
|
74
|
+
/** Create a prompt channel. The shell owns one per workspace. */
|
|
75
|
+
export function createPromptChannel() {
|
|
76
|
+
const listeners = new Set();
|
|
77
|
+
return {
|
|
78
|
+
submit(message) {
|
|
79
|
+
if (listeners.size === 0) {
|
|
80
|
+
return false;
|
|
81
|
+
}
|
|
82
|
+
for (const listener of [...listeners]) {
|
|
83
|
+
listener(message);
|
|
84
|
+
}
|
|
85
|
+
return true;
|
|
86
|
+
},
|
|
87
|
+
subscribe(listener) {
|
|
88
|
+
listeners.add(listener);
|
|
89
|
+
return () => {
|
|
90
|
+
listeners.delete(listener);
|
|
91
|
+
};
|
|
92
|
+
},
|
|
93
|
+
};
|
|
94
|
+
}
|
|
95
|
+
/** Views the workspace may open. */
|
|
96
|
+
export const LoopViewType = defineContributionPoint('loop.viewType');
|
|
97
|
+
/** Editors the chat hosts beside the conversation. */
|
|
98
|
+
/**
|
|
99
|
+
* Editors the shell hosts beside the conversation.
|
|
100
|
+
*
|
|
101
|
+
* Owned by the shell plugin, not the chat: which editors exist is a fact
|
|
102
|
+
* about the workspace, and the segmented control that offers them shows
|
|
103
|
+
* nothing at all until a plugin contributes one. The chat renders the chosen
|
|
104
|
+
* editor's column, but the choice is the shell's.
|
|
105
|
+
*
|
|
106
|
+
* `LoopChatSurface` is the same point under its historical name, kept so
|
|
107
|
+
* nothing that contributed to it has to move in the same commit.
|
|
108
|
+
*/
|
|
109
|
+
export const LoopEditorView = defineContributionPoint('loop.chat.surface');
|
|
110
|
+
/** @deprecated Use {@link LoopEditorView}: the shell owns the point now. */
|
|
111
|
+
export const LoopChatSurface = LoopEditorView;
|
|
112
|
+
export const LoopFrontendTool = defineContributionPoint('loop.frontendTool');
|
|
113
|
+
export const LoopChatComposer = defineContributionPoint('loop.chat.composer');
|
|
114
|
+
export const LoopChatHeader = defineContributionPoint('loop.chat.header');
|
|
115
|
+
export const LoopAgentBlueprint = defineContributionPoint('loop.agent.blueprint');
|
|
116
|
+
export const LoopChatSuggestion = defineContributionPoint('loop.chat.suggestion');
|
|
117
|
+
export const LoopChatExtras = defineContributionPoint('loop.chat.extras');
|
|
118
|
+
export const LoopOpeningNotebook = defineContributionPoint('loop.notebook.opening');
|
|
119
|
+
export const LoopOpeningDocument = defineContributionPoint('loop.document.opening');
|
|
120
|
+
/**
|
|
121
|
+
* Whether there is anything to chat with.
|
|
122
|
+
*
|
|
123
|
+
* A gate rather than an extension point of its own: `defineGate` is the
|
|
124
|
+
* reactor's primitive for exactly this — one plugin asking the others whether
|
|
125
|
+
* something may happen, and being told why not in words it can show. The chat
|
|
126
|
+
* asks; the sandbox plugin answers, because only some of the places code runs
|
|
127
|
+
* bring an agent with them. Neither imports the other.
|
|
128
|
+
*
|
|
129
|
+
* Nothing answering means allowed, so a workspace with no sandbox plugin has a
|
|
130
|
+
* working chat.
|
|
131
|
+
*/
|
|
132
|
+
export const LoopAgentGate = defineGate('loop.agent.available');
|
|
133
|
+
/** @deprecated Use `LoopAgentGate`; chat is one consumer of agent availability. */
|
|
134
|
+
export const LoopChatGate = LoopAgentGate;
|
|
135
|
+
/**
|
|
136
|
+
* The notebook editor's toolbar.
|
|
137
|
+
*
|
|
138
|
+
* Offered by the notebook plugin and filled by the notebook toolbar plugin.
|
|
139
|
+
* The notebook names neither the toolbar nor anything on it.
|
|
140
|
+
*/
|
|
141
|
+
export const LoopNotebookToolbar = defineContributionPoint('loop.notebook.toolbar');
|
|
142
|
+
/**
|
|
143
|
+
* What goes on the notebook's toolbar, once something provides one.
|
|
144
|
+
*
|
|
145
|
+
* Offered by the *toolbar* plugin, not by the editor: the bar is what accepts
|
|
146
|
+
* buttons, so the plugin that owns the bar is the one that opens the point.
|
|
147
|
+
* The chat puts its agent actions here.
|
|
148
|
+
*/
|
|
149
|
+
export const LoopNotebookToolbarItem = defineContributionPoint('loop.notebook.toolbar.item');
|
|
150
|
+
/** The document editor's toolbar. The same arrangement, for prose. */
|
|
151
|
+
export const LoopDocumentToolbar = defineContributionPoint('loop.document.toolbar');
|
|
152
|
+
/** What goes on the document's toolbar, once something provides one. */
|
|
153
|
+
export const LoopDocumentToolbarItem = defineContributionPoint('loop.document.toolbar.item');
|
|
154
|
+
// Asking the chat to open a surface, from a command that runs outside it.
|
|
155
|
+
export { onSurfaceRequest, requestSurface, } from './surfaceRequests';
|
|
156
|
+
// Asking whatever renders the prompt to focus it, the same way.
|
|
157
|
+
export { focusPrompt, onPromptFocusRequest } from './focusRequests';
|
|
158
|
+
/** Slash commands, shared in shape with the CLI. */
|
|
159
|
+
export const LoopCommand = defineContributionPoint('loop.command');
|
|
160
|
+
/** `@` namespaces. */
|
|
161
|
+
export const LoopMention = defineContributionPoint('loop.mention');
|
|
162
|
+
/** Slot names the shell renders. Slots render everything; points choose one. */
|
|
163
|
+
export const LoopSlots = {
|
|
164
|
+
/** Agent picker, model chip, status indicators. */
|
|
165
|
+
header: 'loop.header',
|
|
166
|
+
/**
|
|
167
|
+
* The chat's own title bar, beside the agent's name.
|
|
168
|
+
*
|
|
169
|
+
* Distinct from `header`, which is the workspace's row above every view: a
|
|
170
|
+
* host can hide one and keep the other, and what belongs here is what is
|
|
171
|
+
* true of the *conversation* rather than of the workspace — how long the
|
|
172
|
+
* visitor's trial key has left, say.
|
|
173
|
+
*
|
|
174
|
+
* Empty for most workspaces, and the chat asks whether anyone contributed
|
|
175
|
+
* before it draws anything, so an unfilled slot costs nothing.
|
|
176
|
+
*/
|
|
177
|
+
chatHeader: 'loop.chatHeader',
|
|
178
|
+
/** Buttons beside the prompt. */
|
|
179
|
+
promptAction: 'loop.promptAction',
|
|
180
|
+
/**
|
|
181
|
+
* The strip inside the prompt, above where the typing goes.
|
|
182
|
+
*
|
|
183
|
+
* Kept and rendered, and nothing contributes to it today: the controls that
|
|
184
|
+
* decide what the next message does — agent, tools, skills, model — live in
|
|
185
|
+
* the footer under the prompt, which already had three of the four. This is
|
|
186
|
+
* for whatever wants to sit *in* the prompt rather than under it, and it
|
|
187
|
+
* draws nothing while it is empty.
|
|
188
|
+
*/
|
|
189
|
+
inpromptMenu: 'loop.inpromptMenu',
|
|
190
|
+
/**
|
|
191
|
+
* Under the view, above the status line.
|
|
192
|
+
*
|
|
193
|
+
* Where the chat plugin puts its prompt. A slot rather than a fixed place in
|
|
194
|
+
* the shell, so a workspace mounted without a chat has nothing there instead
|
|
195
|
+
* of an input box wired to nothing.
|
|
196
|
+
*/
|
|
197
|
+
footer: 'loop.footer',
|
|
198
|
+
/** Small status items under the prompt. */
|
|
199
|
+
status: 'loop.status',
|
|
200
|
+
/**
|
|
201
|
+
* A mount point for plugins that position themselves.
|
|
202
|
+
*
|
|
203
|
+
* Rendered once, with no layout of its own. What goes here paints over the
|
|
204
|
+
* workspace from a portal — the command palette does — so the slot only has
|
|
205
|
+
* to exist somewhere the reactor is running. It is `root` rather than
|
|
206
|
+
* `loop.root` because it is the reactor's convention rather than the loop's:
|
|
207
|
+
* the music and CMS applications render the same name for the same plugins.
|
|
208
|
+
*/
|
|
209
|
+
root: 'root',
|
|
210
|
+
/**
|
|
211
|
+
* The trailing edge, beside the view: the plugin list, and anything else
|
|
212
|
+
* that belongs next to the work rather than in front of it.
|
|
213
|
+
*
|
|
214
|
+
* A slot, so a workspace with no sidebar plugin has no sidebar at all — the
|
|
215
|
+
* column is not drawn when nothing fills it.
|
|
216
|
+
*/
|
|
217
|
+
sidebar: 'loop.sidebar',
|
|
218
|
+
};
|
|
219
|
+
/**
|
|
220
|
+
* The sandbox's lifecycle, in the vocabulary a kernel indicator speaks.
|
|
221
|
+
*
|
|
222
|
+
* Here rather than beside either renderer because two of them draw the same
|
|
223
|
+
* fact — the control in the workspace header, and the chat's own header for a
|
|
224
|
+
* host that hides the workspace's. Two copies of this mapping would eventually
|
|
225
|
+
* disagree about what `starting` looks like, and a workspace showing two
|
|
226
|
+
* indicators that disagree is worse than one showing none.
|
|
227
|
+
*
|
|
228
|
+
* The execution state is the finer answer and wins when there is one: a
|
|
229
|
+
* running sandbox is either working or waiting, and which of the two is the
|
|
230
|
+
* thing a person actually watches for.
|
|
231
|
+
*/
|
|
232
|
+
export function sandboxIndicatorState(state, executionState, isExecuting) {
|
|
233
|
+
if (state === 'error')
|
|
234
|
+
return 'connected-dead';
|
|
235
|
+
if (state === 'starting')
|
|
236
|
+
return 'connected-starting';
|
|
237
|
+
if (state === 'stopping')
|
|
238
|
+
return 'disconnecting';
|
|
239
|
+
if (state !== 'running')
|
|
240
|
+
return 'disconnected';
|
|
241
|
+
return executionState === 'busy' || isExecuting
|
|
242
|
+
? 'connected-busy'
|
|
243
|
+
: 'connected-idle';
|
|
244
|
+
}
|
|
245
|
+
/** Whether a view or a chat surface can be opened right now. */
|
|
246
|
+
export function canOpenView(contribution, workspace) {
|
|
247
|
+
return contribution.canOpen ? contribution.canOpen(workspace) : true;
|
|
248
|
+
}
|
|
249
|
+
/** Parse `/name rest` into its parts. Returns undefined when it is not a command. */
|
|
250
|
+
export function parseCommand(input) {
|
|
251
|
+
const text = input.trimStart();
|
|
252
|
+
if (!text.startsWith('/')) {
|
|
253
|
+
return undefined;
|
|
254
|
+
}
|
|
255
|
+
const [head, ...rest] = text.slice(1).split(/\s+/);
|
|
256
|
+
if (!head) {
|
|
257
|
+
return undefined;
|
|
258
|
+
}
|
|
259
|
+
return { name: head.toLowerCase(), argv: rest.join(' ').trim() };
|
|
260
|
+
}
|
|
261
|
+
export { useLoopPromptStore, suggestLoopPrompt, } from './promptStore';
|
|
262
|
+
export const LoopChatLayout = defineContributionPoint('loop.chat.layout');
|
|
263
|
+
export const LoopPromptPanel = defineContributionPoint('loop.prompt.panel');
|
|
264
|
+
export const LoopChatTurn = defineContributionPoint('loop.chat.turn');
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
/** A prompt offered to whichever workspace is listening. */
|
|
2
|
+
export type SuggestedPrompt = {
|
|
3
|
+
/** What to put in the box. */
|
|
4
|
+
text: string;
|
|
5
|
+
/** Whether to send it as well as type it. Off by default. */
|
|
6
|
+
submit: boolean;
|
|
7
|
+
/**
|
|
8
|
+
* Tells two suggestions of the same text apart.
|
|
9
|
+
*
|
|
10
|
+
* Without it, clicking the same "Try this" button twice would set state to
|
|
11
|
+
* a value it already held, React would render nothing, and the second click
|
|
12
|
+
* would look broken. It is also what the prompt watches to take focus again.
|
|
13
|
+
*/
|
|
14
|
+
nonce: number;
|
|
15
|
+
};
|
|
16
|
+
export type LoopPromptState = {
|
|
17
|
+
/** The suggestion waiting to be picked up, if there is one. */
|
|
18
|
+
pending?: SuggestedPrompt;
|
|
19
|
+
/** Offer a prompt to the workspace. */
|
|
20
|
+
suggest: (text: string, options?: {
|
|
21
|
+
submit?: boolean;
|
|
22
|
+
}) => void;
|
|
23
|
+
/** Called by the prompt once it has taken it. */
|
|
24
|
+
consume: () => void;
|
|
25
|
+
};
|
|
26
|
+
export declare const useLoopPromptStore: import("zustand").UseBoundStore<import("zustand").StoreApi<LoopPromptState>>;
|
|
27
|
+
/**
|
|
28
|
+
* Offer a prompt to the workspace, from anywhere.
|
|
29
|
+
*
|
|
30
|
+
* The function a host calls. It does not need the hook, a provider, or a
|
|
31
|
+
* React tree — a click handler in a landing page is the case this is for:
|
|
32
|
+
*
|
|
33
|
+
* ```ts
|
|
34
|
+
* <Button onClick={() => suggestLoopPrompt('Plot this data as a histogram')}>
|
|
35
|
+
* ```
|
|
36
|
+
*
|
|
37
|
+
* Safe to call before the workspace has mounted: the suggestion waits, and the
|
|
38
|
+
* prompt picks it up when it arrives. That matters for a lazily loaded
|
|
39
|
+
* workspace, where the button can easily be clicked first.
|
|
40
|
+
*/
|
|
41
|
+
export declare function suggestLoopPrompt(text: string, options?: {
|
|
42
|
+
submit?: boolean;
|
|
43
|
+
}): void;
|
|
44
|
+
export default useLoopPromptStore;
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright (c) 2025-2026 Datalayer, Inc.
|
|
3
|
+
* Distributed under the terms of the Modified BSD License.
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* Putting words in the workspace's prompt from outside it.
|
|
7
|
+
*
|
|
8
|
+
* A page that embeds the workspace often has something to say about it — a
|
|
9
|
+
* "try this" button beside the notebook, a suggestion in a landing hero — and
|
|
10
|
+
* the honest version of that button is not a link to documentation but the
|
|
11
|
+
* request itself, typed into the prompt where the visitor can read it, edit it
|
|
12
|
+
* and decide whether to send it.
|
|
13
|
+
*
|
|
14
|
+
* A store rather than a prop, because the two sides are far apart: the button
|
|
15
|
+
* lives in the host's page and the prompt lives several plugins deep inside
|
|
16
|
+
* the workspace, and threading a callback between them would put the host's
|
|
17
|
+
* copy into the workspace's props. The host calls a function; whichever prompt
|
|
18
|
+
* is mounted answers. Nothing is imported in the other direction.
|
|
19
|
+
*
|
|
20
|
+
* What is *not* here: sending. A suggestion arrives as a draft, and the
|
|
21
|
+
* visitor presses the button. A page that could make an agent run without
|
|
22
|
+
* anyone reading what it was asked is a page that can spend somebody's compute
|
|
23
|
+
* on their behalf — `submit` exists for the host that genuinely wants that,
|
|
24
|
+
* and defaults to off.
|
|
25
|
+
*
|
|
26
|
+
* @module loop/core/promptStore
|
|
27
|
+
*/
|
|
28
|
+
import { create } from 'zustand';
|
|
29
|
+
export const useLoopPromptStore = create((set, get) => ({
|
|
30
|
+
pending: undefined,
|
|
31
|
+
suggest: (text, options) => {
|
|
32
|
+
const trimmed = text.trim();
|
|
33
|
+
if (!trimmed) {
|
|
34
|
+
return;
|
|
35
|
+
}
|
|
36
|
+
set({
|
|
37
|
+
pending: {
|
|
38
|
+
text: trimmed,
|
|
39
|
+
submit: options?.submit ?? false,
|
|
40
|
+
nonce: (get().pending?.nonce ?? 0) + 1,
|
|
41
|
+
},
|
|
42
|
+
});
|
|
43
|
+
},
|
|
44
|
+
consume: () => set({ pending: undefined }),
|
|
45
|
+
}));
|
|
46
|
+
/**
|
|
47
|
+
* Offer a prompt to the workspace, from anywhere.
|
|
48
|
+
*
|
|
49
|
+
* The function a host calls. It does not need the hook, a provider, or a
|
|
50
|
+
* React tree — a click handler in a landing page is the case this is for:
|
|
51
|
+
*
|
|
52
|
+
* ```ts
|
|
53
|
+
* <Button onClick={() => suggestLoopPrompt('Plot this data as a histogram')}>
|
|
54
|
+
* ```
|
|
55
|
+
*
|
|
56
|
+
* Safe to call before the workspace has mounted: the suggestion waits, and the
|
|
57
|
+
* prompt picks it up when it arrives. That matters for a lazily loaded
|
|
58
|
+
* workspace, where the button can easily be clicked first.
|
|
59
|
+
*/
|
|
60
|
+
export function suggestLoopPrompt(text, options) {
|
|
61
|
+
useLoopPromptStore.getState().suggest(text, options);
|
|
62
|
+
}
|
|
63
|
+
export default useLoopPromptStore;
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Asking the chat to open a surface, from outside React.
|
|
3
|
+
*
|
|
4
|
+
* The surface beside the chat — a notebook, a document — is the chat's own
|
|
5
|
+
* state, held in the component that draws it. That is right: the chat decides
|
|
6
|
+
* what it shows, and lifting it into a global store so anything could set it
|
|
7
|
+
* would make every caller a co-owner of the chat's layout.
|
|
8
|
+
*
|
|
9
|
+
* But a command runs outside the component tree, and `/notebook` has to be
|
|
10
|
+
* able to open the notebook. Both editor commands used to call
|
|
11
|
+
* `setActiveViewType('chat')` and stop there, which shows the chat and leaves
|
|
12
|
+
* whichever surface was already open — so on the chat view, where a reader
|
|
13
|
+
* usually is, they did nothing at all.
|
|
14
|
+
*
|
|
15
|
+
* This is the narrow channel between the two: a command asks, the chat
|
|
16
|
+
* answers, and nobody else gains a way to set the chat's state. `requestSurface`
|
|
17
|
+
* reports whether anything was listening, so a command invoked with no chat on
|
|
18
|
+
* screen can say so rather than failing silently — which is how this went
|
|
19
|
+
* unnoticed.
|
|
20
|
+
*
|
|
21
|
+
* @module loop/core/surfaceRequests
|
|
22
|
+
*/
|
|
23
|
+
/** Told which surface somebody asked for. */
|
|
24
|
+
export type SurfaceRequestListener = (surfaceId: string) => void;
|
|
25
|
+
/**
|
|
26
|
+
* Ask for a surface by id.
|
|
27
|
+
*
|
|
28
|
+
* @returns whether anything was listening — `false` means no chat is mounted,
|
|
29
|
+
* and the caller should say so rather than assume it worked.
|
|
30
|
+
*/
|
|
31
|
+
export declare function requestSurface(surfaceId: string): boolean;
|
|
32
|
+
/** Listen for those requests. Returns the unsubscribe. */
|
|
33
|
+
export declare function onSurfaceRequest(listener: SurfaceRequestListener): () => void;
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright (c) 2025-2026 Datalayer, Inc.
|
|
3
|
+
* Distributed under the terms of the Modified BSD License.
|
|
4
|
+
*/
|
|
5
|
+
const listeners = new Set();
|
|
6
|
+
/**
|
|
7
|
+
* Ask for a surface by id.
|
|
8
|
+
*
|
|
9
|
+
* @returns whether anything was listening — `false` means no chat is mounted,
|
|
10
|
+
* and the caller should say so rather than assume it worked.
|
|
11
|
+
*/
|
|
12
|
+
export function requestSurface(surfaceId) {
|
|
13
|
+
if (listeners.size === 0) {
|
|
14
|
+
return false;
|
|
15
|
+
}
|
|
16
|
+
// Copied: a listener that unsubscribes while being told must not shorten the
|
|
17
|
+
// set being iterated.
|
|
18
|
+
for (const listener of [...listeners]) {
|
|
19
|
+
listener(surfaceId);
|
|
20
|
+
}
|
|
21
|
+
return true;
|
|
22
|
+
}
|
|
23
|
+
/** Listen for those requests. Returns the unsubscribe. */
|
|
24
|
+
export function onSurfaceRequest(listener) {
|
|
25
|
+
listeners.add(listener);
|
|
26
|
+
return () => {
|
|
27
|
+
listeners.delete(listener);
|
|
28
|
+
};
|
|
29
|
+
}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import type { ContributionPoint } from '@datalayer/reactor';
|
|
2
|
+
import type { ToolbarItem } from '@datalayer/primer-addons';
|
|
3
|
+
import type { EditorToolbarContext, EditorToolbarContribution, EditorToolbarItemContribution } from './index';
|
|
4
|
+
/** What an editor needs to know to draw its toolbar, or not draw it. */
|
|
5
|
+
export type EditorToolbar = {
|
|
6
|
+
/**
|
|
7
|
+
* Whether any plugin provides one.
|
|
8
|
+
*
|
|
9
|
+
* `false` means render no toolbar at all — not an empty one. An empty bar
|
|
10
|
+
* would still take a row of space and a border, and would make the toolbar
|
|
11
|
+
* plugin look like decoration rather than the thing that owns the bar.
|
|
12
|
+
*/
|
|
13
|
+
present: boolean;
|
|
14
|
+
/** Everything to put on it, ordered by the editor's own toolbar. */
|
|
15
|
+
items: ToolbarItem[];
|
|
16
|
+
};
|
|
17
|
+
/**
|
|
18
|
+
* The toolbar for this editor: whether there is one, and what is on it.
|
|
19
|
+
*
|
|
20
|
+
* Reading both points is also what activates the plugins waiting on them: an
|
|
21
|
+
* editor that renders causes its toolbar's provider to load, without naming
|
|
22
|
+
* it.
|
|
23
|
+
*
|
|
24
|
+
* @param point The point a plugin provides the toolbar through
|
|
25
|
+
* @param itemPoint The point other plugins add to it through
|
|
26
|
+
* @param context What contributors are handed
|
|
27
|
+
*/
|
|
28
|
+
export declare function useEditorToolbar(point: ContributionPoint<EditorToolbarContribution>, itemPoint: ContributionPoint<EditorToolbarItemContribution>, context: EditorToolbarContext): EditorToolbar;
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright (c) 2025-2026 Datalayer, Inc.
|
|
3
|
+
* Distributed under the terms of the Modified BSD License.
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* Reading an editor toolbar out of the plugins that provide and fill it.
|
|
7
|
+
*
|
|
8
|
+
* One hook rather than the same logic in each editor, because the rule — no
|
|
9
|
+
* provider, no toolbar, and no items either — has to be the same in both or
|
|
10
|
+
* the two editors disagree about what switching a toolbar plugin off means.
|
|
11
|
+
*
|
|
12
|
+
* @module loop/core/toolbar
|
|
13
|
+
*/
|
|
14
|
+
import { useMemo } from 'react';
|
|
15
|
+
import { useContributions } from '@datalayer/reactor/react';
|
|
16
|
+
/** Build one plugin's items, without letting a broken one take the editor down. */
|
|
17
|
+
function itemsOf(entry, context) {
|
|
18
|
+
try {
|
|
19
|
+
return entry.value.items?.(context) ?? [];
|
|
20
|
+
}
|
|
21
|
+
catch (error) {
|
|
22
|
+
// The notebook is the work, the toolbar is furniture: one plugin with a
|
|
23
|
+
// broken item must not cost the reader their editor.
|
|
24
|
+
console.warn(`[loop] The plugin ${entry.plugin} failed to build its toolbar items.`, error);
|
|
25
|
+
return [];
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* The toolbar for this editor: whether there is one, and what is on it.
|
|
30
|
+
*
|
|
31
|
+
* Reading both points is also what activates the plugins waiting on them: an
|
|
32
|
+
* editor that renders causes its toolbar's provider to load, without naming
|
|
33
|
+
* it.
|
|
34
|
+
*
|
|
35
|
+
* @param point The point a plugin provides the toolbar through
|
|
36
|
+
* @param itemPoint The point other plugins add to it through
|
|
37
|
+
* @param context What contributors are handed
|
|
38
|
+
*/
|
|
39
|
+
export function useEditorToolbar(point, itemPoint, context) {
|
|
40
|
+
const providers = useContributions(point);
|
|
41
|
+
const additions = useContributions(itemPoint);
|
|
42
|
+
const { workspace, editorId } = context;
|
|
43
|
+
return useMemo(() => {
|
|
44
|
+
if (providers.length === 0) {
|
|
45
|
+
// Nobody provides the bar, so nothing goes on it. Returning the
|
|
46
|
+
// additions here would leave the chat's buttons looking for a toolbar
|
|
47
|
+
// that the editor is not going to draw.
|
|
48
|
+
return { present: false, items: [] };
|
|
49
|
+
}
|
|
50
|
+
const scoped = { workspace, editorId };
|
|
51
|
+
return {
|
|
52
|
+
present: true,
|
|
53
|
+
items: [
|
|
54
|
+
...providers.flatMap(entry => itemsOf(entry, scoped)),
|
|
55
|
+
...additions.flatMap(entry => itemsOf(entry, scoped)),
|
|
56
|
+
],
|
|
57
|
+
};
|
|
58
|
+
}, [providers, additions, workspace, editorId]);
|
|
59
|
+
}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Loop, ready to drop into somebody else's page.
|
|
3
|
+
*
|
|
4
|
+
* The supported way to embed the workspace: a plugin set from `loopPlugins`, a
|
|
5
|
+
* query client, an optional theme, and the shell. Everything a host has to do
|
|
6
|
+
* around Loop, done once here instead of once per host.
|
|
7
|
+
*
|
|
8
|
+
* It exists because the landing page was embedding the *example*. An example is
|
|
9
|
+
* written to be read — its props are demonstration switches, its wiring is
|
|
10
|
+
* whatever made the demo clearest, and none of it is a promise. A page that
|
|
11
|
+
* embeds Loop needs a supported surface, and the two drifting apart should not
|
|
12
|
+
* be able to break somebody's home page.
|
|
13
|
+
*
|
|
14
|
+
* What a host still owns is the frame it puts around this and how much of the
|
|
15
|
+
* page to give it. `WindowFrame` is there for the first; the second is a
|
|
16
|
+
* `height` on whatever wraps this.
|
|
17
|
+
*
|
|
18
|
+
* @module loop/embed/LoopEmbed
|
|
19
|
+
*/
|
|
20
|
+
import { type ReactNode } from 'react';
|
|
21
|
+
import type { PluginRef } from '@datalayer/reactor';
|
|
22
|
+
import { type LoopPresetOptions } from '../presets';
|
|
23
|
+
export type LoopEmbedProps = LoopPresetOptions & {
|
|
24
|
+
/** Which agent the conversation is with. */
|
|
25
|
+
agentId?: string;
|
|
26
|
+
/** Whether the shell draws its own header row above the views. */
|
|
27
|
+
showHeader?: boolean;
|
|
28
|
+
/** Extra controls for the chat's own header, beside the agent's name. */
|
|
29
|
+
chatHeaderActions?: ReactNode;
|
|
30
|
+
/** The host's own controls for the workspace header row. */
|
|
31
|
+
headerActions?: ReactNode;
|
|
32
|
+
/**
|
|
33
|
+
* Draw the workspace inside a window frame with this title bar.
|
|
34
|
+
*
|
|
35
|
+
* The composition every embedding page was writing for itself: the frame
|
|
36
|
+
* around the shell, the title in its bar. Giving a title is what asks for
|
|
37
|
+
* the frame; it also switches the `windowFrame` plugin on, since a frame
|
|
38
|
+
* whose title-bar slots are closed to plugins is only half the point.
|
|
39
|
+
*/
|
|
40
|
+
frameTitle?: ReactNode;
|
|
41
|
+
/**
|
|
42
|
+
* How tall the frame stands. Left unset it fills whatever wraps this,
|
|
43
|
+
* which is what a full-page host wants.
|
|
44
|
+
*/
|
|
45
|
+
frameHeight?: number | string;
|
|
46
|
+
/**
|
|
47
|
+
* The host's own plugins, mounted alongside the preset's.
|
|
48
|
+
*
|
|
49
|
+
* How a page adds something to Loop rather than around it — a button in the
|
|
50
|
+
* window's title bar, a panel of its own, a command. Without this a host
|
|
51
|
+
* would have to rebuild the plugin list to add one thing to it, which is the
|
|
52
|
+
* assembly this component exists to save.
|
|
53
|
+
*/
|
|
54
|
+
plugins?: PluginRef[];
|
|
55
|
+
};
|
|
56
|
+
export declare function LoopEmbed({ agentId, showHeader, chatHeaderActions, headerActions, frameTitle, frameHeight, plugins, ...preset }: LoopEmbedProps): React.JSX.Element;
|
|
57
|
+
export default LoopEmbed;
|