@datalayer/agent-runtimes 1.0.29 → 1.3.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/AgentDocument.js +5 -22
- package/lib/AgentNode.d.ts +1 -1
- package/lib/AgentNode.js +193 -23
- package/lib/AgentNotebook.js +1 -1
- package/lib/App.d.ts +1 -1
- package/lib/AppExamples2.d.ts +1 -1
- package/lib/agent-node/AgentNodeGallery.d.ts +14 -1
- package/lib/agent-node/AgentNodeGallery.js +19 -15
- package/lib/agent-node/themeStore.js +7 -6
- package/lib/agents/AgentDetails.d.ts +8 -2
- package/lib/agents/AgentDetails.js +41 -11
- package/lib/agents/AgentRuntimeChat.d.ts +3 -3
- package/lib/agents/AgentRuntimeChat.js +15 -15
- package/lib/api/agents.d.ts +10 -10
- package/lib/api/agents.js +15 -15
- package/lib/api/checkpoints.d.ts +40 -0
- package/lib/api/checkpoints.js +75 -0
- package/lib/api/index.d.ts +1 -0
- package/lib/api/index.js +2 -1
- package/lib/api/notifications.d.ts +21 -6
- package/lib/api/notifications.js +32 -14
- package/lib/api/runtimes/environments.d.ts +385 -4
- package/lib/api/runtimes/environments.js +610 -9
- package/lib/api/runtimes/runtimes.d.ts +19 -19
- package/lib/api/runtimes/runtimes.js +47 -46
- package/lib/api/spacer/notebooks.js +1 -1
- package/lib/chat/Chat.d.ts +16 -4
- package/lib/chat/Chat.js +18 -5
- package/lib/chat/ChatFloating.d.ts +13 -2
- package/lib/chat/ChatFloating.js +192 -117
- package/lib/chat/ChatInline.d.ts +15 -0
- package/lib/chat/ChatInline.js +0 -18
- package/lib/chat/ChatPopupStandalone.d.ts +1 -1
- package/lib/chat/ChatSidebar.d.ts +14 -2
- package/lib/chat/ChatSidebar.js +1 -1
- package/lib/chat/ChatStandalone.d.ts +1 -1
- package/lib/chat/EphemeralSurfaceControl.d.ts +30 -0
- package/lib/chat/EphemeralSurfaceControl.js +55 -0
- package/lib/chat/base/ChatAvailability.d.ts +34 -0
- package/lib/chat/base/ChatAvailability.js +18 -0
- package/lib/chat/base/ChatBase.d.ts +2 -1
- package/lib/chat/base/ChatBase.js +657 -28
- package/lib/chat/display/EmptyState.d.ts +15 -1
- package/lib/chat/display/EmptyState.js +78 -12
- package/lib/chat/display/FloatingBrandButton.d.ts +1 -1
- package/lib/chat/display/PoweredByTag.d.ts +1 -1
- package/lib/chat/display/groupSuggestions.d.ts +21 -0
- package/lib/chat/display/groupSuggestions.js +18 -0
- package/lib/chat/document/EphemeralDocument.d.ts +70 -6
- package/lib/chat/document/EphemeralDocument.js +154 -52
- package/lib/chat/header/ChatHeader.d.ts +1 -1
- package/lib/chat/header/ChatHeaderBase.d.ts +10 -1
- package/lib/chat/header/ChatHeaderBase.js +67 -96
- package/lib/chat/index.d.ts +4 -1
- package/lib/chat/index.js +8 -1
- package/lib/chat/indicators/McpStatusIndicator.d.ts +1 -1
- package/lib/chat/indicators/SandboxStatusIndicator.d.ts +1 -1
- package/lib/chat/indicators/SandboxStatusIndicator.js +1 -1
- package/lib/chat/indicators/SkillsStatusIndicator.d.ts +1 -1
- package/lib/chat/messages/ChatMessageList.d.ts +22 -1
- package/lib/chat/messages/ChatMessageList.js +370 -166
- package/lib/chat/messages/ChatMessages.d.ts +1 -1
- package/lib/chat/messages/NotebookToolSurfaces.d.ts +68 -0
- package/lib/chat/messages/NotebookToolSurfaces.js +302 -0
- package/lib/chat/messages/TurnFooter.d.ts +42 -0
- package/lib/chat/messages/TurnFooter.js +75 -0
- package/lib/chat/messages/assistantMarkdown.d.ts +22 -0
- package/lib/chat/messages/assistantMarkdown.js +56 -0
- package/lib/chat/notebook/EphemeralNotebook.d.ts +67 -6
- package/lib/chat/notebook/EphemeralNotebook.js +194 -61
- package/lib/chat/parts/DynamicToolPart.d.ts +1 -1
- package/lib/chat/parts/MessagePart.d.ts +1 -1
- package/lib/chat/parts/ReasoningPart.d.ts +8 -1
- package/lib/chat/parts/TextPart.d.ts +1 -1
- package/lib/chat/parts/ToolPart.d.ts +8 -1
- package/lib/chat/prompt/FloatingCard.d.ts +26 -0
- package/lib/chat/prompt/FloatingCard.js +80 -0
- package/lib/chat/prompt/InputPrompt.d.ts +206 -53
- package/lib/chat/prompt/InputPrompt.js +161 -80
- package/lib/chat/prompt/InputPromptBase.d.ts +112 -0
- package/lib/chat/prompt/InputPromptBase.js +225 -0
- package/lib/chat/prompt/InputPromptLexical.d.ts +18 -1
- package/lib/chat/prompt/InputPromptLexical.js +227 -30
- package/lib/chat/prompt/InputPromptText.d.ts +10 -2
- package/lib/chat/prompt/InputPromptText.js +35 -3
- package/lib/chat/prompt/footer/BelowPromptFooter.d.ts +25 -0
- package/lib/chat/prompt/footer/BelowPromptFooter.js +12 -0
- package/lib/chat/prompt/footer/InPromptFooter.d.ts +35 -0
- package/lib/chat/prompt/footer/InPromptFooter.js +16 -0
- package/lib/chat/prompt/footer/index.d.ts +7 -0
- package/lib/chat/prompt/footer/index.js +11 -0
- package/lib/chat/prompt/header/BelowPromptHeader.d.ts +23 -0
- package/lib/chat/prompt/header/BelowPromptHeader.js +12 -0
- package/lib/chat/prompt/header/InPromptHeader.d.ts +31 -0
- package/lib/chat/prompt/header/InPromptHeader.js +14 -0
- package/lib/chat/prompt/header/index.d.ts +7 -0
- package/lib/chat/prompt/header/index.js +11 -0
- package/lib/chat/prompt/index.d.ts +8 -4
- package/lib/chat/prompt/index.js +15 -3
- package/lib/chat/prompt/menus/AgentsMenu.d.ts +14 -0
- package/lib/chat/prompt/menus/AgentsMenu.js +42 -0
- package/lib/chat/prompt/menus/InlineAgentsMenu.d.ts +22 -0
- package/lib/chat/prompt/menus/InlineAgentsMenu.js +24 -0
- package/lib/chat/prompt/menus/ModelSelector.d.ts +7 -0
- package/lib/chat/prompt/menus/ModelSelector.js +27 -0
- package/lib/chat/prompt/menus/SkillsMenu.d.ts +10 -0
- package/lib/chat/prompt/menus/SkillsMenu.js +75 -0
- package/lib/chat/prompt/menus/SuggestionsMenu.d.ts +13 -0
- package/lib/chat/prompt/menus/SuggestionsMenu.js +31 -0
- package/lib/chat/prompt/menus/ToolsMenu.d.ts +13 -0
- package/lib/chat/prompt/menus/ToolsMenu.js +103 -0
- package/lib/chat/prompt/menus/index.d.ts +15 -0
- package/lib/chat/prompt/menus/index.js +19 -0
- package/lib/chat/prompt/plugins/AgentMentionPlugin.d.ts +54 -0
- package/lib/chat/prompt/plugins/AgentMentionPlugin.js +370 -0
- package/lib/chat/prompt/plugins/CommandPlugin.d.ts +52 -0
- package/lib/chat/prompt/plugins/CommandPlugin.js +359 -0
- package/lib/chat/prompt/plugins/MentionChip.d.ts +15 -0
- package/lib/chat/prompt/plugins/MentionChip.js +24 -0
- package/lib/chat/prompt/plugins/MentionNode.d.ts +66 -0
- package/lib/chat/prompt/plugins/MentionNode.js +77 -0
- package/lib/chat/prompt/promptHistory.d.ts +52 -0
- package/lib/chat/prompt/promptHistory.js +123 -0
- package/lib/chat/prompt/stack.d.ts +81 -0
- package/lib/chat/prompt/stack.js +41 -0
- package/lib/chat/prompt/useTypingPlaceholder.d.ts +52 -0
- package/lib/chat/prompt/useTypingPlaceholder.js +180 -0
- package/lib/chat/tools/A2AAgentDialog.d.ts +60 -0
- package/lib/chat/tools/A2AAgentDialog.js +265 -0
- package/lib/chat/tools/ToolApprovalBanner.d.ts +1 -1
- package/lib/chat/tools/ToolApprovalDialog.d.ts +1 -1
- package/lib/chat/tools/ToolCallDisplay.d.ts +8 -1
- package/lib/chat/tools/index.d.ts +1 -0
- package/lib/chat/tools/index.js +1 -0
- package/lib/chat/usage/ContextPie.d.ts +17 -0
- package/lib/chat/usage/{TokenUsageBar.js → ContextPie.js} +20 -14
- package/lib/chat/useViewportDrag.d.ts +11 -0
- package/lib/chat/useViewportDrag.js +61 -0
- package/lib/chat/viewModes.d.ts +51 -0
- package/lib/chat/viewModes.js +57 -0
- package/lib/client/AgentRuntimesClient.d.ts +10 -9
- package/lib/client/AgentRuntimesClient.js +1 -1
- package/lib/client/AgentRuntimesClientContext.d.ts +1 -0
- package/lib/client/AgentsMixin.d.ts +12 -12
- package/lib/client/AgentsMixin.js +31 -31
- package/lib/client/IAgentRuntimesClient.d.ts +10 -10
- package/lib/client/SdkAgentRuntimesClient.d.ts +10 -10
- package/lib/client/SdkAgentRuntimesClient.js +10 -10
- package/lib/client/mixins/RuntimesMixin.d.ts +37 -10
- package/lib/client/mixins/RuntimesMixin.js +54 -21
- package/lib/components/a2ui/A2uiSurfaceComposed.d.ts +1 -1
- package/lib/components/agents/AgentSummary.d.ts +13 -0
- package/lib/components/agents/AgentSummary.js +21 -4
- package/lib/components/cards/NotificationEventCard.d.ts +1 -1
- package/lib/components/cards/OutputCard.d.ts +1 -1
- package/lib/components/cards/ToolApprovalCard.d.ts +2 -2
- package/lib/components/cards/ToolApprovalCard.js +1 -0
- package/lib/components/code-sandboxes/CodeSandboxCellVariables.d.ts +1 -0
- package/lib/components/code-sandboxes/CodeSandboxCellVariables.js +0 -4
- package/lib/components/code-sandboxes/CodeSandboxCellVariablesDialog.d.ts +1 -0
- package/lib/components/code-sandboxes/CodeSandboxCellVariablesDialog.js +0 -4
- package/lib/components/code-sandboxes/CodeSandboxEnvironmentSelect.d.ts +35 -0
- package/lib/components/code-sandboxes/CodeSandboxEnvironmentSelect.js +27 -29
- package/lib/components/code-sandboxes/CodeSandboxLauncher.d.ts +1 -0
- package/lib/components/code-sandboxes/CodeSandboxLauncher.js +42 -19
- package/lib/components/code-sandboxes/CodeSandboxNames.js +7 -6
- package/lib/components/code-sandboxes/CodeSandboxPicker.js +89 -42
- package/lib/components/code-sandboxes/CodeSandboxPickerCell.d.ts +1 -0
- package/lib/components/code-sandboxes/CodeSandboxPickerCell.js +0 -4
- package/lib/components/code-sandboxes/CodeSandboxReservationControl.d.ts +1 -0
- package/lib/components/code-sandboxes/CodeSandboxReservationControl.js +5 -7
- package/lib/components/code-sandboxes/CodeSandboxTransfer.d.ts +5 -0
- package/lib/components/code-sandboxes/CodeSandboxUtils.d.ts +13 -1
- package/lib/components/code-sandboxes/CodeSandboxUtils.js +10 -4
- package/lib/components/code-sandboxes/NewCodeSandboxControls.d.ts +21 -15
- package/lib/components/code-sandboxes/NewCodeSandboxControls.js +28 -51
- package/lib/components/code-sandboxes/codeSandboxAllowance.d.ts +33 -0
- package/lib/components/code-sandboxes/codeSandboxAllowance.js +37 -0
- package/lib/components/code-sandboxes/codeSandboxEnvironments.d.ts +86 -0
- package/lib/components/code-sandboxes/codeSandboxEnvironments.js +147 -0
- package/lib/components/code-sandboxes/codeSandboxProviders.js +14 -5
- package/lib/components/code-sandboxes/index.d.ts +1 -0
- package/lib/components/code-sandboxes/index.js +1 -0
- package/lib/components/context/SpaceSelect.d.ts +1 -1
- package/lib/components/flashes/FlashDisclaimer.d.ts +1 -1
- package/lib/components/icons/ArtifactIcon.d.ts +1 -0
- package/lib/components/nbgrader/NbGradesDetails.d.ts +1 -1
- package/lib/components/progress/CreditsIndicator.d.ts +1 -0
- package/lib/components/progress/CreditsIndicator.js +0 -4
- package/lib/components/scheduler/ScheduleMenu.d.ts +1 -1
- package/lib/components/snapshots/SandboxSnapshotMenu.d.ts +3 -2
- package/lib/components/snapshots/SandboxSnapshotMenu.js +11 -15
- package/lib/components/snippets/SnippetDialog.d.ts +1 -0
- package/lib/components/snippets/SnippetDialog.js +0 -4
- package/lib/components/specs/SpecPayloadPreview.d.ts +34 -0
- package/lib/components/specs/SpecPayloadPreview.js +102 -0
- package/lib/components/tokens/SpaceVariantToken.d.ts +1 -1
- package/lib/context/ContextDistribution.d.ts +1 -1
- package/lib/context/ContextInspector.d.ts +2 -1
- package/lib/context/ContextPanel.d.ts +1 -1
- package/lib/context/ContextUsage.d.ts +1 -1
- package/lib/context/CostTracker.d.ts +1 -1
- package/lib/context/CostUsageChart.d.ts +1 -1
- package/lib/context/CostUsageChart.js +4 -4
- package/lib/context/MessageHistory.d.ts +3 -2
- package/lib/context/TokenUsageChart.d.ts +1 -1
- package/lib/context/TokenUsageChart.js +4 -4
- package/lib/examples/A2UiAgentExample.js +15 -6
- package/lib/examples/A2UiComponentsGalleryExample.d.ts +10 -0
- package/lib/examples/A2UiComponentsGalleryExample.js +24 -855
- package/lib/examples/A2UiContactCardExample.d.ts +10 -0
- package/lib/examples/A2UiContactCardExample.js +23 -170
- package/lib/examples/A2UiJupyterOutputExample.d.ts +3 -0
- package/lib/examples/A2UiJupyterOutputExample.js +792 -0
- package/lib/examples/A2UiRestaurantExample.d.ts +10 -0
- package/lib/examples/A2UiRestaurantExample.js +24 -179
- package/lib/examples/A2UiViewerExample.d.ts +10 -0
- package/lib/examples/A2UiViewerExample.js +24 -378
- package/lib/examples/AgUiAgenticExample.js +2 -4
- package/lib/examples/AgUiBackendToolRenderingExample.js +3 -5
- package/lib/examples/AgUiHaikuGenUiExample.js +2 -4
- package/lib/examples/AgUiHumanInTheLoopExample.js +2 -4
- package/lib/examples/AgUiSharedStateExample.js +2 -4
- package/lib/examples/AgUiToolsBasedGenUiExample.js +2 -4
- package/lib/examples/AgentA2AExample.d.ts +17 -0
- package/lib/examples/AgentA2AExample.js +56 -0
- package/lib/examples/AgentCheckpointsExample.d.ts +9 -10
- package/lib/examples/AgentCheckpointsExample.js +72 -54
- package/lib/examples/AgentCodeSandboxExample.d.ts +7 -7
- package/lib/examples/AgentCodeSandboxExample.js +93 -303
- package/lib/examples/AgentCodeSandboxesExample.d.ts +10 -0
- package/lib/examples/AgentCodeSandboxesExample.js +56 -162
- package/lib/examples/AgentCodemodeExample.d.ts +7 -2
- package/lib/examples/AgentCodemodeExample.js +60 -125
- package/lib/examples/AgentCompactionExample.js +19 -135
- package/lib/examples/AgentEvalsExample.js +34 -66
- package/lib/examples/AgentGuardrailsExample.js +64 -112
- package/lib/examples/AgentHooksExample.d.ts +11 -0
- package/lib/examples/AgentHooksExample.js +30 -67
- package/lib/examples/AgentInferenceProviderExample.js +8 -32
- package/lib/examples/AgentLoopExample.d.ts +4 -2
- package/lib/examples/AgentLoopExample.js +45 -93
- package/lib/examples/AgentMCPExample.js +30 -79
- package/lib/examples/AgentMemoryExample.js +21 -64
- package/lib/examples/AgentMonitoringExample.js +33 -94
- package/lib/examples/AgentNotificationsExample.js +56 -95
- package/lib/examples/AgentOtelExample.js +35 -88
- package/lib/examples/AgentOutputsExample.d.ts +2 -1
- package/lib/examples/AgentOutputsExample.js +16 -137
- package/lib/examples/AgentParametersExample.js +7 -17
- package/lib/examples/AgentSkillsExample.js +40 -154
- package/lib/examples/AgentSubagentsExample.d.ts +7 -6
- package/lib/examples/AgentSubagentsExample.js +80 -191
- package/lib/examples/AgentToolApprovalsExample.js +35 -91
- package/lib/examples/AgentTriggersExample.js +43 -59
- package/lib/examples/AgentspecsExample.js +4 -4
- package/lib/examples/CellExample.d.ts +1 -1
- package/lib/examples/ChatExample.d.ts +12 -5
- package/lib/examples/ChatExample.js +38 -13
- package/lib/examples/CopilotKitLexicalExample.d.ts +1 -0
- package/lib/examples/CopilotKitLexicalExample.js +4 -41
- package/lib/examples/CopilotKitNotebookExample.d.ts +10 -0
- package/lib/examples/CopilotKitNotebookExample.js +2 -14
- package/lib/examples/DecksAgent.d.ts +21 -0
- package/lib/examples/DecksAgent.js +23 -0
- package/lib/examples/DocumentPageAgent.d.ts +19 -0
- package/lib/examples/DocumentPageAgent.js +15 -0
- package/lib/examples/Lexical2Example.d.ts +2 -2
- package/lib/examples/Lexical2Example.js +17 -38
- package/lib/examples/LexicalAgentExample.d.ts +2 -1
- package/lib/examples/LexicalAgentExample.js +29 -102
- package/lib/examples/LexicalAgentSidebarExample.d.ts +16 -5
- package/lib/examples/LexicalAgentSidebarExample.js +99 -131
- package/lib/examples/LoopShellExample.d.ts +38 -0
- package/lib/examples/LoopShellExample.js +68 -0
- package/lib/examples/LoopWorkspaceEmbed.d.ts +50 -0
- package/lib/examples/LoopWorkspaceEmbed.js +73 -0
- package/lib/examples/LoopWorkspaceExample.d.ts +150 -0
- package/lib/examples/LoopWorkspaceExample.js +151 -0
- package/lib/examples/NotebookAgentExample.d.ts +13 -0
- package/lib/examples/NotebookAgentExample.js +36 -86
- package/lib/examples/NotebookAgentSidebarExample.d.ts +10 -4
- package/lib/examples/NotebookAgentSidebarExample.js +39 -83
- package/lib/examples/NotebookCollaborationExample.d.ts +1 -1
- package/lib/examples/NotebookCollaborationExample.js +108 -20
- package/lib/examples/NotebookExample.d.ts +1 -1
- package/lib/examples/NotebookExample.js +20 -10
- package/lib/examples/NotebookPageAgent.d.ts +23 -0
- package/lib/examples/NotebookPageAgent.js +17 -0
- package/lib/examples/components/ExampleWrapper.d.ts +5 -0
- package/lib/examples/components/ExampleWrapper.js +36 -28
- package/lib/examples/components/LexicalEditor.d.ts +1 -1
- package/lib/examples/components/LexicalEditor.js +4 -24
- package/lib/examples/components/haiku/HaikuDisplay.d.ts +1 -1
- package/lib/examples/components/haiku/InlineHaikuCard.d.ts +1 -1
- package/lib/examples/components/weather/InlineWeatherCard.d.ts +1 -1
- package/lib/examples/example-selector.js +26 -6
- package/lib/examples/hooks/useCreateAgentOnce.d.ts +41 -0
- package/lib/examples/hooks/useCreateAgentOnce.js +51 -0
- package/lib/examples/hooks/useExampleAgentProtocol.d.ts +35 -0
- package/lib/examples/hooks/useExampleAgentProtocol.js +63 -0
- package/lib/examples/hooks/useExampleAgentRuntime.d.ts +16 -16
- package/lib/examples/hooks/useExampleAgentRuntime.js +26 -25
- package/lib/examples/hooks/useExampleAgentRuntimes.js +45 -61
- package/lib/examples/hooks/useExampleJupyterAgent.d.ts +91 -0
- package/lib/examples/hooks/useExampleJupyterAgent.js +151 -0
- package/lib/examples/index.d.ts +4 -0
- package/lib/examples/index.js +6 -0
- package/lib/examples/lexical/editorConfig.d.ts +2 -75
- package/lib/examples/lexical/editorConfig.js +26 -48
- package/lib/examples/lexical/lexical-theme.css +65 -47
- package/lib/examples/main.js +450 -322
- package/lib/examples/scenes/A2UiComponentsGalleryScene.d.ts +3 -0
- package/lib/examples/scenes/A2UiComponentsGalleryScene.js +872 -0
- package/lib/examples/scenes/A2UiContactCardScene.d.ts +3 -0
- package/lib/examples/scenes/A2UiContactCardScene.js +188 -0
- package/lib/examples/scenes/A2UiRestaurantScene.d.ts +3 -0
- package/lib/examples/scenes/A2UiRestaurantScene.js +196 -0
- package/lib/examples/scenes/A2UiViewerScene.d.ts +3 -0
- package/lib/examples/scenes/A2UiViewerScene.js +395 -0
- package/lib/examples/utils/agentSummaryStore.d.ts +7 -1
- package/lib/examples/utils/agents/earthquake-detector.ipynb.json +1 -1
- package/lib/examples/utils/agents/earthquake-detector.lexical.json +1 -1
- package/lib/examples/utils/agents/sales-forecaster.ipynb.json +1 -1
- package/lib/examples/utils/agents/sales-forecaster.lexical.json +1 -1
- package/lib/examples/utils/agents/social-post-generator.ipynb.json +1 -1
- package/lib/examples/utils/agents/social-post-generator.lexical.json +1 -1
- package/lib/examples/utils/exampleSurfaces.d.ts +31 -0
- package/lib/examples/utils/exampleSurfaces.js +38 -0
- package/lib/examples/utils/jupyterSandboxUrl.d.ts +27 -0
- package/lib/examples/utils/jupyterSandboxUrl.js +55 -0
- package/lib/examples/utils/localUrl.d.ts +2 -0
- package/lib/examples/utils/localUrl.js +49 -0
- package/lib/examples/utils/notebookToolbarItems.d.ts +46 -0
- package/lib/examples/utils/notebookToolbarItems.js +129 -0
- package/lib/examples/utils/runtimeTargetStore.d.ts +40 -1
- package/lib/examples/utils/runtimeTargetStore.js +82 -1
- package/lib/examples/utils/themedProvider.d.ts +7 -0
- package/lib/examples/utils/themedProvider.js +57 -4
- package/lib/examples/utils/useExampleAgentRuntimesUrl.js +30 -5
- package/lib/examples/utils/waitForAgent.d.ts +23 -0
- package/lib/examples/utils/waitForAgent.js +24 -0
- package/lib/examples2/CellExample.d.ts +1 -1
- package/lib/examples2/DatalayerNotebookExample.d.ts +1 -1
- package/lib/examples2/NotebookExample.d.ts +1 -1
- package/lib/examples2/NotebookMutationsKernel.d.ts +1 -1
- package/lib/examples2/NotebookMutationsServiceManager.d.ts +1 -1
- package/lib/examples2/main.js +24 -4
- package/lib/extensions/A2UIExtension.d.ts +1 -1
- package/lib/hooks/index.d.ts +8 -5
- package/lib/hooks/index.js +20 -5
- package/lib/hooks/useAgentRuntimes.d.ts +49 -22
- package/lib/hooks/useAgentRuntimes.js +214 -90
- package/lib/hooks/useAgentsCatalog.js +32 -4
- package/lib/hooks/useBrowserAgent.d.ts +26 -0
- package/lib/hooks/useBrowserAgent.js +75 -0
- package/lib/hooks/useBrowserInference.d.ts +27 -0
- package/lib/hooks/useBrowserInference.js +67 -0
- package/lib/hooks/useCheckpoints.d.ts +8 -17
- package/lib/hooks/useCheckpoints.js +25 -59
- package/lib/hooks/useConfig.d.ts +1 -1
- package/lib/hooks/useConfig.js +5 -1
- package/lib/hooks/useContextSnapshot.d.ts +18 -7
- package/lib/hooks/useContextSnapshot.js +14 -10
- package/lib/hooks/useNotifications.d.ts +11 -11
- package/lib/hooks/useNotifications.js +1 -1
- package/lib/hooks/useProjects.d.ts +7 -19
- package/lib/hooks/useProjects.js +5 -5
- package/lib/hooks/useSkills.d.ts +0 -1
- package/lib/hooks/useSkills.js +6 -2
- package/lib/hooks/useToolApprovals.d.ts +8 -8
- package/lib/hooks/useToolApprovals.js +3 -3
- package/lib/identity/AgentIdentity.d.ts +9 -2
- package/lib/index.d.ts +1 -0
- package/lib/index.js +4 -0
- package/lib/jupyter/index.d.ts +2 -1
- package/lib/jupyter/index.js +2 -1
- package/lib/jupyter/serverExecution.d.ts +78 -0
- package/lib/jupyter/serverExecution.js +258 -0
- package/lib/jupyter/useResumeServerExecutions.d.ts +11 -0
- package/lib/jupyter/useResumeServerExecutions.js +64 -0
- package/lib/lexical/ChatInlinePlugin.d.ts +33 -0
- package/lib/lexical/ChatInlinePlugin.js +0 -36
- package/lib/loop/core/focusRequests.d.ts +10 -0
- package/lib/loop/core/focusRequests.js +46 -0
- package/lib/loop/core/index.d.ts +894 -0
- package/lib/loop/core/index.js +264 -0
- package/lib/loop/core/promptStore.d.ts +44 -0
- package/lib/loop/core/promptStore.js +63 -0
- package/lib/loop/core/surfaceRequests.d.ts +33 -0
- package/lib/loop/core/surfaceRequests.js +29 -0
- package/lib/loop/core/toolbar.d.ts +28 -0
- package/lib/loop/core/toolbar.js +59 -0
- package/lib/loop/embed/LoopEmbed.d.ts +57 -0
- package/lib/loop/embed/LoopEmbed.js +118 -0
- package/lib/loop/extensions.d.ts +10 -0
- package/lib/loop/extensions.js +49 -0
- package/lib/loop/index.d.ts +68 -0
- package/lib/loop/index.js +87 -0
- package/lib/loop/plugins/a2a-sidebar/A2ASidebar.d.ts +48 -0
- package/lib/loop/plugins/a2a-sidebar/A2ASidebar.js +190 -0
- package/lib/loop/plugins/a2a-sidebar/index.d.ts +5 -0
- package/lib/loop/plugins/a2a-sidebar/index.js +39 -0
- package/lib/loop/plugins/a2ui/A2uiView.d.ts +12 -0
- package/lib/loop/plugins/a2ui/A2uiView.js +97 -0
- package/lib/loop/plugins/a2ui/index.d.ts +3 -0
- package/lib/loop/plugins/a2ui/index.js +50 -0
- package/lib/loop/plugins/a2ui-scene/index.d.ts +36 -0
- package/lib/loop/plugins/a2ui-scene/index.js +28 -0
- package/lib/loop/plugins/agent-a2a/index.d.ts +3 -0
- package/lib/loop/plugins/agent-a2a/index.js +26 -0
- package/lib/loop/plugins/agent-a2ui/index.d.ts +3 -0
- package/lib/loop/plugins/agent-a2ui/index.js +42 -0
- package/lib/loop/plugins/agent-a2ui-jupyter-output/index.d.ts +3 -0
- package/lib/loop/plugins/agent-a2ui-jupyter-output/index.js +53 -0
- package/lib/loop/plugins/agent-capacity/index.d.ts +39 -0
- package/lib/loop/plugins/agent-capacity/index.js +52 -0
- package/lib/loop/plugins/agent-checkpoints/index.d.ts +3 -0
- package/lib/loop/plugins/agent-checkpoints/index.js +26 -0
- package/lib/loop/plugins/agent-code-sandbox/index.d.ts +3 -0
- package/lib/loop/plugins/agent-code-sandbox/index.js +24 -0
- package/lib/loop/plugins/agent-code-sandboxes/index.d.ts +13 -0
- package/lib/loop/plugins/agent-code-sandboxes/index.js +85 -0
- package/lib/loop/plugins/agent-codemode/index.d.ts +5 -0
- package/lib/loop/plugins/agent-codemode/index.js +41 -0
- package/lib/loop/plugins/agent-compaction/index.d.ts +10 -0
- package/lib/loop/plugins/agent-compaction/index.js +34 -0
- package/lib/loop/plugins/agent-evals/index.d.ts +3 -0
- package/lib/loop/plugins/agent-evals/index.js +25 -0
- package/lib/loop/plugins/agent-guardrails/index.d.ts +3 -0
- package/lib/loop/plugins/agent-guardrails/index.js +25 -0
- package/lib/loop/plugins/agent-hooks/index.d.ts +3 -0
- package/lib/loop/plugins/agent-hooks/index.js +28 -0
- package/lib/loop/plugins/agent-inference/index.d.ts +7 -0
- package/lib/loop/plugins/agent-inference/index.js +29 -0
- package/lib/loop/plugins/agent-mcp/index.d.ts +3 -0
- package/lib/loop/plugins/agent-mcp/index.js +25 -0
- package/lib/loop/plugins/agent-memory/index.d.ts +3 -0
- package/lib/loop/plugins/agent-memory/index.js +25 -0
- package/lib/loop/plugins/agent-monitoring/index.d.ts +3 -0
- package/lib/loop/plugins/agent-monitoring/index.js +25 -0
- package/lib/loop/plugins/agent-notifications/index.d.ts +3 -0
- package/lib/loop/plugins/agent-notifications/index.js +25 -0
- package/lib/loop/plugins/agent-otel/index.d.ts +3 -0
- package/lib/loop/plugins/agent-otel/index.js +25 -0
- package/lib/loop/plugins/agent-outputs/index.d.ts +3 -0
- package/lib/loop/plugins/agent-outputs/index.js +25 -0
- package/lib/loop/plugins/agent-parameters/index.d.ts +3 -0
- package/lib/loop/plugins/agent-parameters/index.js +25 -0
- package/lib/loop/plugins/agent-skills/index.d.ts +3 -0
- package/lib/loop/plugins/agent-skills/index.js +25 -0
- package/lib/loop/plugins/agent-subagents/index.d.ts +3 -0
- package/lib/loop/plugins/agent-subagents/index.js +25 -0
- package/lib/loop/plugins/agent-tool-approvals/index.d.ts +11 -0
- package/lib/loop/plugins/agent-tool-approvals/index.js +38 -0
- package/lib/loop/plugins/agent-triggers/index.d.ts +3 -0
- package/lib/loop/plugins/agent-triggers/index.js +26 -0
- package/lib/loop/plugins/agents/AgentSummaryPanel.d.ts +20 -0
- package/lib/loop/plugins/agents/AgentSummaryPanel.js +50 -0
- package/lib/loop/plugins/agents/AnonymousKeyBadge.d.ts +35 -0
- package/lib/loop/plugins/agents/AnonymousKeyBadge.js +53 -0
- package/lib/loop/plugins/agents/DatalayerAgentBridge.d.ts +24 -0
- package/lib/loop/plugins/agents/DatalayerAgentBridge.js +102 -0
- package/lib/loop/plugins/agents/DatalayerAgentMount.d.ts +18 -0
- package/lib/loop/plugins/agents/DatalayerAgentMount.js +12 -0
- package/lib/loop/plugins/agents/SandboxSelector.d.ts +18 -0
- package/lib/loop/plugins/agents/SandboxSelector.js +99 -0
- package/lib/loop/plugins/agents/SandboxStatusBridge.d.ts +19 -0
- package/lib/loop/plugins/agents/SandboxStatusBridge.js +23 -0
- package/lib/loop/plugins/agents/SandboxView.d.ts +11 -0
- package/lib/loop/plugins/agents/SandboxView.js +43 -0
- package/lib/loop/plugins/agents/TeamMemberPicker.d.ts +17 -0
- package/lib/loop/plugins/agents/TeamMemberPicker.js +60 -0
- package/lib/loop/plugins/agents/agentIcons.d.ts +23 -0
- package/lib/loop/plugins/agents/agentIcons.js +88 -0
- package/lib/loop/plugins/agents/browserService.d.ts +50 -0
- package/lib/loop/plugins/agents/browserService.js +233 -0
- package/lib/loop/plugins/agents/index.d.ts +13 -0
- package/lib/loop/plugins/agents/index.js +17 -0
- package/lib/loop/plugins/agents/plugin.d.ts +91 -0
- package/lib/loop/plugins/agents/plugin.js +201 -0
- package/lib/loop/plugins/agents/service.d.ts +99 -0
- package/lib/loop/plugins/agents/service.js +167 -0
- package/lib/loop/plugins/agents/specSubagents.d.ts +18 -0
- package/lib/loop/plugins/agents/specSubagents.js +33 -0
- package/lib/loop/plugins/agents/switchable.d.ts +107 -0
- package/lib/loop/plugins/agents/switchable.js +405 -0
- package/lib/loop/plugins/agents/team.d.ts +87 -0
- package/lib/loop/plugins/agents/team.js +143 -0
- package/lib/loop/plugins/agents/useSandboxService.d.ts +11 -0
- package/lib/loop/plugins/agents/useSandboxService.js +36 -0
- package/lib/loop/plugins/agents/useTeamSelection.d.ts +10 -0
- package/lib/loop/plugins/agents/useTeamSelection.js +27 -0
- package/lib/loop/plugins/agentspecs/AgentspecPicker.d.ts +15 -0
- package/lib/loop/plugins/agentspecs/AgentspecPicker.js +90 -0
- package/lib/loop/plugins/agentspecs/index.d.ts +6 -0
- package/lib/loop/plugins/agentspecs/index.js +63 -0
- package/lib/loop/plugins/chat/ChatView.d.ts +20 -0
- package/lib/loop/plugins/chat/ChatView.js +1670 -0
- package/lib/loop/plugins/chat/chatViewTools.d.ts +41 -0
- package/lib/loop/plugins/chat/chatViewTools.js +92 -0
- package/lib/loop/plugins/chat/index.d.ts +111 -0
- package/lib/loop/plugins/chat/index.js +143 -0
- package/lib/loop/plugins/chat/turnState.d.ts +41 -0
- package/lib/loop/plugins/chat/turnState.js +90 -0
- package/lib/loop/plugins/chat-extras/index.d.ts +14 -0
- package/lib/loop/plugins/chat-extras/index.js +51 -0
- package/lib/loop/plugins/chat-header/HeaderView.d.ts +13 -0
- package/lib/loop/plugins/chat-header/HeaderView.js +6 -0
- package/lib/loop/plugins/chat-header/index.d.ts +3 -0
- package/lib/loop/plugins/chat-header/index.js +21 -0
- package/lib/loop/plugins/chat-view/index.d.ts +10 -0
- package/lib/loop/plugins/chat-view/index.js +29 -0
- package/lib/loop/plugins/checkpoints-sidebar/CheckpointsSidebar.d.ts +27 -0
- package/lib/loop/plugins/checkpoints-sidebar/CheckpointsSidebar.js +174 -0
- package/lib/loop/plugins/checkpoints-sidebar/index.d.ts +5 -0
- package/lib/loop/plugins/checkpoints-sidebar/index.js +39 -0
- package/lib/loop/plugins/commands/index.d.ts +20 -0
- package/lib/loop/plugins/commands/index.js +148 -0
- package/lib/loop/plugins/decks/DeckSurface.d.ts +10 -0
- package/lib/loop/plugins/decks/DeckSurface.js +6 -0
- package/lib/loop/plugins/decks/DecksMenu.d.ts +11 -0
- package/lib/loop/plugins/decks/DecksMenu.js +42 -0
- package/lib/loop/plugins/decks/index.d.ts +19 -0
- package/lib/loop/plugins/decks/index.js +133 -0
- package/lib/loop/plugins/decks/surface.d.ts +7 -0
- package/lib/loop/plugins/decks/surface.js +11 -0
- package/lib/loop/plugins/document/DocumentView.d.ts +12 -0
- package/lib/loop/plugins/document/DocumentView.js +68 -0
- package/lib/loop/plugins/document/index.d.ts +3 -0
- package/lib/loop/plugins/document/index.js +86 -0
- package/lib/loop/plugins/document/openingDocument.d.ts +28 -0
- package/lib/loop/plugins/document/openingDocument.js +122 -0
- package/lib/loop/plugins/document-toolbar/SandboxStatusItem.d.ts +16 -0
- package/lib/loop/plugins/document-toolbar/SandboxStatusItem.js +31 -0
- package/lib/loop/plugins/document-toolbar/index.d.ts +4 -0
- package/lib/loop/plugins/document-toolbar/index.js +35 -0
- package/lib/loop/plugins/document-toolbar/names.d.ts +6 -0
- package/lib/loop/plugins/document-toolbar/names.js +10 -0
- package/lib/loop/plugins/document-toolbar/plugin.d.ts +2 -0
- package/lib/loop/plugins/document-toolbar/plugin.js +38 -0
- package/lib/loop/plugins/document-view/index.d.ts +10 -0
- package/lib/loop/plugins/document-view/index.js +28 -0
- package/lib/loop/plugins/graph/GraphToggle.d.ts +17 -0
- package/lib/loop/plugins/graph/GraphToggle.js +22 -0
- package/lib/loop/plugins/graph/GraphView.d.ts +16 -0
- package/lib/loop/plugins/graph/GraphView.js +6 -0
- package/lib/loop/plugins/graph/index.d.ts +5 -0
- package/lib/loop/plugins/graph/index.js +80 -0
- package/lib/loop/plugins/graph/viewType.d.ts +10 -0
- package/lib/loop/plugins/graph/viewType.js +14 -0
- package/lib/loop/plugins/input-prompt/ComposerView.d.ts +15 -0
- package/lib/loop/plugins/input-prompt/ComposerView.js +25 -0
- package/lib/loop/plugins/input-prompt/index.d.ts +25 -0
- package/lib/loop/plugins/input-prompt/index.js +26 -0
- package/lib/loop/plugins/models/index.d.ts +3 -0
- package/lib/loop/plugins/models/index.js +49 -0
- package/lib/loop/plugins/notebook/NotebookView.d.ts +9 -0
- package/lib/loop/plugins/notebook/NotebookView.js +189 -0
- package/lib/loop/plugins/notebook/index.d.ts +3 -0
- package/lib/loop/plugins/notebook/index.js +91 -0
- package/lib/loop/plugins/notebook/openingNotebook.d.ts +72 -0
- package/lib/loop/plugins/notebook/openingNotebook.js +90 -0
- package/lib/loop/plugins/notebook-toolbar/index.d.ts +4 -0
- package/lib/loop/plugins/notebook-toolbar/index.js +45 -0
- package/lib/loop/plugins/notebook-toolbar/items.d.ts +10 -0
- package/lib/loop/plugins/notebook-toolbar/items.js +45 -0
- package/lib/loop/plugins/notebook-toolbar/names.d.ts +9 -0
- package/lib/loop/plugins/notebook-toolbar/names.js +13 -0
- package/lib/loop/plugins/notebook-toolbar/plugin.d.ts +2 -0
- package/lib/loop/plugins/notebook-toolbar/plugin.js +24 -0
- package/lib/loop/plugins/notebook-view/index.d.ts +10 -0
- package/lib/loop/plugins/notebook-view/index.js +30 -0
- package/lib/loop/plugins/page-layout/TurnPanel.d.ts +25 -0
- package/lib/loop/plugins/page-layout/TurnPanel.js +126 -0
- package/lib/loop/plugins/page-layout/index.d.ts +35 -0
- package/lib/loop/plugins/page-layout/index.js +80 -0
- package/lib/loop/plugins/plugins-panel/index.d.ts +14 -0
- package/lib/loop/plugins/plugins-panel/index.js +74 -0
- package/lib/loop/plugins/prompt/NewChatAction.d.ts +19 -0
- package/lib/loop/plugins/prompt/NewChatAction.js +10 -0
- package/lib/loop/plugins/prompt/index.d.ts +11 -0
- package/lib/loop/plugins/prompt/index.js +73 -0
- package/lib/loop/plugins/shell/editorChoice.d.ts +31 -0
- package/lib/loop/plugins/shell/editorChoice.js +58 -0
- package/lib/loop/plugins/shell/index.d.ts +47 -0
- package/lib/loop/plugins/shell/index.js +142 -0
- package/lib/loop/plugins/shell/useEditorPreviews.d.ts +32 -0
- package/lib/loop/plugins/shell/useEditorPreviews.js +217 -0
- package/lib/loop/plugins/subagent-activity/SubagentPulse.d.ts +16 -0
- package/lib/loop/plugins/subagent-activity/SubagentPulse.js +45 -0
- package/lib/loop/plugins/subagent-activity/index.d.ts +12 -0
- package/lib/loop/plugins/subagent-activity/index.js +42 -0
- package/lib/loop/plugins/view-switch/index.d.ts +46 -0
- package/lib/loop/plugins/view-switch/index.js +68 -0
- package/lib/loop/plugins/window-frame/WindowFrame.d.ts +48 -0
- package/lib/loop/plugins/window-frame/WindowFrame.js +63 -0
- package/lib/loop/plugins/window-frame/index.d.ts +6 -0
- package/lib/loop/plugins/window-frame/index.js +79 -0
- package/lib/loop/plugins/window-frame/slots.d.ts +26 -0
- package/lib/loop/plugins/window-frame/slots.js +30 -0
- package/lib/loop/presets.d.ts +167 -0
- package/lib/loop/presets.js +139 -0
- package/lib/loop/shell/LoopWorkspace.d.ts +109 -0
- package/lib/loop/shell/LoopWorkspace.js +231 -0
- package/lib/loop/shell/PluginToggles.d.ts +21 -0
- package/lib/loop/shell/PluginToggles.js +41 -0
- package/lib/loop/shell/ViewSwitcher.d.ts +24 -0
- package/lib/loop/shell/ViewSwitcher.js +43 -0
- package/lib/loop/shell/WorkspaceFullScreenAction.d.ts +25 -0
- package/lib/loop/shell/WorkspaceFullScreenAction.js +24 -0
- package/lib/loop/shell/index.d.ts +10 -0
- package/lib/loop/shell/index.js +14 -0
- package/lib/loop/shell/useWorkspaceFullScreen.d.ts +93 -0
- package/lib/loop/shell/useWorkspaceFullScreen.js +167 -0
- package/lib/loop-example-main.d.ts +1 -0
- package/lib/loop-example-main.js +42 -0
- package/lib/loop-main.d.ts +1 -0
- package/lib/loop-main.js +138 -0
- package/lib/mcp/McpServerManager.d.ts +1 -1
- package/lib/models/CodeSandboxSnapshotDTO.d.ts +1 -1
- package/lib/models/CodeSandboxVariant.d.ts +13 -5
- package/lib/models/CodeSandboxVariant.js +17 -5
- package/lib/models/Content.d.ts +26 -0
- package/lib/models/Environment.d.ts +561 -5
- package/lib/models/Environment.js +12 -1
- package/lib/models/EnvironmentDTO.d.ts +24 -6
- package/lib/models/EnvironmentDTO.js +13 -2
- package/lib/models/Exercise.d.ts +0 -2
- package/lib/models/Library.d.ts +0 -2
- package/lib/models/Notebook.d.ts +0 -2
- package/lib/models/ProjectDTO.d.ts +2 -2
- package/lib/models/ProjectDTO.js +4 -4
- package/lib/models/Runtime.d.ts +11 -11
- package/lib/models/RuntimeDTO.d.ts +16 -7
- package/lib/models/RuntimeDTO.js +9 -9
- package/lib/models/Space.d.ts +10 -0
- package/lib/models/Space.js +1 -1
- package/lib/models/SpaceDTO.d.ts +1 -1
- package/lib/models/SpaceItem.d.ts +1 -2
- package/lib/models/environments.generated.d.ts +113 -0
- package/lib/models/environments.generated.js +13 -0
- package/lib/models/index.d.ts +0 -1
- package/lib/models/index.js +0 -1
- package/lib/protocols/A2AAdapter.d.ts +39 -6
- package/lib/protocols/A2AAdapter.js +180 -11
- package/lib/protocols/ACPAdapter.js +40 -37
- package/lib/protocols/AGUIAdapter.d.ts +14 -0
- package/lib/protocols/AGUIAdapter.js +34 -9
- package/lib/protocols/BrowserAgentAdapter.d.ts +117 -0
- package/lib/protocols/BrowserAgentAdapter.js +310 -0
- package/lib/protocols/VercelAIAdapter.d.ts +10 -0
- package/lib/protocols/VercelAIAdapter.js +27 -7
- package/lib/protocols/index.d.ts +1 -0
- package/lib/protocols/index.js +1 -0
- package/lib/runtimes/actions.d.ts +3 -3
- package/lib/runtimes/actions.js +27 -14
- package/lib/runtimes/apis.d.ts +13 -4
- package/lib/runtimes/browser/agent.d.ts +54 -0
- package/lib/runtimes/browser/agent.js +63 -0
- package/lib/runtimes/browser/anonymousToken.d.ts +121 -0
- package/lib/runtimes/browser/anonymousToken.js +300 -0
- package/lib/runtimes/browser/frontendTools.d.ts +61 -0
- package/lib/runtimes/browser/frontendTools.js +152 -0
- package/lib/runtimes/browser/index.d.ts +11 -0
- package/lib/runtimes/browser/index.js +20 -0
- package/lib/runtimes/browser/model.d.ts +52 -0
- package/lib/runtimes/browser/model.js +110 -0
- package/lib/runtimes/browser/protocol.d.ts +54 -0
- package/lib/runtimes/browser/protocol.js +35 -0
- package/lib/runtimes/browser/subagents.d.ts +131 -0
- package/lib/runtimes/browser/subagents.js +241 -0
- package/lib/runtimes/index.d.ts +3 -0
- package/lib/runtimes/index.js +3 -0
- package/lib/runtimes/lifecycle.d.ts +76 -0
- package/lib/runtimes/lifecycle.js +99 -0
- package/lib/runtimes/variants.d.ts +172 -0
- package/lib/runtimes/variants.js +187 -0
- package/lib/services/reconnectToRuntime.d.ts +2 -2
- package/lib/services/reconnectToRuntime.js +3 -3
- package/lib/services/sandboxServiceManagers.d.ts +2 -2
- package/lib/services/sandboxServiceManagers.js +11 -11
- package/lib/specs/agents/agents.d.ts +128 -112
- package/lib/specs/agents/agents.js +8024 -5052
- package/lib/specs/evals.js +9 -0
- package/lib/specs/frontendTools.d.ts +3 -0
- package/lib/specs/frontendTools.js +46 -3
- package/lib/specs/mcpServers.d.ts +1 -0
- package/lib/specs/mcpServers.js +25 -2
- package/lib/specs/models.d.ts +18 -0
- package/lib/specs/models.js +154 -0
- package/lib/specs/outputs.d.ts +2 -0
- package/lib/specs/outputs.js +22 -0
- package/lib/specs/personas.js +1 -1
- package/lib/specs/teams/teams.d.ts +2 -0
- package/lib/specs/teams/teams.js +628 -111
- package/lib/state/index.d.ts +1 -1
- package/lib/state/index.js +1 -1
- package/lib/state/substates/RuntimesState.d.ts +5 -5
- package/lib/state/substates/RuntimesState.js +14 -14
- package/lib/state/substates/index.d.ts +1 -1
- package/lib/state/substates/index.js +1 -1
- package/lib/stores/agentRuntimeStore.d.ts +43 -1
- package/lib/stores/agentRuntimeStore.js +100 -11
- package/lib/stores/index.d.ts +1 -1
- package/lib/stores/index.js +1 -1
- package/lib/stories/Button.d.ts +1 -1
- package/lib/stories/Button.stories.d.ts +1 -1
- package/lib/stories/Header.d.ts +1 -1
- package/lib/stories/Header.stories.d.ts +1 -1
- package/lib/test-setup.js +66 -0
- package/lib/tools/adapters/agent-runtimes/lexicalHooks.d.ts +15 -0
- package/lib/tools/adapters/agent-runtimes/lexicalHooks.js +43 -2
- package/lib/tools/adapters/agent-runtimes/notebookHooks.d.ts +9 -0
- package/lib/tools/adapters/agent-runtimes/notebookHooks.js +12 -0
- package/lib/tools/adapters/commands/frontendCommandTools.d.ts +11 -0
- package/lib/tools/adapters/commands/frontendCommandTools.js +60 -0
- package/lib/tools/adapters/commands/index.d.ts +1 -0
- package/lib/{models/Dataset.js → tools/adapters/commands/index.js} +1 -1
- package/lib/tools/adapters/copilotkit/lexicalHooks.js +7 -3
- package/lib/tools/index.d.ts +1 -0
- package/lib/tools/index.js +1 -0
- package/lib/types/a2a.d.ts +15 -1
- package/lib/types/agents-lifecycle.d.ts +11 -6
- package/lib/types/agents.d.ts +31 -6
- package/lib/types/agentspecs.d.ts +120 -4
- package/lib/types/chat.d.ts +251 -3
- package/lib/types/checkpoints.d.ts +20 -0
- package/lib/types/config.d.ts +13 -1
- package/lib/types/connection.d.ts +1 -1
- package/lib/types/evals.d.ts +2 -0
- package/lib/types/messages.d.ts +60 -0
- package/lib/types/models.d.ts +26 -0
- package/lib/types/notifications.d.ts +15 -6
- package/lib/types/protocol.d.ts +7 -2
- package/lib/types/stream.d.ts +48 -3
- package/lib/types/stream.js +5 -0
- package/lib/types/teams.d.ts +102 -4
- package/lib/types/tool-approvals.d.ts +1 -1
- package/lib/types/tools.d.ts +8 -2
- package/lib/utils/utils.js +7 -1
- package/package.json +376 -361
- package/scripts/codegen/__pycache__/compose.cpython-313.pyc +0 -0
- package/scripts/codegen/__pycache__/versioning.cpython-313.pyc +0 -0
- package/scripts/codegen/compose.py +208 -0
- package/scripts/codegen/generate_agents.py +202 -31
- package/scripts/codegen/generate_evals.py +2 -0
- package/scripts/codegen/generate_frontend_tools.py +35 -6
- package/scripts/codegen/generate_models.py +40 -15
- package/scripts/codegen/generate_sandbox_agents.py +76 -62
- package/scripts/codegen/generate_teams.py +178 -4
- package/scripts/codegen/generate_tools.py +6 -4
- package/scripts/gen_workers.py +278 -110
- package/scripts/generate-environments-types.py +404 -0
- package/lib/chat/prompt/InputFooter.d.ts +0 -58
- package/lib/chat/prompt/InputFooter.js +0 -194
- package/lib/chat/prompt/InputPromptFooter.d.ts +0 -27
- package/lib/chat/prompt/InputPromptFooter.js +0 -15
- package/lib/chat/prompt/InputPromptHeader.d.ts +0 -15
- package/lib/chat/prompt/InputPromptHeader.js +0 -15
- package/lib/chat/usage/TokenUsageBar.d.ts +0 -8
- package/lib/hooks/useRuntimes.d.ts +0 -5
- package/lib/hooks/useRuntimes.js +0 -34
- package/lib/jupyter/kernelsHandler.d.ts +0 -8
- package/lib/jupyter/kernelsHandler.js +0 -39
- package/lib/models/Dataset.d.ts +0 -16
- package/lib/utils/Cells.d.ts +0 -2
- package/lib/utils/Cells.js +0 -28
|
@@ -0,0 +1,133 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright (c) 2025-2026 Datalayer, Inc.
|
|
3
|
+
* Distributed under the terms of the Modified BSD License.
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* Decks in a Loop: a deck beside the chat.
|
|
7
|
+
*
|
|
8
|
+
* The plugin pulls `@datalayer/decks`'s own reactor plugin in as a dependency,
|
|
9
|
+
* pointed at the Loop's slots — the list of decks in the sidebar, the "new
|
|
10
|
+
* deck" dialog at the root — and adds what only a Loop can know:
|
|
11
|
+
*
|
|
12
|
+
* - a **Deck** editor surface, one entry in the shell's editor selector, that
|
|
13
|
+
* shows the open deck in the column beside the conversation;
|
|
14
|
+
* - a **menu in the composer** with the decks to open and the plugin's
|
|
15
|
+
* commands, and a `deck` slash command with a keystroke;
|
|
16
|
+
* - the deck **following the decks**: whatever asks to see one — a row in the
|
|
17
|
+
* list, the palette, an agent's tool — brings the surface beside the chat.
|
|
18
|
+
*
|
|
19
|
+
* It declares no tools. The decks plugin does: its `AgentTools` bundle names
|
|
20
|
+
* every command an agent may call — reading and writing decks as much as
|
|
21
|
+
* opening and presenting one — and the chat reads the bundle from the reactor
|
|
22
|
+
* (`useAgentCommandTools`) and runs each as the command it is, on this page,
|
|
23
|
+
* saved to the decks server when the plugin was given one. Nothing here
|
|
24
|
+
* duplicates, and nothing here can drift from, what the plugin declared.
|
|
25
|
+
*
|
|
26
|
+
* `DeckViewPlugin` is the footer icon that switches to the deck, like the
|
|
27
|
+
* notebook's and the document's.
|
|
28
|
+
*
|
|
29
|
+
* @module loop/plugins/decks
|
|
30
|
+
*/
|
|
31
|
+
import { ProjectIcon } from '@primer/octicons-react';
|
|
32
|
+
import { configurePlugin, contribution, definePlugin, } from '@datalayer/reactor';
|
|
33
|
+
import { DecksPlugin, getDecksState, subscribeDecksState, } from '@datalayer/decks/plugin';
|
|
34
|
+
import { LoopCommand, LoopEditorView, LoopSlots, requestSurface, } from '../../core';
|
|
35
|
+
import { InputPromptPlugin } from '../input-prompt';
|
|
36
|
+
import { chooseEditor } from '../shell/editorChoice';
|
|
37
|
+
import { defineViewPlugin } from '../view-switch';
|
|
38
|
+
import DecksMenu from './DecksMenu';
|
|
39
|
+
import { DECK_SURFACE_ID } from './surface';
|
|
40
|
+
export { DECK_SURFACE_ID } from './surface';
|
|
41
|
+
export const DECKS_PLUGIN_NAME = '@datalayer/loop-plugin-decks';
|
|
42
|
+
/**
|
|
43
|
+
* A slot nobody renders: the decks plugin's main view is shown through the
|
|
44
|
+
* Deck surface instead, so the plugin's own `slot` output must land nowhere.
|
|
45
|
+
*/
|
|
46
|
+
export const DECKS_UNUSED_SLOT = 'loop.decks.unused';
|
|
47
|
+
export const LoopDecksPlugin = definePlugin({
|
|
48
|
+
name: DECKS_PLUGIN_NAME,
|
|
49
|
+
// `Deck editor`, like `Notebook editor`: the decks plugin it depends on is
|
|
50
|
+
// the one called `Decks`, and the two sit side by side in the plugins panel.
|
|
51
|
+
displayName: 'Deck editor',
|
|
52
|
+
description: 'A deck beside the chat, and the tools an agent writes a presentation with.',
|
|
53
|
+
octicon: 'project',
|
|
54
|
+
emoji: '\u{1F4CA}',
|
|
55
|
+
dependencies: [
|
|
56
|
+
configurePlugin(DecksPlugin, {
|
|
57
|
+
listSlot: LoopSlots.sidebar,
|
|
58
|
+
// Above the plugins panel, which puts itself last.
|
|
59
|
+
listOrder: 10,
|
|
60
|
+
slot: DECKS_UNUSED_SLOT,
|
|
61
|
+
dialogSlot: LoopSlots.root,
|
|
62
|
+
shellView: false,
|
|
63
|
+
}),
|
|
64
|
+
// The menu sits in the composer's action row; without the composer there
|
|
65
|
+
// is nowhere for it to be.
|
|
66
|
+
InputPromptPlugin,
|
|
67
|
+
],
|
|
68
|
+
contributes: [
|
|
69
|
+
contribution(LoopEditorView, {
|
|
70
|
+
surfaceId: DECK_SURFACE_ID,
|
|
71
|
+
title: 'Deck',
|
|
72
|
+
icon: ProjectIcon,
|
|
73
|
+
order: 30,
|
|
74
|
+
load: () => import('./DeckSurface'),
|
|
75
|
+
}, { id: DECK_SURFACE_ID, order: 30 }),
|
|
76
|
+
contribution(LoopCommand, {
|
|
77
|
+
name: 'deck',
|
|
78
|
+
description: 'Open the deck beside the chat',
|
|
79
|
+
group: 'Open',
|
|
80
|
+
keybinding: 'Mod+Alt+D',
|
|
81
|
+
run: async ({ workspace }) => {
|
|
82
|
+
workspace.setActiveViewType('chat');
|
|
83
|
+
if (!requestSurface(DECK_SURFACE_ID)) {
|
|
84
|
+
throw new Error('No chat is on screen to open the deck beside.');
|
|
85
|
+
}
|
|
86
|
+
},
|
|
87
|
+
}, { id: 'deck' }),
|
|
88
|
+
],
|
|
89
|
+
register: () => {
|
|
90
|
+
/*
|
|
91
|
+
* The deck surface follows the decks. Whatever asks to see a deck or the
|
|
92
|
+
* list — the sidebar row, the palette's "Show the decks", an agent's
|
|
93
|
+
* `decks_open` — bumps the store's `revealed`, and this brings the Deck
|
|
94
|
+
* editor beside the chat so the ask has a visible answer. Without it,
|
|
95
|
+
* "Show the decks" with the notebook on screen changed the store and
|
|
96
|
+
* nothing else.
|
|
97
|
+
*/
|
|
98
|
+
let seen = getDecksState().revealed;
|
|
99
|
+
return subscribeDecksState(() => {
|
|
100
|
+
const { revealed } = getDecksState();
|
|
101
|
+
if (revealed === seen) {
|
|
102
|
+
return;
|
|
103
|
+
}
|
|
104
|
+
seen = revealed;
|
|
105
|
+
if (!chooseEditor(DECK_SURFACE_ID)) {
|
|
106
|
+
console.warn('[loop] No chat is on screen to show the deck beside.');
|
|
107
|
+
}
|
|
108
|
+
});
|
|
109
|
+
},
|
|
110
|
+
build: () => ({
|
|
111
|
+
components: [
|
|
112
|
+
{
|
|
113
|
+
id: 'decks-menu',
|
|
114
|
+
slot: LoopSlots.promptAction,
|
|
115
|
+
order: 40,
|
|
116
|
+
Component: DecksMenu,
|
|
117
|
+
},
|
|
118
|
+
],
|
|
119
|
+
}),
|
|
120
|
+
});
|
|
121
|
+
/** The footer icon that shows the deck, beside the notebook's and the document's. */
|
|
122
|
+
export const DeckViewPlugin = defineViewPlugin({
|
|
123
|
+
key: 'deck',
|
|
124
|
+
viewId: DECK_SURFACE_ID,
|
|
125
|
+
displayName: 'Deck view',
|
|
126
|
+
description: 'The deck beside the chat, from the composer footer.',
|
|
127
|
+
icon: ProjectIcon,
|
|
128
|
+
tooltip: 'Show the deck',
|
|
129
|
+
octicon: 'project',
|
|
130
|
+
emoji: '\u{1F4CA}',
|
|
131
|
+
order: 12,
|
|
132
|
+
});
|
|
133
|
+
export default LoopDecksPlugin;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright (c) 2025-2026 Datalayer, Inc.
|
|
3
|
+
* Distributed under the terms of the Modified BSD License.
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* The editor surface the deck is shown on: what the selector, the footer
|
|
7
|
+
* icon, the composer menu and the store's "reveal" all point at.
|
|
8
|
+
*
|
|
9
|
+
* @module loop/plugins/decks/surface
|
|
10
|
+
*/
|
|
11
|
+
export const DECK_SURFACE_ID = 'deck';
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The document view: the ephemeral Lexical document, bound to the sandbox.
|
|
3
|
+
*
|
|
4
|
+
* This module is only ever reached through the view's `load()` thunk, which is
|
|
5
|
+
* what keeps `@datalayer/jupyter-lexical` — and the Lumino nodes it initialises
|
|
6
|
+
* on import — out of the shell's bundle until someone opens a document.
|
|
7
|
+
*
|
|
8
|
+
* @module loop/plugins/document/DocumentView
|
|
9
|
+
*/
|
|
10
|
+
import type { JSX } from 'react';
|
|
11
|
+
import { type ChatSurfaceProps } from '../../core';
|
|
12
|
+
export default function DocumentView({ workspace, }: ChatSurfaceProps): JSX.Element;
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { useMemo } from 'react';
|
|
3
|
+
import { useContributions, useSignalValue } from '@datalayer/reactor/react';
|
|
4
|
+
import { Box, Text } from '@primer/react';
|
|
5
|
+
import { EphemeralDocument } from '../../../chat/document/EphemeralDocument';
|
|
6
|
+
import { LoopDocumentToolbar, LoopDocumentToolbarItem, LoopOpeningDocument, } from '../../core';
|
|
7
|
+
import { useEditorToolbar } from '../../core/toolbar';
|
|
8
|
+
import { useSandboxService } from '../agents';
|
|
9
|
+
import { openingDocument } from './openingDocument';
|
|
10
|
+
export default function DocumentView({ workspace, }) {
|
|
11
|
+
const service = useSandboxService();
|
|
12
|
+
const snapshot = useSignalValue(service.snapshot);
|
|
13
|
+
const documentId = workspace.surfaceId;
|
|
14
|
+
// Read before the early return, not after: the hook count must not depend on
|
|
15
|
+
// whether a sandbox happens to be running. As with the notebook, the bar
|
|
16
|
+
// itself belongs to a plugin — switch that off and the document has no
|
|
17
|
+
// toolbar rather than an empty one.
|
|
18
|
+
const toolbar = useEditorToolbar(LoopDocumentToolbar, LoopDocumentToolbarItem, {
|
|
19
|
+
workspace,
|
|
20
|
+
editorId: documentId,
|
|
21
|
+
});
|
|
22
|
+
/*
|
|
23
|
+
* What the editor opens on. A host's own opening document wins over the
|
|
24
|
+
* plugin's; either is built fresh here and handed over as the serialised
|
|
25
|
+
* state `EphemeralDocument` loads exactly once, when it mounts — which is
|
|
26
|
+
* below the early return, so the state is ready before the editor is.
|
|
27
|
+
*/
|
|
28
|
+
const openingEntries = useContributions(LoopOpeningDocument);
|
|
29
|
+
const contributedOpening = openingEntries[0]?.value;
|
|
30
|
+
const opening = useMemo(() => JSON.stringify((contributedOpening?.document ?? openingDocument)()), [contributedOpening]);
|
|
31
|
+
const autoFocus = contributedOpening?.autoFocus ?? true;
|
|
32
|
+
if (snapshot.state !== 'running') {
|
|
33
|
+
return (_jsx(Box, { sx: {
|
|
34
|
+
height: '100%',
|
|
35
|
+
display: 'flex',
|
|
36
|
+
alignItems: 'center',
|
|
37
|
+
justifyContent: 'center',
|
|
38
|
+
color: 'fg.muted',
|
|
39
|
+
fontSize: 1,
|
|
40
|
+
px: 4,
|
|
41
|
+
textAlign: 'center',
|
|
42
|
+
}, children: _jsx(Text, { children: "The document needs a running sandbox for its code blocks. Open the Sandbox view to see what it is doing." }) }));
|
|
43
|
+
}
|
|
44
|
+
// A browser sandbox already owns its kernel; binding to that manager is what
|
|
45
|
+
// puts the agent's code blocks and the reader's in the same one. A server
|
|
46
|
+
// sandbox is reached by URL, as before, and returns null here. The notebook
|
|
47
|
+
// view does exactly this — the document simply never did, which is why it
|
|
48
|
+
// came up blank on Pyodide.
|
|
49
|
+
const browserManager = service.getServiceManager() ??
|
|
50
|
+
undefined;
|
|
51
|
+
return (_jsx(Box, { sx: { height: '100%', minHeight: 0 }, children: _jsx(EphemeralDocument
|
|
52
|
+
// The entry point owns the theme; a second provider here would fight
|
|
53
|
+
// it over BaseStyles and font tokens (§3.5, §3.6).
|
|
54
|
+
, {
|
|
55
|
+
// The entry point owns the theme; a second provider here would fight
|
|
56
|
+
// it over BaseStyles and font tokens (§3.5, §3.6).
|
|
57
|
+
inheritTheme: true, documentId: documentId, content: opening, autoFocus: autoFocus, serviceManager: browserManager, showToolbar: toolbar.present, toolbarExtraItems: toolbar.items,
|
|
58
|
+
// Join the sandbox's kernel rather than starting a rival one.
|
|
59
|
+
kernelId: browserManager ? snapshot.kernelId : undefined, runtimeOverride: !browserManager && snapshot.jupyterUrl
|
|
60
|
+
? {
|
|
61
|
+
baseUrl: snapshot.jupyterUrl,
|
|
62
|
+
// Without the token the server refuses every request and the
|
|
63
|
+
// cell runs into silence — no kernel, no output, no error the
|
|
64
|
+
// reader can act on.
|
|
65
|
+
token: snapshot.jupyterToken,
|
|
66
|
+
}
|
|
67
|
+
: undefined }) }));
|
|
68
|
+
}
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright (c) 2025-2026 Datalayer, Inc.
|
|
3
|
+
* Distributed under the terms of the Modified BSD License.
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* `@datalayer/loop-plugin-document` — a rich-text editor, beside the chat.
|
|
7
|
+
*
|
|
8
|
+
* The same shape as the notebook plugin, contributed to the same point: an
|
|
9
|
+
* editor the conversation is about, not an alternative to it.
|
|
10
|
+
*
|
|
11
|
+
* @module loop/plugins/document
|
|
12
|
+
*/
|
|
13
|
+
import { FileIcon } from '@primer/octicons-react';
|
|
14
|
+
import { contribution, definePlugin } from '@datalayer/reactor';
|
|
15
|
+
import { LoopCommand, LoopEditorView, LoopFrontendTool, requestSurface, LoopDocumentToolbar, LoopOpeningDocument, } from '../../core';
|
|
16
|
+
import { AgentsPlugin } from '../agents';
|
|
17
|
+
export const DOCUMENT_PLUGIN_NAME = '@datalayer/loop-plugin-document';
|
|
18
|
+
export const DocumentPlugin = definePlugin({
|
|
19
|
+
name: DOCUMENT_PLUGIN_NAME,
|
|
20
|
+
displayName: 'Document editor',
|
|
21
|
+
description: 'A rich-text document beside the chat, driven by the agent.',
|
|
22
|
+
octicon: 'file',
|
|
23
|
+
emoji: '\u{1F4C4}',
|
|
24
|
+
// The sandbox is a hard dependency; the shell and the chat are extended
|
|
25
|
+
// through their points instead — see the notebook plugin for why.
|
|
26
|
+
dependencies: [AgentsPlugin],
|
|
27
|
+
// Declared, not merely used: the registry knows who contributed to a
|
|
28
|
+
// point, it cannot know who opened it. Declaring it is also what makes
|
|
29
|
+
// the document toolbar visible on the plugin graph before anything has
|
|
30
|
+
// filled it — which is exactly when knowing it exists is most useful.
|
|
31
|
+
// And the opening document: what the editor holds before anyone types,
|
|
32
|
+
// for a host with a story of its own to open on.
|
|
33
|
+
contributionPoints: [LoopDocumentToolbar, LoopOpeningDocument],
|
|
34
|
+
contributes: [
|
|
35
|
+
// The editor: one entry in the shell's segmented control, one view in
|
|
36
|
+
// the editor column.
|
|
37
|
+
contribution(LoopEditorView, {
|
|
38
|
+
surfaceId: 'document',
|
|
39
|
+
title: 'Document',
|
|
40
|
+
icon: FileIcon,
|
|
41
|
+
order: 20,
|
|
42
|
+
canOpen: workspace => workspace.sandbox.state === 'running',
|
|
43
|
+
unavailableReason: () => 'Needs a running sandbox',
|
|
44
|
+
// Lazy, and it matters more here than anywhere: this module pulls
|
|
45
|
+
// `@datalayer/jupyter-lexical`, which initialises Lumino-backed nodes
|
|
46
|
+
// at import time.
|
|
47
|
+
load: () => import('./DocumentView'),
|
|
48
|
+
}, { id: 'document', order: 20 }),
|
|
49
|
+
contribution(LoopCommand, {
|
|
50
|
+
name: 'document',
|
|
51
|
+
description: 'Open the document beside the chat',
|
|
52
|
+
group: 'Open',
|
|
53
|
+
keybinding: 'Mod+Alt+O',
|
|
54
|
+
run: async ({ workspace }) => {
|
|
55
|
+
// The chat first, because the surface lives beside it; then the
|
|
56
|
+
// surface itself. Switching the view alone leaves whichever surface
|
|
57
|
+
// was already open, so on the chat view — where a reader usually is
|
|
58
|
+
// — this used to do nothing at all.
|
|
59
|
+
workspace.setActiveViewType('chat');
|
|
60
|
+
if (!requestSurface('document')) {
|
|
61
|
+
throw new Error('No chat is on screen to open the document beside.');
|
|
62
|
+
}
|
|
63
|
+
},
|
|
64
|
+
}, { id: 'document' }),
|
|
65
|
+
],
|
|
66
|
+
build: ctx => {
|
|
67
|
+
/*
|
|
68
|
+
* The document's tools, contributed when their module arrives.
|
|
69
|
+
*
|
|
70
|
+
* `lexicalHooks` imports `@datalayer/jupyter-lexical` at module load —
|
|
71
|
+
* the exact import this plugin keeps out of its own entry so a workspace
|
|
72
|
+
* only pays for lexical when a document exists. A static contribution
|
|
73
|
+
* would smuggle it back in. The reactor takes contributions at any time
|
|
74
|
+
* and bumps its revision, so the chat re-reads its tools point the
|
|
75
|
+
* moment these land.
|
|
76
|
+
*/
|
|
77
|
+
void import('../../../tools/adapters/agent-runtimes/lexicalHooks').then(({ createLexicalTools }) => {
|
|
78
|
+
ctx.contribute(LoopFrontendTool, {
|
|
79
|
+
id: 'document-tools',
|
|
80
|
+
tools: workspace => createLexicalTools(workspace.surfaceId),
|
|
81
|
+
}, { id: 'document-tools' });
|
|
82
|
+
});
|
|
83
|
+
return {};
|
|
84
|
+
},
|
|
85
|
+
});
|
|
86
|
+
export default DocumentPlugin;
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* What the document editor holds before anyone types.
|
|
3
|
+
*
|
|
4
|
+
* A heading, a paragraph and a Jupyter cell that has already run — the same
|
|
5
|
+
* small analysis the opening notebook shows, so the two editors open on one
|
|
6
|
+
* story. It exists for the same reason the notebook's opening cell does: an
|
|
7
|
+
* empty editor shows what the editor is, and a short document shows what it is
|
|
8
|
+
* *for* — prose and live code on one page, the output already there.
|
|
9
|
+
*
|
|
10
|
+
* Serialised Lexical state, as `EphemeralDocument` loads it. The cell is the
|
|
11
|
+
* pair the slash menu's "Jupyter Cell" inserts — a `jupyter-input` holding the
|
|
12
|
+
* code and a `jupyter-output` holding what it printed, tied by one uuid. The
|
|
13
|
+
* code is stored already tokenised, the way the editor's own highlighter
|
|
14
|
+
* stores it after a keystroke: a loaded state runs no transforms, so code
|
|
15
|
+
* handed over as plain text would sit unhighlighted until somebody typed in
|
|
16
|
+
* it. The same Prism grammar the highlighter uses does the tokenising here.
|
|
17
|
+
* The output is what this code prints, from a real run: a fabricated output
|
|
18
|
+
* on a page asking to be trusted is a lie told at the worst possible moment.
|
|
19
|
+
*
|
|
20
|
+
* @module loop/plugins/document/openingDocument
|
|
21
|
+
*/
|
|
22
|
+
import type { SerializedEditorState } from 'lexical';
|
|
23
|
+
import 'prismjs/components/prism-python';
|
|
24
|
+
export declare const OPENING_DOCUMENT_TITLE = "Quarterly revenue by region";
|
|
25
|
+
export declare const OPENING_DOCUMENT_PARAGRAPH: string;
|
|
26
|
+
/** The opening document, built fresh: the editor keeps what it is handed. */
|
|
27
|
+
export declare function openingDocument(): SerializedEditorState;
|
|
28
|
+
export default openingDocument;
|
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright (c) 2025-2026 Datalayer, Inc.
|
|
3
|
+
* Distributed under the terms of the Modified BSD License.
|
|
4
|
+
*/
|
|
5
|
+
import Prism from 'prismjs';
|
|
6
|
+
import 'prismjs/components/prism-python';
|
|
7
|
+
import { OPENING_FRAME_REPR, OPENING_SOURCE, } from '../notebook/openingNotebook';
|
|
8
|
+
export const OPENING_DOCUMENT_TITLE = 'Quarterly revenue by region';
|
|
9
|
+
export const OPENING_DOCUMENT_PARAGRAPH = 'Six rows of revenue, two quarters, three regions. The cell below loads them and ' +
|
|
10
|
+
'shows the frame; run it, change it, or ask an agent to take it further — the ' +
|
|
11
|
+
'code and its output live in this document, beside the words about them.';
|
|
12
|
+
const INPUT_UUID = 'opening-document-input';
|
|
13
|
+
const OUTPUT_UUID = 'opening-document-output';
|
|
14
|
+
const text = (content) => ({
|
|
15
|
+
detail: 0,
|
|
16
|
+
format: 0,
|
|
17
|
+
mode: 'normal',
|
|
18
|
+
style: '',
|
|
19
|
+
text: content,
|
|
20
|
+
type: 'text',
|
|
21
|
+
version: 1,
|
|
22
|
+
});
|
|
23
|
+
const block = (type, children, extra = {}) => ({
|
|
24
|
+
children,
|
|
25
|
+
direction: 'ltr',
|
|
26
|
+
format: '',
|
|
27
|
+
indent: 0,
|
|
28
|
+
type,
|
|
29
|
+
version: 1,
|
|
30
|
+
...extra,
|
|
31
|
+
});
|
|
32
|
+
const LINE_BREAK = { type: 'linebreak', version: 1 };
|
|
33
|
+
/** One run of code as the highlighter stores it: text, and the token type it is. */
|
|
34
|
+
const highlight = (content, highlightType) => ({
|
|
35
|
+
detail: 0,
|
|
36
|
+
format: 0,
|
|
37
|
+
mode: 'normal',
|
|
38
|
+
style: '',
|
|
39
|
+
text: content,
|
|
40
|
+
type: 'jupyter-input-highlight',
|
|
41
|
+
version: 1,
|
|
42
|
+
highlightType,
|
|
43
|
+
});
|
|
44
|
+
/**
|
|
45
|
+
* Prism's tokens as highlight nodes — the same walk `@datalayer/jupyter-lexical`
|
|
46
|
+
* makes when it tokenises a code block, so what is stored here is what the
|
|
47
|
+
* editor would have stored itself.
|
|
48
|
+
*/
|
|
49
|
+
const tokenNodes = (tokens) => tokens.flatMap(token => {
|
|
50
|
+
if (typeof token === 'string') {
|
|
51
|
+
return token
|
|
52
|
+
.split('\n')
|
|
53
|
+
.flatMap((part, index) => [
|
|
54
|
+
...(index > 0 ? [LINE_BREAK] : []),
|
|
55
|
+
...(part.length > 0 ? [highlight(part)] : []),
|
|
56
|
+
]);
|
|
57
|
+
}
|
|
58
|
+
const { content, type } = token;
|
|
59
|
+
if (typeof content === 'string') {
|
|
60
|
+
return [highlight(content, type)];
|
|
61
|
+
}
|
|
62
|
+
if (Array.isArray(content)) {
|
|
63
|
+
return content.length === 1 && typeof content[0] === 'string'
|
|
64
|
+
? [highlight(content[0], type)]
|
|
65
|
+
: tokenNodes(content);
|
|
66
|
+
}
|
|
67
|
+
return [];
|
|
68
|
+
});
|
|
69
|
+
/** The code, tokenised; plain lines only if the grammar is somehow missing. */
|
|
70
|
+
const codeNodes = (source) => {
|
|
71
|
+
const grammar = Prism.languages.python;
|
|
72
|
+
if (grammar) {
|
|
73
|
+
return tokenNodes(Prism.tokenize(source, grammar));
|
|
74
|
+
}
|
|
75
|
+
return source
|
|
76
|
+
.split('\n')
|
|
77
|
+
.flatMap((line, index) => [
|
|
78
|
+
...(index > 0 ? [LINE_BREAK] : []),
|
|
79
|
+
...(line.length > 0 ? [highlight(line)] : []),
|
|
80
|
+
]);
|
|
81
|
+
};
|
|
82
|
+
/** The opening document, built fresh: the editor keeps what it is handed. */
|
|
83
|
+
export function openingDocument() {
|
|
84
|
+
const source = OPENING_SOURCE.join('');
|
|
85
|
+
return {
|
|
86
|
+
root: {
|
|
87
|
+
children: [
|
|
88
|
+
block('heading', [text(OPENING_DOCUMENT_TITLE)], { tag: 'h1' }),
|
|
89
|
+
block('paragraph', [text(OPENING_DOCUMENT_PARAGRAPH)], {
|
|
90
|
+
textFormat: 0,
|
|
91
|
+
textStyle: '',
|
|
92
|
+
}),
|
|
93
|
+
block('jupyter-input', codeNodes(source), {
|
|
94
|
+
language: 'python',
|
|
95
|
+
jupyterInputNodeUuid: INPUT_UUID,
|
|
96
|
+
}),
|
|
97
|
+
{
|
|
98
|
+
type: 'jupyter-output',
|
|
99
|
+
version: 1,
|
|
100
|
+
format: '',
|
|
101
|
+
source,
|
|
102
|
+
outputs: [
|
|
103
|
+
{
|
|
104
|
+
output_type: 'execute_result',
|
|
105
|
+
execution_count: 1,
|
|
106
|
+
data: { 'text/plain': OPENING_FRAME_REPR },
|
|
107
|
+
metadata: {},
|
|
108
|
+
},
|
|
109
|
+
],
|
|
110
|
+
jupyterInputNodeUuid: INPUT_UUID,
|
|
111
|
+
jupyterOutputNodeUuid: OUTPUT_UUID,
|
|
112
|
+
},
|
|
113
|
+
],
|
|
114
|
+
direction: 'ltr',
|
|
115
|
+
format: '',
|
|
116
|
+
indent: 0,
|
|
117
|
+
type: 'root',
|
|
118
|
+
version: 1,
|
|
119
|
+
},
|
|
120
|
+
};
|
|
121
|
+
}
|
|
122
|
+
export default openingDocument;
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* What the document's code blocks run on, on the document's toolbar.
|
|
3
|
+
*
|
|
4
|
+
* The prose equivalent of the notebook's kernel light. A document with a
|
|
5
|
+
* Jupyter cell in it is running code, and someone whose cell does nothing
|
|
6
|
+
* should be able to see whether there is anything to run it on without leaving
|
|
7
|
+
* the document.
|
|
8
|
+
*
|
|
9
|
+
* Read through the sandbox service's signal rather than the workspace snapshot
|
|
10
|
+
* so it tracks the sandbox itself, including while it is starting.
|
|
11
|
+
*
|
|
12
|
+
* @module loop/plugins/document-toolbar/SandboxStatusItem
|
|
13
|
+
*/
|
|
14
|
+
import type { JSX } from 'react';
|
|
15
|
+
export declare function SandboxStatusItem(): JSX.Element | null;
|
|
16
|
+
export default SandboxStatusItem;
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { useSignalValue } from '@datalayer/reactor/react';
|
|
3
|
+
import { Box, Text } from '@primer/react';
|
|
4
|
+
import { useOptionalSandboxService } from '../agents';
|
|
5
|
+
import { IDLE_SANDBOX_SNAPSHOT_SIGNAL } from '../../core';
|
|
6
|
+
/** How each state reads, and what colour it reads in. */
|
|
7
|
+
const APPEARANCE = {
|
|
8
|
+
idle: { label: 'No sandbox', color: 'fg.muted' },
|
|
9
|
+
starting: { label: 'Sandbox starting', color: 'attention.fg' },
|
|
10
|
+
running: { label: 'Sandbox ready', color: 'success.fg' },
|
|
11
|
+
stopping: { label: 'Sandbox stopping', color: 'attention.fg' },
|
|
12
|
+
error: { label: 'Sandbox failed', color: 'danger.fg' },
|
|
13
|
+
};
|
|
14
|
+
export function SandboxStatusItem() {
|
|
15
|
+
// Optional: the document is usable without the sandbox plugin, and a status
|
|
16
|
+
// item is the last thing that should insist on it.
|
|
17
|
+
const service = useOptionalSandboxService();
|
|
18
|
+
const snapshot = useSignalValue(service?.snapshot ?? IDLE_SANDBOX_SNAPSHOT_SIGNAL);
|
|
19
|
+
if (!service) {
|
|
20
|
+
return null;
|
|
21
|
+
}
|
|
22
|
+
const appearance = APPEARANCE[snapshot.state] ?? APPEARANCE.idle;
|
|
23
|
+
return (_jsxs(Box, { sx: { display: 'flex', alignItems: 'center', gap: 1, px: 2 }, children: [_jsx(Box, { sx: {
|
|
24
|
+
width: 8,
|
|
25
|
+
height: 8,
|
|
26
|
+
borderRadius: '50%',
|
|
27
|
+
bg: appearance.color,
|
|
28
|
+
flexShrink: 0,
|
|
29
|
+
} }), _jsx(Text, { sx: { fontSize: 0, color: 'fg.muted' }, children: appearance.label })] }));
|
|
30
|
+
}
|
|
31
|
+
export default SandboxStatusItem;
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright (c) 2025-2026 Datalayer, Inc.
|
|
3
|
+
* Distributed under the terms of the Modified BSD License.
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* `@datalayer/loop-plugin-document-toolbar` — the document's own toolbar items.
|
|
7
|
+
*
|
|
8
|
+
* The prose counterpart of the notebook toolbar plugin, and the same
|
|
9
|
+
* arrangement: the document editor offers a point, this plugin provides the
|
|
10
|
+
* bar and puts what belongs to the document on it, and opens a second point
|
|
11
|
+
* where the chat's agent actions arrive. Switch it off and the document has no
|
|
12
|
+
* toolbar at all — no formatting controls, no buttons — and goes on being
|
|
13
|
+
* editable.
|
|
14
|
+
*
|
|
15
|
+
* Lazy, waiting on the document toolbar point — a workspace where nobody opens
|
|
16
|
+
* a document never fetches it.
|
|
17
|
+
*
|
|
18
|
+
* @module loop/plugins/document-toolbar
|
|
19
|
+
*/
|
|
20
|
+
import { defineLazyPlugin, onContributionPoint } from '@datalayer/reactor';
|
|
21
|
+
import { LoopDocumentToolbar, LoopDocumentToolbarItem } from '../../core';
|
|
22
|
+
import { DOCUMENT_TOOLBAR_PLUGIN_NAME } from './names';
|
|
23
|
+
export { DOCUMENT_TOOLBAR_PLUGIN_NAME };
|
|
24
|
+
export const DocumentToolbarPlugin = defineLazyPlugin({
|
|
25
|
+
name: DOCUMENT_TOOLBAR_PLUGIN_NAME,
|
|
26
|
+
displayName: 'Document toolbar',
|
|
27
|
+
description: 'Shows what the document’s code blocks run on.',
|
|
28
|
+
octicon: 'circle',
|
|
29
|
+
emoji: '\u{1F535}',
|
|
30
|
+
activationEvents: [onContributionPoint(LoopDocumentToolbar)],
|
|
31
|
+
/** The bar accepts the buttons, so the bar's owner opens the point. */
|
|
32
|
+
contributionPoints: [LoopDocumentToolbarItem],
|
|
33
|
+
load: () => import('./plugin'),
|
|
34
|
+
});
|
|
35
|
+
export default DocumentToolbarPlugin;
|
|
@@ -0,0 +1,10 @@
|
|
|
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 — see the notebook toolbar's `names` module.
|
|
7
|
+
*
|
|
8
|
+
* @module loop/plugins/document-toolbar/names
|
|
9
|
+
*/
|
|
10
|
+
export const DOCUMENT_TOOLBAR_PLUGIN_NAME = '@datalayer/loop-plugin-document-toolbar';
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
/*
|
|
3
|
+
* Copyright (c) 2025-2026 Datalayer, Inc.
|
|
4
|
+
* Distributed under the terms of the Modified BSD License.
|
|
5
|
+
*/
|
|
6
|
+
/**
|
|
7
|
+
* The document toolbar plugin's module.
|
|
8
|
+
*
|
|
9
|
+
* @module loop/plugins/document-toolbar/plugin
|
|
10
|
+
*/
|
|
11
|
+
import { contribution, definePlugin } from '@datalayer/reactor';
|
|
12
|
+
import { LoopDocumentToolbar } from '../../core';
|
|
13
|
+
import { SandboxStatusItem } from './SandboxStatusItem';
|
|
14
|
+
import { DOCUMENT_TOOLBAR_PLUGIN_NAME } from './names';
|
|
15
|
+
/** Trailing edge, past whatever the Lexical toolbar puts there itself. */
|
|
16
|
+
const STATUS_ORDER = 1000;
|
|
17
|
+
export const DocumentToolbarPlugin = definePlugin({
|
|
18
|
+
name: DOCUMENT_TOOLBAR_PLUGIN_NAME,
|
|
19
|
+
contributes: [
|
|
20
|
+
contribution(LoopDocumentToolbar, {
|
|
21
|
+
items: () => [
|
|
22
|
+
{
|
|
23
|
+
key: 'loop-document-status-spacer',
|
|
24
|
+
type: 'spacer',
|
|
25
|
+
order: STATUS_ORDER - 1,
|
|
26
|
+
},
|
|
27
|
+
{
|
|
28
|
+
key: 'loop-document-sandbox-status',
|
|
29
|
+
type: 'custom',
|
|
30
|
+
order: STATUS_ORDER,
|
|
31
|
+
group: 'sandbox',
|
|
32
|
+
render: () => _jsx(SandboxStatusItem, {}),
|
|
33
|
+
},
|
|
34
|
+
],
|
|
35
|
+
}, { id: 'toolbar', order: 100 }),
|
|
36
|
+
],
|
|
37
|
+
});
|
|
38
|
+
export default DocumentToolbarPlugin;
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export declare const DOCUMENT_VIEW_PLUGIN_NAME = "@datalayer/loop-plugin-document-view";
|
|
2
|
+
export declare const DocumentViewPlugin: 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 DocumentViewPlugin;
|