@datalayer/agent-runtimes 1.5.52 → 1.5.53
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/chunks/{ChatView-Dy-IgGFL.js → ChatView-CRp8Mt57.js} +4 -4
- package/dist-embed/datalayer-app-main.js +86 -86
- package/lib/api/runtimes/environments.d.ts +2 -2
- package/lib/api/runtimes/environments.js +5 -5
- package/lib/api/runtimes/runtimes.d.ts +7 -7
- package/lib/api/runtimes/runtimes.js +5 -5
- package/lib/apps/__tests__/fixtures/sceneCheckCases.json +1 -1
- package/lib/apps/apps/AppBrowserSandbox.js +1 -1
- package/lib/apps/apps/AppComposer.d.ts +3 -3
- package/lib/apps/apps/AppComposer.js +3 -3
- package/lib/apps/apps/AppFeedback.d.ts +1 -1
- package/lib/apps/apps/AppKept.d.ts +1 -1
- package/lib/apps/apps/AppKept.js +1 -1
- package/lib/apps/apps/AppRenderer.d.ts +14 -14
- package/lib/apps/apps/AppRenderer.js +18 -20
- package/lib/apps/apps/AppRuntimePlugins.js +2 -3
- package/lib/apps/apps/agent.js +1 -1
- package/lib/apps/apps/appspec.d.ts +10 -10
- package/lib/apps/apps/appspec.js +35 -35
- package/lib/apps/apps/browserSandbox.d.ts +1 -1
- package/lib/apps/apps/checks.d.ts +16 -7
- package/lib/apps/apps/checks.js +65 -21
- package/lib/apps/apps/composer.d.ts +2 -2
- package/lib/apps/apps/composer.js +1 -1
- package/lib/apps/apps/computer.d.ts +3 -3
- package/lib/apps/apps/computer.js +1 -1
- package/lib/apps/apps/customComponents.d.ts +2 -2
- package/lib/apps/apps/customComponents.js +3 -3
- package/lib/apps/apps/feedback.d.ts +2 -2
- package/lib/apps/apps/hostTools.d.ts +3 -3
- package/lib/apps/apps/hostTools.js +2 -2
- package/lib/apps/apps/kept.d.ts +1 -1
- package/lib/apps/apps/language.d.ts +1 -1
- package/lib/apps/apps/pluginPair.d.ts +1 -1
- package/lib/apps/apps/records.js +1 -1
- package/lib/apps/apps/rules.d.ts +2 -2
- package/lib/apps/apps/rules.js +2 -2
- package/lib/apps/apps/saved.d.ts +1 -1
- package/lib/apps/apps/saved.js +1 -1
- package/lib/apps/apps/sceneChecks.js +3 -3
- package/lib/apps/apps/sceneYaml.js +1 -1
- package/lib/apps/apps/sessionRules.d.ts +7 -8
- package/lib/apps/apps/sessionRules.js +6 -7
- package/lib/apps/apps/settingsInputs.d.ts +1 -1
- package/lib/apps/apps/settingsInputs.js +1 -1
- package/lib/apps/apps/threads.d.ts +2 -2
- package/lib/apps/apps/threads.js +1 -1
- package/lib/apps/apps/uploads.d.ts +1 -1
- package/lib/apps/apps/visitorToken.d.ts +1 -1
- package/lib/apps/apps/visitorToken.js +2 -2
- package/lib/apps/core/a2uiComponents.js +1 -2
- package/lib/apps/core/appFiles.js +1 -1
- package/lib/apps/core/canvasBlocks.d.ts +1 -1
- package/lib/apps/core/canvasBlocks.js +1 -1
- package/lib/apps/core/canvasParts.d.ts +3 -3
- package/lib/apps/core/canvasParts.js +1 -1
- package/lib/apps/core/index.d.ts +12 -13
- package/lib/apps/core/index.js +5 -6
- package/lib/apps/embed/AppEmbed.d.ts +9 -9
- package/lib/apps/embed/AppEmbed.js +9 -10
- package/lib/apps/embed/LoopEmbed.d.ts +2 -3
- package/lib/apps/embed/datalayer-app.js +1 -1
- package/lib/apps/embed/element.js +11 -11
- package/lib/apps/embed/embedConfig.d.ts +8 -10
- package/lib/apps/embed/embedConfig.js +6 -7
- package/lib/apps/embed/embedSession.d.ts +3 -3
- package/lib/apps/embed/embedSession.js +2 -2
- package/lib/apps/embed/embeddedSecrets.d.ts +1 -1
- package/lib/apps/embed/embeddedSecrets.js +1 -1
- package/lib/apps/embed/hostBridge.d.ts +14 -14
- package/lib/apps/embed/hostBridge.js +9 -9
- package/lib/apps/embed/loader.js +2 -2
- package/lib/apps/embed/visitorApp.d.ts +1 -1
- package/lib/apps/index.d.ts +1 -1
- package/lib/apps/index.js +3 -3
- package/lib/apps/plugins/a2ui/A2uiView.js +1 -1
- package/lib/apps/plugins/a2ui-surface/AnswerShows.d.ts +2 -2
- package/lib/apps/plugins/a2ui-surface/AnswerShows.js +1 -1
- package/lib/apps/plugins/a2ui-surface/InlineSurface.d.ts +1 -1
- package/lib/apps/plugins/a2ui-surface/SurfaceToolResult.js +2 -2
- package/lib/apps/plugins/a2ui-surface/index.js +1 -1
- package/lib/apps/plugins/a2ui-surface/ownComponents.js +1 -1
- package/lib/apps/plugins/a2ui-surface/toolResult.d.ts +2 -2
- package/lib/apps/plugins/a2ui-surface/toolResult.js +2 -2
- package/lib/apps/plugins/agent-capacity/index.d.ts +2 -2
- package/lib/apps/plugins/agents/DatalayerAgentBridge.js +4 -4
- package/lib/apps/plugins/agents/appLaunch.d.ts +1 -1
- package/lib/apps/plugins/agents/plugin.d.ts +4 -4
- package/lib/apps/plugins/agents/switchable.js +1 -1
- package/lib/apps/plugins/app-activity/AppActivity.d.ts +1 -1
- package/lib/apps/plugins/app-components/index.d.ts +1 -2
- package/lib/apps/plugins/app-components/index.js +1 -2
- package/lib/apps/plugins/app-computer/AppComputer.d.ts +1 -1
- package/lib/apps/plugins/app-computer/AppComputer.js +2 -2
- package/lib/apps/plugins/app-elements/AppElements.d.ts +1 -2
- package/lib/apps/plugins/app-elements/AppElements.js +1 -1
- package/lib/apps/plugins/app-elements/QuestionView.d.ts +1 -2
- package/lib/apps/plugins/app-elements/QuestionView.js +1 -1
- package/lib/apps/plugins/app-elements/index.d.ts +2 -2
- package/lib/apps/plugins/app-elements/index.js +2 -2
- package/lib/apps/plugins/app-page/AppPage.d.ts +3 -3
- package/lib/apps/plugins/app-page/appPageModel.d.ts +5 -5
- package/lib/apps/plugins/app-page/appPageModel.js +1 -1
- package/lib/apps/plugins/app-page/index.d.ts +3 -3
- package/lib/apps/plugins/app-page/index.js +1 -1
- package/lib/apps/plugins/app-page/pageRun.d.ts +2 -2
- package/lib/apps/plugins/app-page/pageRun.js +2 -2
- package/lib/apps/plugins/app-rules/AppRulesCard.d.ts +5 -5
- package/lib/apps/plugins/app-rules/AppRulesCard.js +4 -4
- package/lib/apps/plugins/assistant/index.d.ts +2 -2
- package/lib/apps/plugins/assistant-characters/index.d.ts +2 -2
- package/lib/apps/plugins/assistant-characters/index.js +2 -2
- package/lib/apps/plugins/canvas-blocks/index.d.ts +1 -1
- package/lib/apps/plugins/canvas-blocks/index.js +1 -1
- package/lib/apps/plugins/canvas-parts/index.d.ts +5 -5
- package/lib/apps/plugins/canvas-parts/index.js +5 -5
- package/lib/apps/plugins/chat/ChatView.js +36 -34
- package/lib/apps/plugins/chat/index.d.ts +8 -8
- package/lib/apps/plugins/document/DocumentView.js +2 -2
- package/lib/apps/plugins/notebook/NotebookView.js +1 -1
- package/lib/apps/plugins/page-layout/SplitLayout.d.ts +1 -1
- package/lib/apps/plugins/pap-sign-in/PapSignInCard.d.ts +1 -1
- package/lib/apps/plugins/pap-sign-in/PapSignInCard.js +1 -1
- package/lib/apps/plugins/pap-sign-in/index.js +1 -1
- package/lib/apps/plugins/pap-sign-in/signIn.d.ts +1 -1
- package/lib/apps/plugins/pap-sign-in/signIn.js +1 -1
- package/lib/apps/plugins/plugins-panel/index.d.ts +1 -1
- package/lib/apps/plugins/plugins-panel/index.js +1 -1
- package/lib/apps/plugins/shield-displays/DiffCard.d.ts +2 -2
- package/lib/apps/plugins/shield-displays/TerminalCard.d.ts +1 -1
- package/lib/apps/plugins/shield-displays/index.js +3 -3
- package/lib/apps/presets.d.ts +9 -9
- package/lib/apps/presets.js +3 -3
- package/lib/apps/shell/LoopWorkspace.d.ts +1 -1
- package/lib/apps/shell/LoopWorkspace.js +1 -1
- package/lib/apps/shell/PluginToggles.d.ts +1 -1
- package/lib/apps/shell/SidebarRail.d.ts +1 -1
- package/lib/apps/shell/paneMotion.d.ts +1 -1
- package/lib/apps/shell/paneMotion.js +1 -1
- package/lib/chat/ChatFloating.d.ts +8 -9
- package/lib/chat/ChatFloating.js +4 -4
- package/lib/chat/ChatInline.js +1 -1
- package/lib/chat/ChatLanguage.d.ts +1 -1
- package/lib/chat/ChatLanguage.js +1 -1
- package/lib/chat/assistant/AssistantContextMenu.d.ts +1 -1
- package/lib/chat/assistant/AssistantStage.d.ts +4 -4
- package/lib/chat/assistant/AssistantStage.js +1 -1
- package/lib/chat/assistant/BalloonParts.d.ts +1 -1
- package/lib/chat/assistant/BalloonVisual.d.ts +1 -1
- package/lib/chat/assistant/SpeechBalloon.d.ts +2 -2
- package/lib/chat/assistant/SpriteCharacter.d.ts +1 -1
- package/lib/chat/assistant/characters.d.ts +2 -2
- package/lib/chat/assistant/formats/acf.js +1 -1
- package/lib/chat/assistant/formats/files.js +1 -1
- package/lib/chat/assistant/formats/index.d.ts +1 -1
- package/lib/chat/assistant/formats/index.js +1 -1
- package/lib/chat/assistant/formats/types.d.ts +1 -1
- package/lib/chat/assistant/state.d.ts +2 -2
- package/lib/chat/assistant/toolLine.js +1 -1
- package/lib/chat/base/ChatBase.js +28 -20
- package/lib/chat/base/conversationItems.d.ts +3 -3
- package/lib/chat/base/loopElement.d.ts +2 -2
- package/lib/chat/base/loopStep.d.ts +3 -3
- package/lib/chat/base/loopStep.js +1 -1
- package/lib/chat/base/loopWindow.d.ts +3 -3
- package/lib/chat/base/loopWindow.js +3 -3
- package/lib/chat/base/uiFiles.d.ts +1 -1
- package/lib/chat/base/uiFiles.js +1 -1
- package/lib/chat/base/uiOps.d.ts +1 -1
- package/lib/chat/base/uiOps.js +1 -1
- package/lib/chat/index.js +1 -1
- package/lib/chat/indicators/McpStatusIndicator.js +1 -1
- package/lib/chat/indicators/SkillsStatusIndicator.js +1 -1
- package/lib/chat/messages/ChatMessageList.d.ts +3 -4
- package/lib/chat/messages/ChatMessageList.js +2 -2
- package/lib/chat/messages/markdownWithoutHtml.d.ts +1 -1
- package/lib/chat/messages/markdownWithoutHtml.js +1 -1
- package/lib/chat/presence/Presence.d.ts +2 -2
- package/lib/chat/presence/Presence.js +1 -1
- package/lib/chat/presence/presenceStatus.d.ts +2 -2
- package/lib/chat/presence/presenceStatus.js +2 -2
- package/lib/chat/prompt/InputPrompt.d.ts +3 -3
- package/lib/chat/prompt/InputPromptBase.d.ts +1 -1
- package/lib/chat/prompt/InputPromptBase.js +1 -1
- package/lib/chat/prompt/InputPromptLexical.d.ts +1 -1
- package/lib/chat/styles/streamdownStyles.js +1 -1
- package/lib/chat/useViewportDrag.d.ts +1 -1
- package/lib/chat/viewModes.d.ts +1 -1
- package/lib/chat/viewModes.js +2 -2
- package/lib/chat/words.js +1 -1
- package/lib/client/mixins/RuntimesMixin.d.ts +3 -3
- package/lib/client/mixins/RuntimesMixin.js +3 -3
- package/lib/components/a2ui/custom/index.d.ts +3 -3
- package/lib/components/a2ui/custom/index.js +1 -1
- package/lib/components/a2ui/custom/sandbox.d.ts +2 -2
- package/lib/components/a2ui/custom/sandbox.js +2 -2
- package/lib/components/a2ui/datalayer/Chart.js +2 -2
- package/lib/components/a2ui/datalayer/Chat.js +1 -1
- package/lib/components/a2ui/datalayer/Download.js +1 -1
- package/lib/components/a2ui/datalayer/Evidence.js +1 -1
- package/lib/components/a2ui/datalayer/FileUpload.d.ts +1 -1
- package/lib/components/a2ui/datalayer/FileUpload.js +2 -2
- package/lib/components/a2ui/datalayer/Form.js +2 -2
- package/lib/components/a2ui/datalayer/SchemaForm.d.ts +1 -1
- package/lib/components/a2ui/datalayer/Table.js +1 -1
- package/lib/components/a2ui/datalayer/drawn.d.ts +1 -1
- package/lib/components/a2ui/datalayer/drawn.js +1 -1
- package/lib/components/a2ui/datalayer/formWidgets.js +1 -1
- package/lib/components/a2ui/datalayer/index.d.ts +1 -1
- package/lib/components/a2ui/datalayer/schema.d.ts +2 -2
- package/lib/components/a2ui/datalayer/schema.js +2 -2
- package/lib/components/a2ui/styles.js +1 -1
- package/lib/components/a2ui/visibleWhen.d.ts +3 -3
- package/lib/components/a2ui/visibleWhen.js +3 -3
- package/lib/components/code-sandboxes/CodeSandboxEnvironmentSelect.d.ts +1 -1
- package/lib/components/code-sandboxes/CodeSandboxLauncher.js +1 -1
- package/lib/components/code-sandboxes/CodeSandboxUtils.d.ts +1 -1
- package/lib/components/code-sandboxes/codeSandboxEnvironments.d.ts +2 -2
- package/lib/components/inspector/a2aSpans.d.ts +1 -1
- package/lib/components/inspector/a2aSpans.js +1 -1
- package/lib/components/teams/A2ATeamGraph.d.ts +3 -3
- package/lib/components/teams/A2ATeamGraph.js +1 -3
- package/lib/components/teams/AnswerSurfaces.d.ts +1 -1
- package/lib/components/teams/NotebookPreview.d.ts +1 -1
- package/lib/components/teams/SceneTranscript.d.ts +1 -1
- package/lib/components/teams/SceneView.d.ts +1 -1
- package/lib/components/teams/a2aTeamFlow.d.ts +1 -1
- package/lib/components/teams/a2aTeamFlow.js +1 -1
- package/lib/components/teams/sceneStage.d.ts +1 -1
- package/lib/components/teams/sceneTranscript.d.ts +1 -1
- package/lib/components/teams/useA2ATeam.d.ts +5 -5
- package/lib/components/teams/useA2ATeam.js +3 -3
- package/lib/config/AgentConfiguration.d.ts +1 -1
- package/lib/examples/AssistantExample.d.ts +1 -1
- package/lib/examples/AssistantExample.js +1 -1
- package/lib/examples/AssistantGalleryExample.d.ts +1 -1
- package/lib/examples/AssistantGalleryExample.js +1 -1
- package/lib/examples/LoopAppComputerExample.d.ts +1 -1
- package/lib/examples/LoopAppComputerExample.js +1 -1
- package/lib/examples/ProtocolSignedRequestsExample.d.ts +1 -1
- package/lib/examples/ProtocolSignedRequestsExample.js +1 -1
- package/lib/examples/ProtocolUcpCheckoutExample.d.ts +1 -1
- package/lib/examples/ProtocolUcpCheckoutExample.js +1 -1
- package/lib/examples/ScenesExample.d.ts +1 -1
- package/lib/examples/ScenesExample.js +1 -1
- package/lib/examples/ShieldHarnessExample.d.ts +1 -1
- package/lib/examples/ShieldHarnessExample.js +1 -1
- package/lib/examples/ShieldPolicyExample.d.ts +1 -1
- package/lib/examples/ShieldPolicyExample.js +1 -1
- package/lib/examples/VoiceChatExample.d.ts +1 -1
- package/lib/examples/VoiceChatExample.js +1 -1
- package/lib/examples/example-selector.js +3 -3
- package/lib/examples/exampleGroups.js +3 -3
- package/lib/examples/pap/PapSignInDisplayView.d.ts +1 -1
- package/lib/examples/pap/PapSignInDisplayView.js +1 -1
- package/lib/examples/pap/papSignInCases.js +1 -1
- package/lib/examples/protocols/signedRequestsDemo.d.ts +1 -1
- package/lib/examples/protocols/signedRequestsDemo.js +1 -1
- package/lib/examples/protocols/ucpCheckoutDemo.d.ts +1 -1
- package/lib/examples/protocols/ucpCheckoutDemo.js +1 -1
- package/lib/examples/shield/shieldHarness.d.ts +1 -1
- package/lib/examples/shield/shieldPolicyDemo.d.ts +2 -2
- package/lib/examples/shield/shieldPolicyDemo.js +1 -1
- package/lib/examples/utils/assistantGallery.d.ts +1 -1
- package/lib/examples/utils/clippyJsCharacters.js +2 -2
- package/lib/examples/utils/testSpriteCharacter.js +2 -2
- package/lib/hooks/ownRoutes.d.ts +1 -1
- package/lib/hooks/useAgentRuntimes.d.ts +1 -1
- package/lib/hooks/useChat.js +1 -1
- package/lib/index.js +1 -1
- package/lib/loop-example-main.js +1 -1
- package/lib/models/Environment.d.ts +11 -11
- package/lib/models/Environment.js +1 -1
- package/lib/models/RuntimeDTO.d.ts +1 -1
- package/lib/portable/activity.d.ts +2 -2
- package/lib/portable/activity.js +3 -3
- package/lib/portable/adapterEvents.d.ts +1 -1
- package/lib/portable/agUiRefusal.d.ts +1 -1
- package/lib/portable/agUiRefusal.js +1 -1
- package/lib/portable/agui.d.ts +2 -2
- package/lib/portable/agui.js +2 -2
- package/lib/portable/approvalCard.d.ts +1 -1
- package/lib/portable/approvalCard.js +1 -1
- package/lib/portable/approvals.d.ts +2 -2
- package/lib/portable/approvals.js +1 -1
- package/lib/portable/conversation.d.ts +2 -2
- package/lib/portable/conversation.js +1 -1
- package/lib/portable/direct.d.ts +2 -2
- package/lib/portable/displays.d.ts +2 -2
- package/lib/portable/displays.js +3 -3
- package/lib/portable/fixtures.d.ts +4 -5
- package/lib/portable/fixtures.js +4 -5
- package/lib/portable/hosts/agentClient.d.ts +5 -6
- package/lib/portable/hosts/agentClient.js +7 -7
- package/lib/portable/hosts/approvalRenderers.d.ts +6 -7
- package/lib/portable/hosts/approvalRenderers.js +2 -3
- package/lib/portable/hosts/client.d.ts +9 -6
- package/lib/portable/hosts/client.js +9 -8
- package/lib/portable/hosts/contracts.d.ts +2 -4
- package/lib/portable/hosts/contracts.js +2 -4
- package/lib/portable/hosts/contracts.json +2 -2
- package/lib/portable/hosts/deadLetters.js +2 -2
- package/lib/portable/hosts/deliveries.d.ts +2 -3
- package/lib/portable/hosts/forbiddenGraph.d.ts +4 -4
- package/lib/portable/hosts/forbiddenGraph.js +4 -4
- package/lib/portable/hosts/health.d.ts +3 -4
- package/lib/portable/hosts/health.js +3 -4
- package/lib/portable/hosts/index.d.ts +1 -1
- package/lib/portable/hosts/index.js +1 -1
- package/lib/portable/hosts/observability.d.ts +1 -1
- package/lib/portable/hosts/observability.js +3 -4
- package/lib/portable/hosts/postgresQueue.d.ts +2 -2
- package/lib/portable/hosts/postgresQueue.js +3 -3
- package/lib/portable/hosts/queue.d.ts +1 -1
- package/lib/portable/hosts/quotas.d.ts +2 -2
- package/lib/portable/hosts/quotas.js +2 -2
- package/lib/portable/hosts/rateLimit.d.ts +1 -1
- package/lib/portable/hosts/resolution.d.ts +2 -2
- package/lib/portable/hosts/schema.d.ts +1 -1
- package/lib/portable/hosts/schema.js +1 -1
- package/lib/portable/hosts/secretCipher.d.ts +2 -2
- package/lib/portable/hosts/sessionUid.js +1 -2
- package/lib/portable/hosts/turnState.d.ts +1 -1
- package/lib/portable/index.js +12 -12
- package/lib/portable/lifecycle.d.ts +3 -3
- package/lib/portable/presence.d.ts +3 -3
- package/lib/portable/protectedInput.d.ts +1 -1
- package/lib/portable/records.d.ts +2 -2
- package/lib/portable/records.js +2 -2
- package/lib/portable/runMeasures.d.ts +1 -1
- package/lib/portable/runMeasures.js +1 -1
- package/lib/portable/runtimes.d.ts +1 -1
- package/lib/portable/semantic-events.json +1 -1
- package/lib/portable/semantic.d.ts +1 -1
- package/lib/portable/semantic.js +1 -1
- package/lib/portable/semanticOfAgUi.d.ts +2 -2
- package/lib/portable/semanticOfAgUi.js +1 -1
- package/lib/portable/signIn.d.ts +5 -5
- package/lib/portable/signIn.js +1 -1
- package/lib/portable/signInStatus.d.ts +1 -2
- package/lib/portable/signInStatus.js +1 -2
- package/lib/portable/thread.d.ts +2 -2
- package/lib/portable/thread.js +2 -2
- package/lib/portable/views.d.ts +5 -5
- package/lib/protocols/A2AAdapter.d.ts +1 -1
- package/lib/protocols/A2AAdapter.js +3 -3
- package/lib/protocols/AGUIAdapter.d.ts +1 -1
- package/lib/protocols/AGUIAdapter.js +2 -2
- package/lib/protocols/BrowserAgentAdapter.d.ts +2 -2
- package/lib/protocols/BrowserAgentAdapter.js +1 -1
- package/lib/protocols/VercelAIAdapter.js +2 -2
- package/lib/protocols/a2a/index.d.ts +1 -1
- package/lib/protocols/a2a/index.js +1 -1
- package/lib/protocols/agentProtocols.d.ts +1 -1
- package/lib/protocols/agentProtocols.js +1 -1
- package/lib/protocols/agentic-commerce/index.d.ts +2 -2
- package/lib/protocols/agentic-commerce/index.js +2 -2
- package/lib/protocols/commerce.d.ts +1 -1
- package/lib/protocols/commerce.js +3 -3
- package/lib/protocols/core.d.ts +3 -3
- package/lib/protocols/core.js +2 -2
- package/lib/protocols/mcp/client.js +1 -1
- package/lib/protocols/mcp/index.js +1 -1
- package/lib/protocols/pact/index.d.ts +6 -6
- package/lib/protocols/pact/index.js +6 -6
- package/lib/protocols/ucp/index.d.ts +2 -2
- package/lib/protocols/ucp/index.js +2 -2
- package/lib/protocols/ucp/merchant.js +1 -2
- package/lib/protocols/web-bot-auth/index.d.ts +1 -1
- package/lib/protocols/web-bot-auth/index.js +1 -1
- package/lib/protocols/web-bot-auth/tap.js +1 -1
- package/lib/runtimes/actions.js +2 -2
- package/lib/runtimes/apis.d.ts +3 -4
- package/lib/runtimes/browser/a2aPeer.d.ts +1 -1
- package/lib/runtimes/browser/a2aPeer.js +1 -1
- package/lib/runtimes/browser/protocol.d.ts +1 -1
- package/lib/runtimes/variants.d.ts +3 -3
- package/lib/runtimes/variants.js +4 -4
- package/lib/specs/agents/agents.js +2 -2
- package/lib/specs/apps.js +28 -28
- package/lib/specs/appspecSchema.js +62 -62
- package/lib/specs/harnesses.d.ts +1 -1
- package/lib/specs/harnesses.js +1 -1
- package/lib/specs/policies.d.ts +1 -1
- package/lib/specs/policies.js +2 -2
- package/lib/specs/protocols.d.ts +1 -1
- package/lib/specs/sceneSchema.js +4 -4
- package/lib/specs/scenes.js +4 -4
- package/lib/specs/standards.d.ts +1 -1
- package/lib/specs/ui.d.ts +2 -2
- package/lib/specs/ui.js +1 -1
- package/lib/specs/uiRenderers.d.ts +1 -1
- package/lib/specs/voices.d.ts +2 -2
- package/lib/specs/voices.js +2 -2
- package/lib/stories/loop/ReferenceScreens.js +1 -1
- package/lib/stories/loop/pictures-main.js +2 -2
- package/lib/test-setup.js +1 -1
- package/lib/types/agentspecs.d.ts +81 -85
- package/lib/types/chat.d.ts +26 -13
- package/lib/types/messages.d.ts +1 -1
- package/lib/types/protocol.d.ts +3 -3
- package/lib/types/scenes.d.ts +6 -6
- package/lib/types/teams.d.ts +3 -3
- package/lib/ui-plugins/MCPUIPlugin.d.ts +2 -2
- package/lib/ui-plugins/MCPUIPlugin.js +1 -1
- package/lib/voice/ComposerVoice.d.ts +5 -3
- package/lib/voice/ComposerVoice.js +4 -4
- package/lib/voice/HandsFree.d.ts +9 -3
- package/lib/voice/HandsFree.js +8 -3
- package/lib/voice/ReadAloud.d.ts +1 -1
- package/lib/voice/VoiceInput.d.ts +1 -2
- package/lib/voice/VoiceMenu.d.ts +1 -1
- package/lib/voice/captions.d.ts +1 -1
- package/lib/voice/captions.js +1 -1
- package/lib/voice/capture.d.ts +1 -1
- package/lib/voice/capture.js +1 -1
- package/lib/voice/chatVoice.d.ts +1 -1
- package/lib/voice/chatVoice.js +3 -3
- package/lib/voice/choices.d.ts +2 -2
- package/lib/voice/choices.js +2 -2
- package/lib/voice/consent.js +1 -1
- package/lib/voice/handsFree.d.ts +29 -4
- package/lib/voice/handsFree.js +32 -4
- package/lib/voice/hearing.d.ts +1 -1
- package/lib/voice/hearing.js +1 -1
- package/lib/voice/index.d.ts +2 -2
- package/lib/voice/pinned.d.ts +2 -2
- package/lib/voice/pinned.js +2 -2
- package/lib/voice/sayAloud.d.ts +2 -2
- package/lib/voice/sayAloud.js +2 -2
- package/lib/voice/sentences.d.ts +1 -1
- package/lib/voice/sentences.js +1 -1
- package/lib/voice/serverHearing.d.ts +8 -2
- package/lib/voice/serverHearing.js +37 -6
- package/lib/voice/settings.d.ts +2 -2
- package/lib/voice/settings.js +2 -2
- package/lib/voice/speaker.d.ts +10 -4
- package/lib/voice/speaker.js +5 -2
- package/lib/voice/types.d.ts +1 -1
- package/lib/voice/useSpokenAnswers.js +2 -2
- package/lib/voice/useVoiceSettings.js +1 -1
- package/lib/voice/useVoiceSpeaker.js +1 -1
- package/package.json +2 -2
- package/scripts/codegen/generate_agentic_commerce.sh +1 -1
- package/scripts/codegen/generate_agents.py +5 -5
- package/scripts/codegen/generate_apps.py +3 -3
- package/scripts/codegen/generate_harnesses.py +4 -4
- package/scripts/codegen/generate_mcp_servers.py +2 -2
- package/scripts/codegen/generate_policies.py +3 -3
- package/scripts/codegen/generate_protocols.py +3 -4
- package/scripts/codegen/generate_scenes.py +4 -4
- package/scripts/codegen/generate_standards.py +3 -3
- package/scripts/codegen/generate_teams.py +1 -1
- package/scripts/codegen/generate_ui.py +8 -8
- package/scripts/codegen/generate_ui_renderers.py +3 -3
- package/scripts/codegen/generate_voices.py +4 -4
- package/scripts/dist-embed.mjs +1 -1
- package/scripts/generate-environments-types.py +1 -1
- package/scripts/record-scene-checks.py +2 -2
- package/scripts/voice/measure.py +3 -3
- package/scripts/voice/pin_store.py +1 -1
- package/scripts/voice/serve_store.py +1 -1
- package/scripts/voice/transcribe.mjs +1 -1
|
@@ -72,7 +72,7 @@ const EphemeralDocument = React.lazy(() => import('../document/EphemeralDocument
|
|
|
72
72
|
// The agent's details (its context charts draw with ECharts) and the
|
|
73
73
|
// companion notebook (JupyterLab's notebook) are opened by a click, not drawn
|
|
74
74
|
// with the conversation: each is its own chunk, fetched when first shown, so
|
|
75
|
-
// a chat — and an embedded application (
|
|
75
|
+
// a chat — and an embedded application (D-08) — loads without them.
|
|
76
76
|
// A chunk that cannot load says so where the view would be.
|
|
77
77
|
const loadAgentDetails = () => import('../../agents/AgentDetails').then(m => ({ default: m.AgentDetails }));
|
|
78
78
|
const loadEphemeralNotebook = () => import('../notebook/EphemeralNotebook').then(m => ({
|
|
@@ -426,7 +426,7 @@ function ChatBaseInner({ title, subtitle, showHeader = false, showTokenUsage = t
|
|
|
426
426
|
// Mode selection
|
|
427
427
|
useStore: useStoreMode = true, protocol: protocolRaw, onSendMessage, onSendReady, onLoadingChange, onSpeakingChange, onContextSnapshot, enableStreaming = false,
|
|
428
428
|
// Extended props
|
|
429
|
-
brandIcon, avatarConfig, headerButtons, showPoweredBy = false, poweredByProps, emptyState, renderHeader, showTurnFooter = true, notebookToolSurfacesId, footerContent, welcome, trailingContent, voice, voiceSpeaking = false, voiceSentence, onStopSpeaking, onReadAloud, showInformation = false, onInformationClick, headerContent, children, borderRadius, backgroundColor, border, boxShadow, compact = false, placeholder, description = 'Start a conversation with the AI agent.', onStateUpdate, onNewChat, onClear, onMessagesChange, onItemsChange, onDisplayItemsChange, autoFocus = false, suggestions, submitOnSuggestionClick = true, hideMessagesAfterToolUI = false, focusTrigger, frontendTools: frontendToolsProp, enableEphemeralNotebook = false, initialEphemeralNotebookOpen = true, onEphemeralNotebookOpenChange, enableEphemeralDocument = false, initialEphemeralSurfaceMode, onEphemeralSurfaceModeChange, collapsed = false, onExpandFromCollapsed, ephemeralNotebookToolbar, ephemeralNotebookToolbarExtraItems, ephemeralDocumentToolbarExtraItems, ephemeralNotebookCollaborationProvider, ephemeralNotebookCollaborationDocumentId, ephemeralDocumentCollaboration, ephemeralRuntimeOverride,
|
|
429
|
+
brandIcon, avatarConfig, headerButtons, showPoweredBy = false, poweredByProps, emptyState, renderHeader, showTurnFooter = true, notebookToolSurfacesId, footerContent, welcome, trailingContent, voice, voiceSpeaking = false, voiceSentence, onStopSpeaking, voiceLevel, onReadAloud, showInformation = false, onInformationClick, headerContent, children, borderRadius, backgroundColor, border, boxShadow, compact = false, placeholder, description = 'Start a conversation with the AI agent.', onStateUpdate, onNewChat, onClear, onMessagesChange, onItemsChange, onDisplayItemsChange, autoFocus = false, suggestions, submitOnSuggestionClick = true, hideMessagesAfterToolUI = false, focusTrigger, frontendTools: frontendToolsProp, enableEphemeralNotebook = false, initialEphemeralNotebookOpen = true, onEphemeralNotebookOpenChange, enableEphemeralDocument = false, initialEphemeralSurfaceMode, onEphemeralSurfaceModeChange, collapsed = false, onExpandFromCollapsed, ephemeralNotebookToolbar, ephemeralNotebookToolbarExtraItems, ephemeralDocumentToolbarExtraItems, ephemeralNotebookCollaborationProvider, ephemeralNotebookCollaborationDocumentId, ephemeralDocumentCollaboration, ephemeralRuntimeOverride,
|
|
430
430
|
// Tool invocation hooks
|
|
431
431
|
onToolCallStart, onToolCallComplete, inspector: inspectorGiven,
|
|
432
432
|
// Identity/Authorization props
|
|
@@ -1083,7 +1083,7 @@ showToolApprovalBanner = true, pendingApprovals: pendingApprovalsProp, onApprove
|
|
|
1083
1083
|
const isA2AProtocol = protocol?.type === 'a2a';
|
|
1084
1084
|
// ---- Component state ----
|
|
1085
1085
|
/*
|
|
1086
|
-
* The conversation (
|
|
1086
|
+
* The conversation (M-030): `reduceConversation`'s, as on the phone,
|
|
1087
1087
|
* whatever protocol the agent speaks — its adapter's events normalised by
|
|
1088
1088
|
* `conversationEventsOf`. Kept in a ref as each change lands, so the events
|
|
1089
1089
|
* of one network chunk each read the last, and drawn on the next render
|
|
@@ -1186,7 +1186,7 @@ showToolApprovalBanner = true, pendingApprovals: pendingApprovalsProp, onApprove
|
|
|
1186
1186
|
const [historyRefreshTick, setHistoryRefreshTick] = useState(0);
|
|
1187
1187
|
const historyRetryAttemptsRef = useRef(new Map());
|
|
1188
1188
|
// The steps of an application's code shown so far, as displays (patched
|
|
1189
|
-
// as they stream), and the elements it showed (
|
|
1189
|
+
// as they stream), and the elements it showed (RU-3).
|
|
1190
1190
|
const uiStepsRef = useRef(emptyUiModel());
|
|
1191
1191
|
const uiElementsRef = useRef(new Set());
|
|
1192
1192
|
// Adapter-ready flag — flipped to true once the protocol adapter is initialised
|
|
@@ -1559,7 +1559,7 @@ showToolApprovalBanner = true, pendingApprovals: pendingApprovalsProp, onApprove
|
|
|
1559
1559
|
hideMessagesAfterToolUIRef.current = hideMessagesAfterToolUI;
|
|
1560
1560
|
const threadIdRef = useRef(thread?.id || generateMessageId());
|
|
1561
1561
|
/*
|
|
1562
|
-
* The thread a host gave, kept as it was given at mount (
|
|
1562
|
+
* The thread a host gave, kept as it was given at mount (D-13), and
|
|
1563
1563
|
* told when a message is first sent on a thread: the host keeps it.
|
|
1564
1564
|
*/
|
|
1565
1565
|
const threadGivenRef = useRef(thread);
|
|
@@ -1572,7 +1572,7 @@ showToolApprovalBanner = true, pendingApprovals: pendingApprovalsProp, onApprove
|
|
|
1572
1572
|
}
|
|
1573
1573
|
}, []);
|
|
1574
1574
|
/*
|
|
1575
|
-
* The conversation's ui channel (
|
|
1575
|
+
* The conversation's ui channel (RU-W): one WebSocket per
|
|
1576
1576
|
* conversation, its thread the scope, opened once its session is there
|
|
1577
1577
|
* (the first event of its first run, or a thread reopened). What its
|
|
1578
1578
|
* messages show, its steps, its elements, its authors and its window
|
|
@@ -1587,7 +1587,7 @@ showToolApprovalBanner = true, pendingApprovals: pendingApprovalsProp, onApprove
|
|
|
1587
1587
|
const uiSocketTokenRef = useRef(protocol?.authToken);
|
|
1588
1588
|
uiSocketTokenRef.current = protocol?.authToken;
|
|
1589
1589
|
/*
|
|
1590
|
-
* Its files (
|
|
1590
|
+
* Its files (RU-6): uploaded to its runtime before the run or
|
|
1591
1591
|
* the press that names them, the conversation's thread their scope; the
|
|
1592
1592
|
* run carries the ref, never the bytes.
|
|
1593
1593
|
*/
|
|
@@ -1678,11 +1678,11 @@ showToolApprovalBanner = true, pendingApprovals: pendingApprovalsProp, onApprove
|
|
|
1678
1678
|
uiStepsRef.current = next.steps;
|
|
1679
1679
|
const routed = next.routed;
|
|
1680
1680
|
if (routed.to === 'window') {
|
|
1681
|
-
// For the page it sits in, outside the conversation (
|
|
1681
|
+
// For the page it sits in, outside the conversation (P-25).
|
|
1682
1682
|
tellLoopWindow(routed.data);
|
|
1683
1683
|
}
|
|
1684
1684
|
else if (routed.to === 'step') {
|
|
1685
|
-
// A step of its code, drawn as it runs (
|
|
1685
|
+
// A step of its code, drawn as it runs (P-16).
|
|
1686
1686
|
const step = routed.step;
|
|
1687
1687
|
changeLayer(kept => {
|
|
1688
1688
|
const anchors = new Map(kept.steps.map(row => [row.item.id, row.after]));
|
|
@@ -1700,7 +1700,7 @@ showToolApprovalBanner = true, pendingApprovals: pendingApprovalsProp, onApprove
|
|
|
1700
1700
|
});
|
|
1701
1701
|
}
|
|
1702
1702
|
else if (routed.to === 'element') {
|
|
1703
|
-
// In a side panel or on a page of its own (
|
|
1703
|
+
// In a side panel or on a page of its own (P-18).
|
|
1704
1704
|
uiElementsRef.current.add(routed.change.id);
|
|
1705
1705
|
applyLoopElement(routed.change);
|
|
1706
1706
|
}
|
|
@@ -1822,7 +1822,7 @@ showToolApprovalBanner = true, pendingApprovals: pendingApprovalsProp, onApprove
|
|
|
1822
1822
|
recorderRef.current = null;
|
|
1823
1823
|
}
|
|
1824
1824
|
const inspectAnswerRef = useRef('');
|
|
1825
|
-
// A line the agent says aloud, from a run's `voice.say` (
|
|
1825
|
+
// A line the agent says aloud, from a run's `voice.say` (VO-35).
|
|
1826
1826
|
const voiceSayRef = useRef(undefined);
|
|
1827
1827
|
const handleRespondRef = useRef(null);
|
|
1828
1828
|
// A decision made outside the chat — a host page's own approval banner —
|
|
@@ -2367,7 +2367,7 @@ showToolApprovalBanner = true, pendingApprovals: pendingApprovalsProp, onApprove
|
|
|
2367
2367
|
if (!historyScopeId)
|
|
2368
2368
|
return;
|
|
2369
2369
|
/*
|
|
2370
|
-
* A thread the host gave (
|
|
2370
|
+
* A thread the host gave (D-13): its session's conversation, drawn
|
|
2371
2371
|
* once, and never replaced by the runtime's snapshot, which is its
|
|
2372
2372
|
* agent's — every session's — not this one's.
|
|
2373
2373
|
*/
|
|
@@ -2804,7 +2804,7 @@ showToolApprovalBanner = true, pendingApprovals: pendingApprovalsProp, onApprove
|
|
|
2804
2804
|
break;
|
|
2805
2805
|
case 'activity':
|
|
2806
2806
|
// What the server says besides the conversation's text comes on
|
|
2807
|
-
// the ui socket (
|
|
2807
|
+
// the ui socket (RU-W); the run's own — `loop.session`
|
|
2808
2808
|
// among them — are the conversation's.
|
|
2809
2809
|
if (event.activity) {
|
|
2810
2810
|
voiceSayRef.current?.(event.activity);
|
|
@@ -2958,7 +2958,7 @@ showToolApprovalBanner = true, pendingApprovals: pendingApprovalsProp, onApprove
|
|
|
2958
2958
|
// ========================================================================
|
|
2959
2959
|
// handleSend
|
|
2960
2960
|
// ========================================================================
|
|
2961
|
-
// Voice (
|
|
2961
|
+
// Voice (V1): what was said and put in the composer, until sent.
|
|
2962
2962
|
const spokenRef = useRef(undefined);
|
|
2963
2963
|
// Its voice with what it leaves unsaid filled in: Datalayer's models and packages.
|
|
2964
2964
|
// The person's own settings, followed as the voice menu changes them (VO-30).
|
|
@@ -3005,7 +3005,7 @@ showToolApprovalBanner = true, pendingApprovals: pendingApprovalsProp, onApprove
|
|
|
3005
3005
|
setVoiceSaid('');
|
|
3006
3006
|
}
|
|
3007
3007
|
}, [isLoading]);
|
|
3008
|
-
// Answers spoken over, hands-free (
|
|
3008
|
+
// Answers spoken over, hands-free (VO-13): marked *interrupted*.
|
|
3009
3009
|
const [interruptedIds, setInterruptedIds] = useState(() => new Set());
|
|
3010
3010
|
// The conversation as shown, read when the person speaks over an answer.
|
|
3011
3011
|
const shownItemsRef = useRef([]);
|
|
@@ -3016,12 +3016,14 @@ showToolApprovalBanner = true, pendingApprovals: pendingApprovalsProp, onApprove
|
|
|
3016
3016
|
}
|
|
3017
3017
|
}, []);
|
|
3018
3018
|
const stopSpeaking = onStopSpeaking ?? (ownVoice.speaker ? ownVoice.stop : undefined);
|
|
3019
|
+
// How loud the answer plays: the host's speaker's, or the chat's own (VO-13).
|
|
3020
|
+
const playbackLevel = hostSpeaks ? voiceLevel : ownVoice.level;
|
|
3019
3021
|
const readAnswerAloud = onReadAloud ?? (ownVoice.speaker ? ownVoice.read : undefined);
|
|
3020
3022
|
const handleSend = useCallback(async (messageOverride,
|
|
3021
3023
|
// AG-UI's: what goes with the run besides the conversation — an
|
|
3022
|
-
// application's page says there what it did (
|
|
3024
|
+
// application's page says there what it did (R-04).
|
|
3023
3025
|
forwardedPropsGiven,
|
|
3024
|
-
// How the message was heard, when it was said (
|
|
3026
|
+
// How the message was heard, when it was said (VO-27).
|
|
3025
3027
|
spokenGiven) => {
|
|
3026
3028
|
const messageContent = (messageOverride ?? input).trim();
|
|
3027
3029
|
if (!messageContent || isLoading)
|
|
@@ -3039,7 +3041,7 @@ showToolApprovalBanner = true, pendingApprovals: pendingApprovalsProp, onApprove
|
|
|
3039
3041
|
}
|
|
3040
3042
|
}
|
|
3041
3043
|
// A press of what a display offered goes up the ui socket, checked
|
|
3042
|
-
// there; the run that answers it names it only (
|
|
3044
|
+
// there; the run that answers it names it only (RU-W).
|
|
3043
3045
|
const pressed = displayPressOf(forwardedPropsGiven);
|
|
3044
3046
|
if (pressed && forwardedPropsGiven) {
|
|
3045
3047
|
const socket = uiSocketRef.current?.socket;
|
|
@@ -3313,7 +3315,7 @@ showToolApprovalBanner = true, pendingApprovals: pendingApprovalsProp, onApprove
|
|
|
3313
3315
|
protocol?.agentId,
|
|
3314
3316
|
]);
|
|
3315
3317
|
/*
|
|
3316
|
-
* How a message's display presses what it offered (
|
|
3318
|
+
* How a message's display presses what it offered (RU-4,
|
|
3317
3319
|
* RU-W): with the token of the offer, as the run's press — which
|
|
3318
3320
|
* `handleSend` sends up the ui socket before the run, the run naming it
|
|
3319
3321
|
* only. An answer is the person's words in the conversation; any other
|
|
@@ -3384,6 +3386,8 @@ showToolApprovalBanner = true, pendingApprovals: pendingApprovalsProp, onApprove
|
|
|
3384
3386
|
thread: () => threadIdRef.current,
|
|
3385
3387
|
// Its speaker, for a host whose composer holds the microphone (VO-10).
|
|
3386
3388
|
stopSpeaking,
|
|
3389
|
+
// How loud it plays, for a host's hands-free barge-in (VO-13).
|
|
3390
|
+
voiceLevel: playbackLevel,
|
|
3387
3391
|
// The answer spoken over, marked for a host's own composer (VO-13).
|
|
3388
3392
|
markInterrupted,
|
|
3389
3393
|
});
|
|
@@ -3398,6 +3402,7 @@ showToolApprovalBanner = true, pendingApprovals: pendingApprovalsProp, onApprove
|
|
|
3398
3402
|
handleStop,
|
|
3399
3403
|
handleNewChat,
|
|
3400
3404
|
stopSpeaking,
|
|
3405
|
+
playbackLevel,
|
|
3401
3406
|
markInterrupted,
|
|
3402
3407
|
]);
|
|
3403
3408
|
// Streaming state, for a host that draws the prompt.
|
|
@@ -3768,7 +3773,7 @@ showToolApprovalBanner = true, pendingApprovals: pendingApprovalsProp, onApprove
|
|
|
3768
3773
|
shownItemsRef.current = welcomedItems;
|
|
3769
3774
|
const saidId = saidMessageId(welcomedItems, sentenceSaid);
|
|
3770
3775
|
/*
|
|
3771
|
-
* *Read aloud* under each answer the agent has finished (
|
|
3776
|
+
* *Read aloud* under each answer the agent has finished (VO-21),
|
|
3772
3777
|
* when the host reads answers aloud on request.
|
|
3773
3778
|
*/
|
|
3774
3779
|
const writingId = isLoading || isStreaming
|
|
@@ -3798,6 +3803,9 @@ showToolApprovalBanner = true, pendingApprovals: pendingApprovalsProp, onApprove
|
|
|
3798
3803
|
notebookToolSurfacesId: notebookToolSurfacesId, approvalConfig: approvalConfig, messagesEndRef: messagesEndRef, onRespond: handleRespond, showTurnFooters: showTurnFooter, renderMessageFooter: readAloudFooter, saidMessageId: saidId, agentUsage: agentUsage, onRemoveItems: handleRemoveItems, mcpServers: filteredMcpServers, emptyContent: launching ? null : (_jsx(ChatEmptyState, { emptyState: emptyState, brandIcon: brandIcon, description: resolvedDescription, suggestions: resolvedSuggestions, submitOnSuggestionClick: submitOnSuggestionClick, onSuggestionSubmit: handleSuggestionSubmit, onSuggestionFill: handleSuggestionFill })) }), trailingContent] }));
|
|
3799
3804
|
// The microphone, in the composer's footer (VO-10, VO-11).
|
|
3800
3805
|
const voiceControl = settled && settled.input !== 'off' ? (_jsx(ComposerVoice, { voice: settled, input: input, setInput: setInput, disabled: disabled || launching, speaking: speakingNow, onStopSpeaking: stopSpeaking,
|
|
3806
|
+
// Barge-in gated on how loud the answer plays (VO-13): the host's
|
|
3807
|
+
// speaker, or the chat's own.
|
|
3808
|
+
playbackLevel: playbackLevel,
|
|
3801
3809
|
// Hands-free (VO-12, VO-13): the run in progress, stopped when the
|
|
3802
3810
|
// person speaks over it, and the answer marked interrupted.
|
|
3803
3811
|
running: isLoading, onStopRun: handleStop, onInterrupted: markInterrupted, onInterimChange: setVoiceInterim,
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* What the web chat draws of its conversation (
|
|
2
|
+
* What the web chat draws of its conversation (M-030): the rows of
|
|
3
3
|
* `reduceConversation`'s state as the `DisplayItem`s `ChatMessageList`
|
|
4
4
|
* renders, with what only the web holds beside them — what a message showed
|
|
5
|
-
* and who said it (Reactor UI ops,
|
|
6
|
-
* application's code (
|
|
5
|
+
* and who said it (Reactor UI ops, RU-W), the steps of an
|
|
6
|
+
* application's code (P-16), and what a message carried that the
|
|
7
7
|
* conversation does not keep (when it was said, a voice's metadata).
|
|
8
8
|
*
|
|
9
9
|
* The conversation is the reducer's; this only draws it. A turn that ended
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Where an element of an application's code shows (
|
|
2
|
+
* Where an element of an application's code shows (P-18): in a side
|
|
3
3
|
* panel beside the conversation, or on a page of its own over it. Inline,
|
|
4
4
|
* an element is a message, and the chat draws it as one (P-04).
|
|
5
5
|
*
|
|
6
6
|
* The session API shows it as a `reactor.ui` display that says where it
|
|
7
7
|
* shows in its data (`where: "panel" | "page"`, with its `title`) — an
|
|
8
|
-
* answer's display (
|
|
8
|
+
* answer's display (RU-2) — and closes it with a `remove` of its
|
|
9
9
|
* id (RU-3). The chat does not draw it: it keeps what is open here, and
|
|
10
10
|
* whoever draws panels and pages (the `app-elements` plugin) listens. One
|
|
11
11
|
* store per page, as there is one chat per application on it.
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* A step of an application's code, shown in the conversation as it runs
|
|
3
|
-
* (
|
|
3
|
+
* (P-16): the chain of thought.
|
|
4
4
|
*
|
|
5
5
|
* AG-UI's `STEP_STARTED` and `STEP_FINISHED` carry a step's name only; the
|
|
6
6
|
* session API shows the step whole beside them as a `reactor.ui` display of
|
|
7
|
-
* type `application/vnd.datalayer.loop.step+json` (
|
|
7
|
+
* type `application/vnd.datalayer.loop.step+json` (RU-3) — its
|
|
8
8
|
* data `{name, kind, parent_id, input, output, error, started_at,
|
|
9
9
|
* ended_at}`, its id the step's — shown as it starts and again as it ends,
|
|
10
|
-
* its output patched in as it streams (
|
|
10
|
+
* its output patched in as it streams (P-31). A step is drawn as the
|
|
11
11
|
* chat draws a tool call: one row, collapsed, its input and output inside,
|
|
12
12
|
* running until it ends; a nested step says the step it is in.
|
|
13
13
|
*/
|
|
@@ -40,7 +40,7 @@ export function stepItem(step, inside) {
|
|
|
40
40
|
kind: step.kind,
|
|
41
41
|
...(step.input !== null ? { input: step.input } : {}),
|
|
42
42
|
},
|
|
43
|
-
// Running, what it wrote so far — a step that streams (
|
|
43
|
+
// Running, what it wrote so far — a step that streams (P-31).
|
|
44
44
|
...(!step.error && step.output !== null ? { result: step.output } : {}),
|
|
45
45
|
status: !step.ended ? 'executing' : step.error ? 'error' : 'complete',
|
|
46
46
|
...(step.error ? { error: step.error } : {}),
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Window messages (
|
|
2
|
+
* Window messages (P-25): what an application's code tells the page it
|
|
3
3
|
* sits in, outside the conversation — ``session.send_window_message(data)``.
|
|
4
4
|
*
|
|
5
5
|
* The session says it with a `reactor.ui` `window` op named `message`, its
|
|
6
|
-
* `args` `{data}` (
|
|
6
|
+
* `args` `{data}` (RU-3), on the conversation's ui socket (RU-W). The chat does not draw it: it hands
|
|
7
7
|
* it to whoever listens here — the embed's host bridge, which raises it on
|
|
8
8
|
* the element as its `window-message` event. A window op of another name is
|
|
9
9
|
* not one this page acts on: refused, it throws.
|
|
@@ -20,7 +20,7 @@ export declare function onLoopWindowMessage(listener: (data: unknown) => void):
|
|
|
20
20
|
/**
|
|
21
21
|
* Why the turn a window message posted by the page ran failed — its
|
|
22
22
|
* `RUN_ERROR`'s sentence — or `null`. What its code tells the page back comes
|
|
23
|
-
* on the conversation's ui socket (
|
|
23
|
+
* on the conversation's ui socket (RU-W), never on this stream: a
|
|
24
24
|
* `reactor.ui` event here is refused.
|
|
25
25
|
*/
|
|
26
26
|
export declare function windowTurnErrorOf(stream: string): string | null;
|
|
@@ -3,11 +3,11 @@
|
|
|
3
3
|
* Distributed under the terms of the Modified BSD License.
|
|
4
4
|
*/
|
|
5
5
|
/**
|
|
6
|
-
* Window messages (
|
|
6
|
+
* Window messages (P-25): what an application's code tells the page it
|
|
7
7
|
* sits in, outside the conversation — ``session.send_window_message(data)``.
|
|
8
8
|
*
|
|
9
9
|
* The session says it with a `reactor.ui` `window` op named `message`, its
|
|
10
|
-
* `args` `{data}` (
|
|
10
|
+
* `args` `{data}` (RU-3), on the conversation's ui socket (RU-W). The chat does not draw it: it hands
|
|
11
11
|
* it to whoever listens here — the embed's host bridge, which raises it on
|
|
12
12
|
* the element as its `window-message` event. A window op of another name is
|
|
13
13
|
* not one this page acts on: refused, it throws.
|
|
@@ -42,7 +42,7 @@ export function onLoopWindowMessage(listener) {
|
|
|
42
42
|
/**
|
|
43
43
|
* Why the turn a window message posted by the page ran failed — its
|
|
44
44
|
* `RUN_ERROR`'s sentence — or `null`. What its code tells the page back comes
|
|
45
|
-
* on the conversation's ui socket (
|
|
45
|
+
* on the conversation's ui socket (RU-W), never on this stream: a
|
|
46
46
|
* `reactor.ui` event here is refused.
|
|
47
47
|
*/
|
|
48
48
|
export function windowTurnErrorOf(stream) {
|
package/lib/chat/base/uiFiles.js
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
* Distributed under the terms of the Modified BSD License.
|
|
4
4
|
*/
|
|
5
5
|
/**
|
|
6
|
-
* A conversation's files as references (
|
|
6
|
+
* A conversation's files as references (RU-6).
|
|
7
7
|
*
|
|
8
8
|
* What the page holds of a file it was given — File upload and the composer
|
|
9
9
|
* read it as `{name, type, data_url}` — is uploaded to the application's
|
package/lib/chat/base/uiOps.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* What a server says to a conversation's page, as `reactor.ui` ops
|
|
3
|
-
* (
|
|
3
|
+
* (RU-2, RU-3), and what the page presses back (RU-W).
|
|
4
4
|
*
|
|
5
5
|
* The ops arrive on the conversation's ui socket (Reactor's `UiSocket`,
|
|
6
6
|
* one per session, beside the run stream that carries the conversation's
|
package/lib/chat/base/uiOps.js
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
*/
|
|
5
5
|
/**
|
|
6
6
|
* What a server says to a conversation's page, as `reactor.ui` ops
|
|
7
|
-
* (
|
|
7
|
+
* (RU-2, RU-3), and what the page presses back (RU-W).
|
|
8
8
|
*
|
|
9
9
|
* The ops arrive on the conversation's ui socket (Reactor's `UiSocket`,
|
|
10
10
|
* one per session, beside the run stream that carries the conversation's
|
package/lib/chat/index.js
CHANGED
|
@@ -85,6 +85,6 @@ export { ChatInline, } from './ChatInline';
|
|
|
85
85
|
// Generic full-page chat surface for a live agent runtime (with launching state)
|
|
86
86
|
export { AgentRuntimeChat, } from '../agents/AgentRuntimeChat';
|
|
87
87
|
export * from './EphemeralSurfaceControl';
|
|
88
|
-
// The chat's own words in the person's language (
|
|
88
|
+
// The chat's own words in the person's language (P-26)
|
|
89
89
|
export { ChatLanguage, useChatLanguage, useChatWords } from './ChatLanguage';
|
|
90
90
|
export { CHAT_WORDS, ENGLISH_CHAT_WORDS, chatLanguage, chatWords, } from './words';
|
|
@@ -74,7 +74,7 @@ export function McpStatusIndicator({ data: wsData, apiBase, authToken, }) {
|
|
|
74
74
|
const aggregate = useMemo(() => deriveAggregate(servers), [servers]);
|
|
75
75
|
const tooltipText = useMemo(() => buildTooltipText(aggregate, servers), [aggregate, servers]);
|
|
76
76
|
/*
|
|
77
|
-
* Nothing drawn when the agent has no MCP server (
|
|
77
|
+
* Nothing drawn when the agent has no MCP server (H-21): a control
|
|
78
78
|
* that only says so was read out as *No MCP Server defined* in every
|
|
79
79
|
* composer, an in-page agent's and an application's alike. When there are
|
|
80
80
|
* some, it is named by their state, and the tooltip — its description —
|
|
@@ -60,7 +60,7 @@ export function SkillsStatusIndicator({ skillsCount, enabledCount, loading = fal
|
|
|
60
60
|
useInjectKeyframes();
|
|
61
61
|
const aggregate = useMemo(() => deriveAggregate(skillsCount, enabledCount, loading), [skillsCount, enabledCount, loading]);
|
|
62
62
|
const tooltipText = useMemo(() => buildTooltip(aggregate, skillsCount, enabledCount), [aggregate, skillsCount, enabledCount]);
|
|
63
|
-
// Nothing drawn when the agent has no skill (
|
|
63
|
+
// Nothing drawn when the agent has no skill (H-21): a control that
|
|
64
64
|
// only says so was read out as *No Skills defined* in every composer.
|
|
65
65
|
if (aggregate === 'none') {
|
|
66
66
|
return null;
|
|
@@ -15,14 +15,13 @@ export interface ChatMessageListProps {
|
|
|
15
15
|
/** All display items (messages + tool calls) */
|
|
16
16
|
displayItems: DisplayItem[];
|
|
17
17
|
/**
|
|
18
|
-
* How a message's display presses what it offered (
|
|
18
|
+
* How a message's display presses what it offered (RU-4, RU-W):
|
|
19
19
|
* the chat sends it up the conversation's ui socket. Absent, its
|
|
20
20
|
* displays offer nothing to press.
|
|
21
21
|
*/
|
|
22
22
|
actOn?: (display: Display) => UiAct;
|
|
23
23
|
/**
|
|
24
|
-
* How a message's display uploads a file the person chose (
|
|
25
|
-
* RU-6): its ref, to press with. Absent, nothing is uploaded.
|
|
24
|
+
* How a message's display uploads a file the person chose (RU-6): its ref, to press with. Absent, nothing is uploaded.
|
|
26
25
|
*/
|
|
27
26
|
upload?: UiUpload;
|
|
28
27
|
/** Whether the agent is loading */
|
|
@@ -79,7 +78,7 @@ export interface ChatMessageListProps {
|
|
|
79
78
|
*/
|
|
80
79
|
renderMessageFooter?: (message: ChatMessage) => ReactNode;
|
|
81
80
|
/**
|
|
82
|
-
* The answer a sentence is being said from (
|
|
81
|
+
* The answer a sentence is being said from (VO-65): its row is
|
|
83
82
|
* marked `aria-current` and `data-voice-saying`, with a bar beside it —
|
|
84
83
|
* the sentence itself is underlined by `useSaidSentence`.
|
|
85
84
|
*/
|
|
@@ -588,9 +588,9 @@ export function ChatMessageList({ displayItems, actOn, upload, isLoading, isStre
|
|
|
588
588
|
fontSize: 1,
|
|
589
589
|
color: toneColorsOf(message.directedTo.tone).fg,
|
|
590
590
|
}, children: message.directedTo.name })] })) : speaker.role ? (_jsx(Label, { size: "small", children: speaker.role })) : null, message.createdAt ? (_jsx(RelativeTime, { datetime: message.createdAt.toISOString(), sx: { fontSize: 0, color: 'fg.muted' } })) : null] })) : null, _jsxs(Box, { p: compact ? 1 : 2, px: compact ? 2 : 2, overflowX: "auto",
|
|
591
|
-
// The theme's bubble (
|
|
591
|
+
// The theme's bubble (T-03, T-06): today's 6px elsewhere.
|
|
592
592
|
borderRadius: "bubble",
|
|
593
|
-
// A message arriving, at the theme's pace (
|
|
593
|
+
// A message arriving, at the theme's pace (T-10): no
|
|
594
594
|
// motion in a theme that sets none, nor when motion is reduced.
|
|
595
595
|
animation: "chatMessageArrive var(--theme-motion-message) var(--theme-motion-easing) both", reducedMotion: { animation: 'none' }, backgroundColor: isUser
|
|
596
596
|
? 'accent.emphasis'
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
* Distributed under the terms of the Modified BSD License.
|
|
4
4
|
*/
|
|
5
5
|
/**
|
|
6
|
-
* Markdown without markup (
|
|
6
|
+
* Markdown without markup (D-22): what every renderer of an agent's
|
|
7
7
|
* words hands Streamdown, so that no markup a model or an application writes
|
|
8
8
|
* reaches the page.
|
|
9
9
|
*
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* An application's presence in its chat (
|
|
2
|
+
* An application's presence in its chat (T-08): its face, with a quiet
|
|
3
3
|
* motion around it while it thinks or works, and one line saying what it is
|
|
4
4
|
* doing. The face is never redrawn; the motion is a soft ring in the accent,
|
|
5
5
|
* still under `prefers-reduced-motion`, and the line changes at the theme's
|
|
@@ -13,7 +13,7 @@ import { type PresenceLineProps } from '../../portable/views';
|
|
|
13
13
|
import type { PresenceState } from './presenceStatus';
|
|
14
14
|
/**
|
|
15
15
|
* A face at `size`: an emoji drawn in Fluent Emoji, the same on every
|
|
16
|
-
* platform (
|
|
16
|
+
* platform (T-20) — the system's, as text, only for one Datalayer ships
|
|
17
17
|
* no drawing of — or a host's own drawing, left as it is.
|
|
18
18
|
*/
|
|
19
19
|
export declare function FaceDrawing({ face, size }: {
|
|
@@ -6,7 +6,7 @@ import { presenceLine } from '../../portable/views';
|
|
|
6
6
|
const ACCENT = 'var(--theme-accent)';
|
|
7
7
|
/**
|
|
8
8
|
* A face at `size`: an emoji drawn in Fluent Emoji, the same on every
|
|
9
|
-
* platform (
|
|
9
|
+
* platform (T-20) — the system's, as text, only for one Datalayer ships
|
|
10
10
|
* no drawing of — or a host's own drawing, left as it is.
|
|
11
11
|
*/
|
|
12
12
|
export function FaceDrawing({ face, size }) {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* What an application is doing, in plain words (
|
|
3
|
-
* `portable/presence`, which Datalayer Mobile reads too (
|
|
2
|
+
* What an application is doing, in plain words (T-08): kept in
|
|
3
|
+
* `portable/presence`, which Datalayer Mobile reads too (M-030).
|
|
4
4
|
*
|
|
5
5
|
* @module chat/presence/presenceStatus
|
|
6
6
|
*/
|
|
@@ -3,8 +3,8 @@
|
|
|
3
3
|
* Distributed under the terms of the Modified BSD License.
|
|
4
4
|
*/
|
|
5
5
|
/**
|
|
6
|
-
* What an application is doing, in plain words (
|
|
7
|
-
* `portable/presence`, which Datalayer Mobile reads too (
|
|
6
|
+
* What an application is doing, in plain words (T-08): kept in
|
|
7
|
+
* `portable/presence`, which Datalayer Mobile reads too (M-030).
|
|
8
8
|
*
|
|
9
9
|
* @module chat/presence/presenceStatus
|
|
10
10
|
*/
|
|
@@ -51,8 +51,8 @@ export interface InputPromptProps {
|
|
|
51
51
|
*/
|
|
52
52
|
footerExtras?: ReactNode;
|
|
53
53
|
/**
|
|
54
|
-
* The words in the box are still being heard by the microphone (
|
|
55
|
-
*
|
|
54
|
+
* The words in the box are still being heard by the microphone (VO-11):
|
|
55
|
+
* shown greyed, in italics, until they are final.
|
|
56
56
|
*/
|
|
57
57
|
interim?: boolean;
|
|
58
58
|
/**
|
|
@@ -117,7 +117,7 @@ export interface InputPromptProps {
|
|
|
117
117
|
promptVariant?: InputPromptVariant;
|
|
118
118
|
/** Agents the prompt may address by typing `@`. Lexical only. */
|
|
119
119
|
mentionableAgents?: MentionableAgent[];
|
|
120
|
-
/** Commands listed while `/` is typed, before the prompt's own (
|
|
120
|
+
/** Commands listed while `/` is typed, before the prompt's own (P-19). Lexical only. */
|
|
121
121
|
promptCommands?: PromptCommand[];
|
|
122
122
|
/**
|
|
123
123
|
* What was sent to this agent before this page loaded, oldest first.
|
|
@@ -76,7 +76,7 @@ export interface InputPromptBaseProps {
|
|
|
76
76
|
* suggestion a person cannot see is worse than none.
|
|
77
77
|
*/
|
|
78
78
|
mentionableAgents?: MentionableAgent[];
|
|
79
|
-
/** Commands listed while `/` is typed, before the prompt's own (
|
|
79
|
+
/** Commands listed while `/` is typed, before the prompt's own (P-19). Lexical only. */
|
|
80
80
|
promptCommands?: PromptCommand[];
|
|
81
81
|
/**
|
|
82
82
|
* What was sent to this agent before this composer mounted, oldest first.
|
|
@@ -201,7 +201,7 @@ export function InputPromptBase({ variant = 'lexical', placeholder = 'Ask anythi
|
|
|
201
201
|
setFocused(false);
|
|
202
202
|
}
|
|
203
203
|
}, border: "1px solid",
|
|
204
|
-
// The theme's card (
|
|
204
|
+
// The theme's card (T-03, T-06): today's 6px elsewhere.
|
|
205
205
|
borderRadius: "var(--theme-radius-card, 6px)", bg: "canvas.default", overflow: "hidden", transition: "border-color 0.2s ease", sx: {
|
|
206
206
|
borderColor: 'border.default',
|
|
207
207
|
'&:focus-within': {
|
|
@@ -33,7 +33,7 @@ export interface InputPromptLexicalProps {
|
|
|
33
33
|
mentionableAgents?: MentionableAgent[];
|
|
34
34
|
/**
|
|
35
35
|
* Commands listed while `/` is typed, before the prompt's own: an
|
|
36
|
-
* application's (
|
|
36
|
+
* application's (P-19).
|
|
37
37
|
*/
|
|
38
38
|
promptCommands?: PromptCommand[];
|
|
39
39
|
}
|
|
@@ -215,7 +215,7 @@ export const streamdownMarkdownStyles = {
|
|
|
215
215
|
marginRight: 0,
|
|
216
216
|
color: 'fg.muted',
|
|
217
217
|
},
|
|
218
|
-
// A link reads as its theme says (
|
|
218
|
+
// A link reads as its theme says (T-06): in the accent, or plain —
|
|
219
219
|
// the colour of the words around it — and underlined in every theme.
|
|
220
220
|
'& a': {
|
|
221
221
|
color: 'var(--theme-message-link, var(--fgColor-accent, #0969da))',
|
|
@@ -7,7 +7,7 @@ export interface ViewportDragOptions {
|
|
|
7
7
|
/**
|
|
8
8
|
* Keep the whole box inside the viewport, not only a margin of it: the
|
|
9
9
|
* floating assistant's character, whose balloon and conversation open
|
|
10
|
-
* from where it stands (
|
|
10
|
+
* from where it stands (T-23).
|
|
11
11
|
*/
|
|
12
12
|
whole?: boolean;
|
|
13
13
|
}
|
package/lib/chat/viewModes.d.ts
CHANGED
|
@@ -26,7 +26,7 @@ export declare const CHAT_VIEW_MODES: readonly ChatViewModeOption[];
|
|
|
26
26
|
/**
|
|
27
27
|
* Why the assistant is greyed out, for its tooltip: it is drawn by the
|
|
28
28
|
* floating chat (`ChatFloating`); a layout that places the chat itself, as
|
|
29
|
-
* the page layout does, has no character to show (
|
|
29
|
+
* the page layout does, has no character to show (T-21).
|
|
30
30
|
*/
|
|
31
31
|
export declare const ASSISTANT_NEEDS_A_FLOATING_CHAT = "The assistant is drawn by the floating chat, not by this layout";
|
|
32
32
|
/** Why the sidebar option is greyed out, for its tooltip. */
|
package/lib/chat/viewModes.js
CHANGED
|
@@ -7,14 +7,14 @@ export const CHAT_VIEW_MODES = [
|
|
|
7
7
|
{ mode: 'floating', label: 'Full-height popup' },
|
|
8
8
|
{ mode: 'floating-small', label: 'Floating popup' },
|
|
9
9
|
{ mode: 'floating-draggable', label: 'Floating draggable' },
|
|
10
|
-
// A character on the page that speaks in a balloon (
|
|
10
|
+
// A character on the page that speaks in a balloon (T-21).
|
|
11
11
|
{ mode: 'assistant', label: 'Floating assistant' },
|
|
12
12
|
{ mode: 'sidebar', label: 'Sidebar panel' },
|
|
13
13
|
];
|
|
14
14
|
/**
|
|
15
15
|
* Why the assistant is greyed out, for its tooltip: it is drawn by the
|
|
16
16
|
* floating chat (`ChatFloating`); a layout that places the chat itself, as
|
|
17
|
-
* the page layout does, has no character to show (
|
|
17
|
+
* the page layout does, has no character to show (T-21).
|
|
18
18
|
*/
|
|
19
19
|
export const ASSISTANT_NEEDS_A_FLOATING_CHAT = 'The assistant is drawn by the floating chat, not by this layout';
|
|
20
20
|
/** Why the sidebar option is greyed out, for its tooltip. */
|
package/lib/chat/words.js
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
* Distributed under the terms of the Modified BSD License.
|
|
4
4
|
*/
|
|
5
5
|
/**
|
|
6
|
-
* The chat's own words in the person's language (
|
|
6
|
+
* The chat's own words in the person's language (P-26): the composer's
|
|
7
7
|
* placeholder and buttons, its error sentences, the tool lines and the tool
|
|
8
8
|
* cards, the approvals, and the assistant's balloon — said in the six
|
|
9
9
|
* languages the application's composer is said in (`interfaceWords`).
|
|
@@ -8,7 +8,7 @@ import { HealthCheck } from '@datalayer/core/lib/models/HealthCheck';
|
|
|
8
8
|
export interface CreateRuntimeOptions {
|
|
9
9
|
/**
|
|
10
10
|
* A platform environment by its name, or an environment somebody built,
|
|
11
|
-
* named `<account-handle>/<name>` or by its uid (
|
|
11
|
+
* named `<account-handle>/<name>` or by its uid (D-2).
|
|
12
12
|
*/
|
|
13
13
|
environmentName: string;
|
|
14
14
|
/**
|
|
@@ -97,7 +97,7 @@ export declare function RuntimesMixin<TBase extends Constructor>(Base: TBase): {
|
|
|
97
97
|
*/
|
|
98
98
|
forgetRuntimeMemory(memoryId: string): Promise<number>;
|
|
99
99
|
/**
|
|
100
|
-
* Correct one of the caller's own memories in place (
|
|
100
|
+
* Correct one of the caller's own memories in place (R-34): its
|
|
101
101
|
* words become `text`, kept with who corrected it and when.
|
|
102
102
|
*/
|
|
103
103
|
correctRuntimeMemory(memoryId: string, text: string): Promise<RuntimeMemory>;
|
|
@@ -108,7 +108,7 @@ export declare function RuntimesMixin<TBase extends Constructor>(Base: TBase): {
|
|
|
108
108
|
forgetRuntimeMemories(agentId: string, count: number): Promise<number>;
|
|
109
109
|
/**
|
|
110
110
|
* The caller's allowances to share what an application remembers of
|
|
111
|
-
* them with another (
|
|
111
|
+
* them with another (R-35), by `source` or by `reader`.
|
|
112
112
|
*/
|
|
113
113
|
listRuntimeMemoryShares(filter: {
|
|
114
114
|
source?: string;
|