@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,32 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* What the hidden editors hold, for the selector to show.
|
|
3
|
+
*
|
|
4
|
+
* The notebook and the document are mounted and connected whether or not
|
|
5
|
+
* they are on screen — the agent works in them from the `none` view. The
|
|
6
|
+
* selector is where that stops being invisible: each label carries a live
|
|
7
|
+
* count ("Notebook (4)"), and hovering opens a card listing the cells or
|
|
8
|
+
* blocks, one truncated source line each. A person watching the agent work
|
|
9
|
+
* sees the notebook filling up without ever leaving the conversation.
|
|
10
|
+
*
|
|
11
|
+
* The notebook is read synchronously from the live model and followed
|
|
12
|
+
* through its own signals; the document is read through the lexical store's
|
|
13
|
+
* async block reader, refreshed when the store reports change. The lexical
|
|
14
|
+
* module is imported lazily and only once the workspace actually offers a
|
|
15
|
+
* document — this file must not be the import that drags lexical into every
|
|
16
|
+
* bundle.
|
|
17
|
+
*
|
|
18
|
+
* @module loop/plugins/shell/useEditorPreviews
|
|
19
|
+
*/
|
|
20
|
+
import type { ReactNode } from 'react';
|
|
21
|
+
export type EditorPreview = {
|
|
22
|
+
badge: string;
|
|
23
|
+
details: ReactNode;
|
|
24
|
+
};
|
|
25
|
+
/**
|
|
26
|
+
* Live previews for the editor selector, keyed by surface id.
|
|
27
|
+
*
|
|
28
|
+
* Only the editors actually on offer are read — the store subscriptions and
|
|
29
|
+
* the lexical import cost nothing in a workspace without them.
|
|
30
|
+
*/
|
|
31
|
+
export declare function useEditorPreviews(surfaceId: string): Record<string, EditorPreview | undefined>;
|
|
32
|
+
export default useEditorPreviews;
|
|
@@ -0,0 +1,217 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { useEffect, useMemo, useState, useSyncExternalStore } from 'react';
|
|
3
|
+
import { Box, Text } from '@primer/react';
|
|
4
|
+
import { getEditorChoice, subscribeEditorChoice } from './editorChoice';
|
|
5
|
+
let jupyterReact = null;
|
|
6
|
+
function loadJupyterReact() {
|
|
7
|
+
return jupyterReact
|
|
8
|
+
? Promise.resolve(jupyterReact)
|
|
9
|
+
: import('@datalayer/jupyter-react').then(module => {
|
|
10
|
+
jupyterReact = module;
|
|
11
|
+
return module;
|
|
12
|
+
});
|
|
13
|
+
}
|
|
14
|
+
const PREVIEW_LENGTH = 56;
|
|
15
|
+
function stripped(source) {
|
|
16
|
+
const line = source.split('\n').find(entry => entry.trim()) ?? '';
|
|
17
|
+
const trimmed = line.trim();
|
|
18
|
+
return trimmed.length > PREVIEW_LENGTH
|
|
19
|
+
? `${trimmed.slice(0, PREVIEW_LENGTH - 1)}…`
|
|
20
|
+
: trimmed || '(empty)';
|
|
21
|
+
}
|
|
22
|
+
/** The card's body: one row per cell or block. */
|
|
23
|
+
function PreviewList({ title, rows, }) {
|
|
24
|
+
return (_jsxs(Box, { children: [_jsx(Text, { sx: { fontWeight: 'semibold', display: 'block', mb: 1 }, children: title }), rows.length === 0 ? (_jsx(Text, { sx: { color: 'fg.muted' }, children: "Empty so far." })) : (rows.map((row, index) => (_jsxs(Box, { sx: { display: 'flex', gap: 2, py: '2px', alignItems: 'baseline' }, children: [_jsxs(Text, { sx: { color: 'fg.muted', flexShrink: 0, fontFamily: 'mono' }, children: [index, " \u00B7 ", row.kind] }), _jsx(Text, { sx: {
|
|
25
|
+
fontFamily: 'mono',
|
|
26
|
+
whiteSpace: 'nowrap',
|
|
27
|
+
overflow: 'hidden',
|
|
28
|
+
textOverflow: 'ellipsis',
|
|
29
|
+
}, children: row.text })] }, index))))] }));
|
|
30
|
+
}
|
|
31
|
+
/** The editors currently on offer, from the choice store — reactive. */
|
|
32
|
+
function useOfferedEditors() {
|
|
33
|
+
return useSyncExternalStore(subscribeEditorChoice, () => getEditorChoice().options);
|
|
34
|
+
}
|
|
35
|
+
/** The live notebook rows for a surface id, followed through model signals. */
|
|
36
|
+
function useNotebookRows(surfaceId, enabled) {
|
|
37
|
+
const [tick, setTick] = useState(0);
|
|
38
|
+
useEffect(() => {
|
|
39
|
+
if (!enabled) {
|
|
40
|
+
return undefined;
|
|
41
|
+
}
|
|
42
|
+
let cancelled = false;
|
|
43
|
+
const bump = () => setTick(value => value + 1);
|
|
44
|
+
const cleanups = [];
|
|
45
|
+
// Whether the module was already here when this run began: only its
|
|
46
|
+
// first arrival is news worth a re-render. Bumping on every resolution
|
|
47
|
+
// would re-run this tick-dependent effect forever.
|
|
48
|
+
const hadModule = jupyterReact !== null;
|
|
49
|
+
// The module first (cached after the first mount), then the store says
|
|
50
|
+
// when the notebook arrives and the model says when it changes. All
|
|
51
|
+
// guarded: the test environment mocks the store away.
|
|
52
|
+
void loadJupyterReact().then(({ notebookStore }) => {
|
|
53
|
+
if (cancelled) {
|
|
54
|
+
return;
|
|
55
|
+
}
|
|
56
|
+
try {
|
|
57
|
+
const unsubscribe = notebookStore.subscribe?.(bump);
|
|
58
|
+
if (unsubscribe) {
|
|
59
|
+
cleanups.push(unsubscribe);
|
|
60
|
+
}
|
|
61
|
+
const model = notebookStore
|
|
62
|
+
.getState()
|
|
63
|
+
?.notebooks?.get(surfaceId)?.model;
|
|
64
|
+
if (model) {
|
|
65
|
+
const signals = [
|
|
66
|
+
model
|
|
67
|
+
.contentChanged,
|
|
68
|
+
model.cells?.changed,
|
|
69
|
+
];
|
|
70
|
+
for (const signal of signals) {
|
|
71
|
+
if (signal?.connect) {
|
|
72
|
+
signal.connect(bump);
|
|
73
|
+
cleanups.push(() => signal.disconnect(bump));
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
// The first arrival is itself news: the memo below could not read
|
|
78
|
+
// the store before the module existed.
|
|
79
|
+
if (!hadModule) {
|
|
80
|
+
bump();
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
catch {
|
|
84
|
+
// No live store here (tests, SSR): the selector shows no badge.
|
|
85
|
+
}
|
|
86
|
+
});
|
|
87
|
+
return () => {
|
|
88
|
+
cancelled = true;
|
|
89
|
+
for (const cleanup of cleanups) {
|
|
90
|
+
try {
|
|
91
|
+
cleanup();
|
|
92
|
+
}
|
|
93
|
+
catch {
|
|
94
|
+
/* a disposed model refuses disconnects; nothing to do */
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
};
|
|
98
|
+
// Reconnected on every bump: a bump may have brought the model with it,
|
|
99
|
+
// and re-attaching two listeners is cheaper than being clever about it.
|
|
100
|
+
}, [enabled, surfaceId, tick]);
|
|
101
|
+
return useMemo(() => {
|
|
102
|
+
if (!enabled) {
|
|
103
|
+
return null;
|
|
104
|
+
}
|
|
105
|
+
const model = safeModel(surfaceId);
|
|
106
|
+
if (!model) {
|
|
107
|
+
return null;
|
|
108
|
+
}
|
|
109
|
+
const rows = [];
|
|
110
|
+
const cells = model.cells;
|
|
111
|
+
for (let index = 0; index < cells.length; index += 1) {
|
|
112
|
+
const cell = cells.get(index);
|
|
113
|
+
rows.push({
|
|
114
|
+
kind: cell.type,
|
|
115
|
+
text: stripped(cell.sharedModel.getSource()),
|
|
116
|
+
});
|
|
117
|
+
}
|
|
118
|
+
return rows;
|
|
119
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
120
|
+
}, [enabled, surfaceId, tick]);
|
|
121
|
+
}
|
|
122
|
+
function safeModel(surfaceId) {
|
|
123
|
+
try {
|
|
124
|
+
return (jupyterReact?.notebookStore.getState()?.notebooks?.get(surfaceId)
|
|
125
|
+
?.model ?? null);
|
|
126
|
+
}
|
|
127
|
+
catch {
|
|
128
|
+
return null;
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
/** The document's brief blocks, refreshed when the lexical store changes. */
|
|
132
|
+
function useDocumentRows(surfaceId, enabled) {
|
|
133
|
+
const [rows, setRows] = useState(null);
|
|
134
|
+
useEffect(() => {
|
|
135
|
+
if (!enabled) {
|
|
136
|
+
setRows(null);
|
|
137
|
+
return undefined;
|
|
138
|
+
}
|
|
139
|
+
let cancelled = false;
|
|
140
|
+
let unsubscribe;
|
|
141
|
+
let pending = false;
|
|
142
|
+
// Lazily, and only because a document is actually on offer: this hook
|
|
143
|
+
// must not be the import that pulls lexical into every bundle. The
|
|
144
|
+
// Prism setup loads first, in the same chain — jupyter-lexical pulls
|
|
145
|
+
// `@lexical/code`, whose language components read the bare global
|
|
146
|
+
// `Prism` the instant they evaluate, and whichever dynamic import wins
|
|
147
|
+
// the race decides whether the global exists yet.
|
|
148
|
+
void import('@datalayer/jupyter-react/lib/css/PrismCss')
|
|
149
|
+
.then(() => import('@datalayer/jupyter-lexical'))
|
|
150
|
+
.then(({ lexicalStore }) => {
|
|
151
|
+
if (cancelled) {
|
|
152
|
+
return;
|
|
153
|
+
}
|
|
154
|
+
const refresh = () => {
|
|
155
|
+
if (pending) {
|
|
156
|
+
return;
|
|
157
|
+
}
|
|
158
|
+
pending = true;
|
|
159
|
+
void lexicalStore
|
|
160
|
+
.getState()
|
|
161
|
+
.readAllBlocks(surfaceId, 'brief')
|
|
162
|
+
.then(blocks => {
|
|
163
|
+
pending = false;
|
|
164
|
+
if (cancelled || !Array.isArray(blocks)) {
|
|
165
|
+
return;
|
|
166
|
+
}
|
|
167
|
+
setRows(blocks.map(block => ({
|
|
168
|
+
kind: block.block_type ?? 'block',
|
|
169
|
+
text: stripped(block.preview ?? ''),
|
|
170
|
+
})));
|
|
171
|
+
})
|
|
172
|
+
.catch(() => {
|
|
173
|
+
pending = false;
|
|
174
|
+
// No adapter yet: the document has not mounted. No badge, no lie.
|
|
175
|
+
if (!cancelled) {
|
|
176
|
+
setRows(null);
|
|
177
|
+
}
|
|
178
|
+
});
|
|
179
|
+
};
|
|
180
|
+
refresh();
|
|
181
|
+
unsubscribe = lexicalStore.subscribe(refresh);
|
|
182
|
+
});
|
|
183
|
+
return () => {
|
|
184
|
+
cancelled = true;
|
|
185
|
+
unsubscribe?.();
|
|
186
|
+
};
|
|
187
|
+
}, [enabled, surfaceId]);
|
|
188
|
+
return rows;
|
|
189
|
+
}
|
|
190
|
+
/**
|
|
191
|
+
* Live previews for the editor selector, keyed by surface id.
|
|
192
|
+
*
|
|
193
|
+
* Only the editors actually on offer are read — the store subscriptions and
|
|
194
|
+
* the lexical import cost nothing in a workspace without them.
|
|
195
|
+
*/
|
|
196
|
+
export function useEditorPreviews(surfaceId) {
|
|
197
|
+
const offered = useOfferedEditors();
|
|
198
|
+
const notebookRows = useNotebookRows(surfaceId, offered.includes('notebook'));
|
|
199
|
+
const documentRows = useDocumentRows(surfaceId, offered.includes('document'));
|
|
200
|
+
return useMemo(() => {
|
|
201
|
+
const previews = {};
|
|
202
|
+
if (notebookRows) {
|
|
203
|
+
previews.notebook = {
|
|
204
|
+
badge: String(notebookRows.length),
|
|
205
|
+
details: _jsx(PreviewList, { title: "Cells", rows: notebookRows }),
|
|
206
|
+
};
|
|
207
|
+
}
|
|
208
|
+
if (documentRows) {
|
|
209
|
+
previews.document = {
|
|
210
|
+
badge: String(documentRows.length),
|
|
211
|
+
details: _jsx(PreviewList, { title: "Blocks", rows: documentRows }),
|
|
212
|
+
};
|
|
213
|
+
}
|
|
214
|
+
return previews;
|
|
215
|
+
}, [notebookRows, documentRows]);
|
|
216
|
+
}
|
|
217
|
+
export default useEditorPreviews;
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The pulse: a delegated agent's icon, fading in and out in the prompt's
|
|
3
|
+
* header band for as long as that agent is working.
|
|
4
|
+
*
|
|
5
|
+
* Read from the agent runtime store, which both the server's monitoring
|
|
6
|
+
* stream and the in-page loop fill with the same events — so the pulse does
|
|
7
|
+
* not care where the delegation runs. The icon is the member's own when the
|
|
8
|
+
* name is a team member's, and the generic agent mark otherwise; the tooltip
|
|
9
|
+
* says who it is.
|
|
10
|
+
*
|
|
11
|
+
* @module loop/plugins/subagent-activity/SubagentPulse
|
|
12
|
+
*/
|
|
13
|
+
import type { JSX } from 'react';
|
|
14
|
+
export declare const PULSE_ANIMATION = "loop-subagent-pulse";
|
|
15
|
+
export declare function SubagentPulse(): JSX.Element | null;
|
|
16
|
+
export default SubagentPulse;
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { Tooltip } from '@primer/react';
|
|
3
|
+
import { Box } from '@datalayer/primer-addons';
|
|
4
|
+
import { useOptionalReactorPlatform } from '@datalayer/reactor/react';
|
|
5
|
+
import { useAgentRuntimeActiveSubagentToolCallId, useAgentRuntimeSubagentActivity, } from '../../../stores';
|
|
6
|
+
import { agentIcon } from '../agents/agentIcons';
|
|
7
|
+
import { AGENTS_PLUGIN_NAME } from '../agents/plugin';
|
|
8
|
+
export const PULSE_ANIMATION = 'loop-subagent-pulse';
|
|
9
|
+
const KEYFRAMES = `@keyframes ${PULSE_ANIMATION} {
|
|
10
|
+
0%, 100% { opacity: 0.25; }
|
|
11
|
+
50% { opacity: 1; }
|
|
12
|
+
}`;
|
|
13
|
+
export function SubagentPulse() {
|
|
14
|
+
const activeKey = useAgentRuntimeActiveSubagentToolCallId();
|
|
15
|
+
const events = useAgentRuntimeSubagentActivity(activeKey ?? undefined);
|
|
16
|
+
// Optional: the pulse may be drawn where no reactor runs, and then it
|
|
17
|
+
// simply has no team to look the icon up in.
|
|
18
|
+
const reactor = useOptionalReactorPlatform();
|
|
19
|
+
const name = events[0]?.subagentName ?? activeKey ?? '';
|
|
20
|
+
const member = reactor
|
|
21
|
+
?.getOutput(AGENTS_PLUGIN_NAME)
|
|
22
|
+
?.team?.members.find(entry => entry.name === name);
|
|
23
|
+
const Icon = agentIcon(member?.icon);
|
|
24
|
+
if (!activeKey) {
|
|
25
|
+
return null;
|
|
26
|
+
}
|
|
27
|
+
const overA2A = events.some(event => event.transport === 'a2a');
|
|
28
|
+
const label = overA2A
|
|
29
|
+
? `${name} is working over A2A…`
|
|
30
|
+
: `${name} is working…`;
|
|
31
|
+
return (_jsxs(_Fragment, { children: [_jsx("style", { children: KEYFRAMES }), _jsx(Tooltip, { text: label, direction: "n", children: _jsx(Box, { as: "button", type: "button", "aria-label": label, "data-subagent-pulse": name, sx: {
|
|
32
|
+
display: 'inline-flex',
|
|
33
|
+
alignItems: 'center',
|
|
34
|
+
justifyContent: 'center',
|
|
35
|
+
width: 28,
|
|
36
|
+
height: 28,
|
|
37
|
+
p: 0,
|
|
38
|
+
border: 0,
|
|
39
|
+
bg: 'transparent',
|
|
40
|
+
color: 'accent.fg',
|
|
41
|
+
cursor: 'default',
|
|
42
|
+
animation: `${PULSE_ANIMATION} 1.4s ease-in-out infinite`,
|
|
43
|
+
}, children: _jsx(Icon, { size: 16 }) }) })] }));
|
|
44
|
+
}
|
|
45
|
+
export default SubagentPulse;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { SubagentPulse } from './SubagentPulse';
|
|
2
|
+
export declare const SUBAGENT_ACTIVITY_PLUGIN_NAME = "@datalayer/loop-plugin-subagent-activity";
|
|
3
|
+
export declare const SubagentActivityPlugin: import("@datalayer/reactor").ReactorPlugin<Record<string, never>, unknown, {
|
|
4
|
+
components: {
|
|
5
|
+
id: string;
|
|
6
|
+
slot: "loop.inpromptMenu";
|
|
7
|
+
order: number;
|
|
8
|
+
Component: typeof SubagentPulse;
|
|
9
|
+
}[];
|
|
10
|
+
}>;
|
|
11
|
+
export { SubagentPulse } from './SubagentPulse';
|
|
12
|
+
export default SubagentActivityPlugin;
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright (c) 2025-2026 Datalayer, Inc.
|
|
3
|
+
* Distributed under the terms of the Modified BSD License.
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* `@datalayer/loop-plugin-subagent-activity` — a delegation, visible.
|
|
7
|
+
*
|
|
8
|
+
* While an agent has handed work to a subagent, that subagent's icon pulses
|
|
9
|
+
* in the composer's own header — the band inside the prompt box, above the
|
|
10
|
+
* text — where a person is looking while they wait. Without it a delegation
|
|
11
|
+
* was a pause: the parent went quiet, and whether anything was happening
|
|
12
|
+
* showed only in a side panel a host may not draw.
|
|
13
|
+
*
|
|
14
|
+
* @module loop/plugins/subagent-activity
|
|
15
|
+
*/
|
|
16
|
+
import { definePlugin } from '@datalayer/reactor';
|
|
17
|
+
import { LoopSlots } from '../../core';
|
|
18
|
+
import { InputPromptPlugin } from '../input-prompt';
|
|
19
|
+
import { SubagentPulse } from './SubagentPulse';
|
|
20
|
+
export const SUBAGENT_ACTIVITY_PLUGIN_NAME = '@datalayer/loop-plugin-subagent-activity';
|
|
21
|
+
export const SubagentActivityPlugin = definePlugin({
|
|
22
|
+
name: SUBAGENT_ACTIVITY_PLUGIN_NAME,
|
|
23
|
+
displayName: 'Subagent activity',
|
|
24
|
+
description: "A delegated agent's icon, pulsing in the prompt's header while it works.",
|
|
25
|
+
octicon: 'people',
|
|
26
|
+
emoji: '\u{1F465}',
|
|
27
|
+
// The band it pulses in is the composer's: no composer, nowhere to be.
|
|
28
|
+
dependencies: [InputPromptPlugin],
|
|
29
|
+
build: () => ({
|
|
30
|
+
components: [
|
|
31
|
+
{
|
|
32
|
+
id: 'subagent-pulse',
|
|
33
|
+
slot: LoopSlots.inpromptMenu,
|
|
34
|
+
// In the prompt's header band, beside the agent chip.
|
|
35
|
+
order: 0,
|
|
36
|
+
Component: SubagentPulse,
|
|
37
|
+
},
|
|
38
|
+
],
|
|
39
|
+
}),
|
|
40
|
+
});
|
|
41
|
+
export { SubagentPulse } from './SubagentPulse';
|
|
42
|
+
export default SubagentActivityPlugin;
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The mould the view plugins are cast from.
|
|
3
|
+
*
|
|
4
|
+
* A view plugin — chat, notebook, document — puts one icon in the composer's
|
|
5
|
+
* footer that switches the workspace to its view. The icon lives *in the
|
|
6
|
+
* prompt* because that is where the writing hand already is: changing what
|
|
7
|
+
* stands beside the conversation should not mean leaving it. Each plugin
|
|
8
|
+
* therefore **requires** the input-prompt plugin — an icon with no footer to
|
|
9
|
+
* sit in is a control that does not exist — and the reactor mounts the
|
|
10
|
+
* composer with it and takes both down together.
|
|
11
|
+
*
|
|
12
|
+
* The icon knows its own standing: the active view's icon shows in the
|
|
13
|
+
* accent colour, and an editor's icon withdraws entirely while its editor is
|
|
14
|
+
* not on offer (no notebook plugin, no notebook button). The chat's icon is
|
|
15
|
+
* always there — the conversation is the view that remains.
|
|
16
|
+
*
|
|
17
|
+
* @module loop/plugins/view-switch
|
|
18
|
+
*/
|
|
19
|
+
import type { ComponentType, JSX } from 'react';
|
|
20
|
+
export type ViewPluginOptions = {
|
|
21
|
+
/** Short slug: `chat`, `notebook`, … names the plugin `…-<key>-view`. */
|
|
22
|
+
key: string;
|
|
23
|
+
/** The editor surface the icon switches to; `NONE_EDITOR` for the chat. */
|
|
24
|
+
viewId: string;
|
|
25
|
+
displayName: string;
|
|
26
|
+
description: string;
|
|
27
|
+
/** The footer icon, with its tooltip text. */
|
|
28
|
+
icon: ComponentType<{
|
|
29
|
+
size?: number;
|
|
30
|
+
}>;
|
|
31
|
+
tooltip: string;
|
|
32
|
+
/** Registry icon name. */
|
|
33
|
+
octicon?: string;
|
|
34
|
+
emoji?: string;
|
|
35
|
+
/** Where the icon stands among its siblings in the footer. */
|
|
36
|
+
order: number;
|
|
37
|
+
};
|
|
38
|
+
export declare function defineViewPlugin(options: ViewPluginOptions): import("@datalayer/reactor").ReactorPlugin<Record<string, never>, unknown, {
|
|
39
|
+
components: {
|
|
40
|
+
id: string;
|
|
41
|
+
slot: "loop.promptAction";
|
|
42
|
+
order: number;
|
|
43
|
+
Component: () => JSX.Element | null;
|
|
44
|
+
}[];
|
|
45
|
+
}>;
|
|
46
|
+
export default defineViewPlugin;
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { useSyncExternalStore } from 'react';
|
|
3
|
+
import { IconButton } from '@primer/react';
|
|
4
|
+
import { definePlugin } from '@datalayer/reactor';
|
|
5
|
+
import { useContributions } from '@datalayer/reactor/react';
|
|
6
|
+
import { LoopEditorView, LoopSlots } from '../../core';
|
|
7
|
+
import { NONE_EDITOR, chooseEditor, getEditorChoice, subscribeEditorChoice, } from '../shell/editorChoice';
|
|
8
|
+
import { InputPromptPlugin } from '../input-prompt';
|
|
9
|
+
/** One footer icon: switches to its view, shows when the view is real. */
|
|
10
|
+
function makeViewSwitchAction({ viewId, icon, tooltip, }) {
|
|
11
|
+
return function ViewSwitchAction() {
|
|
12
|
+
/*
|
|
13
|
+
* Field by field, never the wrapper: `getEditorChoice()` builds a fresh
|
|
14
|
+
* object per call, and `useSyncExternalStore` re-renders whenever the
|
|
15
|
+
* snapshot's identity changes — a fresh object every check is an
|
|
16
|
+
* infinite loop. The id is a string and the options array keeps its
|
|
17
|
+
* reference between changes, so these two are stable snapshots.
|
|
18
|
+
*/
|
|
19
|
+
const editorId = useSyncExternalStore(subscribeEditorChoice, () => getEditorChoice().editorId);
|
|
20
|
+
/*
|
|
21
|
+
* From the contributions, not the choice store's `options`: the store's
|
|
22
|
+
* list is published by the header selector's render, and a workspace
|
|
23
|
+
* that mounts no selector would leave it empty with every editor
|
|
24
|
+
* standing. The point is the source of truth about what exists.
|
|
25
|
+
*/
|
|
26
|
+
const editors = useContributions(LoopEditorView);
|
|
27
|
+
// An editor's icon withdraws while its editor is not contributed: a
|
|
28
|
+
// button that switches to nothing is the trap the fail-loud rules exist
|
|
29
|
+
// to prevent. The chat has no such condition to fail.
|
|
30
|
+
if (viewId !== NONE_EDITOR &&
|
|
31
|
+
!editors.some(entry => entry.value.surfaceId === viewId)) {
|
|
32
|
+
return null;
|
|
33
|
+
}
|
|
34
|
+
const selected = (editorId || NONE_EDITOR) === viewId;
|
|
35
|
+
return (_jsx(IconButton, { icon: icon, "aria-label": tooltip, size: "small", variant: "invisible", onClick: () => {
|
|
36
|
+
if (!chooseEditor(viewId)) {
|
|
37
|
+
console.warn(`[loop] No chat is on screen to switch to '${viewId}'.`);
|
|
38
|
+
}
|
|
39
|
+
}, sx: selected ? { color: 'accent.fg' } : undefined }));
|
|
40
|
+
};
|
|
41
|
+
}
|
|
42
|
+
export function defineViewPlugin(options) {
|
|
43
|
+
const { key, viewId, displayName, description, icon, tooltip, order } = options;
|
|
44
|
+
const Component = makeViewSwitchAction({ viewId, icon, tooltip });
|
|
45
|
+
return definePlugin({
|
|
46
|
+
name: `@datalayer/loop-plugin-${key}-view`,
|
|
47
|
+
displayName,
|
|
48
|
+
description,
|
|
49
|
+
octicon: options.octicon ?? 'eye',
|
|
50
|
+
emoji: options.emoji,
|
|
51
|
+
// The footer the icon sits in is the input-prompt plugin's: a view
|
|
52
|
+
// plugin without it would be a control with nowhere to exist, so this is
|
|
53
|
+
// a hard dependency — the composer mounts with it, and disabling the
|
|
54
|
+
// composer takes the view icons down too.
|
|
55
|
+
dependencies: [InputPromptPlugin],
|
|
56
|
+
build: () => ({
|
|
57
|
+
components: [
|
|
58
|
+
{
|
|
59
|
+
id: `${key}-view-action`,
|
|
60
|
+
slot: LoopSlots.promptAction,
|
|
61
|
+
order,
|
|
62
|
+
Component,
|
|
63
|
+
},
|
|
64
|
+
],
|
|
65
|
+
}),
|
|
66
|
+
});
|
|
67
|
+
}
|
|
68
|
+
export default defineViewPlugin;
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A window around the workspace.
|
|
3
|
+
*
|
|
4
|
+
* Chrome that says "this is an application" without imitating a particular
|
|
5
|
+
* one: a rounded, shadowed card with a title bar carrying window controls on
|
|
6
|
+
* the leading edge, a name, and whatever the host offers on the trailing edge.
|
|
7
|
+
*
|
|
8
|
+
* It exists so that a page embedding Loop does not have to draw one. The
|
|
9
|
+
* landing page had this markup, which is the wrong side of the boundary for it
|
|
10
|
+
* to live on — a change to how Loop presents itself would have had to be made
|
|
11
|
+
* in a repository that only renders it.
|
|
12
|
+
*
|
|
13
|
+
* Both edges are reactor slots, so what goes in them is contributed rather
|
|
14
|
+
* than passed down: a plugin adds a control without the frame knowing what it
|
|
15
|
+
* is, and without the host that mounted the frame having to forward it.
|
|
16
|
+
*
|
|
17
|
+
* @module loop/plugins/window-frame/WindowFrame
|
|
18
|
+
*/
|
|
19
|
+
import type { ReactNode } from 'react';
|
|
20
|
+
export type WindowFrameProps = {
|
|
21
|
+
/** What the window contains — the workspace, normally. */
|
|
22
|
+
children: ReactNode;
|
|
23
|
+
/**
|
|
24
|
+
* What the window is called, shown in the title bar.
|
|
25
|
+
*
|
|
26
|
+
* Optional: a host that names the workspace on the line above it has no use
|
|
27
|
+
* for a second label, but a window bar is where a window's name goes, so the
|
|
28
|
+
* space stays for one that does.
|
|
29
|
+
*/
|
|
30
|
+
title?: ReactNode;
|
|
31
|
+
/**
|
|
32
|
+
* How tall the body stands. Any CSS length.
|
|
33
|
+
*
|
|
34
|
+
* The host's call rather than the frame's: how much of the page Loop should
|
|
35
|
+
* take is a question about the page.
|
|
36
|
+
*
|
|
37
|
+
* Omitted, the frame fills whatever it was given and the body takes what the
|
|
38
|
+
* title bar leaves. That is the right answer for a full-page host, and it
|
|
39
|
+
* avoids the alternative — subtracting the bar's height in a `calc` on the
|
|
40
|
+
* host's side, which is a number that silently goes wrong the first time the
|
|
41
|
+
* bar gains a row.
|
|
42
|
+
*/
|
|
43
|
+
height?: string | number;
|
|
44
|
+
/** Anything the slots' components should receive. */
|
|
45
|
+
slotProps?: Record<string, unknown>;
|
|
46
|
+
};
|
|
47
|
+
export declare function WindowFrame({ children, title, height, slotProps, }: WindowFrameProps): React.JSX.Element;
|
|
48
|
+
export default WindowFrame;
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { Box } from '@datalayer/primer-addons';
|
|
3
|
+
import { ReactorSlot, useOptionalSlotComponents, } from '@datalayer/reactor/react';
|
|
4
|
+
import { WINDOW_ACTIONS_SLOT, WINDOW_CONTROLS_SLOT } from './slots';
|
|
5
|
+
export function WindowFrame({ children, title, height, slotProps = {}, }) {
|
|
6
|
+
/*
|
|
7
|
+
* Asked rather than assumed, so the trailing group is not an empty flex box
|
|
8
|
+
* taking a gap's worth of space in a bar that is mostly title.
|
|
9
|
+
*
|
|
10
|
+
* The tolerant read, because the frame is *outside* the workspace it frames:
|
|
11
|
+
* a host composes `<WindowFrame>` around whatever builds the reactor, so on
|
|
12
|
+
* the first render there is no platform at all. The bar draws without its
|
|
13
|
+
* actions and fills them in when the workspace registers one.
|
|
14
|
+
*/
|
|
15
|
+
const actions = useOptionalSlotComponents(WINDOW_ACTIONS_SLOT);
|
|
16
|
+
return (_jsxs(Box, { sx: {
|
|
17
|
+
position: 'relative',
|
|
18
|
+
// Filling is the default: with no height given the frame takes the
|
|
19
|
+
// space it was handed and the body gets the remainder.
|
|
20
|
+
...(height === undefined
|
|
21
|
+
? { height: '100%', display: 'flex', flexDirection: 'column' }
|
|
22
|
+
: null),
|
|
23
|
+
borderRadius: '14px',
|
|
24
|
+
overflow: 'hidden',
|
|
25
|
+
border: '1px solid',
|
|
26
|
+
borderColor: 'border.default',
|
|
27
|
+
bg: 'canvas.default',
|
|
28
|
+
// Lifted off the field, so the workspace reads as a thing sitting on
|
|
29
|
+
// the page rather than a hole cut into it.
|
|
30
|
+
boxShadow: '0 24px 60px -28px rgba(0, 0, 0, 0.55)',
|
|
31
|
+
}, children: [_jsxs(Box, { sx: {
|
|
32
|
+
display: 'flex',
|
|
33
|
+
alignItems: 'center',
|
|
34
|
+
gap: 2,
|
|
35
|
+
px: 3,
|
|
36
|
+
py: 2,
|
|
37
|
+
borderBottom: '1px solid',
|
|
38
|
+
borderColor: 'border.default',
|
|
39
|
+
bg: 'canvas.subtle',
|
|
40
|
+
// The bar may be the page's first line of type as well as its
|
|
41
|
+
// chrome, so it takes a second row on a narrow screen rather than
|
|
42
|
+
// shedding its actions off the edge.
|
|
43
|
+
flexWrap: 'wrap',
|
|
44
|
+
rowGap: 2,
|
|
45
|
+
// Never squeezed by the body beside it.
|
|
46
|
+
flex: '0 0 auto',
|
|
47
|
+
}, children: [_jsx(Box, { sx: {
|
|
48
|
+
display: 'flex',
|
|
49
|
+
alignItems: 'center',
|
|
50
|
+
gap: '6px',
|
|
51
|
+
mr: 1,
|
|
52
|
+
flexShrink: 0,
|
|
53
|
+
}, children: _jsx(ReactorSlot, { slot: WINDOW_CONTROLS_SLOT, props: slotProps }) }), _jsx(Box, { sx: { minWidth: 0, flex: '1 1 auto' }, children: title }), actions.length > 0 ? (_jsx(Box, { sx: {
|
|
54
|
+
display: 'flex',
|
|
55
|
+
alignItems: 'center',
|
|
56
|
+
gap: 2,
|
|
57
|
+
flexShrink: 0,
|
|
58
|
+
ml: 'auto',
|
|
59
|
+
}, children: _jsx(ReactorSlot, { slot: WINDOW_ACTIONS_SLOT, props: slotProps }) })) : null] }), _jsx(Box, { sx: height === undefined
|
|
60
|
+
? { flex: '1 1 auto', minHeight: 0 }
|
|
61
|
+
: { height, minHeight: 0 }, children: children })] }));
|
|
62
|
+
}
|
|
63
|
+
export default WindowFrame;
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { ReactorReactOutput } from '@datalayer/reactor/react';
|
|
2
|
+
export { WindowFrame, type WindowFrameProps } from './WindowFrame';
|
|
3
|
+
export { WINDOW_ACTIONS_SLOT, WINDOW_CONTROLS_SLOT } from './slots';
|
|
4
|
+
export declare const WINDOW_FRAME_PLUGIN_NAME = "@datalayer/loop-plugin-window-frame";
|
|
5
|
+
export declare const WindowFramePlugin: import("@datalayer/reactor").ReactorPlugin<Record<string, never>, unknown, ReactorReactOutput>;
|
|
6
|
+
export default WindowFramePlugin;
|