@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,160 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { CommentDiscussionIcon } from '@primer/octicons-react';
|
|
3
|
+
import { definePlugin, signal } from '@datalayer/reactor';
|
|
4
|
+
import { useContributions, useSignalValue } from '@datalayer/reactor/react';
|
|
5
|
+
import { PageLayout, PagePanelToggle, openPagePanel, } from '@datalayer/primer-addons/lib/reactor';
|
|
6
|
+
import { ChatViewModeToggle } from '../../../chat/header/ChatViewModeToggle';
|
|
7
|
+
import { LoopChatLayout, LoopChatTurn, LoopPromptPanel, LoopSlots, } from '../../core';
|
|
8
|
+
import { TurnPanel } from './TurnPanel';
|
|
9
|
+
/*
|
|
10
|
+
* The layout's state is primer-addons', re-exported under the names the
|
|
11
|
+
* Loop always had: a host that opened the conversation panel by calling
|
|
12
|
+
* `openConversationPanel()` keeps doing so.
|
|
13
|
+
*/
|
|
14
|
+
export { pageLayoutPanelOpen, pageLayoutSheet, openPagePanel as openConversationPanel, } from '@datalayer/primer-addons/lib/reactor';
|
|
15
|
+
export const LOOP_PAGE_LAYOUT_PLUGIN_NAME = '@datalayer/loop-plugin-page-layout';
|
|
16
|
+
/* A signal to read when no chat contributed a turn: the hook needs one. */
|
|
17
|
+
const NO_TURN = signal({ id: 0, status: 'idle' });
|
|
18
|
+
/**
|
|
19
|
+
* How the page layout shows the chat, when the composer is the floating
|
|
20
|
+
* card: the card itself over the page (`floating-draggable`, where it
|
|
21
|
+
* starts), or the conversation panel with the composer standing in it —
|
|
22
|
+
* beside the page (`sidebar`), over its right edge at full height
|
|
23
|
+
* (`floating`), or as a window in its corner (`floating-small`). The four
|
|
24
|
+
* modes of the chat header's toggle, which the card carries in its own
|
|
25
|
+
* footer. One signal for the workspace, as `pageLayoutPanelOpen` is: the
|
|
26
|
+
* mode is the person's, not a build's.
|
|
27
|
+
*/
|
|
28
|
+
export const pageLayoutChatMode = signal('floating-draggable');
|
|
29
|
+
/** The composer's stance for the chat view, following the mode above. */
|
|
30
|
+
const promptStance = signal('floating-top');
|
|
31
|
+
/*
|
|
32
|
+
* Which edge the card returns to when the mode puts it back over the page:
|
|
33
|
+
* the build's own `promptAnchor`, kept here because the mode is picked
|
|
34
|
+
* through a module-level function, as `pageLayoutChatMode` itself is. One
|
|
35
|
+
* page layout to a page, the assumption that signal already makes.
|
|
36
|
+
*/
|
|
37
|
+
let floatingStance = 'floating-top';
|
|
38
|
+
export function pageLayoutForChatMode(mode) {
|
|
39
|
+
switch (mode) {
|
|
40
|
+
case 'sidebar':
|
|
41
|
+
return { bandMode: 'panel', panelMode: 'docked' };
|
|
42
|
+
case 'floating':
|
|
43
|
+
return { bandMode: 'panel', panelMode: 'overlay' };
|
|
44
|
+
case 'floating-small':
|
|
45
|
+
return { bandMode: 'panel', panelMode: 'popup' };
|
|
46
|
+
default:
|
|
47
|
+
return { bandMode: 'floating', panelMode: 'docked' };
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
/** Picks a mode: the layout follows, and so does the composer's stance. */
|
|
51
|
+
export function setPageLayoutChatMode(mode) {
|
|
52
|
+
pageLayoutChatMode.value = mode;
|
|
53
|
+
const { bandMode } = pageLayoutForChatMode(mode);
|
|
54
|
+
promptStance.value = bandMode === 'floating' ? floatingStance : 'docked-top';
|
|
55
|
+
// The composer went into the panel: the panel opens to show it.
|
|
56
|
+
if (bandMode === 'panel') {
|
|
57
|
+
openPagePanel();
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
/** The toggle in the floating composer's footer. */
|
|
61
|
+
function ChatModeAction() {
|
|
62
|
+
const mode = useSignalValue(pageLayoutChatMode);
|
|
63
|
+
return _jsx(ChatViewModeToggle, { value: mode, onChange: setPageLayoutChatMode });
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* The chat view's parts on the page layout.
|
|
67
|
+
*
|
|
68
|
+
* The editors are the page, the transcript the panel, the composer the band;
|
|
69
|
+
* what the agent is doing — the turn's `activity` — is the line at the top
|
|
70
|
+
* of the sheet, so the change is seen where it happens.
|
|
71
|
+
*/
|
|
72
|
+
function LoopPageLayout({ parts, promptMode, pageSize, }) {
|
|
73
|
+
const turnEntries = useContributions(LoopChatTurn);
|
|
74
|
+
const turn = useSignalValue(turnEntries[0]?.value.turn ?? NO_TURN);
|
|
75
|
+
const chatMode = useSignalValue(pageLayoutChatMode);
|
|
76
|
+
// The display modes are the floating card's own; a docked composer stays
|
|
77
|
+
// docked above the page, whatever mode was picked elsewhere.
|
|
78
|
+
const placement = promptMode === 'floating'
|
|
79
|
+
? pageLayoutForChatMode(chatMode)
|
|
80
|
+
: { bandMode: 'docked', panelMode: 'docked' };
|
|
81
|
+
return (_jsx(PageLayout, { page: parts.editors, hasPage: parts.hasEditor, panel: parts.transcript, band: parts.prompt, chips: parts.chips, picker: parts.picker, transient: parts.transient, activity: turn.activity, bandMode: placement.bandMode, panelMode: placement.panelMode, pageSize: pageSize }));
|
|
82
|
+
}
|
|
83
|
+
/** The header button that opens and closes the conversation panel. */
|
|
84
|
+
function ConversationToggle() {
|
|
85
|
+
return (_jsx(PagePanelToggle, { panelName: "conversation", icon: CommentDiscussionIcon, sx: { order: 2 } }));
|
|
86
|
+
}
|
|
87
|
+
export const LoopPageLayoutPlugin = definePlugin({
|
|
88
|
+
name: LOOP_PAGE_LAYOUT_PLUGIN_NAME,
|
|
89
|
+
config: {
|
|
90
|
+
turnPanel: 'below',
|
|
91
|
+
turnPanelFooter: 'full',
|
|
92
|
+
prompt: 'docked',
|
|
93
|
+
promptAnchor: 'top',
|
|
94
|
+
pageSize: undefined,
|
|
95
|
+
},
|
|
96
|
+
displayName: 'Page layout',
|
|
97
|
+
description: 'The editor — or, in the chat view, the conversation — on a centred sheet, the prompt docked above it at the same width or floating over it as a draggable card, the current turn under the prompt, the conversation in a side panel.',
|
|
98
|
+
octicon: 'file',
|
|
99
|
+
emoji: '\u{1F4C4}',
|
|
100
|
+
build: ({ config, ...ctx }) => {
|
|
101
|
+
/*
|
|
102
|
+
The layout, contributed per build because the composer's stance is
|
|
103
|
+
configuration: `docked-top` means the layout owns the composer's width
|
|
104
|
+
— `PageLayout` gives it a mount point the width of the sheet, so the
|
|
105
|
+
prompt and the page read as one column; `floating-top` and
|
|
106
|
+
`floating-bottom` are the draggable
|
|
107
|
+
card, sized by itself, over a strip of canvas kept clear for it. The
|
|
108
|
+
component closes over the choice once, per build.
|
|
109
|
+
*/
|
|
110
|
+
const promptMode = config.prompt;
|
|
111
|
+
const pageSize = config.pageSize;
|
|
112
|
+
floatingStance =
|
|
113
|
+
config.promptAnchor === 'bottom' ? 'floating-bottom' : 'floating-top';
|
|
114
|
+
if (promptMode === 'floating') {
|
|
115
|
+
promptStance.value = floatingStance;
|
|
116
|
+
}
|
|
117
|
+
const ConfiguredLayout = (parts) => (_jsx(LoopPageLayout, { parts: parts, promptMode: promptMode, pageSize: pageSize }));
|
|
118
|
+
ctx.contribute(LoopChatLayout, {
|
|
119
|
+
id: 'page-layout',
|
|
120
|
+
prompt: promptMode === 'floating' ? floatingStance : 'docked-top',
|
|
121
|
+
// Live only for the card: its display modes move the composer.
|
|
122
|
+
promptStance: promptMode === 'floating' ? promptStance : undefined,
|
|
123
|
+
Component: ConfiguredLayout,
|
|
124
|
+
}, { id: 'page-layout' });
|
|
125
|
+
// The turn panel is configuration-dependent, so it is contributed here
|
|
126
|
+
// rather than statically: which side, what footer, or not at all. The
|
|
127
|
+
// component closes over the footer choice once, per build.
|
|
128
|
+
if (config.turnPanel !== 'none') {
|
|
129
|
+
const footer = config.turnPanelFooter;
|
|
130
|
+
const ConfiguredTurnPanel = () => (_jsx(TurnPanel, { footer: footer }));
|
|
131
|
+
ctx.contribute(LoopPromptPanel, {
|
|
132
|
+
id: 'page-layout-turn',
|
|
133
|
+
placement: config.turnPanel,
|
|
134
|
+
order: 0,
|
|
135
|
+
Component: ConfiguredTurnPanel,
|
|
136
|
+
}, { id: 'page-layout-turn' });
|
|
137
|
+
}
|
|
138
|
+
return {
|
|
139
|
+
components: [
|
|
140
|
+
{
|
|
141
|
+
id: 'page-layout-conversation-toggle',
|
|
142
|
+
slot: LoopSlots.header,
|
|
143
|
+
Component: ConversationToggle,
|
|
144
|
+
},
|
|
145
|
+
// The display modes, in the floating card's footer — and only
|
|
146
|
+
// there: a docked composer has none to pick.
|
|
147
|
+
...(promptMode === 'floating'
|
|
148
|
+
? [
|
|
149
|
+
{
|
|
150
|
+
id: 'page-layout-chat-mode',
|
|
151
|
+
slot: LoopSlots.promptAction,
|
|
152
|
+
Component: ChatModeAction,
|
|
153
|
+
},
|
|
154
|
+
]
|
|
155
|
+
: []),
|
|
156
|
+
],
|
|
157
|
+
};
|
|
158
|
+
},
|
|
159
|
+
});
|
|
160
|
+
export default LoopPageLayoutPlugin;
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { ReactorReactOutput } from '@datalayer/reactor/react';
|
|
2
|
+
export declare const PLUGINS_PANEL_PLUGIN_NAME = "@datalayer/loop-plugin-plugins-panel";
|
|
3
|
+
/**
|
|
4
|
+
* How wide the panel is, and the aside around it.
|
|
5
|
+
*
|
|
6
|
+
* Declared here rather than in the shell so the two cannot disagree: the panel
|
|
7
|
+
* truncates its descriptions to the width it was given, and truncating to a
|
|
8
|
+
* width the container does not actually have is how text ends up cut short in
|
|
9
|
+
* the middle of empty space.
|
|
10
|
+
*/
|
|
11
|
+
export declare const SIDEBAR_WIDTH = 420;
|
|
12
|
+
export declare const PluginsPanelPlugin: import("@datalayer/reactor").ReactorPlugin<Record<string, never>, unknown, ReactorReactOutput>;
|
|
13
|
+
export { PluginsManagerView as PluginsPanel } from '@datalayer/reactor-manager';
|
|
14
|
+
export default PluginsPanelPlugin;
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
/*
|
|
3
|
+
* Copyright (c) 2025-2026 Datalayer, Inc.
|
|
4
|
+
* Distributed under the terms of the Modified BSD License.
|
|
5
|
+
*/
|
|
6
|
+
/**
|
|
7
|
+
* `@datalayer/loop-plugin-plugins-panel` — the plugin list, as a plugin.
|
|
8
|
+
*
|
|
9
|
+
* It fills the sidebar slot like any other contribution, which is the joke and
|
|
10
|
+
* also the proof: the thing that switches plugins on and off is itself one, and
|
|
11
|
+
* can be left out of a host that does not want it.
|
|
12
|
+
*
|
|
13
|
+
* The list itself is no longer written here. `@datalayer/reactor-manager` is
|
|
14
|
+
* the same surface, generic — a filter, a row per plugin, a switch each — and
|
|
15
|
+
* the workspace had grown its own copy that answered the same questions
|
|
16
|
+
* slightly differently. This plugin is now the loop's placement of it: which
|
|
17
|
+
* slot it goes in, and which plugin may not be switched off.
|
|
18
|
+
*
|
|
19
|
+
* What went with the rewrite is the graph button. The panel used to draw it,
|
|
20
|
+
* which meant asking by name whether a graph view was mounted; the graph
|
|
21
|
+
* plugin contributes it to the manager's action slot now, so it appears and
|
|
22
|
+
* disappears with the thing it opens.
|
|
23
|
+
*
|
|
24
|
+
* @module loop/plugins/plugins-panel
|
|
25
|
+
*/
|
|
26
|
+
import { definePlugin } from '@datalayer/reactor';
|
|
27
|
+
import { GraphPlugin } from '@datalayer/reactor-graph';
|
|
28
|
+
import { PluginsManagerView } from '@datalayer/reactor-manager';
|
|
29
|
+
import { LoopSlots } from '../../core';
|
|
30
|
+
export const PLUGINS_PANEL_PLUGIN_NAME = '@datalayer/loop-plugin-plugins-panel';
|
|
31
|
+
/**
|
|
32
|
+
* How wide the panel is, and the aside around it.
|
|
33
|
+
*
|
|
34
|
+
* Declared here rather than in the shell so the two cannot disagree: the panel
|
|
35
|
+
* truncates its descriptions to the width it was given, and truncating to a
|
|
36
|
+
* width the container does not actually have is how text ends up cut short in
|
|
37
|
+
* the middle of empty space.
|
|
38
|
+
*/
|
|
39
|
+
export const SIDEBAR_WIDTH = 420;
|
|
40
|
+
/** The generic graph plugin, which the loop's own adapter wraps. */
|
|
41
|
+
const REACTOR_GRAPH_PLUGIN_NAME = GraphPlugin.name;
|
|
42
|
+
export const PluginsPanelPlugin = definePlugin({
|
|
43
|
+
name: PLUGINS_PANEL_PLUGIN_NAME,
|
|
44
|
+
displayName: 'Plugins panel',
|
|
45
|
+
description: 'Switch plugins on and off while the workspace runs.',
|
|
46
|
+
octicon: 'plug',
|
|
47
|
+
emoji: '\u{1F50C}',
|
|
48
|
+
build: () => ({
|
|
49
|
+
components: [
|
|
50
|
+
{
|
|
51
|
+
id: 'plugins-panel',
|
|
52
|
+
slot: LoopSlots.sidebar,
|
|
53
|
+
// Last in the sidebar: it is about the workspace rather than part of
|
|
54
|
+
// the work, so a plugin's own panel — the decks list, say — sits
|
|
55
|
+
// above it whatever order the plugins were listed in.
|
|
56
|
+
order: 900,
|
|
57
|
+
// Itself protected: switching the panel off would remove the only way
|
|
58
|
+
// to switch anything back on.
|
|
59
|
+
//
|
|
60
|
+
// The workspace is forwarded rather than used here — the manager
|
|
61
|
+
// passes whatever it is given to the plugins contributing actions, and
|
|
62
|
+
// the graph button is the one that needs it.
|
|
63
|
+
Component: ({ workspace }) => (_jsx(PluginsManagerView, { protectedPlugins: [PLUGINS_PANEL_PLUGIN_NAME],
|
|
64
|
+
// `@datalayer/loop-plugin-graph` is the switch that matters: it
|
|
65
|
+
// places the graph in this workspace and pulls the generic plugin
|
|
66
|
+
// in as a dependency. Listing both put two switches in front of
|
|
67
|
+
// one feature, with no way to tell which to use.
|
|
68
|
+
hiddenPlugins: [REACTOR_GRAPH_PLUGIN_NAME], width: SIDEBAR_WIDTH, workspace: workspace })),
|
|
69
|
+
},
|
|
70
|
+
],
|
|
71
|
+
}),
|
|
72
|
+
});
|
|
73
|
+
export { PluginsManagerView as PluginsPanel } from '@datalayer/reactor-manager';
|
|
74
|
+
export default PluginsPanelPlugin;
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The + in the prompt's footer: start the conversation over.
|
|
3
|
+
*
|
|
4
|
+
* The chat header carries the same control, and a workspace that hides that
|
|
5
|
+
* header — the Loop Shell does — used to lose the only way to reset. This one
|
|
6
|
+
* lives with the composer, which is on screen in every placement.
|
|
7
|
+
*
|
|
8
|
+
* It presses the `/new` command rather than reaching into the chat, so the
|
|
9
|
+
* button and the slash command cannot drift: one intent, one path, and the
|
|
10
|
+
* command's own error shows when no conversation is on screen.
|
|
11
|
+
*
|
|
12
|
+
* @module loop/plugins/prompt/NewChatAction
|
|
13
|
+
*/
|
|
14
|
+
import type { JSX } from 'react';
|
|
15
|
+
import type { LoopWorkspaceContext } from '../../core';
|
|
16
|
+
export declare function NewChatAction({ workspace, }: {
|
|
17
|
+
workspace?: LoopWorkspaceContext;
|
|
18
|
+
}): JSX.Element | null;
|
|
19
|
+
export default NewChatAction;
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { IconButton } from '@primer/react';
|
|
3
|
+
import { PlusIcon } from '@primer/octicons-react';
|
|
4
|
+
export function NewChatAction({ workspace, }) {
|
|
5
|
+
if (!workspace) {
|
|
6
|
+
return null;
|
|
7
|
+
}
|
|
8
|
+
return (_jsx(IconButton, { icon: PlusIcon, "aria-label": "New conversation", title: "New conversation", variant: "invisible", size: "small", onClick: () => void workspace.submit('/new') }));
|
|
9
|
+
}
|
|
10
|
+
export default NewChatAction;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { NewChatAction } from './NewChatAction';
|
|
2
|
+
export declare const PROMPT_PLUGIN_NAME = "@datalayer/loop-plugin-prompt";
|
|
3
|
+
export declare const PromptPlugin: import("@datalayer/reactor").ReactorPlugin<Record<string, never>, unknown, {
|
|
4
|
+
components: {
|
|
5
|
+
id: string;
|
|
6
|
+
slot: "loop.promptAction";
|
|
7
|
+
Component: typeof NewChatAction;
|
|
8
|
+
}[];
|
|
9
|
+
}>;
|
|
10
|
+
export { focusPrompt, onPromptFocusRequest } from '../../core';
|
|
11
|
+
export default PromptPlugin;
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright (c) 2025-2026 Datalayer, Inc.
|
|
3
|
+
* Distributed under the terms of the Modified BSD License.
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* `@datalayer/loop-plugin-prompt` — the prompt as a first-class subject.
|
|
7
|
+
*
|
|
8
|
+
* The composer itself is the chat's, whatever the placement: docked under the
|
|
9
|
+
* workspace, in the chat column, or floating in a draggable card
|
|
10
|
+
* (`promptPlacement: 'floating'` on the chat, which is the real
|
|
11
|
+
* `InputPrompt` — lexical editor, slash commands, the tools/skills/model
|
|
12
|
+
* footer — wrapped in `FloatingCard`). This plugin deliberately ships no
|
|
13
|
+
* second input box: two composers for one conversation is one too many, and a
|
|
14
|
+
* reimplementation would be a composer that drifts.
|
|
15
|
+
*
|
|
16
|
+
* What it adds is around the composer: `/prompt` (Mod+Alt+P) puts the caret
|
|
17
|
+
* in it from anywhere, through the same ask-and-answer channel the editor
|
|
18
|
+
* commands use; `/new` (Mod+Alt+R) starts the conversation over, and the +
|
|
19
|
+
* this plugin puts in the prompt's footer bar presses exactly that command.
|
|
20
|
+
* `loopPlugins({ floatingPrompt: true })` mounts this plugin and asks the
|
|
21
|
+
* chat for the floating placement together.
|
|
22
|
+
*
|
|
23
|
+
* @module loop/plugins/prompt
|
|
24
|
+
*/
|
|
25
|
+
import { contribution, definePlugin } from '@datalayer/reactor';
|
|
26
|
+
import { LoopCommand, LoopSlots, focusPrompt } from '../../core';
|
|
27
|
+
import { NewChatAction } from './NewChatAction';
|
|
28
|
+
export const PROMPT_PLUGIN_NAME = '@datalayer/loop-plugin-prompt';
|
|
29
|
+
export const PromptPlugin = definePlugin({
|
|
30
|
+
name: PROMPT_PLUGIN_NAME,
|
|
31
|
+
displayName: 'Prompt',
|
|
32
|
+
description: 'Prompt commands: focus the composer, start over, and the +.',
|
|
33
|
+
octicon: 'paper-airplane',
|
|
34
|
+
emoji: '\u{1FAB6}',
|
|
35
|
+
contributes: [
|
|
36
|
+
contribution(LoopCommand, {
|
|
37
|
+
name: 'prompt',
|
|
38
|
+
description: 'Focus the prompt',
|
|
39
|
+
group: 'Session',
|
|
40
|
+
keybinding: 'Mod+Alt+P',
|
|
41
|
+
run: async () => {
|
|
42
|
+
if (!focusPrompt()) {
|
|
43
|
+
throw new Error('No prompt is on screen to focus.');
|
|
44
|
+
}
|
|
45
|
+
},
|
|
46
|
+
}, { id: 'prompt' }),
|
|
47
|
+
contribution(LoopCommand, {
|
|
48
|
+
name: 'new',
|
|
49
|
+
aliases: ['reset'],
|
|
50
|
+
description: 'Start the conversation over',
|
|
51
|
+
group: 'Session',
|
|
52
|
+
keybinding: 'Mod+Alt+R',
|
|
53
|
+
run: async ({ workspace }) => {
|
|
54
|
+
const reset = workspace.viewControls.newChat;
|
|
55
|
+
if (!reset) {
|
|
56
|
+
throw new Error('No conversation is on screen to start over.');
|
|
57
|
+
}
|
|
58
|
+
reset();
|
|
59
|
+
},
|
|
60
|
+
}, { id: 'new' }),
|
|
61
|
+
],
|
|
62
|
+
build: () => ({
|
|
63
|
+
components: [
|
|
64
|
+
{
|
|
65
|
+
id: 'new-chat',
|
|
66
|
+
slot: LoopSlots.promptAction,
|
|
67
|
+
Component: NewChatAction,
|
|
68
|
+
},
|
|
69
|
+
],
|
|
70
|
+
}),
|
|
71
|
+
});
|
|
72
|
+
export { focusPrompt, onPromptFocusRequest } from '../../core';
|
|
73
|
+
export default PromptPlugin;
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The editor choice, in the loop's vocabulary.
|
|
3
|
+
*
|
|
4
|
+
* The store itself lives in `@datalayer/reactor-shell` now — the loop's
|
|
5
|
+
* editor selector grew into the generic shell plugin, and this module is the
|
|
6
|
+
* thin dictionary between the two: `editor` here is `view` there. Kept so
|
|
7
|
+
* everything written against the loop's names (the `/editor` command, the
|
|
8
|
+
* tests, the barrel) reads unchanged.
|
|
9
|
+
*
|
|
10
|
+
* The one behavioural difference from the old local store is deliberate:
|
|
11
|
+
* `chooseEditor` no longer calls the chat's surface channel itself — the
|
|
12
|
+
* generic store announces every choice through the announcer the loop's
|
|
13
|
+
* shell plugin installs, which is wired to `requestSurface`. One path,
|
|
14
|
+
* whether the choice came from the selector, `/editor`, or the generic
|
|
15
|
+
* cycle command.
|
|
16
|
+
*
|
|
17
|
+
* @module loop/plugins/shell/editorChoice
|
|
18
|
+
*/
|
|
19
|
+
import { chooseView, nextView, seedViewChoice, setViewOptions, subscribeViewChoice } from '@datalayer/reactor-shell';
|
|
20
|
+
/** The choice that means "just the conversation". */
|
|
21
|
+
export declare const NONE_EDITOR = "none";
|
|
22
|
+
/** The current request and options, in loop names. */
|
|
23
|
+
export declare function getEditorChoice(): {
|
|
24
|
+
editorId: string;
|
|
25
|
+
options: readonly string[];
|
|
26
|
+
};
|
|
27
|
+
export declare const subscribeEditorChoice: typeof subscribeViewChoice;
|
|
28
|
+
export declare const setEditorOptions: typeof setViewOptions;
|
|
29
|
+
export declare const chooseEditor: typeof chooseView;
|
|
30
|
+
export declare const seedEditorChoice: typeof seedViewChoice;
|
|
31
|
+
export declare const nextEditor: typeof nextView;
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright (c) 2025-2026 Datalayer, Inc.
|
|
3
|
+
* Distributed under the terms of the Modified BSD License.
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* The editor choice, in the loop's vocabulary.
|
|
7
|
+
*
|
|
8
|
+
* The store itself lives in `@datalayer/reactor-shell` now — the loop's
|
|
9
|
+
* editor selector grew into the generic shell plugin, and this module is the
|
|
10
|
+
* thin dictionary between the two: `editor` here is `view` there. Kept so
|
|
11
|
+
* everything written against the loop's names (the `/editor` command, the
|
|
12
|
+
* tests, the barrel) reads unchanged.
|
|
13
|
+
*
|
|
14
|
+
* The one behavioural difference from the old local store is deliberate:
|
|
15
|
+
* `chooseEditor` no longer calls the chat's surface channel itself — the
|
|
16
|
+
* generic store announces every choice through the announcer the loop's
|
|
17
|
+
* shell plugin installs, which is wired to `requestSurface`. One path,
|
|
18
|
+
* whether the choice came from the selector, `/editor`, or the generic
|
|
19
|
+
* cycle command.
|
|
20
|
+
*
|
|
21
|
+
* @module loop/plugins/shell/editorChoice
|
|
22
|
+
*/
|
|
23
|
+
import { NONE_VIEW, chooseView, getViewChoice, nextView, seedViewChoice, setViewAnnouncer, setViewOptions, subscribeViewChoice, } from '@datalayer/reactor-shell';
|
|
24
|
+
import { requestSurface } from '../../core/surfaceRequests';
|
|
25
|
+
/*
|
|
26
|
+
* Wired at import, not only at plugin start: the `/editor` command is a
|
|
27
|
+
* plain contribution that can be run without a reactor around it — the tests
|
|
28
|
+
* do, and so does anything driving commands headlessly — and a choice that
|
|
29
|
+
* silently announced to nobody would look exactly like the bug the surface
|
|
30
|
+
* channel exists to prevent. The loop shell plugin installs the same
|
|
31
|
+
* announcer again when it registers, which is idempotent by construction.
|
|
32
|
+
*/
|
|
33
|
+
setViewAnnouncer(requestSurface);
|
|
34
|
+
/** The choice that means "just the conversation". */
|
|
35
|
+
export const NONE_EDITOR = NONE_VIEW;
|
|
36
|
+
/*
|
|
37
|
+
* Cached per underlying state: `useSyncExternalStore` re-renders whenever
|
|
38
|
+
* the snapshot's identity changes, so a getter that builds a fresh object on
|
|
39
|
+
* every call is an infinite render loop waiting for its first subscriber —
|
|
40
|
+
* the view-switch icons found it. The store replaces its state object only
|
|
41
|
+
* on actual change, which makes it the perfect cache key.
|
|
42
|
+
*/
|
|
43
|
+
let mappedFor = null;
|
|
44
|
+
let mapped = null;
|
|
45
|
+
/** The current request and options, in loop names. */
|
|
46
|
+
export function getEditorChoice() {
|
|
47
|
+
const state = getViewChoice();
|
|
48
|
+
if (state !== mappedFor || !mapped) {
|
|
49
|
+
mappedFor = state;
|
|
50
|
+
mapped = { editorId: state.viewId, options: state.options };
|
|
51
|
+
}
|
|
52
|
+
return mapped;
|
|
53
|
+
}
|
|
54
|
+
export const subscribeEditorChoice = subscribeViewChoice;
|
|
55
|
+
export const setEditorOptions = setViewOptions;
|
|
56
|
+
export const chooseEditor = chooseView;
|
|
57
|
+
export const seedEditorChoice = seedViewChoice;
|
|
58
|
+
export const nextEditor = nextView;
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `@datalayer/loop-plugin-shell` — the loop's face of the generic shell.
|
|
3
|
+
*
|
|
4
|
+
* The machinery lives in `@datalayer/reactor-shell` now: the view choice
|
|
5
|
+
* store, the segmented selector that shows nothing until plugins contribute,
|
|
6
|
+
* the cycle command. This plugin is what makes it *the loop's*:
|
|
7
|
+
*
|
|
8
|
+
* - it points the generic plugin at {@link LoopEditorView} — the editor
|
|
9
|
+
* point the notebook and document fill — and declares the loop's points;
|
|
10
|
+
* - it teaches the selector to read a {@link ChatSurfaceContribution},
|
|
11
|
+
* gating against the live workspace the header slot passes;
|
|
12
|
+
* - it wires the announcer to `requestSurface`, so a choice reaches the chat
|
|
13
|
+
* through the same channel `/notebook` and `/document` use;
|
|
14
|
+
* - it keeps the `/editor` slash command, in the loop's own registry.
|
|
15
|
+
*
|
|
16
|
+
* @module loop/plugins/shell
|
|
17
|
+
*/
|
|
18
|
+
import type { JSX } from 'react';
|
|
19
|
+
export declare const SHELL_PLUGIN_NAME = "@datalayer/loop-plugin-shell";
|
|
20
|
+
export type ShellPluginConfig = {
|
|
21
|
+
/**
|
|
22
|
+
* The editor the selector starts on.
|
|
23
|
+
*
|
|
24
|
+
* A preference, not a demand, exactly like the chat's `defaultSurface` — a
|
|
25
|
+
* named editor whose plugin is not mounted leaves the selector on `'none'`.
|
|
26
|
+
* The two configs should agree; `loopPlugins` sets both from one option.
|
|
27
|
+
*/
|
|
28
|
+
defaultEditor: string;
|
|
29
|
+
/**
|
|
30
|
+
* Whether the header carries the segmented control at all.
|
|
31
|
+
*
|
|
32
|
+
* The points are declared either way — extending the shell must not
|
|
33
|
+
* depend on whether its selector happens to be drawn.
|
|
34
|
+
*/
|
|
35
|
+
showSelector: boolean;
|
|
36
|
+
};
|
|
37
|
+
/** The generic selector, dressed for the loop's header. */
|
|
38
|
+
declare function EditorSelectorComponent(slotProps: Record<string, unknown>): JSX.Element | null;
|
|
39
|
+
export declare const ShellPlugin: import("@datalayer/reactor").ReactorPlugin<ShellPluginConfig, unknown, unknown>;
|
|
40
|
+
export { NONE_EDITOR, chooseEditor, getEditorChoice, nextEditor, seedEditorChoice, setEditorOptions, subscribeEditorChoice, } from './editorChoice';
|
|
41
|
+
/** The loop's selector, for a host that renders it somewhere of its own. */
|
|
42
|
+
export { EditorSelectorComponent as EditorSelector };
|
|
43
|
+
/** @deprecated The editors plugin grew into the shell plugin; same object. */
|
|
44
|
+
export declare const EditorsPlugin: import("@datalayer/reactor").ReactorPlugin<ShellPluginConfig, unknown, unknown>;
|
|
45
|
+
/** @deprecated See {@link SHELL_PLUGIN_NAME}. */
|
|
46
|
+
export declare const EDITORS_PLUGIN_NAME = "@datalayer/loop-plugin-shell";
|
|
47
|
+
export default ShellPlugin;
|
|
@@ -0,0 +1,142 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { configurePlugin, contribution, definePlugin, } from '@datalayer/reactor';
|
|
3
|
+
import { ShellPlugin as ReactorShellPlugin, ViewSelector, } from '@datalayer/reactor-shell';
|
|
4
|
+
import { LoopCommand, LoopEditorView, LoopSlots, LoopViewType, canOpenView, requestSurface, } from '../../core';
|
|
5
|
+
import { NONE_EDITOR, chooseEditor, getEditorChoice, nextEditor, seedEditorChoice, } from './editorChoice';
|
|
6
|
+
import { useEditorPreviews } from './useEditorPreviews';
|
|
7
|
+
export const SHELL_PLUGIN_NAME = '@datalayer/loop-plugin-shell';
|
|
8
|
+
/** How a loop editor contribution reads as the generic selector's view. */
|
|
9
|
+
function describeEditor(value, context) {
|
|
10
|
+
const surface = value;
|
|
11
|
+
const workspace = context
|
|
12
|
+
?.workspace;
|
|
13
|
+
const openable = workspace ? canOpenView(surface, workspace) : true;
|
|
14
|
+
return {
|
|
15
|
+
id: surface.surfaceId,
|
|
16
|
+
title: surface.title,
|
|
17
|
+
icon: surface.icon,
|
|
18
|
+
order: surface.order,
|
|
19
|
+
disabled: !openable,
|
|
20
|
+
disabledReason: openable
|
|
21
|
+
? undefined
|
|
22
|
+
: (workspace && surface.unavailableReason?.(workspace)) ||
|
|
23
|
+
'Not available right now',
|
|
24
|
+
};
|
|
25
|
+
}
|
|
26
|
+
/** The generic selector, dressed for the loop's header. */
|
|
27
|
+
function EditorSelectorComponent(slotProps) {
|
|
28
|
+
const workspace = slotProps
|
|
29
|
+
.workspace;
|
|
30
|
+
/*
|
|
31
|
+
* Live figures for the labels — "Notebook (4)" — and the hover cards
|
|
32
|
+
* behind them. The editors are connected whether or not they are shown;
|
|
33
|
+
* the selector is where that stops being invisible.
|
|
34
|
+
*/
|
|
35
|
+
const previews = useEditorPreviews(workspace?.surfaceId ?? '');
|
|
36
|
+
const describe = (value, context) => {
|
|
37
|
+
const base = describeEditor(value, context);
|
|
38
|
+
const preview = previews[base.id];
|
|
39
|
+
return preview
|
|
40
|
+
? { ...base, badge: preview.badge, details: preview.details }
|
|
41
|
+
: base;
|
|
42
|
+
};
|
|
43
|
+
return (_jsx(ViewSelector, { point: LoopEditorView, describe: describe, context: slotProps,
|
|
44
|
+
// "Chat", not "None": with no editor beside it the conversation IS the
|
|
45
|
+
// view, and a control that names the common case after what it lacks
|
|
46
|
+
// reads as an error state.
|
|
47
|
+
noneLabel: "Chat", ariaLabel: "Editor" }));
|
|
48
|
+
}
|
|
49
|
+
export const ShellPlugin = definePlugin({
|
|
50
|
+
name: SHELL_PLUGIN_NAME,
|
|
51
|
+
// Named apart from the reactor's own `Shell` plugin, which sits beside it
|
|
52
|
+
// in the plugins panel: this is the Loop workspace's.
|
|
53
|
+
displayName: 'Loop shell',
|
|
54
|
+
description: 'The Loop workspace’s extension points, and the editor choice.',
|
|
55
|
+
octicon: 'columns',
|
|
56
|
+
emoji: '\u{1F4D1}',
|
|
57
|
+
config: {
|
|
58
|
+
defaultEditor: NONE_EDITOR,
|
|
59
|
+
showSelector: true,
|
|
60
|
+
},
|
|
61
|
+
/*
|
|
62
|
+
* The generic shell, configured for the loop. The selector is rendered by
|
|
63
|
+
* *this* plugin (below) rather than the generic one, because which slot it
|
|
64
|
+
* sits in and whether it shows are loop configuration; the generic
|
|
65
|
+
* keybinding is stood down so the loop's `/editor` keeps `Mod+Alt+E`
|
|
66
|
+
* without two commands fighting over one chord.
|
|
67
|
+
*/
|
|
68
|
+
dependencies: [
|
|
69
|
+
configurePlugin(ReactorShellPlugin, {
|
|
70
|
+
point: LoopEditorView,
|
|
71
|
+
describe: describeEditor,
|
|
72
|
+
showSelector: false,
|
|
73
|
+
announce: (viewId) => requestSurface(viewId),
|
|
74
|
+
commandId: 'loop.shell.cycleEditor',
|
|
75
|
+
// Named for what it cycles here: the palette said "Switch the view" and
|
|
76
|
+
// a person looking for the notebook did not recognise it.
|
|
77
|
+
commandName: 'Switch the editor',
|
|
78
|
+
commandDescription: 'Cycle through the editors beside the conversation, and none',
|
|
79
|
+
keybinding: '',
|
|
80
|
+
}),
|
|
81
|
+
],
|
|
82
|
+
// Declared, not merely used: the registry knows who contributed to a
|
|
83
|
+
// point, it cannot know who opened it — and these two are what makes this
|
|
84
|
+
// the plugin the others extend.
|
|
85
|
+
contributionPoints: [LoopViewType, LoopEditorView],
|
|
86
|
+
contributes: [
|
|
87
|
+
contribution(LoopCommand, {
|
|
88
|
+
name: 'editor',
|
|
89
|
+
aliases: ['editors'],
|
|
90
|
+
description: 'Switch the editor beside the conversation',
|
|
91
|
+
group: 'Open',
|
|
92
|
+
keybinding: 'Mod+Alt+E',
|
|
93
|
+
args: [
|
|
94
|
+
{
|
|
95
|
+
name: 'editor',
|
|
96
|
+
description: 'Which editor: none, or a surface id. Omit to cycle.',
|
|
97
|
+
required: false,
|
|
98
|
+
choices: () => [NONE_EDITOR, ...getEditorChoice().options],
|
|
99
|
+
},
|
|
100
|
+
],
|
|
101
|
+
run: async ({ argv }) => {
|
|
102
|
+
const asked = argv.trim();
|
|
103
|
+
const wanted = asked === '' ? nextEditor() : asked;
|
|
104
|
+
const known = [NONE_EDITOR, ...getEditorChoice().options];
|
|
105
|
+
if (!known.includes(wanted)) {
|
|
106
|
+
throw new Error(`No editor called '${wanted}'. There is: ${known.join(', ')}.`);
|
|
107
|
+
}
|
|
108
|
+
if (!chooseEditor(wanted)) {
|
|
109
|
+
throw new Error('No chat is on screen to host the editor.');
|
|
110
|
+
}
|
|
111
|
+
},
|
|
112
|
+
}, { id: 'editor' }),
|
|
113
|
+
],
|
|
114
|
+
build: ({ config }) => {
|
|
115
|
+
// The selector starts where the chat starts. Seeded, not requested: the
|
|
116
|
+
// chat's own `defaultSurface` is what actually opens the editor, and at
|
|
117
|
+
// build time there is no chat listening yet. The chat writes "no editor"
|
|
118
|
+
// as `''` or `'none'`; the selector's word for it is `'none'`.
|
|
119
|
+
seedEditorChoice(config.defaultEditor || NONE_EDITOR);
|
|
120
|
+
return {
|
|
121
|
+
components: config.showSelector
|
|
122
|
+
? [
|
|
123
|
+
{
|
|
124
|
+
id: 'editor-selector',
|
|
125
|
+
slot: LoopSlots.header,
|
|
126
|
+
// The component holds itself to the trailing edge of the header
|
|
127
|
+
// row with `marginLeft: 'auto'`, wherever the slot renders it.
|
|
128
|
+
Component: EditorSelectorComponent,
|
|
129
|
+
},
|
|
130
|
+
]
|
|
131
|
+
: [],
|
|
132
|
+
};
|
|
133
|
+
},
|
|
134
|
+
});
|
|
135
|
+
export { NONE_EDITOR, chooseEditor, getEditorChoice, nextEditor, seedEditorChoice, setEditorOptions, subscribeEditorChoice, } from './editorChoice';
|
|
136
|
+
/** The loop's selector, for a host that renders it somewhere of its own. */
|
|
137
|
+
export { EditorSelectorComponent as EditorSelector };
|
|
138
|
+
/** @deprecated The editors plugin grew into the shell plugin; same object. */
|
|
139
|
+
export const EditorsPlugin = ShellPlugin;
|
|
140
|
+
/** @deprecated See {@link SHELL_PLUGIN_NAME}. */
|
|
141
|
+
export const EDITORS_PLUGIN_NAME = SHELL_PLUGIN_NAME;
|
|
142
|
+
export default ShellPlugin;
|