@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,310 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright (c) 2025-2026 Datalayer, Inc.
|
|
3
|
+
* Distributed under the terms of the Modified BSD License.
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* The browser harness, behind the protocol interface every chat surface uses.
|
|
7
|
+
*
|
|
8
|
+
* The other adapters carry messages to somewhere else — AG-UI over SSE, Vercel
|
|
9
|
+
* AI over SSE, ACP over a socket. This one carries them nowhere: the loop turns
|
|
10
|
+
* in this page with the Vercel AI SDK, and the adapter exists so that fact
|
|
11
|
+
* stays invisible to `<Chat>`, `<ChatFloating>` and everything downstream of
|
|
12
|
+
* them. Suggestions, tool rendering, the panel, the history: all unchanged.
|
|
13
|
+
*
|
|
14
|
+
* That is the point of putting it here rather than writing a bespoke chat for
|
|
15
|
+
* in-browser agents. There is nothing chat-shaped about the browser harness —
|
|
16
|
+
* only a different answer to "where does the loop turn" — so it belongs at the
|
|
17
|
+
* one seam the package already has for that question.
|
|
18
|
+
*
|
|
19
|
+
* **Who executes the tools.** In every other adapter the runtime asks and the
|
|
20
|
+
* client answers: a `tool-call` arrives, `ChatBase` runs the frontend tool's
|
|
21
|
+
* handler and posts the result back with {@link sendToolResult}. Here the SDK
|
|
22
|
+
* owns the loop and calls the handler itself, so a host must NOT also pass
|
|
23
|
+
* `frontendTools` to the chat component — the tools go to this adapter, and the
|
|
24
|
+
* chat is left to render what happened. {@link sendToolResult} is therefore a
|
|
25
|
+
* no-op: by the time anyone could call it, the tool has already run.
|
|
26
|
+
*
|
|
27
|
+
* @module protocols/BrowserAgentAdapter
|
|
28
|
+
*/
|
|
29
|
+
import { streamText, stepCountIs } from 'ai';
|
|
30
|
+
import { createAssistantMessage, generateMessageId } from '../types/messages';
|
|
31
|
+
import { BaseProtocolAdapter } from './BaseProtocolAdapter';
|
|
32
|
+
import { createBrowserModel, frontendToolsToVercelAI, subagentTools, DEFAULT_BROWSER_MAX_STEPS, } from '../runtimes/browser';
|
|
33
|
+
/** The text of a chat message, whatever shape it arrived in. */
|
|
34
|
+
function messageText(message) {
|
|
35
|
+
if (typeof message.content === 'string') {
|
|
36
|
+
return message.content;
|
|
37
|
+
}
|
|
38
|
+
return message.content
|
|
39
|
+
.map(part => typeof part === 'string'
|
|
40
|
+
? part
|
|
41
|
+
: (part.text ?? ''))
|
|
42
|
+
.join('');
|
|
43
|
+
}
|
|
44
|
+
/** The roles a model can be sent. Everything else is presentation. */
|
|
45
|
+
function isModelRole(role) {
|
|
46
|
+
return role === 'user' || role === 'assistant' || role === 'system';
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* An agent loop running in the page, speaking the protocol adapter interface.
|
|
50
|
+
*/
|
|
51
|
+
export class BrowserAgentAdapter extends BaseProtocolAdapter {
|
|
52
|
+
protocol = 'browser-vercel-ai';
|
|
53
|
+
protocolTransport = 'http';
|
|
54
|
+
browserConfig;
|
|
55
|
+
abortController = null;
|
|
56
|
+
tools;
|
|
57
|
+
constructor(config) {
|
|
58
|
+
super(config);
|
|
59
|
+
this.browserConfig = config;
|
|
60
|
+
const page = frontendToolsToVercelAI(config.frontendTools ?? [], {
|
|
61
|
+
onHitlRequired: config.onHitlRequired,
|
|
62
|
+
onStatusChange: config.onStatusChange,
|
|
63
|
+
});
|
|
64
|
+
// One set: to the model there is no difference between reaching into the
|
|
65
|
+
// page and reaching another agent — both are tools it may call, and the
|
|
66
|
+
// names are what it chooses between.
|
|
67
|
+
this.tools = {
|
|
68
|
+
...page,
|
|
69
|
+
...(config.subagents?.length && config.inference
|
|
70
|
+
? subagentTools({
|
|
71
|
+
subagents: config.subagents,
|
|
72
|
+
inference: config.inference,
|
|
73
|
+
model: config.model,
|
|
74
|
+
sharing: config.sharing,
|
|
75
|
+
// A member reached by delegation works in this page too, with
|
|
76
|
+
// the same tools as the one that delegated.
|
|
77
|
+
tools: page,
|
|
78
|
+
onEvent: config.onSubagentEvent,
|
|
79
|
+
// The run being stopped stops its delegations too.
|
|
80
|
+
signal: () => this.abortController?.signal,
|
|
81
|
+
})
|
|
82
|
+
: {}),
|
|
83
|
+
};
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* Nothing to dial.
|
|
87
|
+
*
|
|
88
|
+
* The interface asks for a connection because the other adapters have one.
|
|
89
|
+
* This reports connected because the loop is already here.
|
|
90
|
+
*/
|
|
91
|
+
async connect() {
|
|
92
|
+
this.setConnectionState('connected');
|
|
93
|
+
}
|
|
94
|
+
disconnect() {
|
|
95
|
+
this.abortController?.abort();
|
|
96
|
+
this.abortController = null;
|
|
97
|
+
this.setConnectionState('disconnected');
|
|
98
|
+
}
|
|
99
|
+
/**
|
|
100
|
+
* Stop the run in flight, and stay connected.
|
|
101
|
+
*
|
|
102
|
+
* What the chat's stop button calls on an adapter that has it. The other
|
|
103
|
+
* adapters cut a network stream; this one cuts the model call turning in
|
|
104
|
+
* the page — and, through the signal every delegation reads, the
|
|
105
|
+
* subagents that call started. Without this the button stopped the
|
|
106
|
+
* chat's *display* of the run and nothing else: the parent kept calling
|
|
107
|
+
* the model and the children kept working.
|
|
108
|
+
*/
|
|
109
|
+
stopGeneration() {
|
|
110
|
+
this.abortController?.abort();
|
|
111
|
+
}
|
|
112
|
+
supportsFeature(feature) {
|
|
113
|
+
// Tools, yes — they are the whole point. Not the rest: there is no server
|
|
114
|
+
// to hold a thread, resume a run, or approve anything out of band.
|
|
115
|
+
return feature === 'tools';
|
|
116
|
+
}
|
|
117
|
+
/**
|
|
118
|
+
* Already done.
|
|
119
|
+
*
|
|
120
|
+
* The SDK executed the tool before this adapter reported it, so there is no
|
|
121
|
+
* result to carry back and nothing to resume. Kept because the interface has
|
|
122
|
+
* it and a host should not have to know which adapter it is holding.
|
|
123
|
+
*/
|
|
124
|
+
async sendToolResult() { }
|
|
125
|
+
/** The model this agent asks, resolved once per request. */
|
|
126
|
+
resolveModel() {
|
|
127
|
+
const { languageModel, inference, model } = this.browserConfig;
|
|
128
|
+
if (languageModel) {
|
|
129
|
+
return languageModel;
|
|
130
|
+
}
|
|
131
|
+
if (!inference) {
|
|
132
|
+
throw new Error('A browser agent needs either a `languageModel` or an `inference` endpoint to reach one.');
|
|
133
|
+
}
|
|
134
|
+
return createBrowserModel({ ...inference, model });
|
|
135
|
+
}
|
|
136
|
+
/**
|
|
137
|
+
* Run one turn of the loop and report it as it happens.
|
|
138
|
+
*
|
|
139
|
+
* The SDK's `fullStream` is already the event stream this interface wants —
|
|
140
|
+
* text deltas, tool calls, tool results, a finish — so the body of this is a
|
|
141
|
+
* translation rather than a protocol implementation.
|
|
142
|
+
*/
|
|
143
|
+
async sendMessage(message, options) {
|
|
144
|
+
this.abortController?.abort();
|
|
145
|
+
const abortController = new AbortController();
|
|
146
|
+
this.abortController = abortController;
|
|
147
|
+
// The history the chat is showing, minus anything the model has no role
|
|
148
|
+
// for — tool-call entries and activity items are presentation.
|
|
149
|
+
const history = (options?.messages ?? [])
|
|
150
|
+
.filter(entry => isModelRole(entry.role))
|
|
151
|
+
.map(entry => ({
|
|
152
|
+
role: entry.role,
|
|
153
|
+
content: messageText(entry),
|
|
154
|
+
}))
|
|
155
|
+
.filter(entry => entry.content.length > 0);
|
|
156
|
+
const latest = messageText(message);
|
|
157
|
+
if (latest && history[history.length - 1]?.content !== latest) {
|
|
158
|
+
history.push({ role: 'user', content: latest });
|
|
159
|
+
}
|
|
160
|
+
/*
|
|
161
|
+
* One message per text block, and an id of our own for each.
|
|
162
|
+
*
|
|
163
|
+
* A tool-using turn is several blocks: the model says what it is about to
|
|
164
|
+
* do, calls a tool, then says what it found. The SDK marks each with
|
|
165
|
+
* `text-start`, and the chat keys on the message id — same id replaces in
|
|
166
|
+
* place, a new id appends. Accumulating a whole turn under one id folded
|
|
167
|
+
* everything said after a tool call back into the sentence before it.
|
|
168
|
+
*
|
|
169
|
+
* The id must not be the provider's, either. `text-start` carries a block
|
|
170
|
+
* id that is unique only *within* a response — commonly "0" — so reusing
|
|
171
|
+
* it across turns made the second turn's text replace the first turn's
|
|
172
|
+
* message, which the chat then showed above the question that prompted it.
|
|
173
|
+
* Ours are unique for the life of the page, which is the scope the chat's
|
|
174
|
+
* message list actually has.
|
|
175
|
+
*/
|
|
176
|
+
let messageId = null;
|
|
177
|
+
let text = '';
|
|
178
|
+
/** Begin a new assistant message. */
|
|
179
|
+
const startBlock = () => {
|
|
180
|
+
messageId = generateMessageId();
|
|
181
|
+
text = '';
|
|
182
|
+
};
|
|
183
|
+
/** Emit the assistant message as it stands, so the chat can stream it. */
|
|
184
|
+
const emitText = () => {
|
|
185
|
+
const assistant = createAssistantMessage(text);
|
|
186
|
+
assistant.id = messageId;
|
|
187
|
+
this.emit({ type: 'message', message: assistant, timestamp: new Date() });
|
|
188
|
+
};
|
|
189
|
+
try {
|
|
190
|
+
const result = streamText({
|
|
191
|
+
model: this.resolveModel(),
|
|
192
|
+
system: this.browserConfig.instructions,
|
|
193
|
+
messages: history,
|
|
194
|
+
tools: this.tools,
|
|
195
|
+
stopWhen: stepCountIs(this.browserConfig.maxSteps ?? DEFAULT_BROWSER_MAX_STEPS),
|
|
196
|
+
abortSignal: abortController.signal,
|
|
197
|
+
});
|
|
198
|
+
for await (const part of result.fullStream) {
|
|
199
|
+
if (abortController.signal.aborted) {
|
|
200
|
+
break;
|
|
201
|
+
}
|
|
202
|
+
switch (part.type) {
|
|
203
|
+
case 'text-start':
|
|
204
|
+
// A new block: whatever follows belongs to a message of its own,
|
|
205
|
+
// after any tool the previous block called.
|
|
206
|
+
startBlock();
|
|
207
|
+
break;
|
|
208
|
+
case 'text-delta':
|
|
209
|
+
// Defensively: a provider that streams text without announcing a
|
|
210
|
+
// block still gets a message rather than losing its words.
|
|
211
|
+
if (messageId === null) {
|
|
212
|
+
startBlock();
|
|
213
|
+
}
|
|
214
|
+
text += part.text;
|
|
215
|
+
emitText();
|
|
216
|
+
break;
|
|
217
|
+
case 'tool-call':
|
|
218
|
+
this.emit({
|
|
219
|
+
type: 'tool-call',
|
|
220
|
+
toolCall: {
|
|
221
|
+
toolCallId: part.toolCallId,
|
|
222
|
+
toolName: part.toolName,
|
|
223
|
+
args: (part.input ?? {}),
|
|
224
|
+
// The SDK hands over a whole argument set in one part; unlike
|
|
225
|
+
// AG-UI, nothing more is coming.
|
|
226
|
+
argsComplete: true,
|
|
227
|
+
},
|
|
228
|
+
timestamp: new Date(),
|
|
229
|
+
});
|
|
230
|
+
break;
|
|
231
|
+
case 'tool-result':
|
|
232
|
+
this.emit({
|
|
233
|
+
type: 'tool-result',
|
|
234
|
+
toolResult: {
|
|
235
|
+
toolCallId: part.toolCallId,
|
|
236
|
+
success: true,
|
|
237
|
+
result: part.output,
|
|
238
|
+
},
|
|
239
|
+
timestamp: new Date(),
|
|
240
|
+
});
|
|
241
|
+
break;
|
|
242
|
+
case 'tool-error':
|
|
243
|
+
this.emit({
|
|
244
|
+
type: 'tool-result',
|
|
245
|
+
toolResult: {
|
|
246
|
+
toolCallId: part.toolCallId,
|
|
247
|
+
success: false,
|
|
248
|
+
error: part.error instanceof Error
|
|
249
|
+
? part.error.message
|
|
250
|
+
: String(part.error),
|
|
251
|
+
},
|
|
252
|
+
timestamp: new Date(),
|
|
253
|
+
});
|
|
254
|
+
break;
|
|
255
|
+
case 'error':
|
|
256
|
+
this.emit({
|
|
257
|
+
type: 'error',
|
|
258
|
+
error: part.error instanceof Error
|
|
259
|
+
? part.error
|
|
260
|
+
: new Error(String(part.error)),
|
|
261
|
+
timestamp: new Date(),
|
|
262
|
+
});
|
|
263
|
+
break;
|
|
264
|
+
case 'finish': {
|
|
265
|
+
/*
|
|
266
|
+
* Whatever the provider counted, summed when it did not total.
|
|
267
|
+
*
|
|
268
|
+
* The SDK's `totalUsage` fields are all optional, and a
|
|
269
|
+
* provider that reports the parts but not the sum used to leave
|
|
270
|
+
* `totalTokens` undefined — which is the one field the chat's
|
|
271
|
+
* local accounting keys on, so the usage bar read 0 for turns
|
|
272
|
+
* that were counted perfectly well.
|
|
273
|
+
*/
|
|
274
|
+
const counted = part.totalUsage;
|
|
275
|
+
const promptTokens = counted?.inputTokens ?? 0;
|
|
276
|
+
const completionTokens = counted?.outputTokens ?? 0;
|
|
277
|
+
const totalTokens = counted?.totalTokens ??
|
|
278
|
+
(promptTokens + completionTokens > 0
|
|
279
|
+
? promptTokens + completionTokens
|
|
280
|
+
: undefined);
|
|
281
|
+
this.emit({
|
|
282
|
+
type: 'done',
|
|
283
|
+
usage: { promptTokens, completionTokens, totalTokens },
|
|
284
|
+
timestamp: new Date(),
|
|
285
|
+
});
|
|
286
|
+
break;
|
|
287
|
+
}
|
|
288
|
+
default:
|
|
289
|
+
break;
|
|
290
|
+
}
|
|
291
|
+
}
|
|
292
|
+
}
|
|
293
|
+
catch (error) {
|
|
294
|
+
if (abortController.signal.aborted) {
|
|
295
|
+
return;
|
|
296
|
+
}
|
|
297
|
+
this.emit({
|
|
298
|
+
type: 'error',
|
|
299
|
+
error: error instanceof Error ? error : new Error(String(error)),
|
|
300
|
+
timestamp: new Date(),
|
|
301
|
+
});
|
|
302
|
+
this.emit({ type: 'done', timestamp: new Date() });
|
|
303
|
+
}
|
|
304
|
+
finally {
|
|
305
|
+
if (this.abortController === abortController) {
|
|
306
|
+
this.abortController = null;
|
|
307
|
+
}
|
|
308
|
+
}
|
|
309
|
+
}
|
|
310
|
+
}
|
|
@@ -36,6 +36,16 @@ export declare class VercelAIAdapter extends BaseProtocolAdapter {
|
|
|
36
36
|
readonly protocolTransport: "sse";
|
|
37
37
|
private vercelConfig;
|
|
38
38
|
private abortController;
|
|
39
|
+
/**
|
|
40
|
+
* Every in-flight request's abort controller, not just the newest.
|
|
41
|
+
*
|
|
42
|
+
* `abortController` is a single field that each request overwrites, and each
|
|
43
|
+
* request's `finally` used to clear it unconditionally — so a request that
|
|
44
|
+
* finished just after a newer one started would null the newer one's handle,
|
|
45
|
+
* and a subsequent stop had nothing left to abort. The stream carried on and
|
|
46
|
+
* the transcript went on typing itself after the reader had asked it not to.
|
|
47
|
+
*/
|
|
48
|
+
private inFlight;
|
|
39
49
|
private currentRequestId;
|
|
40
50
|
private pendingToolCalls;
|
|
41
51
|
private collectedToolResults;
|
|
@@ -14,6 +14,16 @@ export class VercelAIAdapter extends BaseProtocolAdapter {
|
|
|
14
14
|
protocolTransport = 'sse';
|
|
15
15
|
vercelConfig;
|
|
16
16
|
abortController = null;
|
|
17
|
+
/**
|
|
18
|
+
* Every in-flight request's abort controller, not just the newest.
|
|
19
|
+
*
|
|
20
|
+
* `abortController` is a single field that each request overwrites, and each
|
|
21
|
+
* request's `finally` used to clear it unconditionally — so a request that
|
|
22
|
+
* finished just after a newer one started would null the newer one's handle,
|
|
23
|
+
* and a subsequent stop had nothing left to abort. The stream carried on and
|
|
24
|
+
* the transcript went on typing itself after the reader had asked it not to.
|
|
25
|
+
*/
|
|
26
|
+
inFlight = new Set();
|
|
17
27
|
currentRequestId = null;
|
|
18
28
|
// Frontend tool continuation state (modelled after AGUIAdapter)
|
|
19
29
|
pendingToolCalls = new Map();
|
|
@@ -113,10 +123,14 @@ export class VercelAIAdapter extends BaseProtocolAdapter {
|
|
|
113
123
|
* Send a message using Vercel AI Data Stream Protocol
|
|
114
124
|
*/
|
|
115
125
|
async sendMessage(message, options) {
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
126
|
+
// A new send supersedes what came before it — all of it. Aborting only
|
|
127
|
+
// the field left any stream it had already lost track of still running.
|
|
128
|
+
this.stopGeneration();
|
|
129
|
+
// Held in a local too: by the time the `finally` runs, a later request may
|
|
130
|
+
// own the field, and this one must only retire its own controller.
|
|
131
|
+
const controller = new AbortController();
|
|
132
|
+
this.abortController = controller;
|
|
133
|
+
this.inFlight.add(controller);
|
|
120
134
|
// Generate request ID for tracking
|
|
121
135
|
const requestId = options?.threadId || generateMessageId();
|
|
122
136
|
this.currentRequestId = requestId;
|
|
@@ -238,7 +252,7 @@ export class VercelAIAdapter extends BaseProtocolAdapter {
|
|
|
238
252
|
method: 'POST',
|
|
239
253
|
headers,
|
|
240
254
|
body: JSON.stringify(requestBody),
|
|
241
|
-
signal:
|
|
255
|
+
signal: controller.signal,
|
|
242
256
|
mode: this.vercelConfig.fetchOptions?.mode,
|
|
243
257
|
credentials: this.vercelConfig.fetchOptions?.credentials,
|
|
244
258
|
});
|
|
@@ -258,7 +272,10 @@ export class VercelAIAdapter extends BaseProtocolAdapter {
|
|
|
258
272
|
}
|
|
259
273
|
}
|
|
260
274
|
finally {
|
|
261
|
-
this.
|
|
275
|
+
this.inFlight.delete(controller);
|
|
276
|
+
if (this.abortController === controller) {
|
|
277
|
+
this.abortController = null;
|
|
278
|
+
}
|
|
262
279
|
}
|
|
263
280
|
}
|
|
264
281
|
/**
|
|
@@ -797,7 +814,10 @@ export class VercelAIAdapter extends BaseProtocolAdapter {
|
|
|
797
814
|
* Stop generation
|
|
798
815
|
*/
|
|
799
816
|
stopGeneration() {
|
|
800
|
-
this.
|
|
817
|
+
for (const controller of this.inFlight) {
|
|
818
|
+
controller.abort();
|
|
819
|
+
}
|
|
820
|
+
this.inFlight.clear();
|
|
801
821
|
this.abortController = null;
|
|
802
822
|
}
|
|
803
823
|
}
|
package/lib/protocols/index.d.ts
CHANGED
|
@@ -7,4 +7,5 @@ export { BaseProtocolAdapter } from './BaseProtocolAdapter';
|
|
|
7
7
|
export { AGUIAdapter, type AGUIAdapterConfig } from './AGUIAdapter';
|
|
8
8
|
export { A2AAdapter, type A2AAdapterConfig } from './A2AAdapter';
|
|
9
9
|
export { VercelAIAdapter, type VercelAIAdapterConfig } from './VercelAIAdapter';
|
|
10
|
+
export { BrowserAgentAdapter, type BrowserAgentAdapterConfig, } from './BrowserAgentAdapter';
|
|
10
11
|
export { ACPAdapter, type ACPAdapterConfig, type ACPSession, type ACPAgent, type ACPPendingPermission, } from './ACPAdapter';
|
package/lib/protocols/index.js
CHANGED
|
@@ -11,4 +11,5 @@ export { BaseProtocolAdapter } from './BaseProtocolAdapter';
|
|
|
11
11
|
export { AGUIAdapter } from './AGUIAdapter';
|
|
12
12
|
export { A2AAdapter } from './A2AAdapter';
|
|
13
13
|
export { VercelAIAdapter } from './VercelAIAdapter';
|
|
14
|
+
export { BrowserAgentAdapter, } from './BrowserAgentAdapter';
|
|
14
15
|
export { ACPAdapter, } from './ACPAdapter';
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { IRuntimeOptions } from './apis';
|
|
2
|
-
import type { ICodeSandboxSnapshot, IDatalayerEnvironment,
|
|
2
|
+
import type { ICodeSandboxSnapshot, IDatalayerEnvironment, IRuntimeRecord } from '../models';
|
|
3
3
|
/**
|
|
4
4
|
* Get available Environments.
|
|
5
5
|
*/
|
|
@@ -7,11 +7,11 @@ export declare function getEnvironments(): Promise<IDatalayerEnvironment[]>;
|
|
|
7
7
|
/**
|
|
8
8
|
* Create a Runtime.
|
|
9
9
|
*/
|
|
10
|
-
export declare function createRuntime(options: IRuntimeOptions): Promise<
|
|
10
|
+
export declare function createRuntime(options: IRuntimeOptions): Promise<IRuntimeRecord>;
|
|
11
11
|
/**
|
|
12
12
|
* Get the Runtimes.
|
|
13
13
|
*/
|
|
14
|
-
export declare function getRuntimes(): Promise<
|
|
14
|
+
export declare function getRuntimes(): Promise<IRuntimeRecord[]>;
|
|
15
15
|
/**
|
|
16
16
|
* Delete a Runtime
|
|
17
17
|
*/
|
package/lib/runtimes/actions.js
CHANGED
|
@@ -9,6 +9,7 @@ import { URLExt } from '@jupyterlab/coreutils';
|
|
|
9
9
|
import { PromiseDelegate } from '@lumino/coreutils';
|
|
10
10
|
import { Upload } from 'tus-js-client';
|
|
11
11
|
import { requestDatalayerAPI } from '@datalayer/core/lib/api';
|
|
12
|
+
import { runtimeUrl, runtimesUrl, sandboxSnapshotUrl, sandboxSnapshotsUrl, } from './lifecycle';
|
|
12
13
|
import { asCodeSandboxSnapshot } from '../models';
|
|
13
14
|
import { iamStore, runtimesStore } from '../state/substates';
|
|
14
15
|
/**
|
|
@@ -48,10 +49,22 @@ export async function createRuntime(options) {
|
|
|
48
49
|
throw new Error(`Invalid runtime creditsLimit for environment ${options.environmentName}. ` +
|
|
49
50
|
'A number of zero or more is required.');
|
|
50
51
|
}
|
|
52
|
+
/*
|
|
53
|
+
* `environment: {name, version}` — and the version is ADDITIVE.
|
|
54
|
+
*
|
|
55
|
+
* Without one this is, byte for byte, the request every runtime has been
|
|
56
|
+
* launched with since before user environments existed, and the platform
|
|
57
|
+
* resolves the promoted version itself (PLAN_ENV.md, §7.6, D-2, E1-11).
|
|
58
|
+
*/
|
|
59
|
+
const environment = {
|
|
60
|
+
name: options.environmentName,
|
|
61
|
+
};
|
|
62
|
+
if (options.environmentVersion !== undefined &&
|
|
63
|
+
options.environmentVersion !== '') {
|
|
64
|
+
environment['version'] = options.environmentVersion;
|
|
65
|
+
}
|
|
51
66
|
const body = {
|
|
52
|
-
environment
|
|
53
|
-
name: options.environmentName,
|
|
54
|
-
},
|
|
67
|
+
environment,
|
|
55
68
|
type: options.type ?? 'notebook',
|
|
56
69
|
given_name: options.givenName,
|
|
57
70
|
credits_limit: options.creditsLimit,
|
|
@@ -63,7 +76,7 @@ export async function createRuntime(options) {
|
|
|
63
76
|
body['from'] = options.snapshot;
|
|
64
77
|
}
|
|
65
78
|
const data = await requestDatalayerAPI({
|
|
66
|
-
url:
|
|
79
|
+
url: runtimesUrl(runtimesStore.getState().runtimesUrl),
|
|
67
80
|
method: 'POST',
|
|
68
81
|
body,
|
|
69
82
|
token: token,
|
|
@@ -86,7 +99,7 @@ export async function createRuntime(options) {
|
|
|
86
99
|
*/
|
|
87
100
|
export async function getRuntimes() {
|
|
88
101
|
const data = await requestDatalayerAPI({
|
|
89
|
-
url:
|
|
102
|
+
url: runtimesUrl(runtimesStore.getState().runtimesUrl),
|
|
90
103
|
token: iamStore.getState().token,
|
|
91
104
|
});
|
|
92
105
|
if (!data.success) {
|
|
@@ -102,7 +115,7 @@ export async function getRuntimes() {
|
|
|
102
115
|
export async function deleteRuntime(options) {
|
|
103
116
|
const externalToken = iamStore.getState().externalToken;
|
|
104
117
|
await requestDatalayerAPI({
|
|
105
|
-
url:
|
|
118
|
+
url: runtimeUrl(runtimesStore.getState().runtimesUrl, options.id) +
|
|
106
119
|
URLExt.objectToQueryString(options.reason ? { reason: options.reason } : {}),
|
|
107
120
|
method: 'DELETE',
|
|
108
121
|
token: iamStore.getState().token,
|
|
@@ -119,10 +132,10 @@ export async function deleteRuntime(options) {
|
|
|
119
132
|
*/
|
|
120
133
|
export async function snapshotRuntime(options) {
|
|
121
134
|
const data = await requestDatalayerAPI({
|
|
122
|
-
url:
|
|
135
|
+
url: sandboxSnapshotsUrl(runtimesStore.getState().runtimesUrl),
|
|
123
136
|
method: 'POST',
|
|
124
137
|
body: {
|
|
125
|
-
|
|
138
|
+
runtime_name: options.id,
|
|
126
139
|
name: options.name,
|
|
127
140
|
description: options.description,
|
|
128
141
|
stop: options.stop,
|
|
@@ -144,7 +157,7 @@ export async function snapshotRuntime(options) {
|
|
|
144
157
|
*/
|
|
145
158
|
export async function getSandboxSnapshots() {
|
|
146
159
|
const data = await requestDatalayerAPI({
|
|
147
|
-
url:
|
|
160
|
+
url: sandboxSnapshotsUrl(runtimesStore.getState().runtimesUrl),
|
|
148
161
|
token: iamStore.getState().token,
|
|
149
162
|
});
|
|
150
163
|
if (!data.success) {
|
|
@@ -158,7 +171,7 @@ export async function getSandboxSnapshots() {
|
|
|
158
171
|
*/
|
|
159
172
|
export async function loadSandboxSnapshot(options) {
|
|
160
173
|
const data = await requestDatalayerAPI({
|
|
161
|
-
url:
|
|
174
|
+
url: runtimeUrl(runtimesStore.getState().runtimesUrl, options.id),
|
|
162
175
|
method: 'PUT',
|
|
163
176
|
body: {
|
|
164
177
|
from: options.from,
|
|
@@ -176,7 +189,7 @@ export async function loadSandboxSnapshot(options) {
|
|
|
176
189
|
* @returns The download URL
|
|
177
190
|
*/
|
|
178
191
|
export function createSandboxSnapshotDownloadURL(id) {
|
|
179
|
-
return (
|
|
192
|
+
return (sandboxSnapshotUrl(runtimesStore.getState().runtimesUrl, id) +
|
|
180
193
|
URLExt.objectToQueryString({
|
|
181
194
|
download: '1',
|
|
182
195
|
token: iamStore.getState().token ?? '',
|
|
@@ -201,7 +214,7 @@ export function exportCodeSandboxSnapshot(id) {
|
|
|
201
214
|
*/
|
|
202
215
|
export async function deleteCodeSandboxSnapshot(id) {
|
|
203
216
|
await requestDatalayerAPI({
|
|
204
|
-
url:
|
|
217
|
+
url: sandboxSnapshotUrl(runtimesStore.getState().runtimesUrl, id),
|
|
205
218
|
method: 'DELETE',
|
|
206
219
|
token: iamStore.getState().token,
|
|
207
220
|
});
|
|
@@ -212,7 +225,7 @@ export async function deleteCodeSandboxSnapshot(id) {
|
|
|
212
225
|
export async function updateCodeSandboxSnapshot(id, metadata) {
|
|
213
226
|
if (metadata.name || metadata.description) {
|
|
214
227
|
await requestDatalayerAPI({
|
|
215
|
-
url:
|
|
228
|
+
url: sandboxSnapshotUrl(runtimesStore.getState().runtimesUrl, id),
|
|
216
229
|
method: 'PATCH',
|
|
217
230
|
body: { ...metadata },
|
|
218
231
|
token: iamStore.getState().token,
|
|
@@ -232,7 +245,7 @@ export async function uploadCodeSandboxSnapshot(options) {
|
|
|
232
245
|
// Create a new tus upload.
|
|
233
246
|
const upload = new Upload(options.file, {
|
|
234
247
|
// Endpoint is the upload creation URL from your tus server.
|
|
235
|
-
endpoint: `${runtimesStore.getState().runtimesUrl}/
|
|
248
|
+
endpoint: `${sandboxSnapshotsUrl(runtimesStore.getState().runtimesUrl)}/upload`,
|
|
236
249
|
headers: { Authorization: `Bearer ${iamStore.getState().token}` },
|
|
237
250
|
// Retry delays will enable tus-js-client to automatically retry on errors.
|
|
238
251
|
// retryDelays: [0, 3000, 5000, 10000, 20000],
|
package/lib/runtimes/apis.d.ts
CHANGED
|
@@ -20,8 +20,17 @@ export interface IDatalayerSessionContext extends ISessionContext {
|
|
|
20
20
|
export interface IRuntimeOptions {
|
|
21
21
|
/**
|
|
22
22
|
* Environment name
|
|
23
|
+
*
|
|
24
|
+
* A platform environment by its name, or an environment somebody built,
|
|
25
|
+
* named `<account-handle>/<name>` or by its uid (PLAN_ENV.md, D-2).
|
|
23
26
|
*/
|
|
24
27
|
environmentName: string;
|
|
28
|
+
/**
|
|
29
|
+
* Which version of a user environment to launch: its number, or a version
|
|
30
|
+
* uid. Absent means the version its owner promoted, which is what a platform
|
|
31
|
+
* environment always runs (E1-19).
|
|
32
|
+
*/
|
|
33
|
+
environmentVersion?: number | string;
|
|
25
34
|
/**
|
|
26
35
|
* Credits limit to be consumed by the kernel
|
|
27
36
|
*/
|
|
@@ -169,7 +178,7 @@ export interface IRemoteRuntimesManager extends IDisposable {
|
|
|
169
178
|
/**
|
|
170
179
|
* Snapshot a runtime
|
|
171
180
|
*
|
|
172
|
-
* The runtime may be given by its `id` or `
|
|
181
|
+
* The runtime may be given by its `id` or `runtimeName`.
|
|
173
182
|
* A custom description for the snapshot can be provided.
|
|
174
183
|
*
|
|
175
184
|
* @returns The snapshot description
|
|
@@ -182,7 +191,7 @@ export interface IRemoteRuntimesManager extends IDisposable {
|
|
|
182
191
|
/**
|
|
183
192
|
* The kernel pod name to snapshot
|
|
184
193
|
*/
|
|
185
|
-
|
|
194
|
+
runtimeName?: string;
|
|
186
195
|
/**
|
|
187
196
|
* The snapshot name
|
|
188
197
|
*/
|
|
@@ -199,7 +208,7 @@ export interface IRemoteRuntimesManager extends IDisposable {
|
|
|
199
208
|
/**
|
|
200
209
|
* Load a snapshot within a runtim
|
|
201
210
|
*
|
|
202
|
-
* The runtime may be given by its `id` or `
|
|
211
|
+
* The runtime may be given by its `id` or `runtimeName`.
|
|
203
212
|
*/
|
|
204
213
|
loadSandboxSnapshot(options: {
|
|
205
214
|
/**
|
|
@@ -209,7 +218,7 @@ export interface IRemoteRuntimesManager extends IDisposable {
|
|
|
209
218
|
/**
|
|
210
219
|
* The kernel pod name
|
|
211
220
|
*/
|
|
212
|
-
|
|
221
|
+
runtimeName?: string;
|
|
213
222
|
/**
|
|
214
223
|
* The snapshot UID
|
|
215
224
|
*/
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* An agent loop that turns in the page.
|
|
3
|
+
*
|
|
4
|
+
* The server-side harness reads a spec and builds a pydantic-ai agent from it.
|
|
5
|
+
* This reads the same spec and builds a Vercel AI SDK agent from it — same
|
|
6
|
+
* prompt, same model name, same tools, different thing turning the loop.
|
|
7
|
+
*
|
|
8
|
+
* What a browser agent does *not* get comes from the spec too, and it is not a
|
|
9
|
+
* limitation this module has to enforce: a spec written for this harness
|
|
10
|
+
* declares no MCP servers, no sandbox and no codemode, because none of them
|
|
11
|
+
* exist without a server. All that is left is the frontend tools, and those
|
|
12
|
+
* were always the ones that ran here anyway.
|
|
13
|
+
*
|
|
14
|
+
* @module runtimes/browser/agent
|
|
15
|
+
*/
|
|
16
|
+
import { ToolLoopAgent, type LanguageModel } from 'ai';
|
|
17
|
+
import type { Agentspec } from '../../types/agentspecs';
|
|
18
|
+
import type { FrontendToolDefinition } from '../../types/tools';
|
|
19
|
+
import { type FrontendToolsToVercelAIOptions } from './frontendTools';
|
|
20
|
+
import { type BrowserModelOptions } from './model';
|
|
21
|
+
/**
|
|
22
|
+
* How many model turns one request may take.
|
|
23
|
+
*
|
|
24
|
+
* A compaction reads a notebook cell by cell and then edits it, so the loop
|
|
25
|
+
* needs room — but it is running against a person's own page with nothing
|
|
26
|
+
* between it and a bill, so it needs a ceiling too.
|
|
27
|
+
*/
|
|
28
|
+
export declare const DEFAULT_BROWSER_MAX_STEPS = 24;
|
|
29
|
+
export type CreateBrowserAgentOptions = FrontendToolsToVercelAIOptions & {
|
|
30
|
+
/** The spec to run. Its prompt, model and identity are used as written. */
|
|
31
|
+
spec: Pick<Agentspec, 'id' | 'model' | 'systemPrompt'>;
|
|
32
|
+
/**
|
|
33
|
+
* The tools the agent can call, in this page.
|
|
34
|
+
*
|
|
35
|
+
* The same array a host passes to `<Chat frontendTools={...}>` — from
|
|
36
|
+
* `useNotebookTools`, `useLexicalTools`, or hand-written.
|
|
37
|
+
*/
|
|
38
|
+
frontendTools: FrontendToolDefinition[];
|
|
39
|
+
/** Where to reach the model, unless one is supplied outright. */
|
|
40
|
+
inference?: Omit<BrowserModelOptions, 'model'>;
|
|
41
|
+
/** A ready-made model, for a host that resolves models its own way. */
|
|
42
|
+
model?: LanguageModel;
|
|
43
|
+
/** Turn ceiling for one request. @see DEFAULT_BROWSER_MAX_STEPS */
|
|
44
|
+
maxSteps?: number;
|
|
45
|
+
};
|
|
46
|
+
/**
|
|
47
|
+
* Build the agent a browser variant runs.
|
|
48
|
+
*
|
|
49
|
+
* The result is an SDK agent, so it drops straight into `DirectChatTransport`
|
|
50
|
+
* and from there into the same `useChat` the rest of the chat UI is built on
|
|
51
|
+
* — which is why nothing downstream of the transport has to know which
|
|
52
|
+
* harness produced its messages.
|
|
53
|
+
*/
|
|
54
|
+
export declare function createBrowserAgent(options: CreateBrowserAgentOptions): ToolLoopAgent;
|