@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
package/lib/voice/index.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Voice: agents that listen and speak
|
|
2
|
+
* Voice: agents that listen and speak.
|
|
3
3
|
*
|
|
4
4
|
* Push-to-talk heard on the device (Moonshine, Whisper, Silero VAD, from
|
|
5
5
|
* Datalayer's origin and as pinned), answers spoken by Datalayer's speech
|
|
@@ -77,7 +77,7 @@ export interface ChatVoice {
|
|
|
77
77
|
/** ai-agents, whose speech service says the answers, and hears where the browser does not. */
|
|
78
78
|
speechUrl?: string;
|
|
79
79
|
/**
|
|
80
|
-
* Where what is said is heard
|
|
80
|
+
* Where what is said is heard: `device`, the browser; `server`,
|
|
81
81
|
* Datalayer's speech service; `auto`, the default, the browser where a
|
|
82
82
|
* model there hears the language, else the server. The Appspec's
|
|
83
83
|
* `interface.voice.where`.
|
package/lib/voice/pinned.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* The browser's models, from Datalayer's origin and as pinned (
|
|
3
|
-
*
|
|
2
|
+
* The browser's models, from Datalayer's origin and as pinned (VO-49, VO-03):
|
|
3
|
+
* every file a model is made of is fetched from the models'
|
|
4
4
|
* origin, laid out as the pinned store is (`<provider>/<model id>/<path>`), and its
|
|
5
5
|
* SHA-256 checked against the catalogue before anything reads it. A file
|
|
6
6
|
* that is not the one pinned is refused; nothing is asked of another origin.
|
package/lib/voice/pinned.js
CHANGED
|
@@ -3,8 +3,8 @@
|
|
|
3
3
|
* Distributed under the terms of the Modified BSD License.
|
|
4
4
|
*/
|
|
5
5
|
/**
|
|
6
|
-
* The browser's models, from Datalayer's origin and as pinned (
|
|
7
|
-
*
|
|
6
|
+
* The browser's models, from Datalayer's origin and as pinned (VO-49, VO-03):
|
|
7
|
+
* every file a model is made of is fetched from the models'
|
|
8
8
|
* origin, laid out as the pinned store is (`<provider>/<model id>/<path>`), and its
|
|
9
9
|
* SHA-256 checked against the catalogue before anything reads it. A file
|
|
10
10
|
* that is not the one pinned is refused; nothing is asked of another origin.
|
package/lib/voice/sayAloud.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* What only the runtime knows of voice, as it says it over AG-UI (
|
|
3
|
-
*
|
|
2
|
+
* What only the runtime knows of voice, as it says it over AG-UI (VO-35)
|
|
3
|
+
* and Vercel AI (VO-36): `voice.settings` — the running application's
|
|
4
4
|
* voice and language, at a run's start — and `voice.say` — a short line the
|
|
5
5
|
* agent wants heard and not written (*One moment*), shown as a caption while
|
|
6
6
|
* it is said. The chat reads `voice.say` from a run's custom events
|
package/lib/voice/sayAloud.js
CHANGED
|
@@ -3,8 +3,8 @@
|
|
|
3
3
|
* Distributed under the terms of the Modified BSD License.
|
|
4
4
|
*/
|
|
5
5
|
/**
|
|
6
|
-
* What only the runtime knows of voice, as it says it over AG-UI (
|
|
7
|
-
*
|
|
6
|
+
* What only the runtime knows of voice, as it says it over AG-UI (VO-35)
|
|
7
|
+
* and Vercel AI (VO-36): `voice.settings` — the running application's
|
|
8
8
|
* voice and language, at a run's start — and `voice.say` — a short line the
|
|
9
9
|
* agent wants heard and not written (*One moment*), shown as a caption while
|
|
10
10
|
* it is said. The chat reads `voice.say` from a run's custom events
|
package/lib/voice/sentences.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* An answer as it is heard (
|
|
2
|
+
* An answer as it is heard (VO-20): read as plain words, the way
|
|
3
3
|
* the balloon reads it (T-23), and cut into sentences as it is written, so
|
|
4
4
|
* that the first one is said before the answer is finished.
|
|
5
5
|
*
|
package/lib/voice/sentences.js
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
* Distributed under the terms of the Modified BSD License.
|
|
4
4
|
*/
|
|
5
5
|
/**
|
|
6
|
-
* An answer as it is heard (
|
|
6
|
+
* An answer as it is heard (VO-20): read as plain words, the way
|
|
7
7
|
* the balloon reads it (T-23), and cut into sentences as it is written, so
|
|
8
8
|
* that the first one is said before the answer is finished.
|
|
9
9
|
*
|
|
@@ -8,6 +8,12 @@ export declare const TRANSCRIPTION_STREAM_PATH = "/api/ai-agents/v1/speech/trans
|
|
|
8
8
|
export declare const STREAM_IDLE_MS = 3000;
|
|
9
9
|
/** How long the final words of a stream are waited for. */
|
|
10
10
|
export declare const STREAM_FINAL_MS = 60000;
|
|
11
|
+
/**
|
|
12
|
+
* How much of the sound before a stream the service ended for its silence
|
|
13
|
+
* (with no words) is sent again to the next: a word begun at the cut is
|
|
14
|
+
* heard whole.
|
|
15
|
+
*/
|
|
16
|
+
export declare const STREAM_LOOKBACK_SAMPLES: number;
|
|
11
17
|
/** The model the speech service hears with (agentspecs' catalogue). */
|
|
12
18
|
export declare const SERVER_HEARING_MODEL = "whisper-large-v3-turbo";
|
|
13
19
|
/** Where a chat's voice hears: in the browser, or on Datalayer's servers. */
|
|
@@ -26,7 +32,7 @@ export interface HearingAsked {
|
|
|
26
32
|
speechUrl?: string;
|
|
27
33
|
}
|
|
28
34
|
/**
|
|
29
|
-
* Where a chat's voice hears
|
|
35
|
+
* Where a chat's voice hears: in the browser unless the speech service
|
|
30
36
|
* is named and the person asked for detection, the application says
|
|
31
37
|
* `server`, or it says `auto` and no model in the browser hears the language.
|
|
32
38
|
*/
|
|
@@ -94,7 +100,7 @@ export declare class ServerHearing implements Hearing {
|
|
|
94
100
|
/** Said when the device's model did not load and the server will hear instead. */
|
|
95
101
|
export declare const MOVED_TO_SERVER = "This device could not load its model: what you say will be heard on Datalayer's servers instead. Press the microphone again to agree.";
|
|
96
102
|
/**
|
|
97
|
-
* `where: auto
|
|
103
|
+
* `where: auto`: each press heard on the device when a model there
|
|
98
104
|
* hears the language and loads, on the speech service otherwise.
|
|
99
105
|
*
|
|
100
106
|
* The device's model failing to load moves the hearing to the server, and
|
|
@@ -3,11 +3,11 @@
|
|
|
3
3
|
* Distributed under the terms of the Modified BSD License.
|
|
4
4
|
*/
|
|
5
5
|
/**
|
|
6
|
-
* Hearing on Datalayer's servers (
|
|
6
|
+
* Hearing on Datalayer's servers (VO-34, VO-14): what was said
|
|
7
7
|
* in one press, kept to its speech by Silero VAD in the page, then sent as a
|
|
8
8
|
* WAV recording to the speech service's `POST /speech/transcriptions`, where
|
|
9
9
|
* Whisper hears it — small for a spoken turn, large-v3-turbo past one
|
|
10
|
-
*
|
|
10
|
+
* — in any language it knows, and finding
|
|
11
11
|
* the language itself when the person asks for that (detection, VO-14). The
|
|
12
12
|
* sound is held in the request only: the service keeps neither it nor the
|
|
13
13
|
* words (VO-60).
|
|
@@ -37,6 +37,12 @@ export const TRANSCRIPTION_STREAM_PATH = '/api/ai-agents/v1/speech/transcription
|
|
|
37
37
|
export const STREAM_IDLE_MS = 3000;
|
|
38
38
|
/** How long the final words of a stream are waited for. */
|
|
39
39
|
export const STREAM_FINAL_MS = 60_000;
|
|
40
|
+
/**
|
|
41
|
+
* How much of the sound before a stream the service ended for its silence
|
|
42
|
+
* (with no words) is sent again to the next: a word begun at the cut is
|
|
43
|
+
* heard whole.
|
|
44
|
+
*/
|
|
45
|
+
export const STREAM_LOOKBACK_SAMPLES = HEARING_RATE / 2;
|
|
40
46
|
/** The model the speech service hears with (agentspecs' catalogue). */
|
|
41
47
|
export const SERVER_HEARING_MODEL = 'whisper-large-v3-turbo';
|
|
42
48
|
/** The shortest speech worth hearing, in samples: a word said alone. */
|
|
@@ -45,7 +51,7 @@ const SHORTEST = HEARING_RATE * 0.2;
|
|
|
45
51
|
export class ServerRefused extends Error {
|
|
46
52
|
}
|
|
47
53
|
/**
|
|
48
|
-
* Where a chat's voice hears
|
|
54
|
+
* Where a chat's voice hears: in the browser unless the speech service
|
|
49
55
|
* is named and the person asked for detection, the application says
|
|
50
56
|
* `server`, or it says `auto` and no model in the browser hears the language.
|
|
51
57
|
*/
|
|
@@ -121,7 +127,9 @@ class PressStream {
|
|
|
121
127
|
waiting;
|
|
122
128
|
closed = false;
|
|
123
129
|
idle;
|
|
124
|
-
constructor(open, speechUrl, first) {
|
|
130
|
+
constructor(open, speechUrl, first, from = 0) {
|
|
131
|
+
// The press's sound from `from` on: what came before was heard already.
|
|
132
|
+
this.sent = from;
|
|
125
133
|
this.socket = open(streamUrlOf(speechUrl));
|
|
126
134
|
this.socket.binaryType = 'arraybuffer';
|
|
127
135
|
this.socket.onopen = () => {
|
|
@@ -152,6 +160,7 @@ class PressStream {
|
|
|
152
160
|
this.final = {
|
|
153
161
|
text: typeof said.text === 'string' ? said.text.trim() : '',
|
|
154
162
|
language: typeof said.language === 'string' ? said.language : '',
|
|
163
|
+
why: typeof said.why === 'string' ? said.why : '',
|
|
155
164
|
};
|
|
156
165
|
this.settle();
|
|
157
166
|
}
|
|
@@ -170,6 +179,16 @@ class PressStream {
|
|
|
170
179
|
this.socket.onerror = () => undefined;
|
|
171
180
|
this.touch();
|
|
172
181
|
}
|
|
182
|
+
/**
|
|
183
|
+
* The service ended it for its silence, with no words, while the press
|
|
184
|
+
* goes on: a person who waits before speaking (hands-free's microphone
|
|
185
|
+
* stays open) is heard by the next stream.
|
|
186
|
+
*/
|
|
187
|
+
get silencedEmpty() {
|
|
188
|
+
return (this.final !== undefined &&
|
|
189
|
+
this.final.why === 'silence' &&
|
|
190
|
+
!this.final.text);
|
|
191
|
+
}
|
|
173
192
|
/** Send what the press added since the last call. */
|
|
174
193
|
feed(audio) {
|
|
175
194
|
this.touch();
|
|
@@ -272,15 +291,23 @@ export class ServerHearing {
|
|
|
272
291
|
if (!open) {
|
|
273
292
|
return undefined;
|
|
274
293
|
}
|
|
294
|
+
let from = 0;
|
|
275
295
|
if (this.press && audio.length < this.press.sent) {
|
|
276
296
|
this.press.close();
|
|
277
297
|
this.press = undefined;
|
|
278
298
|
}
|
|
299
|
+
else if (this.press?.silencedEmpty) {
|
|
300
|
+
// Ended by the service for its silence, nothing said: a new stream
|
|
301
|
+
// hears the rest of the press, from just before the cut.
|
|
302
|
+
from = Math.max(0, this.press.sent - STREAM_LOOKBACK_SAMPLES);
|
|
303
|
+
this.press.close();
|
|
304
|
+
this.press = undefined;
|
|
305
|
+
}
|
|
279
306
|
if (!this.press) {
|
|
280
307
|
this.press = new PressStream(open, this.options.speechUrl, {
|
|
281
308
|
token: this.options.token,
|
|
282
309
|
language: this.options.detect ? '' : language,
|
|
283
|
-
});
|
|
310
|
+
}, from);
|
|
284
311
|
}
|
|
285
312
|
return this.press;
|
|
286
313
|
}
|
|
@@ -297,6 +324,10 @@ export class ServerHearing {
|
|
|
297
324
|
}
|
|
298
325
|
async hear(audio, language) {
|
|
299
326
|
const started = performance.now();
|
|
327
|
+
if (this.press?.silencedEmpty && audio.length >= this.press.sent) {
|
|
328
|
+
// Cut for its silence before the person spoke: heard by a new stream.
|
|
329
|
+
this.streamFor(audio, language);
|
|
330
|
+
}
|
|
300
331
|
const press = this.press && audio.length >= this.press.sent ? this.press : undefined;
|
|
301
332
|
if (this.press && !press) {
|
|
302
333
|
this.press.close();
|
|
@@ -368,7 +399,7 @@ export class ServerHearing {
|
|
|
368
399
|
/** Said when the device's model did not load and the server will hear instead. */
|
|
369
400
|
export const MOVED_TO_SERVER = "This device could not load its model: what you say will be heard on Datalayer's servers instead. Press the microphone again to agree.";
|
|
370
401
|
/**
|
|
371
|
-
* `where: auto
|
|
402
|
+
* `where: auto`: each press heard on the device when a model there
|
|
372
403
|
* hears the language and loads, on the speech service otherwise.
|
|
373
404
|
*
|
|
374
405
|
* The device's model failing to load moves the hearing to the server, and
|
package/lib/voice/settings.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* A person's own voice settings (
|
|
2
|
+
* A person's own voice settings (VO-30), and what a chat's voice is
|
|
3
3
|
* once they are taken into account (VO-14, VO-25).
|
|
4
4
|
*
|
|
5
5
|
* An application says what voice it wants — `interface.voice` in its spec,
|
|
@@ -35,7 +35,7 @@ export declare const VOLUME_RANGE: {
|
|
|
35
35
|
};
|
|
36
36
|
/**
|
|
37
37
|
* How much longer than usual the person pauses before they are done
|
|
38
|
-
* (
|
|
38
|
+
* (VO-69): the silence that stops a microphone clicked on, and the
|
|
39
39
|
* one that ends a hands-free turn, times this.
|
|
40
40
|
*/
|
|
41
41
|
export declare const PAUSE_RANGE: {
|
package/lib/voice/settings.js
CHANGED
|
@@ -9,7 +9,7 @@ export const RATE_RANGE = { min: 0.5, max: 2, default: 1 };
|
|
|
9
9
|
export const VOLUME_RANGE = { min: 0, max: 1, default: 1 };
|
|
10
10
|
/**
|
|
11
11
|
* How much longer than usual the person pauses before they are done
|
|
12
|
-
* (
|
|
12
|
+
* (VO-69): the silence that stops a microphone clicked on, and the
|
|
13
13
|
* one that ends a hands-free turn, times this.
|
|
14
14
|
*/
|
|
15
15
|
export const PAUSE_RANGE = { min: 1, max: 4, default: 1 };
|
|
@@ -191,7 +191,7 @@ export function voiceForPerson(voice, person = {}, browser = browserLanguage())
|
|
|
191
191
|
}
|
|
192
192
|
if (chosen.onDeviceOnly) {
|
|
193
193
|
// Nothing is asked of the speech service: no token, no origin. Answers
|
|
194
|
-
// are said by that service only (
|
|
194
|
+
// are said by that service only (no voice made in the
|
|
195
195
|
// browser), so they are not heard; listening stays on the device.
|
|
196
196
|
next.speechUrl = undefined;
|
|
197
197
|
next.token = undefined;
|
package/lib/voice/speaker.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Answers heard, from Datalayer's speech service (
|
|
3
|
-
*
|
|
2
|
+
* Answers heard, from Datalayer's speech service (VO-20, VO-33):
|
|
3
|
+
* each sentence is sent to ai-agents as soon as it is written
|
|
4
4
|
* and played as soon as its audio arrives, one after the other, while the
|
|
5
5
|
* next ones are being made. The level of what plays moves the assistant's
|
|
6
6
|
* mouth (VO-23). Nothing is kept: each sentence's audio is dropped once played.
|
|
@@ -11,7 +11,13 @@
|
|
|
11
11
|
export declare const SYNTHESES_PATH = "/api/ai-agents/v1/speech/syntheses";
|
|
12
12
|
/** What the speaker is doing, for the assistant and the controls. */
|
|
13
13
|
export interface SpeakerState {
|
|
14
|
-
/**
|
|
14
|
+
/**
|
|
15
|
+
* Sound is playing, or a sentence given is being made into sound to play
|
|
16
|
+
* next: from the moment there is something to say, so that hands-free
|
|
17
|
+
* reads speech in that moment as the person speaking over it (VO-12,
|
|
18
|
+
* VO-13). What moves the mouth is the sound's level, and the sentence
|
|
19
|
+
* marked is the one playing.
|
|
20
|
+
*/
|
|
15
21
|
speaking: boolean;
|
|
16
22
|
/** The sentence being said, for the balloon (VO-26). */
|
|
17
23
|
sentence?: string;
|
|
@@ -26,7 +32,7 @@ export interface SpeakerOptions {
|
|
|
26
32
|
language: string;
|
|
27
33
|
/**
|
|
28
34
|
* The person's token, an application's principal's, a visitor's or an
|
|
29
|
-
* embed's — whose deployment is the one it names (VO-19
|
|
35
|
+
* embed's — whose deployment is the one it names (VO-19).
|
|
30
36
|
*/
|
|
31
37
|
token?: string;
|
|
32
38
|
/**
|
package/lib/voice/speaker.js
CHANGED
|
@@ -3,8 +3,8 @@
|
|
|
3
3
|
* Distributed under the terms of the Modified BSD License.
|
|
4
4
|
*/
|
|
5
5
|
/**
|
|
6
|
-
* Answers heard, from Datalayer's speech service (
|
|
7
|
-
*
|
|
6
|
+
* Answers heard, from Datalayer's speech service (VO-20, VO-33):
|
|
7
|
+
* each sentence is sent to ai-agents as soon as it is written
|
|
8
8
|
* and played as soon as its audio arrives, one after the other, while the
|
|
9
9
|
* next ones are being made. The level of what plays moves the assistant's
|
|
10
10
|
* mouth (VO-23). Nothing is kept: each sentence's audio is dropped once played.
|
|
@@ -100,6 +100,9 @@ export class ServerSpeaker {
|
|
|
100
100
|
return;
|
|
101
101
|
}
|
|
102
102
|
this.queue.push({ text: sentence, asked: performance.now() });
|
|
103
|
+
if (!this.state.speaking) {
|
|
104
|
+
this.set({ speaking: true });
|
|
105
|
+
}
|
|
103
106
|
this.askAhead();
|
|
104
107
|
if (!this.running) {
|
|
105
108
|
void this.run(this.generation);
|
package/lib/voice/types.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Voice in the page
|
|
2
|
+
* Voice in the page: what the chat needs to listen and speak.
|
|
3
3
|
*
|
|
4
4
|
* The packages that hear — transformers.js for Moonshine and Whisper, and
|
|
5
5
|
* vad-web for Silero VAD — are given by the host page (`VoiceEngines`), each
|
|
@@ -3,8 +3,8 @@
|
|
|
3
3
|
* Distributed under the terms of the Modified BSD License.
|
|
4
4
|
*/
|
|
5
5
|
/**
|
|
6
|
-
* The answers of a conversation, heard as they are written (
|
|
7
|
-
*
|
|
6
|
+
* The answers of a conversation, heard as they are written (VO-20, VO-21):
|
|
7
|
+
* the newest answer of the agent is cut into sentences as it grows,
|
|
8
8
|
* and each is given to the speaker as soon as it is complete. The answers
|
|
9
9
|
* already there when voice was turned on are not read.
|
|
10
10
|
*
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
* Distributed under the terms of the Modified BSD License.
|
|
4
4
|
*/
|
|
5
5
|
/**
|
|
6
|
-
* A chat's speaker (
|
|
6
|
+
* A chat's speaker (VO-20, VO-21, VO-33): its answers said by
|
|
7
7
|
* Datalayer's speech service — `POST /api/ai-agents/v1/speech/syntheses` on
|
|
8
8
|
* ai-agents, `datalayer-speech` — while its voice's `output` is not `off`.
|
|
9
9
|
* One for `ChatFloating` and for `ChatBase` alone, so that a chat given a
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@datalayer/agent-runtimes",
|
|
3
|
-
"version": "1.5.
|
|
3
|
+
"version": "1.5.53",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"workspaces": [
|
|
6
6
|
".",
|
|
@@ -137,7 +137,7 @@
|
|
|
137
137
|
"watch:lib:res": "gulp resources-to-lib-watch",
|
|
138
138
|
"watch:lib:src": "tsc -b -w"
|
|
139
139
|
},
|
|
140
|
-
"//": "@datalayer/agent-shield (
|
|
140
|
+
"//": "@datalayer/agent-shield (SH-53: the policy types, the decisions' sentences, the diff and terminal displays, the report renderer) is not depended on yet: npm holds the scaffold's 1.1.3 as latest, which blocks the real 0.1.x until the user unpublishes it; add \"@datalayer/agent-shield\": \"^0.1.7\" here once it resolves.",
|
|
141
141
|
"dependencies": {
|
|
142
142
|
"@a2a-js/sdk": "^1.3.0",
|
|
143
143
|
"@a2ui/markdown-it": "0.2.0",
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
# Distributed under the terms of the Modified BSD License.
|
|
4
4
|
#
|
|
5
5
|
# The Agentic Commerce Protocol's checkout models, generated from the
|
|
6
|
-
# specification's JSON Schema (
|
|
6
|
+
# specification's JSON Schema (PR-41), in both languages:
|
|
7
7
|
# agent_runtimes/protocols/agentic_commerce/models.py (datamodel-code-generator 0.34.0)
|
|
8
8
|
# src/protocols/agentic-commerce/models.ts (json-schema-to-typescript 15.0.4)
|
|
9
9
|
#
|
|
@@ -236,7 +236,7 @@ def load_fragments(specs_dir: Path) -> List[Dict[str, Any]]:
|
|
|
236
236
|
|
|
237
237
|
def refuse_tools_field(spec: Dict[str, Any], path: Path) -> None:
|
|
238
238
|
"""Refuse an agent spec that still says `tools` (it is `backend_tools` now) or
|
|
239
|
-
`ui_plugin` (it is `ui` now,
|
|
239
|
+
`ui_plugin` (it is `ui` now, PS-03).
|
|
240
240
|
"""
|
|
241
241
|
if "ui_plugin" in spec:
|
|
242
242
|
raise SystemExit(
|
|
@@ -249,7 +249,7 @@ def refuse_tools_field(spec: Dict[str, Any], path: Path) -> None:
|
|
|
249
249
|
):
|
|
250
250
|
raise SystemExit(
|
|
251
251
|
f"Error: {path} says `ui: {ui!r}`: `ui` lists UI plugins, each "
|
|
252
|
-
"`{plugin, renderer}` (
|
|
252
|
+
"`{plugin, renderer}` (R8); a renderer is said as a plugin's `renderer`"
|
|
253
253
|
)
|
|
254
254
|
if "tools" in spec:
|
|
255
255
|
raise SystemExit(
|
|
@@ -310,7 +310,7 @@ def load_yaml_specs(specs_dir: Path) -> List[tuple[str, Dict[str, Any]]]:
|
|
|
310
310
|
|
|
311
311
|
|
|
312
312
|
def check_voices(specs: List[tuple[str, Dict[str, Any]]]) -> None:
|
|
313
|
-
"""Refuse an agent whose `voice` is not an `interface.voice` block of the voice catalogue (
|
|
313
|
+
"""Refuse an agent whose `voice` is not an `interface.voice` block of the voice catalogue (VO-41)."""
|
|
314
314
|
from agentspecs.apps import agent_voice_problems
|
|
315
315
|
|
|
316
316
|
problems = [
|
|
@@ -333,7 +333,7 @@ def voice_of(spec: Dict[str, Any]) -> Dict[str, Any] | None:
|
|
|
333
333
|
|
|
334
334
|
|
|
335
335
|
def load_protocol_ids(specs_dir: Path) -> set[str]:
|
|
336
|
-
"""Every id of the protocols catalogue (`agentspecs/protocols`,
|
|
336
|
+
"""Every id of the protocols catalogue (`agentspecs/protocols`, PS-01)."""
|
|
337
337
|
ids: set[str] = set()
|
|
338
338
|
for yaml_file in sorted((specs_dir.parent / "protocols").glob("*.yaml")):
|
|
339
339
|
protocol = yaml.safe_load(yaml_file.read_text()) or {}
|
|
@@ -369,7 +369,7 @@ BUILTIN_HARNESSES = ("pydantic-ai", "vercel-ai")
|
|
|
369
369
|
|
|
370
370
|
|
|
371
371
|
def load_harnesses(specs_dir: Path) -> dict[str, dict[str, Any]]:
|
|
372
|
-
"""Every harness of the catalogue (`agentspecs/harnesses`,
|
|
372
|
+
"""Every harness of the catalogue (`agentspecs/harnesses`, SH-01), by id."""
|
|
373
373
|
harnesses: dict[str, dict[str, Any]] = {}
|
|
374
374
|
for yaml_file in sorted((specs_dir.parent / "harnesses").glob("*.yaml")):
|
|
375
375
|
if yaml_file.name == "register.yaml":
|
|
@@ -172,7 +172,7 @@ def load_specs(specs_dir: Path) -> tuple[list[dict[str, Any]], dict[str, Any]]:
|
|
|
172
172
|
mode="json", by_alias=True
|
|
173
173
|
):
|
|
174
174
|
spec.pop("pap")
|
|
175
|
-
# PACT, commerce, signed fetch and A2A's extensions the same way (
|
|
175
|
+
# PACT, commerce, signed fetch and A2A's extensions the same way (PI-01, PR-02, EX-11).
|
|
176
176
|
for block in ("pact", "commerce", "signed_fetch", "a2a"):
|
|
177
177
|
if block in spec and spec[block] == type(getattr(app, block))().model_dump(
|
|
178
178
|
mode="json", by_alias=True
|
|
@@ -222,7 +222,7 @@ def load_specs(specs_dir: Path) -> tuple[list[dict[str, Any]], dict[str, Any]]:
|
|
|
222
222
|
if (signs := actions_module.server_tool_signs(server, name))
|
|
223
223
|
},
|
|
224
224
|
}
|
|
225
|
-
# The agent protocols' tools (
|
|
225
|
+
# The agent protocols' tools (PR-54): by protocol, the
|
|
226
226
|
# connection prefix its connections take and what each tool can do.
|
|
227
227
|
protocols = {
|
|
228
228
|
identity: {
|
|
@@ -569,7 +569,7 @@ def _drop_nulls(value: Any) -> Any:
|
|
|
569
569
|
|
|
570
570
|
|
|
571
571
|
def generate_schema_typescript_code() -> str:
|
|
572
|
-
"""The Appspec's JSON Schema, for the editors of the page (
|
|
572
|
+
"""The Appspec's JSON Schema, for the editors of the page (S-01, S-02).
|
|
573
573
|
|
|
574
574
|
Taken from the agentspecs the catalogue is generated from, so that what
|
|
575
575
|
an editor completes and explains is what the spec accepts.
|
|
@@ -5,10 +5,10 @@
|
|
|
5
5
|
"""
|
|
6
6
|
Generate Python and TypeScript code from the YAML harness specifications.
|
|
7
7
|
|
|
8
|
-
One YAML per harness under ``agentspecs/harnesses`` (
|
|
8
|
+
One YAML per harness under ``agentspecs/harnesses`` (SH-01):
|
|
9
9
|
an agent program driven over the Agent Client Protocol, how it is launched,
|
|
10
10
|
what it needs, what it honours of an agent spec, and the terms it is served
|
|
11
|
-
under. ``register.yaml`` beside them is the register (SH-04
|
|
11
|
+
under. ``register.yaml`` beside them is the register (SH-04): a harness
|
|
12
12
|
without an entry is refused here as it is in agentspecs.
|
|
13
13
|
|
|
14
14
|
Usage:
|
|
@@ -104,7 +104,7 @@ def generate_python_code(specs: list[dict[str, Any]]) -> str:
|
|
|
104
104
|
'"""',
|
|
105
105
|
"Harness Catalog.",
|
|
106
106
|
"",
|
|
107
|
-
"An agent program driven over the Agent Client Protocol (
|
|
107
|
+
"An agent program driven over the Agent Client Protocol (SH-01).",
|
|
108
108
|
"",
|
|
109
109
|
"This file is AUTO-GENERATED from YAML specifications.",
|
|
110
110
|
"DO NOT EDIT MANUALLY - run 'make specs' to regenerate.",
|
|
@@ -234,7 +234,7 @@ def generate_typescript_code(
|
|
|
234
234
|
"/**",
|
|
235
235
|
" * Harness Catalog.",
|
|
236
236
|
" *",
|
|
237
|
-
" * An agent program driven over the Agent Client Protocol (
|
|
237
|
+
" * An agent program driven over the Agent Client Protocol (SH-01).",
|
|
238
238
|
" *",
|
|
239
239
|
" * This file is AUTO-GENERATED from YAML specifications.",
|
|
240
240
|
" * DO NOT EDIT MANUALLY - run 'make specs' to regenerate.",
|
|
@@ -122,7 +122,7 @@ def generate_python_code(specs: list[dict[str, Any]]) -> str:
|
|
|
122
122
|
]
|
|
123
123
|
)
|
|
124
124
|
# A server its command runs as a local HTTP process: where it is
|
|
125
|
-
# reached (
|
|
125
|
+
# reached (W-02, `google-workspace`).
|
|
126
126
|
if spec.get("url"):
|
|
127
127
|
lines.append(f' url="{spec["url"]}",')
|
|
128
128
|
|
|
@@ -132,7 +132,7 @@ def generate_python_code(specs: list[dict[str, Any]]) -> str:
|
|
|
132
132
|
|
|
133
133
|
lines.append(f" required_env_vars={envvars_formatted},")
|
|
134
134
|
# What the code its tools write reads in the code sandbox: given there
|
|
135
|
-
# when the account has them, never required (
|
|
135
|
+
# when the account has them, never required (R-19).
|
|
136
136
|
sandbox_envvars = spec.get("sandbox_envvars", [])
|
|
137
137
|
if sandbox_envvars:
|
|
138
138
|
lines.append(
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
"""
|
|
6
6
|
Generate Python and TypeScript code from the YAML policy specifications.
|
|
7
7
|
|
|
8
|
-
One YAML per policy under ``agentspecs/policies`` (
|
|
8
|
+
One YAML per policy under ``agentspecs/policies`` (SH-50):
|
|
9
9
|
the Shield's policy document under the catalogue's fields. The document's
|
|
10
10
|
schema is the ``agent-shield`` package's, carried by agentspecs verbatim
|
|
11
11
|
(``policies/shield-policy.schema.json``); each document is validated against
|
|
@@ -78,7 +78,7 @@ def generate_python_code(specs: list[dict[str, Any]]) -> str:
|
|
|
78
78
|
'"""',
|
|
79
79
|
"Policy Catalog.",
|
|
80
80
|
"",
|
|
81
|
-
"The Shield's policy documents the platform ships or shows (
|
|
81
|
+
"The Shield's policy documents the platform ships or shows (SH-50):",
|
|
82
82
|
"each a catalogue entry whose ``policy`` is a document of ``agent_shield.policy``.",
|
|
83
83
|
"",
|
|
84
84
|
"This file is AUTO-GENERATED from YAML specifications.",
|
|
@@ -150,7 +150,7 @@ def generate_typescript_code(specs: list[dict[str, Any]]) -> str:
|
|
|
150
150
|
"/**",
|
|
151
151
|
" * Policy Catalog.",
|
|
152
152
|
" *",
|
|
153
|
-
" * The Shield's policy documents the platform ships or shows (
|
|
153
|
+
" * The Shield's policy documents the platform ships or shows (SH-50).",
|
|
154
154
|
" *",
|
|
155
155
|
" * This file is AUTO-GENERATED from YAML specifications.",
|
|
156
156
|
" * DO NOT EDIT MANUALLY - run 'make specs' to regenerate.",
|
|
@@ -5,8 +5,7 @@
|
|
|
5
5
|
"""
|
|
6
6
|
Generate Python and TypeScript code from the YAML protocol specifications.
|
|
7
7
|
|
|
8
|
-
One YAML per agent protocol under ``agentspecs/protocols`` (
|
|
9
|
-
PS-01); an agent spec's or an application's ``protocols`` names the ones it
|
|
8
|
+
One YAML per agent protocol under ``agentspecs/protocols`` (PS-01); an agent spec's or an application's ``protocols`` names the ones it
|
|
10
9
|
speaks (PS-02).
|
|
11
10
|
|
|
12
11
|
Usage:
|
|
@@ -68,7 +67,7 @@ def generate_python_code(specs: list[dict[str, Any]]) -> str:
|
|
|
68
67
|
'"""',
|
|
69
68
|
"Protocol Catalog.",
|
|
70
69
|
"",
|
|
71
|
-
"The agent protocols Datalayer targets (
|
|
70
|
+
"The agent protocols Datalayer targets (PS-01).",
|
|
72
71
|
"",
|
|
73
72
|
"This file is AUTO-GENERATED from YAML specifications.",
|
|
74
73
|
"DO NOT EDIT MANUALLY - run 'make specs' to regenerate.",
|
|
@@ -137,7 +136,7 @@ def generate_typescript_code(specs: list[dict[str, Any]]) -> str:
|
|
|
137
136
|
"/**",
|
|
138
137
|
" * Protocol Catalog.",
|
|
139
138
|
" *",
|
|
140
|
-
" * The agent protocols Datalayer targets (
|
|
139
|
+
" * The agent protocols Datalayer targets (PS-01).",
|
|
141
140
|
" *",
|
|
142
141
|
" * This file is AUTO-GENERATED from YAML specifications.",
|
|
143
142
|
" * DO NOT EDIT MANUALLY - run 'make specs' to regenerate.",
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
"""
|
|
6
6
|
Generate Python and TypeScript code from YAML scene specifications.
|
|
7
7
|
|
|
8
|
-
A scene (agentspecs >= 0.0.61,
|
|
8
|
+
A scene (agentspecs >= 0.0.61, A-11) stages a team: the team says who
|
|
9
9
|
is on stage, the scene says what happens there — the setting, the script,
|
|
10
10
|
the stage directions, the audience, the rehearsal and where it plays. One
|
|
11
11
|
YAML per scene under ``agentspecs/scenes``.
|
|
@@ -19,7 +19,7 @@ Empty optional lists are dropped, as ``generate_apps.py`` drops them.
|
|
|
19
19
|
The scene spec's JSON Schema is written beside the TypeScript catalogue as
|
|
20
20
|
``sceneSchema.ts`` (``agentspecs.scenes.json_schema``), the way
|
|
21
21
|
``generate_apps.py`` writes ``appspecSchema.ts``: what an editor of the text
|
|
22
|
-
completes and explains is what the spec accepts (
|
|
22
|
+
completes and explains is what the spec accepts (S-01, A-03).
|
|
23
23
|
|
|
24
24
|
Usage:
|
|
25
25
|
python generate_scenes.py \\
|
|
@@ -88,7 +88,7 @@ def load_specs(specs_dir: Path) -> list[dict[str, Any]]:
|
|
|
88
88
|
for identity in sorted(scenes):
|
|
89
89
|
scene = scenes[identity]
|
|
90
90
|
spec = scene.model_dump(mode="json", by_alias=True)
|
|
91
|
-
# A scripted scene stages no team (
|
|
91
|
+
# A scripted scene stages no team (X-02): no entry, no cast.
|
|
92
92
|
scripted = spec.get("kind") == "scripted"
|
|
93
93
|
spec["entry"] = "" if scripted else scene.entry_of()
|
|
94
94
|
spec["cast"] = (
|
|
@@ -291,7 +291,7 @@ def generate_typescript_code(specs: list[dict[str, Any]]) -> str:
|
|
|
291
291
|
|
|
292
292
|
|
|
293
293
|
def generate_schema_typescript_code(specs_dir: Path) -> str:
|
|
294
|
-
"""The scene spec's JSON Schema, for the editor of its text (
|
|
294
|
+
"""The scene spec's JSON Schema, for the editor of its text (S-01, A-03).
|
|
295
295
|
|
|
296
296
|
Taken from the agentspecs the catalogue is generated from, so that what
|
|
297
297
|
the editor completes and explains is what the spec accepts. The
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
"""
|
|
6
6
|
Generate Python and TypeScript code from the YAML standard specifications.
|
|
7
7
|
|
|
8
|
-
One YAML per standard under ``agentspecs/standards`` (
|
|
8
|
+
One YAML per standard under ``agentspecs/standards`` (SH-60):
|
|
9
9
|
its version, domains and controls, each control with its evidence items,
|
|
10
10
|
cadence and crosswalks. The catalogue is carried whole: the Studio's
|
|
11
11
|
conformance screens read a control's title, status words and crosswalks
|
|
@@ -73,7 +73,7 @@ def generate_python_code(specs: list[dict[str, Any]]) -> str:
|
|
|
73
73
|
'"""',
|
|
74
74
|
"Standard Catalog.",
|
|
75
75
|
"",
|
|
76
|
-
"The standards a conformance report answers (
|
|
76
|
+
"The standards a conformance report answers (SH-60): each a",
|
|
77
77
|
"catalogue entry carrying the standard's domains and controls whole.",
|
|
78
78
|
"",
|
|
79
79
|
"This file is AUTO-GENERATED from YAML specifications.",
|
|
@@ -158,7 +158,7 @@ def generate_typescript_code(specs: list[dict[str, Any]]) -> str:
|
|
|
158
158
|
"/**",
|
|
159
159
|
" * Standard Catalog.",
|
|
160
160
|
" *",
|
|
161
|
-
" * The standards a conformance report answers (
|
|
161
|
+
" * The standards a conformance report answers (SH-60).",
|
|
162
162
|
" *",
|
|
163
163
|
" * This file is AUTO-GENERATED from YAML specifications.",
|
|
164
164
|
" * DO NOT EDIT MANUALLY - run 'make specs' to regenerate.",
|
|
@@ -490,7 +490,7 @@ from agent_runtimes.types import (
|
|
|
490
490
|
# `shared` by default: routing only makes sense if the member
|
|
491
491
|
# receiving the work can see what was already said.
|
|
492
492
|
context = spec.get("context") or {}
|
|
493
|
-
# The Frames of its shared context (
|
|
493
|
+
# The Frames of its shared context (A-04): written only when
|
|
494
494
|
# it names some, as the parser reads it.
|
|
495
495
|
frames = context.get("frames") or []
|
|
496
496
|
code += (
|