@datalayer/agent-runtimes 1.3.90 → 1.3.93
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/dist-embed/assets/coincident.worker-Dd47v4fq.js +9 -0
- package/dist-embed/assets/comlink.worker-DmOp1QjG.js +9 -0
- package/dist-embed/datalayer-app.css +1 -0
- package/dist-embed/datalayer-app.js +4 -0
- package/dist-embed/lite-service-worker.js +91 -0
- package/lib/{loop → apps}/apps/AppComposer.d.ts +1 -1
- package/lib/{loop → apps}/apps/AppComposer.js +1 -1
- package/lib/{loop → apps}/apps/AppFeedback.d.ts +1 -1
- package/lib/{loop → apps}/apps/AppFeedback.js +12 -3
- package/lib/{loop → apps}/apps/AppKept.d.ts +1 -1
- package/lib/{loop → apps}/apps/AppRenderer.d.ts +1 -1
- package/lib/{loop → apps}/apps/AppRenderer.js +2 -2
- package/lib/{loop → apps}/apps/AppRuntimePlugins.js +1 -1
- package/lib/{loop → apps}/apps/agent.js +1 -1
- package/lib/{loop → apps}/apps/appspec.d.ts +1 -1
- package/lib/{loop → apps}/apps/checks.js +1 -1
- package/lib/{loop → apps}/apps/composer.d.ts +1 -1
- package/lib/{loop → apps}/apps/computer.d.ts +1 -1
- package/lib/{loop → apps}/apps/customComponents.js +1 -1
- package/lib/{loop → apps}/apps/feedback.d.ts +4 -3
- package/lib/{loop → apps}/apps/feedback.js +4 -2
- package/lib/{loop → apps}/apps/hostTools.d.ts +1 -1
- package/lib/{loop → apps}/apps/index.d.ts +1 -1
- package/lib/{loop → apps}/apps/index.js +1 -1
- package/lib/{loop → apps}/apps/kept.d.ts +1 -1
- package/lib/{loop → apps}/apps/language.d.ts +1 -1
- package/lib/{loop → apps}/apps/pluginPair.d.ts +1 -1
- package/lib/{loop → apps}/apps/records.d.ts +1 -1
- package/lib/{loop → apps}/apps/rules.js +1 -1
- package/lib/{loop → apps}/apps/saved.d.ts +1 -1
- package/lib/{loop → apps}/apps/saved.js +1 -1
- package/lib/{loop → apps}/apps/settingsInputs.d.ts +1 -1
- package/lib/{loop → apps}/apps/settingsInputs.js +1 -1
- package/lib/{loop → apps}/apps/threads.d.ts +1 -1
- package/lib/{loop → apps}/apps/uploads.d.ts +1 -1
- package/lib/{loop → apps}/apps/visitorToken.js +1 -1
- package/lib/{loop → apps}/apps/yaml.js +1 -1
- package/lib/{loop → apps}/core/a2uiComponents.js +2 -2
- package/lib/{loop → apps}/core/canvasBlocks.js +2 -2
- package/lib/{loop → apps}/core/focusRequests.js +1 -1
- package/lib/{loop → apps}/core/index.d.ts +19 -0
- package/lib/{loop → apps}/core/index.js +28 -1
- package/lib/{loop → apps}/core/promptStore.js +1 -1
- package/lib/{loop → apps}/core/surfaceRequests.d.ts +1 -1
- package/lib/{loop → apps}/core/toolbar.js +1 -1
- package/lib/{loop → apps}/embed/AppEmbed.js +1 -1
- package/lib/{loop → apps}/embed/LoopEmbed.d.ts +1 -1
- package/lib/{loop → apps}/embed/LoopEmbed.js +1 -1
- package/lib/{loop → apps}/embed/datalayer-app.js +1 -1
- package/lib/{loop → apps}/embed/element.js +1 -1
- package/lib/{loop → apps}/embed/embedConfig.d.ts +1 -1
- package/lib/{loop → apps}/embed/embedSession.d.ts +1 -1
- package/lib/{loop → apps}/embed/hostBridge.d.ts +1 -1
- package/lib/{loop → apps}/extensions.js +1 -1
- package/lib/{loop → apps}/index.d.ts +1 -1
- package/lib/{loop → apps}/index.js +1 -1
- package/lib/{loop → apps}/plugins/a2a-sidebar/A2ASidebar.d.ts +1 -1
- package/lib/{loop → apps}/plugins/a2a-sidebar/A2ASidebar.js +1 -1
- package/lib/{loop → apps}/plugins/a2a-sidebar/index.js +1 -1
- package/lib/{loop → apps}/plugins/a2ui/A2uiView.d.ts +1 -1
- package/lib/{loop → apps}/plugins/a2ui/index.js +1 -1
- package/lib/{loop → apps}/plugins/a2ui-scene/index.d.ts +1 -1
- package/lib/{loop → apps}/plugins/a2ui-surface/InlineSurface.d.ts +2 -2
- package/lib/{loop → apps}/plugins/a2ui-surface/SurfaceToolResult.d.ts +1 -1
- package/lib/{loop → apps}/plugins/a2ui-surface/ownComponents.js +1 -1
- package/lib/{loop → apps}/plugins/a2ui-surface/toolResult.d.ts +1 -1
- package/lib/{loop → apps}/plugins/agent-a2a/index.js +2 -2
- package/lib/{loop → apps}/plugins/agent-a2ui/index.js +1 -1
- package/lib/{loop → apps}/plugins/agent-a2ui-jupyter-output/index.js +1 -1
- package/lib/{loop → apps}/plugins/agent-capacity/index.d.ts +2 -2
- package/lib/{loop → apps}/plugins/agent-capacity/index.js +2 -2
- package/lib/{loop → apps}/plugins/agent-checkpoints/index.js +1 -1
- package/lib/{loop → apps}/plugins/agent-code-sandbox/index.js +1 -1
- package/lib/{loop → apps}/plugins/agent-code-sandboxes/index.js +1 -1
- package/lib/{loop → apps}/plugins/agent-codemode/index.js +1 -1
- package/lib/{loop → apps}/plugins/agent-compaction/index.js +1 -1
- package/lib/{loop → apps}/plugins/agent-evals/index.js +2 -2
- package/lib/{loop → apps}/plugins/agent-guardrails/index.js +2 -2
- package/lib/{loop → apps}/plugins/agent-hooks/index.js +1 -1
- package/lib/{loop → apps}/plugins/agent-inference/index.js +1 -1
- package/lib/{loop → apps}/plugins/agent-mcp/index.js +2 -2
- package/lib/{loop → apps}/plugins/agent-memory/index.js +2 -2
- package/lib/{loop → apps}/plugins/agent-monitoring/index.js +2 -2
- package/lib/{loop → apps}/plugins/agent-notifications/index.js +2 -2
- package/lib/{loop → apps}/plugins/agent-otel/index.js +1 -1
- package/lib/{loop → apps}/plugins/agent-outputs/index.js +1 -1
- package/lib/{loop → apps}/plugins/agent-parameters/index.js +2 -2
- package/lib/{loop → apps}/plugins/agent-skills/index.js +2 -2
- package/lib/{loop → apps}/plugins/agent-subagents/index.js +2 -2
- package/lib/{loop → apps}/plugins/agent-tool-approvals/index.js +1 -1
- package/lib/{loop → apps}/plugins/agent-triggers/index.js +1 -1
- package/lib/{loop → apps}/plugins/agents/AgentSummaryPanel.d.ts +1 -1
- package/lib/{loop → apps}/plugins/agents/AnonymousKeyBadge.d.ts +1 -1
- package/lib/{loop → apps}/plugins/agents/DatalayerAgentBridge.d.ts +1 -1
- package/lib/{loop → apps}/plugins/agents/DatalayerAgentMount.d.ts +1 -1
- package/lib/{loop → apps}/plugins/agents/SandboxSelector.d.ts +1 -1
- package/lib/{loop → apps}/plugins/agents/SandboxStatusBridge.d.ts +1 -1
- package/lib/{loop → apps}/plugins/agents/SandboxView.d.ts +1 -1
- package/lib/{loop → apps}/plugins/agents/TeamMemberPicker.d.ts +1 -1
- package/lib/{loop → apps}/plugins/agents/agentIcons.d.ts +1 -1
- package/lib/{loop → apps}/plugins/agents/agentIcons.js +1 -1
- package/lib/{loop → apps}/plugins/agents/appLaunch.d.ts +1 -1
- package/lib/{loop → apps}/plugins/agents/browserService.js +1 -1
- package/lib/{loop → apps}/plugins/agents/index.d.ts +1 -1
- package/lib/{loop → apps}/plugins/agents/index.js +1 -1
- package/lib/{loop → apps}/plugins/agents/plugin.d.ts +1 -1
- package/lib/{loop → apps}/plugins/agents/service.d.ts +1 -1
- package/lib/{loop → apps}/plugins/agents/service.js +1 -1
- package/lib/{loop → apps}/plugins/agents/specSubagents.d.ts +1 -1
- package/lib/{loop → apps}/plugins/agents/switchable.d.ts +1 -1
- package/lib/{loop → apps}/plugins/agents/switchable.js +1 -1
- package/lib/{loop → apps}/plugins/agents/team.d.ts +1 -1
- package/lib/{loop → apps}/plugins/agents/team.js +1 -1
- package/lib/{loop → apps}/plugins/agents/useSandboxService.js +1 -1
- package/lib/{loop → apps}/plugins/agents/useTeamSelection.js +1 -1
- package/lib/{loop → apps}/plugins/agentspecs/AgentspecPicker.d.ts +1 -1
- package/lib/{loop → apps}/plugins/agentspecs/index.js +1 -1
- package/lib/{loop → apps}/plugins/app-activity/AppActivity.d.ts +1 -1
- package/lib/{loop → apps}/plugins/app-components/index.d.ts +1 -1
- package/lib/{loop → apps}/plugins/app-components/index.js +1 -1
- package/lib/{loop → apps}/plugins/app-computer/AppComputer.d.ts +1 -1
- package/lib/{loop → apps}/plugins/app-computer/AppComputer.js +31 -8
- package/lib/{loop → apps}/plugins/app-elements/AppElements.d.ts +1 -1
- package/lib/{loop → apps}/plugins/app-elements/index.d.ts +1 -1
- package/lib/{loop → apps}/plugins/app-elements/index.js +1 -1
- package/lib/{loop → apps}/plugins/app-page/AppPage.d.ts +1 -1
- package/lib/{loop → apps}/plugins/app-page/AppPage.js +25 -7
- package/lib/{loop → apps}/plugins/app-page/appPageModel.d.ts +1 -1
- package/lib/{loop → apps}/plugins/app-page/index.d.ts +1 -1
- package/lib/{loop → apps}/plugins/app-page/pageRun.d.ts +1 -1
- package/lib/{loop → apps}/plugins/app-page/pageRun.js +1 -1
- package/lib/{loop → apps}/plugins/app-rules/AppRulesCard.d.ts +1 -1
- package/lib/{loop → apps}/plugins/assistant/index.d.ts +1 -1
- package/lib/{loop → apps}/plugins/assistant-characters/index.d.ts +1 -1
- package/lib/{loop → apps}/plugins/assistant-characters/index.js +1 -1
- package/lib/{loop → apps}/plugins/canvas-blocks/index.d.ts +1 -1
- package/lib/{loop → apps}/plugins/canvas-blocks/index.js +1 -1
- package/lib/{loop → apps}/plugins/chat/ChatView.d.ts +1 -1
- package/lib/{loop → apps}/plugins/chat/ChatView.js +49 -24
- package/lib/{loop → apps}/plugins/chat/chatViewTools.js +1 -1
- package/lib/{loop → apps}/plugins/chat/index.js +1 -1
- package/lib/{loop → apps}/plugins/chat/turnState.d.ts +1 -1
- package/lib/{loop → apps}/plugins/chat/turnState.js +1 -1
- package/lib/{loop → apps}/plugins/chat-extras/index.js +1 -1
- package/lib/{loop → apps}/plugins/chat-header/HeaderView.d.ts +1 -1
- package/lib/{loop → apps}/plugins/chat-view/index.js +1 -1
- package/lib/{loop → apps}/plugins/checkpoints-sidebar/CheckpointsSidebar.d.ts +1 -1
- package/lib/{loop → apps}/plugins/checkpoints-sidebar/CheckpointsSidebar.js +1 -1
- package/lib/{loop → apps}/plugins/checkpoints-sidebar/index.js +1 -1
- package/lib/{loop → apps}/plugins/commands/index.js +1 -1
- package/lib/{loop → apps}/plugins/decks/index.js +1 -1
- package/lib/{loop → apps}/plugins/decks/surface.d.ts +1 -1
- package/lib/{loop → apps}/plugins/decks/surface.js +1 -1
- package/lib/{loop → apps}/plugins/document/DocumentView.d.ts +1 -1
- package/lib/{loop → apps}/plugins/document/index.js +1 -1
- package/lib/{loop → apps}/plugins/document/openingDocument.d.ts +1 -1
- package/lib/{loop → apps}/plugins/document-toolbar/SandboxStatusItem.d.ts +1 -1
- package/lib/{loop → apps}/plugins/document-toolbar/index.js +1 -1
- package/lib/{loop → apps}/plugins/document-toolbar/names.d.ts +1 -1
- package/lib/{loop → apps}/plugins/document-toolbar/names.js +1 -1
- package/lib/{loop → apps}/plugins/document-toolbar/plugin.js +1 -1
- package/lib/{loop → apps}/plugins/document-view/index.js +1 -1
- package/lib/{loop → apps}/plugins/graph/GraphToggle.d.ts +1 -1
- package/lib/{loop → apps}/plugins/graph/GraphView.d.ts +1 -1
- package/lib/{loop → apps}/plugins/graph/index.js +1 -1
- package/lib/{loop → apps}/plugins/graph/viewType.d.ts +1 -1
- package/lib/{loop → apps}/plugins/graph/viewType.js +1 -1
- package/lib/{loop → apps}/plugins/input-prompt/ComposerView.d.ts +1 -1
- package/lib/{loop → apps}/plugins/models/index.js +1 -1
- package/lib/{loop → apps}/plugins/notebook/NotebookView.d.ts +1 -1
- package/lib/{loop → apps}/plugins/notebook/index.js +1 -1
- package/lib/{loop → apps}/plugins/notebook/openingNotebook.d.ts +1 -1
- package/lib/{loop → apps}/plugins/notebook-toolbar/index.js +1 -1
- package/lib/{loop → apps}/plugins/notebook-toolbar/names.d.ts +1 -1
- package/lib/{loop → apps}/plugins/notebook-toolbar/names.js +1 -1
- package/lib/{loop → apps}/plugins/notebook-toolbar/plugin.js +1 -1
- package/lib/{loop → apps}/plugins/notebook-view/index.js +1 -1
- package/lib/{loop → apps}/plugins/page-layout/SplitLayout.d.ts +1 -1
- package/lib/{loop → apps}/plugins/page-layout/SplitLayout.js +1 -1
- package/lib/{loop → apps}/plugins/page-layout/TurnPanel.d.ts +1 -1
- package/lib/{loop → apps}/plugins/page-layout/TurnPanel.js +2 -1
- package/lib/{loop → apps}/plugins/plugins-panel/index.js +1 -1
- package/lib/{loop → apps}/plugins/prompt/NewChatAction.d.ts +1 -1
- package/lib/{loop → apps}/plugins/prompt/index.js +1 -1
- package/lib/{loop → apps}/plugins/shell/editorChoice.d.ts +1 -1
- package/lib/{loop → apps}/plugins/shell/editorChoice.js +1 -1
- package/lib/{loop → apps}/plugins/shell/index.d.ts +1 -1
- package/lib/{loop → apps}/plugins/shell/useEditorPreviews.d.ts +1 -1
- package/lib/{loop → apps}/plugins/subagent-activity/SubagentPulse.d.ts +1 -1
- package/lib/{loop → apps}/plugins/subagent-activity/index.js +1 -1
- package/lib/{loop → apps}/plugins/view-switch/index.d.ts +1 -1
- package/lib/{loop → apps}/plugins/window-frame/WindowFrame.d.ts +1 -1
- package/lib/{loop → apps}/plugins/window-frame/index.js +1 -1
- package/lib/{loop → apps}/plugins/window-frame/slots.d.ts +1 -1
- package/lib/{loop → apps}/plugins/window-frame/slots.js +1 -1
- package/lib/{loop → apps}/presets.d.ts +1 -1
- package/lib/{loop → apps}/presets.js +1 -1
- package/lib/{loop → apps}/shell/LoopWorkspace.d.ts +1 -1
- package/lib/{loop → apps}/shell/PluginToggles.d.ts +1 -1
- package/lib/{loop → apps}/shell/SidebarRail.d.ts +1 -1
- package/lib/{loop → apps}/shell/ViewSwitcher.d.ts +1 -1
- package/lib/{loop → apps}/shell/WorkspaceFullScreenAction.d.ts +1 -1
- package/lib/{loop → apps}/shell/index.d.ts +1 -1
- package/lib/{loop → apps}/shell/index.js +1 -1
- package/lib/{loop → apps}/shell/paneMotion.d.ts +1 -1
- package/lib/{loop → apps}/shell/paneMotion.js +1 -1
- package/lib/{loop → apps}/shell/useWorkspaceFullScreen.d.ts +1 -1
- package/lib/chat/ChatLanguage.js +1 -1
- package/lib/chat/messages/ChatMarkdown.js +2 -1
- package/lib/chat/messages/markdownWithoutHtml.d.ts +34 -0
- package/lib/chat/messages/markdownWithoutHtml.js +53 -0
- package/lib/chat/parts/ReasoningPart.js +2 -1
- package/lib/chat/parts/TextPart.js +2 -1
- package/lib/chat/words.d.ts +7 -0
- package/lib/chat/words.js +14 -2
- package/lib/components/a2ui/custom/index.js +1 -3
- package/lib/components/a2ui/datalayer/FileUpload.js +1 -1
- package/lib/components/a2ui/styles.js +16 -5
- package/lib/components/cards/NotificationEventCard.js +2 -1
- package/lib/components/cards/OutputCard.js +2 -1
- package/lib/components/teams/AnswerSurfaces.js +1 -1
- package/lib/components/teams/AnswerSurfacesView.js +2 -2
- package/lib/components/teams/TeamNotebookView.d.ts +1 -1
- package/lib/components/teams/TeamNotebookView.js +1 -1
- package/lib/components/teams/sceneTranscript.d.ts +1 -1
- package/lib/examples/A2UiAgentExample.js +3 -3
- package/lib/examples/A2UiComponentsGalleryExample.js +2 -2
- package/lib/examples/A2UiContactCardExample.js +2 -2
- package/lib/examples/A2UiJupyterOutputExample.js +3 -3
- package/lib/examples/A2UiRestaurantExample.js +2 -2
- package/lib/examples/A2UiViewerExample.js +2 -2
- package/lib/examples/AgentA2AExample.js +3 -3
- package/lib/examples/AgentCheckpointsExample.js +3 -3
- package/lib/examples/AgentCodeSandboxExample.js +2 -2
- package/lib/examples/AgentCodeSandboxesExample.js +2 -2
- package/lib/examples/AgentCodemodeExample.js +3 -3
- package/lib/examples/AgentCompactionExample.js +2 -2
- package/lib/examples/AgentDecideExample.js +3 -3
- package/lib/examples/AgentEvalsExample.js +2 -2
- package/lib/examples/AgentGuardrailsExample.js +3 -3
- package/lib/examples/AgentHooksExample.js +2 -2
- package/lib/examples/AgentInferenceProviderExample.js +2 -2
- package/lib/examples/AgentMCPExample.js +3 -3
- package/lib/examples/AgentMemoryExample.js +2 -2
- package/lib/examples/AgentMonitoringExample.js +3 -3
- package/lib/examples/AgentNotificationsExample.js +2 -2
- package/lib/examples/AgentOtelExample.js +2 -2
- package/lib/examples/AgentOutputsExample.js +2 -2
- package/lib/examples/AgentParametersExample.js +2 -2
- package/lib/examples/AgentSkillsExample.js +2 -2
- package/lib/examples/AgentSubagentsExample.js +2 -2
- package/lib/examples/AgentToolApprovalsExample.js +2 -2
- package/lib/examples/AgentTriggersExample.js +2 -2
- package/lib/examples/AssistantExample.js +1 -1
- package/lib/examples/DecksAgent.js +2 -2
- package/lib/examples/DocumentPageAgent.js +1 -1
- package/lib/examples/LoopAppComputerExample.js +1 -1
- package/lib/examples/LoopShellExample.js +3 -3
- package/lib/examples/LoopWorkspaceExample.d.ts +1 -1
- package/lib/examples/LoopWorkspaceExample.js +5 -5
- package/lib/examples/NotebookPageAgent.js +1 -1
- package/lib/examples/utils/AssistantGalleryGrid.js +1 -1
- package/lib/examples/utils/owlCharacterPlugin.js +1 -1
- package/lib/index.d.ts +1 -1
- package/lib/index.js +1 -1
- package/lib/loop-example-main.js +1 -1
- package/lib/loop-main.js +9 -9
- package/lib/stories/loop/ReferenceScreens.js +1 -1
- package/lib/ui-plugins/MCPUIPlugin.d.ts +14 -0
- package/lib/ui-plugins/MCPUIPlugin.js +17 -48
- package/lib/ui-plugins/index.d.ts +1 -1
- package/lib/ui-plugins/index.js +1 -1
- package/package.json +3 -2
- /package/lib/{loop → apps}/apps/AppKept.js +0 -0
- /package/lib/{loop → apps}/apps/AppRuntimePlugins.d.ts +0 -0
- /package/lib/{loop → apps}/apps/agent.d.ts +0 -0
- /package/lib/{loop → apps}/apps/appspec.js +0 -0
- /package/lib/{loop → apps}/apps/checks.d.ts +0 -0
- /package/lib/{loop → apps}/apps/composer.js +0 -0
- /package/lib/{loop → apps}/apps/computer.js +0 -0
- /package/lib/{loop → apps}/apps/customComponents.d.ts +0 -0
- /package/lib/{loop → apps}/apps/hostTools.js +0 -0
- /package/lib/{loop → apps}/apps/kept.js +0 -0
- /package/lib/{loop → apps}/apps/language.js +0 -0
- /package/lib/{loop → apps}/apps/pluginPair.js +0 -0
- /package/lib/{loop → apps}/apps/records.js +0 -0
- /package/lib/{loop → apps}/apps/rules.d.ts +0 -0
- /package/lib/{loop → apps}/apps/threads.js +0 -0
- /package/lib/{loop → apps}/apps/uploads.js +0 -0
- /package/lib/{loop → apps}/apps/visitorToken.d.ts +0 -0
- /package/lib/{loop → apps}/apps/yaml.d.ts +0 -0
- /package/lib/{loop → apps}/core/a2uiComponents.d.ts +0 -0
- /package/lib/{loop → apps}/core/canvasBlocks.d.ts +0 -0
- /package/lib/{loop → apps}/core/focusRequests.d.ts +0 -0
- /package/lib/{loop → apps}/core/promptStore.d.ts +0 -0
- /package/lib/{loop → apps}/core/surfaceRequests.js +0 -0
- /package/lib/{loop → apps}/core/toolbar.d.ts +0 -0
- /package/lib/{loop → apps}/embed/AppEmbed.d.ts +0 -0
- /package/lib/{loop → apps}/embed/datalayer-app.d.ts +0 -0
- /package/lib/{loop → apps}/embed/element.d.ts +0 -0
- /package/lib/{loop → apps}/embed/embedConfig.js +0 -0
- /package/lib/{loop → apps}/embed/embedSession.js +0 -0
- /package/lib/{loop → apps}/embed/embedTheme.d.ts +0 -0
- /package/lib/{loop → apps}/embed/embedTheme.js +0 -0
- /package/lib/{loop → apps}/embed/hostBridge.js +0 -0
- /package/lib/{loop → apps}/extensions.d.ts +0 -0
- /package/lib/{loop → apps}/plugins/a2a-sidebar/index.d.ts +0 -0
- /package/lib/{loop → apps}/plugins/a2ui/A2uiView.js +0 -0
- /package/lib/{loop → apps}/plugins/a2ui/index.d.ts +0 -0
- /package/lib/{loop → apps}/plugins/a2ui-scene/index.js +0 -0
- /package/lib/{loop → apps}/plugins/a2ui-surface/InlineSurface.js +0 -0
- /package/lib/{loop → apps}/plugins/a2ui-surface/SurfaceToolResult.js +0 -0
- /package/lib/{loop → apps}/plugins/a2ui-surface/index.d.ts +0 -0
- /package/lib/{loop → apps}/plugins/a2ui-surface/index.js +0 -0
- /package/lib/{loop → apps}/plugins/a2ui-surface/ownComponents.d.ts +0 -0
- /package/lib/{loop → apps}/plugins/a2ui-surface/toolResult.js +0 -0
- /package/lib/{loop → apps}/plugins/agent-a2a/index.d.ts +0 -0
- /package/lib/{loop → apps}/plugins/agent-a2ui/index.d.ts +0 -0
- /package/lib/{loop → apps}/plugins/agent-a2ui-jupyter-output/index.d.ts +0 -0
- /package/lib/{loop → apps}/plugins/agent-checkpoints/index.d.ts +0 -0
- /package/lib/{loop → apps}/plugins/agent-code-sandbox/index.d.ts +0 -0
- /package/lib/{loop → apps}/plugins/agent-code-sandboxes/index.d.ts +0 -0
- /package/lib/{loop → apps}/plugins/agent-codemode/index.d.ts +0 -0
- /package/lib/{loop → apps}/plugins/agent-compaction/index.d.ts +0 -0
- /package/lib/{loop → apps}/plugins/agent-evals/index.d.ts +0 -0
- /package/lib/{loop → apps}/plugins/agent-guardrails/index.d.ts +0 -0
- /package/lib/{loop → apps}/plugins/agent-hooks/index.d.ts +0 -0
- /package/lib/{loop → apps}/plugins/agent-inference/index.d.ts +0 -0
- /package/lib/{loop → apps}/plugins/agent-mcp/index.d.ts +0 -0
- /package/lib/{loop → apps}/plugins/agent-memory/index.d.ts +0 -0
- /package/lib/{loop → apps}/plugins/agent-monitoring/index.d.ts +0 -0
- /package/lib/{loop → apps}/plugins/agent-notifications/index.d.ts +0 -0
- /package/lib/{loop → apps}/plugins/agent-otel/index.d.ts +0 -0
- /package/lib/{loop → apps}/plugins/agent-outputs/index.d.ts +0 -0
- /package/lib/{loop → apps}/plugins/agent-parameters/index.d.ts +0 -0
- /package/lib/{loop → apps}/plugins/agent-skills/index.d.ts +0 -0
- /package/lib/{loop → apps}/plugins/agent-subagents/index.d.ts +0 -0
- /package/lib/{loop → apps}/plugins/agent-tool-approvals/index.d.ts +0 -0
- /package/lib/{loop → apps}/plugins/agent-triggers/index.d.ts +0 -0
- /package/lib/{loop → apps}/plugins/agents/AgentSummaryPanel.js +0 -0
- /package/lib/{loop → apps}/plugins/agents/AnonymousKeyBadge.js +0 -0
- /package/lib/{loop → apps}/plugins/agents/DatalayerAgentBridge.js +0 -0
- /package/lib/{loop → apps}/plugins/agents/DatalayerAgentMount.js +0 -0
- /package/lib/{loop → apps}/plugins/agents/SandboxSelector.js +0 -0
- /package/lib/{loop → apps}/plugins/agents/SandboxStatusBridge.js +0 -0
- /package/lib/{loop → apps}/plugins/agents/SandboxView.js +0 -0
- /package/lib/{loop → apps}/plugins/agents/TeamMemberPicker.js +0 -0
- /package/lib/{loop → apps}/plugins/agents/appLaunch.js +0 -0
- /package/lib/{loop → apps}/plugins/agents/browserService.d.ts +0 -0
- /package/lib/{loop → apps}/plugins/agents/plugin.js +0 -0
- /package/lib/{loop → apps}/plugins/agents/specSubagents.js +0 -0
- /package/lib/{loop → apps}/plugins/agents/useSandboxService.d.ts +0 -0
- /package/lib/{loop → apps}/plugins/agents/useTeamSelection.d.ts +0 -0
- /package/lib/{loop → apps}/plugins/agentspecs/AgentspecPicker.js +0 -0
- /package/lib/{loop → apps}/plugins/agentspecs/index.d.ts +0 -0
- /package/lib/{loop → apps}/plugins/app-activity/AppActivity.js +0 -0
- /package/lib/{loop → apps}/plugins/app-activity/index.d.ts +0 -0
- /package/lib/{loop → apps}/plugins/app-activity/index.js +0 -0
- /package/lib/{loop → apps}/plugins/app-computer/index.d.ts +0 -0
- /package/lib/{loop → apps}/plugins/app-computer/index.js +0 -0
- /package/lib/{loop → apps}/plugins/app-elements/AppElements.js +0 -0
- /package/lib/{loop → apps}/plugins/app-page/appPageModel.js +0 -0
- /package/lib/{loop → apps}/plugins/app-page/index.js +0 -0
- /package/lib/{loop → apps}/plugins/app-rules/AppRulesCard.js +0 -0
- /package/lib/{loop → apps}/plugins/app-rules/index.d.ts +0 -0
- /package/lib/{loop → apps}/plugins/app-rules/index.js +0 -0
- /package/lib/{loop → apps}/plugins/assistant/index.js +0 -0
- /package/lib/{loop → apps}/plugins/chat/chatViewTools.d.ts +0 -0
- /package/lib/{loop → apps}/plugins/chat/index.d.ts +0 -0
- /package/lib/{loop → apps}/plugins/chat-extras/index.d.ts +0 -0
- /package/lib/{loop → apps}/plugins/chat-header/HeaderView.js +0 -0
- /package/lib/{loop → apps}/plugins/chat-header/index.d.ts +0 -0
- /package/lib/{loop → apps}/plugins/chat-header/index.js +0 -0
- /package/lib/{loop → apps}/plugins/chat-view/index.d.ts +0 -0
- /package/lib/{loop → apps}/plugins/checkpoints-sidebar/index.d.ts +0 -0
- /package/lib/{loop → apps}/plugins/commands/index.d.ts +0 -0
- /package/lib/{loop → apps}/plugins/decks/DeckSurface.d.ts +0 -0
- /package/lib/{loop → apps}/plugins/decks/DeckSurface.js +0 -0
- /package/lib/{loop → apps}/plugins/decks/DecksMenu.d.ts +0 -0
- /package/lib/{loop → apps}/plugins/decks/DecksMenu.js +0 -0
- /package/lib/{loop → apps}/plugins/decks/index.d.ts +0 -0
- /package/lib/{loop → apps}/plugins/document/DocumentView.js +0 -0
- /package/lib/{loop → apps}/plugins/document/index.d.ts +0 -0
- /package/lib/{loop → apps}/plugins/document/openingDocument.js +0 -0
- /package/lib/{loop → apps}/plugins/document-toolbar/SandboxStatusItem.js +0 -0
- /package/lib/{loop → apps}/plugins/document-toolbar/index.d.ts +0 -0
- /package/lib/{loop → apps}/plugins/document-toolbar/plugin.d.ts +0 -0
- /package/lib/{loop → apps}/plugins/document-view/index.d.ts +0 -0
- /package/lib/{loop → apps}/plugins/graph/GraphToggle.js +0 -0
- /package/lib/{loop → apps}/plugins/graph/GraphView.js +0 -0
- /package/lib/{loop → apps}/plugins/graph/index.d.ts +0 -0
- /package/lib/{loop → apps}/plugins/input-prompt/ComposerView.js +0 -0
- /package/lib/{loop → apps}/plugins/input-prompt/index.d.ts +0 -0
- /package/lib/{loop → apps}/plugins/input-prompt/index.js +0 -0
- /package/lib/{loop → apps}/plugins/models/index.d.ts +0 -0
- /package/lib/{loop → apps}/plugins/notebook/NotebookView.js +0 -0
- /package/lib/{loop → apps}/plugins/notebook/index.d.ts +0 -0
- /package/lib/{loop → apps}/plugins/notebook/openingNotebook.js +0 -0
- /package/lib/{loop → apps}/plugins/notebook-toolbar/index.d.ts +0 -0
- /package/lib/{loop → apps}/plugins/notebook-toolbar/items.d.ts +0 -0
- /package/lib/{loop → apps}/plugins/notebook-toolbar/items.js +0 -0
- /package/lib/{loop → apps}/plugins/notebook-toolbar/plugin.d.ts +0 -0
- /package/lib/{loop → apps}/plugins/notebook-view/index.d.ts +0 -0
- /package/lib/{loop → apps}/plugins/page-layout/index.d.ts +0 -0
- /package/lib/{loop → apps}/plugins/page-layout/index.js +0 -0
- /package/lib/{loop → apps}/plugins/plugins-panel/index.d.ts +0 -0
- /package/lib/{loop → apps}/plugins/prompt/NewChatAction.js +0 -0
- /package/lib/{loop → apps}/plugins/prompt/index.d.ts +0 -0
- /package/lib/{loop → apps}/plugins/shell/index.js +0 -0
- /package/lib/{loop → apps}/plugins/shell/useEditorPreviews.js +0 -0
- /package/lib/{loop → apps}/plugins/subagent-activity/SubagentPulse.js +0 -0
- /package/lib/{loop → apps}/plugins/subagent-activity/index.d.ts +0 -0
- /package/lib/{loop → apps}/plugins/view-switch/index.js +0 -0
- /package/lib/{loop → apps}/plugins/window-frame/WindowFrame.js +0 -0
- /package/lib/{loop → apps}/plugins/window-frame/index.d.ts +0 -0
- /package/lib/{loop → apps}/shell/LoopWorkspace.js +0 -0
- /package/lib/{loop → apps}/shell/PluginToggles.js +0 -0
- /package/lib/{loop → apps}/shell/SidebarRail.js +0 -0
- /package/lib/{loop → apps}/shell/ViewSwitcher.js +0 -0
- /package/lib/{loop → apps}/shell/WorkspaceFullScreenAction.js +0 -0
- /package/lib/{loop → apps}/shell/useWorkspaceFullScreen.js +0 -0
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
const CACHE = "precache";
|
|
2
|
+
const broadcast = new BroadcastChannel("/api/drive.v1");
|
|
3
|
+
let enableCache = false;
|
|
4
|
+
self.addEventListener("install", onInstall);
|
|
5
|
+
self.addEventListener("activate", onActivate);
|
|
6
|
+
self.addEventListener("fetch", onFetch);
|
|
7
|
+
function onInstall(event) {
|
|
8
|
+
void self.skipWaiting();
|
|
9
|
+
event.waitUntil(cacheAll());
|
|
10
|
+
}
|
|
11
|
+
function onActivate(event) {
|
|
12
|
+
const searchParams = new URL(location.href).searchParams;
|
|
13
|
+
enableCache = searchParams.get("enableCache") === "true";
|
|
14
|
+
event.waitUntil(self.clients.claim());
|
|
15
|
+
}
|
|
16
|
+
async function onFetch(event) {
|
|
17
|
+
const {
|
|
18
|
+
request
|
|
19
|
+
} = event;
|
|
20
|
+
const url = new URL(event.request.url);
|
|
21
|
+
if (url.pathname === "/api/service-worker-heartbeat") {
|
|
22
|
+
event.respondWith(new Response("ok"));
|
|
23
|
+
return;
|
|
24
|
+
}
|
|
25
|
+
let responsePromise = null;
|
|
26
|
+
if (shouldBroadcast(url)) {
|
|
27
|
+
responsePromise = broadcastOne(request);
|
|
28
|
+
} else if (!shouldDrop(request, url)) {
|
|
29
|
+
responsePromise = maybeFromCache(event);
|
|
30
|
+
}
|
|
31
|
+
if (responsePromise) {
|
|
32
|
+
event.respondWith(responsePromise);
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
async function maybeFromCache(event) {
|
|
36
|
+
const {
|
|
37
|
+
request
|
|
38
|
+
} = event;
|
|
39
|
+
if (!enableCache) {
|
|
40
|
+
return await fetch(request);
|
|
41
|
+
}
|
|
42
|
+
let response = await fromCache(request);
|
|
43
|
+
if (response) {
|
|
44
|
+
event.waitUntil(refetch(request));
|
|
45
|
+
} else {
|
|
46
|
+
response = await fetch(request);
|
|
47
|
+
event.waitUntil(updateCache(request, response.clone()));
|
|
48
|
+
}
|
|
49
|
+
return response;
|
|
50
|
+
}
|
|
51
|
+
async function fromCache(request) {
|
|
52
|
+
const cache = await openCache();
|
|
53
|
+
const response = await cache.match(request);
|
|
54
|
+
if (!response || response.status === 404) {
|
|
55
|
+
return null;
|
|
56
|
+
}
|
|
57
|
+
return response;
|
|
58
|
+
}
|
|
59
|
+
async function refetch(request) {
|
|
60
|
+
const fromServer = await fetch(request);
|
|
61
|
+
await updateCache(request, fromServer);
|
|
62
|
+
return fromServer;
|
|
63
|
+
}
|
|
64
|
+
function shouldBroadcast(url) {
|
|
65
|
+
return url.origin === location.origin && url.pathname.includes("/api/drive");
|
|
66
|
+
}
|
|
67
|
+
function shouldDrop(request, url) {
|
|
68
|
+
return request.method !== "GET" || url.origin.match(/^http/) === null || url.pathname.includes("/api/");
|
|
69
|
+
}
|
|
70
|
+
async function broadcastOne(request) {
|
|
71
|
+
const promise = new Promise((resolve) => {
|
|
72
|
+
broadcast.onmessage = (event) => {
|
|
73
|
+
resolve(new Response(JSON.stringify(event.data)));
|
|
74
|
+
};
|
|
75
|
+
});
|
|
76
|
+
const message = await request.json();
|
|
77
|
+
message.receiver = "broadcast.ts";
|
|
78
|
+
broadcast.postMessage(message);
|
|
79
|
+
return await promise;
|
|
80
|
+
}
|
|
81
|
+
async function openCache() {
|
|
82
|
+
return await caches.open(CACHE);
|
|
83
|
+
}
|
|
84
|
+
async function updateCache(request, response) {
|
|
85
|
+
const cache = await openCache();
|
|
86
|
+
return cache.put(request, response);
|
|
87
|
+
}
|
|
88
|
+
async function cacheAll() {
|
|
89
|
+
const cache = await openCache();
|
|
90
|
+
return await cache.addAll([]);
|
|
91
|
+
}
|
|
@@ -26,7 +26,7 @@
|
|
|
26
26
|
* P-26), its words are theirs; the composer's own, the chat's language's
|
|
27
27
|
* (`useChatLanguage`).
|
|
28
28
|
*
|
|
29
|
-
* @module
|
|
29
|
+
* @module apps/apps/AppComposer
|
|
30
30
|
*/
|
|
31
31
|
import { type JSX } from 'react';
|
|
32
32
|
import type { AppSpec, AppStarterSpec } from '../../types/agentspecs';
|
|
@@ -31,7 +31,7 @@ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-run
|
|
|
31
31
|
* P-26), its words are theirs; the composer's own, the chat's language's
|
|
32
32
|
* (`useChatLanguage`).
|
|
33
33
|
*
|
|
34
|
-
* @module
|
|
34
|
+
* @module apps/apps/AppComposer
|
|
35
35
|
*/
|
|
36
36
|
import { useRef } from 'react';
|
|
37
37
|
import { ActionList, ActionMenu, IconButton, Text, Token } from '@primer/react';
|
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
* application whose record keeps feedback, in the Studio's Preview and on
|
|
11
11
|
* the hosted page alike.
|
|
12
12
|
*
|
|
13
|
-
* @module
|
|
13
|
+
* @module apps/apps/AppFeedback
|
|
14
14
|
*/
|
|
15
15
|
import type { JSX } from 'react';
|
|
16
16
|
import type { AppSpec } from '../../types/agentspecs';
|
|
@@ -5,7 +5,7 @@ import { ThumbsdownIcon, ThumbsupIcon } from '@primer/octicons-react';
|
|
|
5
5
|
import { contribution, definePlugin, signal } from '@datalayer/reactor';
|
|
6
6
|
import { useContributions, useSignalValue } from '@datalayer/reactor/react';
|
|
7
7
|
import { useIAMStore } from '../../state';
|
|
8
|
-
import { LoopChatTurn, LoopPromptPanel, } from '../core';
|
|
8
|
+
import { LoopChatTurn, LoopPromptPanel, agentServerOf, } from '../core';
|
|
9
9
|
import { answerIdOf, FEEDBACK_WORDS, sendFeedback } from './feedback';
|
|
10
10
|
export const APP_FEEDBACK_PLUGIN_NAME = '@datalayer/loop-plugin-app-feedback';
|
|
11
11
|
/* A signal to read when no chat contributed a turn: the hook needs one. */
|
|
@@ -28,11 +28,20 @@ export function AppFeedback({ app, workspace, }) {
|
|
|
28
28
|
const thread = turn.thread;
|
|
29
29
|
const choice = liked?.turn === turn.id ? liked.liked : null;
|
|
30
30
|
const done = said?.turn === turn.id ? said : null;
|
|
31
|
-
|
|
31
|
+
// The runtime that answered: none, nothing is sent (no stand-in server).
|
|
32
|
+
const agentBaseUrl = agentServerOf(workspace.sandbox, workspace.serverUrl);
|
|
32
33
|
const send = async () => {
|
|
33
34
|
if (choice === null) {
|
|
34
35
|
return;
|
|
35
36
|
}
|
|
37
|
+
if (agentBaseUrl === undefined) {
|
|
38
|
+
setSaid({
|
|
39
|
+
turn: turn.id,
|
|
40
|
+
state: 'refused',
|
|
41
|
+
says: FEEDBACK_WORDS.noRuntime,
|
|
42
|
+
});
|
|
43
|
+
return;
|
|
44
|
+
}
|
|
36
45
|
setSaid({ turn: turn.id, state: 'sending', says: '' });
|
|
37
46
|
try {
|
|
38
47
|
await sendFeedback({
|
|
@@ -64,7 +73,7 @@ export function AppFeedback({ app, workspace, }) {
|
|
|
64
73
|
flexDirection: 'column',
|
|
65
74
|
gap: 4,
|
|
66
75
|
padding: '4px 8px',
|
|
67
|
-
}, children: [_jsxs("div", { style: { display: 'flex', alignItems: 'center', gap: 4 }, children: [_jsx(Text, { sx: { fontSize: 0, color: 'fg.muted' }, children: FEEDBACK_WORDS.ask }), _jsx(IconButton, { size: "small", variant: choice === true ? 'default' : 'invisible', icon: ThumbsupIcon, "aria-label": FEEDBACK_WORDS.liked, "aria-pressed": choice === true, onClick: () => setLiked({ turn: turn.id, liked: true }) }), _jsx(IconButton, { size: "small", variant: choice === false ? 'default' : 'invisible', icon: ThumbsdownIcon, "aria-label": FEEDBACK_WORDS.disliked, "aria-pressed": choice === false, onClick: () => setLiked({ turn: turn.id, liked: false }) })] }), choice !== null ? (_jsxs(_Fragment, { children: [_jsx(Textarea, { "aria-label": FEEDBACK_WORDS.comment, placeholder: FEEDBACK_WORDS.comment, value: comment, rows: 2, resize: "vertical", block: true, onChange: event => setComment(event.target.value) }), _jsxs("div", { style: { display: 'flex', alignItems: 'center', gap: 8 }, children: [_jsx(Button, { size: "small", variant: "default", disabled: done?.state === 'sending', onClick: () => void send(), children: FEEDBACK_WORDS.send }), _jsx(Text, { sx: { fontSize: 0, color: 'fg.muted' }, children: FEEDBACK_WORDS.where(app.name) })] })] })) : null, done?.state === 'refused' ? (
|
|
76
|
+
}, children: [_jsxs("div", { style: { display: 'flex', alignItems: 'center', gap: 4 }, children: [_jsx(Text, { sx: { fontSize: 0, color: 'fg.muted' }, children: FEEDBACK_WORDS.ask }), _jsx(IconButton, { size: "small", variant: choice === true ? 'default' : 'invisible', icon: ThumbsupIcon, "aria-label": FEEDBACK_WORDS.liked, "aria-pressed": choice === true, unsafeDisableTooltip: true, onClick: () => setLiked({ turn: turn.id, liked: true }) }), _jsx(IconButton, { size: "small", variant: choice === false ? 'default' : 'invisible', icon: ThumbsdownIcon, "aria-label": FEEDBACK_WORDS.disliked, "aria-pressed": choice === false, unsafeDisableTooltip: true, onClick: () => setLiked({ turn: turn.id, liked: false }) })] }), choice !== null ? (_jsxs(_Fragment, { children: [_jsx(Textarea, { "aria-label": FEEDBACK_WORDS.comment, placeholder: FEEDBACK_WORDS.comment, value: comment, rows: 2, resize: "vertical", block: true, onChange: event => setComment(event.target.value) }), _jsxs("div", { style: { display: 'flex', alignItems: 'center', gap: 8 }, children: [_jsx(Button, { size: "small", variant: "default", disabled: done?.state === 'sending', onClick: () => void send(), children: FEEDBACK_WORDS.send }), _jsx(Text, { sx: { fontSize: 0, color: 'fg.muted' }, children: FEEDBACK_WORDS.where(app.name) })] })] })) : null, done?.state === 'refused' ? (
|
|
68
77
|
// Said in the ink, as an alert: not a verdict, so not its colour.
|
|
69
78
|
_jsx(Text, { role: "alert", sx: { fontSize: 0, color: 'fg.default' }, children: done.says })) : null] }));
|
|
70
79
|
}
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
* `AppRenderer` adds the plugin for an application that runs as a
|
|
8
8
|
* deployment — at its address, embedded — not for its builder's Preview.
|
|
9
9
|
*
|
|
10
|
-
* @module
|
|
10
|
+
* @module apps/apps/AppKept
|
|
11
11
|
*/
|
|
12
12
|
import type { JSX } from 'react';
|
|
13
13
|
import type { AppSpec } from '../../types/agentspecs';
|
|
@@ -42,7 +42,7 @@
|
|
|
42
42
|
* function: `appPreset`, the preset per kind, as `loopPlugins` is for the
|
|
43
43
|
* examples.
|
|
44
44
|
*
|
|
45
|
-
* @module
|
|
45
|
+
* @module apps/apps/AppRenderer
|
|
46
46
|
*/
|
|
47
47
|
import { type ComponentType } from 'react';
|
|
48
48
|
import { type PluginRef, type ReactorExtension, type ReactorPlugin } from '@datalayer/reactor';
|
|
@@ -47,7 +47,7 @@ import { jsx as _jsx } from "react/jsx-runtime";
|
|
|
47
47
|
* function: `appPreset`, the preset per kind, as `loopPlugins` is for the
|
|
48
48
|
* examples.
|
|
49
49
|
*
|
|
50
|
-
* @module
|
|
50
|
+
* @module apps/apps/AppRenderer
|
|
51
51
|
*/
|
|
52
52
|
import { useMemo } from 'react';
|
|
53
53
|
import { defineExtension, } from '@datalayer/reactor';
|
|
@@ -125,7 +125,7 @@ export function defineAppPlugin(app, shown = app) {
|
|
|
125
125
|
suggestions: startersAsOpeners(shown.interface.starters),
|
|
126
126
|
// In the page, the agent is told what a runtime tells it: its own
|
|
127
127
|
// spec's prompt, then the application's instructions; on the
|
|
128
|
-
// application's model when it names one (`
|
|
128
|
+
// application's model when it names one (`apps/apps/agent`).
|
|
129
129
|
instructions: app.instructions,
|
|
130
130
|
model: app.model,
|
|
131
131
|
// Its modes and its profiles (LOOP P-19, P-20), as the session API
|
|
@@ -26,7 +26,7 @@ import { jsx as _jsx } from "react/jsx-runtime";
|
|
|
26
26
|
* A plugin of its own, with no backend requirement, so that it keeps
|
|
27
27
|
* listening while the application's plugin is stood down. It renders nothing.
|
|
28
28
|
*
|
|
29
|
-
* @module
|
|
29
|
+
* @module apps/apps/AppRuntimePlugins
|
|
30
30
|
*/
|
|
31
31
|
import { useCallback, useEffect } from 'react';
|
|
32
32
|
import { definePlugin } from '@datalayer/reactor';
|
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
* browser, so it resolves it the same way: an application on a Cog that the
|
|
14
14
|
* page looked up among the agentspecs alone ran with no instructions at all.
|
|
15
15
|
*
|
|
16
|
-
* @module
|
|
16
|
+
* @module apps/apps/agent
|
|
17
17
|
*/
|
|
18
18
|
import { getAgentspecs } from '../../specs/agents';
|
|
19
19
|
import { getCog } from '../../specs/cogs';
|
|
@@ -22,7 +22,7 @@
|
|
|
22
22
|
*
|
|
23
23
|
* Pure: nothing here calls a service or renders.
|
|
24
24
|
*
|
|
25
|
-
* @module
|
|
25
|
+
* @module apps/apps/appspec
|
|
26
26
|
*/
|
|
27
27
|
import type { AppAccent, AppThemeMode, AppThemeVariant, AppAssistantCharacter, AppEmbedMode, AppCustomComponentSpec, AppVoiceSpec, AppKind, AppLayout, AppPageOutputComponent, AppSpec } from '../../types/agentspecs';
|
|
28
28
|
/** The version of the spec itself. */
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
*
|
|
8
8
|
* Pure: no React, no network.
|
|
9
9
|
*
|
|
10
|
-
* @module
|
|
10
|
+
* @module apps/apps/composer
|
|
11
11
|
*/
|
|
12
12
|
import type { AppCommandSpec, AppModeEffect, AppProfileSpec, AppSpec, AppStarterSpec } from '../../types/agentspecs';
|
|
13
13
|
/** Where a command's prompt takes the words typed after it. */
|
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
* does not open. How it is drawn, in a sandboxed frame of no origin, is
|
|
15
15
|
* `components/a2ui/custom`.
|
|
16
16
|
*
|
|
17
|
-
* @module
|
|
17
|
+
* @module apps/apps/customComponents
|
|
18
18
|
*/
|
|
19
19
|
import { getComponent } from '../../specs/uiPlugins';
|
|
20
20
|
/** Its name: a word starting with a capital letter, as the catalog's are named. */
|
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
*
|
|
11
11
|
* Pure: no React; the network is the `fetch` it is handed.
|
|
12
12
|
*
|
|
13
|
-
* @module
|
|
13
|
+
* @module apps/apps/feedback
|
|
14
14
|
*/
|
|
15
15
|
import type { AppSpec } from '../../types/agentspecs';
|
|
16
16
|
/** The longest comment kept, as the runtime holds it (`COMMENT_LIMIT`). */
|
|
@@ -32,13 +32,14 @@ export declare const answerIdOf: (answers: number) => string | undefined;
|
|
|
32
32
|
/** What the feedback strip says, in a person's words. */
|
|
33
33
|
export declare const FEEDBACK_WORDS: {
|
|
34
34
|
readonly ask: "Was this answer useful?";
|
|
35
|
-
readonly liked: "
|
|
36
|
-
readonly disliked: "
|
|
35
|
+
readonly liked: "This answer was useful";
|
|
36
|
+
readonly disliked: "This answer was not useful";
|
|
37
37
|
readonly comment: "Anything to add? (optional)";
|
|
38
38
|
readonly send: "Send";
|
|
39
39
|
readonly kept: (app: string) => string;
|
|
40
40
|
readonly where: (app: string) => string;
|
|
41
41
|
readonly tooLong: "A comment is at most 2000 characters.";
|
|
42
|
+
readonly noRuntime: "No runtime is assigned to this conversation, so nothing can be sent.";
|
|
42
43
|
readonly noSession: "This conversation has no name the application knows yet: send a message first.";
|
|
43
44
|
};
|
|
44
45
|
/** Whether an application keeps feedback: its record names it. */
|
|
@@ -9,13 +9,15 @@ export const answerIdOf = (answers) => answers > 0 ? `answer-${answers}` : undef
|
|
|
9
9
|
/** What the feedback strip says, in a person's words. */
|
|
10
10
|
export const FEEDBACK_WORDS = {
|
|
11
11
|
ask: 'Was this answer useful?',
|
|
12
|
-
|
|
13
|
-
|
|
12
|
+
// The thumbs' names (P-24): what pressing one says of the answer.
|
|
13
|
+
liked: 'This answer was useful',
|
|
14
|
+
disliked: 'This answer was not useful',
|
|
14
15
|
comment: 'Anything to add? (optional)',
|
|
15
16
|
send: 'Send',
|
|
16
17
|
kept: (app) => `Thank you. Kept in ${app}’s record.`,
|
|
17
18
|
where: (app) => `What you say is kept with this conversation in ${app}’s record, for its builder to read.`,
|
|
18
19
|
tooLong: `A comment is at most ${FEEDBACK_COMMENT_LIMIT} characters.`,
|
|
20
|
+
noRuntime: 'No runtime is assigned to this conversation, so nothing can be sent.',
|
|
19
21
|
noSession: 'This conversation has no name the application knows yet: send a message first.',
|
|
20
22
|
};
|
|
21
23
|
/** Whether an application keeps feedback: its record names it. */
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* each function it offers. Apart from `embed/hostBridge`, which calls the
|
|
5
5
|
* page, so that the checks read them as a pure module.
|
|
6
6
|
*
|
|
7
|
-
* @module
|
|
7
|
+
* @module apps/apps/hostTools
|
|
8
8
|
*/
|
|
9
9
|
import type { AppHostBridgeSpec, AppHostUser } from '../../types/agentspecs';
|
|
10
10
|
/** The tool its agent reads what the page passes it with. */
|
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
* The page follows what its runtime holds with Reactor's
|
|
14
14
|
* `useBackendPluginStream`, on `appPluginsBase` (`AppRuntimePlugins`).
|
|
15
15
|
*
|
|
16
|
-
* @module
|
|
16
|
+
* @module apps/apps/pluginPair
|
|
17
17
|
*/
|
|
18
18
|
import type { SandboxSnapshot } from '../core';
|
|
19
19
|
import type { SandboxTarget } from '../plugins/agents/switchable';
|
|
@@ -32,7 +32,7 @@
|
|
|
32
32
|
*
|
|
33
33
|
* Pure: nothing here calls a tool or renders.
|
|
34
34
|
*
|
|
35
|
-
* @module
|
|
35
|
+
* @module apps/apps/rules
|
|
36
36
|
*/
|
|
37
37
|
import { SERVER_ACTIONS, BACKEND_TOOL_ACTIONS } from '../../specs/actions';
|
|
38
38
|
/** The four behaviours, from the freest to the most restricted. */
|
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
* visitor is on the servers (turns a day, a session's minutes, a rate and a
|
|
15
15
|
* ceiling for the day), not the life of a key.
|
|
16
16
|
*
|
|
17
|
-
* @module
|
|
17
|
+
* @module apps/apps/visitorToken
|
|
18
18
|
*/
|
|
19
19
|
import { useEffect, useState } from 'react';
|
|
20
20
|
/** The id this tab keeps for its visitor. */
|
|
@@ -4,12 +4,12 @@
|
|
|
4
4
|
*/
|
|
5
5
|
/**
|
|
6
6
|
* A component an application adds to the A2UI catalog it is drawn with (LOOP
|
|
7
|
-
* P-17), as a contribution point, re-exported by `
|
|
7
|
+
* P-17), as a contribution point, re-exported by `apps/core`: the components
|
|
8
8
|
* its developer wrote, contributed by the application's own plugin, so that
|
|
9
9
|
* its page, the elements its code shows and its answers draw them — in that
|
|
10
10
|
* application's workspace, and in no other.
|
|
11
11
|
*
|
|
12
|
-
* @module
|
|
12
|
+
* @module apps/core/a2uiComponents
|
|
13
13
|
*/
|
|
14
14
|
import { defineContributionPoint } from '@datalayer/reactor';
|
|
15
15
|
export const LoopA2uiComponent = defineContributionPoint('loop.a2ui.component');
|
|
@@ -4,10 +4,10 @@
|
|
|
4
4
|
*/
|
|
5
5
|
/**
|
|
6
6
|
* The Canvas's palette as a contribution point (LOOP C-12), re-exported by
|
|
7
|
-
* `
|
|
7
|
+
* `apps/core`: kept apart so that reading the palette loads the reactor and
|
|
8
8
|
* the catalogue, and nothing of the workspace.
|
|
9
9
|
*
|
|
10
|
-
* @module
|
|
10
|
+
* @module apps/core/canvasBlocks
|
|
11
11
|
*/
|
|
12
12
|
import { defineContributionPoint } from '@datalayer/reactor';
|
|
13
13
|
export const LoopCanvasBlock = defineContributionPoint('loop.canvas.block');
|
|
@@ -8,6 +8,7 @@ import type { ContextSnapshotData } from '../../types/context';
|
|
|
8
8
|
import type { AssistantCharacter } from '../../chat/assistant/characters';
|
|
9
9
|
import type { AssistantCharacterData } from '../../chat/assistant/formats/types';
|
|
10
10
|
import type { PresenceState } from '../../chat/presence/presenceStatus';
|
|
11
|
+
import type { ChatWords } from '../../chat/words';
|
|
11
12
|
/** Lifecycle of the sandbox a workspace is attached to. */
|
|
12
13
|
export type SandboxState = 'idle' | 'starting' | 'running' | 'stopping' | 'error';
|
|
13
14
|
/** What the workspace knows about the sandbox behind it. */
|
|
@@ -53,6 +54,24 @@ export type SandboxSnapshot = {
|
|
|
53
54
|
*/
|
|
54
55
|
agentBaseUrl?: string;
|
|
55
56
|
};
|
|
57
|
+
/**
|
|
58
|
+
* The agent-runtimes server a workspace's agent is on, or nothing while
|
|
59
|
+
* there is none.
|
|
60
|
+
*
|
|
61
|
+
* On Datalayer the agent is on its runtime and nowhere else: until one is
|
|
62
|
+
* assigned there is nothing to address, and the host's own server is not a
|
|
63
|
+
* stand-in — on a hosted page it is the page's own origin, which answered a
|
|
64
|
+
* question with a 404 while the pool had no runtime (STUDIO P-24, round 9).
|
|
65
|
+
* Every other target's agent is on the host's server, or on the one its
|
|
66
|
+
* sandbox names.
|
|
67
|
+
*/
|
|
68
|
+
export declare function agentServerOf(sandbox: Pick<SandboxSnapshot, 'target' | 'agentBaseUrl'>, serverUrl: string): string | undefined;
|
|
69
|
+
/**
|
|
70
|
+
* What is said while {@link agentServerOf} names no server: the runtime is
|
|
71
|
+
* being assigned, or — its launch refused, the pool empty — none is, and
|
|
72
|
+
* why. One sentence for the chat, the page and the computer alike.
|
|
73
|
+
*/
|
|
74
|
+
export declare function noRuntimeSaid(sandbox: Pick<SandboxSnapshot, 'state' | 'errorReason'>, words: Pick<ChatWords, 'noRuntime' | 'runtimeStarting'>): string;
|
|
56
75
|
/**
|
|
57
76
|
* What a view reads while the sandbox plugin is absent.
|
|
58
77
|
*
|
|
@@ -11,9 +11,36 @@
|
|
|
11
11
|
* never on the shell, so the shell can be replaced (a browser page, a JupyterLab
|
|
12
12
|
* panel) without touching a single plugin.
|
|
13
13
|
*
|
|
14
|
-
* @module
|
|
14
|
+
* @module apps/core
|
|
15
15
|
*/
|
|
16
16
|
import { defineContributionPoint, defineGate } from '@datalayer/reactor';
|
|
17
|
+
/**
|
|
18
|
+
* The agent-runtimes server a workspace's agent is on, or nothing while
|
|
19
|
+
* there is none.
|
|
20
|
+
*
|
|
21
|
+
* On Datalayer the agent is on its runtime and nowhere else: until one is
|
|
22
|
+
* assigned there is nothing to address, and the host's own server is not a
|
|
23
|
+
* stand-in — on a hosted page it is the page's own origin, which answered a
|
|
24
|
+
* question with a 404 while the pool had no runtime (STUDIO P-24, round 9).
|
|
25
|
+
* Every other target's agent is on the host's server, or on the one its
|
|
26
|
+
* sandbox names.
|
|
27
|
+
*/
|
|
28
|
+
export function agentServerOf(sandbox, serverUrl) {
|
|
29
|
+
if (sandbox.target === 'datalayer') {
|
|
30
|
+
return sandbox.agentBaseUrl || undefined;
|
|
31
|
+
}
|
|
32
|
+
return sandbox.agentBaseUrl || serverUrl;
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* What is said while {@link agentServerOf} names no server: the runtime is
|
|
36
|
+
* being assigned, or — its launch refused, the pool empty — none is, and
|
|
37
|
+
* why. One sentence for the chat, the page and the computer alike.
|
|
38
|
+
*/
|
|
39
|
+
export function noRuntimeSaid(sandbox, words) {
|
|
40
|
+
return sandbox.state === 'error'
|
|
41
|
+
? words.noRuntime(sandbox.errorReason ?? '')
|
|
42
|
+
: words.runtimeStarting;
|
|
43
|
+
}
|
|
17
44
|
/**
|
|
18
45
|
* What a view reads while the sandbox plugin is absent.
|
|
19
46
|
*
|
|
@@ -23,7 +23,7 @@
|
|
|
23
23
|
* on their behalf — `submit` exists for the host that genuinely wants that,
|
|
24
24
|
* and defaults to off.
|
|
25
25
|
*
|
|
26
|
-
* @module
|
|
26
|
+
* @module apps/core/promptStore
|
|
27
27
|
*/
|
|
28
28
|
import { create } from 'zustand';
|
|
29
29
|
export const useLoopPromptStore = create((set, get) => ({
|
|
@@ -18,7 +18,7 @@
|
|
|
18
18
|
* screen can say so rather than failing silently — which is how this went
|
|
19
19
|
* unnoticed.
|
|
20
20
|
*
|
|
21
|
-
* @module
|
|
21
|
+
* @module apps/core/surfaceRequests
|
|
22
22
|
*/
|
|
23
23
|
/** Told which surface somebody asked for. */
|
|
24
24
|
export type SurfaceRequestListener = (surfaceId: string) => void;
|
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
* provider, no toolbar, and no items either — has to be the same in both or
|
|
10
10
|
* the two editors disagree about what switching a toolbar plugin off means.
|
|
11
11
|
*
|
|
12
|
-
* @module
|
|
12
|
+
* @module apps/core/toolbar
|
|
13
13
|
*/
|
|
14
14
|
import { useMemo } from 'react';
|
|
15
15
|
import { useContributions } from '@datalayer/reactor/react';
|