@datalayer/agent-runtimes 1.0.29 → 1.3.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/AgentDocument.js +5 -22
- package/lib/AgentNode.d.ts +1 -1
- package/lib/AgentNode.js +193 -23
- package/lib/AgentNotebook.js +1 -1
- package/lib/App.d.ts +1 -1
- package/lib/AppExamples2.d.ts +1 -1
- package/lib/agent-node/AgentNodeGallery.d.ts +14 -1
- package/lib/agent-node/AgentNodeGallery.js +19 -15
- package/lib/agent-node/themeStore.js +7 -6
- package/lib/agents/AgentDetails.d.ts +8 -2
- package/lib/agents/AgentDetails.js +41 -11
- package/lib/agents/AgentRuntimeChat.d.ts +3 -3
- package/lib/agents/AgentRuntimeChat.js +15 -15
- package/lib/api/agents.d.ts +10 -10
- package/lib/api/agents.js +15 -15
- package/lib/api/checkpoints.d.ts +40 -0
- package/lib/api/checkpoints.js +75 -0
- package/lib/api/index.d.ts +1 -0
- package/lib/api/index.js +2 -1
- package/lib/api/notifications.d.ts +21 -6
- package/lib/api/notifications.js +32 -14
- package/lib/api/runtimes/environments.d.ts +385 -4
- package/lib/api/runtimes/environments.js +610 -9
- package/lib/api/runtimes/runtimes.d.ts +19 -19
- package/lib/api/runtimes/runtimes.js +47 -46
- package/lib/api/spacer/notebooks.js +1 -1
- package/lib/chat/Chat.d.ts +16 -4
- package/lib/chat/Chat.js +18 -5
- package/lib/chat/ChatFloating.d.ts +13 -2
- package/lib/chat/ChatFloating.js +192 -117
- package/lib/chat/ChatInline.d.ts +15 -0
- package/lib/chat/ChatInline.js +0 -18
- package/lib/chat/ChatPopupStandalone.d.ts +1 -1
- package/lib/chat/ChatSidebar.d.ts +14 -2
- package/lib/chat/ChatSidebar.js +1 -1
- package/lib/chat/ChatStandalone.d.ts +1 -1
- package/lib/chat/EphemeralSurfaceControl.d.ts +30 -0
- package/lib/chat/EphemeralSurfaceControl.js +55 -0
- package/lib/chat/base/ChatAvailability.d.ts +34 -0
- package/lib/chat/base/ChatAvailability.js +18 -0
- package/lib/chat/base/ChatBase.d.ts +2 -1
- package/lib/chat/base/ChatBase.js +657 -28
- package/lib/chat/display/EmptyState.d.ts +15 -1
- package/lib/chat/display/EmptyState.js +78 -12
- package/lib/chat/display/FloatingBrandButton.d.ts +1 -1
- package/lib/chat/display/PoweredByTag.d.ts +1 -1
- package/lib/chat/display/groupSuggestions.d.ts +21 -0
- package/lib/chat/display/groupSuggestions.js +18 -0
- package/lib/chat/document/EphemeralDocument.d.ts +70 -6
- package/lib/chat/document/EphemeralDocument.js +154 -52
- package/lib/chat/header/ChatHeader.d.ts +1 -1
- package/lib/chat/header/ChatHeaderBase.d.ts +10 -1
- package/lib/chat/header/ChatHeaderBase.js +67 -96
- package/lib/chat/index.d.ts +4 -1
- package/lib/chat/index.js +8 -1
- package/lib/chat/indicators/McpStatusIndicator.d.ts +1 -1
- package/lib/chat/indicators/SandboxStatusIndicator.d.ts +1 -1
- package/lib/chat/indicators/SandboxStatusIndicator.js +1 -1
- package/lib/chat/indicators/SkillsStatusIndicator.d.ts +1 -1
- package/lib/chat/messages/ChatMessageList.d.ts +22 -1
- package/lib/chat/messages/ChatMessageList.js +370 -166
- package/lib/chat/messages/ChatMessages.d.ts +1 -1
- package/lib/chat/messages/NotebookToolSurfaces.d.ts +68 -0
- package/lib/chat/messages/NotebookToolSurfaces.js +302 -0
- package/lib/chat/messages/TurnFooter.d.ts +42 -0
- package/lib/chat/messages/TurnFooter.js +75 -0
- package/lib/chat/messages/assistantMarkdown.d.ts +22 -0
- package/lib/chat/messages/assistantMarkdown.js +56 -0
- package/lib/chat/notebook/EphemeralNotebook.d.ts +67 -6
- package/lib/chat/notebook/EphemeralNotebook.js +194 -61
- package/lib/chat/parts/DynamicToolPart.d.ts +1 -1
- package/lib/chat/parts/MessagePart.d.ts +1 -1
- package/lib/chat/parts/ReasoningPart.d.ts +8 -1
- package/lib/chat/parts/TextPart.d.ts +1 -1
- package/lib/chat/parts/ToolPart.d.ts +8 -1
- package/lib/chat/prompt/FloatingCard.d.ts +26 -0
- package/lib/chat/prompt/FloatingCard.js +80 -0
- package/lib/chat/prompt/InputPrompt.d.ts +206 -53
- package/lib/chat/prompt/InputPrompt.js +161 -80
- package/lib/chat/prompt/InputPromptBase.d.ts +112 -0
- package/lib/chat/prompt/InputPromptBase.js +225 -0
- package/lib/chat/prompt/InputPromptLexical.d.ts +18 -1
- package/lib/chat/prompt/InputPromptLexical.js +227 -30
- package/lib/chat/prompt/InputPromptText.d.ts +10 -2
- package/lib/chat/prompt/InputPromptText.js +35 -3
- package/lib/chat/prompt/footer/BelowPromptFooter.d.ts +25 -0
- package/lib/chat/prompt/footer/BelowPromptFooter.js +12 -0
- package/lib/chat/prompt/footer/InPromptFooter.d.ts +35 -0
- package/lib/chat/prompt/footer/InPromptFooter.js +16 -0
- package/lib/chat/prompt/footer/index.d.ts +7 -0
- package/lib/chat/prompt/footer/index.js +11 -0
- package/lib/chat/prompt/header/BelowPromptHeader.d.ts +23 -0
- package/lib/chat/prompt/header/BelowPromptHeader.js +12 -0
- package/lib/chat/prompt/header/InPromptHeader.d.ts +31 -0
- package/lib/chat/prompt/header/InPromptHeader.js +14 -0
- package/lib/chat/prompt/header/index.d.ts +7 -0
- package/lib/chat/prompt/header/index.js +11 -0
- package/lib/chat/prompt/index.d.ts +8 -4
- package/lib/chat/prompt/index.js +15 -3
- package/lib/chat/prompt/menus/AgentsMenu.d.ts +14 -0
- package/lib/chat/prompt/menus/AgentsMenu.js +42 -0
- package/lib/chat/prompt/menus/InlineAgentsMenu.d.ts +22 -0
- package/lib/chat/prompt/menus/InlineAgentsMenu.js +24 -0
- package/lib/chat/prompt/menus/ModelSelector.d.ts +7 -0
- package/lib/chat/prompt/menus/ModelSelector.js +27 -0
- package/lib/chat/prompt/menus/SkillsMenu.d.ts +10 -0
- package/lib/chat/prompt/menus/SkillsMenu.js +75 -0
- package/lib/chat/prompt/menus/SuggestionsMenu.d.ts +13 -0
- package/lib/chat/prompt/menus/SuggestionsMenu.js +31 -0
- package/lib/chat/prompt/menus/ToolsMenu.d.ts +13 -0
- package/lib/chat/prompt/menus/ToolsMenu.js +103 -0
- package/lib/chat/prompt/menus/index.d.ts +15 -0
- package/lib/chat/prompt/menus/index.js +19 -0
- package/lib/chat/prompt/plugins/AgentMentionPlugin.d.ts +54 -0
- package/lib/chat/prompt/plugins/AgentMentionPlugin.js +370 -0
- package/lib/chat/prompt/plugins/CommandPlugin.d.ts +52 -0
- package/lib/chat/prompt/plugins/CommandPlugin.js +359 -0
- package/lib/chat/prompt/plugins/MentionChip.d.ts +15 -0
- package/lib/chat/prompt/plugins/MentionChip.js +24 -0
- package/lib/chat/prompt/plugins/MentionNode.d.ts +66 -0
- package/lib/chat/prompt/plugins/MentionNode.js +77 -0
- package/lib/chat/prompt/promptHistory.d.ts +52 -0
- package/lib/chat/prompt/promptHistory.js +123 -0
- package/lib/chat/prompt/stack.d.ts +81 -0
- package/lib/chat/prompt/stack.js +41 -0
- package/lib/chat/prompt/useTypingPlaceholder.d.ts +52 -0
- package/lib/chat/prompt/useTypingPlaceholder.js +180 -0
- package/lib/chat/tools/A2AAgentDialog.d.ts +60 -0
- package/lib/chat/tools/A2AAgentDialog.js +265 -0
- package/lib/chat/tools/ToolApprovalBanner.d.ts +1 -1
- package/lib/chat/tools/ToolApprovalDialog.d.ts +1 -1
- package/lib/chat/tools/ToolCallDisplay.d.ts +8 -1
- package/lib/chat/tools/index.d.ts +1 -0
- package/lib/chat/tools/index.js +1 -0
- package/lib/chat/usage/ContextPie.d.ts +17 -0
- package/lib/chat/usage/{TokenUsageBar.js → ContextPie.js} +20 -14
- package/lib/chat/useViewportDrag.d.ts +11 -0
- package/lib/chat/useViewportDrag.js +61 -0
- package/lib/chat/viewModes.d.ts +51 -0
- package/lib/chat/viewModes.js +57 -0
- package/lib/client/AgentRuntimesClient.d.ts +10 -9
- package/lib/client/AgentRuntimesClient.js +1 -1
- package/lib/client/AgentRuntimesClientContext.d.ts +1 -0
- package/lib/client/AgentsMixin.d.ts +12 -12
- package/lib/client/AgentsMixin.js +31 -31
- package/lib/client/IAgentRuntimesClient.d.ts +10 -10
- package/lib/client/SdkAgentRuntimesClient.d.ts +10 -10
- package/lib/client/SdkAgentRuntimesClient.js +10 -10
- package/lib/client/mixins/RuntimesMixin.d.ts +37 -10
- package/lib/client/mixins/RuntimesMixin.js +54 -21
- package/lib/components/a2ui/A2uiSurfaceComposed.d.ts +1 -1
- package/lib/components/agents/AgentSummary.d.ts +13 -0
- package/lib/components/agents/AgentSummary.js +21 -4
- package/lib/components/cards/NotificationEventCard.d.ts +1 -1
- package/lib/components/cards/OutputCard.d.ts +1 -1
- package/lib/components/cards/ToolApprovalCard.d.ts +2 -2
- package/lib/components/cards/ToolApprovalCard.js +1 -0
- package/lib/components/code-sandboxes/CodeSandboxCellVariables.d.ts +1 -0
- package/lib/components/code-sandboxes/CodeSandboxCellVariables.js +0 -4
- package/lib/components/code-sandboxes/CodeSandboxCellVariablesDialog.d.ts +1 -0
- package/lib/components/code-sandboxes/CodeSandboxCellVariablesDialog.js +0 -4
- package/lib/components/code-sandboxes/CodeSandboxEnvironmentSelect.d.ts +35 -0
- package/lib/components/code-sandboxes/CodeSandboxEnvironmentSelect.js +27 -29
- package/lib/components/code-sandboxes/CodeSandboxLauncher.d.ts +1 -0
- package/lib/components/code-sandboxes/CodeSandboxLauncher.js +42 -19
- 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 +86 -0
- package/lib/components/code-sandboxes/codeSandboxEnvironments.js +147 -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/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 +894 -0
- package/lib/loop/core/index.js +264 -0
- package/lib/loop/core/promptStore.d.ts +44 -0
- package/lib/loop/core/promptStore.js +63 -0
- package/lib/loop/core/surfaceRequests.d.ts +33 -0
- package/lib/loop/core/surfaceRequests.js +29 -0
- package/lib/loop/core/toolbar.d.ts +28 -0
- package/lib/loop/core/toolbar.js +59 -0
- package/lib/loop/embed/LoopEmbed.d.ts +57 -0
- package/lib/loop/embed/LoopEmbed.js +118 -0
- package/lib/loop/extensions.d.ts +10 -0
- package/lib/loop/extensions.js +49 -0
- package/lib/loop/index.d.ts +68 -0
- package/lib/loop/index.js +87 -0
- package/lib/loop/plugins/a2a-sidebar/A2ASidebar.d.ts +48 -0
- package/lib/loop/plugins/a2a-sidebar/A2ASidebar.js +190 -0
- package/lib/loop/plugins/a2a-sidebar/index.d.ts +5 -0
- package/lib/loop/plugins/a2a-sidebar/index.js +39 -0
- package/lib/loop/plugins/a2ui/A2uiView.d.ts +12 -0
- package/lib/loop/plugins/a2ui/A2uiView.js +97 -0
- package/lib/loop/plugins/a2ui/index.d.ts +3 -0
- package/lib/loop/plugins/a2ui/index.js +50 -0
- package/lib/loop/plugins/a2ui-scene/index.d.ts +36 -0
- package/lib/loop/plugins/a2ui-scene/index.js +28 -0
- package/lib/loop/plugins/agent-a2a/index.d.ts +3 -0
- package/lib/loop/plugins/agent-a2a/index.js +26 -0
- package/lib/loop/plugins/agent-a2ui/index.d.ts +3 -0
- package/lib/loop/plugins/agent-a2ui/index.js +42 -0
- package/lib/loop/plugins/agent-a2ui-jupyter-output/index.d.ts +3 -0
- package/lib/loop/plugins/agent-a2ui-jupyter-output/index.js +53 -0
- package/lib/loop/plugins/agent-capacity/index.d.ts +39 -0
- package/lib/loop/plugins/agent-capacity/index.js +52 -0
- package/lib/loop/plugins/agent-checkpoints/index.d.ts +3 -0
- package/lib/loop/plugins/agent-checkpoints/index.js +26 -0
- package/lib/loop/plugins/agent-code-sandbox/index.d.ts +3 -0
- package/lib/loop/plugins/agent-code-sandbox/index.js +24 -0
- package/lib/loop/plugins/agent-code-sandboxes/index.d.ts +13 -0
- package/lib/loop/plugins/agent-code-sandboxes/index.js +85 -0
- package/lib/loop/plugins/agent-codemode/index.d.ts +5 -0
- package/lib/loop/plugins/agent-codemode/index.js +41 -0
- package/lib/loop/plugins/agent-compaction/index.d.ts +10 -0
- package/lib/loop/plugins/agent-compaction/index.js +34 -0
- package/lib/loop/plugins/agent-evals/index.d.ts +3 -0
- package/lib/loop/plugins/agent-evals/index.js +25 -0
- package/lib/loop/plugins/agent-guardrails/index.d.ts +3 -0
- package/lib/loop/plugins/agent-guardrails/index.js +25 -0
- package/lib/loop/plugins/agent-hooks/index.d.ts +3 -0
- package/lib/loop/plugins/agent-hooks/index.js +28 -0
- package/lib/loop/plugins/agent-inference/index.d.ts +7 -0
- package/lib/loop/plugins/agent-inference/index.js +29 -0
- package/lib/loop/plugins/agent-mcp/index.d.ts +3 -0
- package/lib/loop/plugins/agent-mcp/index.js +25 -0
- package/lib/loop/plugins/agent-memory/index.d.ts +3 -0
- package/lib/loop/plugins/agent-memory/index.js +25 -0
- package/lib/loop/plugins/agent-monitoring/index.d.ts +3 -0
- package/lib/loop/plugins/agent-monitoring/index.js +25 -0
- package/lib/loop/plugins/agent-notifications/index.d.ts +3 -0
- package/lib/loop/plugins/agent-notifications/index.js +25 -0
- package/lib/loop/plugins/agent-otel/index.d.ts +3 -0
- package/lib/loop/plugins/agent-otel/index.js +25 -0
- package/lib/loop/plugins/agent-outputs/index.d.ts +3 -0
- package/lib/loop/plugins/agent-outputs/index.js +25 -0
- package/lib/loop/plugins/agent-parameters/index.d.ts +3 -0
- package/lib/loop/plugins/agent-parameters/index.js +25 -0
- package/lib/loop/plugins/agent-skills/index.d.ts +3 -0
- package/lib/loop/plugins/agent-skills/index.js +25 -0
- package/lib/loop/plugins/agent-subagents/index.d.ts +3 -0
- package/lib/loop/plugins/agent-subagents/index.js +25 -0
- package/lib/loop/plugins/agent-tool-approvals/index.d.ts +11 -0
- package/lib/loop/plugins/agent-tool-approvals/index.js +38 -0
- package/lib/loop/plugins/agent-triggers/index.d.ts +3 -0
- package/lib/loop/plugins/agent-triggers/index.js +26 -0
- package/lib/loop/plugins/agents/AgentSummaryPanel.d.ts +20 -0
- package/lib/loop/plugins/agents/AgentSummaryPanel.js +50 -0
- package/lib/loop/plugins/agents/AnonymousKeyBadge.d.ts +35 -0
- package/lib/loop/plugins/agents/AnonymousKeyBadge.js +53 -0
- package/lib/loop/plugins/agents/DatalayerAgentBridge.d.ts +24 -0
- package/lib/loop/plugins/agents/DatalayerAgentBridge.js +102 -0
- package/lib/loop/plugins/agents/DatalayerAgentMount.d.ts +18 -0
- package/lib/loop/plugins/agents/DatalayerAgentMount.js +12 -0
- package/lib/loop/plugins/agents/SandboxSelector.d.ts +18 -0
- package/lib/loop/plugins/agents/SandboxSelector.js +99 -0
- package/lib/loop/plugins/agents/SandboxStatusBridge.d.ts +19 -0
- package/lib/loop/plugins/agents/SandboxStatusBridge.js +23 -0
- package/lib/loop/plugins/agents/SandboxView.d.ts +11 -0
- package/lib/loop/plugins/agents/SandboxView.js +43 -0
- package/lib/loop/plugins/agents/TeamMemberPicker.d.ts +17 -0
- package/lib/loop/plugins/agents/TeamMemberPicker.js +60 -0
- package/lib/loop/plugins/agents/agentIcons.d.ts +23 -0
- package/lib/loop/plugins/agents/agentIcons.js +88 -0
- package/lib/loop/plugins/agents/browserService.d.ts +50 -0
- package/lib/loop/plugins/agents/browserService.js +233 -0
- package/lib/loop/plugins/agents/index.d.ts +13 -0
- package/lib/loop/plugins/agents/index.js +17 -0
- package/lib/loop/plugins/agents/plugin.d.ts +91 -0
- package/lib/loop/plugins/agents/plugin.js +201 -0
- package/lib/loop/plugins/agents/service.d.ts +99 -0
- package/lib/loop/plugins/agents/service.js +167 -0
- package/lib/loop/plugins/agents/specSubagents.d.ts +18 -0
- package/lib/loop/plugins/agents/specSubagents.js +33 -0
- package/lib/loop/plugins/agents/switchable.d.ts +107 -0
- package/lib/loop/plugins/agents/switchable.js +405 -0
- package/lib/loop/plugins/agents/team.d.ts +87 -0
- package/lib/loop/plugins/agents/team.js +143 -0
- package/lib/loop/plugins/agents/useSandboxService.d.ts +11 -0
- package/lib/loop/plugins/agents/useSandboxService.js +36 -0
- package/lib/loop/plugins/agents/useTeamSelection.d.ts +10 -0
- package/lib/loop/plugins/agents/useTeamSelection.js +27 -0
- package/lib/loop/plugins/agentspecs/AgentspecPicker.d.ts +15 -0
- package/lib/loop/plugins/agentspecs/AgentspecPicker.js +90 -0
- package/lib/loop/plugins/agentspecs/index.d.ts +6 -0
- package/lib/loop/plugins/agentspecs/index.js +63 -0
- package/lib/loop/plugins/chat/ChatView.d.ts +20 -0
- package/lib/loop/plugins/chat/ChatView.js +1670 -0
- package/lib/loop/plugins/chat/chatViewTools.d.ts +41 -0
- package/lib/loop/plugins/chat/chatViewTools.js +92 -0
- package/lib/loop/plugins/chat/index.d.ts +111 -0
- package/lib/loop/plugins/chat/index.js +143 -0
- package/lib/loop/plugins/chat/turnState.d.ts +41 -0
- package/lib/loop/plugins/chat/turnState.js +90 -0
- package/lib/loop/plugins/chat-extras/index.d.ts +14 -0
- package/lib/loop/plugins/chat-extras/index.js +51 -0
- package/lib/loop/plugins/chat-header/HeaderView.d.ts +13 -0
- package/lib/loop/plugins/chat-header/HeaderView.js +6 -0
- package/lib/loop/plugins/chat-header/index.d.ts +3 -0
- package/lib/loop/plugins/chat-header/index.js +21 -0
- package/lib/loop/plugins/chat-view/index.d.ts +10 -0
- package/lib/loop/plugins/chat-view/index.js +29 -0
- package/lib/loop/plugins/checkpoints-sidebar/CheckpointsSidebar.d.ts +27 -0
- package/lib/loop/plugins/checkpoints-sidebar/CheckpointsSidebar.js +174 -0
- package/lib/loop/plugins/checkpoints-sidebar/index.d.ts +5 -0
- package/lib/loop/plugins/checkpoints-sidebar/index.js +39 -0
- package/lib/loop/plugins/commands/index.d.ts +20 -0
- package/lib/loop/plugins/commands/index.js +148 -0
- package/lib/loop/plugins/decks/DeckSurface.d.ts +10 -0
- package/lib/loop/plugins/decks/DeckSurface.js +6 -0
- package/lib/loop/plugins/decks/DecksMenu.d.ts +11 -0
- package/lib/loop/plugins/decks/DecksMenu.js +42 -0
- package/lib/loop/plugins/decks/index.d.ts +19 -0
- package/lib/loop/plugins/decks/index.js +133 -0
- package/lib/loop/plugins/decks/surface.d.ts +7 -0
- package/lib/loop/plugins/decks/surface.js +11 -0
- package/lib/loop/plugins/document/DocumentView.d.ts +12 -0
- package/lib/loop/plugins/document/DocumentView.js +68 -0
- package/lib/loop/plugins/document/index.d.ts +3 -0
- package/lib/loop/plugins/document/index.js +86 -0
- package/lib/loop/plugins/document/openingDocument.d.ts +28 -0
- package/lib/loop/plugins/document/openingDocument.js +122 -0
- package/lib/loop/plugins/document-toolbar/SandboxStatusItem.d.ts +16 -0
- package/lib/loop/plugins/document-toolbar/SandboxStatusItem.js +31 -0
- package/lib/loop/plugins/document-toolbar/index.d.ts +4 -0
- package/lib/loop/plugins/document-toolbar/index.js +35 -0
- package/lib/loop/plugins/document-toolbar/names.d.ts +6 -0
- package/lib/loop/plugins/document-toolbar/names.js +10 -0
- package/lib/loop/plugins/document-toolbar/plugin.d.ts +2 -0
- package/lib/loop/plugins/document-toolbar/plugin.js +38 -0
- package/lib/loop/plugins/document-view/index.d.ts +10 -0
- package/lib/loop/plugins/document-view/index.js +28 -0
- package/lib/loop/plugins/graph/GraphToggle.d.ts +17 -0
- package/lib/loop/plugins/graph/GraphToggle.js +22 -0
- package/lib/loop/plugins/graph/GraphView.d.ts +16 -0
- package/lib/loop/plugins/graph/GraphView.js +6 -0
- package/lib/loop/plugins/graph/index.d.ts +5 -0
- package/lib/loop/plugins/graph/index.js +80 -0
- package/lib/loop/plugins/graph/viewType.d.ts +10 -0
- package/lib/loop/plugins/graph/viewType.js +14 -0
- package/lib/loop/plugins/input-prompt/ComposerView.d.ts +15 -0
- package/lib/loop/plugins/input-prompt/ComposerView.js +25 -0
- package/lib/loop/plugins/input-prompt/index.d.ts +25 -0
- package/lib/loop/plugins/input-prompt/index.js +26 -0
- package/lib/loop/plugins/models/index.d.ts +3 -0
- package/lib/loop/plugins/models/index.js +49 -0
- package/lib/loop/plugins/notebook/NotebookView.d.ts +9 -0
- package/lib/loop/plugins/notebook/NotebookView.js +189 -0
- package/lib/loop/plugins/notebook/index.d.ts +3 -0
- package/lib/loop/plugins/notebook/index.js +91 -0
- package/lib/loop/plugins/notebook/openingNotebook.d.ts +72 -0
- package/lib/loop/plugins/notebook/openingNotebook.js +90 -0
- package/lib/loop/plugins/notebook-toolbar/index.d.ts +4 -0
- package/lib/loop/plugins/notebook-toolbar/index.js +45 -0
- package/lib/loop/plugins/notebook-toolbar/items.d.ts +10 -0
- package/lib/loop/plugins/notebook-toolbar/items.js +45 -0
- package/lib/loop/plugins/notebook-toolbar/names.d.ts +9 -0
- package/lib/loop/plugins/notebook-toolbar/names.js +13 -0
- package/lib/loop/plugins/notebook-toolbar/plugin.d.ts +2 -0
- package/lib/loop/plugins/notebook-toolbar/plugin.js +24 -0
- package/lib/loop/plugins/notebook-view/index.d.ts +10 -0
- package/lib/loop/plugins/notebook-view/index.js +30 -0
- package/lib/loop/plugins/page-layout/TurnPanel.d.ts +25 -0
- package/lib/loop/plugins/page-layout/TurnPanel.js +126 -0
- package/lib/loop/plugins/page-layout/index.d.ts +35 -0
- package/lib/loop/plugins/page-layout/index.js +80 -0
- package/lib/loop/plugins/plugins-panel/index.d.ts +14 -0
- package/lib/loop/plugins/plugins-panel/index.js +74 -0
- package/lib/loop/plugins/prompt/NewChatAction.d.ts +19 -0
- package/lib/loop/plugins/prompt/NewChatAction.js +10 -0
- package/lib/loop/plugins/prompt/index.d.ts +11 -0
- package/lib/loop/plugins/prompt/index.js +73 -0
- package/lib/loop/plugins/shell/editorChoice.d.ts +31 -0
- package/lib/loop/plugins/shell/editorChoice.js +58 -0
- package/lib/loop/plugins/shell/index.d.ts +47 -0
- package/lib/loop/plugins/shell/index.js +142 -0
- package/lib/loop/plugins/shell/useEditorPreviews.d.ts +32 -0
- package/lib/loop/plugins/shell/useEditorPreviews.js +217 -0
- package/lib/loop/plugins/subagent-activity/SubagentPulse.d.ts +16 -0
- package/lib/loop/plugins/subagent-activity/SubagentPulse.js +45 -0
- package/lib/loop/plugins/subagent-activity/index.d.ts +12 -0
- package/lib/loop/plugins/subagent-activity/index.js +42 -0
- package/lib/loop/plugins/view-switch/index.d.ts +46 -0
- package/lib/loop/plugins/view-switch/index.js +68 -0
- package/lib/loop/plugins/window-frame/WindowFrame.d.ts +48 -0
- package/lib/loop/plugins/window-frame/WindowFrame.js +63 -0
- package/lib/loop/plugins/window-frame/index.d.ts +6 -0
- package/lib/loop/plugins/window-frame/index.js +79 -0
- package/lib/loop/plugins/window-frame/slots.d.ts +26 -0
- package/lib/loop/plugins/window-frame/slots.js +30 -0
- package/lib/loop/presets.d.ts +167 -0
- package/lib/loop/presets.js +139 -0
- package/lib/loop/shell/LoopWorkspace.d.ts +109 -0
- package/lib/loop/shell/LoopWorkspace.js +231 -0
- package/lib/loop/shell/PluginToggles.d.ts +21 -0
- package/lib/loop/shell/PluginToggles.js +41 -0
- package/lib/loop/shell/ViewSwitcher.d.ts +24 -0
- package/lib/loop/shell/ViewSwitcher.js +43 -0
- package/lib/loop/shell/WorkspaceFullScreenAction.d.ts +25 -0
- package/lib/loop/shell/WorkspaceFullScreenAction.js +24 -0
- package/lib/loop/shell/index.d.ts +10 -0
- package/lib/loop/shell/index.js +14 -0
- package/lib/loop/shell/useWorkspaceFullScreen.d.ts +93 -0
- package/lib/loop/shell/useWorkspaceFullScreen.js +167 -0
- package/lib/loop-example-main.d.ts +1 -0
- package/lib/loop-example-main.js +42 -0
- package/lib/loop-main.d.ts +1 -0
- package/lib/loop-main.js +138 -0
- package/lib/mcp/McpServerManager.d.ts +1 -1
- package/lib/models/CodeSandboxSnapshotDTO.d.ts +1 -1
- package/lib/models/CodeSandboxVariant.d.ts +13 -5
- package/lib/models/CodeSandboxVariant.js +17 -5
- package/lib/models/Content.d.ts +26 -0
- package/lib/models/Environment.d.ts +561 -5
- package/lib/models/Environment.js +12 -1
- package/lib/models/EnvironmentDTO.d.ts +24 -6
- package/lib/models/EnvironmentDTO.js +13 -2
- package/lib/models/Exercise.d.ts +0 -2
- package/lib/models/Library.d.ts +0 -2
- package/lib/models/Notebook.d.ts +0 -2
- package/lib/models/ProjectDTO.d.ts +2 -2
- package/lib/models/ProjectDTO.js +4 -4
- package/lib/models/Runtime.d.ts +11 -11
- package/lib/models/RuntimeDTO.d.ts +16 -7
- package/lib/models/RuntimeDTO.js +9 -9
- package/lib/models/Space.d.ts +10 -0
- package/lib/models/Space.js +1 -1
- package/lib/models/SpaceDTO.d.ts +1 -1
- package/lib/models/SpaceItem.d.ts +1 -2
- package/lib/models/environments.generated.d.ts +113 -0
- package/lib/models/environments.generated.js +13 -0
- package/lib/models/index.d.ts +0 -1
- package/lib/models/index.js +0 -1
- package/lib/protocols/A2AAdapter.d.ts +39 -6
- package/lib/protocols/A2AAdapter.js +180 -11
- package/lib/protocols/ACPAdapter.js +40 -37
- package/lib/protocols/AGUIAdapter.d.ts +14 -0
- package/lib/protocols/AGUIAdapter.js +34 -9
- package/lib/protocols/BrowserAgentAdapter.d.ts +117 -0
- package/lib/protocols/BrowserAgentAdapter.js +310 -0
- package/lib/protocols/VercelAIAdapter.d.ts +10 -0
- package/lib/protocols/VercelAIAdapter.js +27 -7
- package/lib/protocols/index.d.ts +1 -0
- package/lib/protocols/index.js +1 -0
- package/lib/runtimes/actions.d.ts +3 -3
- package/lib/runtimes/actions.js +27 -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 +128 -112
- package/lib/specs/agents/agents.js +8024 -5052
- package/lib/specs/evals.js +9 -0
- package/lib/specs/frontendTools.d.ts +3 -0
- package/lib/specs/frontendTools.js +46 -3
- package/lib/specs/mcpServers.d.ts +1 -0
- package/lib/specs/mcpServers.js +25 -2
- package/lib/specs/models.d.ts +18 -0
- package/lib/specs/models.js +154 -0
- package/lib/specs/outputs.d.ts +2 -0
- package/lib/specs/outputs.js +22 -0
- package/lib/specs/personas.js +1 -1
- package/lib/specs/teams/teams.d.ts +2 -0
- package/lib/specs/teams/teams.js +628 -111
- package/lib/state/index.d.ts +1 -1
- package/lib/state/index.js +1 -1
- package/lib/state/substates/RuntimesState.d.ts +5 -5
- package/lib/state/substates/RuntimesState.js +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/{models/Dataset.js → tools/adapters/commands/index.js} +1 -1
- package/lib/tools/adapters/copilotkit/lexicalHooks.js +7 -3
- package/lib/tools/index.d.ts +1 -0
- package/lib/tools/index.js +1 -0
- package/lib/types/a2a.d.ts +15 -1
- package/lib/types/agents-lifecycle.d.ts +11 -6
- package/lib/types/agents.d.ts +31 -6
- package/lib/types/agentspecs.d.ts +120 -4
- package/lib/types/chat.d.ts +251 -3
- package/lib/types/checkpoints.d.ts +20 -0
- package/lib/types/config.d.ts +13 -1
- package/lib/types/connection.d.ts +1 -1
- package/lib/types/evals.d.ts +2 -0
- package/lib/types/messages.d.ts +60 -0
- package/lib/types/models.d.ts +26 -0
- package/lib/types/notifications.d.ts +15 -6
- package/lib/types/protocol.d.ts +7 -2
- package/lib/types/stream.d.ts +48 -3
- package/lib/types/stream.js +5 -0
- package/lib/types/teams.d.ts +102 -4
- package/lib/types/tool-approvals.d.ts +1 -1
- package/lib/types/tools.d.ts +8 -2
- package/lib/utils/utils.js +7 -1
- package/package.json +376 -361
- package/scripts/codegen/__pycache__/compose.cpython-313.pyc +0 -0
- package/scripts/codegen/__pycache__/versioning.cpython-313.pyc +0 -0
- package/scripts/codegen/compose.py +208 -0
- package/scripts/codegen/generate_agents.py +202 -31
- package/scripts/codegen/generate_evals.py +2 -0
- package/scripts/codegen/generate_frontend_tools.py +35 -6
- package/scripts/codegen/generate_models.py +40 -15
- package/scripts/codegen/generate_sandbox_agents.py +76 -62
- package/scripts/codegen/generate_teams.py +178 -4
- package/scripts/codegen/generate_tools.py +6 -4
- package/scripts/gen_workers.py +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
|
@@ -0,0 +1,231 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { useCallback, useEffect, useMemo, useRef, useState } from 'react';
|
|
3
|
+
import { Box } from '@primer/react';
|
|
4
|
+
import { buildReactorFromPlugins, onView, } from '@datalayer/reactor';
|
|
5
|
+
import { ReactorSlot, ReactorViewHost, useContributions, useReactorEvent, useSlotComponents, useReactor, } from '@datalayer/reactor/react';
|
|
6
|
+
import { LoopCommand, LoopSlots, LoopViewType, canOpenView, createPromptChannel, parseCommand, loopSurfaceId, } from '../core';
|
|
7
|
+
import { SIDEBAR_WIDTH } from '../plugins/plugins-panel';
|
|
8
|
+
import { ViewSwitcher } from './ViewSwitcher';
|
|
9
|
+
/** Build the platform for a set of plugins. */
|
|
10
|
+
export function buildLoopReactor(extensions) {
|
|
11
|
+
return buildReactorFromPlugins(extensions);
|
|
12
|
+
}
|
|
13
|
+
export function LoopWorkspace(props) {
|
|
14
|
+
const { serverUrl, agentId, conversationId, model, sandbox = { state: 'idle' }, extensions = [], reactor: providedReactor, manageReactor = true, initialViewType, onSend, layout = 'page', showViewSelector = true, showHeader = true, chatHeaderActions, headerActions, } = props;
|
|
15
|
+
// Building the platform is a one-time act: rebuilding it on every render
|
|
16
|
+
// would restart every plugin.
|
|
17
|
+
const reactor = useMemo(() => providedReactor ?? buildLoopReactor(extensions),
|
|
18
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
19
|
+
[providedReactor]);
|
|
20
|
+
useReactor(reactor, { autoStart: manageReactor });
|
|
21
|
+
return (_jsx(WorkspaceBody, { serverUrl: serverUrl, agentId: agentId, conversationId: conversationId, model: model, initialSandbox: sandbox, initialViewType: initialViewType, onSend: onSend, layout: layout, showViewSelector: showViewSelector, showHeader: showHeader, chatHeaderActions: chatHeaderActions, headerActions: headerActions }));
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Split from `LoopWorkspace` so the hooks below run with the platform already
|
|
25
|
+
* registered — `useContributions` needs a reactor in the store, and `useReactor`
|
|
26
|
+
* registers it during the parent's render.
|
|
27
|
+
*/
|
|
28
|
+
function WorkspaceBody({ serverUrl, agentId: initialAgentId, conversationId, model, initialSandbox, initialViewType, onSend, layout = 'page', showViewSelector = true, showHeader = true, chatHeaderActions, headerActions, }) {
|
|
29
|
+
/*
|
|
30
|
+
* Which agent the session is talking to.
|
|
31
|
+
*
|
|
32
|
+
* State rather than the prop straight through, because it can change from
|
|
33
|
+
* inside: a picker in the header points the session at another agent, and
|
|
34
|
+
* everything downstream — the chat's endpoint, the sandbox connection, the
|
|
35
|
+
* notebook's id — reads it from the workspace.
|
|
36
|
+
*/
|
|
37
|
+
const [agentId, setAgentId] = useState(initialAgentId);
|
|
38
|
+
/* Minted once per mount, and deliberately not derived from `agentId`: the
|
|
39
|
+
* surfaces outlive whichever agent is currently attached to them. */
|
|
40
|
+
const surfaceIdRef = useRef(loopSurfaceId(conversationId ?? `session-${Date.now().toString(36)}`));
|
|
41
|
+
// A host that re-mounts the workspace on a different agent wins: its prop is
|
|
42
|
+
// the session it means to open, and a stale in-page choice must not survive.
|
|
43
|
+
useEffect(() => {
|
|
44
|
+
setAgentId(initialAgentId);
|
|
45
|
+
}, [initialAgentId]);
|
|
46
|
+
const [activeViewType, setActiveViewType] = useState(initialViewType ?? '');
|
|
47
|
+
// Seeded by the host (a handoff carries what the terminal knew), then kept
|
|
48
|
+
// current by whichever plugin owns the sandbox.
|
|
49
|
+
const [sandbox, setSandbox] = useState(initialSandbox);
|
|
50
|
+
// One channel per workspace, created once: recreating it would drop whatever
|
|
51
|
+
// the mounted view had subscribed with.
|
|
52
|
+
const [prompts] = useState(createPromptChannel);
|
|
53
|
+
const [viewControls, setViewControlsState] = useState({});
|
|
54
|
+
const setViewControls = useCallback((controls) => {
|
|
55
|
+
setViewControlsState(controls ?? {});
|
|
56
|
+
}, []);
|
|
57
|
+
const views = useContributions(LoopViewType);
|
|
58
|
+
const commands = useContributions(LoopCommand);
|
|
59
|
+
// Read to decide whether the column exists at all, not to render it: the
|
|
60
|
+
// slot does that.
|
|
61
|
+
const sidebar = useSlotComponents(LoopSlots.sidebar);
|
|
62
|
+
const commandsRef = useRef(commands);
|
|
63
|
+
const currentWorkspace = useRef(null);
|
|
64
|
+
const compact = layout === 'panel';
|
|
65
|
+
// Dispatch stays with the shell because only the shell sees every command
|
|
66
|
+
// every plugin contributed. Whoever renders a prompt calls this.
|
|
67
|
+
const submit = useCallback(async (message) => {
|
|
68
|
+
const command = parseCommand(message);
|
|
69
|
+
if (!command) {
|
|
70
|
+
onSend?.(message, currentWorkspace.current);
|
|
71
|
+
const heard = prompts.submit(message);
|
|
72
|
+
return heard || onSend
|
|
73
|
+
? { handled: true }
|
|
74
|
+
: {
|
|
75
|
+
handled: false,
|
|
76
|
+
reason: 'Nothing is listening for prompts in this view yet.',
|
|
77
|
+
};
|
|
78
|
+
}
|
|
79
|
+
const match = commandsRef.current.find(entry => entry.value.name === command.name ||
|
|
80
|
+
(entry.value.aliases ?? []).includes(command.name));
|
|
81
|
+
if (!match) {
|
|
82
|
+
return {
|
|
83
|
+
handled: false,
|
|
84
|
+
command: command.name,
|
|
85
|
+
reason: `Unknown command: /${command.name}. Type /help to see what there is.`,
|
|
86
|
+
};
|
|
87
|
+
}
|
|
88
|
+
const result = await match.value.run({
|
|
89
|
+
workspace: currentWorkspace.current,
|
|
90
|
+
argv: command.argv,
|
|
91
|
+
});
|
|
92
|
+
if (result?.prompt) {
|
|
93
|
+
onSend?.(result.prompt, currentWorkspace.current);
|
|
94
|
+
}
|
|
95
|
+
return {
|
|
96
|
+
handled: true,
|
|
97
|
+
command: command.name,
|
|
98
|
+
result: result ?? undefined,
|
|
99
|
+
};
|
|
100
|
+
}, [onSend, prompts]);
|
|
101
|
+
const workspace = useMemo(() => ({
|
|
102
|
+
serverUrl,
|
|
103
|
+
agentId,
|
|
104
|
+
surfaceId: surfaceIdRef.current,
|
|
105
|
+
setAgentId,
|
|
106
|
+
conversationId,
|
|
107
|
+
model,
|
|
108
|
+
sandbox,
|
|
109
|
+
setSandbox,
|
|
110
|
+
activeViewType,
|
|
111
|
+
setActiveViewType,
|
|
112
|
+
prompts,
|
|
113
|
+
submit,
|
|
114
|
+
viewControls,
|
|
115
|
+
setViewControls,
|
|
116
|
+
chatHeaderActions,
|
|
117
|
+
}), [
|
|
118
|
+
serverUrl,
|
|
119
|
+
agentId,
|
|
120
|
+
conversationId,
|
|
121
|
+
model,
|
|
122
|
+
sandbox,
|
|
123
|
+
activeViewType,
|
|
124
|
+
prompts,
|
|
125
|
+
submit,
|
|
126
|
+
viewControls,
|
|
127
|
+
setViewControls,
|
|
128
|
+
chatHeaderActions,
|
|
129
|
+
]);
|
|
130
|
+
// `submit` must not be rebuilt whenever the workspace object changes — the
|
|
131
|
+
// chat holds on to it — so it reads the current values through refs.
|
|
132
|
+
currentWorkspace.current = workspace;
|
|
133
|
+
commandsRef.current = commands;
|
|
134
|
+
// With nothing chosen, open the first view that can be opened. Falling back
|
|
135
|
+
// to "nothing" would leave a shell that looks broken on first paint.
|
|
136
|
+
const effectiveViewType = useMemo(() => {
|
|
137
|
+
if (activeViewType) {
|
|
138
|
+
return activeViewType;
|
|
139
|
+
}
|
|
140
|
+
const openable = views.find(entry => canOpenView(entry.value, workspace));
|
|
141
|
+
return openable?.value.viewType ?? '';
|
|
142
|
+
}, [activeViewType, views, workspace]);
|
|
143
|
+
// Tell the reactor which view is open, so plugins that only matter inside
|
|
144
|
+
// one can wait for it and stand down when it closes. One line, and it is
|
|
145
|
+
// both halves: `fire` deactivates whatever declared this event before it
|
|
146
|
+
// activates whatever was waiting for it. A plugin that declares neither is
|
|
147
|
+
// untouched, so this costs nothing until somebody uses it.
|
|
148
|
+
useReactorEvent(effectiveViewType ? onView(effectiveViewType) : undefined);
|
|
149
|
+
return (_jsxs(Box
|
|
150
|
+
/*
|
|
151
|
+
Marked so a plugin inside can find the workspace it is part of.
|
|
152
|
+
|
|
153
|
+
The chat's full-screen button promotes *this* element rather than its
|
|
154
|
+
own view, which is what keeps the header's controls — the agent picker,
|
|
155
|
+
where the code runs — reachable at full screen instead of leaving them
|
|
156
|
+
behind on the page underneath. A data attribute rather than a ref
|
|
157
|
+
through the context: the plugin needs a DOM node and nothing else, and
|
|
158
|
+
the shell should not have to publish one to be found.
|
|
159
|
+
*/
|
|
160
|
+
, { "data-loop-workspace": "", sx: {
|
|
161
|
+
display: 'flex',
|
|
162
|
+
flexDirection: 'column',
|
|
163
|
+
height: '100%',
|
|
164
|
+
minHeight: 0,
|
|
165
|
+
// The containing block for anything in the root slot that positions
|
|
166
|
+
// itself absolutely — the floating prompt does. Without this it would
|
|
167
|
+
// resolve against whatever ancestor happens to be positioned, and
|
|
168
|
+
// float over the host's page instead of over the workspace.
|
|
169
|
+
position: 'relative',
|
|
170
|
+
bg: 'canvas.default',
|
|
171
|
+
color: 'fg.default',
|
|
172
|
+
}, children: [showHeader ? (_jsxs(Box, { as: "header", sx: {
|
|
173
|
+
display: 'flex',
|
|
174
|
+
alignItems: 'center',
|
|
175
|
+
// In a column there is no room for a row: the header wraps rather
|
|
176
|
+
// than pushing the model chip off the edge.
|
|
177
|
+
justifyContent: compact ? 'flex-start' : 'space-between',
|
|
178
|
+
/*
|
|
179
|
+
Allowed to wrap at any width.
|
|
180
|
+
|
|
181
|
+
`nowrap` meant the row absorbed whatever a plugin put in it by
|
|
182
|
+
squeezing everything else — a sandbox failure message, a long
|
|
183
|
+
agent name — instead of taking a second line. The controls stayed
|
|
184
|
+
on one row and got narrower, which is the wrong trade: a header
|
|
185
|
+
two lines tall is legible, a compressed one is not.
|
|
186
|
+
*/
|
|
187
|
+
flexWrap: 'wrap',
|
|
188
|
+
gap: 2,
|
|
189
|
+
px: compact ? 2 : 3,
|
|
190
|
+
py: 2,
|
|
191
|
+
borderBottom: '1px solid',
|
|
192
|
+
borderColor: 'border.default',
|
|
193
|
+
flex: '0 0 auto',
|
|
194
|
+
}, children: [headerActions, _jsx(ReactorSlot, { slot: LoopSlots.header, props: { workspace } }), showViewSelector ? (_jsx(ViewSwitcher, { views: views, workspace: workspace, compact: compact })) : null] })) : null, _jsxs(Box, { sx: { flex: '1 1 auto', minHeight: 0, display: 'flex' }, children: [_jsx(Box, { sx: {
|
|
195
|
+
flex: '1 1 auto',
|
|
196
|
+
minWidth: 0,
|
|
197
|
+
minHeight: 0,
|
|
198
|
+
position: 'relative',
|
|
199
|
+
}, children: _jsx(ReactorViewHost, { point: LoopViewType, active: effectiveViewType, props: { viewType: effectiveViewType, workspace }, fallback: _jsx(Centered, { children: "Loading\u2026" }), empty: _jsx(Centered, { children: "No view is available yet." }), errorFallback: error => (_jsxs(Centered, { children: ["This view failed to load: ", error.message] })) }) }), sidebar.length > 0 ? (_jsx(Box, { as: "aside", sx: {
|
|
200
|
+
flex: '0 0 auto',
|
|
201
|
+
// Wide enough for a plugin's name, its description and a switch
|
|
202
|
+
// on one line. The panel truncates to the same number, and takes
|
|
203
|
+
// it from `SIDEBAR_WIDTH` so the two cannot drift.
|
|
204
|
+
width: compact ? '100%' : `${SIDEBAR_WIDTH}px`,
|
|
205
|
+
minWidth: 0,
|
|
206
|
+
// On the trailing edge: the work is what a person reads first,
|
|
207
|
+
// and the switches belong beside it rather than in front of it.
|
|
208
|
+
borderLeft: compact ? 'none' : '1px solid',
|
|
209
|
+
borderTop: compact ? '1px solid' : 'none',
|
|
210
|
+
borderColor: 'border.default',
|
|
211
|
+
bg: 'canvas.subtle',
|
|
212
|
+
overflowY: 'auto',
|
|
213
|
+
// The shell's chrome, not the plugins': a contributed panel
|
|
214
|
+
// should not have to guess how far its host keeps things from
|
|
215
|
+
// the edge, and two of them would guess differently.
|
|
216
|
+
px: 3,
|
|
217
|
+
py: 3,
|
|
218
|
+
}, children: _jsx(ReactorSlot, { slot: LoopSlots.sidebar, props: { workspace } }) })) : null] }), _jsxs(Box, { sx: { flex: '0 0 auto' }, children: [_jsx(ReactorSlot, { slot: LoopSlots.footer, props: { workspace } }), _jsx(ReactorSlot, { slot: LoopSlots.status, props: { workspace } })] }), _jsx(ReactorSlot, { slot: LoopSlots.root, props: { workspace } })] }));
|
|
219
|
+
}
|
|
220
|
+
function Centered({ children }) {
|
|
221
|
+
return (_jsx(Box, { sx: {
|
|
222
|
+
height: '100%',
|
|
223
|
+
display: 'flex',
|
|
224
|
+
alignItems: 'center',
|
|
225
|
+
justifyContent: 'center',
|
|
226
|
+
color: 'fg.muted',
|
|
227
|
+
fontSize: 1,
|
|
228
|
+
px: 3,
|
|
229
|
+
textAlign: 'center',
|
|
230
|
+
}, children: children }));
|
|
231
|
+
}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A checkbox per plugin.
|
|
3
|
+
*
|
|
4
|
+
* An extension model is a claim until someone can turn a plugin off and watch
|
|
5
|
+
* the workspace carry on. This is the smallest surface that makes the claim
|
|
6
|
+
* checkable: the list comes from the reactor rather than from a hard-coded
|
|
7
|
+
* array, so it cannot lie about how many plugins there are.
|
|
8
|
+
*
|
|
9
|
+
* Not part of the workspace itself — the workspace has one navigation element
|
|
10
|
+
* and no settings tree (§3.5). This belongs to the examples that demonstrate it.
|
|
11
|
+
*
|
|
12
|
+
* @module loop/shell/PluginToggles
|
|
13
|
+
*/
|
|
14
|
+
import type { JSX } from 'react';
|
|
15
|
+
export type PluginTogglesProps = {
|
|
16
|
+
/** Extensions the example does not let you switch off (the shell's own). */
|
|
17
|
+
locked?: readonly string[];
|
|
18
|
+
title?: string;
|
|
19
|
+
};
|
|
20
|
+
export declare function PluginToggles({ locked, title, }: PluginTogglesProps): JSX.Element;
|
|
21
|
+
export default PluginToggles;
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { useCallback, useSyncExternalStore } from 'react';
|
|
3
|
+
import { Box, Text } from '@primer/react';
|
|
4
|
+
import { useReactorPlatform } from '@datalayer/reactor/react';
|
|
5
|
+
/** Trim the package scope so the list reads as names rather than paths. */
|
|
6
|
+
function shortName(name) {
|
|
7
|
+
return name
|
|
8
|
+
.replace(/^@datalayer\/loop-plugin-/, '')
|
|
9
|
+
.replace(/^@datalayer\//, '');
|
|
10
|
+
}
|
|
11
|
+
export function PluginToggles({ locked = [], title = 'Plugins', }) {
|
|
12
|
+
const reactor = useReactorPlatform();
|
|
13
|
+
// The revision changes on every enable/disable, so the list follows the
|
|
14
|
+
// reactor rather than a copy of it.
|
|
15
|
+
useSyncExternalStore(reactor.subscribe, () => reactor.getRevision());
|
|
16
|
+
const toggle = useCallback((name, next) => {
|
|
17
|
+
if (next) {
|
|
18
|
+
reactor.enable(name);
|
|
19
|
+
}
|
|
20
|
+
else {
|
|
21
|
+
reactor.disable(name);
|
|
22
|
+
}
|
|
23
|
+
}, [reactor]);
|
|
24
|
+
return (_jsxs(Box, { sx: {
|
|
25
|
+
p: 3,
|
|
26
|
+
borderBottom: '1px solid',
|
|
27
|
+
borderColor: 'border.default',
|
|
28
|
+
bg: 'canvas.subtle',
|
|
29
|
+
}, children: [_jsx(Text, { sx: { fontSize: 0, fontWeight: 'bold', color: 'fg.muted' }, children: title }), _jsx(Box, { sx: { display: 'flex', flexWrap: 'wrap', gap: 3, mt: 2 }, children: reactor.listPlugins().map(name => {
|
|
30
|
+
const isLocked = locked.includes(name);
|
|
31
|
+
return (_jsxs(Box, { as: "label", sx: {
|
|
32
|
+
display: 'inline-flex',
|
|
33
|
+
alignItems: 'center',
|
|
34
|
+
gap: 1,
|
|
35
|
+
fontSize: 1,
|
|
36
|
+
cursor: isLocked ? 'not-allowed' : 'pointer',
|
|
37
|
+
opacity: isLocked ? 0.6 : 1,
|
|
38
|
+
}, children: [_jsx("input", { type: "checkbox", checked: reactor.isEnabled(name), disabled: isLocked, onChange: event => toggle(name, event.target.checked) }), shortName(name)] }, name));
|
|
39
|
+
}) })] }));
|
|
40
|
+
}
|
|
41
|
+
export default PluginToggles;
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The workspace's one piece of navigation.
|
|
3
|
+
*
|
|
4
|
+
* It is built from contributions rather than a hard-coded list of modes, which
|
|
5
|
+
* is the whole difference from `EphemeralSurfaceControl`: a fifth view costs a
|
|
6
|
+
* plugin, not an edit to a union type.
|
|
7
|
+
*
|
|
8
|
+
* @module loop/shell/ViewSwitcher
|
|
9
|
+
*/
|
|
10
|
+
import type { JSX } from 'react';
|
|
11
|
+
import type { Contribution } from '@datalayer/reactor';
|
|
12
|
+
import { type LoopWorkspaceContext, type ViewTypeContribution } from '../core';
|
|
13
|
+
export type ViewSwitcherProps = {
|
|
14
|
+
views: Contribution<ViewTypeContribution>[];
|
|
15
|
+
workspace: LoopWorkspaceContext;
|
|
16
|
+
/**
|
|
17
|
+
* Drop the labels and keep the icons.
|
|
18
|
+
*
|
|
19
|
+
* For a side panel, where four labelled tabs would use the width the views
|
|
20
|
+
* need. The tooltip still carries the title, so nothing is lost but space.
|
|
21
|
+
*/
|
|
22
|
+
compact?: boolean;
|
|
23
|
+
};
|
|
24
|
+
export declare function ViewSwitcher({ views, workspace, compact, }: ViewSwitcherProps): JSX.Element | null;
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { Box, Tooltip } from '@primer/react';
|
|
3
|
+
import { canOpenView, } from '../core';
|
|
4
|
+
export function ViewSwitcher({ views, workspace, compact = false, }) {
|
|
5
|
+
// One choice is not a choice.
|
|
6
|
+
if (views.length < 2) {
|
|
7
|
+
return null;
|
|
8
|
+
}
|
|
9
|
+
return (_jsx(Box, { role: "tablist", "aria-label": "Workspace views", sx: {
|
|
10
|
+
display: 'inline-flex',
|
|
11
|
+
alignItems: 'center',
|
|
12
|
+
bg: 'neutral.muted',
|
|
13
|
+
borderRadius: '6px',
|
|
14
|
+
p: '2px',
|
|
15
|
+
gap: '1px',
|
|
16
|
+
}, children: views.map(entry => {
|
|
17
|
+
const view = entry.value;
|
|
18
|
+
const open = canOpenView(view, workspace);
|
|
19
|
+
const active = workspace.activeViewType === view.viewType;
|
|
20
|
+
const Icon = view.icon;
|
|
21
|
+
// A greyed-out tab with no explanation is worse than no tab.
|
|
22
|
+
// In compact mode the tooltip is the only place the title appears, so
|
|
23
|
+
// it says the title even when the view is fine.
|
|
24
|
+
const label = open
|
|
25
|
+
? view.title
|
|
26
|
+
: `${view.title} — ${view.unavailableReason?.(workspace) ?? 'unavailable'}`;
|
|
27
|
+
return (_jsx(Tooltip, { text: label, direction: "n", children: _jsxs(Box, { as: "button", role: "tab", "aria-selected": active, "aria-disabled": !open, onClick: () => open && workspace.setActiveViewType(view.viewType), sx: {
|
|
28
|
+
display: 'inline-flex',
|
|
29
|
+
alignItems: 'center',
|
|
30
|
+
gap: 1,
|
|
31
|
+
border: 'none',
|
|
32
|
+
borderRadius: '5px',
|
|
33
|
+
px: 2,
|
|
34
|
+
py: '4px',
|
|
35
|
+
fontSize: 0,
|
|
36
|
+
cursor: open ? 'pointer' : 'not-allowed',
|
|
37
|
+
opacity: open ? 1 : 0.5,
|
|
38
|
+
bg: active ? 'canvas.default' : 'transparent',
|
|
39
|
+
color: active ? 'fg.default' : 'fg.muted',
|
|
40
|
+
boxShadow: active ? 'shadow.small' : 'none',
|
|
41
|
+
}, children: [Icon ? _jsx(Icon, { size: 14 }) : null, compact && Icon ? null : view.title] }) }, view.viewType));
|
|
42
|
+
}) }));
|
|
43
|
+
}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The full-screen control, as a standalone icon.
|
|
3
|
+
*
|
|
4
|
+
* The chat header has always carried one; this is the same behaviour —
|
|
5
|
+
* `useWorkspaceFullScreen`, promoting the whole workspace — packaged for
|
|
6
|
+
* anywhere else a host or plugin wants it. The window-frame plugin puts it in
|
|
7
|
+
* the workspace header, which is what keeps the control reachable for a shell
|
|
8
|
+
* that hides the chat's chrome.
|
|
9
|
+
*
|
|
10
|
+
* Unlike the chat view's own control, this one is a bare icon with no view of
|
|
11
|
+
* its own to paint an overlay on — so it asks the hook to paint one for it
|
|
12
|
+
* (`paintOverlay`), offset by `ChatPluginConfig.fullScreenTopOffset` for a
|
|
13
|
+
* host whose own fixed header needs to survive full screen. A host that never
|
|
14
|
+
* sets that config gets `0`: the same full-viewport overlay, or the same
|
|
15
|
+
* native-API promotion, as before this existed.
|
|
16
|
+
*
|
|
17
|
+
* No hint animation here, deliberately: the chat's control breathes when the
|
|
18
|
+
* first answer arrives because that is where the reader is looking; a header
|
|
19
|
+
* icon that pulsed would be chrome asking for attention it has not earned.
|
|
20
|
+
*
|
|
21
|
+
* @module loop/shell/WorkspaceFullScreenAction
|
|
22
|
+
*/
|
|
23
|
+
import type { JSX } from 'react';
|
|
24
|
+
export declare function WorkspaceFullScreenAction(): JSX.Element;
|
|
25
|
+
export default WorkspaceFullScreenAction;
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { useRef } from 'react';
|
|
3
|
+
import { IconButton } from '@primer/react';
|
|
4
|
+
import { ScreenFullIcon, ScreenNormalIcon } from '@primer/octicons-react';
|
|
5
|
+
import { useReactorPlatform } from '@datalayer/reactor/react';
|
|
6
|
+
import { useWorkspaceFullScreen } from './useWorkspaceFullScreen';
|
|
7
|
+
import { CHAT_PLUGIN_NAME } from '../plugins/chat';
|
|
8
|
+
export function WorkspaceFullScreenAction() {
|
|
9
|
+
/* The button itself anchors the lookup: it is inside the workspace, which
|
|
10
|
+
is all `useWorkspaceFullScreen` needs to find what to promote. */
|
|
11
|
+
const anchorRef = useRef(null);
|
|
12
|
+
const reactor = useReactorPlatform();
|
|
13
|
+
const fullScreenTopOffset = reactor.getConfig(CHAT_PLUGIN_NAME)
|
|
14
|
+
?.fullScreenTopOffset ?? 0;
|
|
15
|
+
const { fullScreen, toggle } = useWorkspaceFullScreen(anchorRef, {
|
|
16
|
+
paintOverlay: Boolean(fullScreenTopOffset),
|
|
17
|
+
topOffset: fullScreenTopOffset,
|
|
18
|
+
});
|
|
19
|
+
return (_jsx(IconButton, { ref: anchorRef, icon: fullScreen ? ScreenNormalIcon : ScreenFullIcon, "aria-label": fullScreen ? 'Exit full screen' : 'Enter full screen', variant: "invisible", size: "small",
|
|
20
|
+
// The far end of the trailing cluster: past the editor selector's auto
|
|
21
|
+
// margin, after the trial clock's `order: 1`.
|
|
22
|
+
sx: { order: 2 }, onClick: toggle }));
|
|
23
|
+
}
|
|
24
|
+
export default WorkspaceFullScreenAction;
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The workspace shell: a prompt at the bottom, one view above it.
|
|
3
|
+
*
|
|
4
|
+
* @module loop/shell
|
|
5
|
+
*/
|
|
6
|
+
export { LoopWorkspace, buildLoopReactor, type LoopWorkspaceProps, } from './LoopWorkspace';
|
|
7
|
+
export { ViewSwitcher, type ViewSwitcherProps } from './ViewSwitcher';
|
|
8
|
+
export { PluginToggles, type PluginTogglesProps } from './PluginToggles';
|
|
9
|
+
export { useWorkspaceFullScreen, type WorkspaceFullScreen, } from './useWorkspaceFullScreen';
|
|
10
|
+
export { WorkspaceFullScreenAction } from './WorkspaceFullScreenAction';
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright (c) 2025-2026 Datalayer, Inc.
|
|
3
|
+
* Distributed under the terms of the Modified BSD License.
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* The workspace shell: a prompt at the bottom, one view above it.
|
|
7
|
+
*
|
|
8
|
+
* @module loop/shell
|
|
9
|
+
*/
|
|
10
|
+
export { LoopWorkspace, buildLoopReactor, } from './LoopWorkspace';
|
|
11
|
+
export { ViewSwitcher } from './ViewSwitcher';
|
|
12
|
+
export { PluginToggles } from './PluginToggles';
|
|
13
|
+
export { useWorkspaceFullScreen, } from './useWorkspaceFullScreen';
|
|
14
|
+
export { WorkspaceFullScreenAction } from './WorkspaceFullScreenAction';
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Full screen for the workspace, from wherever the control is drawn.
|
|
3
|
+
*
|
|
4
|
+
* Extracted from the chat view so the same behaviour can be offered twice —
|
|
5
|
+
* the chat's own header keeps its control, and the workspace header gains one
|
|
6
|
+
* — without either copying the machinery.
|
|
7
|
+
*
|
|
8
|
+
* Done with the Fullscreen API rather than by drawing a big box, because a
|
|
9
|
+
* component cannot know what it is inside of. `position: fixed` escapes only
|
|
10
|
+
* as far as the nearest ancestor with a transform, and a page that animates
|
|
11
|
+
* its sections in — the landing does — leaves one behind permanently: the
|
|
12
|
+
* "full screen" chat then filled the card it was already in. The API promotes
|
|
13
|
+
* the element to the browser's top layer, where no ancestor can hold it, and
|
|
14
|
+
* unlike a portal it does not move in the DOM — so every inherited theme
|
|
15
|
+
* variable the editors read still resolves.
|
|
16
|
+
*
|
|
17
|
+
* A CSS overlay is kept as the fallback for where the API is refused — an
|
|
18
|
+
* iframe without `allow="fullscreen"`, mostly. The hook only reports which of
|
|
19
|
+
* the two is in play (`usingApi`); painting the overlay stays with the caller,
|
|
20
|
+
* which is the one that knows what it looks like.
|
|
21
|
+
*
|
|
22
|
+
* @module loop/shell/useWorkspaceFullScreen
|
|
23
|
+
*/
|
|
24
|
+
import type { RefObject } from 'react';
|
|
25
|
+
export type WorkspaceFullScreen = {
|
|
26
|
+
/** Whether the workspace is at full screen, by either door. */
|
|
27
|
+
fullScreen: boolean;
|
|
28
|
+
/** Whether the browser's API is the door in use; read `.current`. */
|
|
29
|
+
usingApi: RefObject<boolean>;
|
|
30
|
+
/** Enter or leave, whichever applies. */
|
|
31
|
+
toggle: () => void;
|
|
32
|
+
/**
|
|
33
|
+
* The `topOffset` in pixels while the overlay is up — measured from a
|
|
34
|
+
* selector's element when `topOffset` is one — for a caller that paints
|
|
35
|
+
* its own overlay. 0 otherwise.
|
|
36
|
+
*/
|
|
37
|
+
topOffsetPx: number;
|
|
38
|
+
};
|
|
39
|
+
/**
|
|
40
|
+
* A top offset as pixels: a number as given, or the bottom edge of the
|
|
41
|
+
* element a CSS selector names — a host's fixed header, whose height depends
|
|
42
|
+
* on the width it wraps at and is never a number worth hard-coding. A
|
|
43
|
+
* selector that matches nothing, or no document, is 0.
|
|
44
|
+
*/
|
|
45
|
+
export declare function resolveTopOffset(offset: number | string | undefined): number;
|
|
46
|
+
export type WorkspaceFullScreenOptions = {
|
|
47
|
+
/**
|
|
48
|
+
* Never ask the browser's API for full screen — go straight to the CSS
|
|
49
|
+
* overlay, every time.
|
|
50
|
+
*
|
|
51
|
+
* The API promotes the workspace above *everything* on the page, a fixed
|
|
52
|
+
* header the host drew around the workspace included: there is no partial
|
|
53
|
+
* form of it that leaves a sibling element on screen, because promoting an
|
|
54
|
+
* element removes the rest of the page from the compositor entirely. A
|
|
55
|
+
* host whose header must survive full screen has no choice but to give up
|
|
56
|
+
* the API's own benefits (see the module doc) and ask for the overlay
|
|
57
|
+
* outright. False (the default) keeps trying the API first, the way every
|
|
58
|
+
* other host wants it.
|
|
59
|
+
*/
|
|
60
|
+
forceOverlay?: boolean;
|
|
61
|
+
/**
|
|
62
|
+
* Paint the CSS-overlay fallback itself, directly on the promoted node's
|
|
63
|
+
* own inline styles, for a caller with no overlay of its own to paint —
|
|
64
|
+
* `WorkspaceFullScreenAction`, which is a bare icon and never had one.
|
|
65
|
+
* Implies `forceOverlay`: painting an overlay is moot if the API took the
|
|
66
|
+
* workspace instead.
|
|
67
|
+
*
|
|
68
|
+
* `ChatView`'s own call leaves this off and keeps painting its own —
|
|
69
|
+
* scoped to its own view rather than the whole workspace — so the two
|
|
70
|
+
* never stack on top of one another.
|
|
71
|
+
*/
|
|
72
|
+
paintOverlay?: boolean;
|
|
73
|
+
/**
|
|
74
|
+
* Room left clear at the top of the overlay, for a host's own fixed
|
|
75
|
+
* header: pixels, or a CSS selector for the header itself, whose bottom
|
|
76
|
+
* edge is measured when the overlay goes up and again on every resize.
|
|
77
|
+
* Painted by the hook when `paintOverlay` is set; reported as
|
|
78
|
+
* `topOffsetPx` for a caller that paints its own.
|
|
79
|
+
*/
|
|
80
|
+
topOffset?: number | string;
|
|
81
|
+
};
|
|
82
|
+
/**
|
|
83
|
+
* Full-screen state and the toggle, anchored by any element inside the
|
|
84
|
+
* workspace.
|
|
85
|
+
*
|
|
86
|
+
* The element promoted is the whole workspace — the nearest
|
|
87
|
+
* `[data-loop-workspace]` above the anchor — so the header's controls come
|
|
88
|
+
* along instead of being left on the page underneath. With no workspace
|
|
89
|
+
* around it, the anchor's own element is promoted, which is what a view
|
|
90
|
+
* mounted without a shell would want.
|
|
91
|
+
*/
|
|
92
|
+
export declare function useWorkspaceFullScreen(anchorRef: RefObject<HTMLElement | null>, options?: WorkspaceFullScreenOptions): WorkspaceFullScreen;
|
|
93
|
+
export default useWorkspaceFullScreen;
|