@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,72 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* What is already in the notebook when the workspace opens.
|
|
3
|
+
*
|
|
4
|
+
* A cell with a result in it, rather than an empty one.
|
|
5
|
+
*
|
|
6
|
+
* The empty cell was honest and useless. A visitor arriving at a page whose
|
|
7
|
+
* argument is "an agent works in a real notebook" met a blank editor and an
|
|
8
|
+
* agent with nothing to talk about — so the first thing they had to do, before
|
|
9
|
+
* seeing anything, was think of a task. Worse, every opener the agent offers
|
|
10
|
+
* refers to *this notebook*: "analyze this dataset", "find anomalies in this
|
|
11
|
+
* notebook". Against an empty document those are questions with no answer.
|
|
12
|
+
*
|
|
13
|
+
* So the notebook opens on a small analysis that has already run. The reader
|
|
14
|
+
* sees code, a table of numbers under it, and an agent beside it that can be
|
|
15
|
+
* asked about them — which is the entire product in one screen, with nothing
|
|
16
|
+
* required of them first.
|
|
17
|
+
*
|
|
18
|
+
* Three things it has to be, and they pull against each other:
|
|
19
|
+
*
|
|
20
|
+
* - **Real.** The output is what this code actually prints. Nobody is going to
|
|
21
|
+
* check, and that is exactly why it matters: a fabricated output in a
|
|
22
|
+
* product demonstration is a lie told to somebody deciding whether to trust
|
|
23
|
+
* the product.
|
|
24
|
+
* - **Small.** It is read in the corner of a landing page, at whatever height
|
|
25
|
+
* is left after the chrome. One cell, six rows out.
|
|
26
|
+
* - **Worth asking about.** The frame is deliberately unfinished — regional
|
|
27
|
+
* revenue with an obvious gap in it — so that "find the anomalies" and "plot
|
|
28
|
+
* revenue by region" have somewhere to land.
|
|
29
|
+
*
|
|
30
|
+
* The execution count is `1` and the outputs are populated, so the notebook
|
|
31
|
+
* reads as a session somebody already started. It is not connected to the
|
|
32
|
+
* kernel that will run the next cell; the moment anyone runs anything, real
|
|
33
|
+
* output replaces this.
|
|
34
|
+
*
|
|
35
|
+
* @module loop/plugins/notebook/openingNotebook
|
|
36
|
+
*/
|
|
37
|
+
import type { INotebookContent } from '@jupyterlab/nbformat';
|
|
38
|
+
/**
|
|
39
|
+
* The frame the opening cell builds, rendered as pandas prints it.
|
|
40
|
+
*
|
|
41
|
+
* Written out rather than computed, and taken from a real run rather than
|
|
42
|
+
* typed: the column alignment is pandas' own, and eyeballing it produces
|
|
43
|
+
* something that looks approximately right and is wrong in every column. A
|
|
44
|
+
* fabricated output in a product demonstration is a lie told to somebody
|
|
45
|
+
* deciding whether to trust the product.
|
|
46
|
+
*/
|
|
47
|
+
/** As pandas prints the frame. Shared with the opening document, which shows the same result. */
|
|
48
|
+
export declare const OPENING_FRAME_REPR = " region quarter revenue\n0 North Q1 182400\n1 North Q2 196750\n2 South Q1 141200\n3 South Q2 18900\n4 West Q1 203100\n5 West Q2 211480";
|
|
49
|
+
/**
|
|
50
|
+
* The code of the opening cell, as nbformat wants it: one string per line.
|
|
51
|
+
*
|
|
52
|
+
* Exported because two things need it and they must not drift. The notebook
|
|
53
|
+
* below shows it as a cell that has already run — execution count `1`, output
|
|
54
|
+
* present — and the workspace runs the same text on the sandbox as soon as one
|
|
55
|
+
* is ready, so that the claim the cell makes is true of the kernel behind it.
|
|
56
|
+
*
|
|
57
|
+
* Without the second half the notebook is a picture of a session rather than
|
|
58
|
+
* one: `sales` is on screen and undefined, and the first thing the agent does
|
|
59
|
+
* with it raises `NameError` in front of the visitor.
|
|
60
|
+
*/
|
|
61
|
+
export declare const OPENING_SOURCE: string[];
|
|
62
|
+
/** The same code as one string, for a sandbox that takes source rather than cells. */
|
|
63
|
+
export declare function openingCode(): string;
|
|
64
|
+
/**
|
|
65
|
+
* The notebook a LOOP workspace opens on.
|
|
66
|
+
*
|
|
67
|
+
* Exported as a factory rather than a constant: `EphemeralNotebook` keeps the
|
|
68
|
+
* object it is first given and edits it in place, so two workspaces sharing one
|
|
69
|
+
* literal would share one document.
|
|
70
|
+
*/
|
|
71
|
+
export declare function openingNotebook(): INotebookContent;
|
|
72
|
+
export default openingNotebook;
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright (c) 2025-2026 Datalayer, Inc.
|
|
3
|
+
* Distributed under the terms of the Modified BSD License.
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* The frame the opening cell builds, rendered as pandas prints it.
|
|
7
|
+
*
|
|
8
|
+
* Written out rather than computed, and taken from a real run rather than
|
|
9
|
+
* typed: the column alignment is pandas' own, and eyeballing it produces
|
|
10
|
+
* something that looks approximately right and is wrong in every column. A
|
|
11
|
+
* fabricated output in a product demonstration is a lie told to somebody
|
|
12
|
+
* deciding whether to trust the product.
|
|
13
|
+
*/
|
|
14
|
+
/** As pandas prints the frame. Shared with the opening document, which shows the same result. */
|
|
15
|
+
export const OPENING_FRAME_REPR = ` region quarter revenue
|
|
16
|
+
0 North Q1 182400
|
|
17
|
+
1 North Q2 196750
|
|
18
|
+
2 South Q1 141200
|
|
19
|
+
3 South Q2 18900
|
|
20
|
+
4 West Q1 203100
|
|
21
|
+
5 West Q2 211480`;
|
|
22
|
+
/**
|
|
23
|
+
* The code of the opening cell, as nbformat wants it: one string per line.
|
|
24
|
+
*
|
|
25
|
+
* Exported because two things need it and they must not drift. The notebook
|
|
26
|
+
* below shows it as a cell that has already run — execution count `1`, output
|
|
27
|
+
* present — and the workspace runs the same text on the sandbox as soon as one
|
|
28
|
+
* is ready, so that the claim the cell makes is true of the kernel behind it.
|
|
29
|
+
*
|
|
30
|
+
* Without the second half the notebook is a picture of a session rather than
|
|
31
|
+
* one: `sales` is on screen and undefined, and the first thing the agent does
|
|
32
|
+
* with it raises `NameError` in front of the visitor.
|
|
33
|
+
*/
|
|
34
|
+
export const OPENING_SOURCE = [
|
|
35
|
+
'import pandas as pd\n',
|
|
36
|
+
'\n',
|
|
37
|
+
'# Quarterly revenue by region.\n',
|
|
38
|
+
'sales = pd.DataFrame(\n',
|
|
39
|
+
' {\n',
|
|
40
|
+
' "region": ["North", "North", "South", "South", "West", "West"],\n',
|
|
41
|
+
' "quarter": ["Q1", "Q2", "Q1", "Q2", "Q1", "Q2"],\n',
|
|
42
|
+
' "revenue": [182400, 196750, 141200, 18900, 203100, 211480],\n',
|
|
43
|
+
' }\n',
|
|
44
|
+
')\n',
|
|
45
|
+
'\n',
|
|
46
|
+
'sales',
|
|
47
|
+
];
|
|
48
|
+
/** The same code as one string, for a sandbox that takes source rather than cells. */
|
|
49
|
+
export function openingCode() {
|
|
50
|
+
return OPENING_SOURCE.join('');
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* The notebook a LOOP workspace opens on.
|
|
54
|
+
*
|
|
55
|
+
* Exported as a factory rather than a constant: `EphemeralNotebook` keeps the
|
|
56
|
+
* object it is first given and edits it in place, so two workspaces sharing one
|
|
57
|
+
* literal would share one document.
|
|
58
|
+
*/
|
|
59
|
+
export function openingNotebook() {
|
|
60
|
+
return {
|
|
61
|
+
cells: [
|
|
62
|
+
{
|
|
63
|
+
cell_type: 'code',
|
|
64
|
+
id: 'opening-analysis',
|
|
65
|
+
metadata: {},
|
|
66
|
+
execution_count: 1,
|
|
67
|
+
source: OPENING_SOURCE,
|
|
68
|
+
outputs: [
|
|
69
|
+
{
|
|
70
|
+
output_type: 'execute_result',
|
|
71
|
+
execution_count: 1,
|
|
72
|
+
data: { 'text/plain': [OPENING_FRAME_REPR] },
|
|
73
|
+
metadata: {},
|
|
74
|
+
},
|
|
75
|
+
],
|
|
76
|
+
},
|
|
77
|
+
],
|
|
78
|
+
metadata: {
|
|
79
|
+
kernelspec: {
|
|
80
|
+
display_name: 'Python 3',
|
|
81
|
+
language: 'python',
|
|
82
|
+
name: 'python3',
|
|
83
|
+
},
|
|
84
|
+
language_info: { name: 'python' },
|
|
85
|
+
},
|
|
86
|
+
nbformat: 4,
|
|
87
|
+
nbformat_minor: 5,
|
|
88
|
+
};
|
|
89
|
+
}
|
|
90
|
+
export default openingNotebook;
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright (c) 2025-2026 Datalayer, Inc.
|
|
3
|
+
* Distributed under the terms of the Modified BSD License.
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* `@datalayer/loop-plugin-notebook-toolbar` — the notebook's own toolbar items.
|
|
7
|
+
*
|
|
8
|
+
* A plugin of its own rather than part of the notebook editor, because the
|
|
9
|
+
* toolbar is where several parties meet. The editor offers a point and draws
|
|
10
|
+
* whatever is contributed to it; this plugin provides the bar itself and puts
|
|
11
|
+
* the notebook's own furniture on it — a light saying what the notebook is
|
|
12
|
+
* running on — and opens a second point for everyone else, which is where the
|
|
13
|
+
* chat's agent actions arrive.
|
|
14
|
+
*
|
|
15
|
+
* Switch this off and the notebook has **no toolbar at all**, not an empty
|
|
16
|
+
* one, and the chat's buttons go with it: they had nowhere to sit. The
|
|
17
|
+
* notebook itself keeps working, which is the point of the split.
|
|
18
|
+
*
|
|
19
|
+
* Lazy, and waiting on the toolbar point rather than on startup. Nothing has to
|
|
20
|
+
* name it: the notebook renders its toolbar, that read fires the point's
|
|
21
|
+
* activation event, and the module arrives. A workspace where nobody opens a
|
|
22
|
+
* notebook never fetches it at all — which is the whole reason its manifest
|
|
23
|
+
* lives here and its code does not.
|
|
24
|
+
*
|
|
25
|
+
* @module loop/plugins/notebook-toolbar
|
|
26
|
+
*/
|
|
27
|
+
import { defineLazyPlugin, onContributionPoint } from '@datalayer/reactor';
|
|
28
|
+
import { LoopNotebookToolbar, LoopNotebookToolbarItem } from '../../core';
|
|
29
|
+
import { NOTEBOOK_TOOLBAR_PLUGIN_NAME } from './names';
|
|
30
|
+
export { NOTEBOOK_TOOLBAR_PLUGIN_NAME };
|
|
31
|
+
export const NotebookToolbarPlugin = defineLazyPlugin({
|
|
32
|
+
name: NOTEBOOK_TOOLBAR_PLUGIN_NAME,
|
|
33
|
+
displayName: 'Notebook toolbar',
|
|
34
|
+
description: 'Shows what the notebook is running on, on its toolbar.',
|
|
35
|
+
octicon: 'circle',
|
|
36
|
+
emoji: '\u{1F7E2}',
|
|
37
|
+
activationEvents: [onContributionPoint(LoopNotebookToolbar)],
|
|
38
|
+
// The bar is what accepts buttons, so the plugin that owns the bar is the
|
|
39
|
+
// one that opens the point. Declared here rather than inside the module, so
|
|
40
|
+
// the graph shows the point — and the chat's contributions to it — before
|
|
41
|
+
// this plugin's code has been fetched.
|
|
42
|
+
contributionPoints: [LoopNotebookToolbarItem],
|
|
43
|
+
load: () => import('./plugin'),
|
|
44
|
+
});
|
|
45
|
+
export default NotebookToolbarPlugin;
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { ToolbarItem } from '@datalayer/primer-addons';
|
|
2
|
+
/**
|
|
3
|
+
* The standard notebook toolbar items.
|
|
4
|
+
*
|
|
5
|
+
* Pushed to the trailing edge by a spacer, because the indicator reports
|
|
6
|
+
* rather than acts: the buttons are what a person reaches for, and a status
|
|
7
|
+
* light sitting among them reads like one more thing to press.
|
|
8
|
+
*/
|
|
9
|
+
export declare function notebookToolbarItems(notebookId: string): ToolbarItem[];
|
|
10
|
+
export default notebookToolbarItems;
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { KernelIndicator, NOTEBOOK_TOOLBAR_ITEM_ORDERS, useNotebookStore, } from '@datalayer/jupyter-react';
|
|
3
|
+
/** Trailing edge of the toolbar: past the last item the notebook contributes. */
|
|
4
|
+
const KERNEL_INDICATOR_ORDER = NOTEBOOK_TOOLBAR_ITEM_ORDERS.cellType + 100;
|
|
5
|
+
/**
|
|
6
|
+
* The kernel indicator for one notebook.
|
|
7
|
+
*
|
|
8
|
+
* A component rather than a value captured when the item was built, because a
|
|
9
|
+
* notebook gets its kernel *after* its toolbar first renders — the adapter is
|
|
10
|
+
* registered, then the kernel is attached, then it connects. Reading the store
|
|
11
|
+
* from inside the render means each of those steps reaches the indicator; a
|
|
12
|
+
* kernel captured at build time would stay `null` and the light would sit at
|
|
13
|
+
* an unknown state forever.
|
|
14
|
+
*/
|
|
15
|
+
function NotebookKernelIndicator({ notebookId, }) {
|
|
16
|
+
const notebookStore = useNotebookStore();
|
|
17
|
+
const kernel = notebookStore.selectNotebookAdapter(notebookId)?.kernel ?? null;
|
|
18
|
+
return (_jsx(KernelIndicator, { kernel: kernel,
|
|
19
|
+
// Borderless: the toolbar already draws the frame around it.
|
|
20
|
+
bordered: false }));
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* The standard notebook toolbar items.
|
|
24
|
+
*
|
|
25
|
+
* Pushed to the trailing edge by a spacer, because the indicator reports
|
|
26
|
+
* rather than acts: the buttons are what a person reaches for, and a status
|
|
27
|
+
* light sitting among them reads like one more thing to press.
|
|
28
|
+
*/
|
|
29
|
+
export function notebookToolbarItems(notebookId) {
|
|
30
|
+
return [
|
|
31
|
+
{
|
|
32
|
+
key: 'loop-kernel-indicator-spacer',
|
|
33
|
+
type: 'spacer',
|
|
34
|
+
order: KERNEL_INDICATOR_ORDER - 1,
|
|
35
|
+
},
|
|
36
|
+
{
|
|
37
|
+
key: 'loop-kernel-indicator',
|
|
38
|
+
type: 'custom',
|
|
39
|
+
order: KERNEL_INDICATOR_ORDER,
|
|
40
|
+
group: 'kernel',
|
|
41
|
+
render: () => _jsx(NotebookKernelIndicator, { notebookId: notebookId }),
|
|
42
|
+
},
|
|
43
|
+
];
|
|
44
|
+
}
|
|
45
|
+
export default notebookToolbarItems;
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The plugin's name, on its own.
|
|
3
|
+
*
|
|
4
|
+
* Imported by both the manifest and the module it loads, and by hosts that
|
|
5
|
+
* want to name the plugin without pulling either in.
|
|
6
|
+
*
|
|
7
|
+
* @module loop/plugins/notebook-toolbar/names
|
|
8
|
+
*/
|
|
9
|
+
export declare const NOTEBOOK_TOOLBAR_PLUGIN_NAME = "@datalayer/loop-plugin-notebook-toolbar";
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright (c) 2025-2026 Datalayer, Inc.
|
|
3
|
+
* Distributed under the terms of the Modified BSD License.
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* The plugin's name, on its own.
|
|
7
|
+
*
|
|
8
|
+
* Imported by both the manifest and the module it loads, and by hosts that
|
|
9
|
+
* want to name the plugin without pulling either in.
|
|
10
|
+
*
|
|
11
|
+
* @module loop/plugins/notebook-toolbar/names
|
|
12
|
+
*/
|
|
13
|
+
export const NOTEBOOK_TOOLBAR_PLUGIN_NAME = '@datalayer/loop-plugin-notebook-toolbar';
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright (c) 2025-2026 Datalayer, Inc.
|
|
3
|
+
* Distributed under the terms of the Modified BSD License.
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* The notebook toolbar plugin's module — everything behind its manifest.
|
|
7
|
+
*
|
|
8
|
+
* Separate from the entry point so that `@datalayer/jupyter-react`, which the
|
|
9
|
+
* kernel indicator reaches for, is fetched when a notebook toolbar is first
|
|
10
|
+
* read rather than with the shell.
|
|
11
|
+
*
|
|
12
|
+
* @module loop/plugins/notebook-toolbar/plugin
|
|
13
|
+
*/
|
|
14
|
+
import { contribution, definePlugin } from '@datalayer/reactor';
|
|
15
|
+
import { LoopNotebookToolbar } from '../../core';
|
|
16
|
+
import { notebookToolbarItems } from './items';
|
|
17
|
+
import { NOTEBOOK_TOOLBAR_PLUGIN_NAME } from './names';
|
|
18
|
+
export const NotebookToolbarPlugin = definePlugin({
|
|
19
|
+
name: NOTEBOOK_TOOLBAR_PLUGIN_NAME,
|
|
20
|
+
contributes: [
|
|
21
|
+
contribution(LoopNotebookToolbar, { items: ({ editorId }) => notebookToolbarItems(editorId) }, { id: 'toolbar', order: 100 }),
|
|
22
|
+
],
|
|
23
|
+
});
|
|
24
|
+
export default NotebookToolbarPlugin;
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export declare const NOTEBOOK_VIEW_PLUGIN_NAME = "@datalayer/loop-plugin-notebook-view";
|
|
2
|
+
export declare const NotebookViewPlugin: import("@datalayer/reactor").ReactorPlugin<Record<string, never>, unknown, {
|
|
3
|
+
components: {
|
|
4
|
+
id: string;
|
|
5
|
+
slot: "loop.promptAction";
|
|
6
|
+
order: number;
|
|
7
|
+
Component: () => import("react").JSX.Element | null;
|
|
8
|
+
}[];
|
|
9
|
+
}>;
|
|
10
|
+
export default NotebookViewPlugin;
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright (c) 2025-2026 Datalayer, Inc.
|
|
3
|
+
* Distributed under the terms of the Modified BSD License.
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* `@datalayer/loop-plugin-notebook-view` — the notebook, one click away.
|
|
7
|
+
*
|
|
8
|
+
* The footer icon that opens the notebook beside the conversation. It shows
|
|
9
|
+
* only while a notebook is actually contributed, and requires the
|
|
10
|
+
* input-prompt plugin, whose footer the icon sits in.
|
|
11
|
+
*
|
|
12
|
+
* @module loop/plugins/notebook-view
|
|
13
|
+
*/
|
|
14
|
+
// The same icon the notebook's own editor view declares, so the footer
|
|
15
|
+
// button and the selector entry read as one thing.
|
|
16
|
+
import { RowsIcon } from '@primer/octicons-react';
|
|
17
|
+
import { defineViewPlugin } from '../view-switch';
|
|
18
|
+
export const NOTEBOOK_VIEW_PLUGIN_NAME = '@datalayer/loop-plugin-notebook-view';
|
|
19
|
+
export const NotebookViewPlugin = defineViewPlugin({
|
|
20
|
+
key: 'notebook',
|
|
21
|
+
viewId: 'notebook',
|
|
22
|
+
displayName: 'Notebook view',
|
|
23
|
+
description: 'The notebook beside the chat, from the composer footer.',
|
|
24
|
+
icon: RowsIcon,
|
|
25
|
+
tooltip: 'Show the notebook',
|
|
26
|
+
octicon: 'rows',
|
|
27
|
+
emoji: '\u{1F4D3}',
|
|
28
|
+
order: 11,
|
|
29
|
+
});
|
|
30
|
+
export default NotebookViewPlugin;
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The turn panel: the current turn, hung on the composer.
|
|
3
|
+
*
|
|
4
|
+
* On the page layout the transcript is a side panel that starts closed, so
|
|
5
|
+
* without this a person who asks something sees cells appear and no word from
|
|
6
|
+
* whoever is writing them. This shows the turn where the eye already is: the
|
|
7
|
+
* message just sent, then the reply as it streams — and, while a tool runs,
|
|
8
|
+
* what the agent is doing in the page ("Analyst is adding a cell…") — in the
|
|
9
|
+
* prompt's own card. Under it, by configuration, the transcript's turn footer,
|
|
10
|
+
* only its copy and dismiss actions, or nothing. A new message replaces it
|
|
11
|
+
* all: the turn feed is the last turn only, and that is the panel's contract.
|
|
12
|
+
*
|
|
13
|
+
* The reply is rendered as the transcript renders it — the same markdown
|
|
14
|
+
* pipeline, a size down — so a table or a list reads as one here too. What
|
|
15
|
+
* the panel is not is a second transcript: one turn, compact, and the whole
|
|
16
|
+
* conversation one click away.
|
|
17
|
+
*
|
|
18
|
+
* @module loop/plugins/page-layout/TurnPanel
|
|
19
|
+
*/
|
|
20
|
+
import type { JSX } from 'react';
|
|
21
|
+
export type TurnPanelFooter = 'full' | 'actions' | 'none';
|
|
22
|
+
export declare function TurnPanel({ footer, }: {
|
|
23
|
+
footer?: TurnPanelFooter;
|
|
24
|
+
}): JSX.Element | null;
|
|
25
|
+
export default TurnPanel;
|
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { useCallback, useEffect, useRef, useState } from 'react';
|
|
3
|
+
import { Box, IconButton, Text } from '@primer/react';
|
|
4
|
+
import { CheckIcon, CommentDiscussionIcon, CopyIcon, XIcon, } from '@primer/octicons-react';
|
|
5
|
+
import { useContributions, useSignalValue } from '@datalayer/reactor/react';
|
|
6
|
+
import { signal } from '@datalayer/reactor';
|
|
7
|
+
import { TurnFooter } from '../../../chat/messages/TurnFooter';
|
|
8
|
+
import { LoopChatTurn } from '../../core';
|
|
9
|
+
import { Streamdown } from 'streamdown';
|
|
10
|
+
import { streamdownMarkdownStyles } from '../../../chat/styles/streamdownStyles';
|
|
11
|
+
import { normalizeAssistantMarkdown } from '../../../chat/messages/assistantMarkdown';
|
|
12
|
+
import { openPagePanel, pageLayoutSheet, } from '@datalayer/primer-addons/lib/reactor';
|
|
13
|
+
/* A signal to read when no chat contributed a turn: the hook needs one. */
|
|
14
|
+
const NO_TURN = signal({ id: 0, status: 'idle' });
|
|
15
|
+
/** How much of the reply the panel shows before it scrolls. */
|
|
16
|
+
const MAX_HEIGHT = 168;
|
|
17
|
+
/** The three dots, while the agent has said nothing yet. */
|
|
18
|
+
function Thinking() {
|
|
19
|
+
return (_jsxs(Box, { as: "span", "aria-label": "The agent is thinking", sx: {
|
|
20
|
+
display: 'inline-flex',
|
|
21
|
+
gap: '4px',
|
|
22
|
+
alignItems: 'center',
|
|
23
|
+
height: '1.5em',
|
|
24
|
+
'& > i': {
|
|
25
|
+
width: 5,
|
|
26
|
+
height: 5,
|
|
27
|
+
borderRadius: '50%',
|
|
28
|
+
bg: 'fg.muted',
|
|
29
|
+
animation: 'loop-turn-dot 1.2s ease-in-out infinite',
|
|
30
|
+
},
|
|
31
|
+
'& > i:nth-of-type(2)': { animationDelay: '0.15s' },
|
|
32
|
+
'& > i:nth-of-type(3)': { animationDelay: '0.3s' },
|
|
33
|
+
'@keyframes loop-turn-dot': {
|
|
34
|
+
'0%, 80%, 100%': { opacity: 0.25 },
|
|
35
|
+
'40%': { opacity: 1 },
|
|
36
|
+
},
|
|
37
|
+
}, children: [_jsx("i", {}), _jsx("i", {}), _jsx("i", {})] }));
|
|
38
|
+
}
|
|
39
|
+
export function TurnPanel({ footer = 'full', }) {
|
|
40
|
+
const entries = useContributions(LoopChatTurn);
|
|
41
|
+
const turn = useSignalValue(entries[0]?.value.turn ?? NO_TURN);
|
|
42
|
+
const sheet = useSignalValue(pageLayoutSheet);
|
|
43
|
+
const replyRef = useRef(null);
|
|
44
|
+
/*
|
|
45
|
+
* Dismissed, per turn: the panel goes away until the next message — the
|
|
46
|
+
* transcript keeps the turn, one click away. Keyed on the turn's id so a
|
|
47
|
+
* new turn shows again unasked.
|
|
48
|
+
*/
|
|
49
|
+
const [dismissedId, setDismissedId] = useState(null);
|
|
50
|
+
const [copied, setCopied] = useState(false);
|
|
51
|
+
// Follow the reply as it grows: the newest words are the ones wanted.
|
|
52
|
+
useEffect(() => {
|
|
53
|
+
const el = replyRef.current;
|
|
54
|
+
if (el) {
|
|
55
|
+
el.scrollTop = el.scrollHeight;
|
|
56
|
+
}
|
|
57
|
+
}, [turn.assistant]);
|
|
58
|
+
useEffect(() => {
|
|
59
|
+
if (!copied) {
|
|
60
|
+
return;
|
|
61
|
+
}
|
|
62
|
+
const timer = window.setTimeout(() => setCopied(false), 1400);
|
|
63
|
+
return () => window.clearTimeout(timer);
|
|
64
|
+
}, [copied]);
|
|
65
|
+
const copyTurn = useCallback(async () => {
|
|
66
|
+
const text = [turn.user, turn.assistant].filter(Boolean).join('\n\n');
|
|
67
|
+
await navigator.clipboard?.writeText(text);
|
|
68
|
+
setCopied(true);
|
|
69
|
+
}, [turn.user, turn.assistant]);
|
|
70
|
+
// With the transcript on the sheet, the turn is already on the page.
|
|
71
|
+
if (sheet === 'panel' ||
|
|
72
|
+
turn.status === 'idle' ||
|
|
73
|
+
!turn.user ||
|
|
74
|
+
dismissedId === turn.id) {
|
|
75
|
+
return null;
|
|
76
|
+
}
|
|
77
|
+
const working = turn.status === 'thinking' || turn.status === 'streaming';
|
|
78
|
+
return (_jsxs(Box, { "data-turn-panel": "", sx: {
|
|
79
|
+
borderTop: '1px solid',
|
|
80
|
+
borderColor: 'border.muted',
|
|
81
|
+
px: 3,
|
|
82
|
+
pt: 2,
|
|
83
|
+
pb: footer === 'none' ? 2 : 1,
|
|
84
|
+
display: 'flex',
|
|
85
|
+
flexDirection: 'column',
|
|
86
|
+
gap: 2,
|
|
87
|
+
bg: 'canvas.default',
|
|
88
|
+
}, children: [_jsx(Box, { sx: { display: 'flex', justifyContent: 'flex-end' }, children: _jsx(Text, { sx: {
|
|
89
|
+
fontSize: 0,
|
|
90
|
+
lineHeight: 1.45,
|
|
91
|
+
px: 2,
|
|
92
|
+
py: 1,
|
|
93
|
+
borderRadius: '10px',
|
|
94
|
+
bg: 'accent.subtle',
|
|
95
|
+
color: 'fg.default',
|
|
96
|
+
maxWidth: '85%',
|
|
97
|
+
overflow: 'hidden',
|
|
98
|
+
display: '-webkit-box',
|
|
99
|
+
WebkitLineClamp: 2,
|
|
100
|
+
WebkitBoxOrient: 'vertical',
|
|
101
|
+
}, children: turn.user }) }), _jsxs(Box, { sx: { display: 'flex', gap: 2, alignItems: 'flex-start' }, children: [_jsx(Box, { ref: replyRef, sx: {
|
|
102
|
+
flex: '1 1 auto',
|
|
103
|
+
minWidth: 0,
|
|
104
|
+
maxHeight: MAX_HEIGHT,
|
|
105
|
+
overflowY: 'auto',
|
|
106
|
+
fontSize: 0,
|
|
107
|
+
lineHeight: 1.5,
|
|
108
|
+
color: turn.assistant ? 'fg.default' : 'fg.muted',
|
|
109
|
+
// Rendered markdown brings its own flow; the plain fallbacks
|
|
110
|
+
// below keep their line breaks.
|
|
111
|
+
whiteSpace: turn.assistant ? 'normal' : 'pre-wrap',
|
|
112
|
+
overflowWrap: 'anywhere',
|
|
113
|
+
}, children: turn.assistant ? (_jsx(Box, { sx: { ...streamdownMarkdownStyles, fontSize: 0 }, children: _jsx(Streamdown, { children: normalizeAssistantMarkdown(turn.assistant) }) })) : turn.activity ? (_jsx(Text, { sx: { color: 'fg.muted', fontStyle: 'italic' }, children: turn.activity })) : working ? (_jsx(Thinking, {})) : turn.status === 'error' ? ('The agent could not answer.') : ('Done — the result is in the page.') }), _jsx(IconButton, { icon: CommentDiscussionIcon, size: "small", variant: "invisible", "aria-label": "Open the conversation", onClick: openPagePanel, sx: { color: 'fg.muted', flexShrink: 0 } })] }), turn.assistant && turn.activity ? (_jsx(Text, { sx: { fontSize: 0, color: 'fg.muted', fontStyle: 'italic' }, children: turn.activity })) : null, footer === 'full' ? (
|
|
114
|
+
// The same footer the transcript draws under a turn: the window's
|
|
115
|
+
// fill, this turn's tokens in and out, copy, and dismiss.
|
|
116
|
+
_jsx(TurnFooter, { usage: turn.usage, live: working, latest: true, padding: 0, onCopy: copyTurn, onRemove: () => setDismissedId(turn.id) })) : footer === 'actions' ? (
|
|
117
|
+
// The actions without the counters, for a host whose readers are not
|
|
118
|
+
// asking about tokens.
|
|
119
|
+
_jsxs(Box, { sx: {
|
|
120
|
+
display: 'flex',
|
|
121
|
+
justifyContent: 'flex-end',
|
|
122
|
+
gap: 1,
|
|
123
|
+
mt: -1,
|
|
124
|
+
}, children: [_jsx(IconButton, { icon: copied ? CheckIcon : CopyIcon, size: "small", variant: "invisible", "aria-label": copied ? 'Copied' : 'Copy this turn', onClick: () => void copyTurn(), sx: { color: 'fg.muted' } }), _jsx(IconButton, { icon: XIcon, size: "small", variant: "invisible", "aria-label": "Dismiss until the next turn", onClick: () => setDismissedId(turn.id), sx: { color: 'fg.muted' } })] })) : null] }));
|
|
125
|
+
}
|
|
126
|
+
export default TurnPanel;
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
import { type PageSize } from '@datalayer/primer-addons/lib/reactor';
|
|
2
|
+
import type { ChatViewMode } from '../../../types/chat';
|
|
3
|
+
import { type TurnPanelFooter } from './TurnPanel';
|
|
4
|
+
export { pageLayoutPanelOpen, pageLayoutSheet, openPagePanel as openConversationPanel, } from '@datalayer/primer-addons/lib/reactor';
|
|
5
|
+
export type { TurnPanelFooter } from './TurnPanel';
|
|
6
|
+
export type { PageSize, PageSizeFormat, } from '@datalayer/primer-addons/lib/reactor';
|
|
7
|
+
export declare const LOOP_PAGE_LAYOUT_PLUGIN_NAME = "@datalayer/loop-plugin-page-layout";
|
|
8
|
+
/** What a host may set on the page layout. */
|
|
9
|
+
export type LoopPageLayoutConfig = {
|
|
10
|
+
/**
|
|
11
|
+
* Where the turn panel hangs on the composer.
|
|
12
|
+
*
|
|
13
|
+
* `below` (the default): under the composer, where a reply reads as the
|
|
14
|
+
* answer to what was just typed above it. `above`: over it, for a host
|
|
15
|
+
* whose composer sits at the bottom of the page and wants the reply to
|
|
16
|
+
* rise. `none`: no panel — the conversation is the side panel only.
|
|
17
|
+
*/
|
|
18
|
+
turnPanel: 'below' | 'above' | 'none';
|
|
19
|
+
/**
|
|
20
|
+
* How the composer stands over the page.
|
|
21
|
+
*
|
|
22
|
+
* `docked` (the default): in a band above the canvas, at the sheet's own
|
|
23
|
+
* width, so the prompt and the page read as one column. `floating`: a
|
|
24
|
+
* draggable card anchored to the top of the canvas, hovering over a strip
|
|
25
|
+
* kept clear for it — the document application's title bar, movable.
|
|
26
|
+
*/
|
|
27
|
+
prompt: 'docked' | 'floating';
|
|
28
|
+
/**
|
|
29
|
+
* Which edge of the page a floating composer starts at: `top` (the
|
|
30
|
+
* default), where a document's title bar would be, or `bottom`, where a
|
|
31
|
+
* chat's composer waits. Either way it is dragged from there. Only read
|
|
32
|
+
* with a `floating` prompt.
|
|
33
|
+
*/
|
|
34
|
+
promptAnchor?: 'top' | 'bottom';
|
|
35
|
+
/**
|
|
36
|
+
* The sheet's size: free (the default) at the layout's reading width, or
|
|
37
|
+
* a paper — `{ format: 'letter' }`, `{ format: 'a4' }` — whose width the
|
|
38
|
+
* sheet takes and whose height it is at least, with a free `width` or
|
|
39
|
+
* `height` over either. Omitted: free.
|
|
40
|
+
*/
|
|
41
|
+
pageSize?: PageSize;
|
|
42
|
+
/**
|
|
43
|
+
* What the turn panel draws under the reply.
|
|
44
|
+
*
|
|
45
|
+
* `full` (the default): the transcript's turn footer — the window's fill,
|
|
46
|
+
* this turn's tokens, copy, dismiss. `actions`: copy and dismiss only, for
|
|
47
|
+
* a host whose readers are not asking about tokens. `none`: nothing.
|
|
48
|
+
*/
|
|
49
|
+
turnPanelFooter: TurnPanelFooter;
|
|
50
|
+
};
|
|
51
|
+
/**
|
|
52
|
+
* How the page layout shows the chat, when the composer is the floating
|
|
53
|
+
* card: the card itself over the page (`floating-draggable`, where it
|
|
54
|
+
* starts), or the conversation panel with the composer standing in it —
|
|
55
|
+
* beside the page (`sidebar`), over its right edge at full height
|
|
56
|
+
* (`floating`), or as a window in its corner (`floating-small`). The four
|
|
57
|
+
* modes of the chat header's toggle, which the card carries in its own
|
|
58
|
+
* footer. One signal for the workspace, as `pageLayoutPanelOpen` is: the
|
|
59
|
+
* mode is the person's, not a build's.
|
|
60
|
+
*/
|
|
61
|
+
export declare const pageLayoutChatMode: import("@datalayer/reactor").Signal<ChatViewMode>;
|
|
62
|
+
/** Where a mode puts the composer (the band) and the conversation (the panel). */
|
|
63
|
+
export type PageLayoutChatPlacement = {
|
|
64
|
+
bandMode: 'floating' | 'panel';
|
|
65
|
+
panelMode: 'docked' | 'overlay' | 'popup';
|
|
66
|
+
};
|
|
67
|
+
export declare function pageLayoutForChatMode(mode: ChatViewMode): PageLayoutChatPlacement;
|
|
68
|
+
/** Picks a mode: the layout follows, and so does the composer's stance. */
|
|
69
|
+
export declare function setPageLayoutChatMode(mode: ChatViewMode): void;
|
|
70
|
+
export declare const LoopPageLayoutPlugin: import("@datalayer/reactor").ReactorPlugin<LoopPageLayoutConfig, unknown, unknown>;
|
|
71
|
+
export default LoopPageLayoutPlugin;
|