@datalayer/agent-runtimes 1.5.52 → 1.5.54
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-D4hFmYbm.js +32 -0
- package/dist-embed/chunks/{DeckComponent-C7AztSPA.js → DeckComponent-y0KZOMsH.js} +1 -1
- package/dist-embed/chunks/{DocumentView-DwpK2feQ.js → DocumentView-BKeO-v4k.js} +1 -1
- package/dist-embed/chunks/{EphemeralDocument-rusBlgBp.js → EphemeralDocument-BvbG68Jm.js} +1 -1
- package/dist-embed/chunks/{ExcalidrawComponent-Qv9LHutW.js → ExcalidrawComponent-DeNgg0ms.js} +1 -1
- package/dist-embed/chunks/{ExcalidrawModal-D6Mb9nmf.js → ExcalidrawModal-X6Yh6FKI.js} +1 -1
- package/dist-embed/chunks/{JupyterLexicalExtension-r47Jyrrd.js → JupyterLexicalExtension-Ght2bbbp.js} +5 -5
- package/dist-embed/chunks/{YouTubePlugin-4pUBJORX.js → YouTubePlugin-BnaV5Sxl.js} +1 -1
- package/dist-embed/chunks/{ar-SA-G6X2FPQ2-CD4X_3wm.js → ar-SA-G6X2FPQ2-DFML-KO4.js} +1 -1
- package/dist-embed/chunks/{az-AZ-76LH7QW2-oMbKQcB-.js → az-AZ-76LH7QW2-DTzTpRpk.js} +1 -1
- package/dist-embed/chunks/{bg-BG-XCXSNQG7-lSIB5dDU.js → bg-BG-XCXSNQG7-DMTmzgtc.js} +1 -1
- package/dist-embed/chunks/{bn-BD-2XOGV67Q-B5PkHAFO.js → bn-BD-2XOGV67Q-D1xy-Djm.js} +1 -1
- package/dist-embed/chunks/{ca-ES-6MX7JW3Y-BPeavtUl.js → ca-ES-6MX7JW3Y-hTO_csy7.js} +1 -1
- package/dist-embed/chunks/{cs-CZ-2BRQDIVT-DrBOFpi4.js → cs-CZ-2BRQDIVT-DBcXv81g.js} +1 -1
- package/dist-embed/chunks/{da-DK-5WZEPLOC-G5bUTE3Z.js → da-DK-5WZEPLOC-Rp51nhJX.js} +1 -1
- package/dist-embed/chunks/{de-DE-XR44H4JA-Drpt3qDZ.js → de-DE-XR44H4JA-DIgLamrP.js} +1 -1
- package/dist-embed/chunks/{el-GR-BZB4AONW-D4taPxaF.js → el-GR-BZB4AONW-XWt7TL7f.js} +1 -1
- package/dist-embed/chunks/{es-ES-U4NZUMDT-BvIGVphk.js → es-ES-U4NZUMDT-Bh1eks-u.js} +1 -1
- package/dist-embed/chunks/{eu-ES-A7QVB2H4-B8nvrNDk.js → eu-ES-A7QVB2H4-Bslg2HDc.js} +1 -1
- package/dist-embed/chunks/{fa-IR-HGAKTJCU-hwisHoU4.js → fa-IR-HGAKTJCU-9fGOejth.js} +1 -1
- package/dist-embed/chunks/{fi-FI-Z5N7JZ37-DKrDvTXs.js → fi-FI-Z5N7JZ37-DctXrD-R.js} +1 -1
- package/dist-embed/chunks/{fr-FR-RHASNOE6-DPtlBK_j.js → fr-FR-RHASNOE6-PUSl_g5c.js} +1 -1
- package/dist-embed/chunks/{gl-ES-HMX3MZ6V-B1ngwQkd.js → gl-ES-HMX3MZ6V-C5hGec18.js} +1 -1
- package/dist-embed/chunks/{he-IL-6SHJWFNN-BaoAQZ3f.js → he-IL-6SHJWFNN-rdU3Uatf.js} +1 -1
- package/dist-embed/chunks/{hi-IN-IWLTKZ5I-DzPeRmLM.js → hi-IN-IWLTKZ5I-CbVBP2OS.js} +1 -1
- package/dist-embed/chunks/{hu-HU-A5ZG7DT2-BgLcm8oA.js → hu-HU-A5ZG7DT2-BqNM3HXj.js} +1 -1
- package/dist-embed/chunks/{id-ID-SAP4L64H-egIA8l8_.js → id-ID-SAP4L64H-Z7074d-A.js} +1 -1
- package/dist-embed/chunks/{index-cYM4KfdD.js → index-2ciQBsIP.js} +1 -1
- package/dist-embed/chunks/{index-CkQ6IAoY.js → index-BIbnsdGY.js} +1 -1
- package/dist-embed/chunks/{index-Z2pxzg3H.js → index-BP84Dsqq.js} +1 -1
- package/dist-embed/chunks/{index-BzMt3uYX.js → index-BdQdhGo5.js} +1 -1
- package/dist-embed/chunks/{index-BKB97UwL.js → index-BpX_2Evh.js} +1 -1
- package/dist-embed/chunks/{index-CEbnhuIo.js → index-BrPjTG8-.js} +1 -1
- package/dist-embed/chunks/{index-Di3aBGLV.js → index-CAPuT1O_.js} +1 -1
- package/dist-embed/chunks/{index-5N0EOEHV.js → index-CC3OzP1C.js} +1 -1
- package/dist-embed/chunks/{index-D9_026K2.js → index-COWwWw7v.js} +1 -1
- package/dist-embed/chunks/{index-BTdq_niO.js → index-C_IEokTU.js} +1 -1
- package/dist-embed/chunks/{index-_H5U6gal.js → index-CalzGdbU.js} +1 -1
- package/dist-embed/chunks/{index-DVaPKQyL.js → index-CynaHotU.js} +1 -1
- package/dist-embed/chunks/{index-Cd5CgKFr.js → index-D4zET-qQ.js} +1 -1
- package/dist-embed/chunks/{index-BKOQQ5Ku.js → index-DJq5Nwi9.js} +1 -1
- package/dist-embed/chunks/{index-CZB8DyUw.js → index-Dx_VgK3b.js} +1 -1
- package/dist-embed/chunks/{index-BN8Bbau-.js → index-Dzf9vro3.js} +2 -2
- package/dist-embed/chunks/{index-DWfzdTZo.js → index-IGJ-OsCO.js} +1 -1
- package/dist-embed/chunks/{index-b6e3y1R-.js → index-mjwdOWLk.js} +1 -1
- package/dist-embed/chunks/{index-Gngo0bXi.js → index-wuTQQ7uK.js} +1 -1
- package/dist-embed/chunks/{index-CCRwowMu.js → index-zOsAyJ2Z.js} +1 -1
- package/dist-embed/chunks/{it-IT-JPQ66NNP-DDwc6pzw.js → it-IT-JPQ66NNP-CMr44eTw.js} +1 -1
- package/dist-embed/chunks/{ja-JP-DBVTYXUO-TrA2khDT.js → ja-JP-DBVTYXUO-DT0NU6hE.js} +1 -1
- package/dist-embed/chunks/{kaa-6HZHGXH3-GwFnOAIz.js → kaa-6HZHGXH3-C7H2NR4A.js} +1 -1
- package/dist-embed/chunks/{kab-KAB-ZGHBKWFO-xYS1Kjfb.js → kab-KAB-ZGHBKWFO-CNMStwQY.js} +1 -1
- package/dist-embed/chunks/{kk-KZ-P5N5QNE5-BwDJRk5I.js → kk-KZ-P5N5QNE5-D6IFMubV.js} +1 -1
- package/dist-embed/chunks/{km-KH-HSX4SM5Z-Di9J-9zc.js → km-KH-HSX4SM5Z-sh4HcGEj.js} +1 -1
- package/dist-embed/chunks/{ko-KR-MTYHY66A-BxF1Locw.js → ko-KR-MTYHY66A-Bgk5LE7Q.js} +1 -1
- package/dist-embed/chunks/{ku-TR-6OUDTVRD-mGflwIcv.js → ku-TR-6OUDTVRD-CoM0o1jW.js} +1 -1
- package/dist-embed/chunks/{lt-LT-XHIRWOB4-DWluphZ2.js → lt-LT-XHIRWOB4-1uHPL6b-.js} +1 -1
- package/dist-embed/chunks/{lv-LV-5QDEKY6T-D9EEzVQ9.js → lv-LV-5QDEKY6T-DYKbCrq6.js} +1 -1
- package/dist-embed/chunks/{mr-IN-CRQNXWMA-DoMvP_Jp.js → mr-IN-CRQNXWMA-C7qlI0yH.js} +1 -1
- package/dist-embed/chunks/{my-MM-5M5IBNSE-CPPbx93K.js → my-MM-5M5IBNSE-BWSQ_5V3.js} +1 -1
- package/dist-embed/chunks/{nb-NO-T6EIAALU-m2hgNNww.js → nb-NO-T6EIAALU-BVQfX-Pe.js} +1 -1
- package/dist-embed/chunks/{nl-NL-IS3SIHDZ-B809T0Iy.js → nl-NL-IS3SIHDZ-BXjyEe9g.js} +1 -1
- package/dist-embed/chunks/{nn-NO-6E72VCQL-DcMxKEVg.js → nn-NO-6E72VCQL-3eaL8woM.js} +1 -1
- package/dist-embed/chunks/{oc-FR-POXYY2M6-BZTBaY64.js → oc-FR-POXYY2M6-CDqoITm8.js} +1 -1
- package/dist-embed/chunks/{pa-IN-N4M65BXN-Cs4i3fnS.js → pa-IN-N4M65BXN-CoKaIMNa.js} +1 -1
- package/dist-embed/chunks/{percentages-BXMCSKIN-D82iCuEy.js → percentages-BXMCSKIN-X4aF_7zv.js} +3 -3
- package/dist-embed/chunks/{pl-PL-T2D74RX3-B3jg7qOY.js → pl-PL-T2D74RX3-DDD5SgtT.js} +1 -1
- package/dist-embed/chunks/{pt-BR-5N22H2LF-aCJuloaY.js → pt-BR-5N22H2LF-BIIRVQqv.js} +1 -1
- package/dist-embed/chunks/{pt-PT-UZXXM6DQ-8ZZdQp1P.js → pt-PT-UZXXM6DQ-HB1n3nNc.js} +1 -1
- package/dist-embed/chunks/{ro-RO-JPDTUUEW-BmyO5zyl.js → ro-RO-JPDTUUEW-CDxFIF2P.js} +1 -1
- package/dist-embed/chunks/{ru-RU-B4JR7IUQ-BneR_2Bm.js → ru-RU-B4JR7IUQ-CM2wpzEh.js} +1 -1
- package/dist-embed/chunks/{si-LK-N5RQ5JYF-CDB0IyVm.js → si-LK-N5RQ5JYF-u_f-pZ4T.js} +1 -1
- package/dist-embed/chunks/{sk-SK-C5VTKIMK-ypZmPMe_.js → sk-SK-C5VTKIMK-1MdhriDY.js} +1 -1
- package/dist-embed/chunks/{sl-SI-NN7IZMDC-D9OrZXr7.js → sl-SI-NN7IZMDC-BtkaEwYy.js} +1 -1
- package/dist-embed/chunks/{subset-shared.chunk-cQajIUFT.js → subset-shared.chunk-Ca3xPoZL.js} +1 -1
- package/dist-embed/chunks/{subset-worker.chunk-DEC9qaDu.js → subset-worker.chunk-CEgJtfh9.js} +1 -1
- package/dist-embed/chunks/{sv-SE-XGPEYMSR-CXBRqMMZ.js → sv-SE-XGPEYMSR-CX9l-s8b.js} +1 -1
- package/dist-embed/chunks/{ta-IN-2NMHFXQM-BuB9HEjH.js → ta-IN-2NMHFXQM-Bs3QMZdy.js} +1 -1
- package/dist-embed/chunks/{th-TH-HPSO5L25-Ci7wR5dZ.js → th-TH-HPSO5L25-yCfu_zLh.js} +1 -1
- package/dist-embed/chunks/{tr-TR-DEFEU3FU-CEJUT8zN.js → tr-TR-DEFEU3FU-PnpIJqSm.js} +1 -1
- package/dist-embed/chunks/{uk-UA-QMV73CPH-Ceh5JIiD.js → uk-UA-QMV73CPH--aODafpt.js} +1 -1
- package/dist-embed/chunks/{url-DuKx0yk0.js → url-CzjbCo42.js} +1 -1
- package/dist-embed/chunks/{vi-VN-M7AON7JQ-8-R9Ohxp.js → vi-VN-M7AON7JQ-BruA8Fg-.js} +1 -1
- package/dist-embed/chunks/{zh-CN-LNUGB5OW-D4q5wqKm.js → zh-CN-LNUGB5OW-DtbH5pJi.js} +1 -1
- package/dist-embed/chunks/{zh-HK-E62DVLB3-_UiIVKpk.js → zh-HK-E62DVLB3-CPacR6Re.js} +1 -1
- package/dist-embed/chunks/{zh-TW-RAJ6MFWO-DyXZ-PXI.js → zh-TW-RAJ6MFWO-CImbtPSf.js} +1 -1
- package/dist-embed/datalayer-app-main.js +82 -82
- 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 +23 -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 +11 -5
- package/lib/apps/plugins/app-rules/AppRulesCard.js +13 -5
- 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 +54 -37
- 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 +9 -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.d.ts +6 -0
- package/lib/specs/agents/agents.js +296 -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 +19 -4
- package/lib/voice/ReadAloud.d.ts +1 -1
- package/lib/voice/VoiceInput.d.ts +1 -2
- package/lib/voice/VoiceInput.js +10 -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 +31 -4
- package/lib/voice/handsFree.js +34 -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/dist-embed/chunks/ChatView-Dy-IgGFL.js +0 -32
|
@@ -32,7 +32,7 @@ export function ruleInWords(rule) {
|
|
|
32
32
|
}
|
|
33
33
|
/**
|
|
34
34
|
* The rule or Gate an approval was asked under, as the runtime wrote it in
|
|
35
|
-
* its arguments: `_rule` for a rule, `_check` for a Gate (
|
|
35
|
+
* its arguments: `_rule` for a rule, `_check` for a Gate (U-19).
|
|
36
36
|
*/
|
|
37
37
|
export const ruleOfApproval = (approval) => {
|
|
38
38
|
const said = approval.tool_args?._rule ?? approval.tool_args?._check;
|
|
@@ -41,7 +41,7 @@ export const ruleOfApproval = (approval) => {
|
|
|
41
41
|
/**
|
|
42
42
|
* The approvals of one application: those its agent asked under its id, and
|
|
43
43
|
* those the runtime marked as its own (`_app`) — a deployment's agent, a
|
|
44
|
-
* Gate's, or a review its drift asked (
|
|
44
|
+
* Gate's, or a review its drift asked (U-19). Answered anywhere, an
|
|
45
45
|
* approval leaves every list at once: each decision is broadcast to all the
|
|
46
46
|
* person's pages over the same `/ws`.
|
|
47
47
|
*/
|
|
@@ -49,7 +49,7 @@ export function approvalsOfApp(approvals, appId) {
|
|
|
49
49
|
return approvals.filter(approval => approval.agent_id === appId || approval.tool_args?._app === appId);
|
|
50
50
|
}
|
|
51
51
|
const PENDING = { status: 'pending' };
|
|
52
|
-
/** A result it wants to keep, shown whole before it is (
|
|
52
|
+
/** A result it wants to keep, shown whole before it is (R-24). */
|
|
53
53
|
export function DraftShown({ draft }) {
|
|
54
54
|
return (_jsxs(Box, { "data-testid": "app-draft", mt: 1, children: [_jsx(Text, { as: "p", sx: { m: 0, fontSize: 0, color: 'fg.muted' }, children: SAVE_WORDS.where(draft.space) }), _jsx(Text, { as: "p", sx: { m: 0, fontWeight: 'semibold' }, children: draft.title }), _jsx(Box, { as: "pre", m: 0, mt: 1, p: 2, maxHeight: 240, overflow: "auto", whiteSpace: "pre-wrap", fontFamily: "inherit", fontSize: 0, bg: "canvas.subtle", borderRadius: 2, children: draft.content })] }));
|
|
55
55
|
}
|
|
@@ -64,7 +64,7 @@ function Approvals({ app }) {
|
|
|
64
64
|
}) }))] }));
|
|
65
65
|
}
|
|
66
66
|
/**
|
|
67
|
-
* The rules of the running session (
|
|
67
|
+
* The rules of the running session (SH-54): what decides it now,
|
|
68
68
|
* the rules the person added, and a rule to add — in force at once, gone with
|
|
69
69
|
* the session, never below the organization's.
|
|
70
70
|
*/
|
|
@@ -107,13 +107,21 @@ export function SessionRules({ agentServerUrl, sessionUid, token, }) {
|
|
|
107
107
|
};
|
|
108
108
|
return (_jsxs(Box, { "data-testid": "session-rules", mt: 3, children: [_jsx(Heading, { as: "h4", sx: { fontSize: 1, mb: 1 }, children: SESSION_RULES_WORDS.title }), inForce?.unavailable ? (_jsx(Text, { as: "p", role: "alert", sx: { fontSize: 0, m: 0, mb: 1 }, children: SESSION_RULES_WORDS.unavailable(inForce.unavailable) })) : null, inForce && inForce.session_rules.length === 0 ? (_jsx(Text, { as: "p", sx: { fontSize: 1, color: 'fg.muted', m: 0 }, children: SESSION_RULES_WORDS.none })) : (_jsx(Box, { as: "ul", listStyle: "none", p: 0, m: 0, children: (inForce?.session_rules ?? []).map(rule => (_jsxs(Box, { as: "li", py: 1, fontSize: 1, display: "flex", gap: 2, alignItems: "center", children: [_jsx(Text, { sx: { fontWeight: 'semibold' }, children: rule.name }), _jsx(Text, { sx: { color: 'fg.muted', fontSize: 0 }, children: sessionRuleInWords(rule) }), _jsx(Button, { size: "small", variant: "invisible", disabled: busy, onClick: () => void act(() => removeSessionRule(agentServerUrl, token, sessionUid, rule.name)), children: SESSION_RULES_WORDS.remove })] }, rule.name))) })), _jsxs(Box, { display: "flex", gap: 1, mt: 1, flexWrap: "wrap", alignItems: "center", children: [_jsx(TextInput, { size: "small", value: name, placeholder: SESSION_RULES_WORDS.namePlaceholder, "aria-label": "The rule's name", onChange: event => setName(event.target.value) }), _jsx(Select, { size: "small", value: kind, "aria-label": "What it covers", onChange: event => setKind(event.target.value), children: SESSION_RULE_CLASSES.map(item => (_jsx(Select.Option, { value: item, children: SESSION_RULES_WORDS.classes[item] }, item))) }), _jsx(Select, { size: "small", value: decision, "aria-label": "What it says", onChange: event => setDecision(event.target.value), children: SESSION_RULE_DECISIONS.map(item => (_jsx(Select.Option, { value: item, children: SESSION_RULES_WORDS.decisions[item] }, item))) }), _jsx(Button, { size: "small", disabled: busy, onClick: add, children: SESSION_RULES_WORDS.add })] }), _jsx(Box, { display: "flex", gap: 1, mt: 1, flexWrap: "wrap", "data-testid": "session-rules-file-and-shell", children: FILE_AND_SHELL_RULES.map(rule => (_jsx(Button, { size: "small", variant: "invisible", disabled: busy, title: sessionRuleInWords(rule), onClick: () => void act(() => addSessionRule(agentServerUrl, token, sessionUid, rule)), children: rule.name }, rule.name))) }), problem ? (_jsx(Text, { as: "p", role: "alert", sx: { fontSize: 0, m: 0, mt: 1 }, children: problem })) : null, _jsx(Text, { as: "p", sx: { fontSize: 0, color: 'fg.muted', mt: 1, mb: 0 }, children: SESSION_RULES_WORDS.goneWithSession })] }));
|
|
109
109
|
}
|
|
110
|
+
/**
|
|
111
|
+
* The running session the card tightens: the conversation the host
|
|
112
|
+
* continued, else the thread the chat sent on — an application's thread is
|
|
113
|
+
* its session on the runtime. None before a message is sent.
|
|
114
|
+
*/
|
|
115
|
+
export function sessionUidOf(workspace) {
|
|
116
|
+
return workspace?.conversationId || workspace?.thread || undefined;
|
|
117
|
+
}
|
|
110
118
|
export function AppRulesCard({ app, workspace, }) {
|
|
111
119
|
const token = useIAMStore(state => state.token) ?? '';
|
|
112
120
|
const signedIn = Boolean(token);
|
|
113
121
|
const agentServerUrl = workspace
|
|
114
122
|
? agentServerOf(workspace.sandbox, workspace.serverUrl)
|
|
115
123
|
: undefined;
|
|
116
|
-
const sessionUid = workspace
|
|
124
|
+
const sessionUid = sessionUidOf(workspace);
|
|
117
125
|
return (_jsxs(Box, { "data-testid": "app-rules", mb: 4, children: [_jsx(Heading, { as: "h3", sx: { fontSize: 2, mb: 2 }, children: APP_RULES_WORDS.title }), app.rules.length === 0 ? (_jsx(Text, { as: "p", sx: { fontSize: 1, color: 'fg.muted', m: 0 }, children: APP_RULES_WORDS.none })) : (_jsx(Box, { as: "ul", listStyle: "none", p: 0, m: 0, children: app.rules.map(ruleInWords).map((rule, index) => (_jsxs(Box, { as: "li", py: 1, fontSize: 1, children: [_jsx(Text, { children: rule.action }), ' ', _jsx(Label, { title: rule.means, children: rule.says }), _jsx(Text, { as: "p", sx: { m: 0, color: 'fg.muted', fontSize: 0 }, children: rule.covers })] }, index))) })), _jsx(Text, { as: "p", sx: { fontSize: 0, color: 'fg.muted', mt: 1, mb: 0 }, children: APP_RULES_WORDS.byDefault }), signedIn ? (_jsx(Approvals, { app: app })) : (_jsx(Text, { as: "p", sx: { fontSize: 1, color: 'fg.muted', mt: 3, mb: 0 }, children: APP_RULES_WORDS.signedOut })), signedIn && agentServerUrl ? (sessionUid ? (_jsx(SessionRules, { agentServerUrl: agentServerUrl, sessionUid: sessionUid, token: token })) : (_jsx(Text, { as: "p", sx: { fontSize: 0, color: 'fg.muted', mt: 3, mb: 0 }, children: SESSION_RULES_WORDS.noSession }))) : null] }));
|
|
118
126
|
}
|
|
119
127
|
export default AppRulesCard;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* The floating assistant in the LOOP workspace (
|
|
2
|
+
* The floating assistant in the LOOP workspace (T-24): the character a
|
|
3
3
|
* page draws over its workspace, chosen from what the enabled plugins
|
|
4
4
|
* contribute to `loop.assistant.character` — the application's own
|
|
5
5
|
* (`interface.assistant`) when its Appspec names one, else the person's
|
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
* the runtime to ask (`decisions`), its balloon offers *Ask a decision*: a
|
|
14
14
|
* typed decision asked of Jev through the runtime, answered there.
|
|
15
15
|
*
|
|
16
|
-
* Its balloon shows the conversation as `balloon` says (
|
|
16
|
+
* Its balloon shows the conversation as `balloon` says (T-23; the
|
|
17
17
|
* Appspec's `interface.balloon`): a peek of the newest words (`history`, the
|
|
18
18
|
* default), or the one thing being said or done now (`current`). Either way
|
|
19
19
|
* what the agent is doing while a tool runs — the turn's `activity` — is said
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Datalayer's own characters for the floating assistant, contributed
|
|
3
|
-
* (
|
|
3
|
+
* (T-24, T-25): the paper clip, the wizard, the cat and the L👀P eyes.
|
|
4
4
|
* Disabled, they leave the catalogue; another plugin may contribute others.
|
|
5
5
|
*
|
|
6
6
|
* @module apps/plugins/assistant-characters
|
|
@@ -18,7 +18,7 @@ type ContributionsReader = {
|
|
|
18
18
|
export declare const ASSISTANT_CHARACTERS_PLUGIN_NAME = "@datalayer/loop-plugin-assistant-characters";
|
|
19
19
|
export declare const AssistantCharactersPlugin: ReactorPlugin<Record<string, never>, unknown, unknown>;
|
|
20
20
|
/**
|
|
21
|
-
* A plugin contributing one character (
|
|
21
|
+
* A plugin contributing one character (T-24, T-26): a character a
|
|
22
22
|
* person brought — a `.acs` or a clippy.js character read in their page —
|
|
23
23
|
* offered beside the contributed ones under the id it is chosen by. The
|
|
24
24
|
* character stays in the page: the plugin only says it is there.
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
*/
|
|
5
5
|
/**
|
|
6
6
|
* Datalayer's own characters for the floating assistant, contributed
|
|
7
|
-
* (
|
|
7
|
+
* (T-24, T-25): the paper clip, the wizard, the cat and the L👀P eyes.
|
|
8
8
|
* Disabled, they leave the catalogue; another plugin may contribute others.
|
|
9
9
|
*
|
|
10
10
|
* @module apps/plugins/assistant-characters
|
|
@@ -21,7 +21,7 @@ export const AssistantCharactersPlugin = definePlugin({
|
|
|
21
21
|
contributes: ASSISTANT_CHARACTERS.map(character => contribution(LoopAssistantCharacter, { id: character.id, character }, { id: character.id })),
|
|
22
22
|
});
|
|
23
23
|
/**
|
|
24
|
-
* A plugin contributing one character (
|
|
24
|
+
* A plugin contributing one character (T-24, T-26): a character a
|
|
25
25
|
* person brought — a `.acs` or a clippy.js character read in their page —
|
|
26
26
|
* offered beside the contributed ones under the id it is chosen by. The
|
|
27
27
|
* character stays in the page: the plugin only says it is there.
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* The Canvas's palette as a Contribution Point (
|
|
2
|
+
* The Canvas's palette as a Contribution Point (C-12): each UI plugin
|
|
3
3
|
* of the catalogue that renders components (`agentspecs/ui`, C-13 — the
|
|
4
4
|
* A2UI surfaces, `a2ui-surface`) has its components contributed to
|
|
5
5
|
* `loop.canvas.block` by a Reactor plugin of its own, one per UI spec. The
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
* Distributed under the terms of the Modified BSD License.
|
|
4
4
|
*/
|
|
5
5
|
/**
|
|
6
|
-
* The Canvas's palette as a Contribution Point (
|
|
6
|
+
* The Canvas's palette as a Contribution Point (C-12): each UI plugin
|
|
7
7
|
* of the catalogue that renders components (`agentspecs/ui`, C-13 — the
|
|
8
8
|
* A2UI surfaces, `a2ui-surface`) has its components contributed to
|
|
9
9
|
* `loop.canvas.block` by a Reactor plugin of its own, one per UI spec. The
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* The agent's toolbox, contributed (
|
|
2
|
+
* The agent's toolbox, contributed (C-20): one plugin per source of
|
|
3
3
|
* parts — the servers of the catalogue a connection reaches, its skills, its
|
|
4
4
|
* models, and the rules, tests and events an agent answers to — each
|
|
5
5
|
* contributing to `loop.canvas.part`. The toolbox is what the enabled
|
|
@@ -19,7 +19,7 @@ export declare const CANVAS_PART_SOURCES: readonly ["agents", "connections", "sk
|
|
|
19
19
|
export type CanvasPartSource = (typeof CANVAS_PART_SOURCES)[number];
|
|
20
20
|
export declare const canvasPartsPluginName: (source: CanvasPartSource) => string;
|
|
21
21
|
/**
|
|
22
|
-
* The catalogue's harnesses as the agent (
|
|
22
|
+
* The catalogue's harnesses as the agent (SH-43): each harness an
|
|
23
23
|
* agent program over ACP behind the Shield, offered by the catalogue agent
|
|
24
24
|
* that runs on it — dropped on the surface, it is the application's agent.
|
|
25
25
|
* A harness no agent of the catalogue runs yet is offered off, and says so;
|
|
@@ -38,14 +38,14 @@ export declare const RULE_PARTS: CanvasPartContribution[];
|
|
|
38
38
|
export declare const TEST_PARTS: CanvasPartContribution[];
|
|
39
39
|
/** The events an application answers (C-21): on a schedule, on an event, once. */
|
|
40
40
|
export declare const EVENT_PARTS: CanvasPartContribution[];
|
|
41
|
-
/** Each protocol of the catalogue (
|
|
41
|
+
/** Each protocol of the catalogue (PS-04): a planned one offered, not enabled. */
|
|
42
42
|
export declare const PROTOCOL_PARTS: CanvasPartContribution[];
|
|
43
43
|
/**
|
|
44
|
-
* Each UI plugin of the catalogue (
|
|
44
|
+
* Each UI plugin of the catalogue (R8): a part of the agent's
|
|
45
45
|
* interface, dropped on it, then exposed through a renderer it may be.
|
|
46
46
|
*/
|
|
47
47
|
export declare const UI_PARTS: CanvasPartContribution[];
|
|
48
|
-
/** Datalayer's characters for its floating assistant, dropped on the agent (
|
|
48
|
+
/** Datalayer's characters for its floating assistant, dropped on the agent (PS-05). */
|
|
49
49
|
export declare const CHARACTER_PARTS: CanvasPartContribution[];
|
|
50
50
|
export declare const CANVAS_PART_PLUGINS: ReactorPlugin<Record<string, never>, unknown, unknown>[];
|
|
51
51
|
/** The toolbox's reactor, its named plugins disabled; a name no plugin has is refused. */
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
* Distributed under the terms of the Modified BSD License.
|
|
4
4
|
*/
|
|
5
5
|
/**
|
|
6
|
-
* The agent's toolbox, contributed (
|
|
6
|
+
* The agent's toolbox, contributed (C-20): one plugin per source of
|
|
7
7
|
* parts — the servers of the catalogue a connection reaches, its skills, its
|
|
8
8
|
* models, and the rules, tests and events an agent answers to — each
|
|
9
9
|
* contributing to `loop.canvas.part`. The toolbox is what the enabled
|
|
@@ -43,7 +43,7 @@ const partsPlugin = (source, displayName, parts) => definePlugin({
|
|
|
43
43
|
contributes: parts.map(part => contribution(LoopCanvasPart, part, { id: part.id })),
|
|
44
44
|
});
|
|
45
45
|
/**
|
|
46
|
-
* The catalogue's harnesses as the agent (
|
|
46
|
+
* The catalogue's harnesses as the agent (SH-43): each harness an
|
|
47
47
|
* agent program over ACP behind the Shield, offered by the catalogue agent
|
|
48
48
|
* that runs on it — dropped on the surface, it is the application's agent.
|
|
49
49
|
* A harness no agent of the catalogue runs yet is offered off, and says so;
|
|
@@ -205,7 +205,7 @@ export const EVENT_PARTS = [
|
|
|
205
205
|
enabled: true,
|
|
206
206
|
},
|
|
207
207
|
];
|
|
208
|
-
/** Each protocol of the catalogue (
|
|
208
|
+
/** Each protocol of the catalogue (PS-04): a planned one offered, not enabled. */
|
|
209
209
|
export const PROTOCOL_PARTS = listProtocolSpecs().map(protocol => ({
|
|
210
210
|
id: `protocol:${protocol.id}`,
|
|
211
211
|
kind: 'protocol',
|
|
@@ -215,7 +215,7 @@ export const PROTOCOL_PARTS = listProtocolSpecs().map(protocol => ({
|
|
|
215
215
|
enabled: protocol.status === 'shipped',
|
|
216
216
|
}));
|
|
217
217
|
/**
|
|
218
|
-
* Each UI plugin of the catalogue (
|
|
218
|
+
* Each UI plugin of the catalogue (R8): a part of the agent's
|
|
219
219
|
* interface, dropped on it, then exposed through a renderer it may be.
|
|
220
220
|
*/
|
|
221
221
|
export const UI_PARTS = listUI().map(ui => ({
|
|
@@ -227,7 +227,7 @@ export const UI_PARTS = listUI().map(ui => ({
|
|
|
227
227
|
example: { plugin: ui.id },
|
|
228
228
|
enabled: true,
|
|
229
229
|
}));
|
|
230
|
-
/** Datalayer's characters for its floating assistant, dropped on the agent (
|
|
230
|
+
/** Datalayer's characters for its floating assistant, dropped on the agent (PS-05). */
|
|
231
231
|
export const CHARACTER_PARTS = ASSISTANT_CHARACTERS.map(character => ({
|
|
232
232
|
id: `character:${character.id}`,
|
|
233
233
|
kind: 'character',
|
|
@@ -69,7 +69,7 @@ const NO_SURFACE = '';
|
|
|
69
69
|
const FULLSCREEN_HINT_PERIOD_MS = 1400;
|
|
70
70
|
/**
|
|
71
71
|
* An application's face in the empty state: the page's size of the three a
|
|
72
|
-
* face is drawn at (
|
|
72
|
+
* face is drawn at (T-19, `--loop-face-large`, 72px).
|
|
73
73
|
*/
|
|
74
74
|
const FACE_LARGE = parseInt(loopShapeVars['--loop-face-large'], 10);
|
|
75
75
|
export default function ChatView({ workspace }) {
|
|
@@ -80,6 +80,20 @@ export default function ChatView({ workspace }) {
|
|
|
80
80
|
const palette = useColorPalette();
|
|
81
81
|
const controlsRef = useRef(null);
|
|
82
82
|
const { setViewControls } = workspace;
|
|
83
|
+
/*
|
|
84
|
+
* Say the thread a message goes on to the workspace: an application's
|
|
85
|
+
* thread is its session on the runtime, which the Rules card's *This
|
|
86
|
+
* session* reads (SH-54). Through a ref, as the senders below are built once.
|
|
87
|
+
*/
|
|
88
|
+
const setThreadRef = useRef(workspace.setThread);
|
|
89
|
+
setThreadRef.current = workspace.setThread;
|
|
90
|
+
const sayThread = useCallback(() => {
|
|
91
|
+
const thread = controlsRef.current?.thread();
|
|
92
|
+
if (thread) {
|
|
93
|
+
setThreadRef.current?.(thread);
|
|
94
|
+
}
|
|
95
|
+
return thread;
|
|
96
|
+
}, []);
|
|
83
97
|
const [transient, setTransient] = useState(null);
|
|
84
98
|
// Read from the reactor rather than taken as a prop: the placeholder and the
|
|
85
99
|
// default editor are the chat plugin's own configuration, so a host sets them
|
|
@@ -207,7 +221,7 @@ export default function ChatView({ workspace }) {
|
|
|
207
221
|
*/
|
|
208
222
|
const [busy, setBusy] = useState(false);
|
|
209
223
|
const [sendReady, setSendReady] = useState(false);
|
|
210
|
-
// The agent's voice speaks (
|
|
224
|
+
// The agent's voice speaks (VO-10): the composer's *Stop speaking*.
|
|
211
225
|
const [speaking, setSpeaking] = useState(false);
|
|
212
226
|
const [presenceTool, setPresenceTool] = useState({
|
|
213
227
|
open: false,
|
|
@@ -222,7 +236,7 @@ export default function ChatView({ workspace }) {
|
|
|
222
236
|
turnFeedRef.current?.setPresence(presenceNow);
|
|
223
237
|
}, [onPresence, presenceNow]);
|
|
224
238
|
// What it last said, for a host that says it outside the conversation —
|
|
225
|
-
// the embed's floating chrome (
|
|
239
|
+
// the embed's floating chrome (R-01): its balloon and its blink.
|
|
226
240
|
// Through a ref: the handler below is made once.
|
|
227
241
|
const onSayingRef = useRef(config?.presence?.onSaying);
|
|
228
242
|
onSayingRef.current = config?.presence?.onSaying;
|
|
@@ -367,7 +381,7 @@ export default function ChatView({ workspace }) {
|
|
|
367
381
|
const inPageRef = useRef(false);
|
|
368
382
|
/**
|
|
369
383
|
* The page's sandbox, when the agent turned in the page runs its code
|
|
370
|
-
* there (`execute_code`,
|
|
384
|
+
* there (`execute_code`, E-11): what a file given on the page is
|
|
371
385
|
* put in. Read by `sendNow`, set below.
|
|
372
386
|
*/
|
|
373
387
|
const pageSandboxRef = useRef(undefined);
|
|
@@ -377,7 +391,7 @@ export default function ChatView({ workspace }) {
|
|
|
377
391
|
* stopped deployment, a visitor's turns all taken. Set below.
|
|
378
392
|
*/
|
|
379
393
|
const hostClosedRef = useRef(undefined);
|
|
380
|
-
/** What goes with every run (an application's modes,
|
|
394
|
+
/** What goes with every run (an application's modes, P-19), read when it is sent. */
|
|
381
395
|
// How the words in the composer were heard, when they were said (VO-27).
|
|
382
396
|
const spokenRef = useRef(undefined);
|
|
383
397
|
const runProps = useContributions(LoopRunProps);
|
|
@@ -390,12 +404,12 @@ export default function ChatView({ workspace }) {
|
|
|
390
404
|
* begins its turn, and a page reading the turn sees it asked and answered.
|
|
391
405
|
*
|
|
392
406
|
* What the page did besides the message goes with it as AG-UI's
|
|
393
|
-
* `forwardedProps` (`loop`,
|
|
407
|
+
* `forwardedProps` (`loop`, R-04): the application's session takes a
|
|
394
408
|
* file there. An agent turned in this page has no session: one that runs
|
|
395
409
|
* its code in the page's sandbox has the files put there, and the message
|
|
396
|
-
* names them (
|
|
410
|
+
* names them (E-11); to any other no file is handed — said, rather
|
|
397
411
|
* than dropped. What the workspace's plugins send with every run
|
|
398
|
-
* (`LoopRunProps`: the modes the person is in,
|
|
412
|
+
* (`LoopRunProps`: the modes the person is in, P-19) goes under it —
|
|
399
413
|
* and an agent turned in this page applies the modes itself (`modeEffect`,
|
|
400
414
|
* `BrowserAgentAdapter`).
|
|
401
415
|
*/
|
|
@@ -404,11 +418,11 @@ export default function ChatView({ workspace }) {
|
|
|
404
418
|
return hostClosedRef.current;
|
|
405
419
|
}
|
|
406
420
|
// Said into the composer, then sent: how it was heard rides on the
|
|
407
|
-
// run, and the chat marks the message spoken (
|
|
421
|
+
// run, and the chat marks the message spoken (VO-27).
|
|
408
422
|
const spoken = spokenRef.current;
|
|
409
423
|
spokenRef.current = undefined;
|
|
410
424
|
const forwardedProps = runForwardedProps(runPropsRef.current.map(entry => entry.value), spoken ? { ...(given ?? {}), voice: spoken } : given);
|
|
411
|
-
// The page's files, or those attached in the composer (
|
|
425
|
+
// The page's files, or those attached in the composer (P-21).
|
|
412
426
|
const loop = forwardedProps?.loop;
|
|
413
427
|
if (inPageRef.current && loop?.files && loop.files.length > 0) {
|
|
414
428
|
const sandbox = pageSandboxRef.current;
|
|
@@ -440,14 +454,14 @@ export default function ChatView({ workspace }) {
|
|
|
440
454
|
return;
|
|
441
455
|
}
|
|
442
456
|
// A new turn: whatever the panel showed is gone, this message is it.
|
|
443
|
-
turnFeedRef.current?.begin(message,
|
|
457
|
+
turnFeedRef.current?.begin(message, sayThread());
|
|
444
458
|
const send = controlsRef.current?.send;
|
|
445
459
|
if (!send) {
|
|
446
460
|
heldForAdapter.current.push([message, forwardedProps]);
|
|
447
461
|
return;
|
|
448
462
|
}
|
|
449
463
|
send(message, forwardedProps);
|
|
450
|
-
}, []);
|
|
464
|
+
}, [sayThread]);
|
|
451
465
|
// One writer, so neither fact can erase the other.
|
|
452
466
|
useEffect(() => {
|
|
453
467
|
setViewControls(sendReady
|
|
@@ -481,9 +495,10 @@ export default function ChatView({ workspace }) {
|
|
|
481
495
|
}
|
|
482
496
|
const held = heldForAdapter.current.splice(0, heldForAdapter.current.length);
|
|
483
497
|
for (const [message, forwardedProps] of held) {
|
|
498
|
+
sayThread();
|
|
484
499
|
controlsRef.current?.send(message, forwardedProps);
|
|
485
500
|
}
|
|
486
|
-
}, [sendReady]);
|
|
501
|
+
}, [sendReady, sayThread]);
|
|
487
502
|
/*
|
|
488
503
|
* Fired once, on the first real send, for the life of this mounted chat —
|
|
489
504
|
* a ref rather than a signal, because nothing here needs to re-render when
|
|
@@ -501,7 +516,7 @@ export default function ChatView({ workspace }) {
|
|
|
501
516
|
*/
|
|
502
517
|
setTransient(null);
|
|
503
518
|
/*
|
|
504
|
-
* Words that go elsewhere than the agent (`sendInstead`,
|
|
519
|
+
* Words that go elsewhere than the agent (`sendInstead`,
|
|
505
520
|
* P-08): a Direct Conversation with a company, the person's own words
|
|
506
521
|
* sent as theirs. Neither a command nor a turn, and never the model's;
|
|
507
522
|
* refused, the words stay where they were typed and the reason is said.
|
|
@@ -789,7 +804,7 @@ export default function ChatView({ workspace }) {
|
|
|
789
804
|
/*
|
|
790
805
|
* An agent of the catalogue or a Cog's, as a runtime resolves it: an
|
|
791
806
|
* application on a Cog looked up among the agentspecs alone was turned in
|
|
792
|
-
* the page with no instructions at all (
|
|
807
|
+
* the page with no instructions at all (H-01).
|
|
793
808
|
*/
|
|
794
809
|
const spec = resolveAgentspec(member?.specId ?? agentId) ??
|
|
795
810
|
(blueprintSpecId ? resolveAgentspec(blueprintSpecId) : undefined);
|
|
@@ -840,7 +855,7 @@ export default function ChatView({ workspace }) {
|
|
|
840
855
|
const hidden = new Set(hiddenOpeners ?? []);
|
|
841
856
|
const offered = (items) => hidden.size === 0 ? items : items.filter(item => !hidden.has(item.text));
|
|
842
857
|
// What a plugin offers live (an application's profile's starters,
|
|
843
|
-
//
|
|
858
|
+
// P-20) wins over what was contributed when the reactor was built.
|
|
844
859
|
if (liveOpeners) {
|
|
845
860
|
return offered(liveOpeners);
|
|
846
861
|
}
|
|
@@ -1013,7 +1028,7 @@ export default function ChatView({ workspace }) {
|
|
|
1013
1028
|
}, [notebookTools, commandTools]);
|
|
1014
1029
|
/*
|
|
1015
1030
|
* The page's own tools for an agent on a server: a host example's, and
|
|
1016
|
-
* the tools of the `AgentTools` bundles its extras name (
|
|
1031
|
+
* the tools of the `AgentTools` bundles its extras name (RU-7:
|
|
1017
1032
|
* the host page's functions, `host_<name>`, each running its command on
|
|
1018
1033
|
* this reactor). An in-page agent has every bundle already (above).
|
|
1019
1034
|
*/
|
|
@@ -1057,7 +1072,7 @@ export default function ChatView({ workspace }) {
|
|
|
1057
1072
|
*/
|
|
1058
1073
|
/*
|
|
1059
1074
|
* The commands the composer lists while `/` is typed: those contributed for
|
|
1060
|
-
* it, an application's (
|
|
1075
|
+
* it, an application's (P-19). Picking one writes `/<name> `, and the
|
|
1061
1076
|
* workspace runs it when the message is sent.
|
|
1062
1077
|
*/
|
|
1063
1078
|
const commands = useContributions(LoopCommand);
|
|
@@ -1136,7 +1151,7 @@ export default function ChatView({ workspace }) {
|
|
|
1136
1151
|
/*
|
|
1137
1152
|
* What its host said of whether there is anything to talk to
|
|
1138
1153
|
* (`ChatAvailabilityProvider`): an application whose model is not offered
|
|
1139
|
-
* or not served (
|
|
1154
|
+
* or not served (R-27) is switched off with the reason, by the
|
|
1140
1155
|
* Studio's Preview and the hosted page, rather than left unanswered.
|
|
1141
1156
|
*/
|
|
1142
1157
|
const ambient = useChatAvailability();
|
|
@@ -1144,7 +1159,7 @@ export default function ChatView({ workspace }) {
|
|
|
1144
1159
|
? ambient.disableReason || 'This conversation is closed here.'
|
|
1145
1160
|
: undefined;
|
|
1146
1161
|
/*
|
|
1147
|
-
* No agent to talk to: a Datalayer runtime not assigned (
|
|
1162
|
+
* No agent to talk to: a Datalayer runtime not assigned (P-24,
|
|
1148
1163
|
* round 9). Said in a sentence — why, when its launch was refused — and
|
|
1149
1164
|
* nothing is sent; the header does not say *Ready*.
|
|
1150
1165
|
*/
|
|
@@ -1175,7 +1190,7 @@ export default function ChatView({ workspace }) {
|
|
|
1175
1190
|
*/
|
|
1176
1191
|
const [draft, setDraft] = useState('');
|
|
1177
1192
|
/*
|
|
1178
|
-
* Its voice (
|
|
1193
|
+
* Its voice (VO-10, VO-11, VO-49): the microphone in the
|
|
1179
1194
|
* workspace's composer, which this view holds — the words written in it as
|
|
1180
1195
|
* they are heard. The chat speaks its answers itself (`voice` below).
|
|
1181
1196
|
*/
|
|
@@ -1292,7 +1307,7 @@ export default function ChatView({ workspace }) {
|
|
|
1292
1307
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
1293
1308
|
}, [suggestion]);
|
|
1294
1309
|
/*
|
|
1295
|
-
* An application's session checks who is calling (
|
|
1310
|
+
* An application's session checks who is calling (R-32, R-04): its
|
|
1296
1311
|
* chat says so with the person's token. The embed hands its own.
|
|
1297
1312
|
*/
|
|
1298
1313
|
/*
|
|
@@ -1300,7 +1315,7 @@ export default function ChatView({ workspace }) {
|
|
|
1300
1315
|
* whether the application's plugin is up: while its runtime does not hold
|
|
1301
1316
|
* it, its page plugin stands down (F-15), and its chat is then never sent
|
|
1302
1317
|
* to the runtime's bare agent route — on the visitors' runtime one that is
|
|
1303
|
-
* not published (
|
|
1318
|
+
* not published (D-15). It speaks to the application's session API,
|
|
1304
1319
|
* whose refusal says why.
|
|
1305
1320
|
*/
|
|
1306
1321
|
const hostCreatePayload = reactor.getConfig(AGENTS_PLUGIN_NAME)?.datalayerCreatePayload;
|
|
@@ -1309,24 +1324,24 @@ export default function ChatView({ workspace }) {
|
|
|
1309
1324
|
const deploymentUid = deploymentOfPayload(hostCreatePayload);
|
|
1310
1325
|
const memberToken = useIAMStore(state => state.token);
|
|
1311
1326
|
/*
|
|
1312
|
-
* Without an account (
|
|
1327
|
+
* Without an account (R-30) the application runs on the visitors'
|
|
1313
1328
|
* runtime, which answers a visitor's token for it and nobody signed in.
|
|
1314
1329
|
*/
|
|
1315
1330
|
const visitors = reactor.getConfig(AGENTS_PLUGIN_NAME)?.datalayerVisitors;
|
|
1316
1331
|
const visitor = useVisitorToken(visitors);
|
|
1317
1332
|
// An embedded application's own token, for a visitor the platform does
|
|
1318
|
-
// not know (
|
|
1333
|
+
// not know (R-20): it runs a session of its deployment, and no more.
|
|
1319
1334
|
const embedToken = reactor.getConfig(AGENTS_PLUGIN_NAME)?.embedToken;
|
|
1320
1335
|
const iamToken = visitors ? visitor.token : embedToken || memberToken;
|
|
1321
1336
|
/*
|
|
1322
1337
|
* Its voice asked of the speech service as this chat speaks to its runtime
|
|
1323
|
-
* (
|
|
1324
|
-
* an embed's or the person's; an embed's names its deployment
|
|
1338
|
+
* (VO-37, VO-19): the host's token, else this one — a visitor's,
|
|
1339
|
+
* an embed's or the person's; an embed's names its deployment.
|
|
1325
1340
|
*/
|
|
1326
1341
|
const askedVoice = useMemo(() => voiceAskedAs(config?.voice, iamToken || undefined), [config?.voice, iamToken]);
|
|
1327
1342
|
/*
|
|
1328
1343
|
* A deployment's runtime, and the visitors', answer only the application's
|
|
1329
|
-
* own routes (OwnRoutesOnly,
|
|
1344
|
+
* own routes (OwnRoutesOnly, the release gates): its chat calls
|
|
1330
1345
|
* nothing else — Stop is its session's, no monitoring stream, no sandbox
|
|
1331
1346
|
* socket, no runtime-wide model switch. A Preview runs on the Maker's.
|
|
1332
1347
|
*/
|
|
@@ -1335,7 +1350,7 @@ export default function ChatView({ workspace }) {
|
|
|
1335
1350
|
throw new Error('A deployment’s page runs its application: its host gave no app_spec.');
|
|
1336
1351
|
}
|
|
1337
1352
|
/*
|
|
1338
|
-
* A thread opened from the person's history (
|
|
1353
|
+
* A thread opened from the person's history (P-24): its conversation
|
|
1339
1354
|
* read from the runtime once it answers — held there, else resumed from
|
|
1340
1355
|
* its record — then drawn and gone on with on the same thread. One that
|
|
1341
1356
|
* cannot be opened is said, and a new one starts.
|
|
@@ -1436,7 +1451,7 @@ export default function ChatView({ workspace }) {
|
|
|
1436
1451
|
// server's monitoring stream fills, so the side panel and the
|
|
1437
1452
|
// composer's pulse draw an in-page delegation like any other.
|
|
1438
1453
|
onSubagentEvent: event => agentRuntimeStore.getState().appendSubagentEvent(event),
|
|
1439
|
-
// An application's modes (
|
|
1454
|
+
// An application's modes (P-19): the options sent with a
|
|
1440
1455
|
// run tell it their instructions, on the model one names, as
|
|
1441
1456
|
// its session API does on a runtime.
|
|
1442
1457
|
modeEffect: blueprintTurn?.modeEffect,
|
|
@@ -1445,14 +1460,14 @@ export default function ChatView({ workspace }) {
|
|
|
1445
1460
|
? {
|
|
1446
1461
|
type: 'ag-ui',
|
|
1447
1462
|
// An application's agent is spoken to through its session API
|
|
1448
|
-
// (
|
|
1463
|
+
// (R-04): each thread a session, recorded under its uid,
|
|
1449
1464
|
// run in the name the application runs in, and taking what the
|
|
1450
1465
|
// page did besides the message — the same AG-UI events back.
|
|
1451
1466
|
endpoint: runsApp
|
|
1452
1467
|
? `${agentServerUrl}/api/v1/apps/agents/${encodeURIComponent(agentId)}/ag-ui/`
|
|
1453
1468
|
: `${agentServerUrl}/api/v1/ag-ui/${agentId}/`,
|
|
1454
1469
|
...(runsApp && iamToken ? { authToken: iamToken } : {}),
|
|
1455
|
-
// Its session's ui channel (
|
|
1470
|
+
// Its session's ui channel (RU-W): what its answers
|
|
1456
1471
|
// show, its steps and its elements, beside the run's text.
|
|
1457
1472
|
...(runsApp
|
|
1458
1473
|
? {
|
|
@@ -1701,6 +1716,8 @@ export default function ChatView({ workspace }) {
|
|
|
1701
1716
|
// The chat's own speaker, never a second one: the microphone
|
|
1702
1717
|
// opening stops it, and *Stop speaking* while it speaks.
|
|
1703
1718
|
speaking: speaking, onStopSpeaking: () => controlsRef.current?.stopSpeaking?.(),
|
|
1719
|
+
// Barge-in gated on how loud that speaker plays (VO-13).
|
|
1720
|
+
playbackLevel: () => controlsRef.current?.voiceLevel?.() ?? 0,
|
|
1704
1721
|
// Hands-free (VO-12, VO-13): the run in progress, stopped when
|
|
1705
1722
|
// the person speaks over it, and the answer marked interrupted.
|
|
1706
1723
|
running: busy, onStopRun: () => controlsRef.current?.stop?.(), onInterrupted: () => controlsRef.current?.markInterrupted(), onInterimChange: setVoiceInterim,
|
|
@@ -1717,7 +1734,7 @@ export default function ChatView({ workspace }) {
|
|
|
1717
1734
|
/*
|
|
1718
1735
|
An application's conversation keeps none of the session's controls
|
|
1719
1736
|
under its composer — the agents, the model, the tools and their servers,
|
|
1720
|
-
the skills (
|
|
1737
|
+
the skills (T-17, T-18): a person using an application is not
|
|
1721
1738
|
choosing them, and its builder chose them in its spec. An agent's chat
|
|
1722
1739
|
keeps them.
|
|
1723
1740
|
*/
|
|
@@ -1833,8 +1850,8 @@ export default function ChatView({ workspace }) {
|
|
|
1833
1850
|
, {
|
|
1834
1851
|
// The theme it wears, when the host names one (an application's).
|
|
1835
1852
|
themeVariant: config?.themeVariant, themeOverrides: config?.themeOverrides, colorMode: config?.colorMode, thread: chatThread,
|
|
1836
|
-
// Its voice, when its host gives one (an application's
|
|
1837
|
-
//
|
|
1853
|
+
// Its voice, when its host gives one (an application's `interface.voice`, VO-49):
|
|
1854
|
+
// the microphone in the
|
|
1838
1855
|
// composer, its answers heard.
|
|
1839
1856
|
voice: askedVoice,
|
|
1840
1857
|
// The header says why, beside the title, for the same reason the
|
|
@@ -1842,7 +1859,7 @@ export default function ChatView({ workspace }) {
|
|
|
1842
1859
|
// than an absent one.
|
|
1843
1860
|
disabled: chatDisabled, disableReason: disabledReason, protocol: protocol,
|
|
1844
1861
|
/*
|
|
1845
|
-
The page's own tools — a host page's functions (
|
|
1862
|
+
The page's own tools — a host page's functions (D-10), an
|
|
1846
1863
|
example's client tool — run by this chat when the agent is on a
|
|
1847
1864
|
server: sent with each run and executed here when it calls
|
|
1848
1865
|
one. An in-page agent is handed them in its protocol instead
|
|
@@ -1888,7 +1905,7 @@ export default function ChatView({ workspace }) {
|
|
|
1888
1905
|
// Not *Ready* with no runtime: the header says why instead.
|
|
1889
1906
|
presence && !noRuntime ? (_jsx(PresenceLine, { state: presenceNow })) : undefined, emptyState: {
|
|
1890
1907
|
// An application's own face, at the page's size of the three
|
|
1891
|
-
// (
|
|
1908
|
+
// (T-08, T-19): the thing a person's eye lands on first.
|
|
1892
1909
|
icon: presence?.face ? (_jsx("span", { "aria-hidden": true, style: { fontSize: FACE_LARGE, lineHeight: 1 }, children: _jsx(FaceDrawing, { face: presence.face, size: FACE_LARGE }) })) : (_jsx(BrandIcon, { size: 48 })),
|
|
1893
1910
|
// `ChatEmptyState` reads its heading from here and nowhere
|
|
1894
1911
|
// else — the `title` above reaches the header only — so
|
|
@@ -11,7 +11,7 @@ export interface ChatPresence {
|
|
|
11
11
|
/** What it says before anyone writes. */
|
|
12
12
|
welcome?: string;
|
|
13
13
|
/**
|
|
14
|
-
* Its deployment is paused (
|
|
14
|
+
* Its deployment is paused (R-17): it says so beside its face, and
|
|
15
15
|
* its assistant dozes (T-08, T-22), whatever its last turn left behind.
|
|
16
16
|
*/
|
|
17
17
|
paused?: boolean;
|
|
@@ -25,7 +25,7 @@ export interface ChatPresence {
|
|
|
25
25
|
/**
|
|
26
26
|
* Told what it last said, and whether its newest words are an answer, as
|
|
27
27
|
* they change — for a host that says them outside the conversation, as the
|
|
28
|
-
* embed's floating chrome does in its balloon and its blink (
|
|
28
|
+
* embed's floating chrome does in its balloon and its blink (R-01).
|
|
29
29
|
* Read once, when the workspace is built: pass a stable function, such as
|
|
30
30
|
* a state setter.
|
|
31
31
|
*/
|
|
@@ -41,12 +41,12 @@ export type ChatSaid = {
|
|
|
41
41
|
export type ChatPluginConfig = {
|
|
42
42
|
/**
|
|
43
43
|
* The theme the conversation wears, by name: the person's unless said. An
|
|
44
|
-
* application says `loop` (
|
|
44
|
+
* application says `loop` (T-06, T-12) — the conversation then takes
|
|
45
45
|
* the theme's bubbles, pills and colours whatever the page around it wears.
|
|
46
46
|
*/
|
|
47
47
|
themeVariant?: string;
|
|
48
48
|
/**
|
|
49
|
-
* Laid over that theme, by mode: an application's accent (
|
|
49
|
+
* Laid over that theme, by mode: an application's accent (T-05), so
|
|
50
50
|
* that its bubbles and its one button wear its colour and not the theme's.
|
|
51
51
|
*/
|
|
52
52
|
themeOverrides?: ThemeOverrides;
|
|
@@ -58,13 +58,13 @@ export type ChatPluginConfig = {
|
|
|
58
58
|
*/
|
|
59
59
|
colorMode?: 'light' | 'dark';
|
|
60
60
|
/**
|
|
61
|
-
* Who is answering, as the person meets them (
|
|
61
|
+
* Who is answering, as the person meets them (T-08): a name, a face
|
|
62
62
|
* and a welcome, in place of the agent's id and a generic icon. An
|
|
63
63
|
* application sets its own.
|
|
64
64
|
*/
|
|
65
65
|
presence?: ChatPresence;
|
|
66
66
|
/**
|
|
67
|
-
* The conversation to go on with (
|
|
67
|
+
* The conversation to go on with (D-13): an embedded application's
|
|
68
68
|
* session, reattached after its page reloaded, and what it holds.
|
|
69
69
|
*/
|
|
70
70
|
thread?: ResumedThread;
|
|
@@ -74,7 +74,7 @@ export type ChatPluginConfig = {
|
|
|
74
74
|
*/
|
|
75
75
|
showTokenUsage?: boolean;
|
|
76
76
|
/**
|
|
77
|
-
* Its voice (
|
|
77
|
+
* Its voice (VO-10, VO-20, VO-49): a microphone in the composer,
|
|
78
78
|
* the words written in it as they are heard, and the answers said by
|
|
79
79
|
* Datalayer's speech service — an application's `interface.voice`
|
|
80
80
|
* (`chatVoiceOf`). None unless said.
|
|
@@ -86,7 +86,7 @@ export type ChatPluginConfig = {
|
|
|
86
86
|
* Configured on the plugin rather than passed to the workspace: the prompt
|
|
87
87
|
* belongs to the chat, and a shell that has no chat plugin has no prompt to
|
|
88
88
|
* put a placeholder in. A host that wants different words says so where the
|
|
89
|
-
* words are. Empty, the chat's own, in the person's language (
|
|
89
|
+
* words are. Empty, the chat's own, in the person's language (P-26).
|
|
90
90
|
*/
|
|
91
91
|
placeholder: string;
|
|
92
92
|
/**
|
|
@@ -42,10 +42,10 @@ export default function DocumentView({ workspace, }) {
|
|
|
42
42
|
undefined;
|
|
43
43
|
return (_jsx(Box, { height: "100%", minHeight: 0, children: _jsx(EphemeralDocument
|
|
44
44
|
// The entry point owns the theme; a second provider here would fight
|
|
45
|
-
// it over BaseStyles and font tokens
|
|
45
|
+
// it over BaseStyles and font tokens.
|
|
46
46
|
, {
|
|
47
47
|
// The entry point owns the theme; a second provider here would fight
|
|
48
|
-
// it over BaseStyles and font tokens
|
|
48
|
+
// it over BaseStyles and font tokens.
|
|
49
49
|
inheritTheme: true, documentId: documentId, content: opening, autoFocus: autoFocus, serviceManager: browserManager, showToolbar: toolbar.present, toolbarExtraItems: toolbar.items,
|
|
50
50
|
// Join the sandbox's kernel rather than starting a rival one.
|
|
51
51
|
kernelId: browserManager ? snapshot.kernelId : undefined, runtimeOverride: !browserManager && snapshot.jupyterUrl
|
|
@@ -166,7 +166,7 @@ export default function NotebookView({ workspace, }) {
|
|
|
166
166
|
*/
|
|
167
167
|
nbformat: opening,
|
|
168
168
|
// The entry point owns the theme; a second provider here would fight
|
|
169
|
-
// it over BaseStyles and font tokens
|
|
169
|
+
// it over BaseStyles and font tokens.
|
|
170
170
|
inheritTheme: true, notebookId: notebookId, serviceManager: browserManager,
|
|
171
171
|
// Join the sandbox's kernel rather than starting a rival one.
|
|
172
172
|
kernelId: browserManager ? snapshot.kernelId : undefined, showToolbar: toolbar.present, toolbarExtraItems: toolbar.items, runtimeOverride: !browserManager && snapshot.jupyterUrl
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* The split: the conversation and the work side by side, one hairline
|
|
3
|
-
* between them that a person drags (
|
|
3
|
+
* between them that a person drags (T-07, an Appspec's `layout: split`).
|
|
4
4
|
*
|
|
5
5
|
* The page layout's other arrangement. Where `page` puts the work on a sheet
|
|
6
6
|
* and the conversation in a panel that opens when wanted, `split` keeps both
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* *Sign in at a company*, in the chat (
|
|
2
|
+
* *Sign in at a company*, in the chat (PI-56): where the
|
|
3
3
|
* gateway's `pap_sign_in` answers, the company's page as a button opening a
|
|
4
4
|
* new tab, the code large and copyable with a code to scan for Device
|
|
5
5
|
* Sign-In, Datalayer's own page for Mediated Sign-In (where the person types
|