@datalayer/agent-runtimes 1.0.29 → 1.3.11
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/AgentDocument.js +5 -22
- package/lib/AgentNode.d.ts +1 -1
- package/lib/AgentNode.js +193 -23
- package/lib/AgentNotebook.js +1 -1
- package/lib/App.d.ts +1 -1
- package/lib/AppExamples2.d.ts +1 -1
- package/lib/agent-node/AgentNodeGallery.d.ts +14 -1
- package/lib/agent-node/AgentNodeGallery.js +19 -15
- package/lib/agent-node/themeStore.js +7 -6
- package/lib/agents/AgentDetails.d.ts +8 -2
- package/lib/agents/AgentDetails.js +41 -11
- package/lib/agents/AgentRuntimeChat.d.ts +3 -3
- package/lib/agents/AgentRuntimeChat.js +15 -15
- package/lib/api/agents.d.ts +10 -10
- package/lib/api/agents.js +15 -15
- package/lib/api/checkpoints.d.ts +40 -0
- package/lib/api/checkpoints.js +75 -0
- package/lib/api/index.d.ts +1 -0
- package/lib/api/index.js +2 -1
- package/lib/api/notifications.d.ts +21 -6
- package/lib/api/notifications.js +32 -14
- package/lib/api/runtimes/environments.d.ts +406 -4
- package/lib/api/runtimes/environments.js +641 -9
- package/lib/api/runtimes/runtimes.d.ts +19 -19
- package/lib/api/runtimes/runtimes.js +47 -46
- package/lib/api/spacer/notebooks.js +1 -1
- package/lib/chat/Chat.d.ts +16 -4
- package/lib/chat/Chat.js +18 -5
- package/lib/chat/ChatFloating.d.ts +20 -2
- package/lib/chat/ChatFloating.js +196 -118
- package/lib/chat/ChatInline.d.ts +15 -0
- package/lib/chat/ChatInline.js +0 -18
- package/lib/chat/ChatPopupStandalone.d.ts +1 -1
- package/lib/chat/ChatSidebar.d.ts +14 -2
- package/lib/chat/ChatSidebar.js +1 -1
- package/lib/chat/ChatStandalone.d.ts +1 -1
- package/lib/chat/EphemeralSurfaceControl.d.ts +30 -0
- package/lib/chat/EphemeralSurfaceControl.js +55 -0
- package/lib/chat/base/ChatAvailability.d.ts +34 -0
- package/lib/chat/base/ChatAvailability.js +18 -0
- package/lib/chat/base/ChatBase.d.ts +2 -1
- package/lib/chat/base/ChatBase.js +657 -28
- package/lib/chat/display/ButtonGlow.d.ts +9 -0
- package/lib/chat/display/ButtonGlow.js +60 -0
- package/lib/chat/display/EmptyState.d.ts +15 -1
- package/lib/chat/display/EmptyState.js +81 -12
- package/lib/chat/display/FloatingBrandButton.d.ts +1 -1
- package/lib/chat/display/PoweredByTag.d.ts +1 -1
- package/lib/chat/display/groupSuggestions.d.ts +21 -0
- package/lib/chat/display/groupSuggestions.js +18 -0
- package/lib/chat/document/EphemeralDocument.d.ts +70 -6
- package/lib/chat/document/EphemeralDocument.js +154 -52
- package/lib/chat/header/ChatHeader.d.ts +1 -1
- package/lib/chat/header/ChatHeaderBase.d.ts +10 -1
- package/lib/chat/header/ChatHeaderBase.js +21 -102
- package/lib/chat/header/ChatViewModeToggle.d.ts +29 -0
- package/lib/chat/header/ChatViewModeToggle.js +55 -0
- package/lib/chat/index.d.ts +5 -1
- package/lib/chat/index.js +9 -1
- package/lib/chat/indicators/McpStatusIndicator.d.ts +1 -1
- package/lib/chat/indicators/SandboxStatusIndicator.d.ts +1 -1
- package/lib/chat/indicators/SandboxStatusIndicator.js +1 -1
- package/lib/chat/indicators/SkillsStatusIndicator.d.ts +1 -1
- package/lib/chat/messages/ChatMessageList.d.ts +22 -1
- package/lib/chat/messages/ChatMessageList.js +370 -166
- package/lib/chat/messages/ChatMessages.d.ts +1 -1
- package/lib/chat/messages/NotebookToolSurfaces.d.ts +68 -0
- package/lib/chat/messages/NotebookToolSurfaces.js +302 -0
- package/lib/chat/messages/TurnFooter.d.ts +42 -0
- package/lib/chat/messages/TurnFooter.js +75 -0
- package/lib/chat/messages/assistantMarkdown.d.ts +22 -0
- package/lib/chat/messages/assistantMarkdown.js +56 -0
- package/lib/chat/notebook/EphemeralNotebook.d.ts +67 -6
- package/lib/chat/notebook/EphemeralNotebook.js +194 -61
- package/lib/chat/parts/DynamicToolPart.d.ts +1 -1
- package/lib/chat/parts/MessagePart.d.ts +1 -1
- package/lib/chat/parts/ReasoningPart.d.ts +8 -1
- package/lib/chat/parts/TextPart.d.ts +1 -1
- package/lib/chat/parts/ToolPart.d.ts +8 -1
- package/lib/chat/prompt/FloatingCard.d.ts +26 -0
- package/lib/chat/prompt/FloatingCard.js +80 -0
- package/lib/chat/prompt/InputPrompt.d.ts +206 -53
- package/lib/chat/prompt/InputPrompt.js +161 -80
- package/lib/chat/prompt/InputPromptBase.d.ts +112 -0
- package/lib/chat/prompt/InputPromptBase.js +225 -0
- package/lib/chat/prompt/InputPromptLexical.d.ts +18 -1
- package/lib/chat/prompt/InputPromptLexical.js +227 -30
- package/lib/chat/prompt/InputPromptText.d.ts +10 -2
- package/lib/chat/prompt/InputPromptText.js +35 -3
- package/lib/chat/prompt/footer/BelowPromptFooter.d.ts +25 -0
- package/lib/chat/prompt/footer/BelowPromptFooter.js +12 -0
- package/lib/chat/prompt/footer/InPromptFooter.d.ts +35 -0
- package/lib/chat/prompt/footer/InPromptFooter.js +16 -0
- package/lib/chat/prompt/footer/index.d.ts +7 -0
- package/lib/chat/prompt/footer/index.js +11 -0
- package/lib/chat/prompt/header/BelowPromptHeader.d.ts +23 -0
- package/lib/chat/prompt/header/BelowPromptHeader.js +12 -0
- package/lib/chat/prompt/header/InPromptHeader.d.ts +31 -0
- package/lib/chat/prompt/header/InPromptHeader.js +14 -0
- package/lib/chat/prompt/header/index.d.ts +7 -0
- package/lib/chat/prompt/header/index.js +11 -0
- package/lib/chat/prompt/index.d.ts +8 -4
- package/lib/chat/prompt/index.js +15 -3
- package/lib/chat/prompt/menus/AgentsMenu.d.ts +14 -0
- package/lib/chat/prompt/menus/AgentsMenu.js +42 -0
- package/lib/chat/prompt/menus/InlineAgentsMenu.d.ts +22 -0
- package/lib/chat/prompt/menus/InlineAgentsMenu.js +24 -0
- package/lib/chat/prompt/menus/ModelSelector.d.ts +7 -0
- package/lib/chat/prompt/menus/ModelSelector.js +27 -0
- package/lib/chat/prompt/menus/SkillsMenu.d.ts +10 -0
- package/lib/chat/prompt/menus/SkillsMenu.js +75 -0
- package/lib/chat/prompt/menus/SuggestionsMenu.d.ts +13 -0
- package/lib/chat/prompt/menus/SuggestionsMenu.js +31 -0
- package/lib/chat/prompt/menus/ToolsMenu.d.ts +13 -0
- package/lib/chat/prompt/menus/ToolsMenu.js +103 -0
- package/lib/chat/prompt/menus/index.d.ts +15 -0
- package/lib/chat/prompt/menus/index.js +19 -0
- package/lib/chat/prompt/plugins/AgentMentionPlugin.d.ts +54 -0
- package/lib/chat/prompt/plugins/AgentMentionPlugin.js +370 -0
- package/lib/chat/prompt/plugins/CommandPlugin.d.ts +52 -0
- package/lib/chat/prompt/plugins/CommandPlugin.js +359 -0
- package/lib/chat/prompt/plugins/MentionChip.d.ts +15 -0
- package/lib/chat/prompt/plugins/MentionChip.js +24 -0
- package/lib/chat/prompt/plugins/MentionNode.d.ts +66 -0
- package/lib/chat/prompt/plugins/MentionNode.js +77 -0
- package/lib/chat/prompt/promptHistory.d.ts +52 -0
- package/lib/chat/prompt/promptHistory.js +123 -0
- package/lib/chat/prompt/stack.d.ts +81 -0
- package/lib/chat/prompt/stack.js +41 -0
- package/lib/chat/prompt/useTypingPlaceholder.d.ts +52 -0
- package/lib/chat/prompt/useTypingPlaceholder.js +180 -0
- package/lib/chat/tools/A2AAgentDialog.d.ts +60 -0
- package/lib/chat/tools/A2AAgentDialog.js +265 -0
- package/lib/chat/tools/ToolApprovalBanner.d.ts +1 -1
- package/lib/chat/tools/ToolApprovalDialog.d.ts +1 -1
- package/lib/chat/tools/ToolCallDisplay.d.ts +8 -1
- package/lib/chat/tools/index.d.ts +1 -0
- package/lib/chat/tools/index.js +1 -0
- package/lib/chat/usage/ContextPie.d.ts +17 -0
- package/lib/chat/usage/{TokenUsageBar.js → ContextPie.js} +20 -14
- package/lib/chat/useViewportDrag.d.ts +11 -0
- package/lib/chat/useViewportDrag.js +61 -0
- package/lib/chat/viewModes.d.ts +51 -0
- package/lib/chat/viewModes.js +57 -0
- package/lib/client/AgentRuntimesClient.d.ts +10 -9
- package/lib/client/AgentRuntimesClient.js +1 -1
- package/lib/client/AgentRuntimesClientContext.d.ts +1 -0
- package/lib/client/AgentsMixin.d.ts +12 -12
- package/lib/client/AgentsMixin.js +31 -31
- package/lib/client/IAgentRuntimesClient.d.ts +10 -10
- package/lib/client/SdkAgentRuntimesClient.d.ts +10 -10
- package/lib/client/SdkAgentRuntimesClient.js +10 -10
- package/lib/client/mixins/RuntimesMixin.d.ts +37 -10
- package/lib/client/mixins/RuntimesMixin.js +54 -21
- package/lib/components/a2ui/A2uiSurfaceComposed.d.ts +1 -1
- package/lib/components/agents/AgentSummary.d.ts +13 -0
- package/lib/components/agents/AgentSummary.js +21 -4
- package/lib/components/cards/NotificationEventCard.d.ts +1 -1
- package/lib/components/cards/OutputCard.d.ts +1 -1
- package/lib/components/cards/ToolApprovalCard.d.ts +2 -2
- package/lib/components/cards/ToolApprovalCard.js +1 -0
- package/lib/components/code-sandboxes/CodeSandboxCellVariables.d.ts +1 -0
- package/lib/components/code-sandboxes/CodeSandboxCellVariables.js +0 -4
- package/lib/components/code-sandboxes/CodeSandboxCellVariablesDialog.d.ts +1 -0
- package/lib/components/code-sandboxes/CodeSandboxCellVariablesDialog.js +0 -4
- package/lib/components/code-sandboxes/CodeSandboxEnvironmentSelect.d.ts +35 -0
- package/lib/components/code-sandboxes/CodeSandboxEnvironmentSelect.js +27 -29
- package/lib/components/code-sandboxes/CodeSandboxLauncher.d.ts +9 -0
- package/lib/components/code-sandboxes/CodeSandboxLauncher.js +95 -23
- package/lib/components/code-sandboxes/CodeSandboxNames.js +7 -6
- package/lib/components/code-sandboxes/CodeSandboxPicker.js +89 -42
- package/lib/components/code-sandboxes/CodeSandboxPickerCell.d.ts +1 -0
- package/lib/components/code-sandboxes/CodeSandboxPickerCell.js +0 -4
- package/lib/components/code-sandboxes/CodeSandboxReservationControl.d.ts +1 -0
- package/lib/components/code-sandboxes/CodeSandboxReservationControl.js +5 -7
- package/lib/components/code-sandboxes/CodeSandboxTransfer.d.ts +5 -0
- package/lib/components/code-sandboxes/CodeSandboxUtils.d.ts +13 -1
- package/lib/components/code-sandboxes/CodeSandboxUtils.js +10 -4
- package/lib/components/code-sandboxes/NewCodeSandboxControls.d.ts +21 -15
- package/lib/components/code-sandboxes/NewCodeSandboxControls.js +28 -51
- package/lib/components/code-sandboxes/codeSandboxAllowance.d.ts +33 -0
- package/lib/components/code-sandboxes/codeSandboxAllowance.js +37 -0
- package/lib/components/code-sandboxes/codeSandboxEnvironments.d.ts +97 -0
- package/lib/components/code-sandboxes/codeSandboxEnvironments.js +184 -0
- package/lib/components/code-sandboxes/codeSandboxProviders.js +14 -5
- package/lib/components/code-sandboxes/index.d.ts +1 -0
- package/lib/components/code-sandboxes/index.js +1 -0
- package/lib/components/context/SpaceSelect.d.ts +1 -1
- package/lib/components/flashes/FlashDisclaimer.d.ts +1 -1
- package/lib/components/icons/ArtifactIcon.d.ts +1 -0
- package/lib/components/icons/ArtifactIcon.js +2 -1
- package/lib/components/nbgrader/NbGradesDetails.d.ts +1 -1
- package/lib/components/progress/CreditsIndicator.d.ts +1 -0
- package/lib/components/progress/CreditsIndicator.js +0 -4
- package/lib/components/scheduler/ScheduleMenu.d.ts +1 -1
- package/lib/components/snapshots/SandboxSnapshotMenu.d.ts +3 -2
- package/lib/components/snapshots/SandboxSnapshotMenu.js +11 -15
- package/lib/components/snippets/SnippetDialog.d.ts +1 -0
- package/lib/components/snippets/SnippetDialog.js +0 -4
- package/lib/components/specs/SpecPayloadPreview.d.ts +34 -0
- package/lib/components/specs/SpecPayloadPreview.js +102 -0
- package/lib/components/tokens/SpaceVariantToken.d.ts +1 -1
- package/lib/context/ContextDistribution.d.ts +1 -1
- package/lib/context/ContextInspector.d.ts +2 -1
- package/lib/context/ContextPanel.d.ts +1 -1
- package/lib/context/ContextUsage.d.ts +1 -1
- package/lib/context/CostTracker.d.ts +1 -1
- package/lib/context/CostUsageChart.d.ts +1 -1
- package/lib/context/CostUsageChart.js +4 -4
- package/lib/context/MessageHistory.d.ts +3 -2
- package/lib/context/TokenUsageChart.d.ts +1 -1
- package/lib/context/TokenUsageChart.js +4 -4
- package/lib/examples/A2UiAgentExample.js +15 -6
- package/lib/examples/A2UiComponentsGalleryExample.d.ts +10 -0
- package/lib/examples/A2UiComponentsGalleryExample.js +24 -855
- package/lib/examples/A2UiContactCardExample.d.ts +10 -0
- package/lib/examples/A2UiContactCardExample.js +23 -170
- package/lib/examples/A2UiJupyterOutputExample.d.ts +3 -0
- package/lib/examples/A2UiJupyterOutputExample.js +792 -0
- package/lib/examples/A2UiRestaurantExample.d.ts +10 -0
- package/lib/examples/A2UiRestaurantExample.js +24 -179
- package/lib/examples/A2UiViewerExample.d.ts +10 -0
- package/lib/examples/A2UiViewerExample.js +24 -378
- package/lib/examples/AgUiAgenticExample.js +2 -4
- package/lib/examples/AgUiBackendToolRenderingExample.js +3 -5
- package/lib/examples/AgUiHaikuGenUiExample.js +2 -4
- package/lib/examples/AgUiHumanInTheLoopExample.js +2 -4
- package/lib/examples/AgUiSharedStateExample.js +2 -4
- package/lib/examples/AgUiToolsBasedGenUiExample.js +2 -4
- package/lib/examples/AgentA2AExample.d.ts +17 -0
- package/lib/examples/AgentA2AExample.js +56 -0
- package/lib/examples/AgentCheckpointsExample.d.ts +9 -10
- package/lib/examples/AgentCheckpointsExample.js +72 -54
- package/lib/examples/AgentCodeSandboxExample.d.ts +7 -7
- package/lib/examples/AgentCodeSandboxExample.js +93 -303
- package/lib/examples/AgentCodeSandboxesExample.d.ts +10 -0
- package/lib/examples/AgentCodeSandboxesExample.js +56 -162
- package/lib/examples/AgentCodemodeExample.d.ts +7 -2
- package/lib/examples/AgentCodemodeExample.js +60 -125
- package/lib/examples/AgentCompactionExample.js +19 -135
- package/lib/examples/AgentEvalsExample.js +34 -66
- package/lib/examples/AgentGuardrailsExample.js +64 -112
- package/lib/examples/AgentHooksExample.d.ts +11 -0
- package/lib/examples/AgentHooksExample.js +30 -67
- package/lib/examples/AgentInferenceProviderExample.js +8 -32
- package/lib/examples/AgentLoopExample.d.ts +4 -2
- package/lib/examples/AgentLoopExample.js +45 -93
- package/lib/examples/AgentMCPExample.js +30 -79
- package/lib/examples/AgentMemoryExample.js +21 -64
- package/lib/examples/AgentMonitoringExample.js +33 -94
- package/lib/examples/AgentNotificationsExample.js +56 -95
- package/lib/examples/AgentOtelExample.js +35 -88
- package/lib/examples/AgentOutputsExample.d.ts +2 -1
- package/lib/examples/AgentOutputsExample.js +16 -137
- package/lib/examples/AgentParametersExample.js +7 -17
- package/lib/examples/AgentSkillsExample.js +40 -154
- package/lib/examples/AgentSubagentsExample.d.ts +7 -6
- package/lib/examples/AgentSubagentsExample.js +80 -191
- package/lib/examples/AgentToolApprovalsExample.js +35 -91
- package/lib/examples/AgentTriggersExample.js +43 -59
- package/lib/examples/AgentspecsExample.js +4 -4
- package/lib/examples/CellExample.d.ts +1 -1
- package/lib/examples/ChatExample.d.ts +12 -5
- package/lib/examples/ChatExample.js +38 -13
- package/lib/examples/CopilotKitLexicalExample.d.ts +1 -0
- package/lib/examples/CopilotKitLexicalExample.js +4 -41
- package/lib/examples/CopilotKitNotebookExample.d.ts +10 -0
- package/lib/examples/CopilotKitNotebookExample.js +2 -14
- package/lib/examples/DecksAgent.d.ts +21 -0
- package/lib/examples/DecksAgent.js +23 -0
- package/lib/examples/DocumentPageAgent.d.ts +19 -0
- package/lib/examples/DocumentPageAgent.js +15 -0
- package/lib/examples/Lexical2Example.d.ts +2 -2
- package/lib/examples/Lexical2Example.js +17 -38
- package/lib/examples/LexicalAgentExample.d.ts +2 -1
- package/lib/examples/LexicalAgentExample.js +29 -102
- package/lib/examples/LexicalAgentSidebarExample.d.ts +16 -5
- package/lib/examples/LexicalAgentSidebarExample.js +99 -131
- package/lib/examples/LoopShellExample.d.ts +38 -0
- package/lib/examples/LoopShellExample.js +68 -0
- package/lib/examples/LoopWorkspaceEmbed.d.ts +50 -0
- package/lib/examples/LoopWorkspaceEmbed.js +73 -0
- package/lib/examples/LoopWorkspaceExample.d.ts +150 -0
- package/lib/examples/LoopWorkspaceExample.js +151 -0
- package/lib/examples/NotebookAgentExample.d.ts +13 -0
- package/lib/examples/NotebookAgentExample.js +36 -86
- package/lib/examples/NotebookAgentSidebarExample.d.ts +10 -4
- package/lib/examples/NotebookAgentSidebarExample.js +39 -83
- package/lib/examples/NotebookCollaborationExample.d.ts +1 -1
- package/lib/examples/NotebookCollaborationExample.js +108 -20
- package/lib/examples/NotebookExample.d.ts +1 -1
- package/lib/examples/NotebookExample.js +20 -10
- package/lib/examples/NotebookPageAgent.d.ts +23 -0
- package/lib/examples/NotebookPageAgent.js +17 -0
- package/lib/examples/components/ExampleWrapper.d.ts +5 -0
- package/lib/examples/components/ExampleWrapper.js +36 -28
- package/lib/examples/components/LexicalEditor.d.ts +1 -1
- package/lib/examples/components/LexicalEditor.js +4 -24
- package/lib/examples/components/haiku/HaikuDisplay.d.ts +1 -1
- package/lib/examples/components/haiku/InlineHaikuCard.d.ts +1 -1
- package/lib/examples/components/weather/InlineWeatherCard.d.ts +1 -1
- package/lib/examples/example-selector.js +26 -6
- package/lib/examples/hooks/useCreateAgentOnce.d.ts +41 -0
- package/lib/examples/hooks/useCreateAgentOnce.js +51 -0
- package/lib/examples/hooks/useExampleAgentProtocol.d.ts +35 -0
- package/lib/examples/hooks/useExampleAgentProtocol.js +63 -0
- package/lib/examples/hooks/useExampleAgentRuntime.d.ts +16 -16
- package/lib/examples/hooks/useExampleAgentRuntime.js +26 -25
- package/lib/examples/hooks/useExampleAgentRuntimes.js +45 -61
- package/lib/examples/hooks/useExampleJupyterAgent.d.ts +91 -0
- package/lib/examples/hooks/useExampleJupyterAgent.js +151 -0
- package/lib/examples/index.d.ts +4 -0
- package/lib/examples/index.js +6 -0
- package/lib/examples/lexical/editorConfig.d.ts +2 -75
- package/lib/examples/lexical/editorConfig.js +26 -48
- package/lib/examples/lexical/lexical-theme.css +65 -47
- package/lib/examples/main.js +450 -322
- package/lib/examples/scenes/A2UiComponentsGalleryScene.d.ts +3 -0
- package/lib/examples/scenes/A2UiComponentsGalleryScene.js +872 -0
- package/lib/examples/scenes/A2UiContactCardScene.d.ts +3 -0
- package/lib/examples/scenes/A2UiContactCardScene.js +188 -0
- package/lib/examples/scenes/A2UiRestaurantScene.d.ts +3 -0
- package/lib/examples/scenes/A2UiRestaurantScene.js +196 -0
- package/lib/examples/scenes/A2UiViewerScene.d.ts +3 -0
- package/lib/examples/scenes/A2UiViewerScene.js +395 -0
- package/lib/examples/utils/agentSummaryStore.d.ts +7 -1
- package/lib/examples/utils/agents/earthquake-detector.ipynb.json +1 -1
- package/lib/examples/utils/agents/earthquake-detector.lexical.json +1 -1
- package/lib/examples/utils/agents/sales-forecaster.ipynb.json +1 -1
- package/lib/examples/utils/agents/sales-forecaster.lexical.json +1 -1
- package/lib/examples/utils/agents/social-post-generator.ipynb.json +1 -1
- package/lib/examples/utils/agents/social-post-generator.lexical.json +1 -1
- package/lib/examples/utils/exampleSurfaces.d.ts +31 -0
- package/lib/examples/utils/exampleSurfaces.js +38 -0
- package/lib/examples/utils/jupyterSandboxUrl.d.ts +27 -0
- package/lib/examples/utils/jupyterSandboxUrl.js +55 -0
- package/lib/examples/utils/localUrl.d.ts +2 -0
- package/lib/examples/utils/localUrl.js +49 -0
- package/lib/examples/utils/notebookToolbarItems.d.ts +46 -0
- package/lib/examples/utils/notebookToolbarItems.js +129 -0
- package/lib/examples/utils/runtimeTargetStore.d.ts +40 -1
- package/lib/examples/utils/runtimeTargetStore.js +82 -1
- package/lib/examples/utils/themedProvider.d.ts +7 -0
- package/lib/examples/utils/themedProvider.js +57 -4
- package/lib/examples/utils/useExampleAgentRuntimesUrl.js +30 -5
- package/lib/examples/utils/waitForAgent.d.ts +23 -0
- package/lib/examples/utils/waitForAgent.js +24 -0
- package/lib/examples2/CellExample.d.ts +1 -1
- package/lib/examples2/DatalayerNotebookExample.d.ts +1 -1
- package/lib/examples2/NotebookExample.d.ts +1 -1
- package/lib/examples2/NotebookMutationsKernel.d.ts +1 -1
- package/lib/examples2/NotebookMutationsServiceManager.d.ts +1 -1
- package/lib/examples2/main.js +24 -4
- package/lib/extensions/A2UIExtension.d.ts +1 -1
- package/lib/hooks/index.d.ts +8 -5
- package/lib/hooks/index.js +20 -5
- package/lib/hooks/useAgentRuntimes.d.ts +49 -22
- package/lib/hooks/useAgentRuntimes.js +214 -90
- package/lib/hooks/useAgentsCatalog.js +32 -4
- package/lib/hooks/useBrowserAgent.d.ts +26 -0
- package/lib/hooks/useBrowserAgent.js +75 -0
- package/lib/hooks/useBrowserInference.d.ts +27 -0
- package/lib/hooks/useBrowserInference.js +67 -0
- package/lib/hooks/useCheckpoints.d.ts +8 -17
- package/lib/hooks/useCheckpoints.js +25 -59
- package/lib/hooks/useConfig.d.ts +1 -1
- package/lib/hooks/useConfig.js +5 -1
- package/lib/hooks/useContextSnapshot.d.ts +18 -7
- package/lib/hooks/useContextSnapshot.js +14 -10
- package/lib/hooks/useNotifications.d.ts +11 -11
- package/lib/hooks/useNotifications.js +1 -1
- package/lib/hooks/useProjects.d.ts +7 -19
- package/lib/hooks/useProjects.js +5 -5
- package/lib/hooks/useSkills.d.ts +0 -1
- package/lib/hooks/useSkills.js +6 -2
- package/lib/hooks/useToolApprovals.d.ts +8 -8
- package/lib/hooks/useToolApprovals.js +3 -3
- package/lib/identity/AgentIdentity.d.ts +9 -2
- package/lib/index.d.ts +1 -0
- package/lib/index.js +4 -0
- package/lib/jupyter/index.d.ts +2 -1
- package/lib/jupyter/index.js +2 -1
- package/lib/jupyter/serverExecution.d.ts +78 -0
- package/lib/jupyter/serverExecution.js +258 -0
- package/lib/jupyter/useResumeServerExecutions.d.ts +11 -0
- package/lib/jupyter/useResumeServerExecutions.js +64 -0
- package/lib/lexical/ChatInlinePlugin.d.ts +33 -0
- package/lib/lexical/ChatInlinePlugin.js +0 -36
- package/lib/loop/core/focusRequests.d.ts +10 -0
- package/lib/loop/core/focusRequests.js +46 -0
- package/lib/loop/core/index.d.ts +903 -0
- package/lib/loop/core/index.js +264 -0
- package/lib/loop/core/promptStore.d.ts +44 -0
- package/lib/loop/core/promptStore.js +63 -0
- package/lib/loop/core/surfaceRequests.d.ts +33 -0
- package/lib/loop/core/surfaceRequests.js +29 -0
- package/lib/loop/core/toolbar.d.ts +28 -0
- package/lib/loop/core/toolbar.js +59 -0
- package/lib/loop/embed/LoopEmbed.d.ts +57 -0
- package/lib/loop/embed/LoopEmbed.js +124 -0
- package/lib/loop/extensions.d.ts +10 -0
- package/lib/loop/extensions.js +49 -0
- package/lib/loop/index.d.ts +68 -0
- package/lib/loop/index.js +87 -0
- package/lib/loop/plugins/a2a-sidebar/A2ASidebar.d.ts +48 -0
- package/lib/loop/plugins/a2a-sidebar/A2ASidebar.js +190 -0
- package/lib/loop/plugins/a2a-sidebar/index.d.ts +5 -0
- package/lib/loop/plugins/a2a-sidebar/index.js +39 -0
- package/lib/loop/plugins/a2ui/A2uiView.d.ts +12 -0
- package/lib/loop/plugins/a2ui/A2uiView.js +97 -0
- package/lib/loop/plugins/a2ui/index.d.ts +3 -0
- package/lib/loop/plugins/a2ui/index.js +50 -0
- package/lib/loop/plugins/a2ui-scene/index.d.ts +36 -0
- package/lib/loop/plugins/a2ui-scene/index.js +28 -0
- package/lib/loop/plugins/agent-a2a/index.d.ts +3 -0
- package/lib/loop/plugins/agent-a2a/index.js +26 -0
- package/lib/loop/plugins/agent-a2ui/index.d.ts +3 -0
- package/lib/loop/plugins/agent-a2ui/index.js +42 -0
- package/lib/loop/plugins/agent-a2ui-jupyter-output/index.d.ts +3 -0
- package/lib/loop/plugins/agent-a2ui-jupyter-output/index.js +53 -0
- package/lib/loop/plugins/agent-capacity/index.d.ts +39 -0
- package/lib/loop/plugins/agent-capacity/index.js +52 -0
- package/lib/loop/plugins/agent-checkpoints/index.d.ts +3 -0
- package/lib/loop/plugins/agent-checkpoints/index.js +26 -0
- package/lib/loop/plugins/agent-code-sandbox/index.d.ts +3 -0
- package/lib/loop/plugins/agent-code-sandbox/index.js +24 -0
- package/lib/loop/plugins/agent-code-sandboxes/index.d.ts +13 -0
- package/lib/loop/plugins/agent-code-sandboxes/index.js +85 -0
- package/lib/loop/plugins/agent-codemode/index.d.ts +5 -0
- package/lib/loop/plugins/agent-codemode/index.js +41 -0
- package/lib/loop/plugins/agent-compaction/index.d.ts +10 -0
- package/lib/loop/plugins/agent-compaction/index.js +34 -0
- package/lib/loop/plugins/agent-evals/index.d.ts +3 -0
- package/lib/loop/plugins/agent-evals/index.js +25 -0
- package/lib/loop/plugins/agent-guardrails/index.d.ts +3 -0
- package/lib/loop/plugins/agent-guardrails/index.js +25 -0
- package/lib/loop/plugins/agent-hooks/index.d.ts +3 -0
- package/lib/loop/plugins/agent-hooks/index.js +28 -0
- package/lib/loop/plugins/agent-inference/index.d.ts +7 -0
- package/lib/loop/plugins/agent-inference/index.js +29 -0
- package/lib/loop/plugins/agent-mcp/index.d.ts +3 -0
- package/lib/loop/plugins/agent-mcp/index.js +25 -0
- package/lib/loop/plugins/agent-memory/index.d.ts +3 -0
- package/lib/loop/plugins/agent-memory/index.js +25 -0
- package/lib/loop/plugins/agent-monitoring/index.d.ts +3 -0
- package/lib/loop/plugins/agent-monitoring/index.js +25 -0
- package/lib/loop/plugins/agent-notifications/index.d.ts +3 -0
- package/lib/loop/plugins/agent-notifications/index.js +25 -0
- package/lib/loop/plugins/agent-otel/index.d.ts +3 -0
- package/lib/loop/plugins/agent-otel/index.js +25 -0
- package/lib/loop/plugins/agent-outputs/index.d.ts +3 -0
- package/lib/loop/plugins/agent-outputs/index.js +25 -0
- package/lib/loop/plugins/agent-parameters/index.d.ts +3 -0
- package/lib/loop/plugins/agent-parameters/index.js +25 -0
- package/lib/loop/plugins/agent-skills/index.d.ts +3 -0
- package/lib/loop/plugins/agent-skills/index.js +25 -0
- package/lib/loop/plugins/agent-subagents/index.d.ts +3 -0
- package/lib/loop/plugins/agent-subagents/index.js +25 -0
- package/lib/loop/plugins/agent-tool-approvals/index.d.ts +11 -0
- package/lib/loop/plugins/agent-tool-approvals/index.js +38 -0
- package/lib/loop/plugins/agent-triggers/index.d.ts +3 -0
- package/lib/loop/plugins/agent-triggers/index.js +26 -0
- package/lib/loop/plugins/agents/AgentSummaryPanel.d.ts +20 -0
- package/lib/loop/plugins/agents/AgentSummaryPanel.js +50 -0
- package/lib/loop/plugins/agents/AnonymousKeyBadge.d.ts +35 -0
- package/lib/loop/plugins/agents/AnonymousKeyBadge.js +53 -0
- package/lib/loop/plugins/agents/DatalayerAgentBridge.d.ts +24 -0
- package/lib/loop/plugins/agents/DatalayerAgentBridge.js +102 -0
- package/lib/loop/plugins/agents/DatalayerAgentMount.d.ts +18 -0
- package/lib/loop/plugins/agents/DatalayerAgentMount.js +12 -0
- package/lib/loop/plugins/agents/SandboxSelector.d.ts +18 -0
- package/lib/loop/plugins/agents/SandboxSelector.js +99 -0
- package/lib/loop/plugins/agents/SandboxStatusBridge.d.ts +19 -0
- package/lib/loop/plugins/agents/SandboxStatusBridge.js +23 -0
- package/lib/loop/plugins/agents/SandboxView.d.ts +11 -0
- package/lib/loop/plugins/agents/SandboxView.js +43 -0
- package/lib/loop/plugins/agents/TeamMemberPicker.d.ts +17 -0
- package/lib/loop/plugins/agents/TeamMemberPicker.js +60 -0
- package/lib/loop/plugins/agents/agentIcons.d.ts +23 -0
- package/lib/loop/plugins/agents/agentIcons.js +88 -0
- package/lib/loop/plugins/agents/browserService.d.ts +50 -0
- package/lib/loop/plugins/agents/browserService.js +233 -0
- package/lib/loop/plugins/agents/index.d.ts +13 -0
- package/lib/loop/plugins/agents/index.js +17 -0
- package/lib/loop/plugins/agents/plugin.d.ts +91 -0
- package/lib/loop/plugins/agents/plugin.js +201 -0
- package/lib/loop/plugins/agents/service.d.ts +99 -0
- package/lib/loop/plugins/agents/service.js +167 -0
- package/lib/loop/plugins/agents/specSubagents.d.ts +18 -0
- package/lib/loop/plugins/agents/specSubagents.js +33 -0
- package/lib/loop/plugins/agents/switchable.d.ts +107 -0
- package/lib/loop/plugins/agents/switchable.js +405 -0
- package/lib/loop/plugins/agents/team.d.ts +87 -0
- package/lib/loop/plugins/agents/team.js +143 -0
- package/lib/loop/plugins/agents/useSandboxService.d.ts +11 -0
- package/lib/loop/plugins/agents/useSandboxService.js +36 -0
- package/lib/loop/plugins/agents/useTeamSelection.d.ts +10 -0
- package/lib/loop/plugins/agents/useTeamSelection.js +27 -0
- package/lib/loop/plugins/agentspecs/AgentspecPicker.d.ts +15 -0
- package/lib/loop/plugins/agentspecs/AgentspecPicker.js +90 -0
- package/lib/loop/plugins/agentspecs/index.d.ts +6 -0
- package/lib/loop/plugins/agentspecs/index.js +63 -0
- package/lib/loop/plugins/chat/ChatView.d.ts +20 -0
- package/lib/loop/plugins/chat/ChatView.js +1679 -0
- package/lib/loop/plugins/chat/chatViewTools.d.ts +41 -0
- package/lib/loop/plugins/chat/chatViewTools.js +92 -0
- package/lib/loop/plugins/chat/index.d.ts +111 -0
- package/lib/loop/plugins/chat/index.js +143 -0
- package/lib/loop/plugins/chat/turnState.d.ts +41 -0
- package/lib/loop/plugins/chat/turnState.js +90 -0
- package/lib/loop/plugins/chat-extras/index.d.ts +14 -0
- package/lib/loop/plugins/chat-extras/index.js +51 -0
- package/lib/loop/plugins/chat-header/HeaderView.d.ts +13 -0
- package/lib/loop/plugins/chat-header/HeaderView.js +6 -0
- package/lib/loop/plugins/chat-header/index.d.ts +3 -0
- package/lib/loop/plugins/chat-header/index.js +21 -0
- package/lib/loop/plugins/chat-view/index.d.ts +10 -0
- package/lib/loop/plugins/chat-view/index.js +29 -0
- package/lib/loop/plugins/checkpoints-sidebar/CheckpointsSidebar.d.ts +27 -0
- package/lib/loop/plugins/checkpoints-sidebar/CheckpointsSidebar.js +174 -0
- package/lib/loop/plugins/checkpoints-sidebar/index.d.ts +5 -0
- package/lib/loop/plugins/checkpoints-sidebar/index.js +39 -0
- package/lib/loop/plugins/commands/index.d.ts +20 -0
- package/lib/loop/plugins/commands/index.js +148 -0
- package/lib/loop/plugins/decks/DeckSurface.d.ts +10 -0
- package/lib/loop/plugins/decks/DeckSurface.js +6 -0
- package/lib/loop/plugins/decks/DecksMenu.d.ts +11 -0
- package/lib/loop/plugins/decks/DecksMenu.js +42 -0
- package/lib/loop/plugins/decks/index.d.ts +19 -0
- package/lib/loop/plugins/decks/index.js +133 -0
- package/lib/loop/plugins/decks/surface.d.ts +7 -0
- package/lib/loop/plugins/decks/surface.js +11 -0
- package/lib/loop/plugins/document/DocumentView.d.ts +12 -0
- package/lib/loop/plugins/document/DocumentView.js +68 -0
- package/lib/loop/plugins/document/index.d.ts +3 -0
- package/lib/loop/plugins/document/index.js +86 -0
- package/lib/loop/plugins/document/openingDocument.d.ts +28 -0
- package/lib/loop/plugins/document/openingDocument.js +122 -0
- package/lib/loop/plugins/document-toolbar/SandboxStatusItem.d.ts +16 -0
- package/lib/loop/plugins/document-toolbar/SandboxStatusItem.js +31 -0
- package/lib/loop/plugins/document-toolbar/index.d.ts +4 -0
- package/lib/loop/plugins/document-toolbar/index.js +35 -0
- package/lib/loop/plugins/document-toolbar/names.d.ts +6 -0
- package/lib/loop/plugins/document-toolbar/names.js +10 -0
- package/lib/loop/plugins/document-toolbar/plugin.d.ts +2 -0
- package/lib/loop/plugins/document-toolbar/plugin.js +38 -0
- package/lib/loop/plugins/document-view/index.d.ts +10 -0
- package/lib/loop/plugins/document-view/index.js +28 -0
- package/lib/loop/plugins/graph/GraphToggle.d.ts +17 -0
- package/lib/loop/plugins/graph/GraphToggle.js +22 -0
- package/lib/loop/plugins/graph/GraphView.d.ts +16 -0
- package/lib/loop/plugins/graph/GraphView.js +6 -0
- package/lib/loop/plugins/graph/index.d.ts +5 -0
- package/lib/loop/plugins/graph/index.js +80 -0
- package/lib/loop/plugins/graph/viewType.d.ts +10 -0
- package/lib/loop/plugins/graph/viewType.js +14 -0
- package/lib/loop/plugins/input-prompt/ComposerView.d.ts +15 -0
- package/lib/loop/plugins/input-prompt/ComposerView.js +25 -0
- package/lib/loop/plugins/input-prompt/index.d.ts +25 -0
- package/lib/loop/plugins/input-prompt/index.js +26 -0
- package/lib/loop/plugins/models/index.d.ts +3 -0
- package/lib/loop/plugins/models/index.js +49 -0
- package/lib/loop/plugins/notebook/NotebookView.d.ts +9 -0
- package/lib/loop/plugins/notebook/NotebookView.js +189 -0
- package/lib/loop/plugins/notebook/index.d.ts +3 -0
- package/lib/loop/plugins/notebook/index.js +91 -0
- package/lib/loop/plugins/notebook/openingNotebook.d.ts +72 -0
- package/lib/loop/plugins/notebook/openingNotebook.js +90 -0
- package/lib/loop/plugins/notebook-toolbar/index.d.ts +4 -0
- package/lib/loop/plugins/notebook-toolbar/index.js +45 -0
- package/lib/loop/plugins/notebook-toolbar/items.d.ts +10 -0
- package/lib/loop/plugins/notebook-toolbar/items.js +45 -0
- package/lib/loop/plugins/notebook-toolbar/names.d.ts +9 -0
- package/lib/loop/plugins/notebook-toolbar/names.js +13 -0
- package/lib/loop/plugins/notebook-toolbar/plugin.d.ts +2 -0
- package/lib/loop/plugins/notebook-toolbar/plugin.js +24 -0
- package/lib/loop/plugins/notebook-view/index.d.ts +10 -0
- package/lib/loop/plugins/notebook-view/index.js +30 -0
- package/lib/loop/plugins/page-layout/TurnPanel.d.ts +25 -0
- package/lib/loop/plugins/page-layout/TurnPanel.js +126 -0
- package/lib/loop/plugins/page-layout/index.d.ts +71 -0
- package/lib/loop/plugins/page-layout/index.js +160 -0
- package/lib/loop/plugins/plugins-panel/index.d.ts +14 -0
- package/lib/loop/plugins/plugins-panel/index.js +74 -0
- package/lib/loop/plugins/prompt/NewChatAction.d.ts +19 -0
- package/lib/loop/plugins/prompt/NewChatAction.js +10 -0
- package/lib/loop/plugins/prompt/index.d.ts +11 -0
- package/lib/loop/plugins/prompt/index.js +73 -0
- package/lib/loop/plugins/shell/editorChoice.d.ts +31 -0
- package/lib/loop/plugins/shell/editorChoice.js +58 -0
- package/lib/loop/plugins/shell/index.d.ts +47 -0
- package/lib/loop/plugins/shell/index.js +142 -0
- package/lib/loop/plugins/shell/useEditorPreviews.d.ts +32 -0
- package/lib/loop/plugins/shell/useEditorPreviews.js +217 -0
- package/lib/loop/plugins/subagent-activity/SubagentPulse.d.ts +16 -0
- package/lib/loop/plugins/subagent-activity/SubagentPulse.js +45 -0
- package/lib/loop/plugins/subagent-activity/index.d.ts +12 -0
- package/lib/loop/plugins/subagent-activity/index.js +42 -0
- package/lib/loop/plugins/view-switch/index.d.ts +46 -0
- package/lib/loop/plugins/view-switch/index.js +68 -0
- package/lib/loop/plugins/window-frame/WindowFrame.d.ts +48 -0
- package/lib/loop/plugins/window-frame/WindowFrame.js +63 -0
- package/lib/loop/plugins/window-frame/index.d.ts +6 -0
- package/lib/loop/plugins/window-frame/index.js +79 -0
- package/lib/loop/plugins/window-frame/slots.d.ts +26 -0
- package/lib/loop/plugins/window-frame/slots.js +30 -0
- package/lib/loop/presets.d.ts +181 -0
- package/lib/loop/presets.js +141 -0
- package/lib/loop/shell/LoopWorkspace.d.ts +109 -0
- package/lib/loop/shell/LoopWorkspace.js +231 -0
- package/lib/loop/shell/PluginToggles.d.ts +21 -0
- package/lib/loop/shell/PluginToggles.js +41 -0
- package/lib/loop/shell/ViewSwitcher.d.ts +24 -0
- package/lib/loop/shell/ViewSwitcher.js +43 -0
- package/lib/loop/shell/WorkspaceFullScreenAction.d.ts +25 -0
- package/lib/loop/shell/WorkspaceFullScreenAction.js +24 -0
- package/lib/loop/shell/index.d.ts +10 -0
- package/lib/loop/shell/index.js +14 -0
- package/lib/loop/shell/useWorkspaceFullScreen.d.ts +93 -0
- package/lib/loop/shell/useWorkspaceFullScreen.js +167 -0
- package/lib/loop-example-main.d.ts +1 -0
- package/lib/loop-example-main.js +42 -0
- package/lib/loop-main.d.ts +1 -0
- package/lib/loop-main.js +138 -0
- package/lib/mcp/McpServerManager.d.ts +1 -1
- package/lib/models/CodeSandboxSnapshotDTO.d.ts +1 -1
- package/lib/models/CodeSandboxVariant.d.ts +13 -5
- package/lib/models/CodeSandboxVariant.js +17 -5
- package/lib/models/Content.d.ts +26 -0
- package/lib/models/Deck.d.ts +14 -0
- package/lib/models/Environment.d.ts +678 -5
- package/lib/models/Environment.js +12 -1
- package/lib/models/EnvironmentDTO.d.ts +24 -6
- package/lib/models/EnvironmentDTO.js +13 -2
- package/lib/models/Exercise.d.ts +0 -2
- package/lib/models/ItemType.d.ts +1 -1
- package/lib/models/Library.d.ts +0 -2
- package/lib/models/Notebook.d.ts +0 -2
- package/lib/models/ProjectDTO.d.ts +2 -2
- package/lib/models/ProjectDTO.js +4 -4
- package/lib/models/Runtime.d.ts +17 -11
- package/lib/models/RuntimeDTO.d.ts +16 -7
- package/lib/models/RuntimeDTO.js +9 -9
- package/lib/models/Space.d.ts +10 -0
- package/lib/models/Space.js +1 -1
- package/lib/models/SpaceDTO.d.ts +1 -1
- package/lib/models/SpaceItem.d.ts +2 -2
- package/lib/models/environments.generated.d.ts +141 -0
- package/lib/models/environments.generated.js +13 -0
- package/lib/models/index.d.ts +1 -1
- package/lib/models/index.js +1 -1
- package/lib/protocols/A2AAdapter.d.ts +39 -6
- package/lib/protocols/A2AAdapter.js +180 -11
- package/lib/protocols/ACPAdapter.js +40 -37
- package/lib/protocols/AGUIAdapter.d.ts +14 -0
- package/lib/protocols/AGUIAdapter.js +34 -9
- package/lib/protocols/BrowserAgentAdapter.d.ts +125 -0
- package/lib/protocols/BrowserAgentAdapter.js +317 -0
- package/lib/protocols/VercelAIAdapter.d.ts +10 -0
- package/lib/protocols/VercelAIAdapter.js +27 -7
- package/lib/protocols/index.d.ts +1 -0
- package/lib/protocols/index.js +1 -0
- package/lib/runtimes/actions.d.ts +8 -3
- package/lib/runtimes/actions.js +46 -14
- package/lib/runtimes/apis.d.ts +13 -4
- package/lib/runtimes/browser/agent.d.ts +54 -0
- package/lib/runtimes/browser/agent.js +63 -0
- package/lib/runtimes/browser/anonymousToken.d.ts +121 -0
- package/lib/runtimes/browser/anonymousToken.js +300 -0
- package/lib/runtimes/browser/frontendTools.d.ts +61 -0
- package/lib/runtimes/browser/frontendTools.js +152 -0
- package/lib/runtimes/browser/index.d.ts +11 -0
- package/lib/runtimes/browser/index.js +20 -0
- package/lib/runtimes/browser/model.d.ts +52 -0
- package/lib/runtimes/browser/model.js +110 -0
- package/lib/runtimes/browser/protocol.d.ts +54 -0
- package/lib/runtimes/browser/protocol.js +35 -0
- package/lib/runtimes/browser/subagents.d.ts +131 -0
- package/lib/runtimes/browser/subagents.js +241 -0
- package/lib/runtimes/index.d.ts +3 -0
- package/lib/runtimes/index.js +3 -0
- package/lib/runtimes/lifecycle.d.ts +76 -0
- package/lib/runtimes/lifecycle.js +99 -0
- package/lib/runtimes/variants.d.ts +172 -0
- package/lib/runtimes/variants.js +187 -0
- package/lib/services/reconnectToRuntime.d.ts +2 -2
- package/lib/services/reconnectToRuntime.js +3 -3
- package/lib/services/sandboxServiceManagers.d.ts +2 -2
- package/lib/services/sandboxServiceManagers.js +11 -11
- package/lib/specs/agents/agents.d.ts +129 -112
- package/lib/specs/agents/agents.js +8200 -5044
- package/lib/specs/evals.js +9 -0
- package/lib/specs/frontendTools.d.ts +4 -0
- package/lib/specs/frontendTools.js +77 -3
- package/lib/specs/mcpServers.d.ts +1 -0
- package/lib/specs/mcpServers.js +38 -15
- package/lib/specs/models.d.ts +18 -0
- package/lib/specs/models.js +154 -0
- package/lib/specs/outputs.d.ts +2 -0
- package/lib/specs/outputs.js +31 -0
- package/lib/specs/personas.js +1 -1
- package/lib/specs/skills.js +7 -7
- package/lib/specs/teams/teams.d.ts +2 -0
- package/lib/specs/teams/teams.js +628 -111
- package/lib/state/index.d.ts +1 -1
- package/lib/state/index.js +1 -1
- package/lib/state/substates/RuntimesState.d.ts +5 -5
- package/lib/state/substates/RuntimesState.js +14 -14
- package/lib/state/substates/index.d.ts +1 -1
- package/lib/state/substates/index.js +1 -1
- package/lib/stores/agentRuntimeStore.d.ts +43 -1
- package/lib/stores/agentRuntimeStore.js +100 -11
- package/lib/stores/index.d.ts +1 -1
- package/lib/stores/index.js +1 -1
- package/lib/stories/Button.d.ts +1 -1
- package/lib/stories/Button.stories.d.ts +1 -1
- package/lib/stories/Header.d.ts +1 -1
- package/lib/stories/Header.stories.d.ts +1 -1
- package/lib/test-setup.js +66 -0
- package/lib/tools/adapters/agent-runtimes/lexicalHooks.d.ts +15 -0
- package/lib/tools/adapters/agent-runtimes/lexicalHooks.js +43 -2
- package/lib/tools/adapters/agent-runtimes/notebookHooks.d.ts +9 -0
- package/lib/tools/adapters/agent-runtimes/notebookHooks.js +12 -0
- package/lib/tools/adapters/commands/frontendCommandTools.d.ts +11 -0
- package/lib/tools/adapters/commands/frontendCommandTools.js +60 -0
- package/lib/tools/adapters/commands/index.d.ts +1 -0
- package/lib/tools/adapters/commands/index.js +5 -0
- package/lib/tools/adapters/copilotkit/lexicalHooks.js +7 -3
- package/lib/tools/index.d.ts +1 -0
- package/lib/tools/index.js +1 -0
- package/lib/types/a2a.d.ts +15 -1
- package/lib/types/agents-lifecycle.d.ts +11 -6
- package/lib/types/agents.d.ts +31 -6
- package/lib/types/agentspecs.d.ts +120 -4
- package/lib/types/chat.d.ts +251 -3
- package/lib/types/checkpoints.d.ts +20 -0
- package/lib/types/config.d.ts +13 -1
- package/lib/types/connection.d.ts +1 -1
- package/lib/types/evals.d.ts +2 -0
- package/lib/types/messages.d.ts +60 -0
- package/lib/types/models.d.ts +26 -0
- package/lib/types/notifications.d.ts +15 -6
- package/lib/types/outputs.d.ts +2 -0
- package/lib/types/protocol.d.ts +7 -2
- package/lib/types/stream.d.ts +48 -3
- package/lib/types/stream.js +5 -0
- package/lib/types/teams.d.ts +102 -4
- package/lib/types/tool-approvals.d.ts +1 -1
- package/lib/types/tools.d.ts +8 -2
- package/lib/utils/utils.js +7 -1
- package/package.json +376 -361
- package/scripts/codegen/compose.py +208 -0
- package/scripts/codegen/generate_agents.py +202 -31
- package/scripts/codegen/generate_evals.py +2 -0
- package/scripts/codegen/generate_frontend_tools.py +35 -6
- package/scripts/codegen/generate_mcp_servers.py +2 -2
- package/scripts/codegen/generate_models.py +40 -15
- package/scripts/codegen/generate_outputs.py +2 -0
- package/scripts/codegen/generate_sandbox_agents.py +76 -62
- package/scripts/codegen/generate_skills.py +2 -2
- package/scripts/codegen/generate_teams.py +178 -4
- package/scripts/codegen/generate_tools.py +6 -4
- package/scripts/gen_workers.py +278 -110
- package/scripts/generate-environments-types.py +404 -0
- package/lib/chat/prompt/InputFooter.d.ts +0 -58
- package/lib/chat/prompt/InputFooter.js +0 -194
- package/lib/chat/prompt/InputPromptFooter.d.ts +0 -27
- package/lib/chat/prompt/InputPromptFooter.js +0 -15
- package/lib/chat/prompt/InputPromptHeader.d.ts +0 -15
- package/lib/chat/prompt/InputPromptHeader.js +0 -15
- package/lib/chat/usage/TokenUsageBar.d.ts +0 -8
- package/lib/hooks/useRuntimes.d.ts +0 -5
- package/lib/hooks/useRuntimes.js +0 -34
- package/lib/jupyter/kernelsHandler.d.ts +0 -8
- package/lib/jupyter/kernelsHandler.js +0 -39
- package/lib/models/Dataset.d.ts +0 -16
- package/lib/utils/Cells.d.ts +0 -2
- package/lib/utils/Cells.js +0 -28
- /package/lib/models/{Dataset.js → Deck.js} +0 -0
|
@@ -1,8 +1,3 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* A2A (Agent-to-Agent) protocol adapter using SSE transport.
|
|
3
|
-
*
|
|
4
|
-
* @module protocols/A2AAdapter
|
|
5
|
-
*/
|
|
6
1
|
import type { ChatMessage } from '../types/messages';
|
|
7
2
|
import type { ProtocolAdapterConfig, AgentCard } from '../types';
|
|
8
3
|
import type { ToolDefinition, ToolExecutionResult } from '../types/tools';
|
|
@@ -11,7 +6,7 @@ import { BaseProtocolAdapter } from './BaseProtocolAdapter';
|
|
|
11
6
|
* A2A specific configuration
|
|
12
7
|
*/
|
|
13
8
|
export interface A2AAdapterConfig extends ProtocolAdapterConfig {
|
|
14
|
-
/** Agent URL for .well-known/agent.json discovery */
|
|
9
|
+
/** Agent URL for .well-known/agent-card.json discovery */
|
|
15
10
|
agentUrl?: string;
|
|
16
11
|
/** Enable A2UI extension */
|
|
17
12
|
enableA2UI?: boolean;
|
|
@@ -25,8 +20,29 @@ export declare class A2AAdapter extends BaseProtocolAdapter {
|
|
|
25
20
|
readonly protocolTransport: "sse";
|
|
26
21
|
private a2aConfig;
|
|
27
22
|
private abortController;
|
|
23
|
+
/**
|
|
24
|
+
* Every in-flight request's abort controller, not just the newest.
|
|
25
|
+
*
|
|
26
|
+
* `abortController` is a single field that each request overwrites, and each
|
|
27
|
+
* request's `finally` used to clear it unconditionally — so a request that
|
|
28
|
+
* finished just after a newer one started would null the newer one's handle,
|
|
29
|
+
* and a subsequent stop had nothing left to abort. The stream carried on and
|
|
30
|
+
* the transcript went on typing itself after the reader had asked it not to.
|
|
31
|
+
*/
|
|
32
|
+
private inFlight;
|
|
28
33
|
private agentCard;
|
|
29
34
|
private currentTaskId;
|
|
35
|
+
/**
|
|
36
|
+
* Whether the connected agent's card advertised the Datalayer
|
|
37
|
+
* orchestration extension (ORCHESTRATOR.md, O3-03). Set once, from
|
|
38
|
+
* `connect()`'s card fetch: neither side infers support from a
|
|
39
|
+
* successful message (the extension's own negotiation rule), so this is
|
|
40
|
+
* the one place that decides it, and every request either activates the
|
|
41
|
+
* extension by this or sends nothing extension-related at all — a worker
|
|
42
|
+
* that never advertised it sees a plain A2A client, unchanged from
|
|
43
|
+
* before this existed.
|
|
44
|
+
*/
|
|
45
|
+
private orchestrationExtensionSupported;
|
|
30
46
|
constructor(config: A2AAdapterConfig);
|
|
31
47
|
/**
|
|
32
48
|
* Connect and discover agent card
|
|
@@ -44,6 +60,14 @@ export declare class A2AAdapter extends BaseProtocolAdapter {
|
|
|
44
60
|
* Get agent card
|
|
45
61
|
*/
|
|
46
62
|
getAgentCard(): Promise<AgentCard | null>;
|
|
63
|
+
/**
|
|
64
|
+
* Whether the connected agent advertised the Datalayer orchestration
|
|
65
|
+
* extension. `false` until `connect()` has fetched a card, and `false`
|
|
66
|
+
* for any card that does not list it — including one that could not be
|
|
67
|
+
* fetched at all, so a worker with no card behaves exactly as it did
|
|
68
|
+
* before this existed.
|
|
69
|
+
*/
|
|
70
|
+
get supportsOrchestrationExtension(): boolean;
|
|
47
71
|
/**
|
|
48
72
|
* Send a message through A2A protocol
|
|
49
73
|
*/
|
|
@@ -63,6 +87,15 @@ export declare class A2AAdapter extends BaseProtocolAdapter {
|
|
|
63
87
|
accessToken: string;
|
|
64
88
|
}>;
|
|
65
89
|
}): Promise<void>;
|
|
90
|
+
/**
|
|
91
|
+
* Abort every in-flight stream without tearing the adapter down.
|
|
92
|
+
*
|
|
93
|
+
* This adapter had no such method, so pressing Stop reached only
|
|
94
|
+
* `terminateTask` — a request to the backend to cancel — and never closed
|
|
95
|
+
* the client's own stream. Whatever was already on the wire kept arriving
|
|
96
|
+
* and kept being rendered. `ChatBase` looks for this by name.
|
|
97
|
+
*/
|
|
98
|
+
stopGeneration(): void;
|
|
66
99
|
/**
|
|
67
100
|
* Send tool result back
|
|
68
101
|
*/
|
|
@@ -2,8 +2,78 @@
|
|
|
2
2
|
* Copyright (c) 2025-2026 Datalayer, Inc.
|
|
3
3
|
* Distributed under the terms of the Modified BSD License.
|
|
4
4
|
*/
|
|
5
|
+
/**
|
|
6
|
+
* A2A (Agent-to-Agent) protocol adapter using SSE transport.
|
|
7
|
+
*
|
|
8
|
+
* @module protocols/A2AAdapter
|
|
9
|
+
*/
|
|
10
|
+
import { ORCHESTRATION_EXTENSION_URI, ENVELOPE_KEY as DATALAYER_META_KEY, readUsageMeta, } from '@datalayer/agent-teams';
|
|
5
11
|
import { generateMessageId, createAssistantMessage } from '../types/messages';
|
|
6
12
|
import { BaseProtocolAdapter } from './BaseProtocolAdapter';
|
|
13
|
+
/**
|
|
14
|
+
* The header fasta2a-based workers (`agent-runtimes`'s own, and any other
|
|
15
|
+
* built on it) actually read to activate an extension for one request —
|
|
16
|
+
* confirmed from `fasta2a.extensions`, not assumed: comma-separated URIs,
|
|
17
|
+
* answered on the same header naming which of them the agent knows.
|
|
18
|
+
* Neither this codebase's own `configuration.requestedExtensions` (read by
|
|
19
|
+
* nothing server-side) nor the A2A SDK's `Message.extensions` field is what
|
|
20
|
+
* a `fasta2a` worker's `activated_extensions()` looks at — this header is.
|
|
21
|
+
*/
|
|
22
|
+
const A2A_EXTENSIONS_HEADER = 'A2A-Extensions';
|
|
23
|
+
const TERMINAL_TASK_STATES = new Set([
|
|
24
|
+
'completed',
|
|
25
|
+
'failed',
|
|
26
|
+
'canceled',
|
|
27
|
+
'rejected',
|
|
28
|
+
]);
|
|
29
|
+
/**
|
|
30
|
+
* `fasta2a` wraps every `message/send` result and every `message/stream`
|
|
31
|
+
* event in a named key — `{ task: Task }`, `{ statusUpdate: ... }`,
|
|
32
|
+
* `{ artifactUpdate: ... }`, `{ message: Message }` — instead of the bare,
|
|
33
|
+
* `kind`-discriminated object
|
|
34
|
+
* (`Task.kind: 'task'`, `TaskStatusUpdateEvent.kind: 'status-update'`, ...)
|
|
35
|
+
* the current A2A specification requires and this file was written
|
|
36
|
+
* against. Confirmed directly, not assumed: `fasta2a.schema.SendMessageResult`
|
|
37
|
+
* and `StreamResponse` are TypedDicts with those named optional fields, and
|
|
38
|
+
* neither `Task` nor `TaskStatusUpdateEvent` in that schema carries a
|
|
39
|
+
* `kind` field at all. `agent_runtimes`' own A2A route is the same
|
|
40
|
+
* `FastA2A`, so every production Datalayer A2A worker serves this shape —
|
|
41
|
+
* a spec-conformant client (this file, or a genuine `a2a-sdk`-based one)
|
|
42
|
+
* could not render a single reply without this normalizer.
|
|
43
|
+
*
|
|
44
|
+
* A worker built to the current spec (its `result` already carries
|
|
45
|
+
* `kind`) passes through unchanged — this only steps in for the shape
|
|
46
|
+
* `fasta2a` actually sends.
|
|
47
|
+
*
|
|
48
|
+
* `fasta2a`'s `TaskStatusUpdateEvent` also has no `final` field, which the
|
|
49
|
+
* spec has and this file's status-update handling gates on; inferred here
|
|
50
|
+
* from the status being one of the terminal states, since nothing else in
|
|
51
|
+
* the payload says so.
|
|
52
|
+
*/
|
|
53
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
54
|
+
function normalizeA2AResult(result) {
|
|
55
|
+
if (!result || typeof result !== 'object' || result.kind) {
|
|
56
|
+
return result;
|
|
57
|
+
}
|
|
58
|
+
if (result.task) {
|
|
59
|
+
return { ...result.task, kind: 'task' };
|
|
60
|
+
}
|
|
61
|
+
if (result.statusUpdate) {
|
|
62
|
+
const update = result.statusUpdate;
|
|
63
|
+
return {
|
|
64
|
+
...update,
|
|
65
|
+
kind: 'status-update',
|
|
66
|
+
final: update.final ?? TERMINAL_TASK_STATES.has(update.status?.state),
|
|
67
|
+
};
|
|
68
|
+
}
|
|
69
|
+
if (result.artifactUpdate) {
|
|
70
|
+
return { ...result.artifactUpdate, kind: 'artifact-update' };
|
|
71
|
+
}
|
|
72
|
+
if (result.message) {
|
|
73
|
+
return { ...result.message, kind: 'message' };
|
|
74
|
+
}
|
|
75
|
+
return result;
|
|
76
|
+
}
|
|
7
77
|
/**
|
|
8
78
|
* A2A protocol adapter
|
|
9
79
|
* Uses JSON-RPC 2.0 with SSE streaming for responses
|
|
@@ -13,8 +83,29 @@ export class A2AAdapter extends BaseProtocolAdapter {
|
|
|
13
83
|
protocolTransport = 'sse';
|
|
14
84
|
a2aConfig;
|
|
15
85
|
abortController = null;
|
|
86
|
+
/**
|
|
87
|
+
* Every in-flight request's abort controller, not just the newest.
|
|
88
|
+
*
|
|
89
|
+
* `abortController` is a single field that each request overwrites, and each
|
|
90
|
+
* request's `finally` used to clear it unconditionally — so a request that
|
|
91
|
+
* finished just after a newer one started would null the newer one's handle,
|
|
92
|
+
* and a subsequent stop had nothing left to abort. The stream carried on and
|
|
93
|
+
* the transcript went on typing itself after the reader had asked it not to.
|
|
94
|
+
*/
|
|
95
|
+
inFlight = new Set();
|
|
16
96
|
agentCard = null;
|
|
17
97
|
currentTaskId = null;
|
|
98
|
+
/**
|
|
99
|
+
* Whether the connected agent's card advertised the Datalayer
|
|
100
|
+
* orchestration extension (ORCHESTRATOR.md, O3-03). Set once, from
|
|
101
|
+
* `connect()`'s card fetch: neither side infers support from a
|
|
102
|
+
* successful message (the extension's own negotiation rule), so this is
|
|
103
|
+
* the one place that decides it, and every request either activates the
|
|
104
|
+
* extension by this or sends nothing extension-related at all — a worker
|
|
105
|
+
* that never advertised it sees a plain A2A client, unchanged from
|
|
106
|
+
* before this existed.
|
|
107
|
+
*/
|
|
108
|
+
orchestrationExtensionSupported = false;
|
|
18
109
|
constructor(config) {
|
|
19
110
|
super(config);
|
|
20
111
|
this.a2aConfig = {
|
|
@@ -28,9 +119,18 @@ export class A2AAdapter extends BaseProtocolAdapter {
|
|
|
28
119
|
async connect() {
|
|
29
120
|
this.setConnectionState('connecting');
|
|
30
121
|
try {
|
|
31
|
-
// Fetch agent card from .well-known endpoint
|
|
122
|
+
// Fetch agent card from .well-known endpoint. The current A2A
|
|
123
|
+
// specification's path is `agent-card.json` — `fasta2a`'s FastA2A
|
|
124
|
+
// (and a2a-sdk's own A2ACardResolver default) serves only that,
|
|
125
|
+
// confirmed by reading FastA2A's own route registration; the plain
|
|
126
|
+
// `agent.json` this fetched before was an earlier draft's path, and
|
|
127
|
+
// fetching it here 404s against every real worker, silently, since
|
|
128
|
+
// a missing card is caught below and connect() still "succeeds" —
|
|
129
|
+
// found live, against agent_teams.a2a.reference_worker
|
|
130
|
+
// (ORCHESTRATOR.md O3-04), not assumed: `supportsOrchestrationExtension`
|
|
131
|
+
// stayed false against a worker whose card plainly advertised it.
|
|
32
132
|
const agentUrl = this.a2aConfig.agentUrl || this.a2aConfig.baseUrl;
|
|
33
|
-
const wellKnownUrl = new URL('/.well-known/agent.json', agentUrl).toString();
|
|
133
|
+
const wellKnownUrl = new URL('/.well-known/agent-card.json', agentUrl).toString();
|
|
34
134
|
const response = await fetch(wellKnownUrl, {
|
|
35
135
|
method: 'GET',
|
|
36
136
|
headers: this.buildHeaders(),
|
|
@@ -38,6 +138,8 @@ export class A2AAdapter extends BaseProtocolAdapter {
|
|
|
38
138
|
});
|
|
39
139
|
if (response.ok) {
|
|
40
140
|
this.agentCard = await response.json();
|
|
141
|
+
this.orchestrationExtensionSupported =
|
|
142
|
+
this.agentCard?.capabilities?.extensions?.some(extension => extension.uri === ORCHESTRATION_EXTENSION_URI) ?? false;
|
|
41
143
|
}
|
|
42
144
|
this.setConnectionState('connected');
|
|
43
145
|
}
|
|
@@ -51,10 +153,8 @@ export class A2AAdapter extends BaseProtocolAdapter {
|
|
|
51
153
|
* Disconnect and terminate any ongoing agent execution
|
|
52
154
|
*/
|
|
53
155
|
disconnect() {
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
this.abortController = null;
|
|
57
|
-
}
|
|
156
|
+
// Every open stream, not merely the newest.
|
|
157
|
+
this.stopGeneration();
|
|
58
158
|
// Send terminate request to backend if we have a task ID
|
|
59
159
|
if (this.currentTaskId) {
|
|
60
160
|
this.terminateTask(this.currentTaskId).catch(err => {
|
|
@@ -99,11 +199,23 @@ export class A2AAdapter extends BaseProtocolAdapter {
|
|
|
99
199
|
async getAgentCard() {
|
|
100
200
|
return this.agentCard;
|
|
101
201
|
}
|
|
202
|
+
/**
|
|
203
|
+
* Whether the connected agent advertised the Datalayer orchestration
|
|
204
|
+
* extension. `false` until `connect()` has fetched a card, and `false`
|
|
205
|
+
* for any card that does not list it — including one that could not be
|
|
206
|
+
* fetched at all, so a worker with no card behaves exactly as it did
|
|
207
|
+
* before this existed.
|
|
208
|
+
*/
|
|
209
|
+
get supportsOrchestrationExtension() {
|
|
210
|
+
return this.orchestrationExtensionSupported;
|
|
211
|
+
}
|
|
102
212
|
/**
|
|
103
213
|
* Send a message through A2A protocol
|
|
104
214
|
*/
|
|
105
215
|
async sendMessage(message, options) {
|
|
106
|
-
|
|
216
|
+
const controller = new AbortController();
|
|
217
|
+
this.abortController = controller;
|
|
218
|
+
this.inFlight.add(controller);
|
|
107
219
|
const taskId = options?.threadId || this.currentTaskId || generateMessageId();
|
|
108
220
|
this.currentTaskId = taskId;
|
|
109
221
|
// Build A2A message parts (A2A uses 'kind' discriminator, not 'type')
|
|
@@ -166,9 +278,15 @@ export class A2AAdapter extends BaseProtocolAdapter {
|
|
|
166
278
|
method: 'POST',
|
|
167
279
|
headers: this.buildHeaders({
|
|
168
280
|
Accept: 'text/event-stream, application/json',
|
|
281
|
+
// Activates the extension for this one request, only once the
|
|
282
|
+
// worker's own card advertised it — degrading to a plain A2A
|
|
283
|
+
// request (no header at all) otherwise.
|
|
284
|
+
...(this.orchestrationExtensionSupported && {
|
|
285
|
+
[A2A_EXTENSIONS_HEADER]: ORCHESTRATION_EXTENSION_URI,
|
|
286
|
+
}),
|
|
169
287
|
}),
|
|
170
288
|
body: JSON.stringify(jsonRpcRequest),
|
|
171
|
-
signal:
|
|
289
|
+
signal: controller.signal,
|
|
172
290
|
});
|
|
173
291
|
if (!response.ok) {
|
|
174
292
|
throw new Error(`A2A request failed: ${response.status} ${response.statusText}`);
|
|
@@ -198,8 +316,26 @@ export class A2AAdapter extends BaseProtocolAdapter {
|
|
|
198
316
|
throw error;
|
|
199
317
|
}
|
|
200
318
|
finally {
|
|
201
|
-
this.
|
|
319
|
+
this.inFlight.delete(controller);
|
|
320
|
+
if (this.abortController === controller) {
|
|
321
|
+
this.abortController = null;
|
|
322
|
+
}
|
|
323
|
+
}
|
|
324
|
+
}
|
|
325
|
+
/**
|
|
326
|
+
* Abort every in-flight stream without tearing the adapter down.
|
|
327
|
+
*
|
|
328
|
+
* This adapter had no such method, so pressing Stop reached only
|
|
329
|
+
* `terminateTask` — a request to the backend to cancel — and never closed
|
|
330
|
+
* the client's own stream. Whatever was already on the wire kept arriving
|
|
331
|
+
* and kept being rendered. `ChatBase` looks for this by name.
|
|
332
|
+
*/
|
|
333
|
+
stopGeneration() {
|
|
334
|
+
for (const controller of this.inFlight) {
|
|
335
|
+
controller.abort();
|
|
202
336
|
}
|
|
337
|
+
this.inFlight.clear();
|
|
338
|
+
this.abortController = null;
|
|
203
339
|
}
|
|
204
340
|
/**
|
|
205
341
|
* Send tool result back
|
|
@@ -269,7 +405,7 @@ export class A2AAdapter extends BaseProtocolAdapter {
|
|
|
269
405
|
console.log('[A2AAdapter] Received event:', JSON.stringify(event, null, 2));
|
|
270
406
|
// Handle JSON-RPC response
|
|
271
407
|
if (event.result) {
|
|
272
|
-
this.handleTaskUpdate(event.result);
|
|
408
|
+
this.handleTaskUpdate(normalizeA2AResult(event.result));
|
|
273
409
|
}
|
|
274
410
|
else if (event.error) {
|
|
275
411
|
this.emit({
|
|
@@ -298,9 +434,42 @@ export class A2AAdapter extends BaseProtocolAdapter {
|
|
|
298
434
|
console.log('[A2AAdapter] Status update:', state, 'final:', task.final);
|
|
299
435
|
if (task.final &&
|
|
300
436
|
(state === 'completed' || state === 'failed' || state === 'canceled')) {
|
|
437
|
+
// Only read the envelope once the worker actually named the
|
|
438
|
+
// extension active — a plain worker's status carries no
|
|
439
|
+
// `datalayer` key, and this stays `undefined` for it exactly as
|
|
440
|
+
// it did before the extension existed.
|
|
441
|
+
const datalayerMeta = this.orchestrationExtensionSupported
|
|
442
|
+
? task.status?.message?.metadata?.[DATALAYER_META_KEY]
|
|
443
|
+
: undefined;
|
|
444
|
+
const datalayerUsage = datalayerMeta
|
|
445
|
+
? readUsageMeta(task.status.message.metadata)
|
|
446
|
+
: undefined;
|
|
301
447
|
this.emit({
|
|
302
448
|
type: 'state-update',
|
|
303
|
-
data: {
|
|
449
|
+
data: {
|
|
450
|
+
state,
|
|
451
|
+
final: true,
|
|
452
|
+
...(datalayerMeta?.paused && {
|
|
453
|
+
datalayerPaused: datalayerMeta.paused,
|
|
454
|
+
}),
|
|
455
|
+
...(datalayerMeta?.error && {
|
|
456
|
+
datalayerError: datalayerMeta.error,
|
|
457
|
+
}),
|
|
458
|
+
...(datalayerUsage && { datalayerUsage }),
|
|
459
|
+
},
|
|
460
|
+
// Best-effort mapping onto the cross-protocol shape; a worker
|
|
461
|
+
// that priced the run also sets `datalayerUsage.cost`, which
|
|
462
|
+
// has no field here and is not dropped — it is still on `data`.
|
|
463
|
+
...(datalayerUsage && {
|
|
464
|
+
usage: {
|
|
465
|
+
promptTokens: datalayerUsage.inputTokens ?? 0,
|
|
466
|
+
completionTokens: datalayerUsage.outputTokens ?? 0,
|
|
467
|
+
...(datalayerUsage.inputTokens !== undefined &&
|
|
468
|
+
datalayerUsage.outputTokens !== undefined && {
|
|
469
|
+
totalTokens: datalayerUsage.inputTokens + datalayerUsage.outputTokens,
|
|
470
|
+
}),
|
|
471
|
+
},
|
|
472
|
+
}),
|
|
304
473
|
timestamp: new Date(),
|
|
305
474
|
});
|
|
306
475
|
}
|
|
@@ -183,17 +183,16 @@ export class ACPAdapter extends BaseProtocolAdapter {
|
|
|
183
183
|
console.warn('[ACPAdapter] Cannot terminate: No session ID');
|
|
184
184
|
return;
|
|
185
185
|
}
|
|
186
|
-
//
|
|
187
|
-
|
|
188
|
-
const
|
|
186
|
+
// A notification, as the ACP schema makes session/cancel: no id and no
|
|
187
|
+
// answer. The running prompt answers with stopReason "cancelled".
|
|
188
|
+
const cancelNotification = {
|
|
189
189
|
jsonrpc: '2.0',
|
|
190
190
|
method: 'session/cancel',
|
|
191
191
|
params: {
|
|
192
192
|
sessionId: targetSessionId,
|
|
193
193
|
},
|
|
194
|
-
id: requestId,
|
|
195
194
|
};
|
|
196
|
-
this.ws.send(JSON.stringify(
|
|
195
|
+
this.ws.send(JSON.stringify(cancelNotification));
|
|
197
196
|
console.debug('[ACPAdapter] Sent session/cancel for:', targetSessionId);
|
|
198
197
|
}
|
|
199
198
|
catch (err) {
|
|
@@ -237,7 +236,7 @@ export class ACPAdapter extends BaseProtocolAdapter {
|
|
|
237
236
|
}
|
|
238
237
|
await this.sendRequest(AGENT_METHODS.session_prompt, {
|
|
239
238
|
sessionId: this.session.sessionId,
|
|
240
|
-
|
|
239
|
+
prompt: [{ type: 'text', text: content }],
|
|
241
240
|
// Include metadata with model and identities
|
|
242
241
|
...(Object.keys(metadata).length > 0 && { metadata }),
|
|
243
242
|
});
|
|
@@ -413,12 +412,22 @@ export class ACPAdapter extends BaseProtocolAdapter {
|
|
|
413
412
|
* Handle session update notifications
|
|
414
413
|
*/
|
|
415
414
|
handleSessionUpdate(params) {
|
|
416
|
-
|
|
417
|
-
//
|
|
418
|
-
|
|
419
|
-
|
|
420
|
-
|
|
421
|
-
|
|
415
|
+
// As the ACP schema spells it: the update nested under `update`, its text
|
|
416
|
+
// in a content block. A failed turn is the prompt's JSON-RPC error, not an
|
|
417
|
+
// update.
|
|
418
|
+
const update = params.update;
|
|
419
|
+
if (!update) {
|
|
420
|
+
return;
|
|
421
|
+
}
|
|
422
|
+
const updateType = update.sessionUpdate;
|
|
423
|
+
const textOf = (content) => content &&
|
|
424
|
+
typeof content === 'object' &&
|
|
425
|
+
content.type === 'text'
|
|
426
|
+
? String(content.text ?? '')
|
|
427
|
+
: '';
|
|
428
|
+
if (updateType === 'agent_message_chunk') {
|
|
429
|
+
const chunk = textOf(update.content);
|
|
430
|
+
if (chunk) {
|
|
422
431
|
this.streamingContent += chunk;
|
|
423
432
|
// Use stable message ID for streaming updates
|
|
424
433
|
const streamingMessage = createAssistantMessage(this.streamingContent);
|
|
@@ -432,47 +441,41 @@ export class ACPAdapter extends BaseProtocolAdapter {
|
|
|
432
441
|
});
|
|
433
442
|
}
|
|
434
443
|
}
|
|
435
|
-
// Handle tool calls
|
|
436
444
|
if (updateType === 'tool_call') {
|
|
445
|
+
const call = update;
|
|
437
446
|
this.emit({
|
|
438
447
|
type: 'tool-call',
|
|
439
448
|
toolCall: {
|
|
440
|
-
toolCallId:
|
|
441
|
-
toolName:
|
|
442
|
-
args:
|
|
449
|
+
toolCallId: call.toolCallId || generateMessageId(),
|
|
450
|
+
toolName: call.title || '',
|
|
451
|
+
args: call.rawInput || {},
|
|
443
452
|
},
|
|
444
453
|
timestamp: new Date(),
|
|
445
454
|
});
|
|
446
455
|
}
|
|
447
|
-
// Handle tool results
|
|
448
456
|
if (updateType === 'tool_call_update') {
|
|
457
|
+
const progress = update;
|
|
449
458
|
this.emit({
|
|
450
459
|
type: 'tool-result',
|
|
451
460
|
toolResult: {
|
|
452
|
-
success:
|
|
453
|
-
result:
|
|
454
|
-
},
|
|
455
|
-
timestamp: new Date(),
|
|
456
|
-
});
|
|
457
|
-
}
|
|
458
|
-
// Handle thought chunks (could be displayed differently)
|
|
459
|
-
if (updateType === 'agent_thought_chunk' && params.chunk) {
|
|
460
|
-
this.emit({
|
|
461
|
-
type: 'activity',
|
|
462
|
-
activity: {
|
|
463
|
-
type: 'thought',
|
|
464
|
-
data: params.chunk,
|
|
461
|
+
success: progress.status !== 'failed',
|
|
462
|
+
result: progress.rawOutput,
|
|
465
463
|
},
|
|
466
464
|
timestamp: new Date(),
|
|
467
465
|
});
|
|
468
466
|
}
|
|
469
|
-
|
|
470
|
-
|
|
471
|
-
|
|
472
|
-
|
|
473
|
-
|
|
474
|
-
|
|
475
|
-
|
|
467
|
+
if (updateType === 'agent_thought_chunk') {
|
|
468
|
+
const thought = textOf(update.content);
|
|
469
|
+
if (thought) {
|
|
470
|
+
this.emit({
|
|
471
|
+
type: 'activity',
|
|
472
|
+
activity: {
|
|
473
|
+
type: 'thought',
|
|
474
|
+
data: thought,
|
|
475
|
+
},
|
|
476
|
+
timestamp: new Date(),
|
|
477
|
+
});
|
|
478
|
+
}
|
|
476
479
|
}
|
|
477
480
|
}
|
|
478
481
|
/**
|
|
@@ -23,6 +23,20 @@ export declare class AGUIAdapter extends BaseProtocolAdapter {
|
|
|
23
23
|
readonly protocolTransport: "sse";
|
|
24
24
|
private aguiConfig;
|
|
25
25
|
private abortController;
|
|
26
|
+
/**
|
|
27
|
+
* Every in-flight request's abort controller, not just the newest.
|
|
28
|
+
*
|
|
29
|
+
* A turn is rarely one request. Each tool result starts a continuation
|
|
30
|
+
* through `sendMessage`, and that overwrites `abortController` — so the
|
|
31
|
+
* moment two streams overlap, the earlier one's controller is no longer
|
|
32
|
+
* reachable and `stopGeneration` cannot abort it. It aborted whichever
|
|
33
|
+
* request happened to be last and left the others pouring tokens into a
|
|
34
|
+
* transcript the reader had already asked to stop, which is worst in
|
|
35
|
+
* exactly the tool-heavy sessions where stopping matters most.
|
|
36
|
+
*
|
|
37
|
+
* A set, because the fix has to hold however many are open.
|
|
38
|
+
*/
|
|
39
|
+
private inFlight;
|
|
26
40
|
private currentThreadId;
|
|
27
41
|
private pendingToolCalls;
|
|
28
42
|
private collectedToolResults;
|
|
@@ -13,6 +13,20 @@ export class AGUIAdapter extends BaseProtocolAdapter {
|
|
|
13
13
|
protocolTransport = 'sse';
|
|
14
14
|
aguiConfig;
|
|
15
15
|
abortController = null;
|
|
16
|
+
/**
|
|
17
|
+
* Every in-flight request's abort controller, not just the newest.
|
|
18
|
+
*
|
|
19
|
+
* A turn is rarely one request. Each tool result starts a continuation
|
|
20
|
+
* through `sendMessage`, and that overwrites `abortController` — so the
|
|
21
|
+
* moment two streams overlap, the earlier one's controller is no longer
|
|
22
|
+
* reachable and `stopGeneration` cannot abort it. It aborted whichever
|
|
23
|
+
* request happened to be last and left the others pouring tokens into a
|
|
24
|
+
* transcript the reader had already asked to stop, which is worst in
|
|
25
|
+
* exactly the tool-heavy sessions where stopping matters most.
|
|
26
|
+
*
|
|
27
|
+
* A set, because the fix has to hold however many are open.
|
|
28
|
+
*/
|
|
29
|
+
inFlight = new Set();
|
|
16
30
|
currentThreadId = null;
|
|
17
31
|
// Track in-progress tool calls to accumulate args and emit results
|
|
18
32
|
pendingToolCalls = new Map();
|
|
@@ -66,11 +80,8 @@ export class AGUIAdapter extends BaseProtocolAdapter {
|
|
|
66
80
|
* Disconnect and terminate any ongoing agent execution
|
|
67
81
|
*/
|
|
68
82
|
disconnect() {
|
|
69
|
-
// Abort
|
|
70
|
-
|
|
71
|
-
this.abortController.abort();
|
|
72
|
-
this.abortController = null;
|
|
73
|
-
}
|
|
83
|
+
// Abort every ongoing fetch request, not merely the newest.
|
|
84
|
+
this.stopGeneration();
|
|
74
85
|
// Send terminate request to backend if we have a thread ID
|
|
75
86
|
if (this.currentThreadId) {
|
|
76
87
|
this.terminateAgent(this.currentThreadId).catch(err => {
|
|
@@ -112,7 +123,12 @@ export class AGUIAdapter extends BaseProtocolAdapter {
|
|
|
112
123
|
* @param options - Options including full message history
|
|
113
124
|
*/
|
|
114
125
|
async sendMessage(message, options) {
|
|
115
|
-
|
|
126
|
+
// Held in a local as well as the field: by the time the `finally` below
|
|
127
|
+
// runs, a continuation may already have replaced the field, and this
|
|
128
|
+
// request must only ever retire its own controller.
|
|
129
|
+
const controller = new AbortController();
|
|
130
|
+
this.abortController = controller;
|
|
131
|
+
this.inFlight.add(controller);
|
|
116
132
|
const threadId = options?.threadId || this.currentThreadId || generateMessageId();
|
|
117
133
|
this.currentThreadId = threadId;
|
|
118
134
|
// Use full message history if provided, otherwise just the new message
|
|
@@ -195,7 +211,7 @@ export class AGUIAdapter extends BaseProtocolAdapter {
|
|
|
195
211
|
Accept: 'text/event-stream',
|
|
196
212
|
}),
|
|
197
213
|
body: JSON.stringify(runAgentInput),
|
|
198
|
-
signal:
|
|
214
|
+
signal: controller.signal,
|
|
199
215
|
});
|
|
200
216
|
if (!response.ok) {
|
|
201
217
|
throw new Error(`AG-UI request failed: ${response.status} ${response.statusText}`);
|
|
@@ -215,7 +231,13 @@ export class AGUIAdapter extends BaseProtocolAdapter {
|
|
|
215
231
|
throw error;
|
|
216
232
|
}
|
|
217
233
|
finally {
|
|
218
|
-
|
|
234
|
+
// This request's own controller, captured before any continuation could
|
|
235
|
+
// have replaced the field — clearing the field itself would drop a
|
|
236
|
+
// newer, still-running request's handle on the floor.
|
|
237
|
+
this.inFlight.delete(controller);
|
|
238
|
+
if (this.abortController === controller) {
|
|
239
|
+
this.abortController = null;
|
|
240
|
+
}
|
|
219
241
|
}
|
|
220
242
|
}
|
|
221
243
|
/**
|
|
@@ -352,7 +374,10 @@ export class AGUIAdapter extends BaseProtocolAdapter {
|
|
|
352
374
|
* the adapter connection.
|
|
353
375
|
*/
|
|
354
376
|
stopGeneration() {
|
|
355
|
-
this.
|
|
377
|
+
for (const controller of this.inFlight) {
|
|
378
|
+
controller.abort();
|
|
379
|
+
}
|
|
380
|
+
this.inFlight.clear();
|
|
356
381
|
this.abortController = null;
|
|
357
382
|
}
|
|
358
383
|
/**
|