@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
|
@@ -24,11 +24,31 @@ import { parseAgentStreamMessage, } from '../types/stream';
|
|
|
24
24
|
import { DEFAULT_AGENT_CONFIG } from '../types/config';
|
|
25
25
|
import { ServiceManager } from '@jupyterlab/services/lib/manager';
|
|
26
26
|
import { disposeSandboxServiceManagers } from '../services/sandboxServiceManagers';
|
|
27
|
+
import { runtimeUrl, runtimesUrl } from '../runtimes/lifecycle';
|
|
28
|
+
import { legacyTargetOf, locationOf, runsInBrowser, toAgentRuntimeVariant, } from '../runtimes/variants';
|
|
27
29
|
// ═══════════════════════════════════════════════════════════════════════════
|
|
28
30
|
// Constants
|
|
29
31
|
// ═══════════════════════════════════════════════════════════════════════════
|
|
30
32
|
/** Stable fallback to avoid new-reference on every render. */
|
|
31
33
|
const EMPTY_RUNTIMES = [];
|
|
34
|
+
/**
|
|
35
|
+
* What a browser agent has instead of a runtime.
|
|
36
|
+
*
|
|
37
|
+
* Every field that names a host is empty because there is no host: the loop
|
|
38
|
+
* runs in this page, so there is no pod, no Jupyter server and no agent
|
|
39
|
+
* service to address. It is ready because nothing has to happen first.
|
|
40
|
+
*
|
|
41
|
+
* Frozen and shared rather than built per call, so a host comparing the value
|
|
42
|
+
* it got back sees the same object each time.
|
|
43
|
+
*/
|
|
44
|
+
const BROWSER_AGENT_CONNECTION = Object.freeze({
|
|
45
|
+
runtimeName: '',
|
|
46
|
+
environmentName: '',
|
|
47
|
+
jupyterBaseUrl: '',
|
|
48
|
+
agentBaseUrl: '',
|
|
49
|
+
status: 'ready',
|
|
50
|
+
isReady: true,
|
|
51
|
+
});
|
|
32
52
|
/** Default query options for all agent runtime queries. */
|
|
33
53
|
export const AGENT_QUERY_OPTIONS = {
|
|
34
54
|
staleTime: 5 * 60 * 1000, // 5 minutes
|
|
@@ -40,7 +60,7 @@ export const agentQueryKeys = {
|
|
|
40
60
|
all: () => ['agentRuntimes'],
|
|
41
61
|
lists: () => [...agentQueryKeys.agentRuntimes.all(), 'list'],
|
|
42
62
|
details: () => [...agentQueryKeys.agentRuntimes.all(), 'detail'],
|
|
43
|
-
detail: (
|
|
63
|
+
detail: (runtimeName) => [...agentQueryKeys.agentRuntimes.details(), runtimeName],
|
|
44
64
|
},
|
|
45
65
|
checkpoints: {
|
|
46
66
|
all: () => ['checkpoints'],
|
|
@@ -64,12 +84,12 @@ export const agentQueryKeys = {
|
|
|
64
84
|
* forever; resume/create mutations also clear the tombstone eagerly.
|
|
65
85
|
*/
|
|
66
86
|
const DELETED_POD_TOMBSTONE_TTL_MS = 5 * 60 * 1000;
|
|
67
|
-
const
|
|
87
|
+
const deletedRuntimeTombstones = new Map();
|
|
68
88
|
/** Mark a runtime pod as deleted by this client (tombstone). */
|
|
69
|
-
export function
|
|
70
|
-
const normalized = String(
|
|
89
|
+
export function markRuntimeDeleted(runtimeName) {
|
|
90
|
+
const normalized = String(runtimeName || '').trim();
|
|
71
91
|
if (normalized) {
|
|
72
|
-
|
|
92
|
+
deletedRuntimeTombstones.set(normalized, Date.now());
|
|
73
93
|
// Centralized teardown: dispose every ServiceManager any surface opened
|
|
74
94
|
// against this pod's sandbox so their kernelspecs/sessions/users pollers
|
|
75
95
|
// stop immediately instead of waiting for query-cache propagation.
|
|
@@ -77,8 +97,8 @@ export function markRuntimePodDeleted(podName) {
|
|
|
77
97
|
}
|
|
78
98
|
}
|
|
79
99
|
/** Clear a deleted-pod tombstone (pod legitimately exists again). */
|
|
80
|
-
export function
|
|
81
|
-
|
|
100
|
+
export function clearRuntimeDeleted(runtimeName) {
|
|
101
|
+
deletedRuntimeTombstones.delete(String(runtimeName || '').trim());
|
|
82
102
|
}
|
|
83
103
|
/** Statuses that imply a live pod the client would connect to. */
|
|
84
104
|
const LIVE_RUNTIME_STATUSES = new Set([
|
|
@@ -93,13 +113,13 @@ const LIVE_RUNTIME_STATUSES = new Set([
|
|
|
93
113
|
* Checkpoint-synthesised `paused` records pass through (no live pod to poll).
|
|
94
114
|
*/
|
|
95
115
|
function isStaleDeletedRuntime(runtime) {
|
|
96
|
-
const
|
|
97
|
-
const deletedAt =
|
|
116
|
+
const runtimeName = String(runtime?.runtime_name || '').trim();
|
|
117
|
+
const deletedAt = deletedRuntimeTombstones.get(runtimeName);
|
|
98
118
|
if (deletedAt === undefined) {
|
|
99
119
|
return false;
|
|
100
120
|
}
|
|
101
121
|
if (Date.now() - deletedAt > DELETED_POD_TOMBSTONE_TTL_MS) {
|
|
102
|
-
|
|
122
|
+
deletedRuntimeTombstones.delete(runtimeName);
|
|
103
123
|
return false;
|
|
104
124
|
}
|
|
105
125
|
return LIVE_RUNTIME_STATUSES.has(runtime.status);
|
|
@@ -290,14 +310,6 @@ export async function createServiceManagerFromAgentSandbox(info, authToken) {
|
|
|
290
310
|
function toAgentRuntimeData(raw) {
|
|
291
311
|
const status = typeof raw.status === 'string' ? raw.status.toLowerCase() : '';
|
|
292
312
|
const normalizedStatus = RUNTIME_STATUS_MAP[status] ?? 'running';
|
|
293
|
-
const rawVolumeUids = Array.isArray(raw.volume_uids)
|
|
294
|
-
? raw.volume_uids
|
|
295
|
-
: raw.volume_uid
|
|
296
|
-
? [raw.volume_uid]
|
|
297
|
-
: [];
|
|
298
|
-
const volume_uids = rawVolumeUids
|
|
299
|
-
.map((uid) => String(uid || '').trim())
|
|
300
|
-
.filter(Boolean);
|
|
301
313
|
const environment = raw.environment;
|
|
302
314
|
return {
|
|
303
315
|
...raw,
|
|
@@ -310,13 +322,14 @@ function toAgentRuntimeData(raw) {
|
|
|
310
322
|
resources: environment?.resources,
|
|
311
323
|
},
|
|
312
324
|
status: normalizedStatus,
|
|
313
|
-
name: raw.given_name || raw.
|
|
314
|
-
id: raw.
|
|
325
|
+
name: raw.given_name || raw.runtime_name,
|
|
326
|
+
id: raw.runtime_name,
|
|
315
327
|
url: raw.ingress,
|
|
316
328
|
messageCount: 0,
|
|
317
329
|
agent_spec_id: raw.agent_spec_id || undefined,
|
|
318
|
-
|
|
319
|
-
|
|
330
|
+
content_attachments: Array.isArray(raw.content_attachments)
|
|
331
|
+
? raw.content_attachments
|
|
332
|
+
: [],
|
|
320
333
|
};
|
|
321
334
|
}
|
|
322
335
|
// ═══════════════════════════════════════════════════════════════════════════
|
|
@@ -349,7 +362,10 @@ function toAgentRuntimeData(raw) {
|
|
|
349
362
|
* ```
|
|
350
363
|
*/
|
|
351
364
|
export function useAgentRuntimes(options = {}) {
|
|
352
|
-
const { agentSpecId, agentConfig, autoCreateAgent = true, autoStart = false, agentSpec,
|
|
365
|
+
const { agentSpecId, agentConfig, autoCreateAgent = true, autoStart = false, agentSpec, variant: variantOption, runtimeCreationTarget, runtimeCreationBaseUrl, runtimeConnection, } = options;
|
|
366
|
+
// Both vocabularies funnel into one value here, so no branch below has to
|
|
367
|
+
// remember that the old names exist.
|
|
368
|
+
const variant = toAgentRuntimeVariant(variantOption ?? runtimeCreationTarget);
|
|
353
369
|
const { configuration } = useCoreStore();
|
|
354
370
|
// Base store state
|
|
355
371
|
const runtime = useAgentRuntimeConnection();
|
|
@@ -366,29 +382,50 @@ export function useAgentRuntimes(options = {}) {
|
|
|
366
382
|
const [lifecycleError, setLifecycleError] = useState(null);
|
|
367
383
|
const [isCreating, setIsCreating] = useState(false);
|
|
368
384
|
const hasAutoStarted = useRef(false);
|
|
385
|
+
/*
|
|
386
|
+
* Whether the "is one already running?" question has been answered.
|
|
387
|
+
*
|
|
388
|
+
* State rather than a ref: the auto-start effect has to re-run when it
|
|
389
|
+
* flips, and a ref changing does not re-run anything.
|
|
390
|
+
*/
|
|
391
|
+
const [lookedForExisting, setLookedForExisting] = useState(false);
|
|
369
392
|
const hasCreatedAgentRef = useRef(false);
|
|
370
|
-
const
|
|
393
|
+
const lastRuntimeRef = useRef(null);
|
|
371
394
|
const creatingRef = useRef(false);
|
|
372
395
|
const agentConfigRef = useRef(agentConfig);
|
|
373
396
|
agentConfigRef.current = agentConfig;
|
|
374
|
-
//
|
|
375
|
-
|
|
397
|
+
// Specs use the backend lifecycle only when this hook owns a cloud runtime.
|
|
398
|
+
// A local agent-runtimes server is already running, so it remains connect
|
|
399
|
+
// mode even when agent creation references a spec — and a browser agent has
|
|
400
|
+
// no runtime to own at all.
|
|
401
|
+
const hasSpec = !!agentSpecId && locationOf(variant) === 'cloud';
|
|
402
|
+
const runtimeConnectionKey = runtimeConnection
|
|
403
|
+
? [
|
|
404
|
+
runtimeConnection.runtimeName,
|
|
405
|
+
runtimeConnection.environmentName,
|
|
406
|
+
runtimeConnection.jupyterBaseUrl ||
|
|
407
|
+
runtimeConnection.serviceManager?.serverSettings.baseUrl ||
|
|
408
|
+
'',
|
|
409
|
+
runtimeConnection.kernelId || '',
|
|
410
|
+
].join(':')
|
|
411
|
+
: null;
|
|
376
412
|
const resolvedRuntimeCreationBaseUrl = useMemo(() => {
|
|
377
413
|
if (runtimeCreationBaseUrl) {
|
|
378
414
|
return runtimeCreationBaseUrl;
|
|
379
415
|
}
|
|
380
|
-
|
|
416
|
+
// A browser agent reaches no runtime service; the empty string keeps the
|
|
417
|
+
// return shape without naming a host nothing will call.
|
|
418
|
+
if (runsInBrowser(variant)) {
|
|
419
|
+
return '';
|
|
420
|
+
}
|
|
421
|
+
if (locationOf(variant) === 'local') {
|
|
381
422
|
return (import.meta.env.VITE_DATALAYER_AGENT_RUNTIMES_URL ||
|
|
382
423
|
'http://localhost:8765');
|
|
383
424
|
}
|
|
384
425
|
return (configuration?.runtimesUrl ||
|
|
385
426
|
import.meta.env.VITE_DATALAYER_AGENT_RUNTIMES_URL ||
|
|
386
427
|
'https://r1.datalayer.run');
|
|
387
|
-
}, [
|
|
388
|
-
configuration?.runtimesUrl,
|
|
389
|
-
runtimeCreationBaseUrl,
|
|
390
|
-
runtimeCreationTarget,
|
|
391
|
-
]);
|
|
428
|
+
}, [configuration?.runtimesUrl, runtimeCreationBaseUrl, variant]);
|
|
392
429
|
// ─── Auth helpers ─────────────────────────────────────────────────
|
|
393
430
|
const getAuthHeaders = useCallback(async () => {
|
|
394
431
|
try {
|
|
@@ -403,8 +440,34 @@ export function useAgentRuntimes(options = {}) {
|
|
|
403
440
|
return { token: '', aiAgentsUrl: '', runtimesUrl: '' };
|
|
404
441
|
}
|
|
405
442
|
}, [resolvedRuntimeCreationBaseUrl]);
|
|
443
|
+
// ─── Connect to a supplied runtime ─────────────────────────────────
|
|
444
|
+
useEffect(() => {
|
|
445
|
+
if (!runtimeConnection || !runtimeConnectionKey) {
|
|
446
|
+
return;
|
|
447
|
+
}
|
|
448
|
+
const currentConnectionKey = runtime
|
|
449
|
+
? [
|
|
450
|
+
runtime.runtimeName,
|
|
451
|
+
runtime.environmentName,
|
|
452
|
+
runtime.jupyterBaseUrl || '',
|
|
453
|
+
runtime.kernelId || '',
|
|
454
|
+
].join(':')
|
|
455
|
+
: null;
|
|
456
|
+
if (currentConnectionKey === runtimeConnectionKey) {
|
|
457
|
+
return;
|
|
458
|
+
}
|
|
459
|
+
hasCreatedAgentRef.current = false;
|
|
460
|
+
storeConnectAgent(runtimeConnection);
|
|
461
|
+
}, [runtimeConnection, runtimeConnectionKey, runtime, storeConnectAgent]);
|
|
406
462
|
// ─── Launch Runtime ─────────────────────────────────────────────────
|
|
407
463
|
const launchRuntime = useCallback(async (runtimeOptions) => {
|
|
464
|
+
if (runsInBrowser(variant)) {
|
|
465
|
+
// Nothing to launch: the loop runs in this page. Resolving rather than
|
|
466
|
+
// throwing keeps one launch button correct for every variant — a host
|
|
467
|
+
// that calls this because a person pressed the button gets a runtime
|
|
468
|
+
// that is already, truthfully, ready.
|
|
469
|
+
return BROWSER_AGENT_CONNECTION;
|
|
470
|
+
}
|
|
408
471
|
if (hasSpec) {
|
|
409
472
|
setLifecycleStatus('launching');
|
|
410
473
|
setLifecycleError(null);
|
|
@@ -455,6 +518,7 @@ export function useAgentRuntimes(options = {}) {
|
|
|
455
518
|
hasSpec,
|
|
456
519
|
resolvedRuntimeCreationBaseUrl,
|
|
457
520
|
storeLaunchAgent,
|
|
521
|
+
variant,
|
|
458
522
|
]);
|
|
459
523
|
// ─── Create Agent ───────────────────────────────────────────────────
|
|
460
524
|
const createAgent = useCallback(async (config) => {
|
|
@@ -487,7 +551,7 @@ export function useAgentRuntimes(options = {}) {
|
|
|
487
551
|
...config,
|
|
488
552
|
name: config?.name ||
|
|
489
553
|
agentConfig?.name ||
|
|
490
|
-
(hasSpec && agentSpecId ? agentSpecId : runtime?.
|
|
554
|
+
(hasSpec && agentSpecId ? agentSpecId : runtime?.runtimeName),
|
|
491
555
|
};
|
|
492
556
|
return await storeCreateAgent(mergedConfig);
|
|
493
557
|
}
|
|
@@ -562,19 +626,32 @@ export function useAgentRuntimes(options = {}) {
|
|
|
562
626
|
}, [hasSpec, autoCreateAgent, runtime, lifecycleStatus, createAgent]);
|
|
563
627
|
// If runtime pod changes (e.g. after restore), force re-creation on new pod.
|
|
564
628
|
useEffect(() => {
|
|
565
|
-
const
|
|
566
|
-
if (!
|
|
567
|
-
|
|
629
|
+
const currentRuntime = runtime?.runtimeName || null;
|
|
630
|
+
if (!currentRuntime) {
|
|
631
|
+
lastRuntimeRef.current = null;
|
|
568
632
|
return;
|
|
569
633
|
}
|
|
570
|
-
if (
|
|
634
|
+
if (lastRuntimeRef.current && lastRuntimeRef.current !== currentRuntime) {
|
|
571
635
|
hasCreatedAgentRef.current = false;
|
|
572
636
|
}
|
|
573
|
-
|
|
574
|
-
}, [runtime?.
|
|
637
|
+
lastRuntimeRef.current = currentRuntime;
|
|
638
|
+
}, [runtime?.runtimeName]);
|
|
575
639
|
// ─── Bootstrap: connect to existing runtime on initial load ─────────
|
|
576
640
|
useEffect(() => {
|
|
577
|
-
|
|
641
|
+
/*
|
|
642
|
+
* Runs whether or not this host asked for an auto-start.
|
|
643
|
+
*
|
|
644
|
+
* `autoStart` used to short-circuit it, which made looking and launching
|
|
645
|
+
* mutually exclusive when they are meant to be sequential: a host that
|
|
646
|
+
* wanted a runtime always got a *new* one, and an agent for the same spec
|
|
647
|
+
* already running in the cloud was ignored and paid for twice. Switching
|
|
648
|
+
* examples showed it as an error — the launch had not landed yet, and
|
|
649
|
+
* nothing had thought to reuse the runtime that was right there.
|
|
650
|
+
*
|
|
651
|
+
* The auto-start below waits for this to finish, so the order is: look,
|
|
652
|
+
* then launch if there was nothing to find.
|
|
653
|
+
*/
|
|
654
|
+
if (!hasSpec || runtime || lifecycleStatus !== 'idle') {
|
|
578
655
|
return;
|
|
579
656
|
}
|
|
580
657
|
let cancelled = false;
|
|
@@ -603,11 +680,13 @@ export function useAgentRuntimes(options = {}) {
|
|
|
603
680
|
const bTs = Number(b.started_at || 0);
|
|
604
681
|
return bTs - aTs;
|
|
605
682
|
})[0];
|
|
606
|
-
if (cancelled ||
|
|
683
|
+
if (cancelled ||
|
|
684
|
+
!latestRuntime?.runtime_name ||
|
|
685
|
+
!latestRuntime?.ingress) {
|
|
607
686
|
return;
|
|
608
687
|
}
|
|
609
688
|
storeConnectAgent({
|
|
610
|
-
|
|
689
|
+
runtimeName: latestRuntime.runtime_name,
|
|
611
690
|
environmentName: latestRuntime.environment.name,
|
|
612
691
|
jupyterBaseUrl: latestRuntime.ingress,
|
|
613
692
|
});
|
|
@@ -637,6 +716,14 @@ export function useAgentRuntimes(options = {}) {
|
|
|
637
716
|
catch (err) {
|
|
638
717
|
console.warn('[useAgents] Failed to find existing runtime:', err);
|
|
639
718
|
}
|
|
719
|
+
finally {
|
|
720
|
+
// Either way. A lookup that failed must not hold the launch back for
|
|
721
|
+
// ever — the point of looking is to avoid a second runtime, not to
|
|
722
|
+
// make the first one conditional on the listing endpoint.
|
|
723
|
+
if (!cancelled) {
|
|
724
|
+
setLookedForExisting(true);
|
|
725
|
+
}
|
|
726
|
+
}
|
|
640
727
|
};
|
|
641
728
|
bootstrap();
|
|
642
729
|
return () => {
|
|
@@ -661,12 +748,23 @@ export function useAgentRuntimes(options = {}) {
|
|
|
661
748
|
useEffect(() => {
|
|
662
749
|
if (hasSpec &&
|
|
663
750
|
autoStart &&
|
|
751
|
+
// Only once the lookup above has reported. Launching in parallel would
|
|
752
|
+
// race it: two runtimes for one spec, and whichever answered last wins.
|
|
753
|
+
lookedForExisting &&
|
|
754
|
+
!runtime &&
|
|
664
755
|
!hasAutoStarted.current &&
|
|
665
756
|
lifecycleStatus === 'idle') {
|
|
666
757
|
hasAutoStarted.current = true;
|
|
667
758
|
launchRuntime();
|
|
668
759
|
}
|
|
669
|
-
}, [
|
|
760
|
+
}, [
|
|
761
|
+
hasSpec,
|
|
762
|
+
autoStart,
|
|
763
|
+
lookedForExisting,
|
|
764
|
+
runtime,
|
|
765
|
+
lifecycleStatus,
|
|
766
|
+
launchRuntime,
|
|
767
|
+
]);
|
|
670
768
|
// ─── Sync store errors ─────────────────────────────────────────────
|
|
671
769
|
useEffect(() => {
|
|
672
770
|
if (storeError && hasSpec && lifecycleStatus !== 'error') {
|
|
@@ -675,14 +773,26 @@ export function useAgentRuntimes(options = {}) {
|
|
|
675
773
|
}
|
|
676
774
|
}, [storeError, hasSpec, lifecycleStatus]);
|
|
677
775
|
// ─── Derived state ─────────────────────────────────────────────────
|
|
678
|
-
|
|
679
|
-
|
|
680
|
-
|
|
681
|
-
const
|
|
682
|
-
const
|
|
683
|
-
?
|
|
684
|
-
|
|
685
|
-
|
|
776
|
+
// A browser agent is ready the moment the page is: there is no runtime to
|
|
777
|
+
// start, so a host that waits on `isReady` before showing its chat would
|
|
778
|
+
// otherwise wait forever for something that is never going to happen.
|
|
779
|
+
const inBrowser = runsInBrowser(variant);
|
|
780
|
+
const status = inBrowser
|
|
781
|
+
? 'ready'
|
|
782
|
+
: hasSpec
|
|
783
|
+
? lifecycleStatus
|
|
784
|
+
: baseStatus;
|
|
785
|
+
const error = inBrowser
|
|
786
|
+
? null
|
|
787
|
+
: hasSpec
|
|
788
|
+
? lifecycleError || storeError
|
|
789
|
+
: storeError;
|
|
790
|
+
const isReady = inBrowser
|
|
791
|
+
? true
|
|
792
|
+
: hasSpec
|
|
793
|
+
? (lifecycleStatus === 'ready' || lifecycleStatus === 'resumed') &&
|
|
794
|
+
!!runtime?.isReady
|
|
795
|
+
: baseStatus === 'ready' && !!runtime?.isReady;
|
|
686
796
|
const endpoint = runtime?.endpoint || null;
|
|
687
797
|
const serviceManager = runtime?.serviceManager || null;
|
|
688
798
|
return {
|
|
@@ -702,7 +812,11 @@ export function useAgentRuntimes(options = {}) {
|
|
|
702
812
|
// Status
|
|
703
813
|
isReady,
|
|
704
814
|
error,
|
|
705
|
-
|
|
815
|
+
variant,
|
|
816
|
+
// Derived rather than passed through: a caller that gave neither option
|
|
817
|
+
// still gets a truthful legacy value, and one that gave a variant gets its
|
|
818
|
+
// nearest old name instead of `undefined`.
|
|
819
|
+
runtimeCreationTarget: legacyTargetOf(variant),
|
|
706
820
|
runtimeCreationBaseUrl: resolvedRuntimeCreationBaseUrl,
|
|
707
821
|
};
|
|
708
822
|
}
|
|
@@ -744,7 +858,7 @@ export function useAgentRuntimesQuery(scope, queryOptions) {
|
|
|
744
858
|
}
|
|
745
859
|
const query = params.toString();
|
|
746
860
|
const resp = await requestDatalayer({
|
|
747
|
-
url: `${configuration.runtimesUrl}
|
|
861
|
+
url: `${runtimesUrl(configuration.runtimesUrl)}${query ? `?${query}` : ''}`,
|
|
748
862
|
method: 'GET',
|
|
749
863
|
});
|
|
750
864
|
if (resp.success && resp.runtimes) {
|
|
@@ -755,7 +869,7 @@ export function useAgentRuntimesQuery(scope, queryOptions) {
|
|
|
755
869
|
// never reconnect a ServiceManager to a dead ingress (CORS spam).
|
|
756
870
|
.filter(runtime => !isStaleDeletedRuntime(runtime));
|
|
757
871
|
agentRuntimes.forEach((runtime) => {
|
|
758
|
-
queryClient.setQueryData(agentQueryKeys.agentRuntimes.detail(runtime.
|
|
872
|
+
queryClient.setQueryData(agentQueryKeys.agentRuntimes.detail(runtime.runtime_name), runtime);
|
|
759
873
|
});
|
|
760
874
|
return agentRuntimes;
|
|
761
875
|
}
|
|
@@ -769,16 +883,19 @@ export function useAgentRuntimesQuery(scope, queryOptions) {
|
|
|
769
883
|
});
|
|
770
884
|
}
|
|
771
885
|
/**
|
|
772
|
-
* Hook to fetch a single agent runtime by
|
|
886
|
+
* Hook to fetch a single agent runtime by name.
|
|
773
887
|
*/
|
|
774
|
-
export function
|
|
888
|
+
export function useAgentRuntimeByName(runtimeName) {
|
|
775
889
|
const { configuration } = useCoreStore();
|
|
776
890
|
const { requestDatalayer } = useDatalayer({ notifyOnError: false });
|
|
891
|
+
// The query is disabled without a name, but the URL is built before the
|
|
892
|
+
// guard runs, so it needs one either way.
|
|
893
|
+
const name = runtimeName ?? '';
|
|
777
894
|
return useQuery({
|
|
778
|
-
queryKey: agentQueryKeys.agentRuntimes.detail(
|
|
895
|
+
queryKey: agentQueryKeys.agentRuntimes.detail(name),
|
|
779
896
|
queryFn: async () => {
|
|
780
897
|
const resp = await requestDatalayer({
|
|
781
|
-
url:
|
|
898
|
+
url: runtimeUrl(configuration.runtimesUrl, name),
|
|
782
899
|
method: 'GET',
|
|
783
900
|
});
|
|
784
901
|
if (resp.runtime) {
|
|
@@ -799,7 +916,7 @@ export function useAgentRuntimeByPodName(podName) {
|
|
|
799
916
|
return 5000;
|
|
800
917
|
},
|
|
801
918
|
retry: false,
|
|
802
|
-
enabled: !!
|
|
919
|
+
enabled: !!runtimeName,
|
|
803
920
|
});
|
|
804
921
|
}
|
|
805
922
|
/**
|
|
@@ -811,13 +928,11 @@ export function useCreateAgentRuntime() {
|
|
|
811
928
|
const queryClient = useQueryClient();
|
|
812
929
|
return useMutation({
|
|
813
930
|
mutationFn: async (data) => {
|
|
814
|
-
const
|
|
815
|
-
|
|
816
|
-
|
|
817
|
-
? [String(data.volumeUid).trim()]
|
|
818
|
-
: [];
|
|
931
|
+
const contentAttachmentUids = (data.contentAttachmentUids ?? [])
|
|
932
|
+
.map(uid => String(uid || '').trim())
|
|
933
|
+
.filter(Boolean);
|
|
819
934
|
return requestDatalayer({
|
|
820
|
-
url:
|
|
935
|
+
url: runtimesUrl(configuration.runtimesUrl),
|
|
821
936
|
method: 'POST',
|
|
822
937
|
body: {
|
|
823
938
|
environment: {
|
|
@@ -836,9 +951,10 @@ export function useCreateAgentRuntime() {
|
|
|
836
951
|
billing_entity_handle: data.billingEntityHandle || undefined,
|
|
837
952
|
billing_source_organization_uid: data.billingSourceOrganizationUid || undefined,
|
|
838
953
|
billing_source_organization_handle: data.billingSourceOrganizationHandle || undefined,
|
|
839
|
-
|
|
840
|
-
|
|
841
|
-
|
|
954
|
+
runtime_name: data.runtimeName || undefined,
|
|
955
|
+
content_attachment_uids: contentAttachmentUids.length
|
|
956
|
+
? contentAttachmentUids
|
|
957
|
+
: undefined,
|
|
842
958
|
},
|
|
843
959
|
});
|
|
844
960
|
},
|
|
@@ -846,8 +962,8 @@ export function useCreateAgentRuntime() {
|
|
|
846
962
|
if (resp.success && resp.runtime) {
|
|
847
963
|
const mapped = toAgentRuntimeData(resp.runtime);
|
|
848
964
|
// A fresh runtime legitimately exists — drop any stale tombstone.
|
|
849
|
-
|
|
850
|
-
queryClient.setQueryData(agentQueryKeys.agentRuntimes.detail(mapped.
|
|
965
|
+
clearRuntimeDeleted(mapped.runtime_name);
|
|
966
|
+
queryClient.setQueryData(agentQueryKeys.agentRuntimes.detail(mapped.runtime_name), mapped);
|
|
851
967
|
queryClient.invalidateQueries({
|
|
852
968
|
queryKey: agentQueryKeys.agentRuntimes.all(),
|
|
853
969
|
});
|
|
@@ -856,7 +972,11 @@ export function useCreateAgentRuntime() {
|
|
|
856
972
|
});
|
|
857
973
|
}
|
|
858
974
|
/**
|
|
859
|
-
* Hook to
|
|
975
|
+
* Hook to stop an agent runtime — running or paused.
|
|
976
|
+
*
|
|
977
|
+
* One hook, because there is one endpoint: `DELETE /runtimes/{runtimeName}` reaps
|
|
978
|
+
* the pod when there is one and the checkpoint records when there is not, so a
|
|
979
|
+
* caller that wants the runtime gone does not have to know which it is.
|
|
860
980
|
*/
|
|
861
981
|
export function useDeleteAgentRuntime() {
|
|
862
982
|
const { configuration } = useCoreStore();
|
|
@@ -880,10 +1000,10 @@ export function useDeleteAgentRuntime() {
|
|
|
880
1000
|
'').toLowerCase();
|
|
881
1001
|
};
|
|
882
1002
|
return useMutation({
|
|
883
|
-
mutationFn: async (
|
|
1003
|
+
mutationFn: async (runtimeName) => {
|
|
884
1004
|
try {
|
|
885
1005
|
return await requestDatalayer({
|
|
886
|
-
url:
|
|
1006
|
+
url: runtimeUrl(configuration.runtimesUrl, runtimeName),
|
|
887
1007
|
method: 'DELETE',
|
|
888
1008
|
});
|
|
889
1009
|
}
|
|
@@ -902,7 +1022,7 @@ export function useDeleteAgentRuntime() {
|
|
|
902
1022
|
// the runtime detail endpoint still exists.
|
|
903
1023
|
try {
|
|
904
1024
|
await requestDatalayer({
|
|
905
|
-
url:
|
|
1025
|
+
url: runtimeUrl(configuration.runtimesUrl, runtimeName),
|
|
906
1026
|
method: 'GET',
|
|
907
1027
|
});
|
|
908
1028
|
// Runtime still exists: propagate original DELETE failure.
|
|
@@ -917,26 +1037,26 @@ export function useDeleteAgentRuntime() {
|
|
|
917
1037
|
}
|
|
918
1038
|
}
|
|
919
1039
|
},
|
|
920
|
-
onSuccess: (_data,
|
|
1040
|
+
onSuccess: (_data, runtimeName) => {
|
|
921
1041
|
// Tombstone the pod so refetches that still echo it from the control
|
|
922
1042
|
// plane (deletion lag) do not re-add it to the caches below.
|
|
923
|
-
|
|
1043
|
+
markRuntimeDeleted(runtimeName);
|
|
924
1044
|
// Prune the pod from the runtimes store immediately so the remote service
|
|
925
1045
|
// managers dispose right away and stop polling the now-dead pod ingress
|
|
926
1046
|
// (otherwise `/api/kernels` requests keep firing until the next
|
|
927
|
-
// `
|
|
928
|
-
runtimesStore.getState().
|
|
1047
|
+
// `refreshRuntimes()` poll tick, producing CORS errors).
|
|
1048
|
+
runtimesStore.getState().removeRuntime(runtimeName);
|
|
929
1049
|
queryClient.setQueriesData({ queryKey: agentQueryKeys.agentRuntimes.lists() }, (current) => {
|
|
930
1050
|
if (!Array.isArray(current)) {
|
|
931
1051
|
return current;
|
|
932
1052
|
}
|
|
933
|
-
return current.filter(runtime => runtime.
|
|
1053
|
+
return current.filter(runtime => runtime.runtime_name !== runtimeName);
|
|
934
1054
|
});
|
|
935
1055
|
queryClient.cancelQueries({
|
|
936
|
-
queryKey: agentQueryKeys.agentRuntimes.detail(
|
|
1056
|
+
queryKey: agentQueryKeys.agentRuntimes.detail(runtimeName),
|
|
937
1057
|
});
|
|
938
1058
|
queryClient.removeQueries({
|
|
939
|
-
queryKey: agentQueryKeys.agentRuntimes.detail(
|
|
1059
|
+
queryKey: agentQueryKeys.agentRuntimes.detail(runtimeName),
|
|
940
1060
|
});
|
|
941
1061
|
queryClient.invalidateQueries({
|
|
942
1062
|
queryKey: agentQueryKeys.agentRuntimes.lists(),
|
|
@@ -945,6 +1065,11 @@ export function useDeleteAgentRuntime() {
|
|
|
945
1065
|
queryKey: agentQueryKeys.agentRuntimes.lists(),
|
|
946
1066
|
type: 'active',
|
|
947
1067
|
});
|
|
1068
|
+
// Stopping also removes any checkpoint records, so a paused agent does
|
|
1069
|
+
// not linger in the checkpoint views after it is gone.
|
|
1070
|
+
queryClient.invalidateQueries({
|
|
1071
|
+
queryKey: agentQueryKeys.checkpoints.all(),
|
|
1072
|
+
});
|
|
948
1073
|
},
|
|
949
1074
|
});
|
|
950
1075
|
}
|
|
@@ -1033,15 +1158,15 @@ export function useAgentsRuntimes(scope, queryOptions) {
|
|
|
1033
1158
|
const createRuntimeMutation = useCreateAgentRuntime();
|
|
1034
1159
|
const deleteRuntimeMutation = useDeleteAgentRuntime();
|
|
1035
1160
|
const refreshRuntimes = useRefreshAgentRuntimes();
|
|
1036
|
-
const
|
|
1037
|
-
const
|
|
1038
|
-
if (!
|
|
1161
|
+
const stopRuntimeByName = useCallback(async (runtimeName, options) => {
|
|
1162
|
+
const normalizedRuntimeName = String(runtimeName || '').trim();
|
|
1163
|
+
if (!normalizedRuntimeName) {
|
|
1039
1164
|
return;
|
|
1040
1165
|
}
|
|
1041
|
-
if (options?.
|
|
1042
|
-
await options.
|
|
1166
|
+
if (options?.beforeStop) {
|
|
1167
|
+
await options.beforeStop();
|
|
1043
1168
|
}
|
|
1044
|
-
return deleteRuntimeMutation.mutateAsync(
|
|
1169
|
+
return deleteRuntimeMutation.mutateAsync(normalizedRuntimeName);
|
|
1045
1170
|
}, [deleteRuntimeMutation]);
|
|
1046
1171
|
return useMemo(() => ({
|
|
1047
1172
|
runtimes: runtimesQuery.data ?? EMPTY_RUNTIMES,
|
|
@@ -1050,8 +1175,7 @@ export function useAgentsRuntimes(scope, queryOptions) {
|
|
|
1050
1175
|
runtimesError: runtimesQuery.error,
|
|
1051
1176
|
refetchRuntimes: () => runtimesQuery.refetch(),
|
|
1052
1177
|
refreshRuntimes,
|
|
1053
|
-
|
|
1054
|
-
deleteRuntimeByPod: async (podName) => terminateRuntimeByPod(podName),
|
|
1178
|
+
stopRuntimeByName,
|
|
1055
1179
|
createRuntime: async (data) => createRuntimeMutation.mutateAsync(data),
|
|
1056
1180
|
}), [
|
|
1057
1181
|
runtimesQuery.data,
|
|
@@ -1060,7 +1184,7 @@ export function useAgentsRuntimes(scope, queryOptions) {
|
|
|
1060
1184
|
runtimesQuery.error,
|
|
1061
1185
|
runtimesQuery.refetch,
|
|
1062
1186
|
refreshRuntimes,
|
|
1063
|
-
|
|
1187
|
+
stopRuntimeByName,
|
|
1064
1188
|
createRuntimeMutation,
|
|
1065
1189
|
deleteRuntimeMutation,
|
|
1066
1190
|
]);
|
|
@@ -11,18 +11,46 @@
|
|
|
11
11
|
*/
|
|
12
12
|
import { create } from 'zustand';
|
|
13
13
|
import { listAgentspecs } from '../specs';
|
|
14
|
+
/** Whether two agent lists name the same agents, in the same state. */
|
|
15
|
+
const sameAgents = (before, after) => before.length === after.length &&
|
|
16
|
+
before.every((agent, index) => {
|
|
17
|
+
const other = after[index];
|
|
18
|
+
return (agent === other ||
|
|
19
|
+
(agent.id === other.id &&
|
|
20
|
+
agent.runtime_name === other.runtime_name &&
|
|
21
|
+
agent.status === other.status &&
|
|
22
|
+
agent.agentSpec === other.agentSpec));
|
|
23
|
+
});
|
|
14
24
|
export const useAgentCatalogStore = create()(set => ({
|
|
15
25
|
agentspecs: listAgentspecs(),
|
|
16
26
|
runningAgents: [],
|
|
17
27
|
refreshSpecs: () => set({ agentspecs: listAgentspecs() }),
|
|
18
|
-
|
|
19
|
-
|
|
28
|
+
/*
|
|
29
|
+
* The same agents twice is not a change.
|
|
30
|
+
*
|
|
31
|
+
* This is a global store, and the caller is a layout that recomputes its
|
|
32
|
+
* list whenever the runtimes poll — so `agents` is a fresh array many times
|
|
33
|
+
* a minute even when nothing about the agents differs. Storing it
|
|
34
|
+
* unconditionally gave every consumer a new identity each time, which is a
|
|
35
|
+
* re-render each time for a list that has not moved; and a consumer whose
|
|
36
|
+
* own effect writes back closes the circle into a render loop.
|
|
37
|
+
*
|
|
38
|
+
* So the previous array is kept when the same agents are still there, in
|
|
39
|
+
* the same order, with the same status. Comparing by that triple rather
|
|
40
|
+
* than deeply because it is what a reader of this list acts on, and what
|
|
41
|
+
* the poll actually changes.
|
|
42
|
+
*/
|
|
43
|
+
setRunningAgents: agents => set(state => {
|
|
44
|
+
const resolved = agents.map(agent => {
|
|
20
45
|
if (agent.agentSpec)
|
|
21
46
|
return agent;
|
|
22
47
|
if (!agent.agent_spec_id)
|
|
23
48
|
return agent;
|
|
24
49
|
const spec = state.agentspecs.find(s => s.id === agent.agent_spec_id);
|
|
25
50
|
return spec ? { ...agent, agentSpec: spec } : agent;
|
|
26
|
-
})
|
|
27
|
-
|
|
51
|
+
});
|
|
52
|
+
return sameAgents(state.runningAgents, resolved)
|
|
53
|
+
? {}
|
|
54
|
+
: { runningAgents: resolved };
|
|
55
|
+
}),
|
|
28
56
|
}));
|