@datalayer/agent-runtimes 1.0.28 → 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 +18 -5
- 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 +76 -0
- package/lib/components/code-sandboxes/CodeSandboxEnvironmentSelect.js +81 -0
- package/lib/components/code-sandboxes/CodeSandboxLauncher.d.ts +12 -0
- package/lib/components/code-sandboxes/CodeSandboxLauncher.js +132 -25
- package/lib/components/code-sandboxes/CodeSandboxNames.js +75 -29
- package/lib/components/code-sandboxes/CodeSandboxPicker.d.ts +14 -1
- package/lib/components/code-sandboxes/CodeSandboxPicker.js +226 -45
- 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 +16 -1
- package/lib/components/code-sandboxes/CodeSandboxUtils.js +69 -12
- 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.d.ts +29 -0
- package/lib/components/code-sandboxes/codeSandboxProviders.js +90 -0
- package/lib/components/code-sandboxes/index.d.ts +3 -0
- package/lib/components/code-sandboxes/index.js +3 -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 +7 -7
- 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/identity/index.d.ts +1 -1
- package/lib/identity/index.js +1 -1
- package/lib/identity/types.d.ts +1 -1
- package/lib/identity/types.js +1 -1
- 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 +53 -0
- package/lib/models/CodeSandboxVariant.js +77 -0
- 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 +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 +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 +41 -16
- 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/envvars.d.ts +1 -1
- package/lib/specs/envvars.js +3 -3
- 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 +27 -4
- 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 +17 -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 +279 -111
- 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,894 @@
|
|
|
1
|
+
import type { ReadonlySignal } from '@datalayer/reactor';
|
|
2
|
+
import type { ComponentType, ReactNode } from 'react';
|
|
3
|
+
import type { ExecutionState } from '@datalayer/jupyter-react/kernel-indicator';
|
|
4
|
+
import type { ToolbarItem } from '@datalayer/primer-addons';
|
|
5
|
+
import type { FrontendToolDefinition } from '../../types/tools';
|
|
6
|
+
import type { ContextSnapshotData } from '../../types/context';
|
|
7
|
+
/** Lifecycle of the sandbox a workspace is attached to. */
|
|
8
|
+
export type SandboxState = 'idle' | 'starting' | 'running' | 'stopping' | 'error';
|
|
9
|
+
/** What the workspace knows about the sandbox behind it. */
|
|
10
|
+
export type SandboxSnapshot = {
|
|
11
|
+
state: SandboxState;
|
|
12
|
+
/**
|
|
13
|
+
* Why, when the state is `error`.
|
|
14
|
+
*
|
|
15
|
+
* Carried because `error` on its own is the least useful thing a sandbox
|
|
16
|
+
* can say: the indicator drew "connected-dead" with every field unknown,
|
|
17
|
+
* which tells a reader that something is wrong and nothing about what.
|
|
18
|
+
* Whoever sets the state knows the reason; this is where it travels.
|
|
19
|
+
*/
|
|
20
|
+
errorReason?: string;
|
|
21
|
+
variant?: string;
|
|
22
|
+
kernelId?: string;
|
|
23
|
+
jupyterUrl?: string;
|
|
24
|
+
/**
|
|
25
|
+
* The token that server wants, when it wants one.
|
|
26
|
+
*
|
|
27
|
+
* Carried beside the URL because the two are useless apart: a notebook
|
|
28
|
+
* pointed at a tokened Jupyter server without its token is refused at the
|
|
29
|
+
* first request, and the visible symptom is a cell that runs and produces
|
|
30
|
+
* nothing rather than an error anybody can act on.
|
|
31
|
+
*/
|
|
32
|
+
jupyterToken?: string;
|
|
33
|
+
/**
|
|
34
|
+
* Where it runs, as the sandbox plugin names it.
|
|
35
|
+
*
|
|
36
|
+
* Part of the snapshot rather than read from a signal, because this is the
|
|
37
|
+
* path that already re-renders whoever is watching: the workspace holds the
|
|
38
|
+
* snapshot in state, so a plugin asking "is there an agent here?" gets a
|
|
39
|
+
* fresh answer when the target moves instead of a stale closure.
|
|
40
|
+
*/
|
|
41
|
+
target?: string;
|
|
42
|
+
/**
|
|
43
|
+
* The agent-runtimes server backing this sandbox, when it is not the host's.
|
|
44
|
+
*
|
|
45
|
+
* A Datalayer runtime brings its own: the agent runs on the pod, not on the
|
|
46
|
+
* server the workspace was opened against, so a chat addressed at
|
|
47
|
+
* `workspace.serverUrl` would be talking to the wrong machine. Absent for
|
|
48
|
+
* every other target, where the two are the same thing.
|
|
49
|
+
*/
|
|
50
|
+
agentBaseUrl?: string;
|
|
51
|
+
};
|
|
52
|
+
/**
|
|
53
|
+
* What a view reads while the sandbox plugin is absent.
|
|
54
|
+
*
|
|
55
|
+
* Every plugin that watches the sandbox has to call `useSignalValue`
|
|
56
|
+
* unconditionally — the plugin can be switched off from the sidebar, and hook
|
|
57
|
+
* order cannot depend on that — so each needs something signal-shaped to read
|
|
58
|
+
* instead. They used to declare their own, and all four made the same mistake:
|
|
59
|
+
* building the value inside `peek()`.
|
|
60
|
+
*
|
|
61
|
+
* `useSignalValue` is a `useSyncExternalStore`, so `peek()` *is* the snapshot
|
|
62
|
+
* and React compares it by identity. A fresh object per call means the snapshot
|
|
63
|
+
* never settles, and the page re-renders without bound — React says "the result
|
|
64
|
+
* of getSnapshot should be cached", and then a nested-update overflow surfaces
|
|
65
|
+
* wherever the fiftieth render happens to land, which is nowhere near here.
|
|
66
|
+
*
|
|
67
|
+
* So: one frozen value, read by every caller. Typed rather than cast, because
|
|
68
|
+
* the `as never` the four copies used is exactly what let the wrong shape
|
|
69
|
+
* through without a word from the compiler.
|
|
70
|
+
*/
|
|
71
|
+
export declare const IDLE_SANDBOX_SNAPSHOT: SandboxSnapshot;
|
|
72
|
+
/** {@link IDLE_SANDBOX_SNAPSHOT}, shaped as a signal to be read like one. */
|
|
73
|
+
export declare const IDLE_SANDBOX_SNAPSHOT_SIGNAL: ReadonlySignal<SandboxSnapshot>;
|
|
74
|
+
/**
|
|
75
|
+
* The target read while the sandbox plugin is absent.
|
|
76
|
+
*
|
|
77
|
+
* Typed as `undefined` rather than `string | undefined` so that
|
|
78
|
+
* `service?.target ?? IDLE_SANDBOX_TARGET_SIGNAL` keeps whatever the service
|
|
79
|
+
* says a target is: widening it here would quietly turn every caller's
|
|
80
|
+
* `SandboxTarget` into a bare string.
|
|
81
|
+
*/
|
|
82
|
+
export declare const IDLE_SANDBOX_TARGET_SIGNAL: ReadonlySignal<undefined>;
|
|
83
|
+
/**
|
|
84
|
+
* The id the workspace's surfaces are known by.
|
|
85
|
+
*
|
|
86
|
+
* One expression in one place, because three things have to agree on it: the
|
|
87
|
+
* notebook that renders, the document that renders, and the frontend tools an
|
|
88
|
+
* in-page agent is given to reach them. A tool addressed to a different id than
|
|
89
|
+
* the surface on screen edits nothing and reports success, which is the worst
|
|
90
|
+
* way for this to be wrong.
|
|
91
|
+
*
|
|
92
|
+
* Keyed on the *session*, never on the agent. Keying it on the agent meant
|
|
93
|
+
* every switch renamed the surface, and a renamed surface is a new one: the
|
|
94
|
+
* notebook remounted empty, so changing who you were talking to silently threw
|
|
95
|
+
* away the work you were talking about. The notebook belongs to the workspace;
|
|
96
|
+
* the agent is only a visitor to it.
|
|
97
|
+
*/
|
|
98
|
+
export declare function loopSurfaceId(sessionId: string | undefined): string;
|
|
99
|
+
/**
|
|
100
|
+
* What a view or a command is allowed to know about the session it runs in.
|
|
101
|
+
*
|
|
102
|
+
* Deliberately small: a plugin that needs more should get it from the plugin
|
|
103
|
+
* that owns it (the sandbox service, the agent service), not from a context
|
|
104
|
+
* object that grows to mean everything.
|
|
105
|
+
*/
|
|
106
|
+
export type LoopWorkspaceContext = {
|
|
107
|
+
/** Base URL of the agent-runtimes server backing this session. */
|
|
108
|
+
serverUrl: string;
|
|
109
|
+
/** Agent spec bound to the session. */
|
|
110
|
+
agentId: string;
|
|
111
|
+
/**
|
|
112
|
+
* Point the session at a different agent.
|
|
113
|
+
*
|
|
114
|
+
* For whichever plugin offers the choice. It used to keep the new name in
|
|
115
|
+
* its own state, which changed the label and nothing else: everything that
|
|
116
|
+
* matters — the chat's endpoint, the sandbox connection, the notebook's id —
|
|
117
|
+
* reads `agentId` from here, so a switch that does not reach this context is
|
|
118
|
+
* a switch that did not happen.
|
|
119
|
+
*/
|
|
120
|
+
setAgentId: (agentId: string) => void;
|
|
121
|
+
/** Conversation being continued, when there is one. */
|
|
122
|
+
conversationId?: string;
|
|
123
|
+
/**
|
|
124
|
+
* The id the notebook and the document on screen are addressed by.
|
|
125
|
+
*
|
|
126
|
+
* Fixed for the life of the workspace, so it survives an agent switch — see
|
|
127
|
+
* `loopSurfaceId`. Read this rather than deriving one, or the tools an agent
|
|
128
|
+
* is handed will address a surface nobody is looking at.
|
|
129
|
+
*/
|
|
130
|
+
surfaceId: string;
|
|
131
|
+
/** Active model id, as an agentspecs catalog id. */
|
|
132
|
+
model?: string;
|
|
133
|
+
/** The sandbox, as last reported. */
|
|
134
|
+
sandbox: SandboxSnapshot;
|
|
135
|
+
/**
|
|
136
|
+
* For whichever plugin owns the sandbox to keep the workspace informed.
|
|
137
|
+
*
|
|
138
|
+
* The shell does not know which plugin that is — it just needs the value,
|
|
139
|
+
* because `canOpen` gates are asked about the live workspace and a stale
|
|
140
|
+
* snapshot would grey out a notebook that has a perfectly good kernel.
|
|
141
|
+
*/
|
|
142
|
+
setSandbox: (sandbox: SandboxSnapshot) => void;
|
|
143
|
+
/** Which view is on screen. */
|
|
144
|
+
activeViewType: string;
|
|
145
|
+
/** Put another view on screen. */
|
|
146
|
+
setActiveViewType: (viewType: string) => void;
|
|
147
|
+
/** Prompts typed by whoever renders the prompt, for whichever view answers. */
|
|
148
|
+
prompts: PromptChannel;
|
|
149
|
+
/**
|
|
150
|
+
* Run what a person typed: a slash command when it is one, the prompt
|
|
151
|
+
* channel otherwise.
|
|
152
|
+
*
|
|
153
|
+
* The prompt is not the shell's any more — the chat plugin renders it — but
|
|
154
|
+
* dispatch still belongs to the workspace, which is the only thing that can
|
|
155
|
+
* see every command every plugin contributed. A plugin rendering a prompt
|
|
156
|
+
* calls this and shows whatever comes back.
|
|
157
|
+
*/
|
|
158
|
+
submit: (message: string) => Promise<SubmitOutcome>;
|
|
159
|
+
/** What the active view is doing, as it last reported. */
|
|
160
|
+
viewControls: ViewControls;
|
|
161
|
+
/** For a view to report itself. Pass `null` on unmount. */
|
|
162
|
+
setViewControls: (controls: ViewControls | null) => void;
|
|
163
|
+
/**
|
|
164
|
+
* Whatever the host wants in the chat's title bar.
|
|
165
|
+
*
|
|
166
|
+
* The plugin road to the same place is `LoopSlots.chatHeader`, and it is the
|
|
167
|
+
* better one for anything that belongs to a capability. This is for the host
|
|
168
|
+
* that is embedding the workspace and has one button to add — a page that
|
|
169
|
+
* mounts `LoopWorkspace` should not have to write a plugin to put an icon
|
|
170
|
+
* next to the agent's name.
|
|
171
|
+
*
|
|
172
|
+
* Rendered before the chat's own controls, so the host's additions read as
|
|
173
|
+
* part of the page and the chat's stay together at the trailing edge.
|
|
174
|
+
*/
|
|
175
|
+
chatHeaderActions?: ReactNode;
|
|
176
|
+
};
|
|
177
|
+
/**
|
|
178
|
+
* How a prompt typed in the shell reaches whatever should answer it.
|
|
179
|
+
*
|
|
180
|
+
* The prompt belongs to the shell and the answer belongs to a view, so
|
|
181
|
+
* something has to carry a message across without the shell knowing which
|
|
182
|
+
* plugin is listening. A channel does that in both directions: the shell
|
|
183
|
+
* publishes, a mounted view subscribes, and neither imports the other.
|
|
184
|
+
*/
|
|
185
|
+
export type PromptChannel = {
|
|
186
|
+
/** Publish a prompt. Returns whether anything was listening. */
|
|
187
|
+
submit: (message: string) => boolean;
|
|
188
|
+
/** Listen for prompts. Returns an unsubscribe. */
|
|
189
|
+
subscribe: (listener: (message: string) => void) => () => void;
|
|
190
|
+
};
|
|
191
|
+
/** Create a prompt channel. The shell owns one per workspace. */
|
|
192
|
+
export declare function createPromptChannel(): PromptChannel;
|
|
193
|
+
/**
|
|
194
|
+
* What the active view tells the shell about itself.
|
|
195
|
+
*
|
|
196
|
+
* The prompt lives in the shell but the work happens in a view, so the spinner
|
|
197
|
+
* and the stop button would otherwise be in the wrong place: a chat streaming a
|
|
198
|
+
* reply, a notebook running a cell and a sandbox starting up all need the same
|
|
199
|
+
* two facts said the same way.
|
|
200
|
+
*/
|
|
201
|
+
export type ViewControls = {
|
|
202
|
+
/** Whether the view is working on something. */
|
|
203
|
+
busy?: boolean;
|
|
204
|
+
/** How to stop it, when it can be stopped. */
|
|
205
|
+
stop?: () => void;
|
|
206
|
+
/** Start the view's work over — the chat resets its conversation. */
|
|
207
|
+
newChat?: () => void;
|
|
208
|
+
};
|
|
209
|
+
/** Props every view receives. */
|
|
210
|
+
export type LoopViewProps = {
|
|
211
|
+
viewType: string;
|
|
212
|
+
workspace: LoopWorkspaceContext;
|
|
213
|
+
};
|
|
214
|
+
/** A view the workspace may open. */
|
|
215
|
+
export type ViewTypeContribution = {
|
|
216
|
+
/** Stable id: 'chat' | 'notebook' | 'document' | 'sandbox' | 'a2ui'. */
|
|
217
|
+
viewType: string;
|
|
218
|
+
title: string;
|
|
219
|
+
/** Drawn beside the title in the switcher. Any component: an octicon,
|
|
220
|
+
* a Datalayer icon, or something a plugin brings itself. */
|
|
221
|
+
icon?: ComponentType<any>;
|
|
222
|
+
/** Ordering in the view switcher. Lower is earlier. */
|
|
223
|
+
order?: number;
|
|
224
|
+
/**
|
|
225
|
+
* Whether the view can be opened right now, judged against the live
|
|
226
|
+
* workspace. A notebook says "only with a running sandbox"; the reactor
|
|
227
|
+
* holds no opinion about it, and neither does the switcher.
|
|
228
|
+
*/
|
|
229
|
+
canOpen?: (workspace: LoopWorkspaceContext) => boolean;
|
|
230
|
+
/**
|
|
231
|
+
* Why it cannot be opened, for a disabled tab's tooltip. A tab that is
|
|
232
|
+
* greyed out with no explanation is worse than no tab.
|
|
233
|
+
*/
|
|
234
|
+
unavailableReason?: (workspace: LoopWorkspaceContext) => string;
|
|
235
|
+
/**
|
|
236
|
+
* Lazy module. Non-negotiable: the document view pulls
|
|
237
|
+
* `@datalayer/jupyter-lexical` and its Lumino side effects, and must not be
|
|
238
|
+
* in the shell's bundle until someone opens it.
|
|
239
|
+
*/
|
|
240
|
+
load: () => Promise<{
|
|
241
|
+
default: ComponentType<LoopViewProps>;
|
|
242
|
+
}>;
|
|
243
|
+
};
|
|
244
|
+
/**
|
|
245
|
+
* What running a typed message did.
|
|
246
|
+
*
|
|
247
|
+
* `handled` distinguishes the two silences: a command that ran and printed
|
|
248
|
+
* nothing, and a prompt nobody was listening for. Only the second is worth
|
|
249
|
+
* telling the person about.
|
|
250
|
+
*/
|
|
251
|
+
export type SubmitOutcome = {
|
|
252
|
+
/** Whether anything took the message — a command, or a listening view. */
|
|
253
|
+
handled: boolean;
|
|
254
|
+
/** The command's name, when it was one. */
|
|
255
|
+
command?: string;
|
|
256
|
+
/** What the command returned, for the caller to render. */
|
|
257
|
+
result?: CommandResult;
|
|
258
|
+
/** Why it was not handled, in the person's terms. */
|
|
259
|
+
reason?: string;
|
|
260
|
+
};
|
|
261
|
+
/** What a command run produces. */
|
|
262
|
+
export type CommandResult = {
|
|
263
|
+
/** Rendered by the shell as a transient panel. */
|
|
264
|
+
content?: unknown;
|
|
265
|
+
/** Sent to the agent as if the user had typed it. */
|
|
266
|
+
prompt?: string;
|
|
267
|
+
};
|
|
268
|
+
/** One argument of a command, for completion in either front-end. */
|
|
269
|
+
export type CommandArgSpec = {
|
|
270
|
+
name: string;
|
|
271
|
+
description?: string;
|
|
272
|
+
required?: boolean;
|
|
273
|
+
choices?: readonly string[] | (() => readonly string[] | Promise<readonly string[]>);
|
|
274
|
+
};
|
|
275
|
+
/** What a command is given when it runs. */
|
|
276
|
+
export type LoopCommandContext = {
|
|
277
|
+
workspace: LoopWorkspaceContext;
|
|
278
|
+
/** The raw text after the command name. */
|
|
279
|
+
argv: string;
|
|
280
|
+
};
|
|
281
|
+
/**
|
|
282
|
+
* A slash command. Mirrored one-for-one by `SlashCommandSpec` in Python, so a
|
|
283
|
+
* command is described the same way in the terminal and here even when the two
|
|
284
|
+
* implementations differ — a Rich panel there, a React panel here.
|
|
285
|
+
*/
|
|
286
|
+
export type CommandContribution = {
|
|
287
|
+
name: string;
|
|
288
|
+
aliases?: readonly string[];
|
|
289
|
+
description: string;
|
|
290
|
+
/** Grouping in `/help`. */
|
|
291
|
+
group?: string;
|
|
292
|
+
/**
|
|
293
|
+
* A keystroke that runs it, written once for every platform.
|
|
294
|
+
*
|
|
295
|
+
* `'Mod+Alt+G'` is ⌘⌥G on a Mac and Ctrl+Alt+G elsewhere. Optional, and most
|
|
296
|
+
* commands have none: a slash command is reached by typing its name, and a
|
|
297
|
+
* shortcut is worth spending only on the few things somebody does often.
|
|
298
|
+
*
|
|
299
|
+
* Bound by whichever surface owns the keyboard — the command palette, when
|
|
300
|
+
* it is mounted. The Python side has no equivalent because a terminal has no
|
|
301
|
+
* keystrokes to give away.
|
|
302
|
+
*/
|
|
303
|
+
keybinding?: string;
|
|
304
|
+
args?: readonly CommandArgSpec[];
|
|
305
|
+
run: (ctx: LoopCommandContext) => Promise<CommandResult | void>;
|
|
306
|
+
};
|
|
307
|
+
/** A candidate offered by an `@` namespace. */
|
|
308
|
+
export type MentionCandidate = {
|
|
309
|
+
id: string;
|
|
310
|
+
label: string;
|
|
311
|
+
description?: string;
|
|
312
|
+
emoji?: string;
|
|
313
|
+
};
|
|
314
|
+
/** What a resolved mention adds to the turn. */
|
|
315
|
+
export type MentionBinding = {
|
|
316
|
+
/** Text substituted into the prompt. */
|
|
317
|
+
text: string;
|
|
318
|
+
/** Anything the shell should attach to the turn (a delegate, context). */
|
|
319
|
+
payload?: unknown;
|
|
320
|
+
};
|
|
321
|
+
/** An `@` namespace: `@agent` first, `@file` and `@cell` later. */
|
|
322
|
+
export type MentionContribution = {
|
|
323
|
+
namespace: string;
|
|
324
|
+
trigger?: string;
|
|
325
|
+
list: (workspace: LoopWorkspaceContext, query: string) => Promise<readonly MentionCandidate[]>;
|
|
326
|
+
resolve: (workspace: LoopWorkspaceContext, id: string) => Promise<MentionBinding>;
|
|
327
|
+
};
|
|
328
|
+
/**
|
|
329
|
+
* An editor the chat can host beside the conversation.
|
|
330
|
+
*
|
|
331
|
+
* A notebook and a document are not alternatives *to* the chat — they are what
|
|
332
|
+
* the conversation is about, and a person reading a reply wants the cell it
|
|
333
|
+
* just changed in view, not one tab away. So they are contributed to the chat
|
|
334
|
+
* rather than to the workspace, and the chat decides where they sit.
|
|
335
|
+
*
|
|
336
|
+
* The shape is deliberately close to `ViewTypeContribution`: the same gating,
|
|
337
|
+
* the same lazy `load`, so a plugin author who has written one has written the
|
|
338
|
+
* other.
|
|
339
|
+
*/
|
|
340
|
+
export type ChatSurfaceContribution = {
|
|
341
|
+
/** Stable id: 'notebook' | 'document'. */
|
|
342
|
+
surfaceId: string;
|
|
343
|
+
title: string;
|
|
344
|
+
icon?: ComponentType<any>;
|
|
345
|
+
/** Ordering in the chat's surface picker. Lower is earlier. */
|
|
346
|
+
order?: number;
|
|
347
|
+
/** Whether it can be opened right now, judged against the live workspace. */
|
|
348
|
+
canOpen?: (workspace: LoopWorkspaceContext) => boolean;
|
|
349
|
+
/** Why it cannot be, for the disabled control's tooltip. */
|
|
350
|
+
unavailableReason?: (workspace: LoopWorkspaceContext) => string;
|
|
351
|
+
/** Lazy module, for the same reason views are lazy. */
|
|
352
|
+
load: () => Promise<{
|
|
353
|
+
default: ComponentType<ChatSurfaceProps>;
|
|
354
|
+
}>;
|
|
355
|
+
};
|
|
356
|
+
/** Props a chat surface receives. */
|
|
357
|
+
export type ChatSurfaceProps = {
|
|
358
|
+
surfaceId: string;
|
|
359
|
+
workspace: LoopWorkspaceContext;
|
|
360
|
+
};
|
|
361
|
+
/** Views the workspace may open. */
|
|
362
|
+
export declare const LoopViewType: import("@datalayer/reactor").ContributionPoint<ViewTypeContribution>;
|
|
363
|
+
/** Editors the chat hosts beside the conversation. */
|
|
364
|
+
/**
|
|
365
|
+
* Editors the shell hosts beside the conversation.
|
|
366
|
+
*
|
|
367
|
+
* Owned by the shell plugin, not the chat: which editors exist is a fact
|
|
368
|
+
* about the workspace, and the segmented control that offers them shows
|
|
369
|
+
* nothing at all until a plugin contributes one. The chat renders the chosen
|
|
370
|
+
* editor's column, but the choice is the shell's.
|
|
371
|
+
*
|
|
372
|
+
* `LoopChatSurface` is the same point under its historical name, kept so
|
|
373
|
+
* nothing that contributed to it has to move in the same commit.
|
|
374
|
+
*/
|
|
375
|
+
export declare const LoopEditorView: import("@datalayer/reactor").ContributionPoint<ChatSurfaceContribution>;
|
|
376
|
+
/** @deprecated Use {@link LoopEditorView}: the shell owns the point now. */
|
|
377
|
+
export declare const LoopChatSurface: import("@datalayer/reactor").ContributionPoint<ChatSurfaceContribution>;
|
|
378
|
+
/** The shape an editor contributes — one view in the shell's editor point. */
|
|
379
|
+
export type EditorViewContribution = ChatSurfaceContribution;
|
|
380
|
+
/**
|
|
381
|
+
* Frontend tools the chat hands its agent.
|
|
382
|
+
*
|
|
383
|
+
* Opened by the chat plugin, filled by whoever owns a capability: the
|
|
384
|
+
* notebook contributes its cell tools, the document its lexical ones, and a
|
|
385
|
+
* host plugin can add its own. The factory runs against the live workspace,
|
|
386
|
+
* so a tool addressed by `surfaceId` binds to the session on screen.
|
|
387
|
+
*/
|
|
388
|
+
export type FrontendToolContribution = {
|
|
389
|
+
/** Stable id, for the registry and the graph. */
|
|
390
|
+
id: string;
|
|
391
|
+
/** Build the tools for this workspace. Called on mount and agent switch. */
|
|
392
|
+
tools: (workspace: LoopWorkspaceContext) => FrontendToolDefinition[];
|
|
393
|
+
/**
|
|
394
|
+
* Whether these tools stay in the chat view — the conversation alone, no
|
|
395
|
+
* editor on screen. Off by default: the chat view withholds tools that
|
|
396
|
+
* change a notebook or a document the reader cannot see. A contribution
|
|
397
|
+
* whose tools touch no editor — a deck the agent makes, say — says so here.
|
|
398
|
+
*/
|
|
399
|
+
chatView?: boolean;
|
|
400
|
+
};
|
|
401
|
+
export declare const LoopFrontendTool: import("@datalayer/reactor").ContributionPoint<FrontendToolContribution>;
|
|
402
|
+
/**
|
|
403
|
+
* The composer — the input prompt — arriving as a plugin.
|
|
404
|
+
*
|
|
405
|
+
* The chat view *assembles* everything the composer needs (the draft, the
|
|
406
|
+
* send handler, the menus' data, the placement) and hands it over; the
|
|
407
|
+
* plugin owns the component that renders it. Split this way round because
|
|
408
|
+
* the wiring is the chat's knowledge and the surface is the plugin's: a
|
|
409
|
+
* host can replace the composer's face without re-deriving a single query,
|
|
410
|
+
* and unticking the input-prompt plugin removes the composer the way
|
|
411
|
+
* unticking the notebook removes the editor.
|
|
412
|
+
*/
|
|
413
|
+
export type LoopChatComposerProps = {
|
|
414
|
+
workspace: LoopWorkspaceContext;
|
|
415
|
+
/** The standard composer's props, fully assembled by the chat view. */
|
|
416
|
+
composer: import('../../chat/prompt/InputPrompt').InputPromptProps;
|
|
417
|
+
};
|
|
418
|
+
export type ChatComposerContribution = {
|
|
419
|
+
/** Stable id, for the registry and the graph. */
|
|
420
|
+
id: string;
|
|
421
|
+
Component: ComponentType<LoopChatComposerProps>;
|
|
422
|
+
};
|
|
423
|
+
export declare const LoopChatComposer: import("@datalayer/reactor").ContributionPoint<ChatComposerContribution>;
|
|
424
|
+
/**
|
|
425
|
+
* The chat's title bar, arriving as a plugin.
|
|
426
|
+
*
|
|
427
|
+
* Same shape as the composer point: the chat assembles the header's full
|
|
428
|
+
* props — title, kernel indicator, runtime status, the actions row — and the
|
|
429
|
+
* plugin renders them, by default with the standard `ChatBaseHeader`. No
|
|
430
|
+
* contribution, no title bar.
|
|
431
|
+
*/
|
|
432
|
+
export type LoopChatHeaderProps = {
|
|
433
|
+
workspace: LoopWorkspaceContext;
|
|
434
|
+
/** The standard header's props, fully assembled by the chat. */
|
|
435
|
+
header: import('../../chat/header/ChatHeaderBase').ChatBaseHeaderProps;
|
|
436
|
+
};
|
|
437
|
+
export type ChatHeaderContribution = {
|
|
438
|
+
/** Stable id, for the registry and the graph. */
|
|
439
|
+
id: string;
|
|
440
|
+
Component: ComponentType<LoopChatHeaderProps>;
|
|
441
|
+
};
|
|
442
|
+
export declare const LoopChatHeader: import("@datalayer/reactor").ContributionPoint<ChatHeaderContribution>;
|
|
443
|
+
/**
|
|
444
|
+
* The agent a capacity plugin wants the workspace to run.
|
|
445
|
+
*
|
|
446
|
+
* A capacity plugin — codemode, hooks, guardrails — is a statement about
|
|
447
|
+
* *which agent* answers and *how it is created*: an agentspec id and the
|
|
448
|
+
* create-payload details the server needs. Contributed here rather than
|
|
449
|
+
* configured on the agents plugin, so mounting the capacity is the whole
|
|
450
|
+
* gesture: the agents plugin reads the first blueprint when its Local
|
|
451
|
+
* target creates the agent, and a workspace with no blueprint behaves as
|
|
452
|
+
* before. The workspace's `agentId` still names the instance; the blueprint
|
|
453
|
+
* says what that instance is made from.
|
|
454
|
+
*/
|
|
455
|
+
export type AgentBlueprintContribution = {
|
|
456
|
+
/** Stable id, for the registry and the graph. */
|
|
457
|
+
id: string;
|
|
458
|
+
/** The agentspec the agent is created from. */
|
|
459
|
+
specId?: string;
|
|
460
|
+
/** Extra fields merged into the server's create-agent payload. */
|
|
461
|
+
createPayload?: Record<string, unknown>;
|
|
462
|
+
};
|
|
463
|
+
export declare const LoopAgentBlueprint: import("@datalayer/reactor").ContributionPoint<AgentBlueprintContribution>;
|
|
464
|
+
/** One conversation opener a plugin offers on the empty chat. */
|
|
465
|
+
export type ChatSuggestionItem = {
|
|
466
|
+
/** The chip's words. */
|
|
467
|
+
text: string;
|
|
468
|
+
/** What is submitted; the chip's words when absent. */
|
|
469
|
+
message?: string;
|
|
470
|
+
emoji?: string;
|
|
471
|
+
};
|
|
472
|
+
/**
|
|
473
|
+
* Conversation openers, contributed ahead of the spec's own.
|
|
474
|
+
*
|
|
475
|
+
* A capacity plugin knows what its agent is worth asking; when anything is
|
|
476
|
+
* contributed here the chat shows it instead of the spec's generic list.
|
|
477
|
+
*/
|
|
478
|
+
export type ChatSuggestionContribution = {
|
|
479
|
+
/** Stable id, for the registry and the graph. */
|
|
480
|
+
id: string;
|
|
481
|
+
suggestions: ChatSuggestionItem[];
|
|
482
|
+
};
|
|
483
|
+
export declare const LoopChatSuggestion: import("@datalayer/reactor").ContributionPoint<ChatSuggestionContribution>;
|
|
484
|
+
/**
|
|
485
|
+
* The per-example chat extras a host feeds the loop's conversation live.
|
|
486
|
+
*
|
|
487
|
+
* An example that keeps its bespoke panels around a `LoopEmbed` still has
|
|
488
|
+
* things to say to the chat *column* — an error banner it computes from its
|
|
489
|
+
* own state, the codemode toggle and the MCP/codemode status the footer
|
|
490
|
+
* shows. These change over the life of the page, so the contribution carries
|
|
491
|
+
* a **signal** rather than a value: the example updates `.value`, and the
|
|
492
|
+
* chat view re-renders through `useSignalValue`. `createChatExtrasPlugin`
|
|
493
|
+
* builds the plugin and hands back the setter.
|
|
494
|
+
*/
|
|
495
|
+
export type LoopChatExtrasValue = {
|
|
496
|
+
/** A banner drawn above the transcript — the example's own diagnostics. */
|
|
497
|
+
errorBanner?: {
|
|
498
|
+
message: string;
|
|
499
|
+
variant: 'danger' | 'warning';
|
|
500
|
+
};
|
|
501
|
+
/** Whether the codemode toggle in the footer reads as on. */
|
|
502
|
+
codemodeEnabled?: boolean;
|
|
503
|
+
/** Called when the reader flips the codemode toggle. */
|
|
504
|
+
onToggleCodemode?: (enabled: boolean) => void | Promise<void>;
|
|
505
|
+
/** Live MCP toolset status for the footer indicator. */
|
|
506
|
+
mcpStatusData?: import('../../types/mcp').McpToolsetsStatusResponse | null;
|
|
507
|
+
/** Live codemode status for the footer indicator. */
|
|
508
|
+
codemodeStatusData?: import('../../types/stream').CodemodeStatusData | null;
|
|
509
|
+
/**
|
|
510
|
+
* A custom renderer for tool results in the transcript.
|
|
511
|
+
*
|
|
512
|
+
* For an example whose demonstration *is* how a tool result is drawn — the
|
|
513
|
+
* A2UI examples render their agent's surface here. Wins over the notebook
|
|
514
|
+
* tool-surface rendering when set. See `ChatBase.renderToolResult`.
|
|
515
|
+
*/
|
|
516
|
+
renderToolResult?: import('../../types/chat').RenderToolResult;
|
|
517
|
+
/**
|
|
518
|
+
* Extra frontend tools the agent may call, from the host example.
|
|
519
|
+
*
|
|
520
|
+
* Folded into the loop's frontend-tool set alongside the notebook and
|
|
521
|
+
* document tools (first name wins). For an example whose demo is a bespoke
|
|
522
|
+
* client tool — A2UI Jupyter Output's `run_jupyter_output_demo`.
|
|
523
|
+
*/
|
|
524
|
+
frontendTools?: FrontendToolDefinition[];
|
|
525
|
+
/**
|
|
526
|
+
* Take the composer off the screen, live.
|
|
527
|
+
*
|
|
528
|
+
* The chat plugin's `hidePrompt` is configuration — set once when the
|
|
529
|
+
* reactor is built. This is the same switch as a signal, for a host whose
|
|
530
|
+
* page changes what owns the typing while the workspace is running: a
|
|
531
|
+
* landing page that swaps the prompt for a connection panel when the
|
|
532
|
+
* visitor chooses to bring their own agent, without rebuilding the reactor
|
|
533
|
+
* and losing the notebook the visitor was just working in.
|
|
534
|
+
*/
|
|
535
|
+
hidePrompt?: boolean;
|
|
536
|
+
/**
|
|
537
|
+
* Whether the composer draws its usage band — context, session, turn.
|
|
538
|
+
* True unless a host says otherwise: a public page turns the counters off,
|
|
539
|
+
* because they answer questions a visitor is not asking.
|
|
540
|
+
*/
|
|
541
|
+
showTokenUsage?: boolean;
|
|
542
|
+
/**
|
|
543
|
+
* Openers the host has taken off its page, by their words.
|
|
544
|
+
*
|
|
545
|
+
* A team's spec offers the requests its members answer; a page that
|
|
546
|
+
* mounts the team without one member's tools — a landing page with no
|
|
547
|
+
* decks plugin — would otherwise offer a chip that leads nowhere. Matched
|
|
548
|
+
* on the chip's text, which is how the chat tells openers apart already.
|
|
549
|
+
*/
|
|
550
|
+
hiddenOpeners?: string[];
|
|
551
|
+
/**
|
|
552
|
+
* Told what the agent has used, each time the chat learns it.
|
|
553
|
+
*
|
|
554
|
+
* The composer's usage band is for a reader who wants the numbers in the
|
|
555
|
+
* chat. A host that draws its own — a landing page counting what a
|
|
556
|
+
* question cost under the notebook it was asked in — needs the same
|
|
557
|
+
* snapshot outside the chat, without turning the band back on. Called with
|
|
558
|
+
* every snapshot the chat receives, `undefined` included.
|
|
559
|
+
*/
|
|
560
|
+
onUsage?: (snapshot: ContextSnapshotData | undefined) => void;
|
|
561
|
+
};
|
|
562
|
+
export type ChatExtrasContribution = {
|
|
563
|
+
/** Stable id, for the registry and the graph. */
|
|
564
|
+
id: string;
|
|
565
|
+
/** The live extras. Updated by the example; read by the chat view. */
|
|
566
|
+
extras: ReadonlySignal<LoopChatExtrasValue>;
|
|
567
|
+
};
|
|
568
|
+
export declare const LoopChatExtras: import("@datalayer/reactor").ContributionPoint<ChatExtrasContribution>;
|
|
569
|
+
/**
|
|
570
|
+
* What the notebook already holds when the workspace opens.
|
|
571
|
+
*
|
|
572
|
+
* The notebook plugin ships one opening cell with a result in it, so a visitor
|
|
573
|
+
* never meets a blank editor. A host whose argument needs more — a landing
|
|
574
|
+
* page showing several cells and an output in the first viewport — contributes
|
|
575
|
+
* its own here, and the notebook view opens on that instead. First
|
|
576
|
+
* contribution wins.
|
|
577
|
+
*
|
|
578
|
+
* `notebook` is a factory rather than a document: `EphemeralNotebook` keeps
|
|
579
|
+
* the object it is first given and edits it in place, so a shared literal
|
|
580
|
+
* would be a shared notebook. `prime` is the code the view runs on the sandbox
|
|
581
|
+
* as soon as one is ready, so the kernel agrees with the cells on screen —
|
|
582
|
+
* without it a variable the cells show is undefined the first time anyone
|
|
583
|
+
* uses it. Left unset, the code cells' own source is run, top to bottom.
|
|
584
|
+
*/
|
|
585
|
+
export type OpeningNotebookContribution = {
|
|
586
|
+
/** Stable id, for the registry and the graph. */
|
|
587
|
+
id: string;
|
|
588
|
+
/** The document to open on, built fresh per mount. */
|
|
589
|
+
notebook: () => import('@jupyterlab/nbformat').INotebookContent;
|
|
590
|
+
/** Code to run on the sandbox so it matches the cells; defaults to them. */
|
|
591
|
+
prime?: string;
|
|
592
|
+
};
|
|
593
|
+
export declare const LoopOpeningNotebook: import("@datalayer/reactor").ContributionPoint<OpeningNotebookContribution>;
|
|
594
|
+
/**
|
|
595
|
+
* What the document editor holds when it opens.
|
|
596
|
+
*
|
|
597
|
+
* The document's twin of {@link LoopOpeningNotebook}: a host that wants the
|
|
598
|
+
* editor to open on something — a heading, a paragraph, a cell that has
|
|
599
|
+
* already run — contributes it here, as a serialised Lexical editor state
|
|
600
|
+
* built fresh per mount. Nothing contributed means the document plugin's own
|
|
601
|
+
* opening document, which is a short one of exactly that shape.
|
|
602
|
+
*/
|
|
603
|
+
export type OpeningDocumentContribution = {
|
|
604
|
+
/** Stable id, for the registry and the graph. */
|
|
605
|
+
id: string;
|
|
606
|
+
/** The editor state to open on, built fresh per mount. */
|
|
607
|
+
document: () => import('lexical').SerializedEditorState;
|
|
608
|
+
/**
|
|
609
|
+
* Whether the document takes the caret when it mounts. Defaults to `true`
|
|
610
|
+
* — the document's own long-standing behaviour, unconditional until this
|
|
611
|
+
* field existed.
|
|
612
|
+
*
|
|
613
|
+
* A host that also asks the *chat's* composer to focus on mount (see
|
|
614
|
+
* `LoopPresetOptions.autoFocusPrompt`) should set this to `false`: the
|
|
615
|
+
* chat's own autofocus runs the moment its composer paints, but the
|
|
616
|
+
* document waits on a sandbox and a kernel to start first, so its
|
|
617
|
+
* unconditional autofocus used to win the race by simply going second —
|
|
618
|
+
* moving the caret to the document a beat after the composer had already
|
|
619
|
+
* (and correctly) claimed it.
|
|
620
|
+
*/
|
|
621
|
+
autoFocus?: boolean;
|
|
622
|
+
};
|
|
623
|
+
export declare const LoopOpeningDocument: import("@datalayer/reactor").ContributionPoint<OpeningDocumentContribution>;
|
|
624
|
+
/**
|
|
625
|
+
* Whether there is anything to chat with.
|
|
626
|
+
*
|
|
627
|
+
* A gate rather than an extension point of its own: `defineGate` is the
|
|
628
|
+
* reactor's primitive for exactly this — one plugin asking the others whether
|
|
629
|
+
* something may happen, and being told why not in words it can show. The chat
|
|
630
|
+
* asks; the sandbox plugin answers, because only some of the places code runs
|
|
631
|
+
* bring an agent with them. Neither imports the other.
|
|
632
|
+
*
|
|
633
|
+
* Nothing answering means allowed, so a workspace with no sandbox plugin has a
|
|
634
|
+
* working chat.
|
|
635
|
+
*/
|
|
636
|
+
export declare const LoopAgentGate: import("@datalayer/reactor").Gate<LoopWorkspaceContext>;
|
|
637
|
+
/** @deprecated Use `LoopAgentGate`; chat is one consumer of agent availability. */
|
|
638
|
+
export declare const LoopChatGate: import("@datalayer/reactor").Gate<LoopWorkspaceContext>;
|
|
639
|
+
/**
|
|
640
|
+
* What an editor hands a toolbar contributor.
|
|
641
|
+
*
|
|
642
|
+
* The workspace, so an item can submit a prompt or switch views, and the id of
|
|
643
|
+
* the editor instance, so an item that reports on *this* editor — a kernel
|
|
644
|
+
* light, a dirty marker — can find it. Deliberately not the editor's adapter:
|
|
645
|
+
* a toolbar item that could reach inside the editor would couple every
|
|
646
|
+
* contributor to the editor's internals, and the point of the split is that
|
|
647
|
+
* they do not know each other.
|
|
648
|
+
*/
|
|
649
|
+
export type EditorToolbarContext = {
|
|
650
|
+
workspace: LoopWorkspaceContext;
|
|
651
|
+
/** The id of the editor this toolbar belongs to. */
|
|
652
|
+
editorId: string;
|
|
653
|
+
};
|
|
654
|
+
/**
|
|
655
|
+
* The toolbar of an editor, provided by a plugin.
|
|
656
|
+
*
|
|
657
|
+
* A contribution here does not decorate a toolbar — it *is* the toolbar. An
|
|
658
|
+
* editor with nothing contributed to its toolbar point renders no toolbar at
|
|
659
|
+
* all, which is the difference between a toolbar plugin and a plugin that adds
|
|
660
|
+
* a button: switch this off and the bar goes, not just what was on it.
|
|
661
|
+
*
|
|
662
|
+
* `items` is what the providing plugin puts on its own toolbar. Everyone else
|
|
663
|
+
* uses the item point below, so that "who owns the toolbar" and "who is
|
|
664
|
+
* allowed to add to it" stay separate questions.
|
|
665
|
+
*/
|
|
666
|
+
export type EditorToolbarContribution = {
|
|
667
|
+
items?: (context: EditorToolbarContext) => ToolbarItem[];
|
|
668
|
+
};
|
|
669
|
+
/**
|
|
670
|
+
* Something a plugin adds to a toolbar another plugin provides.
|
|
671
|
+
*
|
|
672
|
+
* `items` is called during the editor's render and must be pure — build the
|
|
673
|
+
* descriptors, do the work in `onClick` or inside a `render` component. It
|
|
674
|
+
* returns a list rather than a single item so one plugin can contribute a
|
|
675
|
+
* spacer and the thing after it as one indivisible unit.
|
|
676
|
+
*
|
|
677
|
+
* Nothing is rendered from here when no plugin provides the toolbar. That is
|
|
678
|
+
* deliberate: a button with no bar to sit on has nowhere to go, and drawing
|
|
679
|
+
* one anyway would make the toolbar plugin look optional when it is not.
|
|
680
|
+
*/
|
|
681
|
+
export type EditorToolbarItemContribution = {
|
|
682
|
+
items: (context: EditorToolbarContext) => ToolbarItem[];
|
|
683
|
+
};
|
|
684
|
+
/**
|
|
685
|
+
* The notebook editor's toolbar.
|
|
686
|
+
*
|
|
687
|
+
* Offered by the notebook plugin and filled by the notebook toolbar plugin.
|
|
688
|
+
* The notebook names neither the toolbar nor anything on it.
|
|
689
|
+
*/
|
|
690
|
+
export declare const LoopNotebookToolbar: import("@datalayer/reactor").ContributionPoint<EditorToolbarContribution>;
|
|
691
|
+
/**
|
|
692
|
+
* What goes on the notebook's toolbar, once something provides one.
|
|
693
|
+
*
|
|
694
|
+
* Offered by the *toolbar* plugin, not by the editor: the bar is what accepts
|
|
695
|
+
* buttons, so the plugin that owns the bar is the one that opens the point.
|
|
696
|
+
* The chat puts its agent actions here.
|
|
697
|
+
*/
|
|
698
|
+
export declare const LoopNotebookToolbarItem: import("@datalayer/reactor").ContributionPoint<EditorToolbarItemContribution>;
|
|
699
|
+
/** The document editor's toolbar. The same arrangement, for prose. */
|
|
700
|
+
export declare const LoopDocumentToolbar: import("@datalayer/reactor").ContributionPoint<EditorToolbarContribution>;
|
|
701
|
+
/** What goes on the document's toolbar, once something provides one. */
|
|
702
|
+
export declare const LoopDocumentToolbarItem: import("@datalayer/reactor").ContributionPoint<EditorToolbarItemContribution>;
|
|
703
|
+
export { onSurfaceRequest, requestSurface, type SurfaceRequestListener, } from './surfaceRequests';
|
|
704
|
+
export { focusPrompt, onPromptFocusRequest } from './focusRequests';
|
|
705
|
+
/** Slash commands, shared in shape with the CLI. */
|
|
706
|
+
export declare const LoopCommand: import("@datalayer/reactor").ContributionPoint<CommandContribution>;
|
|
707
|
+
/** `@` namespaces. */
|
|
708
|
+
export declare const LoopMention: import("@datalayer/reactor").ContributionPoint<MentionContribution>;
|
|
709
|
+
/** Slot names the shell renders. Slots render everything; points choose one. */
|
|
710
|
+
export declare const LoopSlots: {
|
|
711
|
+
/** Agent picker, model chip, status indicators. */
|
|
712
|
+
readonly header: "loop.header";
|
|
713
|
+
/**
|
|
714
|
+
* The chat's own title bar, beside the agent's name.
|
|
715
|
+
*
|
|
716
|
+
* Distinct from `header`, which is the workspace's row above every view: a
|
|
717
|
+
* host can hide one and keep the other, and what belongs here is what is
|
|
718
|
+
* true of the *conversation* rather than of the workspace — how long the
|
|
719
|
+
* visitor's trial key has left, say.
|
|
720
|
+
*
|
|
721
|
+
* Empty for most workspaces, and the chat asks whether anyone contributed
|
|
722
|
+
* before it draws anything, so an unfilled slot costs nothing.
|
|
723
|
+
*/
|
|
724
|
+
readonly chatHeader: "loop.chatHeader";
|
|
725
|
+
/** Buttons beside the prompt. */
|
|
726
|
+
readonly promptAction: "loop.promptAction";
|
|
727
|
+
/**
|
|
728
|
+
* The strip inside the prompt, above where the typing goes.
|
|
729
|
+
*
|
|
730
|
+
* Kept and rendered, and nothing contributes to it today: the controls that
|
|
731
|
+
* decide what the next message does — agent, tools, skills, model — live in
|
|
732
|
+
* the footer under the prompt, which already had three of the four. This is
|
|
733
|
+
* for whatever wants to sit *in* the prompt rather than under it, and it
|
|
734
|
+
* draws nothing while it is empty.
|
|
735
|
+
*/
|
|
736
|
+
readonly inpromptMenu: "loop.inpromptMenu";
|
|
737
|
+
/**
|
|
738
|
+
* Under the view, above the status line.
|
|
739
|
+
*
|
|
740
|
+
* Where the chat plugin puts its prompt. A slot rather than a fixed place in
|
|
741
|
+
* the shell, so a workspace mounted without a chat has nothing there instead
|
|
742
|
+
* of an input box wired to nothing.
|
|
743
|
+
*/
|
|
744
|
+
readonly footer: "loop.footer";
|
|
745
|
+
/** Small status items under the prompt. */
|
|
746
|
+
readonly status: "loop.status";
|
|
747
|
+
/**
|
|
748
|
+
* A mount point for plugins that position themselves.
|
|
749
|
+
*
|
|
750
|
+
* Rendered once, with no layout of its own. What goes here paints over the
|
|
751
|
+
* workspace from a portal — the command palette does — so the slot only has
|
|
752
|
+
* to exist somewhere the reactor is running. It is `root` rather than
|
|
753
|
+
* `loop.root` because it is the reactor's convention rather than the loop's:
|
|
754
|
+
* the music and CMS applications render the same name for the same plugins.
|
|
755
|
+
*/
|
|
756
|
+
readonly root: "root";
|
|
757
|
+
/**
|
|
758
|
+
* The trailing edge, beside the view: the plugin list, and anything else
|
|
759
|
+
* that belongs next to the work rather than in front of it.
|
|
760
|
+
*
|
|
761
|
+
* A slot, so a workspace with no sidebar plugin has no sidebar at all — the
|
|
762
|
+
* column is not drawn when nothing fills it.
|
|
763
|
+
*/
|
|
764
|
+
readonly sidebar: "loop.sidebar";
|
|
765
|
+
};
|
|
766
|
+
/**
|
|
767
|
+
* The sandbox's lifecycle, in the vocabulary a kernel indicator speaks.
|
|
768
|
+
*
|
|
769
|
+
* Here rather than beside either renderer because two of them draw the same
|
|
770
|
+
* fact — the control in the workspace header, and the chat's own header for a
|
|
771
|
+
* host that hides the workspace's. Two copies of this mapping would eventually
|
|
772
|
+
* disagree about what `starting` looks like, and a workspace showing two
|
|
773
|
+
* indicators that disagree is worse than one showing none.
|
|
774
|
+
*
|
|
775
|
+
* The execution state is the finer answer and wins when there is one: a
|
|
776
|
+
* running sandbox is either working or waiting, and which of the two is the
|
|
777
|
+
* thing a person actually watches for.
|
|
778
|
+
*/
|
|
779
|
+
export declare function sandboxIndicatorState(state: SandboxState, executionState?: string, isExecuting?: boolean): ExecutionState;
|
|
780
|
+
/** Whether a view or a chat surface can be opened right now. */
|
|
781
|
+
export declare function canOpenView(contribution: Pick<ViewTypeContribution, 'canOpen'>, workspace: LoopWorkspaceContext): boolean;
|
|
782
|
+
/** Parse `/name rest` into its parts. Returns undefined when it is not a command. */
|
|
783
|
+
export declare function parseCommand(input: string): {
|
|
784
|
+
name: string;
|
|
785
|
+
argv: string;
|
|
786
|
+
} | undefined;
|
|
787
|
+
export { useLoopPromptStore, suggestLoopPrompt, type LoopPromptState, type SuggestedPrompt, } from './promptStore';
|
|
788
|
+
/**
|
|
789
|
+
* How the chat view arranges its parts.
|
|
790
|
+
*
|
|
791
|
+
* The chat view assembles everything — the editor surfaces, the transcript
|
|
792
|
+
* column, the composer, the openers, the surface picker — and by default lays
|
|
793
|
+
* them out as a split: editor beside transcript, prompt underneath. A layout
|
|
794
|
+
* contribution takes those same parts, already wired, and arranges them
|
|
795
|
+
* differently: the page-layout plugin puts the editor on a centred sheet like
|
|
796
|
+
* a document and floats the prompt at the top of it. First contribution wins.
|
|
797
|
+
*
|
|
798
|
+
* The parts are elements, not data: the composer's draft, the transcript's
|
|
799
|
+
* streaming, the surfaces' hidden mounts all stay the view's business. A
|
|
800
|
+
* layout decides where things go, never what they do.
|
|
801
|
+
*/
|
|
802
|
+
export type ChatLayoutParts = {
|
|
803
|
+
workspace: LoopWorkspaceContext;
|
|
804
|
+
/** The editor surfaces — every mountable surface, the active one shown. */
|
|
805
|
+
editors: ReactNode;
|
|
806
|
+
/** Whether an editor surface is on screen (false: the transcript is all). */
|
|
807
|
+
hasEditor: boolean;
|
|
808
|
+
/** The conversation column: transcript, banner, expired-key cover. */
|
|
809
|
+
transcript: ReactNode;
|
|
810
|
+
/** The composer, or null when hidden. Floating when the layout asked. */
|
|
811
|
+
prompt: ReactNode;
|
|
812
|
+
/** The openers as chips, or null. */
|
|
813
|
+
chips: ReactNode;
|
|
814
|
+
/** The surface picker strip, or null. */
|
|
815
|
+
picker: ReactNode;
|
|
816
|
+
/** A transient notice (a command's output), or null. */
|
|
817
|
+
transient: ReactNode;
|
|
818
|
+
};
|
|
819
|
+
export type ChatLayoutContribution = {
|
|
820
|
+
/** Stable id, for the registry and the graph. */
|
|
821
|
+
id: string;
|
|
822
|
+
/** Arranges the parts. */
|
|
823
|
+
Component: ComponentType<ChatLayoutParts>;
|
|
824
|
+
/**
|
|
825
|
+
* How this layout wants the composer built.
|
|
826
|
+
*
|
|
827
|
+
* `floating-top` is a floating card anchored to the top edge rather than
|
|
828
|
+
* the bottom — a command line over the document, sized by the card.
|
|
829
|
+
* `docked-top` is that same command line standing in the flow instead: the
|
|
830
|
+
* layout gives it a mount point and the composer fills it, so its width is
|
|
831
|
+
* the layout's to decide and the page below starts under it rather than
|
|
832
|
+
* behind it.
|
|
833
|
+
*/
|
|
834
|
+
prompt?: 'docked' | 'floating' | 'floating-top' | 'docked-top';
|
|
835
|
+
};
|
|
836
|
+
export declare const LoopChatLayout: import("@datalayer/reactor").ContributionPoint<ChatLayoutContribution>;
|
|
837
|
+
/**
|
|
838
|
+
* A panel attached to the composer, above or below it.
|
|
839
|
+
*
|
|
840
|
+
* The input-prompt plugin opens this point and renders every contribution
|
|
841
|
+
* inside the prompt's own card — so on a floating composer the panel floats
|
|
842
|
+
* with it. The page layout uses it to show the current turn beside a prompt
|
|
843
|
+
* whose transcript is out of sight; a host could hang anything else there.
|
|
844
|
+
*/
|
|
845
|
+
export type PromptPanelContribution = {
|
|
846
|
+
/** Stable id, for the registry and the graph. */
|
|
847
|
+
id: string;
|
|
848
|
+
/** Which side of the composer. `below` when unsaid. */
|
|
849
|
+
placement?: 'above' | 'below';
|
|
850
|
+
/** Among panels on the same side; lower first. */
|
|
851
|
+
order?: number;
|
|
852
|
+
Component: ComponentType<{
|
|
853
|
+
workspace: LoopWorkspaceContext;
|
|
854
|
+
}>;
|
|
855
|
+
};
|
|
856
|
+
export declare const LoopPromptPanel: import("@datalayer/reactor").ContributionPoint<PromptPanelContribution>;
|
|
857
|
+
/**
|
|
858
|
+
* The conversation's current turn, as a live value.
|
|
859
|
+
*
|
|
860
|
+
* What was just asked and what is being answered — the last user message,
|
|
861
|
+
* the assistant's reply as it streams, and where the turn stands. The chat
|
|
862
|
+
* plugin contributes one of these and its view keeps it current; anything
|
|
863
|
+
* that shows a conversation without the transcript (the page layout's turn
|
|
864
|
+
* panel) reads it. A new turn replaces the old one entirely, which is what
|
|
865
|
+
* "cleared on each turn" means for a reader.
|
|
866
|
+
*/
|
|
867
|
+
export type ChatTurnStatus = 'idle' | 'thinking' | 'streaming' | 'done' | 'error';
|
|
868
|
+
export type ChatTurnSnapshot = {
|
|
869
|
+
/** Counts up per turn, so a reader can tell a new turn from an edit. */
|
|
870
|
+
id: number;
|
|
871
|
+
/** What the person sent. */
|
|
872
|
+
user?: string;
|
|
873
|
+
/** What the agent has said so far. */
|
|
874
|
+
assistant?: string;
|
|
875
|
+
status: ChatTurnStatus;
|
|
876
|
+
/**
|
|
877
|
+
* The context window as the agent last reported it — what a turn footer
|
|
878
|
+
* draws: the window's fill, and this turn's tokens in and out.
|
|
879
|
+
*/
|
|
880
|
+
usage?: import('../../types').ContextSnapshotData;
|
|
881
|
+
/**
|
|
882
|
+
* What the agent is doing right now, in a short line — "Analyst is adding
|
|
883
|
+
* a cell…" — while a tool runs; cleared when it returns. For a layout that
|
|
884
|
+
* shows the work rather than the transcript.
|
|
885
|
+
*/
|
|
886
|
+
activity?: string;
|
|
887
|
+
};
|
|
888
|
+
export type ChatTurnContribution = {
|
|
889
|
+
/** Stable id, for the registry and the graph. */
|
|
890
|
+
id: string;
|
|
891
|
+
/** The turn, live. */
|
|
892
|
+
turn: ReadonlySignal<ChatTurnSnapshot>;
|
|
893
|
+
};
|
|
894
|
+
export declare const LoopChatTurn: import("@datalayer/reactor").ContributionPoint<ChatTurnContribution>;
|