@datalayer/agent-runtimes 1.0.29 → 1.3.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/AgentDocument.js +5 -22
- package/lib/AgentNode.d.ts +1 -1
- package/lib/AgentNode.js +193 -23
- package/lib/AgentNotebook.js +1 -1
- package/lib/App.d.ts +1 -1
- package/lib/AppExamples2.d.ts +1 -1
- package/lib/agent-node/AgentNodeGallery.d.ts +14 -1
- package/lib/agent-node/AgentNodeGallery.js +19 -15
- package/lib/agent-node/themeStore.js +7 -6
- package/lib/agents/AgentDetails.d.ts +8 -2
- package/lib/agents/AgentDetails.js +41 -11
- package/lib/agents/AgentRuntimeChat.d.ts +3 -3
- package/lib/agents/AgentRuntimeChat.js +15 -15
- package/lib/api/agents.d.ts +10 -10
- package/lib/api/agents.js +15 -15
- package/lib/api/checkpoints.d.ts +40 -0
- package/lib/api/checkpoints.js +75 -0
- package/lib/api/index.d.ts +1 -0
- package/lib/api/index.js +2 -1
- package/lib/api/notifications.d.ts +21 -6
- package/lib/api/notifications.js +32 -14
- package/lib/api/runtimes/environments.d.ts +385 -4
- package/lib/api/runtimes/environments.js +610 -9
- package/lib/api/runtimes/runtimes.d.ts +19 -19
- package/lib/api/runtimes/runtimes.js +47 -46
- package/lib/api/spacer/notebooks.js +1 -1
- package/lib/chat/Chat.d.ts +16 -4
- package/lib/chat/Chat.js +18 -5
- package/lib/chat/ChatFloating.d.ts +13 -2
- package/lib/chat/ChatFloating.js +192 -117
- package/lib/chat/ChatInline.d.ts +15 -0
- package/lib/chat/ChatInline.js +0 -18
- package/lib/chat/ChatPopupStandalone.d.ts +1 -1
- package/lib/chat/ChatSidebar.d.ts +14 -2
- package/lib/chat/ChatSidebar.js +1 -1
- package/lib/chat/ChatStandalone.d.ts +1 -1
- package/lib/chat/EphemeralSurfaceControl.d.ts +30 -0
- package/lib/chat/EphemeralSurfaceControl.js +55 -0
- package/lib/chat/base/ChatAvailability.d.ts +34 -0
- package/lib/chat/base/ChatAvailability.js +18 -0
- package/lib/chat/base/ChatBase.d.ts +2 -1
- package/lib/chat/base/ChatBase.js +657 -28
- package/lib/chat/display/EmptyState.d.ts +15 -1
- package/lib/chat/display/EmptyState.js +78 -12
- package/lib/chat/display/FloatingBrandButton.d.ts +1 -1
- package/lib/chat/display/PoweredByTag.d.ts +1 -1
- package/lib/chat/display/groupSuggestions.d.ts +21 -0
- package/lib/chat/display/groupSuggestions.js +18 -0
- package/lib/chat/document/EphemeralDocument.d.ts +70 -6
- package/lib/chat/document/EphemeralDocument.js +154 -52
- package/lib/chat/header/ChatHeader.d.ts +1 -1
- package/lib/chat/header/ChatHeaderBase.d.ts +10 -1
- package/lib/chat/header/ChatHeaderBase.js +67 -96
- package/lib/chat/index.d.ts +4 -1
- package/lib/chat/index.js +8 -1
- package/lib/chat/indicators/McpStatusIndicator.d.ts +1 -1
- package/lib/chat/indicators/SandboxStatusIndicator.d.ts +1 -1
- package/lib/chat/indicators/SandboxStatusIndicator.js +1 -1
- package/lib/chat/indicators/SkillsStatusIndicator.d.ts +1 -1
- package/lib/chat/messages/ChatMessageList.d.ts +22 -1
- package/lib/chat/messages/ChatMessageList.js +370 -166
- package/lib/chat/messages/ChatMessages.d.ts +1 -1
- package/lib/chat/messages/NotebookToolSurfaces.d.ts +68 -0
- package/lib/chat/messages/NotebookToolSurfaces.js +302 -0
- package/lib/chat/messages/TurnFooter.d.ts +42 -0
- package/lib/chat/messages/TurnFooter.js +75 -0
- package/lib/chat/messages/assistantMarkdown.d.ts +22 -0
- package/lib/chat/messages/assistantMarkdown.js +56 -0
- package/lib/chat/notebook/EphemeralNotebook.d.ts +67 -6
- package/lib/chat/notebook/EphemeralNotebook.js +194 -61
- package/lib/chat/parts/DynamicToolPart.d.ts +1 -1
- package/lib/chat/parts/MessagePart.d.ts +1 -1
- package/lib/chat/parts/ReasoningPart.d.ts +8 -1
- package/lib/chat/parts/TextPart.d.ts +1 -1
- package/lib/chat/parts/ToolPart.d.ts +8 -1
- package/lib/chat/prompt/FloatingCard.d.ts +26 -0
- package/lib/chat/prompt/FloatingCard.js +80 -0
- package/lib/chat/prompt/InputPrompt.d.ts +206 -53
- package/lib/chat/prompt/InputPrompt.js +161 -80
- package/lib/chat/prompt/InputPromptBase.d.ts +112 -0
- package/lib/chat/prompt/InputPromptBase.js +225 -0
- package/lib/chat/prompt/InputPromptLexical.d.ts +18 -1
- package/lib/chat/prompt/InputPromptLexical.js +227 -30
- package/lib/chat/prompt/InputPromptText.d.ts +10 -2
- package/lib/chat/prompt/InputPromptText.js +35 -3
- package/lib/chat/prompt/footer/BelowPromptFooter.d.ts +25 -0
- package/lib/chat/prompt/footer/BelowPromptFooter.js +12 -0
- package/lib/chat/prompt/footer/InPromptFooter.d.ts +35 -0
- package/lib/chat/prompt/footer/InPromptFooter.js +16 -0
- package/lib/chat/prompt/footer/index.d.ts +7 -0
- package/lib/chat/prompt/footer/index.js +11 -0
- package/lib/chat/prompt/header/BelowPromptHeader.d.ts +23 -0
- package/lib/chat/prompt/header/BelowPromptHeader.js +12 -0
- package/lib/chat/prompt/header/InPromptHeader.d.ts +31 -0
- package/lib/chat/prompt/header/InPromptHeader.js +14 -0
- package/lib/chat/prompt/header/index.d.ts +7 -0
- package/lib/chat/prompt/header/index.js +11 -0
- package/lib/chat/prompt/index.d.ts +8 -4
- package/lib/chat/prompt/index.js +15 -3
- package/lib/chat/prompt/menus/AgentsMenu.d.ts +14 -0
- package/lib/chat/prompt/menus/AgentsMenu.js +42 -0
- package/lib/chat/prompt/menus/InlineAgentsMenu.d.ts +22 -0
- package/lib/chat/prompt/menus/InlineAgentsMenu.js +24 -0
- package/lib/chat/prompt/menus/ModelSelector.d.ts +7 -0
- package/lib/chat/prompt/menus/ModelSelector.js +27 -0
- package/lib/chat/prompt/menus/SkillsMenu.d.ts +10 -0
- package/lib/chat/prompt/menus/SkillsMenu.js +75 -0
- package/lib/chat/prompt/menus/SuggestionsMenu.d.ts +13 -0
- package/lib/chat/prompt/menus/SuggestionsMenu.js +31 -0
- package/lib/chat/prompt/menus/ToolsMenu.d.ts +13 -0
- package/lib/chat/prompt/menus/ToolsMenu.js +103 -0
- package/lib/chat/prompt/menus/index.d.ts +15 -0
- package/lib/chat/prompt/menus/index.js +19 -0
- package/lib/chat/prompt/plugins/AgentMentionPlugin.d.ts +54 -0
- package/lib/chat/prompt/plugins/AgentMentionPlugin.js +370 -0
- package/lib/chat/prompt/plugins/CommandPlugin.d.ts +52 -0
- package/lib/chat/prompt/plugins/CommandPlugin.js +359 -0
- package/lib/chat/prompt/plugins/MentionChip.d.ts +15 -0
- package/lib/chat/prompt/plugins/MentionChip.js +24 -0
- package/lib/chat/prompt/plugins/MentionNode.d.ts +66 -0
- package/lib/chat/prompt/plugins/MentionNode.js +77 -0
- package/lib/chat/prompt/promptHistory.d.ts +52 -0
- package/lib/chat/prompt/promptHistory.js +123 -0
- package/lib/chat/prompt/stack.d.ts +81 -0
- package/lib/chat/prompt/stack.js +41 -0
- package/lib/chat/prompt/useTypingPlaceholder.d.ts +52 -0
- package/lib/chat/prompt/useTypingPlaceholder.js +180 -0
- package/lib/chat/tools/A2AAgentDialog.d.ts +60 -0
- package/lib/chat/tools/A2AAgentDialog.js +265 -0
- package/lib/chat/tools/ToolApprovalBanner.d.ts +1 -1
- package/lib/chat/tools/ToolApprovalDialog.d.ts +1 -1
- package/lib/chat/tools/ToolCallDisplay.d.ts +8 -1
- package/lib/chat/tools/index.d.ts +1 -0
- package/lib/chat/tools/index.js +1 -0
- package/lib/chat/usage/ContextPie.d.ts +17 -0
- package/lib/chat/usage/{TokenUsageBar.js → ContextPie.js} +20 -14
- package/lib/chat/useViewportDrag.d.ts +11 -0
- package/lib/chat/useViewportDrag.js +61 -0
- package/lib/chat/viewModes.d.ts +51 -0
- package/lib/chat/viewModes.js +57 -0
- package/lib/client/AgentRuntimesClient.d.ts +10 -9
- package/lib/client/AgentRuntimesClient.js +1 -1
- package/lib/client/AgentRuntimesClientContext.d.ts +1 -0
- package/lib/client/AgentsMixin.d.ts +12 -12
- package/lib/client/AgentsMixin.js +31 -31
- package/lib/client/IAgentRuntimesClient.d.ts +10 -10
- package/lib/client/SdkAgentRuntimesClient.d.ts +10 -10
- package/lib/client/SdkAgentRuntimesClient.js +10 -10
- package/lib/client/mixins/RuntimesMixin.d.ts +37 -10
- package/lib/client/mixins/RuntimesMixin.js +54 -21
- package/lib/components/a2ui/A2uiSurfaceComposed.d.ts +1 -1
- package/lib/components/agents/AgentSummary.d.ts +13 -0
- package/lib/components/agents/AgentSummary.js +21 -4
- package/lib/components/cards/NotificationEventCard.d.ts +1 -1
- package/lib/components/cards/OutputCard.d.ts +1 -1
- package/lib/components/cards/ToolApprovalCard.d.ts +2 -2
- package/lib/components/cards/ToolApprovalCard.js +1 -0
- package/lib/components/code-sandboxes/CodeSandboxCellVariables.d.ts +1 -0
- package/lib/components/code-sandboxes/CodeSandboxCellVariables.js +0 -4
- package/lib/components/code-sandboxes/CodeSandboxCellVariablesDialog.d.ts +1 -0
- package/lib/components/code-sandboxes/CodeSandboxCellVariablesDialog.js +0 -4
- package/lib/components/code-sandboxes/CodeSandboxEnvironmentSelect.d.ts +35 -0
- package/lib/components/code-sandboxes/CodeSandboxEnvironmentSelect.js +27 -29
- package/lib/components/code-sandboxes/CodeSandboxLauncher.d.ts +1 -0
- package/lib/components/code-sandboxes/CodeSandboxLauncher.js +42 -19
- package/lib/components/code-sandboxes/CodeSandboxNames.js +7 -6
- package/lib/components/code-sandboxes/CodeSandboxPicker.js +89 -42
- package/lib/components/code-sandboxes/CodeSandboxPickerCell.d.ts +1 -0
- package/lib/components/code-sandboxes/CodeSandboxPickerCell.js +0 -4
- package/lib/components/code-sandboxes/CodeSandboxReservationControl.d.ts +1 -0
- package/lib/components/code-sandboxes/CodeSandboxReservationControl.js +5 -7
- package/lib/components/code-sandboxes/CodeSandboxTransfer.d.ts +5 -0
- package/lib/components/code-sandboxes/CodeSandboxUtils.d.ts +13 -1
- package/lib/components/code-sandboxes/CodeSandboxUtils.js +10 -4
- package/lib/components/code-sandboxes/NewCodeSandboxControls.d.ts +21 -15
- package/lib/components/code-sandboxes/NewCodeSandboxControls.js +28 -51
- package/lib/components/code-sandboxes/codeSandboxAllowance.d.ts +33 -0
- package/lib/components/code-sandboxes/codeSandboxAllowance.js +37 -0
- package/lib/components/code-sandboxes/codeSandboxEnvironments.d.ts +86 -0
- package/lib/components/code-sandboxes/codeSandboxEnvironments.js +147 -0
- package/lib/components/code-sandboxes/codeSandboxProviders.js +14 -5
- package/lib/components/code-sandboxes/index.d.ts +1 -0
- package/lib/components/code-sandboxes/index.js +1 -0
- package/lib/components/context/SpaceSelect.d.ts +1 -1
- package/lib/components/flashes/FlashDisclaimer.d.ts +1 -1
- package/lib/components/icons/ArtifactIcon.d.ts +1 -0
- package/lib/components/nbgrader/NbGradesDetails.d.ts +1 -1
- package/lib/components/progress/CreditsIndicator.d.ts +1 -0
- package/lib/components/progress/CreditsIndicator.js +0 -4
- package/lib/components/scheduler/ScheduleMenu.d.ts +1 -1
- package/lib/components/snapshots/SandboxSnapshotMenu.d.ts +3 -2
- package/lib/components/snapshots/SandboxSnapshotMenu.js +11 -15
- package/lib/components/snippets/SnippetDialog.d.ts +1 -0
- package/lib/components/snippets/SnippetDialog.js +0 -4
- package/lib/components/specs/SpecPayloadPreview.d.ts +34 -0
- package/lib/components/specs/SpecPayloadPreview.js +102 -0
- package/lib/components/tokens/SpaceVariantToken.d.ts +1 -1
- package/lib/context/ContextDistribution.d.ts +1 -1
- package/lib/context/ContextInspector.d.ts +2 -1
- package/lib/context/ContextPanel.d.ts +1 -1
- package/lib/context/ContextUsage.d.ts +1 -1
- package/lib/context/CostTracker.d.ts +1 -1
- package/lib/context/CostUsageChart.d.ts +1 -1
- package/lib/context/CostUsageChart.js +4 -4
- package/lib/context/MessageHistory.d.ts +3 -2
- package/lib/context/TokenUsageChart.d.ts +1 -1
- package/lib/context/TokenUsageChart.js +4 -4
- package/lib/examples/A2UiAgentExample.js +15 -6
- package/lib/examples/A2UiComponentsGalleryExample.d.ts +10 -0
- package/lib/examples/A2UiComponentsGalleryExample.js +24 -855
- package/lib/examples/A2UiContactCardExample.d.ts +10 -0
- package/lib/examples/A2UiContactCardExample.js +23 -170
- package/lib/examples/A2UiJupyterOutputExample.d.ts +3 -0
- package/lib/examples/A2UiJupyterOutputExample.js +792 -0
- package/lib/examples/A2UiRestaurantExample.d.ts +10 -0
- package/lib/examples/A2UiRestaurantExample.js +24 -179
- package/lib/examples/A2UiViewerExample.d.ts +10 -0
- package/lib/examples/A2UiViewerExample.js +24 -378
- package/lib/examples/AgUiAgenticExample.js +2 -4
- package/lib/examples/AgUiBackendToolRenderingExample.js +3 -5
- package/lib/examples/AgUiHaikuGenUiExample.js +2 -4
- package/lib/examples/AgUiHumanInTheLoopExample.js +2 -4
- package/lib/examples/AgUiSharedStateExample.js +2 -4
- package/lib/examples/AgUiToolsBasedGenUiExample.js +2 -4
- package/lib/examples/AgentA2AExample.d.ts +17 -0
- package/lib/examples/AgentA2AExample.js +56 -0
- package/lib/examples/AgentCheckpointsExample.d.ts +9 -10
- package/lib/examples/AgentCheckpointsExample.js +72 -54
- package/lib/examples/AgentCodeSandboxExample.d.ts +7 -7
- package/lib/examples/AgentCodeSandboxExample.js +93 -303
- package/lib/examples/AgentCodeSandboxesExample.d.ts +10 -0
- package/lib/examples/AgentCodeSandboxesExample.js +56 -162
- package/lib/examples/AgentCodemodeExample.d.ts +7 -2
- package/lib/examples/AgentCodemodeExample.js +60 -125
- package/lib/examples/AgentCompactionExample.js +19 -135
- package/lib/examples/AgentEvalsExample.js +34 -66
- package/lib/examples/AgentGuardrailsExample.js +64 -112
- package/lib/examples/AgentHooksExample.d.ts +11 -0
- package/lib/examples/AgentHooksExample.js +30 -67
- package/lib/examples/AgentInferenceProviderExample.js +8 -32
- package/lib/examples/AgentLoopExample.d.ts +4 -2
- package/lib/examples/AgentLoopExample.js +45 -93
- package/lib/examples/AgentMCPExample.js +30 -79
- package/lib/examples/AgentMemoryExample.js +21 -64
- package/lib/examples/AgentMonitoringExample.js +33 -94
- package/lib/examples/AgentNotificationsExample.js +56 -95
- package/lib/examples/AgentOtelExample.js +35 -88
- package/lib/examples/AgentOutputsExample.d.ts +2 -1
- package/lib/examples/AgentOutputsExample.js +16 -137
- package/lib/examples/AgentParametersExample.js +7 -17
- package/lib/examples/AgentSkillsExample.js +40 -154
- package/lib/examples/AgentSubagentsExample.d.ts +7 -6
- package/lib/examples/AgentSubagentsExample.js +80 -191
- package/lib/examples/AgentToolApprovalsExample.js +35 -91
- package/lib/examples/AgentTriggersExample.js +43 -59
- package/lib/examples/AgentspecsExample.js +4 -4
- package/lib/examples/CellExample.d.ts +1 -1
- package/lib/examples/ChatExample.d.ts +12 -5
- package/lib/examples/ChatExample.js +38 -13
- package/lib/examples/CopilotKitLexicalExample.d.ts +1 -0
- package/lib/examples/CopilotKitLexicalExample.js +4 -41
- package/lib/examples/CopilotKitNotebookExample.d.ts +10 -0
- package/lib/examples/CopilotKitNotebookExample.js +2 -14
- package/lib/examples/DecksAgent.d.ts +21 -0
- package/lib/examples/DecksAgent.js +23 -0
- package/lib/examples/DocumentPageAgent.d.ts +19 -0
- package/lib/examples/DocumentPageAgent.js +15 -0
- package/lib/examples/Lexical2Example.d.ts +2 -2
- package/lib/examples/Lexical2Example.js +17 -38
- package/lib/examples/LexicalAgentExample.d.ts +2 -1
- package/lib/examples/LexicalAgentExample.js +29 -102
- package/lib/examples/LexicalAgentSidebarExample.d.ts +16 -5
- package/lib/examples/LexicalAgentSidebarExample.js +99 -131
- package/lib/examples/LoopShellExample.d.ts +38 -0
- package/lib/examples/LoopShellExample.js +68 -0
- package/lib/examples/LoopWorkspaceEmbed.d.ts +50 -0
- package/lib/examples/LoopWorkspaceEmbed.js +73 -0
- package/lib/examples/LoopWorkspaceExample.d.ts +150 -0
- package/lib/examples/LoopWorkspaceExample.js +151 -0
- package/lib/examples/NotebookAgentExample.d.ts +13 -0
- package/lib/examples/NotebookAgentExample.js +36 -86
- package/lib/examples/NotebookAgentSidebarExample.d.ts +10 -4
- package/lib/examples/NotebookAgentSidebarExample.js +39 -83
- package/lib/examples/NotebookCollaborationExample.d.ts +1 -1
- package/lib/examples/NotebookCollaborationExample.js +108 -20
- package/lib/examples/NotebookExample.d.ts +1 -1
- package/lib/examples/NotebookExample.js +20 -10
- package/lib/examples/NotebookPageAgent.d.ts +23 -0
- package/lib/examples/NotebookPageAgent.js +17 -0
- package/lib/examples/components/ExampleWrapper.d.ts +5 -0
- package/lib/examples/components/ExampleWrapper.js +36 -28
- package/lib/examples/components/LexicalEditor.d.ts +1 -1
- package/lib/examples/components/LexicalEditor.js +4 -24
- package/lib/examples/components/haiku/HaikuDisplay.d.ts +1 -1
- package/lib/examples/components/haiku/InlineHaikuCard.d.ts +1 -1
- package/lib/examples/components/weather/InlineWeatherCard.d.ts +1 -1
- package/lib/examples/example-selector.js +26 -6
- package/lib/examples/hooks/useCreateAgentOnce.d.ts +41 -0
- package/lib/examples/hooks/useCreateAgentOnce.js +51 -0
- package/lib/examples/hooks/useExampleAgentProtocol.d.ts +35 -0
- package/lib/examples/hooks/useExampleAgentProtocol.js +63 -0
- package/lib/examples/hooks/useExampleAgentRuntime.d.ts +16 -16
- package/lib/examples/hooks/useExampleAgentRuntime.js +26 -25
- package/lib/examples/hooks/useExampleAgentRuntimes.js +45 -61
- package/lib/examples/hooks/useExampleJupyterAgent.d.ts +91 -0
- package/lib/examples/hooks/useExampleJupyterAgent.js +151 -0
- package/lib/examples/index.d.ts +4 -0
- package/lib/examples/index.js +6 -0
- package/lib/examples/lexical/editorConfig.d.ts +2 -75
- package/lib/examples/lexical/editorConfig.js +26 -48
- package/lib/examples/lexical/lexical-theme.css +65 -47
- package/lib/examples/main.js +450 -322
- package/lib/examples/scenes/A2UiComponentsGalleryScene.d.ts +3 -0
- package/lib/examples/scenes/A2UiComponentsGalleryScene.js +872 -0
- package/lib/examples/scenes/A2UiContactCardScene.d.ts +3 -0
- package/lib/examples/scenes/A2UiContactCardScene.js +188 -0
- package/lib/examples/scenes/A2UiRestaurantScene.d.ts +3 -0
- package/lib/examples/scenes/A2UiRestaurantScene.js +196 -0
- package/lib/examples/scenes/A2UiViewerScene.d.ts +3 -0
- package/lib/examples/scenes/A2UiViewerScene.js +395 -0
- package/lib/examples/utils/agentSummaryStore.d.ts +7 -1
- package/lib/examples/utils/agents/earthquake-detector.ipynb.json +1 -1
- package/lib/examples/utils/agents/earthquake-detector.lexical.json +1 -1
- package/lib/examples/utils/agents/sales-forecaster.ipynb.json +1 -1
- package/lib/examples/utils/agents/sales-forecaster.lexical.json +1 -1
- package/lib/examples/utils/agents/social-post-generator.ipynb.json +1 -1
- package/lib/examples/utils/agents/social-post-generator.lexical.json +1 -1
- package/lib/examples/utils/exampleSurfaces.d.ts +31 -0
- package/lib/examples/utils/exampleSurfaces.js +38 -0
- package/lib/examples/utils/jupyterSandboxUrl.d.ts +27 -0
- package/lib/examples/utils/jupyterSandboxUrl.js +55 -0
- package/lib/examples/utils/localUrl.d.ts +2 -0
- package/lib/examples/utils/localUrl.js +49 -0
- package/lib/examples/utils/notebookToolbarItems.d.ts +46 -0
- package/lib/examples/utils/notebookToolbarItems.js +129 -0
- package/lib/examples/utils/runtimeTargetStore.d.ts +40 -1
- package/lib/examples/utils/runtimeTargetStore.js +82 -1
- package/lib/examples/utils/themedProvider.d.ts +7 -0
- package/lib/examples/utils/themedProvider.js +57 -4
- package/lib/examples/utils/useExampleAgentRuntimesUrl.js +30 -5
- package/lib/examples/utils/waitForAgent.d.ts +23 -0
- package/lib/examples/utils/waitForAgent.js +24 -0
- package/lib/examples2/CellExample.d.ts +1 -1
- package/lib/examples2/DatalayerNotebookExample.d.ts +1 -1
- package/lib/examples2/NotebookExample.d.ts +1 -1
- package/lib/examples2/NotebookMutationsKernel.d.ts +1 -1
- package/lib/examples2/NotebookMutationsServiceManager.d.ts +1 -1
- package/lib/examples2/main.js +24 -4
- package/lib/extensions/A2UIExtension.d.ts +1 -1
- package/lib/hooks/index.d.ts +8 -5
- package/lib/hooks/index.js +20 -5
- package/lib/hooks/useAgentRuntimes.d.ts +49 -22
- package/lib/hooks/useAgentRuntimes.js +214 -90
- package/lib/hooks/useAgentsCatalog.js +32 -4
- package/lib/hooks/useBrowserAgent.d.ts +26 -0
- package/lib/hooks/useBrowserAgent.js +75 -0
- package/lib/hooks/useBrowserInference.d.ts +27 -0
- package/lib/hooks/useBrowserInference.js +67 -0
- package/lib/hooks/useCheckpoints.d.ts +8 -17
- package/lib/hooks/useCheckpoints.js +25 -59
- package/lib/hooks/useConfig.d.ts +1 -1
- package/lib/hooks/useConfig.js +5 -1
- package/lib/hooks/useContextSnapshot.d.ts +18 -7
- package/lib/hooks/useContextSnapshot.js +14 -10
- package/lib/hooks/useNotifications.d.ts +11 -11
- package/lib/hooks/useNotifications.js +1 -1
- package/lib/hooks/useProjects.d.ts +7 -19
- package/lib/hooks/useProjects.js +5 -5
- package/lib/hooks/useSkills.d.ts +0 -1
- package/lib/hooks/useSkills.js +6 -2
- package/lib/hooks/useToolApprovals.d.ts +8 -8
- package/lib/hooks/useToolApprovals.js +3 -3
- package/lib/identity/AgentIdentity.d.ts +9 -2
- package/lib/index.d.ts +1 -0
- package/lib/index.js +4 -0
- package/lib/jupyter/index.d.ts +2 -1
- package/lib/jupyter/index.js +2 -1
- package/lib/jupyter/serverExecution.d.ts +78 -0
- package/lib/jupyter/serverExecution.js +258 -0
- package/lib/jupyter/useResumeServerExecutions.d.ts +11 -0
- package/lib/jupyter/useResumeServerExecutions.js +64 -0
- package/lib/lexical/ChatInlinePlugin.d.ts +33 -0
- package/lib/lexical/ChatInlinePlugin.js +0 -36
- package/lib/loop/core/focusRequests.d.ts +10 -0
- package/lib/loop/core/focusRequests.js +46 -0
- package/lib/loop/core/index.d.ts +894 -0
- package/lib/loop/core/index.js +264 -0
- package/lib/loop/core/promptStore.d.ts +44 -0
- package/lib/loop/core/promptStore.js +63 -0
- package/lib/loop/core/surfaceRequests.d.ts +33 -0
- package/lib/loop/core/surfaceRequests.js +29 -0
- package/lib/loop/core/toolbar.d.ts +28 -0
- package/lib/loop/core/toolbar.js +59 -0
- package/lib/loop/embed/LoopEmbed.d.ts +57 -0
- package/lib/loop/embed/LoopEmbed.js +118 -0
- package/lib/loop/extensions.d.ts +10 -0
- package/lib/loop/extensions.js +49 -0
- package/lib/loop/index.d.ts +68 -0
- package/lib/loop/index.js +87 -0
- package/lib/loop/plugins/a2a-sidebar/A2ASidebar.d.ts +48 -0
- package/lib/loop/plugins/a2a-sidebar/A2ASidebar.js +190 -0
- package/lib/loop/plugins/a2a-sidebar/index.d.ts +5 -0
- package/lib/loop/plugins/a2a-sidebar/index.js +39 -0
- package/lib/loop/plugins/a2ui/A2uiView.d.ts +12 -0
- package/lib/loop/plugins/a2ui/A2uiView.js +97 -0
- package/lib/loop/plugins/a2ui/index.d.ts +3 -0
- package/lib/loop/plugins/a2ui/index.js +50 -0
- package/lib/loop/plugins/a2ui-scene/index.d.ts +36 -0
- package/lib/loop/plugins/a2ui-scene/index.js +28 -0
- package/lib/loop/plugins/agent-a2a/index.d.ts +3 -0
- package/lib/loop/plugins/agent-a2a/index.js +26 -0
- package/lib/loop/plugins/agent-a2ui/index.d.ts +3 -0
- package/lib/loop/plugins/agent-a2ui/index.js +42 -0
- package/lib/loop/plugins/agent-a2ui-jupyter-output/index.d.ts +3 -0
- package/lib/loop/plugins/agent-a2ui-jupyter-output/index.js +53 -0
- package/lib/loop/plugins/agent-capacity/index.d.ts +39 -0
- package/lib/loop/plugins/agent-capacity/index.js +52 -0
- package/lib/loop/plugins/agent-checkpoints/index.d.ts +3 -0
- package/lib/loop/plugins/agent-checkpoints/index.js +26 -0
- package/lib/loop/plugins/agent-code-sandbox/index.d.ts +3 -0
- package/lib/loop/plugins/agent-code-sandbox/index.js +24 -0
- package/lib/loop/plugins/agent-code-sandboxes/index.d.ts +13 -0
- package/lib/loop/plugins/agent-code-sandboxes/index.js +85 -0
- package/lib/loop/plugins/agent-codemode/index.d.ts +5 -0
- package/lib/loop/plugins/agent-codemode/index.js +41 -0
- package/lib/loop/plugins/agent-compaction/index.d.ts +10 -0
- package/lib/loop/plugins/agent-compaction/index.js +34 -0
- package/lib/loop/plugins/agent-evals/index.d.ts +3 -0
- package/lib/loop/plugins/agent-evals/index.js +25 -0
- package/lib/loop/plugins/agent-guardrails/index.d.ts +3 -0
- package/lib/loop/plugins/agent-guardrails/index.js +25 -0
- package/lib/loop/plugins/agent-hooks/index.d.ts +3 -0
- package/lib/loop/plugins/agent-hooks/index.js +28 -0
- package/lib/loop/plugins/agent-inference/index.d.ts +7 -0
- package/lib/loop/plugins/agent-inference/index.js +29 -0
- package/lib/loop/plugins/agent-mcp/index.d.ts +3 -0
- package/lib/loop/plugins/agent-mcp/index.js +25 -0
- package/lib/loop/plugins/agent-memory/index.d.ts +3 -0
- package/lib/loop/plugins/agent-memory/index.js +25 -0
- package/lib/loop/plugins/agent-monitoring/index.d.ts +3 -0
- package/lib/loop/plugins/agent-monitoring/index.js +25 -0
- package/lib/loop/plugins/agent-notifications/index.d.ts +3 -0
- package/lib/loop/plugins/agent-notifications/index.js +25 -0
- package/lib/loop/plugins/agent-otel/index.d.ts +3 -0
- package/lib/loop/plugins/agent-otel/index.js +25 -0
- package/lib/loop/plugins/agent-outputs/index.d.ts +3 -0
- package/lib/loop/plugins/agent-outputs/index.js +25 -0
- package/lib/loop/plugins/agent-parameters/index.d.ts +3 -0
- package/lib/loop/plugins/agent-parameters/index.js +25 -0
- package/lib/loop/plugins/agent-skills/index.d.ts +3 -0
- package/lib/loop/plugins/agent-skills/index.js +25 -0
- package/lib/loop/plugins/agent-subagents/index.d.ts +3 -0
- package/lib/loop/plugins/agent-subagents/index.js +25 -0
- package/lib/loop/plugins/agent-tool-approvals/index.d.ts +11 -0
- package/lib/loop/plugins/agent-tool-approvals/index.js +38 -0
- package/lib/loop/plugins/agent-triggers/index.d.ts +3 -0
- package/lib/loop/plugins/agent-triggers/index.js +26 -0
- package/lib/loop/plugins/agents/AgentSummaryPanel.d.ts +20 -0
- package/lib/loop/plugins/agents/AgentSummaryPanel.js +50 -0
- package/lib/loop/plugins/agents/AnonymousKeyBadge.d.ts +35 -0
- package/lib/loop/plugins/agents/AnonymousKeyBadge.js +53 -0
- package/lib/loop/plugins/agents/DatalayerAgentBridge.d.ts +24 -0
- package/lib/loop/plugins/agents/DatalayerAgentBridge.js +102 -0
- package/lib/loop/plugins/agents/DatalayerAgentMount.d.ts +18 -0
- package/lib/loop/plugins/agents/DatalayerAgentMount.js +12 -0
- package/lib/loop/plugins/agents/SandboxSelector.d.ts +18 -0
- package/lib/loop/plugins/agents/SandboxSelector.js +99 -0
- package/lib/loop/plugins/agents/SandboxStatusBridge.d.ts +19 -0
- package/lib/loop/plugins/agents/SandboxStatusBridge.js +23 -0
- package/lib/loop/plugins/agents/SandboxView.d.ts +11 -0
- package/lib/loop/plugins/agents/SandboxView.js +43 -0
- package/lib/loop/plugins/agents/TeamMemberPicker.d.ts +17 -0
- package/lib/loop/plugins/agents/TeamMemberPicker.js +60 -0
- package/lib/loop/plugins/agents/agentIcons.d.ts +23 -0
- package/lib/loop/plugins/agents/agentIcons.js +88 -0
- package/lib/loop/plugins/agents/browserService.d.ts +50 -0
- package/lib/loop/plugins/agents/browserService.js +233 -0
- package/lib/loop/plugins/agents/index.d.ts +13 -0
- package/lib/loop/plugins/agents/index.js +17 -0
- package/lib/loop/plugins/agents/plugin.d.ts +91 -0
- package/lib/loop/plugins/agents/plugin.js +201 -0
- package/lib/loop/plugins/agents/service.d.ts +99 -0
- package/lib/loop/plugins/agents/service.js +167 -0
- package/lib/loop/plugins/agents/specSubagents.d.ts +18 -0
- package/lib/loop/plugins/agents/specSubagents.js +33 -0
- package/lib/loop/plugins/agents/switchable.d.ts +107 -0
- package/lib/loop/plugins/agents/switchable.js +405 -0
- package/lib/loop/plugins/agents/team.d.ts +87 -0
- package/lib/loop/plugins/agents/team.js +143 -0
- package/lib/loop/plugins/agents/useSandboxService.d.ts +11 -0
- package/lib/loop/plugins/agents/useSandboxService.js +36 -0
- package/lib/loop/plugins/agents/useTeamSelection.d.ts +10 -0
- package/lib/loop/plugins/agents/useTeamSelection.js +27 -0
- package/lib/loop/plugins/agentspecs/AgentspecPicker.d.ts +15 -0
- package/lib/loop/plugins/agentspecs/AgentspecPicker.js +90 -0
- package/lib/loop/plugins/agentspecs/index.d.ts +6 -0
- package/lib/loop/plugins/agentspecs/index.js +63 -0
- package/lib/loop/plugins/chat/ChatView.d.ts +20 -0
- package/lib/loop/plugins/chat/ChatView.js +1670 -0
- package/lib/loop/plugins/chat/chatViewTools.d.ts +41 -0
- package/lib/loop/plugins/chat/chatViewTools.js +92 -0
- package/lib/loop/plugins/chat/index.d.ts +111 -0
- package/lib/loop/plugins/chat/index.js +143 -0
- package/lib/loop/plugins/chat/turnState.d.ts +41 -0
- package/lib/loop/plugins/chat/turnState.js +90 -0
- package/lib/loop/plugins/chat-extras/index.d.ts +14 -0
- package/lib/loop/plugins/chat-extras/index.js +51 -0
- package/lib/loop/plugins/chat-header/HeaderView.d.ts +13 -0
- package/lib/loop/plugins/chat-header/HeaderView.js +6 -0
- package/lib/loop/plugins/chat-header/index.d.ts +3 -0
- package/lib/loop/plugins/chat-header/index.js +21 -0
- package/lib/loop/plugins/chat-view/index.d.ts +10 -0
- package/lib/loop/plugins/chat-view/index.js +29 -0
- package/lib/loop/plugins/checkpoints-sidebar/CheckpointsSidebar.d.ts +27 -0
- package/lib/loop/plugins/checkpoints-sidebar/CheckpointsSidebar.js +174 -0
- package/lib/loop/plugins/checkpoints-sidebar/index.d.ts +5 -0
- package/lib/loop/plugins/checkpoints-sidebar/index.js +39 -0
- package/lib/loop/plugins/commands/index.d.ts +20 -0
- package/lib/loop/plugins/commands/index.js +148 -0
- package/lib/loop/plugins/decks/DeckSurface.d.ts +10 -0
- package/lib/loop/plugins/decks/DeckSurface.js +6 -0
- package/lib/loop/plugins/decks/DecksMenu.d.ts +11 -0
- package/lib/loop/plugins/decks/DecksMenu.js +42 -0
- package/lib/loop/plugins/decks/index.d.ts +19 -0
- package/lib/loop/plugins/decks/index.js +133 -0
- package/lib/loop/plugins/decks/surface.d.ts +7 -0
- package/lib/loop/plugins/decks/surface.js +11 -0
- package/lib/loop/plugins/document/DocumentView.d.ts +12 -0
- package/lib/loop/plugins/document/DocumentView.js +68 -0
- package/lib/loop/plugins/document/index.d.ts +3 -0
- package/lib/loop/plugins/document/index.js +86 -0
- package/lib/loop/plugins/document/openingDocument.d.ts +28 -0
- package/lib/loop/plugins/document/openingDocument.js +122 -0
- package/lib/loop/plugins/document-toolbar/SandboxStatusItem.d.ts +16 -0
- package/lib/loop/plugins/document-toolbar/SandboxStatusItem.js +31 -0
- package/lib/loop/plugins/document-toolbar/index.d.ts +4 -0
- package/lib/loop/plugins/document-toolbar/index.js +35 -0
- package/lib/loop/plugins/document-toolbar/names.d.ts +6 -0
- package/lib/loop/plugins/document-toolbar/names.js +10 -0
- package/lib/loop/plugins/document-toolbar/plugin.d.ts +2 -0
- package/lib/loop/plugins/document-toolbar/plugin.js +38 -0
- package/lib/loop/plugins/document-view/index.d.ts +10 -0
- package/lib/loop/plugins/document-view/index.js +28 -0
- package/lib/loop/plugins/graph/GraphToggle.d.ts +17 -0
- package/lib/loop/plugins/graph/GraphToggle.js +22 -0
- package/lib/loop/plugins/graph/GraphView.d.ts +16 -0
- package/lib/loop/plugins/graph/GraphView.js +6 -0
- package/lib/loop/plugins/graph/index.d.ts +5 -0
- package/lib/loop/plugins/graph/index.js +80 -0
- package/lib/loop/plugins/graph/viewType.d.ts +10 -0
- package/lib/loop/plugins/graph/viewType.js +14 -0
- package/lib/loop/plugins/input-prompt/ComposerView.d.ts +15 -0
- package/lib/loop/plugins/input-prompt/ComposerView.js +25 -0
- package/lib/loop/plugins/input-prompt/index.d.ts +25 -0
- package/lib/loop/plugins/input-prompt/index.js +26 -0
- package/lib/loop/plugins/models/index.d.ts +3 -0
- package/lib/loop/plugins/models/index.js +49 -0
- package/lib/loop/plugins/notebook/NotebookView.d.ts +9 -0
- package/lib/loop/plugins/notebook/NotebookView.js +189 -0
- package/lib/loop/plugins/notebook/index.d.ts +3 -0
- package/lib/loop/plugins/notebook/index.js +91 -0
- package/lib/loop/plugins/notebook/openingNotebook.d.ts +72 -0
- package/lib/loop/plugins/notebook/openingNotebook.js +90 -0
- package/lib/loop/plugins/notebook-toolbar/index.d.ts +4 -0
- package/lib/loop/plugins/notebook-toolbar/index.js +45 -0
- package/lib/loop/plugins/notebook-toolbar/items.d.ts +10 -0
- package/lib/loop/plugins/notebook-toolbar/items.js +45 -0
- package/lib/loop/plugins/notebook-toolbar/names.d.ts +9 -0
- package/lib/loop/plugins/notebook-toolbar/names.js +13 -0
- package/lib/loop/plugins/notebook-toolbar/plugin.d.ts +2 -0
- package/lib/loop/plugins/notebook-toolbar/plugin.js +24 -0
- package/lib/loop/plugins/notebook-view/index.d.ts +10 -0
- package/lib/loop/plugins/notebook-view/index.js +30 -0
- package/lib/loop/plugins/page-layout/TurnPanel.d.ts +25 -0
- package/lib/loop/plugins/page-layout/TurnPanel.js +126 -0
- package/lib/loop/plugins/page-layout/index.d.ts +35 -0
- package/lib/loop/plugins/page-layout/index.js +80 -0
- package/lib/loop/plugins/plugins-panel/index.d.ts +14 -0
- package/lib/loop/plugins/plugins-panel/index.js +74 -0
- package/lib/loop/plugins/prompt/NewChatAction.d.ts +19 -0
- package/lib/loop/plugins/prompt/NewChatAction.js +10 -0
- package/lib/loop/plugins/prompt/index.d.ts +11 -0
- package/lib/loop/plugins/prompt/index.js +73 -0
- package/lib/loop/plugins/shell/editorChoice.d.ts +31 -0
- package/lib/loop/plugins/shell/editorChoice.js +58 -0
- package/lib/loop/plugins/shell/index.d.ts +47 -0
- package/lib/loop/plugins/shell/index.js +142 -0
- package/lib/loop/plugins/shell/useEditorPreviews.d.ts +32 -0
- package/lib/loop/plugins/shell/useEditorPreviews.js +217 -0
- package/lib/loop/plugins/subagent-activity/SubagentPulse.d.ts +16 -0
- package/lib/loop/plugins/subagent-activity/SubagentPulse.js +45 -0
- package/lib/loop/plugins/subagent-activity/index.d.ts +12 -0
- package/lib/loop/plugins/subagent-activity/index.js +42 -0
- package/lib/loop/plugins/view-switch/index.d.ts +46 -0
- package/lib/loop/plugins/view-switch/index.js +68 -0
- package/lib/loop/plugins/window-frame/WindowFrame.d.ts +48 -0
- package/lib/loop/plugins/window-frame/WindowFrame.js +63 -0
- package/lib/loop/plugins/window-frame/index.d.ts +6 -0
- package/lib/loop/plugins/window-frame/index.js +79 -0
- package/lib/loop/plugins/window-frame/slots.d.ts +26 -0
- package/lib/loop/plugins/window-frame/slots.js +30 -0
- package/lib/loop/presets.d.ts +167 -0
- package/lib/loop/presets.js +139 -0
- package/lib/loop/shell/LoopWorkspace.d.ts +109 -0
- package/lib/loop/shell/LoopWorkspace.js +231 -0
- package/lib/loop/shell/PluginToggles.d.ts +21 -0
- package/lib/loop/shell/PluginToggles.js +41 -0
- package/lib/loop/shell/ViewSwitcher.d.ts +24 -0
- package/lib/loop/shell/ViewSwitcher.js +43 -0
- package/lib/loop/shell/WorkspaceFullScreenAction.d.ts +25 -0
- package/lib/loop/shell/WorkspaceFullScreenAction.js +24 -0
- package/lib/loop/shell/index.d.ts +10 -0
- package/lib/loop/shell/index.js +14 -0
- package/lib/loop/shell/useWorkspaceFullScreen.d.ts +93 -0
- package/lib/loop/shell/useWorkspaceFullScreen.js +167 -0
- package/lib/loop-example-main.d.ts +1 -0
- package/lib/loop-example-main.js +42 -0
- package/lib/loop-main.d.ts +1 -0
- package/lib/loop-main.js +138 -0
- package/lib/mcp/McpServerManager.d.ts +1 -1
- package/lib/models/CodeSandboxSnapshotDTO.d.ts +1 -1
- package/lib/models/CodeSandboxVariant.d.ts +13 -5
- package/lib/models/CodeSandboxVariant.js +17 -5
- package/lib/models/Content.d.ts +26 -0
- package/lib/models/Environment.d.ts +561 -5
- package/lib/models/Environment.js +12 -1
- package/lib/models/EnvironmentDTO.d.ts +24 -6
- package/lib/models/EnvironmentDTO.js +13 -2
- package/lib/models/Exercise.d.ts +0 -2
- package/lib/models/Library.d.ts +0 -2
- package/lib/models/Notebook.d.ts +0 -2
- package/lib/models/ProjectDTO.d.ts +2 -2
- package/lib/models/ProjectDTO.js +4 -4
- package/lib/models/Runtime.d.ts +11 -11
- package/lib/models/RuntimeDTO.d.ts +16 -7
- package/lib/models/RuntimeDTO.js +9 -9
- package/lib/models/Space.d.ts +10 -0
- package/lib/models/Space.js +1 -1
- package/lib/models/SpaceDTO.d.ts +1 -1
- package/lib/models/SpaceItem.d.ts +1 -2
- package/lib/models/environments.generated.d.ts +113 -0
- package/lib/models/environments.generated.js +13 -0
- package/lib/models/index.d.ts +0 -1
- package/lib/models/index.js +0 -1
- package/lib/protocols/A2AAdapter.d.ts +39 -6
- package/lib/protocols/A2AAdapter.js +180 -11
- package/lib/protocols/ACPAdapter.js +40 -37
- package/lib/protocols/AGUIAdapter.d.ts +14 -0
- package/lib/protocols/AGUIAdapter.js +34 -9
- package/lib/protocols/BrowserAgentAdapter.d.ts +117 -0
- package/lib/protocols/BrowserAgentAdapter.js +310 -0
- package/lib/protocols/VercelAIAdapter.d.ts +10 -0
- package/lib/protocols/VercelAIAdapter.js +27 -7
- package/lib/protocols/index.d.ts +1 -0
- package/lib/protocols/index.js +1 -0
- package/lib/runtimes/actions.d.ts +3 -3
- package/lib/runtimes/actions.js +27 -14
- package/lib/runtimes/apis.d.ts +13 -4
- package/lib/runtimes/browser/agent.d.ts +54 -0
- package/lib/runtimes/browser/agent.js +63 -0
- package/lib/runtimes/browser/anonymousToken.d.ts +121 -0
- package/lib/runtimes/browser/anonymousToken.js +300 -0
- package/lib/runtimes/browser/frontendTools.d.ts +61 -0
- package/lib/runtimes/browser/frontendTools.js +152 -0
- package/lib/runtimes/browser/index.d.ts +11 -0
- package/lib/runtimes/browser/index.js +20 -0
- package/lib/runtimes/browser/model.d.ts +52 -0
- package/lib/runtimes/browser/model.js +110 -0
- package/lib/runtimes/browser/protocol.d.ts +54 -0
- package/lib/runtimes/browser/protocol.js +35 -0
- package/lib/runtimes/browser/subagents.d.ts +131 -0
- package/lib/runtimes/browser/subagents.js +241 -0
- package/lib/runtimes/index.d.ts +3 -0
- package/lib/runtimes/index.js +3 -0
- package/lib/runtimes/lifecycle.d.ts +76 -0
- package/lib/runtimes/lifecycle.js +99 -0
- package/lib/runtimes/variants.d.ts +172 -0
- package/lib/runtimes/variants.js +187 -0
- package/lib/services/reconnectToRuntime.d.ts +2 -2
- package/lib/services/reconnectToRuntime.js +3 -3
- package/lib/services/sandboxServiceManagers.d.ts +2 -2
- package/lib/services/sandboxServiceManagers.js +11 -11
- package/lib/specs/agents/agents.d.ts +128 -112
- package/lib/specs/agents/agents.js +8024 -5052
- package/lib/specs/evals.js +9 -0
- package/lib/specs/frontendTools.d.ts +3 -0
- package/lib/specs/frontendTools.js +46 -3
- package/lib/specs/mcpServers.d.ts +1 -0
- package/lib/specs/mcpServers.js +25 -2
- package/lib/specs/models.d.ts +18 -0
- package/lib/specs/models.js +154 -0
- package/lib/specs/outputs.d.ts +2 -0
- package/lib/specs/outputs.js +22 -0
- package/lib/specs/personas.js +1 -1
- package/lib/specs/teams/teams.d.ts +2 -0
- package/lib/specs/teams/teams.js +628 -111
- package/lib/state/index.d.ts +1 -1
- package/lib/state/index.js +1 -1
- package/lib/state/substates/RuntimesState.d.ts +5 -5
- package/lib/state/substates/RuntimesState.js +14 -14
- package/lib/state/substates/index.d.ts +1 -1
- package/lib/state/substates/index.js +1 -1
- package/lib/stores/agentRuntimeStore.d.ts +43 -1
- package/lib/stores/agentRuntimeStore.js +100 -11
- package/lib/stores/index.d.ts +1 -1
- package/lib/stores/index.js +1 -1
- package/lib/stories/Button.d.ts +1 -1
- package/lib/stories/Button.stories.d.ts +1 -1
- package/lib/stories/Header.d.ts +1 -1
- package/lib/stories/Header.stories.d.ts +1 -1
- package/lib/test-setup.js +66 -0
- package/lib/tools/adapters/agent-runtimes/lexicalHooks.d.ts +15 -0
- package/lib/tools/adapters/agent-runtimes/lexicalHooks.js +43 -2
- package/lib/tools/adapters/agent-runtimes/notebookHooks.d.ts +9 -0
- package/lib/tools/adapters/agent-runtimes/notebookHooks.js +12 -0
- package/lib/tools/adapters/commands/frontendCommandTools.d.ts +11 -0
- package/lib/tools/adapters/commands/frontendCommandTools.js +60 -0
- package/lib/tools/adapters/commands/index.d.ts +1 -0
- package/lib/{models/Dataset.js → tools/adapters/commands/index.js} +1 -1
- package/lib/tools/adapters/copilotkit/lexicalHooks.js +7 -3
- package/lib/tools/index.d.ts +1 -0
- package/lib/tools/index.js +1 -0
- package/lib/types/a2a.d.ts +15 -1
- package/lib/types/agents-lifecycle.d.ts +11 -6
- package/lib/types/agents.d.ts +31 -6
- package/lib/types/agentspecs.d.ts +120 -4
- package/lib/types/chat.d.ts +251 -3
- package/lib/types/checkpoints.d.ts +20 -0
- package/lib/types/config.d.ts +13 -1
- package/lib/types/connection.d.ts +1 -1
- package/lib/types/evals.d.ts +2 -0
- package/lib/types/messages.d.ts +60 -0
- package/lib/types/models.d.ts +26 -0
- package/lib/types/notifications.d.ts +15 -6
- package/lib/types/protocol.d.ts +7 -2
- package/lib/types/stream.d.ts +48 -3
- package/lib/types/stream.js +5 -0
- package/lib/types/teams.d.ts +102 -4
- package/lib/types/tool-approvals.d.ts +1 -1
- package/lib/types/tools.d.ts +8 -2
- package/lib/utils/utils.js +7 -1
- package/package.json +376 -361
- package/scripts/codegen/__pycache__/compose.cpython-313.pyc +0 -0
- package/scripts/codegen/__pycache__/versioning.cpython-313.pyc +0 -0
- package/scripts/codegen/compose.py +208 -0
- package/scripts/codegen/generate_agents.py +202 -31
- package/scripts/codegen/generate_evals.py +2 -0
- package/scripts/codegen/generate_frontend_tools.py +35 -6
- package/scripts/codegen/generate_models.py +40 -15
- package/scripts/codegen/generate_sandbox_agents.py +76 -62
- package/scripts/codegen/generate_teams.py +178 -4
- package/scripts/codegen/generate_tools.py +6 -4
- package/scripts/gen_workers.py +278 -110
- package/scripts/generate-environments-types.py +404 -0
- package/lib/chat/prompt/InputFooter.d.ts +0 -58
- package/lib/chat/prompt/InputFooter.js +0 -194
- package/lib/chat/prompt/InputPromptFooter.d.ts +0 -27
- package/lib/chat/prompt/InputPromptFooter.js +0 -15
- package/lib/chat/prompt/InputPromptHeader.d.ts +0 -15
- package/lib/chat/prompt/InputPromptHeader.js +0 -15
- package/lib/chat/usage/TokenUsageBar.d.ts +0 -8
- package/lib/hooks/useRuntimes.d.ts +0 -5
- package/lib/hooks/useRuntimes.js +0 -34
- package/lib/jupyter/kernelsHandler.d.ts +0 -8
- package/lib/jupyter/kernelsHandler.js +0 -39
- package/lib/models/Dataset.d.ts +0 -16
- package/lib/utils/Cells.d.ts +0 -2
- package/lib/utils/Cells.js +0 -28
|
@@ -0,0 +1,359 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
2
|
+
import { useCallback, useEffect, useRef, useState } from 'react';
|
|
3
|
+
import { ActionList, Overlay } from '@primer/react';
|
|
4
|
+
import { CommentDiscussionIcon, FoldIcon, BriefcaseIcon, ToolsIcon, } from '@primer/octicons-react';
|
|
5
|
+
import { Box } from '@datalayer/primer-addons';
|
|
6
|
+
import { useLexicalComposerContext } from '@lexical/react/LexicalComposerContext';
|
|
7
|
+
import { $getSelection, $isRangeSelection, COMMAND_PRIORITY_CRITICAL, KEY_ARROW_DOWN_COMMAND, KEY_ARROW_UP_COMMAND, KEY_ENTER_COMMAND, KEY_ESCAPE_COMMAND, } from 'lexical';
|
|
8
|
+
/**
|
|
9
|
+
* The commands, for now.
|
|
10
|
+
*
|
|
11
|
+
* Hardcoded and every one disabled, because none of them is wired to anything
|
|
12
|
+
* yet. A menu that lists what is coming is honest; one that accepts a choice
|
|
13
|
+
* and does nothing is not.
|
|
14
|
+
*/
|
|
15
|
+
export const PROMPT_COMMANDS = [
|
|
16
|
+
{
|
|
17
|
+
name: 'compact',
|
|
18
|
+
description: 'Shorten the conversation so far, keeping what the agent still needs.',
|
|
19
|
+
icon: FoldIcon,
|
|
20
|
+
disabled: true,
|
|
21
|
+
disabledReason: 'Not wired up yet',
|
|
22
|
+
},
|
|
23
|
+
{
|
|
24
|
+
name: 'mcp',
|
|
25
|
+
description: 'Show the MCP servers this agent can reach, and their tools.',
|
|
26
|
+
icon: ToolsIcon,
|
|
27
|
+
disabled: true,
|
|
28
|
+
disabledReason: 'Not wired up yet',
|
|
29
|
+
},
|
|
30
|
+
{
|
|
31
|
+
name: 'skills',
|
|
32
|
+
description: 'Show the skills loaded into this agent, and what they do.',
|
|
33
|
+
icon: BriefcaseIcon,
|
|
34
|
+
disabled: true,
|
|
35
|
+
disabledReason: 'Not wired up yet',
|
|
36
|
+
},
|
|
37
|
+
];
|
|
38
|
+
/**
|
|
39
|
+
* How wide the menu is, and how tall it may grow.
|
|
40
|
+
*
|
|
41
|
+
* Named because the position is computed from them: the menu is lifted its own
|
|
42
|
+
* height to sit above the caret, and held back from the right edge by its own
|
|
43
|
+
* width.
|
|
44
|
+
*/
|
|
45
|
+
const MENU_WIDTH = 440;
|
|
46
|
+
const MENU_MAX_HEIGHT = 240;
|
|
47
|
+
/**
|
|
48
|
+
* Read the `/word` immediately before the caret.
|
|
49
|
+
*
|
|
50
|
+
* Anchored to a word boundary so a path or a fraction does not open a menu:
|
|
51
|
+
* `/` counts only at the start of the text or after whitespace.
|
|
52
|
+
*/
|
|
53
|
+
function readCommandQuery(editor) {
|
|
54
|
+
let query = null;
|
|
55
|
+
editor.getEditorState().read(() => {
|
|
56
|
+
const selection = $getSelection();
|
|
57
|
+
if (!$isRangeSelection(selection) || !selection.isCollapsed()) {
|
|
58
|
+
return;
|
|
59
|
+
}
|
|
60
|
+
const node = selection.anchor.getNode();
|
|
61
|
+
const before = node.getTextContent().slice(0, selection.anchor.offset);
|
|
62
|
+
const match = /(?:^|\s)\/([\w-]*)$/.exec(before);
|
|
63
|
+
if (!match) {
|
|
64
|
+
return;
|
|
65
|
+
}
|
|
66
|
+
const domSelection = window.getSelection();
|
|
67
|
+
const rect = domSelection && domSelection.rangeCount > 0
|
|
68
|
+
? domSelection.getRangeAt(0).getBoundingClientRect()
|
|
69
|
+
: null;
|
|
70
|
+
query = { text: match[1], rect };
|
|
71
|
+
});
|
|
72
|
+
return query;
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* Offer the commands while `/` is being typed.
|
|
76
|
+
*/
|
|
77
|
+
export function CommandPlugin({ commands, }) {
|
|
78
|
+
const [editor] = useLexicalComposerContext();
|
|
79
|
+
const [query, setQuery] = useState(null);
|
|
80
|
+
const [highlighted, setHighlighted] = useState(0);
|
|
81
|
+
const anchorRef = useRef(null);
|
|
82
|
+
/* The rows, by command name, so the lit one can be brought into view. */
|
|
83
|
+
const rowRefs = useRef(new Map());
|
|
84
|
+
/* Set while the document change that inserted a command is being applied. */
|
|
85
|
+
const justInserted = useRef(false);
|
|
86
|
+
const matches = query
|
|
87
|
+
? commands.filter(command => command.name.toLowerCase().startsWith(query.text.toLowerCase()))
|
|
88
|
+
: [];
|
|
89
|
+
const open = matches.length > 0;
|
|
90
|
+
/*
|
|
91
|
+
* Where the arrows and Enter may land. A disabled row is in `matches` so it
|
|
92
|
+
* renders, and out of here so the keyboard never selects it — the two lists
|
|
93
|
+
* exist because "shown" and "choosable" stopped being the same thing.
|
|
94
|
+
*/
|
|
95
|
+
const choosable = matches.filter(command => !command.disabled);
|
|
96
|
+
/*
|
|
97
|
+
* Back to the first choosable row whenever the typing changes.
|
|
98
|
+
*
|
|
99
|
+
* Kept in range as the list narrows — a highlight past the end would submit
|
|
100
|
+
* nothing on Enter, which reads as the key being broken — and reset
|
|
101
|
+
* outright as the `@word` changes, so each new filter offers its best match
|
|
102
|
+
* rather than whichever position the last one happened to leave behind.
|
|
103
|
+
*/
|
|
104
|
+
useEffect(() => {
|
|
105
|
+
setHighlighted(0);
|
|
106
|
+
}, [query?.text]);
|
|
107
|
+
useEffect(() => {
|
|
108
|
+
setHighlighted(current => (current < choosable.length ? current : 0));
|
|
109
|
+
}, [choosable.length]);
|
|
110
|
+
/*
|
|
111
|
+
* Keep the lit row in view: the menu scrolls past a few rows, and a
|
|
112
|
+
* highlight moved below the fold is a choice the person cannot see.
|
|
113
|
+
*/
|
|
114
|
+
const litName = choosable[highlighted]?.name;
|
|
115
|
+
useEffect(() => {
|
|
116
|
+
if (!open || !litName) {
|
|
117
|
+
return;
|
|
118
|
+
}
|
|
119
|
+
const row = rowRefs.current.get(litName);
|
|
120
|
+
if (row && typeof row.scrollIntoView === 'function') {
|
|
121
|
+
row.scrollIntoView({ block: 'nearest' });
|
|
122
|
+
}
|
|
123
|
+
}, [open, litName]);
|
|
124
|
+
useEffect(() => {
|
|
125
|
+
return editor.registerUpdateListener(() => {
|
|
126
|
+
const next = readCommandQuery(editor);
|
|
127
|
+
if (justInserted.current) {
|
|
128
|
+
/*
|
|
129
|
+
* Every update belonging to the insertion, not just the first.
|
|
130
|
+
*
|
|
131
|
+
* One `editor.update()` raises several of them — the range emptied,
|
|
132
|
+
* the node placed, the trailing space — and they all run
|
|
133
|
+
* synchronously. Clearing the flag on the first let a later one
|
|
134
|
+
* reopen the menu against the chip just written, a line higher, which
|
|
135
|
+
* is what a reader saw. Clearing it on "the caret asks nothing" was
|
|
136
|
+
* the same bet in a different disguise: it assumed one of those
|
|
137
|
+
* intermediate states would read as settled, and one did not.
|
|
138
|
+
*
|
|
139
|
+
* The flag is lifted on the next macrotask instead, which is after
|
|
140
|
+
* every synchronous update from this edit and before anything a
|
|
141
|
+
* person can type.
|
|
142
|
+
*/
|
|
143
|
+
setQuery(null);
|
|
144
|
+
return;
|
|
145
|
+
}
|
|
146
|
+
setQuery(next);
|
|
147
|
+
});
|
|
148
|
+
}, [editor]);
|
|
149
|
+
/** Replace the `@partial` with the chosen name. */
|
|
150
|
+
const insert = useCallback((command) => {
|
|
151
|
+
editor.update(() => {
|
|
152
|
+
const selection = $getSelection();
|
|
153
|
+
if (!$isRangeSelection(selection) || !selection.isCollapsed()) {
|
|
154
|
+
return;
|
|
155
|
+
}
|
|
156
|
+
const node = selection.anchor.getNode();
|
|
157
|
+
const offset = selection.anchor.offset;
|
|
158
|
+
const before = node.getTextContent().slice(0, offset);
|
|
159
|
+
const match = /(?:^|\s)\/([\w-]*)$/.exec(before);
|
|
160
|
+
if (!match) {
|
|
161
|
+
return;
|
|
162
|
+
}
|
|
163
|
+
// Only the typed fragment is replaced, so whatever preceded it —
|
|
164
|
+
// including the space that made `@` a mention — survives.
|
|
165
|
+
const start = offset - match[1].length - 1;
|
|
166
|
+
selection.setTextNodeRange(node, start, node, offset);
|
|
167
|
+
// Plain text. A command is one word with no spaces in it, so the
|
|
168
|
+
// editing hazard that made a mention a node does not arise here.
|
|
169
|
+
selection.insertText(`/${command.name} `);
|
|
170
|
+
});
|
|
171
|
+
justInserted.current = true;
|
|
172
|
+
setQuery(null);
|
|
173
|
+
window.setTimeout(() => {
|
|
174
|
+
justInserted.current = false;
|
|
175
|
+
}, 0);
|
|
176
|
+
}, [editor]);
|
|
177
|
+
/*
|
|
178
|
+
* The menu owns these keys only while it is open, so Enter still submits and
|
|
179
|
+
* the arrows still move the caret the rest of the time.
|
|
180
|
+
*
|
|
181
|
+
* At `CRITICAL`, above the `HIGH` the submit handler uses. Lexical runs the
|
|
182
|
+
* higher priority first and stops at the first handler that returns true —
|
|
183
|
+
* so registering these `LOW` meant Enter reached submit before the menu ever
|
|
184
|
+
* saw it, and choosing an command sent the half-written message instead.
|
|
185
|
+
*
|
|
186
|
+
* Being above submit is safe precisely because this effect only runs while
|
|
187
|
+
* the menu is open, and each handler declines when it has nothing to do.
|
|
188
|
+
*/
|
|
189
|
+
useEffect(() => {
|
|
190
|
+
if (!open) {
|
|
191
|
+
return undefined;
|
|
192
|
+
}
|
|
193
|
+
const unregister = [
|
|
194
|
+
editor.registerCommand(KEY_ARROW_DOWN_COMMAND, (event) => {
|
|
195
|
+
/*
|
|
196
|
+
Declined when nothing can be chosen.
|
|
197
|
+
|
|
198
|
+
The menu opens for a single command that is already the one being
|
|
199
|
+
addressed — shown greyed, because a menu that hides its only row
|
|
200
|
+
looks broken — and then `% choosable.length` is `% 0`, which is
|
|
201
|
+
NaN. Handing the key back leaves the caret working as it should.
|
|
202
|
+
*/
|
|
203
|
+
if (choosable.length === 0) {
|
|
204
|
+
return false;
|
|
205
|
+
}
|
|
206
|
+
// The browser's default too: the arrow would otherwise move the
|
|
207
|
+
// caret off the `@word`, and the menu it was steering would close.
|
|
208
|
+
event.preventDefault();
|
|
209
|
+
setHighlighted(current => (current + 1) % choosable.length);
|
|
210
|
+
return true;
|
|
211
|
+
}, COMMAND_PRIORITY_CRITICAL),
|
|
212
|
+
editor.registerCommand(KEY_ARROW_UP_COMMAND, (event) => {
|
|
213
|
+
if (choosable.length === 0) {
|
|
214
|
+
return false;
|
|
215
|
+
}
|
|
216
|
+
event.preventDefault();
|
|
217
|
+
setHighlighted(current => (current - 1 + choosable.length) % choosable.length);
|
|
218
|
+
return true;
|
|
219
|
+
}, COMMAND_PRIORITY_CRITICAL),
|
|
220
|
+
editor.registerCommand(KEY_ENTER_COMMAND, (event) => {
|
|
221
|
+
const command = choosable[highlighted];
|
|
222
|
+
if (!command) {
|
|
223
|
+
return false;
|
|
224
|
+
}
|
|
225
|
+
/*
|
|
226
|
+
* The browser's default, as well as Lexical's.
|
|
227
|
+
*
|
|
228
|
+
* Returning `true` stops the command reaching the plain-text
|
|
229
|
+
* plugin, but the keypress is still a keypress in a
|
|
230
|
+
* `contenteditable` — so the browser inserted its own line break
|
|
231
|
+
* after the chip. Choosing with the mouse never did, which is
|
|
232
|
+
* exactly the shape of a missing `preventDefault`.
|
|
233
|
+
*/
|
|
234
|
+
event?.preventDefault();
|
|
235
|
+
insert(command);
|
|
236
|
+
return true;
|
|
237
|
+
}, COMMAND_PRIORITY_CRITICAL),
|
|
238
|
+
editor.registerCommand(KEY_ESCAPE_COMMAND, () => {
|
|
239
|
+
setQuery(null);
|
|
240
|
+
return true;
|
|
241
|
+
}, COMMAND_PRIORITY_CRITICAL),
|
|
242
|
+
];
|
|
243
|
+
return () => unregister.forEach(remove => remove());
|
|
244
|
+
}, [editor, open, choosable, highlighted, insert]);
|
|
245
|
+
if (!open || !query?.rect) {
|
|
246
|
+
return null;
|
|
247
|
+
}
|
|
248
|
+
return (_jsxs(_Fragment, { children: [_jsx(Box, { ref: anchorRef, sx: {
|
|
249
|
+
position: 'fixed',
|
|
250
|
+
left: query.rect.left,
|
|
251
|
+
top: query.rect.top,
|
|
252
|
+
width: 1,
|
|
253
|
+
height: query.rect.height || 16,
|
|
254
|
+
pointerEvents: 'none',
|
|
255
|
+
} }), _jsx(Overlay, { returnFocusRef: anchorRef, onEscape: () => setQuery(null), onClickOutside: () => setQuery(null), anchorSide: "outside-top",
|
|
256
|
+
// The caret already has focus and must keep it: a person is still
|
|
257
|
+
// typing, and the menu is a suggestion rather than a destination.
|
|
258
|
+
preventFocusOnOpen: true,
|
|
259
|
+
/*
|
|
260
|
+
* Primer's own width prop, not an `sx` width.
|
|
261
|
+
*
|
|
262
|
+
* `Overlay` renders its width as a `data-width-*` attribute backed by
|
|
263
|
+
* a CSS-module rule, and the default `auto` means "size to content" —
|
|
264
|
+
* which an `sx` width does not reliably beat, since the two are equal
|
|
265
|
+
* specificity and the module's rule wins on source order. That is why
|
|
266
|
+
* the menu stayed as wide as the longest description in it. `medium`
|
|
267
|
+
* is 320px.
|
|
268
|
+
*/
|
|
269
|
+
width: "large",
|
|
270
|
+
/*
|
|
271
|
+
* Positioned through `style`, not `sx`.
|
|
272
|
+
*
|
|
273
|
+
* `Overlay` writes `left`, `right`, `top`, `bottom` and `position` as
|
|
274
|
+
* *inline* styles taken from its own props, and spreads a `style` prop
|
|
275
|
+
* last. An `sx` rule is a class, and a class never beats an inline
|
|
276
|
+
* style — so every position written there was discarded and the menu
|
|
277
|
+
* rendered wherever the default left it: pinned to the left edge of
|
|
278
|
+
* the window, a long way from the `@` it belongs to.
|
|
279
|
+
*
|
|
280
|
+
* Anchored to the caret: `left` at the character, and its bottom edge
|
|
281
|
+
* just above the line, so it sits over what came before rather than
|
|
282
|
+
* over the word being typed. Clamped so a caret near the right edge
|
|
283
|
+
* does not push it off screen.
|
|
284
|
+
*/
|
|
285
|
+
style: {
|
|
286
|
+
position: 'fixed',
|
|
287
|
+
left: Math.max(8, Math.min(query.rect.left, window.innerWidth - MENU_WIDTH - 8)),
|
|
288
|
+
/*
|
|
289
|
+
The bottom edge, pinned above the caret — not the top edge pulled
|
|
290
|
+
up by a transform.
|
|
291
|
+
|
|
292
|
+
`top` plus `translateY(-100%)` is a position that depends on the
|
|
293
|
+
element's own height, and the height is only known once its rows
|
|
294
|
+
have been laid out. So it painted once at the caret's line and
|
|
295
|
+
again where it belonged, which reads as the menu falling into
|
|
296
|
+
place.
|
|
297
|
+
|
|
298
|
+
`bottom` needs no such measurement: the browser resolves it
|
|
299
|
+
against the viewport, and the first paint is the final one.
|
|
300
|
+
*/
|
|
301
|
+
...(query.rect.top >= MENU_MAX_HEIGHT + 16
|
|
302
|
+
? { bottom: window.innerHeight - query.rect.top + 6, top: 'auto' }
|
|
303
|
+
: // No room above — a caret near the top of the window — so it
|
|
304
|
+
// hangs below the line instead of being pushed off screen.
|
|
305
|
+
{
|
|
306
|
+
top: query.rect.top + (query.rect.height || 16) + 6,
|
|
307
|
+
bottom: 'auto',
|
|
308
|
+
}),
|
|
309
|
+
right: 'auto',
|
|
310
|
+
}, sx: {
|
|
311
|
+
maxHeight: MENU_MAX_HEIGHT,
|
|
312
|
+
overflowY: 'auto',
|
|
313
|
+
maxWidth: 'calc(100vw - 16px)',
|
|
314
|
+
}, children: _jsx(Box, { sx: { width: '100%', maxWidth: MENU_WIDTH, minWidth: 0 }, children: _jsx(ActionList, { selectionVariant: "single", children: matches.map(command => {
|
|
315
|
+
const index = choosable.indexOf(command);
|
|
316
|
+
return (_jsxs(ActionList.Item, { ref: element => {
|
|
317
|
+
if (element) {
|
|
318
|
+
rowRefs.current.set(command.name, element);
|
|
319
|
+
}
|
|
320
|
+
else {
|
|
321
|
+
rowRefs.current.delete(command.name);
|
|
322
|
+
}
|
|
323
|
+
}, active: index >= 0 && index === highlighted, "aria-disabled": command.disabled, title: command.disabledReason, onSelect: () => {
|
|
324
|
+
if (!command.disabled) {
|
|
325
|
+
insert(command);
|
|
326
|
+
}
|
|
327
|
+
},
|
|
328
|
+
/*
|
|
329
|
+
The highlight, drawn here rather than asked for.
|
|
330
|
+
|
|
331
|
+
`active` is Primer's "the keyboard is here" state and this
|
|
332
|
+
list renders it faintly; `selected` draws a tick in the
|
|
333
|
+
leading-visual slot, which these rows already fill with the
|
|
334
|
+
command's own icon — so neither showed. The row Enter would
|
|
335
|
+
take looked exactly like the rest, which is the one thing a
|
|
336
|
+
menu driven by arrow keys must not do.
|
|
337
|
+
|
|
338
|
+
A background says it plainly, and says it the same way
|
|
339
|
+
whatever variant the list is in.
|
|
340
|
+
*/
|
|
341
|
+
sx: {
|
|
342
|
+
...(index >= 0 && index === highlighted
|
|
343
|
+
? { bg: 'accent.subtle' }
|
|
344
|
+
: null),
|
|
345
|
+
...(command.disabled ? { opacity: 0.5 } : null),
|
|
346
|
+
}, children: [_jsx(ActionList.LeadingVisual, { children: command.icon ? (_jsx(command.icon, {})) : (_jsx(CommentDiscussionIcon, {})) }), command.name, command.description ? (_jsx(ActionList.Description, { variant: "block",
|
|
347
|
+
/* Wrapped and breakable. `minWidth: 0` is the load-bearing
|
|
348
|
+
one: a grid item defaults to `min-content`, so without
|
|
349
|
+
it the description refuses to be narrower than its
|
|
350
|
+
longest unbroken run and pushes the row wide. */
|
|
351
|
+
sx: {
|
|
352
|
+
display: 'block',
|
|
353
|
+
whiteSpace: 'normal',
|
|
354
|
+
overflowWrap: 'anywhere',
|
|
355
|
+
minWidth: 0,
|
|
356
|
+
}, children: command.description })) : null] }, command.name));
|
|
357
|
+
}) }) }) })] }));
|
|
358
|
+
}
|
|
359
|
+
export default CommandPlugin;
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* What an `@agent` looks like in the prompt.
|
|
3
|
+
*
|
|
4
|
+
* Its own module because `MentionNode.decorate` returns it and a Lexical node
|
|
5
|
+
* file that also carried a styled component would be two things at once.
|
|
6
|
+
*
|
|
7
|
+
* @module chat/prompt/plugins/MentionChip
|
|
8
|
+
*/
|
|
9
|
+
import type { JSX } from 'react';
|
|
10
|
+
import type { Icon } from '@primer/octicons-react';
|
|
11
|
+
export declare function MentionChip({ name, icon: IconComponent, }: {
|
|
12
|
+
name: string;
|
|
13
|
+
icon?: Icon;
|
|
14
|
+
}): JSX.Element;
|
|
15
|
+
export default MentionChip;
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { Box } from '@datalayer/primer-addons';
|
|
3
|
+
export function MentionChip({ name, icon: IconComponent, }) {
|
|
4
|
+
return (_jsxs(Box, { as: "span",
|
|
5
|
+
// `contentEditable={false}` is what stops the caret entering it: without
|
|
6
|
+
// it a person can put the cursor between the icon and the name and type
|
|
7
|
+
// into a mention.
|
|
8
|
+
contentEditable: false, sx: {
|
|
9
|
+
display: 'inline-flex',
|
|
10
|
+
alignItems: 'center',
|
|
11
|
+
gap: 1,
|
|
12
|
+
px: 1,
|
|
13
|
+
py: '1px',
|
|
14
|
+
mx: '1px',
|
|
15
|
+
borderRadius: 6,
|
|
16
|
+
bg: 'accent.subtle',
|
|
17
|
+
color: 'accent.fg',
|
|
18
|
+
fontSize: 1,
|
|
19
|
+
lineHeight: 1.4,
|
|
20
|
+
whiteSpace: 'nowrap',
|
|
21
|
+
userSelect: 'none',
|
|
22
|
+
}, children: [IconComponent ? _jsx(IconComponent, { size: 12 }) : null, name] }));
|
|
23
|
+
}
|
|
24
|
+
export default MentionChip;
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* An `@agent` in the prompt, as one thing.
|
|
3
|
+
*
|
|
4
|
+
* It used to be plain text — `@Notebook Compactor` typed straight into the
|
|
5
|
+
* paragraph — which reads correctly and edits badly. A name with a space in it
|
|
6
|
+
* is several words to a text editor: backspace takes off "Compactor" and
|
|
7
|
+
* leaves "@Notebook", which is a mention of somebody who does not exist, and
|
|
8
|
+
* arrow keys walk through the middle of it. Whatever a person does to half a
|
|
9
|
+
* mention, the model still receives it as an address.
|
|
10
|
+
*
|
|
11
|
+
* A `DecoratorNode` makes it atomic: selected in one, moved in one, deleted in
|
|
12
|
+
* one. `getTextContent` still returns `@Name`, so the string handed to the
|
|
13
|
+
* agent is exactly what it was before — the change is to editing, not to the
|
|
14
|
+
* message.
|
|
15
|
+
*
|
|
16
|
+
* @module chat/prompt/plugins/MentionNode
|
|
17
|
+
*/
|
|
18
|
+
import type { JSX } from 'react';
|
|
19
|
+
import { DecoratorNode, type LexicalNode, type NodeKey, type SerializedLexicalNode, type Spread } from 'lexical';
|
|
20
|
+
import type { Icon } from '@primer/octicons-react';
|
|
21
|
+
/** What the node needs to draw and to serialise itself. */
|
|
22
|
+
export type MentionPayload = {
|
|
23
|
+
/** The agent's name, as typed after `@`. */
|
|
24
|
+
name: string;
|
|
25
|
+
/** The icon its spec asked for, resolved by whoever created the node. */
|
|
26
|
+
icon?: Icon;
|
|
27
|
+
};
|
|
28
|
+
/**
|
|
29
|
+
* A mention on its way through the clipboard or a saved editor state.
|
|
30
|
+
*
|
|
31
|
+
* The name only. `icon` is a React component, which does not survive
|
|
32
|
+
* `JSON.stringify` and has no business trying to — a mention pasted into a
|
|
33
|
+
* different prompt is drawn with whatever that prompt knows about the agent,
|
|
34
|
+
* and the name is the part that addresses it.
|
|
35
|
+
*/
|
|
36
|
+
export type SerializedMentionNode = Spread<{
|
|
37
|
+
name: string;
|
|
38
|
+
}, SerializedLexicalNode>;
|
|
39
|
+
export declare class MentionNode extends DecoratorNode<JSX.Element> {
|
|
40
|
+
__name: string;
|
|
41
|
+
__icon?: Icon;
|
|
42
|
+
static getType(): string;
|
|
43
|
+
static clone(node: MentionNode): MentionNode;
|
|
44
|
+
constructor(payload?: MentionPayload, key?: NodeKey);
|
|
45
|
+
static importJSON(serialized: SerializedMentionNode): MentionNode;
|
|
46
|
+
exportJSON(): SerializedMentionNode;
|
|
47
|
+
/**
|
|
48
|
+
* What the prompt is worth as a string.
|
|
49
|
+
*
|
|
50
|
+
* The whole point of keeping this exact: the agent is reachable because it
|
|
51
|
+
* is one of the parent's tools and the tool is named after it, so a mention
|
|
52
|
+
* is a hint in the prompt rather than a control channel. A person can still
|
|
53
|
+
* type `@Name` by hand and it works the same way.
|
|
54
|
+
*/
|
|
55
|
+
getTextContent(): string;
|
|
56
|
+
/** Sits in the line of text rather than on a line of its own. */
|
|
57
|
+
isInline(): boolean;
|
|
58
|
+
/** Selectable as a unit, which is what makes one backspace remove it. */
|
|
59
|
+
isKeyboardSelectable(): boolean;
|
|
60
|
+
createDOM(): HTMLElement;
|
|
61
|
+
updateDOM(): false;
|
|
62
|
+
decorate(): JSX.Element;
|
|
63
|
+
}
|
|
64
|
+
export declare function $createMentionNode(payload: MentionPayload): MentionNode;
|
|
65
|
+
export declare function $isMentionNode(node: LexicalNode | null | undefined): node is MentionNode;
|
|
66
|
+
export default MentionNode;
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { DecoratorNode, } from 'lexical';
|
|
3
|
+
import { MentionChip } from './MentionChip';
|
|
4
|
+
export class MentionNode extends DecoratorNode {
|
|
5
|
+
__name;
|
|
6
|
+
__icon;
|
|
7
|
+
static getType() {
|
|
8
|
+
return 'agent-mention';
|
|
9
|
+
}
|
|
10
|
+
static clone(node) {
|
|
11
|
+
return new MentionNode({ name: node.__name, icon: node.__icon }, node.__key);
|
|
12
|
+
}
|
|
13
|
+
/*
|
|
14
|
+
* `payload` has a default, and that is not tidiness.
|
|
15
|
+
*
|
|
16
|
+
* Lexical inspects the constructor's arity when a node type is registered:
|
|
17
|
+
* two required arguments and it insists on a static `importJSON`, refusing
|
|
18
|
+
* to register otherwise — which surfaced as the whole view failing to load
|
|
19
|
+
* rather than as a mention that did not draw. Both halves are supplied here.
|
|
20
|
+
*/
|
|
21
|
+
constructor(payload = { name: '' }, key) {
|
|
22
|
+
super(key);
|
|
23
|
+
this.__name = payload.name;
|
|
24
|
+
this.__icon = payload.icon;
|
|
25
|
+
}
|
|
26
|
+
static importJSON(serialized) {
|
|
27
|
+
return $createMentionNode({ name: serialized.name });
|
|
28
|
+
}
|
|
29
|
+
exportJSON() {
|
|
30
|
+
return {
|
|
31
|
+
...super.exportJSON(),
|
|
32
|
+
type: MentionNode.getType(),
|
|
33
|
+
version: 1,
|
|
34
|
+
name: this.__name,
|
|
35
|
+
};
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* What the prompt is worth as a string.
|
|
39
|
+
*
|
|
40
|
+
* The whole point of keeping this exact: the agent is reachable because it
|
|
41
|
+
* is one of the parent's tools and the tool is named after it, so a mention
|
|
42
|
+
* is a hint in the prompt rather than a control channel. A person can still
|
|
43
|
+
* type `@Name` by hand and it works the same way.
|
|
44
|
+
*/
|
|
45
|
+
getTextContent() {
|
|
46
|
+
return `@${this.__name}`;
|
|
47
|
+
}
|
|
48
|
+
/** Sits in the line of text rather than on a line of its own. */
|
|
49
|
+
isInline() {
|
|
50
|
+
return true;
|
|
51
|
+
}
|
|
52
|
+
/** Selectable as a unit, which is what makes one backspace remove it. */
|
|
53
|
+
isKeyboardSelectable() {
|
|
54
|
+
return true;
|
|
55
|
+
}
|
|
56
|
+
createDOM() {
|
|
57
|
+
const span = document.createElement('span');
|
|
58
|
+
// Baseline-aligned, so a chip does not lift the line it sits in.
|
|
59
|
+
span.style.display = 'inline-flex';
|
|
60
|
+
span.style.verticalAlign = 'middle';
|
|
61
|
+
return span;
|
|
62
|
+
}
|
|
63
|
+
updateDOM() {
|
|
64
|
+
// The chip is rendered by React; Lexical never has to patch this element.
|
|
65
|
+
return false;
|
|
66
|
+
}
|
|
67
|
+
decorate() {
|
|
68
|
+
return _jsx(MentionChip, { name: this.__name, icon: this.__icon });
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
export function $createMentionNode(payload) {
|
|
72
|
+
return new MentionNode(payload);
|
|
73
|
+
}
|
|
74
|
+
export function $isMentionNode(node) {
|
|
75
|
+
return node instanceof MentionNode;
|
|
76
|
+
}
|
|
77
|
+
export default MentionNode;
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
/** How many prompts a composer keeps of its own, on top of the seed. */
|
|
2
|
+
export declare const MAX_LOCAL_PROMPTS = 100;
|
|
3
|
+
export type HistoryDirection = 'up' | 'down';
|
|
4
|
+
export type PromptHistoryState = {
|
|
5
|
+
/** What the runtime remembered, oldest first. */
|
|
6
|
+
readonly seeded: readonly string[];
|
|
7
|
+
/** What this composer sent, oldest first. */
|
|
8
|
+
readonly local: readonly string[];
|
|
9
|
+
/** Where the walk is; `entries.length` is the draft. */
|
|
10
|
+
readonly cursor: number;
|
|
11
|
+
/** What was being typed when the walk began. */
|
|
12
|
+
readonly draft: string;
|
|
13
|
+
};
|
|
14
|
+
/** The whole history, oldest first, without the seed's own entries repeated. */
|
|
15
|
+
export declare function historyEntries(state: PromptHistoryState): string[];
|
|
16
|
+
export declare function createPromptHistory(seeded?: readonly string[]): PromptHistoryState;
|
|
17
|
+
/**
|
|
18
|
+
* The runtime's list, arrived or refreshed.
|
|
19
|
+
*
|
|
20
|
+
* The walk starts over from the draft: the entries under the cursor may have
|
|
21
|
+
* moved, and a cursor kept across that would land on the wrong prompt.
|
|
22
|
+
*/
|
|
23
|
+
export declare function reseed(state: PromptHistoryState, seeded: readonly string[]): PromptHistoryState;
|
|
24
|
+
/** A prompt was sent: it becomes the newest entry, and the walk starts over. */
|
|
25
|
+
export declare function remember(state: PromptHistoryState, prompt: string): PromptHistoryState;
|
|
26
|
+
/** Something was typed: the walk is over, and what is on screen is the draft. */
|
|
27
|
+
export declare function edited(state: PromptHistoryState): PromptHistoryState;
|
|
28
|
+
/**
|
|
29
|
+
* One step through the history.
|
|
30
|
+
*
|
|
31
|
+
* `current` is what the composer shows now; it is kept as the draft when the
|
|
32
|
+
* first step up leaves it. Nothing to step to — older than the oldest, or
|
|
33
|
+
* newer than the draft — answers `null`, and the key goes on to do what it
|
|
34
|
+
* does in an editor.
|
|
35
|
+
*/
|
|
36
|
+
export declare function step(state: PromptHistoryState, direction: HistoryDirection, current: string): {
|
|
37
|
+
state: PromptHistoryState;
|
|
38
|
+
text: string;
|
|
39
|
+
} | null;
|
|
40
|
+
/**
|
|
41
|
+
* A composer's history: what to remember, and where the arrow keys go.
|
|
42
|
+
*
|
|
43
|
+
* Held in a ref rather than in state, because the walk has to answer a
|
|
44
|
+
* keystroke on the spot — the text goes into the composer's own value, and
|
|
45
|
+
* nothing here needs to render.
|
|
46
|
+
*/
|
|
47
|
+
export declare function usePromptHistory(seeded?: readonly string[]): {
|
|
48
|
+
remember: (prompt: string) => void;
|
|
49
|
+
edited: () => void;
|
|
50
|
+
navigate: (direction: HistoryDirection, current: string) => string | null;
|
|
51
|
+
};
|
|
52
|
+
export default usePromptHistory;
|