@datalayer/agent-runtimes 1.0.28 → 1.3.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/AgentDocument.js +5 -22
- package/lib/AgentNode.d.ts +1 -1
- package/lib/AgentNode.js +193 -23
- package/lib/AgentNotebook.js +1 -1
- package/lib/App.d.ts +1 -1
- package/lib/AppExamples2.d.ts +1 -1
- package/lib/agent-node/AgentNodeGallery.d.ts +14 -1
- package/lib/agent-node/AgentNodeGallery.js +19 -15
- package/lib/agent-node/themeStore.js +7 -6
- package/lib/agents/AgentDetails.d.ts +8 -2
- package/lib/agents/AgentDetails.js +41 -11
- package/lib/agents/AgentRuntimeChat.d.ts +3 -3
- package/lib/agents/AgentRuntimeChat.js +15 -15
- package/lib/api/agents.d.ts +10 -10
- package/lib/api/agents.js +15 -15
- package/lib/api/checkpoints.d.ts +40 -0
- package/lib/api/checkpoints.js +75 -0
- package/lib/api/index.d.ts +1 -0
- package/lib/api/index.js +18 -5
- package/lib/api/notifications.d.ts +21 -6
- package/lib/api/notifications.js +32 -14
- package/lib/api/runtimes/environments.d.ts +385 -4
- package/lib/api/runtimes/environments.js +610 -9
- package/lib/api/runtimes/runtimes.d.ts +19 -19
- package/lib/api/runtimes/runtimes.js +47 -46
- package/lib/api/spacer/notebooks.js +1 -1
- package/lib/chat/Chat.d.ts +16 -4
- package/lib/chat/Chat.js +18 -5
- package/lib/chat/ChatFloating.d.ts +13 -2
- package/lib/chat/ChatFloating.js +192 -117
- package/lib/chat/ChatInline.d.ts +15 -0
- package/lib/chat/ChatInline.js +0 -18
- package/lib/chat/ChatPopupStandalone.d.ts +1 -1
- package/lib/chat/ChatSidebar.d.ts +14 -2
- package/lib/chat/ChatSidebar.js +1 -1
- package/lib/chat/ChatStandalone.d.ts +1 -1
- package/lib/chat/EphemeralSurfaceControl.d.ts +30 -0
- package/lib/chat/EphemeralSurfaceControl.js +55 -0
- package/lib/chat/base/ChatAvailability.d.ts +34 -0
- package/lib/chat/base/ChatAvailability.js +18 -0
- package/lib/chat/base/ChatBase.d.ts +2 -1
- package/lib/chat/base/ChatBase.js +657 -28
- package/lib/chat/display/EmptyState.d.ts +15 -1
- package/lib/chat/display/EmptyState.js +78 -12
- package/lib/chat/display/FloatingBrandButton.d.ts +1 -1
- package/lib/chat/display/PoweredByTag.d.ts +1 -1
- package/lib/chat/display/groupSuggestions.d.ts +21 -0
- package/lib/chat/display/groupSuggestions.js +18 -0
- package/lib/chat/document/EphemeralDocument.d.ts +70 -6
- package/lib/chat/document/EphemeralDocument.js +154 -52
- package/lib/chat/header/ChatHeader.d.ts +1 -1
- package/lib/chat/header/ChatHeaderBase.d.ts +10 -1
- package/lib/chat/header/ChatHeaderBase.js +67 -96
- package/lib/chat/index.d.ts +4 -1
- package/lib/chat/index.js +8 -1
- package/lib/chat/indicators/McpStatusIndicator.d.ts +1 -1
- package/lib/chat/indicators/SandboxStatusIndicator.d.ts +1 -1
- package/lib/chat/indicators/SandboxStatusIndicator.js +1 -1
- package/lib/chat/indicators/SkillsStatusIndicator.d.ts +1 -1
- package/lib/chat/messages/ChatMessageList.d.ts +22 -1
- package/lib/chat/messages/ChatMessageList.js +370 -166
- package/lib/chat/messages/ChatMessages.d.ts +1 -1
- package/lib/chat/messages/NotebookToolSurfaces.d.ts +68 -0
- package/lib/chat/messages/NotebookToolSurfaces.js +302 -0
- package/lib/chat/messages/TurnFooter.d.ts +42 -0
- package/lib/chat/messages/TurnFooter.js +75 -0
- package/lib/chat/messages/assistantMarkdown.d.ts +22 -0
- package/lib/chat/messages/assistantMarkdown.js +56 -0
- package/lib/chat/notebook/EphemeralNotebook.d.ts +67 -6
- package/lib/chat/notebook/EphemeralNotebook.js +194 -61
- package/lib/chat/parts/DynamicToolPart.d.ts +1 -1
- package/lib/chat/parts/MessagePart.d.ts +1 -1
- package/lib/chat/parts/ReasoningPart.d.ts +8 -1
- package/lib/chat/parts/TextPart.d.ts +1 -1
- package/lib/chat/parts/ToolPart.d.ts +8 -1
- package/lib/chat/prompt/FloatingCard.d.ts +26 -0
- package/lib/chat/prompt/FloatingCard.js +80 -0
- package/lib/chat/prompt/InputPrompt.d.ts +206 -53
- package/lib/chat/prompt/InputPrompt.js +161 -80
- package/lib/chat/prompt/InputPromptBase.d.ts +112 -0
- package/lib/chat/prompt/InputPromptBase.js +225 -0
- package/lib/chat/prompt/InputPromptLexical.d.ts +18 -1
- package/lib/chat/prompt/InputPromptLexical.js +227 -30
- package/lib/chat/prompt/InputPromptText.d.ts +10 -2
- package/lib/chat/prompt/InputPromptText.js +35 -3
- package/lib/chat/prompt/footer/BelowPromptFooter.d.ts +25 -0
- package/lib/chat/prompt/footer/BelowPromptFooter.js +12 -0
- package/lib/chat/prompt/footer/InPromptFooter.d.ts +35 -0
- package/lib/chat/prompt/footer/InPromptFooter.js +16 -0
- package/lib/chat/prompt/footer/index.d.ts +7 -0
- package/lib/chat/prompt/footer/index.js +11 -0
- package/lib/chat/prompt/header/BelowPromptHeader.d.ts +23 -0
- package/lib/chat/prompt/header/BelowPromptHeader.js +12 -0
- package/lib/chat/prompt/header/InPromptHeader.d.ts +31 -0
- package/lib/chat/prompt/header/InPromptHeader.js +14 -0
- package/lib/chat/prompt/header/index.d.ts +7 -0
- package/lib/chat/prompt/header/index.js +11 -0
- package/lib/chat/prompt/index.d.ts +8 -4
- package/lib/chat/prompt/index.js +15 -3
- package/lib/chat/prompt/menus/AgentsMenu.d.ts +14 -0
- package/lib/chat/prompt/menus/AgentsMenu.js +42 -0
- package/lib/chat/prompt/menus/InlineAgentsMenu.d.ts +22 -0
- package/lib/chat/prompt/menus/InlineAgentsMenu.js +24 -0
- package/lib/chat/prompt/menus/ModelSelector.d.ts +7 -0
- package/lib/chat/prompt/menus/ModelSelector.js +27 -0
- package/lib/chat/prompt/menus/SkillsMenu.d.ts +10 -0
- package/lib/chat/prompt/menus/SkillsMenu.js +75 -0
- package/lib/chat/prompt/menus/SuggestionsMenu.d.ts +13 -0
- package/lib/chat/prompt/menus/SuggestionsMenu.js +31 -0
- package/lib/chat/prompt/menus/ToolsMenu.d.ts +13 -0
- package/lib/chat/prompt/menus/ToolsMenu.js +103 -0
- package/lib/chat/prompt/menus/index.d.ts +15 -0
- package/lib/chat/prompt/menus/index.js +19 -0
- package/lib/chat/prompt/plugins/AgentMentionPlugin.d.ts +54 -0
- package/lib/chat/prompt/plugins/AgentMentionPlugin.js +370 -0
- package/lib/chat/prompt/plugins/CommandPlugin.d.ts +52 -0
- package/lib/chat/prompt/plugins/CommandPlugin.js +359 -0
- package/lib/chat/prompt/plugins/MentionChip.d.ts +15 -0
- package/lib/chat/prompt/plugins/MentionChip.js +24 -0
- package/lib/chat/prompt/plugins/MentionNode.d.ts +66 -0
- package/lib/chat/prompt/plugins/MentionNode.js +77 -0
- package/lib/chat/prompt/promptHistory.d.ts +52 -0
- package/lib/chat/prompt/promptHistory.js +123 -0
- package/lib/chat/prompt/stack.d.ts +81 -0
- package/lib/chat/prompt/stack.js +41 -0
- package/lib/chat/prompt/useTypingPlaceholder.d.ts +52 -0
- package/lib/chat/prompt/useTypingPlaceholder.js +180 -0
- package/lib/chat/tools/A2AAgentDialog.d.ts +60 -0
- package/lib/chat/tools/A2AAgentDialog.js +265 -0
- package/lib/chat/tools/ToolApprovalBanner.d.ts +1 -1
- package/lib/chat/tools/ToolApprovalDialog.d.ts +1 -1
- package/lib/chat/tools/ToolCallDisplay.d.ts +8 -1
- package/lib/chat/tools/index.d.ts +1 -0
- package/lib/chat/tools/index.js +1 -0
- package/lib/chat/usage/ContextPie.d.ts +17 -0
- package/lib/chat/usage/{TokenUsageBar.js → ContextPie.js} +20 -14
- package/lib/chat/useViewportDrag.d.ts +11 -0
- package/lib/chat/useViewportDrag.js +61 -0
- package/lib/chat/viewModes.d.ts +51 -0
- package/lib/chat/viewModes.js +57 -0
- package/lib/client/AgentRuntimesClient.d.ts +10 -9
- package/lib/client/AgentRuntimesClient.js +1 -1
- package/lib/client/AgentRuntimesClientContext.d.ts +1 -0
- package/lib/client/AgentsMixin.d.ts +12 -12
- package/lib/client/AgentsMixin.js +31 -31
- package/lib/client/IAgentRuntimesClient.d.ts +10 -10
- package/lib/client/SdkAgentRuntimesClient.d.ts +10 -10
- package/lib/client/SdkAgentRuntimesClient.js +10 -10
- package/lib/client/mixins/RuntimesMixin.d.ts +37 -10
- package/lib/client/mixins/RuntimesMixin.js +54 -21
- package/lib/components/a2ui/A2uiSurfaceComposed.d.ts +1 -1
- package/lib/components/agents/AgentSummary.d.ts +13 -0
- package/lib/components/agents/AgentSummary.js +21 -4
- package/lib/components/cards/NotificationEventCard.d.ts +1 -1
- package/lib/components/cards/OutputCard.d.ts +1 -1
- package/lib/components/cards/ToolApprovalCard.d.ts +2 -2
- package/lib/components/cards/ToolApprovalCard.js +1 -0
- package/lib/components/code-sandboxes/CodeSandboxCellVariables.d.ts +1 -0
- package/lib/components/code-sandboxes/CodeSandboxCellVariables.js +0 -4
- package/lib/components/code-sandboxes/CodeSandboxCellVariablesDialog.d.ts +1 -0
- package/lib/components/code-sandboxes/CodeSandboxCellVariablesDialog.js +0 -4
- package/lib/components/code-sandboxes/CodeSandboxEnvironmentSelect.d.ts +76 -0
- package/lib/components/code-sandboxes/CodeSandboxEnvironmentSelect.js +81 -0
- package/lib/components/code-sandboxes/CodeSandboxLauncher.d.ts +12 -0
- package/lib/components/code-sandboxes/CodeSandboxLauncher.js +132 -25
- package/lib/components/code-sandboxes/CodeSandboxNames.js +75 -29
- package/lib/components/code-sandboxes/CodeSandboxPicker.d.ts +14 -1
- package/lib/components/code-sandboxes/CodeSandboxPicker.js +226 -45
- package/lib/components/code-sandboxes/CodeSandboxPickerCell.d.ts +1 -0
- package/lib/components/code-sandboxes/CodeSandboxPickerCell.js +0 -4
- package/lib/components/code-sandboxes/CodeSandboxReservationControl.d.ts +1 -0
- package/lib/components/code-sandboxes/CodeSandboxReservationControl.js +5 -7
- package/lib/components/code-sandboxes/CodeSandboxTransfer.d.ts +5 -0
- package/lib/components/code-sandboxes/CodeSandboxUtils.d.ts +16 -1
- package/lib/components/code-sandboxes/CodeSandboxUtils.js +69 -12
- package/lib/components/code-sandboxes/NewCodeSandboxControls.d.ts +21 -15
- package/lib/components/code-sandboxes/NewCodeSandboxControls.js +28 -51
- package/lib/components/code-sandboxes/codeSandboxAllowance.d.ts +33 -0
- package/lib/components/code-sandboxes/codeSandboxAllowance.js +37 -0
- package/lib/components/code-sandboxes/codeSandboxEnvironments.d.ts +86 -0
- package/lib/components/code-sandboxes/codeSandboxEnvironments.js +147 -0
- package/lib/components/code-sandboxes/codeSandboxProviders.d.ts +29 -0
- package/lib/components/code-sandboxes/codeSandboxProviders.js +90 -0
- package/lib/components/code-sandboxes/index.d.ts +3 -0
- package/lib/components/code-sandboxes/index.js +3 -0
- package/lib/components/context/SpaceSelect.d.ts +1 -1
- package/lib/components/flashes/FlashDisclaimer.d.ts +1 -1
- package/lib/components/icons/ArtifactIcon.d.ts +1 -0
- package/lib/components/nbgrader/NbGradesDetails.d.ts +1 -1
- package/lib/components/progress/CreditsIndicator.d.ts +1 -0
- package/lib/components/progress/CreditsIndicator.js +0 -4
- package/lib/components/scheduler/ScheduleMenu.d.ts +1 -1
- package/lib/components/snapshots/SandboxSnapshotMenu.d.ts +3 -2
- package/lib/components/snapshots/SandboxSnapshotMenu.js +11 -15
- package/lib/components/snippets/SnippetDialog.d.ts +1 -0
- package/lib/components/snippets/SnippetDialog.js +0 -4
- package/lib/components/specs/SpecPayloadPreview.d.ts +34 -0
- package/lib/components/specs/SpecPayloadPreview.js +102 -0
- package/lib/components/tokens/SpaceVariantToken.d.ts +1 -1
- package/lib/context/ContextDistribution.d.ts +1 -1
- package/lib/context/ContextInspector.d.ts +2 -1
- package/lib/context/ContextPanel.d.ts +1 -1
- package/lib/context/ContextUsage.d.ts +1 -1
- package/lib/context/CostTracker.d.ts +1 -1
- package/lib/context/CostUsageChart.d.ts +1 -1
- package/lib/context/CostUsageChart.js +4 -4
- package/lib/context/MessageHistory.d.ts +3 -2
- package/lib/context/TokenUsageChart.d.ts +1 -1
- package/lib/context/TokenUsageChart.js +4 -4
- package/lib/examples/A2UiAgentExample.js +15 -6
- package/lib/examples/A2UiComponentsGalleryExample.d.ts +10 -0
- package/lib/examples/A2UiComponentsGalleryExample.js +24 -855
- package/lib/examples/A2UiContactCardExample.d.ts +10 -0
- package/lib/examples/A2UiContactCardExample.js +23 -170
- package/lib/examples/A2UiJupyterOutputExample.d.ts +3 -0
- package/lib/examples/A2UiJupyterOutputExample.js +792 -0
- package/lib/examples/A2UiRestaurantExample.d.ts +10 -0
- package/lib/examples/A2UiRestaurantExample.js +24 -179
- package/lib/examples/A2UiViewerExample.d.ts +10 -0
- package/lib/examples/A2UiViewerExample.js +24 -378
- package/lib/examples/AgUiAgenticExample.js +2 -4
- package/lib/examples/AgUiBackendToolRenderingExample.js +3 -5
- package/lib/examples/AgUiHaikuGenUiExample.js +2 -4
- package/lib/examples/AgUiHumanInTheLoopExample.js +2 -4
- package/lib/examples/AgUiSharedStateExample.js +2 -4
- package/lib/examples/AgUiToolsBasedGenUiExample.js +2 -4
- package/lib/examples/AgentA2AExample.d.ts +17 -0
- package/lib/examples/AgentA2AExample.js +56 -0
- package/lib/examples/AgentCheckpointsExample.d.ts +9 -10
- package/lib/examples/AgentCheckpointsExample.js +72 -54
- package/lib/examples/AgentCodeSandboxExample.d.ts +7 -7
- package/lib/examples/AgentCodeSandboxExample.js +93 -303
- package/lib/examples/AgentCodeSandboxesExample.d.ts +10 -0
- package/lib/examples/AgentCodeSandboxesExample.js +56 -162
- package/lib/examples/AgentCodemodeExample.d.ts +7 -2
- package/lib/examples/AgentCodemodeExample.js +60 -125
- package/lib/examples/AgentCompactionExample.js +19 -135
- package/lib/examples/AgentEvalsExample.js +34 -66
- package/lib/examples/AgentGuardrailsExample.js +64 -112
- package/lib/examples/AgentHooksExample.d.ts +11 -0
- package/lib/examples/AgentHooksExample.js +30 -67
- package/lib/examples/AgentInferenceProviderExample.js +8 -32
- package/lib/examples/AgentLoopExample.d.ts +4 -2
- package/lib/examples/AgentLoopExample.js +45 -93
- package/lib/examples/AgentMCPExample.js +30 -79
- package/lib/examples/AgentMemoryExample.js +21 -64
- package/lib/examples/AgentMonitoringExample.js +33 -94
- package/lib/examples/AgentNotificationsExample.js +56 -95
- package/lib/examples/AgentOtelExample.js +35 -88
- package/lib/examples/AgentOutputsExample.d.ts +2 -1
- package/lib/examples/AgentOutputsExample.js +16 -137
- package/lib/examples/AgentParametersExample.js +7 -17
- package/lib/examples/AgentSkillsExample.js +40 -154
- package/lib/examples/AgentSubagentsExample.d.ts +7 -6
- package/lib/examples/AgentSubagentsExample.js +80 -191
- package/lib/examples/AgentToolApprovalsExample.js +35 -91
- package/lib/examples/AgentTriggersExample.js +43 -59
- package/lib/examples/AgentspecsExample.js +7 -7
- package/lib/examples/CellExample.d.ts +1 -1
- package/lib/examples/ChatExample.d.ts +12 -5
- package/lib/examples/ChatExample.js +38 -13
- package/lib/examples/CopilotKitLexicalExample.d.ts +1 -0
- package/lib/examples/CopilotKitLexicalExample.js +4 -41
- package/lib/examples/CopilotKitNotebookExample.d.ts +10 -0
- package/lib/examples/CopilotKitNotebookExample.js +2 -14
- package/lib/examples/DecksAgent.d.ts +21 -0
- package/lib/examples/DecksAgent.js +23 -0
- package/lib/examples/DocumentPageAgent.d.ts +19 -0
- package/lib/examples/DocumentPageAgent.js +15 -0
- package/lib/examples/Lexical2Example.d.ts +2 -2
- package/lib/examples/Lexical2Example.js +17 -38
- package/lib/examples/LexicalAgentExample.d.ts +2 -1
- package/lib/examples/LexicalAgentExample.js +29 -102
- package/lib/examples/LexicalAgentSidebarExample.d.ts +16 -5
- package/lib/examples/LexicalAgentSidebarExample.js +99 -131
- package/lib/examples/LoopShellExample.d.ts +38 -0
- package/lib/examples/LoopShellExample.js +68 -0
- package/lib/examples/LoopWorkspaceEmbed.d.ts +50 -0
- package/lib/examples/LoopWorkspaceEmbed.js +73 -0
- package/lib/examples/LoopWorkspaceExample.d.ts +150 -0
- package/lib/examples/LoopWorkspaceExample.js +151 -0
- package/lib/examples/NotebookAgentExample.d.ts +13 -0
- package/lib/examples/NotebookAgentExample.js +36 -86
- package/lib/examples/NotebookAgentSidebarExample.d.ts +10 -4
- package/lib/examples/NotebookAgentSidebarExample.js +39 -83
- package/lib/examples/NotebookCollaborationExample.d.ts +1 -1
- package/lib/examples/NotebookCollaborationExample.js +108 -20
- package/lib/examples/NotebookExample.d.ts +1 -1
- package/lib/examples/NotebookExample.js +20 -10
- package/lib/examples/NotebookPageAgent.d.ts +23 -0
- package/lib/examples/NotebookPageAgent.js +17 -0
- package/lib/examples/components/ExampleWrapper.d.ts +5 -0
- package/lib/examples/components/ExampleWrapper.js +36 -28
- package/lib/examples/components/LexicalEditor.d.ts +1 -1
- package/lib/examples/components/LexicalEditor.js +4 -24
- package/lib/examples/components/haiku/HaikuDisplay.d.ts +1 -1
- package/lib/examples/components/haiku/InlineHaikuCard.d.ts +1 -1
- package/lib/examples/components/weather/InlineWeatherCard.d.ts +1 -1
- package/lib/examples/example-selector.js +26 -6
- package/lib/examples/hooks/useCreateAgentOnce.d.ts +41 -0
- package/lib/examples/hooks/useCreateAgentOnce.js +51 -0
- package/lib/examples/hooks/useExampleAgentProtocol.d.ts +35 -0
- package/lib/examples/hooks/useExampleAgentProtocol.js +63 -0
- package/lib/examples/hooks/useExampleAgentRuntime.d.ts +16 -16
- package/lib/examples/hooks/useExampleAgentRuntime.js +26 -25
- package/lib/examples/hooks/useExampleAgentRuntimes.js +45 -61
- package/lib/examples/hooks/useExampleJupyterAgent.d.ts +91 -0
- package/lib/examples/hooks/useExampleJupyterAgent.js +151 -0
- package/lib/examples/index.d.ts +4 -0
- package/lib/examples/index.js +6 -0
- package/lib/examples/lexical/editorConfig.d.ts +2 -75
- package/lib/examples/lexical/editorConfig.js +26 -48
- package/lib/examples/lexical/lexical-theme.css +65 -47
- package/lib/examples/main.js +450 -322
- package/lib/examples/scenes/A2UiComponentsGalleryScene.d.ts +3 -0
- package/lib/examples/scenes/A2UiComponentsGalleryScene.js +872 -0
- package/lib/examples/scenes/A2UiContactCardScene.d.ts +3 -0
- package/lib/examples/scenes/A2UiContactCardScene.js +188 -0
- package/lib/examples/scenes/A2UiRestaurantScene.d.ts +3 -0
- package/lib/examples/scenes/A2UiRestaurantScene.js +196 -0
- package/lib/examples/scenes/A2UiViewerScene.d.ts +3 -0
- package/lib/examples/scenes/A2UiViewerScene.js +395 -0
- package/lib/examples/utils/agentSummaryStore.d.ts +7 -1
- package/lib/examples/utils/agents/earthquake-detector.ipynb.json +1 -1
- package/lib/examples/utils/agents/earthquake-detector.lexical.json +1 -1
- package/lib/examples/utils/agents/sales-forecaster.ipynb.json +1 -1
- package/lib/examples/utils/agents/sales-forecaster.lexical.json +1 -1
- package/lib/examples/utils/agents/social-post-generator.ipynb.json +1 -1
- package/lib/examples/utils/agents/social-post-generator.lexical.json +1 -1
- package/lib/examples/utils/exampleSurfaces.d.ts +31 -0
- package/lib/examples/utils/exampleSurfaces.js +38 -0
- package/lib/examples/utils/jupyterSandboxUrl.d.ts +27 -0
- package/lib/examples/utils/jupyterSandboxUrl.js +55 -0
- package/lib/examples/utils/localUrl.d.ts +2 -0
- package/lib/examples/utils/localUrl.js +49 -0
- package/lib/examples/utils/notebookToolbarItems.d.ts +46 -0
- package/lib/examples/utils/notebookToolbarItems.js +129 -0
- package/lib/examples/utils/runtimeTargetStore.d.ts +40 -1
- package/lib/examples/utils/runtimeTargetStore.js +82 -1
- package/lib/examples/utils/themedProvider.d.ts +7 -0
- package/lib/examples/utils/themedProvider.js +57 -4
- package/lib/examples/utils/useExampleAgentRuntimesUrl.js +30 -5
- package/lib/examples/utils/waitForAgent.d.ts +23 -0
- package/lib/examples/utils/waitForAgent.js +24 -0
- package/lib/examples2/CellExample.d.ts +1 -1
- package/lib/examples2/DatalayerNotebookExample.d.ts +1 -1
- package/lib/examples2/NotebookExample.d.ts +1 -1
- package/lib/examples2/NotebookMutationsKernel.d.ts +1 -1
- package/lib/examples2/NotebookMutationsServiceManager.d.ts +1 -1
- package/lib/examples2/main.js +24 -4
- package/lib/extensions/A2UIExtension.d.ts +1 -1
- package/lib/hooks/index.d.ts +8 -5
- package/lib/hooks/index.js +20 -5
- package/lib/hooks/useAgentRuntimes.d.ts +49 -22
- package/lib/hooks/useAgentRuntimes.js +214 -90
- package/lib/hooks/useAgentsCatalog.js +32 -4
- package/lib/hooks/useBrowserAgent.d.ts +26 -0
- package/lib/hooks/useBrowserAgent.js +75 -0
- package/lib/hooks/useBrowserInference.d.ts +27 -0
- package/lib/hooks/useBrowserInference.js +67 -0
- package/lib/hooks/useCheckpoints.d.ts +8 -17
- package/lib/hooks/useCheckpoints.js +25 -59
- package/lib/hooks/useConfig.d.ts +1 -1
- package/lib/hooks/useConfig.js +5 -1
- package/lib/hooks/useContextSnapshot.d.ts +18 -7
- package/lib/hooks/useContextSnapshot.js +14 -10
- package/lib/hooks/useNotifications.d.ts +11 -11
- package/lib/hooks/useNotifications.js +1 -1
- package/lib/hooks/useProjects.d.ts +7 -19
- package/lib/hooks/useProjects.js +5 -5
- package/lib/hooks/useSkills.d.ts +0 -1
- package/lib/hooks/useSkills.js +6 -2
- package/lib/hooks/useToolApprovals.d.ts +8 -8
- package/lib/hooks/useToolApprovals.js +3 -3
- package/lib/identity/AgentIdentity.d.ts +9 -2
- package/lib/identity/index.d.ts +1 -1
- package/lib/identity/index.js +1 -1
- package/lib/identity/types.d.ts +1 -1
- package/lib/identity/types.js +1 -1
- package/lib/index.d.ts +1 -0
- package/lib/index.js +4 -0
- package/lib/jupyter/index.d.ts +2 -1
- package/lib/jupyter/index.js +2 -1
- package/lib/jupyter/serverExecution.d.ts +78 -0
- package/lib/jupyter/serverExecution.js +258 -0
- package/lib/jupyter/useResumeServerExecutions.d.ts +11 -0
- package/lib/jupyter/useResumeServerExecutions.js +64 -0
- package/lib/lexical/ChatInlinePlugin.d.ts +33 -0
- package/lib/lexical/ChatInlinePlugin.js +0 -36
- package/lib/loop/core/focusRequests.d.ts +10 -0
- package/lib/loop/core/focusRequests.js +46 -0
- package/lib/loop/core/index.d.ts +894 -0
- package/lib/loop/core/index.js +264 -0
- package/lib/loop/core/promptStore.d.ts +44 -0
- package/lib/loop/core/promptStore.js +63 -0
- package/lib/loop/core/surfaceRequests.d.ts +33 -0
- package/lib/loop/core/surfaceRequests.js +29 -0
- package/lib/loop/core/toolbar.d.ts +28 -0
- package/lib/loop/core/toolbar.js +59 -0
- package/lib/loop/embed/LoopEmbed.d.ts +57 -0
- package/lib/loop/embed/LoopEmbed.js +118 -0
- package/lib/loop/extensions.d.ts +10 -0
- package/lib/loop/extensions.js +49 -0
- package/lib/loop/index.d.ts +68 -0
- package/lib/loop/index.js +87 -0
- package/lib/loop/plugins/a2a-sidebar/A2ASidebar.d.ts +48 -0
- package/lib/loop/plugins/a2a-sidebar/A2ASidebar.js +190 -0
- package/lib/loop/plugins/a2a-sidebar/index.d.ts +5 -0
- package/lib/loop/plugins/a2a-sidebar/index.js +39 -0
- package/lib/loop/plugins/a2ui/A2uiView.d.ts +12 -0
- package/lib/loop/plugins/a2ui/A2uiView.js +97 -0
- package/lib/loop/plugins/a2ui/index.d.ts +3 -0
- package/lib/loop/plugins/a2ui/index.js +50 -0
- package/lib/loop/plugins/a2ui-scene/index.d.ts +36 -0
- package/lib/loop/plugins/a2ui-scene/index.js +28 -0
- package/lib/loop/plugins/agent-a2a/index.d.ts +3 -0
- package/lib/loop/plugins/agent-a2a/index.js +26 -0
- package/lib/loop/plugins/agent-a2ui/index.d.ts +3 -0
- package/lib/loop/plugins/agent-a2ui/index.js +42 -0
- package/lib/loop/plugins/agent-a2ui-jupyter-output/index.d.ts +3 -0
- package/lib/loop/plugins/agent-a2ui-jupyter-output/index.js +53 -0
- package/lib/loop/plugins/agent-capacity/index.d.ts +39 -0
- package/lib/loop/plugins/agent-capacity/index.js +52 -0
- package/lib/loop/plugins/agent-checkpoints/index.d.ts +3 -0
- package/lib/loop/plugins/agent-checkpoints/index.js +26 -0
- package/lib/loop/plugins/agent-code-sandbox/index.d.ts +3 -0
- package/lib/loop/plugins/agent-code-sandbox/index.js +24 -0
- package/lib/loop/plugins/agent-code-sandboxes/index.d.ts +13 -0
- package/lib/loop/plugins/agent-code-sandboxes/index.js +85 -0
- package/lib/loop/plugins/agent-codemode/index.d.ts +5 -0
- package/lib/loop/plugins/agent-codemode/index.js +41 -0
- package/lib/loop/plugins/agent-compaction/index.d.ts +10 -0
- package/lib/loop/plugins/agent-compaction/index.js +34 -0
- package/lib/loop/plugins/agent-evals/index.d.ts +3 -0
- package/lib/loop/plugins/agent-evals/index.js +25 -0
- package/lib/loop/plugins/agent-guardrails/index.d.ts +3 -0
- package/lib/loop/plugins/agent-guardrails/index.js +25 -0
- package/lib/loop/plugins/agent-hooks/index.d.ts +3 -0
- package/lib/loop/plugins/agent-hooks/index.js +28 -0
- package/lib/loop/plugins/agent-inference/index.d.ts +7 -0
- package/lib/loop/plugins/agent-inference/index.js +29 -0
- package/lib/loop/plugins/agent-mcp/index.d.ts +3 -0
- package/lib/loop/plugins/agent-mcp/index.js +25 -0
- package/lib/loop/plugins/agent-memory/index.d.ts +3 -0
- package/lib/loop/plugins/agent-memory/index.js +25 -0
- package/lib/loop/plugins/agent-monitoring/index.d.ts +3 -0
- package/lib/loop/plugins/agent-monitoring/index.js +25 -0
- package/lib/loop/plugins/agent-notifications/index.d.ts +3 -0
- package/lib/loop/plugins/agent-notifications/index.js +25 -0
- package/lib/loop/plugins/agent-otel/index.d.ts +3 -0
- package/lib/loop/plugins/agent-otel/index.js +25 -0
- package/lib/loop/plugins/agent-outputs/index.d.ts +3 -0
- package/lib/loop/plugins/agent-outputs/index.js +25 -0
- package/lib/loop/plugins/agent-parameters/index.d.ts +3 -0
- package/lib/loop/plugins/agent-parameters/index.js +25 -0
- package/lib/loop/plugins/agent-skills/index.d.ts +3 -0
- package/lib/loop/plugins/agent-skills/index.js +25 -0
- package/lib/loop/plugins/agent-subagents/index.d.ts +3 -0
- package/lib/loop/plugins/agent-subagents/index.js +25 -0
- package/lib/loop/plugins/agent-tool-approvals/index.d.ts +11 -0
- package/lib/loop/plugins/agent-tool-approvals/index.js +38 -0
- package/lib/loop/plugins/agent-triggers/index.d.ts +3 -0
- package/lib/loop/plugins/agent-triggers/index.js +26 -0
- package/lib/loop/plugins/agents/AgentSummaryPanel.d.ts +20 -0
- package/lib/loop/plugins/agents/AgentSummaryPanel.js +50 -0
- package/lib/loop/plugins/agents/AnonymousKeyBadge.d.ts +35 -0
- package/lib/loop/plugins/agents/AnonymousKeyBadge.js +53 -0
- package/lib/loop/plugins/agents/DatalayerAgentBridge.d.ts +24 -0
- package/lib/loop/plugins/agents/DatalayerAgentBridge.js +102 -0
- package/lib/loop/plugins/agents/DatalayerAgentMount.d.ts +18 -0
- package/lib/loop/plugins/agents/DatalayerAgentMount.js +12 -0
- package/lib/loop/plugins/agents/SandboxSelector.d.ts +18 -0
- package/lib/loop/plugins/agents/SandboxSelector.js +99 -0
- package/lib/loop/plugins/agents/SandboxStatusBridge.d.ts +19 -0
- package/lib/loop/plugins/agents/SandboxStatusBridge.js +23 -0
- package/lib/loop/plugins/agents/SandboxView.d.ts +11 -0
- package/lib/loop/plugins/agents/SandboxView.js +43 -0
- package/lib/loop/plugins/agents/TeamMemberPicker.d.ts +17 -0
- package/lib/loop/plugins/agents/TeamMemberPicker.js +60 -0
- package/lib/loop/plugins/agents/agentIcons.d.ts +23 -0
- package/lib/loop/plugins/agents/agentIcons.js +88 -0
- package/lib/loop/plugins/agents/browserService.d.ts +50 -0
- package/lib/loop/plugins/agents/browserService.js +233 -0
- package/lib/loop/plugins/agents/index.d.ts +13 -0
- package/lib/loop/plugins/agents/index.js +17 -0
- package/lib/loop/plugins/agents/plugin.d.ts +91 -0
- package/lib/loop/plugins/agents/plugin.js +201 -0
- package/lib/loop/plugins/agents/service.d.ts +99 -0
- package/lib/loop/plugins/agents/service.js +167 -0
- package/lib/loop/plugins/agents/specSubagents.d.ts +18 -0
- package/lib/loop/plugins/agents/specSubagents.js +33 -0
- package/lib/loop/plugins/agents/switchable.d.ts +107 -0
- package/lib/loop/plugins/agents/switchable.js +405 -0
- package/lib/loop/plugins/agents/team.d.ts +87 -0
- package/lib/loop/plugins/agents/team.js +143 -0
- package/lib/loop/plugins/agents/useSandboxService.d.ts +11 -0
- package/lib/loop/plugins/agents/useSandboxService.js +36 -0
- package/lib/loop/plugins/agents/useTeamSelection.d.ts +10 -0
- package/lib/loop/plugins/agents/useTeamSelection.js +27 -0
- package/lib/loop/plugins/agentspecs/AgentspecPicker.d.ts +15 -0
- package/lib/loop/plugins/agentspecs/AgentspecPicker.js +90 -0
- package/lib/loop/plugins/agentspecs/index.d.ts +6 -0
- package/lib/loop/plugins/agentspecs/index.js +63 -0
- package/lib/loop/plugins/chat/ChatView.d.ts +20 -0
- package/lib/loop/plugins/chat/ChatView.js +1670 -0
- package/lib/loop/plugins/chat/chatViewTools.d.ts +41 -0
- package/lib/loop/plugins/chat/chatViewTools.js +92 -0
- package/lib/loop/plugins/chat/index.d.ts +111 -0
- package/lib/loop/plugins/chat/index.js +143 -0
- package/lib/loop/plugins/chat/turnState.d.ts +41 -0
- package/lib/loop/plugins/chat/turnState.js +90 -0
- package/lib/loop/plugins/chat-extras/index.d.ts +14 -0
- package/lib/loop/plugins/chat-extras/index.js +51 -0
- package/lib/loop/plugins/chat-header/HeaderView.d.ts +13 -0
- package/lib/loop/plugins/chat-header/HeaderView.js +6 -0
- package/lib/loop/plugins/chat-header/index.d.ts +3 -0
- package/lib/loop/plugins/chat-header/index.js +21 -0
- package/lib/loop/plugins/chat-view/index.d.ts +10 -0
- package/lib/loop/plugins/chat-view/index.js +29 -0
- package/lib/loop/plugins/checkpoints-sidebar/CheckpointsSidebar.d.ts +27 -0
- package/lib/loop/plugins/checkpoints-sidebar/CheckpointsSidebar.js +174 -0
- package/lib/loop/plugins/checkpoints-sidebar/index.d.ts +5 -0
- package/lib/loop/plugins/checkpoints-sidebar/index.js +39 -0
- package/lib/loop/plugins/commands/index.d.ts +20 -0
- package/lib/loop/plugins/commands/index.js +148 -0
- package/lib/loop/plugins/decks/DeckSurface.d.ts +10 -0
- package/lib/loop/plugins/decks/DeckSurface.js +6 -0
- package/lib/loop/plugins/decks/DecksMenu.d.ts +11 -0
- package/lib/loop/plugins/decks/DecksMenu.js +42 -0
- package/lib/loop/plugins/decks/index.d.ts +19 -0
- package/lib/loop/plugins/decks/index.js +133 -0
- package/lib/loop/plugins/decks/surface.d.ts +7 -0
- package/lib/loop/plugins/decks/surface.js +11 -0
- package/lib/loop/plugins/document/DocumentView.d.ts +12 -0
- package/lib/loop/plugins/document/DocumentView.js +68 -0
- package/lib/loop/plugins/document/index.d.ts +3 -0
- package/lib/loop/plugins/document/index.js +86 -0
- package/lib/loop/plugins/document/openingDocument.d.ts +28 -0
- package/lib/loop/plugins/document/openingDocument.js +122 -0
- package/lib/loop/plugins/document-toolbar/SandboxStatusItem.d.ts +16 -0
- package/lib/loop/plugins/document-toolbar/SandboxStatusItem.js +31 -0
- package/lib/loop/plugins/document-toolbar/index.d.ts +4 -0
- package/lib/loop/plugins/document-toolbar/index.js +35 -0
- package/lib/loop/plugins/document-toolbar/names.d.ts +6 -0
- package/lib/loop/plugins/document-toolbar/names.js +10 -0
- package/lib/loop/plugins/document-toolbar/plugin.d.ts +2 -0
- package/lib/loop/plugins/document-toolbar/plugin.js +38 -0
- package/lib/loop/plugins/document-view/index.d.ts +10 -0
- package/lib/loop/plugins/document-view/index.js +28 -0
- package/lib/loop/plugins/graph/GraphToggle.d.ts +17 -0
- package/lib/loop/plugins/graph/GraphToggle.js +22 -0
- package/lib/loop/plugins/graph/GraphView.d.ts +16 -0
- package/lib/loop/plugins/graph/GraphView.js +6 -0
- package/lib/loop/plugins/graph/index.d.ts +5 -0
- package/lib/loop/plugins/graph/index.js +80 -0
- package/lib/loop/plugins/graph/viewType.d.ts +10 -0
- package/lib/loop/plugins/graph/viewType.js +14 -0
- package/lib/loop/plugins/input-prompt/ComposerView.d.ts +15 -0
- package/lib/loop/plugins/input-prompt/ComposerView.js +25 -0
- package/lib/loop/plugins/input-prompt/index.d.ts +25 -0
- package/lib/loop/plugins/input-prompt/index.js +26 -0
- package/lib/loop/plugins/models/index.d.ts +3 -0
- package/lib/loop/plugins/models/index.js +49 -0
- package/lib/loop/plugins/notebook/NotebookView.d.ts +9 -0
- package/lib/loop/plugins/notebook/NotebookView.js +189 -0
- package/lib/loop/plugins/notebook/index.d.ts +3 -0
- package/lib/loop/plugins/notebook/index.js +91 -0
- package/lib/loop/plugins/notebook/openingNotebook.d.ts +72 -0
- package/lib/loop/plugins/notebook/openingNotebook.js +90 -0
- package/lib/loop/plugins/notebook-toolbar/index.d.ts +4 -0
- package/lib/loop/plugins/notebook-toolbar/index.js +45 -0
- package/lib/loop/plugins/notebook-toolbar/items.d.ts +10 -0
- package/lib/loop/plugins/notebook-toolbar/items.js +45 -0
- package/lib/loop/plugins/notebook-toolbar/names.d.ts +9 -0
- package/lib/loop/plugins/notebook-toolbar/names.js +13 -0
- package/lib/loop/plugins/notebook-toolbar/plugin.d.ts +2 -0
- package/lib/loop/plugins/notebook-toolbar/plugin.js +24 -0
- package/lib/loop/plugins/notebook-view/index.d.ts +10 -0
- package/lib/loop/plugins/notebook-view/index.js +30 -0
- package/lib/loop/plugins/page-layout/TurnPanel.d.ts +25 -0
- package/lib/loop/plugins/page-layout/TurnPanel.js +126 -0
- package/lib/loop/plugins/page-layout/index.d.ts +35 -0
- package/lib/loop/plugins/page-layout/index.js +80 -0
- package/lib/loop/plugins/plugins-panel/index.d.ts +14 -0
- package/lib/loop/plugins/plugins-panel/index.js +74 -0
- package/lib/loop/plugins/prompt/NewChatAction.d.ts +19 -0
- package/lib/loop/plugins/prompt/NewChatAction.js +10 -0
- package/lib/loop/plugins/prompt/index.d.ts +11 -0
- package/lib/loop/plugins/prompt/index.js +73 -0
- package/lib/loop/plugins/shell/editorChoice.d.ts +31 -0
- package/lib/loop/plugins/shell/editorChoice.js +58 -0
- package/lib/loop/plugins/shell/index.d.ts +47 -0
- package/lib/loop/plugins/shell/index.js +142 -0
- package/lib/loop/plugins/shell/useEditorPreviews.d.ts +32 -0
- package/lib/loop/plugins/shell/useEditorPreviews.js +217 -0
- package/lib/loop/plugins/subagent-activity/SubagentPulse.d.ts +16 -0
- package/lib/loop/plugins/subagent-activity/SubagentPulse.js +45 -0
- package/lib/loop/plugins/subagent-activity/index.d.ts +12 -0
- package/lib/loop/plugins/subagent-activity/index.js +42 -0
- package/lib/loop/plugins/view-switch/index.d.ts +46 -0
- package/lib/loop/plugins/view-switch/index.js +68 -0
- package/lib/loop/plugins/window-frame/WindowFrame.d.ts +48 -0
- package/lib/loop/plugins/window-frame/WindowFrame.js +63 -0
- package/lib/loop/plugins/window-frame/index.d.ts +6 -0
- package/lib/loop/plugins/window-frame/index.js +79 -0
- package/lib/loop/plugins/window-frame/slots.d.ts +26 -0
- package/lib/loop/plugins/window-frame/slots.js +30 -0
- package/lib/loop/presets.d.ts +167 -0
- package/lib/loop/presets.js +139 -0
- package/lib/loop/shell/LoopWorkspace.d.ts +109 -0
- package/lib/loop/shell/LoopWorkspace.js +231 -0
- package/lib/loop/shell/PluginToggles.d.ts +21 -0
- package/lib/loop/shell/PluginToggles.js +41 -0
- package/lib/loop/shell/ViewSwitcher.d.ts +24 -0
- package/lib/loop/shell/ViewSwitcher.js +43 -0
- package/lib/loop/shell/WorkspaceFullScreenAction.d.ts +25 -0
- package/lib/loop/shell/WorkspaceFullScreenAction.js +24 -0
- package/lib/loop/shell/index.d.ts +10 -0
- package/lib/loop/shell/index.js +14 -0
- package/lib/loop/shell/useWorkspaceFullScreen.d.ts +93 -0
- package/lib/loop/shell/useWorkspaceFullScreen.js +167 -0
- package/lib/loop-example-main.d.ts +1 -0
- package/lib/loop-example-main.js +42 -0
- package/lib/loop-main.d.ts +1 -0
- package/lib/loop-main.js +138 -0
- package/lib/mcp/McpServerManager.d.ts +1 -1
- package/lib/models/CodeSandboxSnapshotDTO.d.ts +1 -1
- package/lib/models/CodeSandboxVariant.d.ts +53 -0
- package/lib/models/CodeSandboxVariant.js +77 -0
- package/lib/models/Content.d.ts +26 -0
- package/lib/models/Environment.d.ts +561 -5
- package/lib/models/Environment.js +12 -1
- package/lib/models/EnvironmentDTO.d.ts +24 -6
- package/lib/models/EnvironmentDTO.js +13 -2
- package/lib/models/Exercise.d.ts +0 -2
- package/lib/models/Library.d.ts +0 -2
- package/lib/models/Notebook.d.ts +0 -2
- package/lib/models/ProjectDTO.d.ts +2 -2
- package/lib/models/ProjectDTO.js +4 -4
- package/lib/models/Runtime.d.ts +11 -11
- package/lib/models/RuntimeDTO.d.ts +16 -7
- package/lib/models/RuntimeDTO.js +9 -9
- package/lib/models/Space.d.ts +10 -0
- package/lib/models/Space.js +1 -1
- package/lib/models/SpaceDTO.d.ts +1 -1
- package/lib/models/SpaceItem.d.ts +1 -2
- package/lib/models/environments.generated.d.ts +113 -0
- package/lib/models/environments.generated.js +13 -0
- package/lib/models/index.d.ts +1 -1
- package/lib/models/index.js +1 -1
- package/lib/protocols/A2AAdapter.d.ts +39 -6
- package/lib/protocols/A2AAdapter.js +180 -11
- package/lib/protocols/ACPAdapter.js +40 -37
- package/lib/protocols/AGUIAdapter.d.ts +14 -0
- package/lib/protocols/AGUIAdapter.js +34 -9
- package/lib/protocols/BrowserAgentAdapter.d.ts +117 -0
- package/lib/protocols/BrowserAgentAdapter.js +310 -0
- package/lib/protocols/VercelAIAdapter.d.ts +10 -0
- package/lib/protocols/VercelAIAdapter.js +27 -7
- package/lib/protocols/index.d.ts +1 -0
- package/lib/protocols/index.js +1 -0
- package/lib/runtimes/actions.d.ts +3 -3
- package/lib/runtimes/actions.js +41 -16
- package/lib/runtimes/apis.d.ts +13 -4
- package/lib/runtimes/browser/agent.d.ts +54 -0
- package/lib/runtimes/browser/agent.js +63 -0
- package/lib/runtimes/browser/anonymousToken.d.ts +121 -0
- package/lib/runtimes/browser/anonymousToken.js +300 -0
- package/lib/runtimes/browser/frontendTools.d.ts +61 -0
- package/lib/runtimes/browser/frontendTools.js +152 -0
- package/lib/runtimes/browser/index.d.ts +11 -0
- package/lib/runtimes/browser/index.js +20 -0
- package/lib/runtimes/browser/model.d.ts +52 -0
- package/lib/runtimes/browser/model.js +110 -0
- package/lib/runtimes/browser/protocol.d.ts +54 -0
- package/lib/runtimes/browser/protocol.js +35 -0
- package/lib/runtimes/browser/subagents.d.ts +131 -0
- package/lib/runtimes/browser/subagents.js +241 -0
- package/lib/runtimes/index.d.ts +3 -0
- package/lib/runtimes/index.js +3 -0
- package/lib/runtimes/lifecycle.d.ts +76 -0
- package/lib/runtimes/lifecycle.js +99 -0
- package/lib/runtimes/variants.d.ts +172 -0
- package/lib/runtimes/variants.js +187 -0
- package/lib/services/reconnectToRuntime.d.ts +2 -2
- package/lib/services/reconnectToRuntime.js +3 -3
- package/lib/services/sandboxServiceManagers.d.ts +2 -2
- package/lib/services/sandboxServiceManagers.js +11 -11
- package/lib/specs/agents/agents.d.ts +128 -112
- package/lib/specs/agents/agents.js +8024 -5052
- package/lib/specs/envvars.d.ts +1 -1
- package/lib/specs/envvars.js +3 -3
- package/lib/specs/evals.js +9 -0
- package/lib/specs/frontendTools.d.ts +3 -0
- package/lib/specs/frontendTools.js +46 -3
- package/lib/specs/mcpServers.d.ts +1 -0
- package/lib/specs/mcpServers.js +27 -4
- package/lib/specs/models.d.ts +18 -0
- package/lib/specs/models.js +154 -0
- package/lib/specs/outputs.d.ts +2 -0
- package/lib/specs/outputs.js +22 -0
- package/lib/specs/personas.js +1 -1
- package/lib/specs/teams/teams.d.ts +2 -0
- package/lib/specs/teams/teams.js +628 -111
- package/lib/state/index.d.ts +1 -1
- package/lib/state/index.js +1 -1
- package/lib/state/substates/RuntimesState.d.ts +5 -5
- package/lib/state/substates/RuntimesState.js +17 -14
- package/lib/state/substates/index.d.ts +1 -1
- package/lib/state/substates/index.js +1 -1
- package/lib/stores/agentRuntimeStore.d.ts +43 -1
- package/lib/stores/agentRuntimeStore.js +100 -11
- package/lib/stores/index.d.ts +1 -1
- package/lib/stores/index.js +1 -1
- package/lib/stories/Button.d.ts +1 -1
- package/lib/stories/Button.stories.d.ts +1 -1
- package/lib/stories/Header.d.ts +1 -1
- package/lib/stories/Header.stories.d.ts +1 -1
- package/lib/test-setup.js +66 -0
- package/lib/tools/adapters/agent-runtimes/lexicalHooks.d.ts +15 -0
- package/lib/tools/adapters/agent-runtimes/lexicalHooks.js +43 -2
- package/lib/tools/adapters/agent-runtimes/notebookHooks.d.ts +9 -0
- package/lib/tools/adapters/agent-runtimes/notebookHooks.js +12 -0
- package/lib/tools/adapters/commands/frontendCommandTools.d.ts +11 -0
- package/lib/tools/adapters/commands/frontendCommandTools.js +60 -0
- package/lib/tools/adapters/commands/index.d.ts +1 -0
- package/lib/{models/Dataset.js → tools/adapters/commands/index.js} +1 -1
- package/lib/tools/adapters/copilotkit/lexicalHooks.js +7 -3
- package/lib/tools/index.d.ts +1 -0
- package/lib/tools/index.js +1 -0
- package/lib/types/a2a.d.ts +15 -1
- package/lib/types/agents-lifecycle.d.ts +11 -6
- package/lib/types/agents.d.ts +31 -6
- package/lib/types/agentspecs.d.ts +120 -4
- package/lib/types/chat.d.ts +251 -3
- package/lib/types/checkpoints.d.ts +20 -0
- package/lib/types/config.d.ts +13 -1
- package/lib/types/connection.d.ts +1 -1
- package/lib/types/evals.d.ts +2 -0
- package/lib/types/messages.d.ts +60 -0
- package/lib/types/models.d.ts +26 -0
- package/lib/types/notifications.d.ts +15 -6
- package/lib/types/protocol.d.ts +7 -2
- package/lib/types/stream.d.ts +48 -3
- package/lib/types/stream.js +5 -0
- package/lib/types/teams.d.ts +102 -4
- package/lib/types/tool-approvals.d.ts +1 -1
- package/lib/types/tools.d.ts +8 -2
- package/lib/utils/utils.js +7 -1
- package/package.json +376 -361
- package/scripts/codegen/__pycache__/compose.cpython-313.pyc +0 -0
- package/scripts/codegen/__pycache__/versioning.cpython-313.pyc +0 -0
- package/scripts/codegen/compose.py +208 -0
- package/scripts/codegen/generate_agents.py +202 -31
- package/scripts/codegen/generate_evals.py +2 -0
- package/scripts/codegen/generate_frontend_tools.py +35 -6
- package/scripts/codegen/generate_models.py +40 -15
- package/scripts/codegen/generate_sandbox_agents.py +76 -62
- package/scripts/codegen/generate_teams.py +178 -4
- package/scripts/codegen/generate_tools.py +6 -4
- package/scripts/gen_workers.py +279 -111
- package/scripts/generate-environments-types.py +404 -0
- package/lib/chat/prompt/InputFooter.d.ts +0 -58
- package/lib/chat/prompt/InputFooter.js +0 -194
- package/lib/chat/prompt/InputPromptFooter.d.ts +0 -27
- package/lib/chat/prompt/InputPromptFooter.js +0 -15
- package/lib/chat/prompt/InputPromptHeader.d.ts +0 -15
- package/lib/chat/prompt/InputPromptHeader.js +0 -15
- package/lib/chat/usage/TokenUsageBar.d.ts +0 -8
- package/lib/hooks/useRuntimes.d.ts +0 -5
- package/lib/hooks/useRuntimes.js +0 -34
- package/lib/jupyter/kernelsHandler.d.ts +0 -8
- package/lib/jupyter/kernelsHandler.js +0 -39
- package/lib/models/Dataset.d.ts +0 -16
- package/lib/utils/Cells.d.ts +0 -2
- package/lib/utils/Cells.js +0 -28
|
@@ -6,24 +6,14 @@ import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-run
|
|
|
6
6
|
import '@datalayer/jupyter-react/lib/css/PrismCss';
|
|
7
7
|
import { useCallback, useEffect, useRef, useState } from 'react';
|
|
8
8
|
import { $getRoot, $createParagraphNode } from 'lexical';
|
|
9
|
-
import {
|
|
10
|
-
import { RichTextPlugin } from '@lexical/react/LexicalRichTextPlugin';
|
|
9
|
+
import { LexicalExtensionComposer } from '@lexical/react/LexicalExtensionComposer';
|
|
11
10
|
import { ContentEditable } from '@lexical/react/LexicalContentEditable';
|
|
12
|
-
import { HistoryPlugin } from '@lexical/react/LexicalHistoryPlugin';
|
|
13
11
|
import { OnChangePlugin } from '@lexical/react/LexicalOnChangePlugin';
|
|
14
12
|
import { useLexicalComposerContext } from '@lexical/react/LexicalComposerContext';
|
|
15
|
-
import { LexicalErrorBoundary } from '@lexical/react/LexicalErrorBoundary';
|
|
16
|
-
import { AutoFocusPlugin } from '@lexical/react/LexicalAutoFocusPlugin';
|
|
17
|
-
import { MarkdownShortcutPlugin } from '@lexical/react/LexicalMarkdownShortcutPlugin';
|
|
18
|
-
import { TRANSFORMERS } from '@lexical/markdown';
|
|
19
|
-
import { registerCodeHighlighting } from '@lexical/code';
|
|
20
|
-
import { ListPlugin } from '@lexical/react/LexicalListPlugin';
|
|
21
|
-
import { CheckListPlugin } from '@lexical/react/LexicalCheckListPlugin';
|
|
22
|
-
import { LinkPlugin } from '@lexical/react/LexicalLinkPlugin';
|
|
23
13
|
import { Box } from '@datalayer/primer-addons';
|
|
24
14
|
import { JupyterReactTheme, useJupyter } from '@datalayer/jupyter-react';
|
|
25
|
-
import { ComponentPickerMenuPlugin,
|
|
26
|
-
import {
|
|
15
|
+
import { ComponentPickerMenuPlugin, JupyterInputOutputPlugin, DraggableBlockPlugin, LexicalConfigProvider, LexicalStatePlugin, FloatingTextFormatToolbarPlugin, CodeActionMenuPlugin, } from '@datalayer/jupyter-lexical';
|
|
16
|
+
import { editorExtension } from '../lexical/editorConfig';
|
|
27
17
|
import '@datalayer/jupyter-lexical/style/index.css';
|
|
28
18
|
import '../lexical/lexical-theme.css';
|
|
29
19
|
const LEXICAL_ID = 'agent-runtime-lexical-editor';
|
|
@@ -64,16 +54,6 @@ function LoadContentPlugin({ content }) {
|
|
|
64
54
|
}, [content, editor]);
|
|
65
55
|
return null;
|
|
66
56
|
}
|
|
67
|
-
/**
|
|
68
|
-
* Lexical plugin for Simple code syntax highlighting.
|
|
69
|
-
*/
|
|
70
|
-
function CodeHighlightPlugin() {
|
|
71
|
-
const [editor] = useLexicalComposerContext();
|
|
72
|
-
useEffect(() => {
|
|
73
|
-
return registerCodeHighlighting(editor);
|
|
74
|
-
}, [editor]);
|
|
75
|
-
return null;
|
|
76
|
-
}
|
|
77
57
|
/**
|
|
78
58
|
* Wrapper component for kernel-dependent Simple plugins.
|
|
79
59
|
*/
|
|
@@ -104,5 +84,5 @@ export const LexicalEditor = ({ content = INITIAL_CONTENT, serviceManager, extra
|
|
|
104
84
|
padding: 3,
|
|
105
85
|
backgroundColor: 'canvas.default',
|
|
106
86
|
minHeight: '600px',
|
|
107
|
-
}, children: _jsx(LexicalConfigProvider, { lexicalId: LEXICAL_ID, serviceManager: serviceManager, children: _jsx(
|
|
87
|
+
}, children: _jsx(LexicalConfigProvider, { lexicalId: LEXICAL_ID, serviceManager: serviceManager, children: _jsx(LexicalExtensionComposer, { extension: editorExtension, contentEditable: null, children: _jsxs("div", { className: "lexical-editor-inner", ref: onRef, children: [_jsx(LexicalStatePlugin, {}), _jsx(ContentEditable, { className: "lexical-editor-content", "aria-label": "Lexical Editor" }), _jsx(OnChangePlugin, { onChange: handleChange }), _jsx(LoadContentPlugin, { content: content }), _jsx(JupyterReactTheme, { useBaseStyles: false, children: _jsx(SimpleKernelPluginsInner, {}) }), floatingAnchorElem && (_jsxs(_Fragment, { children: [_jsx(DraggableBlockPlugin, { anchorElem: floatingAnchorElem }), _jsx(FloatingTextFormatToolbarPlugin, { anchorElem: floatingAnchorElem, setIsLinkEditMode: setIsLinkEditMode, extraItems: extraItems }), _jsx(CodeActionMenuPlugin, { anchorElem: floatingAnchorElem })] })), children] }) }) }) }));
|
|
108
88
|
};
|
|
@@ -14,5 +14,5 @@ export interface HaikuDisplayProps {
|
|
|
14
14
|
* Displays a carousel of haiku cards with navigation controls.
|
|
15
15
|
* Shows the most recent haiku first with ability to browse older ones.
|
|
16
16
|
*/
|
|
17
|
-
export declare function HaikuDisplay({ haikus, title, }: HaikuDisplayProps): import("react
|
|
17
|
+
export declare function HaikuDisplay({ haikus, title, }: HaikuDisplayProps): import("react").JSX.Element;
|
|
18
18
|
export default HaikuDisplay;
|
|
@@ -35,5 +35,5 @@ export interface InlineHaikuCardProps {
|
|
|
35
35
|
* - English translation (below)
|
|
36
36
|
* - Decorative corner accents
|
|
37
37
|
*/
|
|
38
|
-
export declare function InlineHaikuCard({ haiku, status, error, size, }: InlineHaikuCardProps): import("react
|
|
38
|
+
export declare function InlineHaikuCard({ haiku, status, error, size, }: InlineHaikuCardProps): import("react").JSX.Element;
|
|
39
39
|
export default InlineHaikuCard;
|
|
@@ -39,5 +39,5 @@ export interface InlineWeatherCardProps {
|
|
|
39
39
|
* - Temperature in both Celsius and Fahrenheit
|
|
40
40
|
* - Humidity, wind speed, and feels like temperature
|
|
41
41
|
*/
|
|
42
|
-
export declare function InlineWeatherCard({ location, result, status, error, }: InlineWeatherCardProps): import("react
|
|
42
|
+
export declare function InlineWeatherCard({ location, result, status, error, }: InlineWeatherCardProps): import("react").JSX.Element;
|
|
43
43
|
export default InlineWeatherCard;
|
|
@@ -6,11 +6,15 @@
|
|
|
6
6
|
const DISPLAY_NAME_EXCEPTIONS = [
|
|
7
7
|
[/\bAg Ui\b/g, 'AG-UI'],
|
|
8
8
|
[/\bA2 Ui\b/g, 'A2UI'],
|
|
9
|
+
[/\bA2 A\b/g, 'A2A'],
|
|
9
10
|
[/\bCopilot Kit\b/g, 'CopilotKit'],
|
|
10
11
|
[/\bGen Ui\b/g, 'Gen UI'],
|
|
11
12
|
[/\bM C P\b/g, 'MCP'],
|
|
12
13
|
[/\bOtel\b/g, 'OTEL'],
|
|
13
|
-
[/\
|
|
14
|
+
[/\bAgentspecs\b/g, 'Agent Specifications'],
|
|
15
|
+
// The document editor is Lexical underneath; the examples are about the
|
|
16
|
+
// document.
|
|
17
|
+
[/\bLexical\b/g, 'Document'],
|
|
14
18
|
];
|
|
15
19
|
function humanizeExampleName(name) {
|
|
16
20
|
let result = name
|
|
@@ -31,10 +35,12 @@ function inferTags(id) {
|
|
|
31
35
|
tags.add('ag-ui');
|
|
32
36
|
if (id.startsWith('A2Ui'))
|
|
33
37
|
tags.add('a2ui');
|
|
38
|
+
if (id.startsWith('AgentA2A'))
|
|
39
|
+
tags.add('a2a');
|
|
34
40
|
if (id.includes('Notebook'))
|
|
35
41
|
tags.add('notebook');
|
|
36
|
-
if (id.includes('Lexical'))
|
|
37
|
-
tags.add('
|
|
42
|
+
if (id.includes('Lexical') || id.includes('Document'))
|
|
43
|
+
tags.add('document');
|
|
38
44
|
if (id.includes('Chat'))
|
|
39
45
|
tags.add('chat');
|
|
40
46
|
if (id.includes('Sandbox'))
|
|
@@ -68,6 +74,7 @@ export const EXAMPLE_ENTRIES = [
|
|
|
68
74
|
makeEntry('A2UiContactCardExample', () => import('./A2UiContactCardExample'), 'A2UI example rendering contact card interactions.'),
|
|
69
75
|
makeEntry('A2UiRestaurantExample', () => import('./A2UiRestaurantExample'), 'A2UI restaurant flow example.'),
|
|
70
76
|
makeEntry('A2UiViewerExample', () => import('./A2UiViewerExample'), 'A2UI viewer integration example.'),
|
|
77
|
+
makeEntry('A2UiJupyterOutputExample', () => import('./A2UiJupyterOutputExample'), 'One Jupyter execution shown twice: raw kernel outputs, and the A2UI surface the server converter makes of them.'),
|
|
71
78
|
makeEntry('A2UiAgentExample', () => import('./A2UiAgentExample'), 'A2UI Agent with built-in chat component and Python A2UI extension surface.'),
|
|
72
79
|
makeEntry('AgUiAgenticExample', () => import('./AgUiAgenticExample'), 'AG-UI agentic workflow example.'),
|
|
73
80
|
makeEntry('AgUiBackendToolRenderingExample', () => import('./AgUiBackendToolRenderingExample'), 'AG-UI backend tool rendering example.'),
|
|
@@ -76,11 +83,14 @@ export const EXAMPLE_ENTRIES = [
|
|
|
76
83
|
makeEntry('AgUiSharedStateExample', () => import('./AgUiSharedStateExample'), 'AG-UI shared state synchronization example.'),
|
|
77
84
|
makeEntry('AgUiToolsBasedGenUiExample', () => import('./AgUiToolsBasedGenUiExample'), 'AG-UI tool-based generative UI example.'),
|
|
78
85
|
makeEntry('AgentspecsExample', () => import('./AgentspecsExample'), 'Configure and run agents from specs and transports.'),
|
|
86
|
+
makeEntry('NotebookPageAgent', () => import('./NotebookPageAgent'), 'A notebook as a page: floating prompt on top, a team of agents working in it.'),
|
|
87
|
+
makeEntry('DocumentPageAgent', () => import('./DocumentPageAgent'), 'A document as a page: floating prompt on top, an agent writing in it.'),
|
|
88
|
+
makeEntry('DecksAgent', () => import('./DecksAgent'), 'A deck beside the chat: the decks plugin in a Loop, and an agent that writes presentations as data.'),
|
|
79
89
|
makeEntry('CellExample', () => import('./CellExample'), 'Simple cell example.'),
|
|
80
90
|
makeEntry('ChatCustomExample', () => import('./ChatCustomExample'), 'Custom chat experience composition example.'),
|
|
81
91
|
makeEntry('ChatExample', () => import('./ChatExample'), 'Baseline chat integration example.'),
|
|
82
92
|
makeEntry('ChatStandaloneExample', () => import('./ChatStandaloneExample'), 'Standalone chat component usage example.'),
|
|
83
|
-
makeEntry('CopilotKitLexicalExample', () => import('./CopilotKitLexicalExample'), 'CopilotKit integration with
|
|
93
|
+
makeEntry('CopilotKitLexicalExample', () => import('./CopilotKitLexicalExample'), 'CopilotKit integration with the document editor.'),
|
|
84
94
|
makeEntry('CopilotKitNotebookExample', () => import('./CopilotKitNotebookExample'), 'CopilotKit integration with notebook workflows.'),
|
|
85
95
|
makeEntry('AgentCheckpointsExample', () => import('./AgentCheckpointsExample'), 'Checkpoint and resume lifecycle for agents.'),
|
|
86
96
|
makeEntry('AgentCompactionExample', () => import('./AgentCompactionExample'), 'Set a context token budget and watch history compaction summarize older messages, with live from/to token and timing details.', ['example', 'agent', 'compaction', 'context', 'tokens']),
|
|
@@ -90,6 +100,15 @@ export const EXAMPLE_ENTRIES = [
|
|
|
90
100
|
makeEntry('AgentGuardrailsExample', () => import('./AgentGuardrailsExample'), 'Guardrails and safety checks for agent runs.'),
|
|
91
101
|
makeEntry('AgentHooksExample', () => import('./AgentHooksExample'), 'Pre-hooks and post-hooks lifecycle execution example.'),
|
|
92
102
|
makeEntry('AgentInferenceProviderExample', () => import('./AgentInferenceProviderExample'), 'Switch local and datalayer inference providers with live low-level provider events.', ['example', 'agent', 'inference', 'provider', 'runtime']),
|
|
103
|
+
makeEntry('LoopWorkspaceExample', () => import('./LoopWorkspaceExample'), 'The LOOP workspace: a blank shell, with the chat, the editors and the plugin list all contributed as plugins.',
|
|
104
|
+
// `owns-sandbox-control`: this example brings its own sandbox switch, so
|
|
105
|
+
// the shell hides the one in its header rather than showing two controls
|
|
106
|
+
// for one sandbox — and a second one that would not agree with the first.
|
|
107
|
+
['example', 'loop', 'workspace', 'sandbox', 'owns-sandbox-control']),
|
|
108
|
+
makeEntry('LoopShellExample', () => import('./LoopShellExample'), 'The Loop shell at its most naked: a blank canvas, a floating draggable prompt, and an editor selector in the corner — none, notebook or document.',
|
|
109
|
+
// `owns-sandbox-control`: the shell is pinned to the browser sandbox, so
|
|
110
|
+
// the page's selector would offer three targets it cannot move to.
|
|
111
|
+
['example', 'loop', 'shell', 'prompt', 'editors', 'owns-sandbox-control']),
|
|
93
112
|
makeEntry('AgentLoopExample', () => import('./AgentLoopExample'), 'Define and launch an agent execution loop (observe/think/act/evaluate) over a live notebook, driven by generic loop specs.', ['example', 'agent', 'loop', 'notebook', 'agentspecs']),
|
|
94
113
|
makeEntry('AgentToolApprovalsExample', () => import('./AgentToolApprovalsExample'), 'Tool approval workflows and manual decisions.'),
|
|
95
114
|
makeEntry('AgentMemoryExample', () => import('./AgentMemoryExample'), 'Memory-aware conversation and retrieval example.'),
|
|
@@ -99,12 +118,13 @@ export const EXAMPLE_ENTRIES = [
|
|
|
99
118
|
makeEntry('AgentCodeSandboxExample', () => import('./AgentCodeSandboxExample'), 'Sandbox execution variants and context controls.'),
|
|
100
119
|
makeEntry('AgentMonitoringExample', () => import('./AgentMonitoringExample'), 'Runtime monitoring and live metrics example.'),
|
|
101
120
|
makeEntry('AgentSubagentsExample', () => import('./AgentSubagentsExample'), 'Multi-agent delegation with the in-repo subagents capability.'),
|
|
121
|
+
makeEntry('AgentA2AExample', () => import('./AgentA2AExample'), 'Delegation to separate agents over the A2A protocol, launched locally or on Datalayer runtimes.'),
|
|
102
122
|
makeEntry('AgentNotificationsExample', () => import('./AgentNotificationsExample'), 'Notifications and event routing example.'),
|
|
103
123
|
makeEntry('AgentOutputsExample', () => import('./AgentOutputsExample'), 'Structured outputs and rendering patterns.'),
|
|
104
124
|
makeEntry('AgentParametersExample', () => import('./AgentParametersExample'), 'Launch-time parameterized agent creation with JSON schema.'),
|
|
105
125
|
makeEntry('AgentTriggersExample', () => import('./AgentTriggersExample'), 'Scheduled and one-shot trigger flows.'),
|
|
106
|
-
makeEntry('LexicalAgentExample', () => import('./LexicalAgentExample'), '
|
|
107
|
-
makeEntry('LexicalAgentSidebarExample', () => import('./LexicalAgentSidebarExample'), '
|
|
126
|
+
makeEntry('LexicalAgentExample', () => import('./LexicalAgentExample'), 'Document agent integration example.'),
|
|
127
|
+
makeEntry('LexicalAgentSidebarExample', () => import('./LexicalAgentSidebarExample'), 'Document agent with sidebar orchestration example.'),
|
|
108
128
|
makeEntry('NotebookAgentExample', () => import('./NotebookAgentExample'), 'Notebook orchestration and runtime example.'),
|
|
109
129
|
makeEntry('NotebookAgentSidebarExample', () => import('./NotebookAgentSidebarExample'), 'Notebook plus sidebar controls example.'),
|
|
110
130
|
makeEntry('NotebookExample', () => import('./NotebookExample'), 'Minimal notebook integration example.'),
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import type { AgentConfig } from '../../types/config';
|
|
2
|
+
export interface UseCreateAgentOnceOptions {
|
|
3
|
+
/** Whether there is anything to attempt. */
|
|
4
|
+
enabled: boolean;
|
|
5
|
+
/**
|
|
6
|
+
* Whether *this* agent already exists, which makes the attempt moot.
|
|
7
|
+
*
|
|
8
|
+
* A boolean rather than an id, because the caller is the only one who can
|
|
9
|
+
* answer it. The runtime state is a shared singleton that the shell writes
|
|
10
|
+
* to as well: on the cloud target it launches a runtime and registers an
|
|
11
|
+
* agent of its own before an example mounts. Skipping on "some agent id is
|
|
12
|
+
* set" therefore skipped creating the example's agent because somebody
|
|
13
|
+
* else's was already there — and every message then came back "No agent
|
|
14
|
+
* registered for this ID".
|
|
15
|
+
*/
|
|
16
|
+
alreadyCreated?: boolean;
|
|
17
|
+
createAgent: (config: AgentConfig) => Promise<AgentCreated>;
|
|
18
|
+
config: AgentConfig;
|
|
19
|
+
}
|
|
20
|
+
/** What creating an agent gives back. */
|
|
21
|
+
export type AgentCreated = {
|
|
22
|
+
agentId?: string;
|
|
23
|
+
endpoint?: string;
|
|
24
|
+
isReady?: boolean;
|
|
25
|
+
};
|
|
26
|
+
export interface UseCreateAgentOnceResult {
|
|
27
|
+
/** Whether the single attempt has been made. */
|
|
28
|
+
attempted: boolean;
|
|
29
|
+
/**
|
|
30
|
+
* The agent this hook created, once the call has returned.
|
|
31
|
+
*
|
|
32
|
+
* The trustworthy signal that the agent exists: it is the answer to our own
|
|
33
|
+
* request, rather than a read of state anything else can overwrite.
|
|
34
|
+
*/
|
|
35
|
+
created?: AgentCreated;
|
|
36
|
+
/** Why it failed, when it did. Reported, never retried. */
|
|
37
|
+
error?: string;
|
|
38
|
+
}
|
|
39
|
+
/** Create an agent at most once. */
|
|
40
|
+
export declare function useCreateAgentOnce(options: UseCreateAgentOnceOptions): UseCreateAgentOnceResult;
|
|
41
|
+
export default useCreateAgentOnce;
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright (c) 2025-2026 Datalayer, Inc.
|
|
3
|
+
* Distributed under the terms of the Modified BSD License.
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* Ask for something once, and stop.
|
|
7
|
+
*
|
|
8
|
+
* Its own module because "attempt exactly once, and if it fails say why rather
|
|
9
|
+
* than try again" is a policy, and it was the missing one. Five examples each
|
|
10
|
+
* ended their creation attempt with `.catch(() => setCreateRequested(false))`
|
|
11
|
+
* while the effect making the attempt listed `createRequested` among its
|
|
12
|
+
* dependencies — so a failure re-armed the effect. With an unreachable sandbox
|
|
13
|
+
* the examples app posted `/api/v1/agents` as fast as the server could return
|
|
14
|
+
* 503, and the page looked like it was reloading without end.
|
|
15
|
+
*
|
|
16
|
+
* A `useState` guard cleared in a `.catch` is not a guard; it is a retry loop
|
|
17
|
+
* with extra steps.
|
|
18
|
+
*
|
|
19
|
+
* @module examples/hooks/useCreateAgentOnce
|
|
20
|
+
*/
|
|
21
|
+
import { useEffect, useRef, useState } from 'react';
|
|
22
|
+
/** Create an agent at most once. */
|
|
23
|
+
export function useCreateAgentOnce(options) {
|
|
24
|
+
const { enabled, alreadyCreated, createAgent, config } = options;
|
|
25
|
+
const [attempted, setAttempted] = useState(false);
|
|
26
|
+
const [created, setCreated] = useState();
|
|
27
|
+
const [error, setError] = useState();
|
|
28
|
+
// A ref, not state: the effect must not depend on a value its own failure
|
|
29
|
+
// path writes, or the failure re-arms it.
|
|
30
|
+
const attemptedRef = useRef(false);
|
|
31
|
+
// Read at attempt time rather than depended upon, so a caller that rebuilds
|
|
32
|
+
// its config object on every render cannot provoke a second attempt.
|
|
33
|
+
const configRef = useRef(config);
|
|
34
|
+
configRef.current = config;
|
|
35
|
+
useEffect(() => {
|
|
36
|
+
if (attemptedRef.current || alreadyCreated || !enabled) {
|
|
37
|
+
return;
|
|
38
|
+
}
|
|
39
|
+
attemptedRef.current = true;
|
|
40
|
+
setAttempted(true);
|
|
41
|
+
void createAgent(configRef.current)
|
|
42
|
+
.then(setCreated)
|
|
43
|
+
.catch((reason) => {
|
|
44
|
+
// Recorded, never retried: `attemptedRef` is not cleared here, which
|
|
45
|
+
// is the whole of the fix.
|
|
46
|
+
setError(reason instanceof Error ? reason.message : String(reason));
|
|
47
|
+
});
|
|
48
|
+
}, [alreadyCreated, createAgent, enabled]);
|
|
49
|
+
return { attempted, created, error };
|
|
50
|
+
}
|
|
51
|
+
export default useCreateAgentOnce;
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import type { ProtocolConfig } from '../../types/protocol';
|
|
2
|
+
import type { FrontendToolDefinition } from '../../types/tools';
|
|
3
|
+
/** Why a browser agent is unusable when it is. */
|
|
4
|
+
export declare const BROWSER_SIGN_IN_REASON: string;
|
|
5
|
+
export interface UseExampleAgentProtocolOptions {
|
|
6
|
+
/** Whether the loop turns in this page. */
|
|
7
|
+
inBrowser: boolean;
|
|
8
|
+
/** The agent's name, which is also its id on a runtime. */
|
|
9
|
+
agentName: string;
|
|
10
|
+
/** The agent's instructions, for the in-page harness to run with. */
|
|
11
|
+
systemPrompt?: string;
|
|
12
|
+
/** The model id, as a spec spells it. */
|
|
13
|
+
model?: string;
|
|
14
|
+
/** The tools the agent may call in this page, if any. */
|
|
15
|
+
frontendTools?: FrontendToolDefinition[];
|
|
16
|
+
/** Base URL of the agent's runtime, for the remote case. */
|
|
17
|
+
remoteBaseUrl?: string;
|
|
18
|
+
}
|
|
19
|
+
export interface UseExampleAgentProtocolResult {
|
|
20
|
+
protocol: ProtocolConfig;
|
|
21
|
+
/**
|
|
22
|
+
* The tools to pass the chat component — which is not always the tools.
|
|
23
|
+
*
|
|
24
|
+
* Against a runtime the chat runs frontend tools itself: a `tool-call`
|
|
25
|
+
* arrives over the wire and it answers with the result. In the browser the
|
|
26
|
+
* SDK owns the loop and calls the handlers directly, so handing them to the
|
|
27
|
+
* chat as well would run every tool twice.
|
|
28
|
+
*/
|
|
29
|
+
chatFrontendTools?: FrontendToolDefinition[];
|
|
30
|
+
/** Whether the in-page agent is unusable for want of a sign-in. */
|
|
31
|
+
needsSignIn: boolean;
|
|
32
|
+
}
|
|
33
|
+
/** The protocol config for this example, and who should run its tools. */
|
|
34
|
+
export declare function useExampleAgentProtocol(options: UseExampleAgentProtocolOptions): UseExampleAgentProtocolResult;
|
|
35
|
+
export default useExampleAgentProtocol;
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright (c) 2025-2026 Datalayer, Inc.
|
|
3
|
+
* Distributed under the terms of the Modified BSD License.
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* What to give a chat, chosen by where the loop turns.
|
|
7
|
+
*
|
|
8
|
+
* Extracted from `useExampleJupyterAgent` when it turned out that the choice
|
|
9
|
+
* has nothing to do with notebooks. `ChatExample` has no sandbox, no tools and
|
|
10
|
+
* no surface — it is a conversation and nothing else — and it still has to
|
|
11
|
+
* make the same decision the moment someone selects Browser in the runtime
|
|
12
|
+
* control.
|
|
13
|
+
*
|
|
14
|
+
* Remotely the chat speaks the Vercel AI wire protocol to an agent's endpoint.
|
|
15
|
+
* In the browser it speaks to the in-page harness, and carries the prompt and
|
|
16
|
+
* the tools rather than a URL.
|
|
17
|
+
*
|
|
18
|
+
* @module examples/hooks/useExampleAgentProtocol
|
|
19
|
+
*/
|
|
20
|
+
import { useMemo } from 'react';
|
|
21
|
+
import { browserProtocolConfig } from '../../runtimes/browser';
|
|
22
|
+
import { useBrowserInference } from '../../hooks/useBrowserInference';
|
|
23
|
+
/** Why a browser agent is unusable when it is. */
|
|
24
|
+
export const BROWSER_SIGN_IN_REASON = 'Sign in to use this agent. The loop runs in your browser and needs no ' +
|
|
25
|
+
'runtime, but the model it asks is reached through the Datalayer inference ' +
|
|
26
|
+
'service, which answers to signed-in members only.';
|
|
27
|
+
/** The protocol config for this example, and who should run its tools. */
|
|
28
|
+
export function useExampleAgentProtocol(options) {
|
|
29
|
+
const { inBrowser, agentName, systemPrompt, model, frontendTools, remoteBaseUrl, } = options;
|
|
30
|
+
/* Only an in-page agent spends the visitor's trial key. A server-backed one
|
|
31
|
+
authenticates itself, and starting a clock against a conversation that
|
|
32
|
+
will never use it is a countdown on nothing. */
|
|
33
|
+
const { inference, needsSignIn } = useBrowserInference(inBrowser);
|
|
34
|
+
const protocol = useMemo(() => inBrowser
|
|
35
|
+
? browserProtocolConfig({
|
|
36
|
+
agentId: agentName,
|
|
37
|
+
instructions: systemPrompt,
|
|
38
|
+
model,
|
|
39
|
+
frontendTools,
|
|
40
|
+
inference,
|
|
41
|
+
})
|
|
42
|
+
: {
|
|
43
|
+
type: 'vercel-ai',
|
|
44
|
+
endpoint: `${remoteBaseUrl}/api/v1/vercel-ai/${agentName}`,
|
|
45
|
+
agentId: agentName,
|
|
46
|
+
enableConfigQuery: true,
|
|
47
|
+
configEndpoint: `${remoteBaseUrl}/api/v1/configure`,
|
|
48
|
+
}, [
|
|
49
|
+
agentName,
|
|
50
|
+
frontendTools,
|
|
51
|
+
inBrowser,
|
|
52
|
+
inference,
|
|
53
|
+
model,
|
|
54
|
+
remoteBaseUrl,
|
|
55
|
+
systemPrompt,
|
|
56
|
+
]);
|
|
57
|
+
return {
|
|
58
|
+
protocol,
|
|
59
|
+
chatFrontendTools: inBrowser ? undefined : frontendTools,
|
|
60
|
+
needsSignIn: inBrowser && needsSignIn,
|
|
61
|
+
};
|
|
62
|
+
}
|
|
63
|
+
export default useExampleAgentProtocol;
|
|
@@ -1,35 +1,35 @@
|
|
|
1
|
+
import type { UseAgentReturn } from '../../hooks/useAgentRuntimes';
|
|
1
2
|
import type { AgentConfig } from '../../types/config';
|
|
2
|
-
|
|
3
|
+
import { type ExampleRuntimeTarget } from '../utils/runtimeTargetStore';
|
|
4
|
+
export interface UseExampleAgentRuntimeOptions {
|
|
3
5
|
exampleId: string;
|
|
4
6
|
agentName: string;
|
|
5
7
|
specId?: string;
|
|
6
|
-
environmentName?: string;
|
|
7
8
|
autoStart?: boolean;
|
|
8
9
|
autoCreateAgent?: boolean;
|
|
9
10
|
agentConfig?: AgentConfig;
|
|
10
11
|
}
|
|
11
|
-
interface UseExampleAgentRuntimeResult {
|
|
12
|
-
location:
|
|
12
|
+
export interface UseExampleAgentRuntimeResult extends UseAgentReturn {
|
|
13
|
+
location: ExampleRuntimeTarget;
|
|
13
14
|
baseUrl: string;
|
|
14
15
|
agentId?: string;
|
|
15
16
|
agentBaseUrl?: string;
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
error: string | null;
|
|
19
|
-
createAgent: (config?: AgentConfig) => Promise<{
|
|
20
|
-
agentId?: string;
|
|
21
|
-
endpoint?: string;
|
|
22
|
-
isReady?: boolean;
|
|
23
|
-
}>;
|
|
17
|
+
/** Whether an agent runs on the current target at all. */
|
|
18
|
+
hasAgent: boolean;
|
|
24
19
|
/**
|
|
25
|
-
*
|
|
26
|
-
*
|
|
20
|
+
* What to spread onto a `ChatBase` so it shows itself switched off, with the
|
|
21
|
+
* reason, wherever there is no agent to talk to.
|
|
22
|
+
*
|
|
23
|
+
* Computed here so no example has to know which targets have agents — the
|
|
24
|
+
* question is about the target, and the target is the shell's business.
|
|
27
25
|
*/
|
|
28
|
-
|
|
26
|
+
chatGate: {
|
|
27
|
+
disabled: boolean;
|
|
28
|
+
disableReason?: string;
|
|
29
|
+
};
|
|
29
30
|
}
|
|
30
31
|
/**
|
|
31
32
|
* Connects examples to agent runtimes through shared hooks and supports
|
|
32
33
|
* both local and cloud execution modes.
|
|
33
34
|
*/
|
|
34
35
|
export declare function useExampleAgentRuntime(options: UseExampleAgentRuntimeOptions): UseExampleAgentRuntimeResult;
|
|
35
|
-
export {};
|
|
@@ -3,44 +3,38 @@
|
|
|
3
3
|
* Distributed under the terms of the Modified BSD License.
|
|
4
4
|
*/
|
|
5
5
|
import { useEffect, useMemo } from 'react';
|
|
6
|
-
import {
|
|
7
|
-
import { useExampleAgentRuntimesUrl } from '../utils/useExampleAgentRuntimesUrl';
|
|
8
|
-
import { useRuntimeTargetStore } from '../utils/runtimeTargetStore';
|
|
6
|
+
import { runtimeTargetCapabilities, useRuntimeTargetStore, } from '../utils/runtimeTargetStore';
|
|
9
7
|
import { agentSummaryStore } from '../utils/agentSummaryStore';
|
|
8
|
+
import { useExampleAgentRuntimes } from './useExampleAgentRuntimes';
|
|
9
|
+
import { harnessOf, SPEC_HARNESS_BY_HARNESS } from '../../runtimes/variants';
|
|
10
10
|
/**
|
|
11
11
|
* Connects examples to agent runtimes through shared hooks and supports
|
|
12
12
|
* both local and cloud execution modes.
|
|
13
13
|
*/
|
|
14
14
|
export function useExampleAgentRuntime(options) {
|
|
15
|
-
const { exampleId, agentName, specId,
|
|
15
|
+
const { exampleId, agentName, specId, autoStart = true, autoCreateAgent = true, agentConfig, } = options;
|
|
16
16
|
const location = useRuntimeTargetStore(state => state.target);
|
|
17
|
-
const
|
|
18
|
-
const isCloud = location === '
|
|
17
|
+
const capabilities = runtimeTargetCapabilities(location);
|
|
18
|
+
const isCloud = location === 'datalayer';
|
|
19
19
|
const combinedConfig = useMemo(() => ({
|
|
20
20
|
name: agentName,
|
|
21
21
|
agentSpecId: specId,
|
|
22
22
|
...agentConfig,
|
|
23
23
|
}), [agentName, specId, agentConfig]);
|
|
24
|
-
const
|
|
25
|
-
agentSpecId:
|
|
24
|
+
const result = useExampleAgentRuntimes({
|
|
25
|
+
agentSpecId: specId,
|
|
26
26
|
autoCreateAgent,
|
|
27
|
-
autoStart
|
|
28
|
-
runtimeCreationTarget: isCloud
|
|
29
|
-
? 'backend-services'
|
|
30
|
-
: 'local-agent-runtimes',
|
|
31
|
-
runtimeCreationBaseUrl: isCloud ? undefined : baseUrl,
|
|
27
|
+
autoStart,
|
|
32
28
|
agentConfig: combinedConfig,
|
|
33
29
|
});
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
});
|
|
43
|
-
}, [isCloud, connectToRuntime, agentName, environmentName, baseUrl]);
|
|
30
|
+
const { runtime, status, isReady, error, variant } = result;
|
|
31
|
+
// The harness reported is the one actually turning the loop, read off the
|
|
32
|
+
// variant rather than off the spec: a spec states what it needs, and this
|
|
33
|
+
// says what it got.
|
|
34
|
+
const harness = SPEC_HARNESS_BY_HARNESS[harnessOf(variant)];
|
|
35
|
+
const baseUrl = isCloud
|
|
36
|
+
? runtime?.agentBaseUrl || result.runtimeCreationBaseUrl
|
|
37
|
+
: result.runtimeCreationBaseUrl;
|
|
44
38
|
useEffect(() => {
|
|
45
39
|
// Agent status and code sandbox status are both reported by the
|
|
46
40
|
// agent-runtimes API server. For local runs that server is `baseUrl`
|
|
@@ -55,6 +49,8 @@ export function useExampleAgentRuntime(options) {
|
|
|
55
49
|
agentName,
|
|
56
50
|
agentId: runtime?.agentId,
|
|
57
51
|
specId,
|
|
52
|
+
harness,
|
|
53
|
+
variant,
|
|
58
54
|
location,
|
|
59
55
|
baseUrl: agentApiBaseUrl,
|
|
60
56
|
sandboxBaseUrl: runtime?.agentBaseUrl,
|
|
@@ -71,6 +67,8 @@ export function useExampleAgentRuntime(options) {
|
|
|
71
67
|
runtime?.agentId,
|
|
72
68
|
runtime?.agentBaseUrl,
|
|
73
69
|
specId,
|
|
70
|
+
harness,
|
|
71
|
+
variant,
|
|
74
72
|
location,
|
|
75
73
|
baseUrl,
|
|
76
74
|
isCloud,
|
|
@@ -79,14 +77,17 @@ export function useExampleAgentRuntime(options) {
|
|
|
79
77
|
error,
|
|
80
78
|
]);
|
|
81
79
|
return {
|
|
80
|
+
...result,
|
|
82
81
|
location,
|
|
83
82
|
baseUrl,
|
|
84
83
|
agentId: runtime?.agentId,
|
|
85
84
|
agentBaseUrl: runtime?.agentBaseUrl,
|
|
85
|
+
hasAgent: capabilities.hasAgent,
|
|
86
|
+
chatGate: capabilities.hasAgent
|
|
87
|
+
? { disabled: false }
|
|
88
|
+
: { disabled: true, disableReason: capabilities.noAgentReason },
|
|
86
89
|
status,
|
|
87
90
|
isReady,
|
|
88
91
|
error,
|
|
89
|
-
createAgent,
|
|
90
|
-
teardown,
|
|
91
92
|
};
|
|
92
93
|
}
|
|
@@ -3,80 +3,64 @@
|
|
|
3
3
|
* Distributed under the terms of the Modified BSD License.
|
|
4
4
|
*/
|
|
5
5
|
import { useAgentRuntimes, } from '../../hooks/useAgentRuntimes';
|
|
6
|
-
import {
|
|
7
|
-
import { useRuntimeTargetStore } from '../utils/runtimeTargetStore';
|
|
6
|
+
import { useMemo } from 'react';
|
|
7
|
+
import { runtimeTargetCapabilities, useRuntimeTargetStore, } from '../utils/runtimeTargetStore';
|
|
8
8
|
import { useExampleAgentRuntimesUrl } from '../utils/useExampleAgentRuntimesUrl';
|
|
9
|
+
import { locationOf, toAgentRuntimeVariant, variantForLocation, } from '../../runtimes/variants';
|
|
9
10
|
/**
|
|
10
11
|
* High-level examples hook that applies the shared Local/Cloud runtime target
|
|
11
12
|
* defaults while preserving explicit overrides from individual examples.
|
|
12
13
|
*/
|
|
13
14
|
export function useExampleAgentRuntimes(options) {
|
|
14
15
|
const runtimeTarget = useRuntimeTargetStore(state => state.target);
|
|
16
|
+
const capabilities = runtimeTargetCapabilities(runtimeTarget);
|
|
15
17
|
const localRuntimeBaseUrl = useExampleAgentRuntimesUrl();
|
|
16
|
-
|
|
17
|
-
|
|
18
|
+
// The examples' four targets collapse to two runtimes: only `datalayer` is
|
|
19
|
+
// the cloud one. `variant` is what the hook speaks now, so the summary and
|
|
20
|
+
// the chat can name what is actually running rather than infer it.
|
|
21
|
+
const variant = toAgentRuntimeVariant(options.variant ??
|
|
22
|
+
options.runtimeCreationTarget ??
|
|
23
|
+
(runtimeTarget === 'browser'
|
|
24
|
+
? // The browser turns its own loop, whatever a spec's `harness` says:
|
|
25
|
+
// there is no server here to run anything else.
|
|
26
|
+
variantForLocation('browser')
|
|
27
|
+
: runtimeTarget === 'datalayer'
|
|
28
|
+
? 'backend-services'
|
|
29
|
+
: 'local-agent-runtimes'));
|
|
30
|
+
const isLocal = locationOf(variant) === 'local';
|
|
18
31
|
const runtimeCreationBaseUrl = options.runtimeCreationBaseUrl ??
|
|
19
|
-
(
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
const
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
const bootstrapAttemptKeyRef = useRef(null);
|
|
30
|
-
const fallbackPodName = useMemo(() => {
|
|
31
|
-
const configuredName = typeof options.agentConfig?.name === 'string'
|
|
32
|
-
? options.agentConfig.name.trim()
|
|
33
|
-
: '';
|
|
34
|
-
if (configuredName) {
|
|
35
|
-
return configuredName;
|
|
36
|
-
}
|
|
37
|
-
const configuredSpecId = typeof options.agentSpecId === 'string' ? options.agentSpecId.trim() : '';
|
|
38
|
-
if (configuredSpecId) {
|
|
39
|
-
return configuredSpecId;
|
|
40
|
-
}
|
|
41
|
-
return 'example-agent-runtime';
|
|
32
|
+
(isLocal ? localRuntimeBaseUrl : undefined);
|
|
33
|
+
// Two of the four targets are a sandbox and nothing else. Launching an agent
|
|
34
|
+
// there would call a service that is not running, so the hook simply does
|
|
35
|
+
// not — and `useExampleAgentRuntime` reports why, for the chat to show.
|
|
36
|
+
const autoStart = capabilities.hasAgent
|
|
37
|
+
? (options.autoStart ?? !isLocal)
|
|
38
|
+
: false;
|
|
39
|
+
const fallbackRuntimeName = useMemo(() => {
|
|
40
|
+
const configuredName = options.agentConfig?.name?.trim();
|
|
41
|
+
return (configuredName || options.agentSpecId?.trim() || 'example-agent-runtime');
|
|
42
42
|
}, [options.agentConfig?.name, options.agentSpecId]);
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
if (bootstrapAttemptKeyRef.current === bootstrapKey) {
|
|
49
|
-
return;
|
|
50
|
-
}
|
|
51
|
-
if (runtimeCreationTarget === 'local-agent-runtimes') {
|
|
52
|
-
bootstrapAttemptKeyRef.current = bootstrapKey;
|
|
53
|
-
result.connectToRuntime({
|
|
54
|
-
podName: fallbackPodName,
|
|
55
|
-
environmentName: 'local-agent-runtimes',
|
|
56
|
-
jupyterBaseUrl: runtimeCreationBaseUrl,
|
|
57
|
-
});
|
|
58
|
-
return;
|
|
43
|
+
const runtimeConnection = useMemo(() => isLocal
|
|
44
|
+
? {
|
|
45
|
+
runtimeName: fallbackRuntimeName,
|
|
46
|
+
environmentName: 'local-agent-runtimes',
|
|
47
|
+
jupyterBaseUrl: runtimeCreationBaseUrl,
|
|
59
48
|
}
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
bootstrapAttemptKeyRef.current = null;
|
|
66
|
-
});
|
|
49
|
+
: undefined, [fallbackRuntimeName, runtimeCreationBaseUrl, isLocal]);
|
|
50
|
+
const agentConfig = useMemo(() => isLocal && options.agentSpecId
|
|
51
|
+
? {
|
|
52
|
+
...options.agentConfig,
|
|
53
|
+
agentSpecId: options.agentConfig?.agentSpecId ?? options.agentSpecId,
|
|
67
54
|
}
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
55
|
+
: options.agentConfig, [options.agentConfig, options.agentSpecId, isLocal]);
|
|
56
|
+
return useAgentRuntimes({
|
|
57
|
+
...options,
|
|
58
|
+
agentConfig,
|
|
59
|
+
variant,
|
|
71
60
|
runtimeCreationBaseUrl,
|
|
72
|
-
fallbackPodName,
|
|
73
61
|
autoStart,
|
|
74
|
-
options.
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
result.connectToRuntime,
|
|
78
|
-
result.launchRuntime,
|
|
79
|
-
]);
|
|
80
|
-
return result;
|
|
62
|
+
autoCreateAgent: capabilities.hasAgent ? options.autoCreateAgent : false,
|
|
63
|
+
runtimeConnection: options.runtimeConnection ?? runtimeConnection,
|
|
64
|
+
});
|
|
81
65
|
}
|
|
82
66
|
export default useExampleAgentRuntimes;
|