@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.
Files changed (550) hide show
  1. package/dist-embed/chunks/ChatView-D4hFmYbm.js +32 -0
  2. package/dist-embed/chunks/{DeckComponent-C7AztSPA.js → DeckComponent-y0KZOMsH.js} +1 -1
  3. package/dist-embed/chunks/{DocumentView-DwpK2feQ.js → DocumentView-BKeO-v4k.js} +1 -1
  4. package/dist-embed/chunks/{EphemeralDocument-rusBlgBp.js → EphemeralDocument-BvbG68Jm.js} +1 -1
  5. package/dist-embed/chunks/{ExcalidrawComponent-Qv9LHutW.js → ExcalidrawComponent-DeNgg0ms.js} +1 -1
  6. package/dist-embed/chunks/{ExcalidrawModal-D6Mb9nmf.js → ExcalidrawModal-X6Yh6FKI.js} +1 -1
  7. package/dist-embed/chunks/{JupyterLexicalExtension-r47Jyrrd.js → JupyterLexicalExtension-Ght2bbbp.js} +5 -5
  8. package/dist-embed/chunks/{YouTubePlugin-4pUBJORX.js → YouTubePlugin-BnaV5Sxl.js} +1 -1
  9. package/dist-embed/chunks/{ar-SA-G6X2FPQ2-CD4X_3wm.js → ar-SA-G6X2FPQ2-DFML-KO4.js} +1 -1
  10. package/dist-embed/chunks/{az-AZ-76LH7QW2-oMbKQcB-.js → az-AZ-76LH7QW2-DTzTpRpk.js} +1 -1
  11. package/dist-embed/chunks/{bg-BG-XCXSNQG7-lSIB5dDU.js → bg-BG-XCXSNQG7-DMTmzgtc.js} +1 -1
  12. package/dist-embed/chunks/{bn-BD-2XOGV67Q-B5PkHAFO.js → bn-BD-2XOGV67Q-D1xy-Djm.js} +1 -1
  13. package/dist-embed/chunks/{ca-ES-6MX7JW3Y-BPeavtUl.js → ca-ES-6MX7JW3Y-hTO_csy7.js} +1 -1
  14. package/dist-embed/chunks/{cs-CZ-2BRQDIVT-DrBOFpi4.js → cs-CZ-2BRQDIVT-DBcXv81g.js} +1 -1
  15. package/dist-embed/chunks/{da-DK-5WZEPLOC-G5bUTE3Z.js → da-DK-5WZEPLOC-Rp51nhJX.js} +1 -1
  16. package/dist-embed/chunks/{de-DE-XR44H4JA-Drpt3qDZ.js → de-DE-XR44H4JA-DIgLamrP.js} +1 -1
  17. package/dist-embed/chunks/{el-GR-BZB4AONW-D4taPxaF.js → el-GR-BZB4AONW-XWt7TL7f.js} +1 -1
  18. package/dist-embed/chunks/{es-ES-U4NZUMDT-BvIGVphk.js → es-ES-U4NZUMDT-Bh1eks-u.js} +1 -1
  19. package/dist-embed/chunks/{eu-ES-A7QVB2H4-B8nvrNDk.js → eu-ES-A7QVB2H4-Bslg2HDc.js} +1 -1
  20. package/dist-embed/chunks/{fa-IR-HGAKTJCU-hwisHoU4.js → fa-IR-HGAKTJCU-9fGOejth.js} +1 -1
  21. package/dist-embed/chunks/{fi-FI-Z5N7JZ37-DKrDvTXs.js → fi-FI-Z5N7JZ37-DctXrD-R.js} +1 -1
  22. package/dist-embed/chunks/{fr-FR-RHASNOE6-DPtlBK_j.js → fr-FR-RHASNOE6-PUSl_g5c.js} +1 -1
  23. package/dist-embed/chunks/{gl-ES-HMX3MZ6V-B1ngwQkd.js → gl-ES-HMX3MZ6V-C5hGec18.js} +1 -1
  24. package/dist-embed/chunks/{he-IL-6SHJWFNN-BaoAQZ3f.js → he-IL-6SHJWFNN-rdU3Uatf.js} +1 -1
  25. package/dist-embed/chunks/{hi-IN-IWLTKZ5I-DzPeRmLM.js → hi-IN-IWLTKZ5I-CbVBP2OS.js} +1 -1
  26. package/dist-embed/chunks/{hu-HU-A5ZG7DT2-BgLcm8oA.js → hu-HU-A5ZG7DT2-BqNM3HXj.js} +1 -1
  27. package/dist-embed/chunks/{id-ID-SAP4L64H-egIA8l8_.js → id-ID-SAP4L64H-Z7074d-A.js} +1 -1
  28. package/dist-embed/chunks/{index-cYM4KfdD.js → index-2ciQBsIP.js} +1 -1
  29. package/dist-embed/chunks/{index-CkQ6IAoY.js → index-BIbnsdGY.js} +1 -1
  30. package/dist-embed/chunks/{index-Z2pxzg3H.js → index-BP84Dsqq.js} +1 -1
  31. package/dist-embed/chunks/{index-BzMt3uYX.js → index-BdQdhGo5.js} +1 -1
  32. package/dist-embed/chunks/{index-BKB97UwL.js → index-BpX_2Evh.js} +1 -1
  33. package/dist-embed/chunks/{index-CEbnhuIo.js → index-BrPjTG8-.js} +1 -1
  34. package/dist-embed/chunks/{index-Di3aBGLV.js → index-CAPuT1O_.js} +1 -1
  35. package/dist-embed/chunks/{index-5N0EOEHV.js → index-CC3OzP1C.js} +1 -1
  36. package/dist-embed/chunks/{index-D9_026K2.js → index-COWwWw7v.js} +1 -1
  37. package/dist-embed/chunks/{index-BTdq_niO.js → index-C_IEokTU.js} +1 -1
  38. package/dist-embed/chunks/{index-_H5U6gal.js → index-CalzGdbU.js} +1 -1
  39. package/dist-embed/chunks/{index-DVaPKQyL.js → index-CynaHotU.js} +1 -1
  40. package/dist-embed/chunks/{index-Cd5CgKFr.js → index-D4zET-qQ.js} +1 -1
  41. package/dist-embed/chunks/{index-BKOQQ5Ku.js → index-DJq5Nwi9.js} +1 -1
  42. package/dist-embed/chunks/{index-CZB8DyUw.js → index-Dx_VgK3b.js} +1 -1
  43. package/dist-embed/chunks/{index-BN8Bbau-.js → index-Dzf9vro3.js} +2 -2
  44. package/dist-embed/chunks/{index-DWfzdTZo.js → index-IGJ-OsCO.js} +1 -1
  45. package/dist-embed/chunks/{index-b6e3y1R-.js → index-mjwdOWLk.js} +1 -1
  46. package/dist-embed/chunks/{index-Gngo0bXi.js → index-wuTQQ7uK.js} +1 -1
  47. package/dist-embed/chunks/{index-CCRwowMu.js → index-zOsAyJ2Z.js} +1 -1
  48. package/dist-embed/chunks/{it-IT-JPQ66NNP-DDwc6pzw.js → it-IT-JPQ66NNP-CMr44eTw.js} +1 -1
  49. package/dist-embed/chunks/{ja-JP-DBVTYXUO-TrA2khDT.js → ja-JP-DBVTYXUO-DT0NU6hE.js} +1 -1
  50. package/dist-embed/chunks/{kaa-6HZHGXH3-GwFnOAIz.js → kaa-6HZHGXH3-C7H2NR4A.js} +1 -1
  51. package/dist-embed/chunks/{kab-KAB-ZGHBKWFO-xYS1Kjfb.js → kab-KAB-ZGHBKWFO-CNMStwQY.js} +1 -1
  52. package/dist-embed/chunks/{kk-KZ-P5N5QNE5-BwDJRk5I.js → kk-KZ-P5N5QNE5-D6IFMubV.js} +1 -1
  53. package/dist-embed/chunks/{km-KH-HSX4SM5Z-Di9J-9zc.js → km-KH-HSX4SM5Z-sh4HcGEj.js} +1 -1
  54. package/dist-embed/chunks/{ko-KR-MTYHY66A-BxF1Locw.js → ko-KR-MTYHY66A-Bgk5LE7Q.js} +1 -1
  55. package/dist-embed/chunks/{ku-TR-6OUDTVRD-mGflwIcv.js → ku-TR-6OUDTVRD-CoM0o1jW.js} +1 -1
  56. package/dist-embed/chunks/{lt-LT-XHIRWOB4-DWluphZ2.js → lt-LT-XHIRWOB4-1uHPL6b-.js} +1 -1
  57. package/dist-embed/chunks/{lv-LV-5QDEKY6T-D9EEzVQ9.js → lv-LV-5QDEKY6T-DYKbCrq6.js} +1 -1
  58. package/dist-embed/chunks/{mr-IN-CRQNXWMA-DoMvP_Jp.js → mr-IN-CRQNXWMA-C7qlI0yH.js} +1 -1
  59. package/dist-embed/chunks/{my-MM-5M5IBNSE-CPPbx93K.js → my-MM-5M5IBNSE-BWSQ_5V3.js} +1 -1
  60. package/dist-embed/chunks/{nb-NO-T6EIAALU-m2hgNNww.js → nb-NO-T6EIAALU-BVQfX-Pe.js} +1 -1
  61. package/dist-embed/chunks/{nl-NL-IS3SIHDZ-B809T0Iy.js → nl-NL-IS3SIHDZ-BXjyEe9g.js} +1 -1
  62. package/dist-embed/chunks/{nn-NO-6E72VCQL-DcMxKEVg.js → nn-NO-6E72VCQL-3eaL8woM.js} +1 -1
  63. package/dist-embed/chunks/{oc-FR-POXYY2M6-BZTBaY64.js → oc-FR-POXYY2M6-CDqoITm8.js} +1 -1
  64. package/dist-embed/chunks/{pa-IN-N4M65BXN-Cs4i3fnS.js → pa-IN-N4M65BXN-CoKaIMNa.js} +1 -1
  65. package/dist-embed/chunks/{percentages-BXMCSKIN-D82iCuEy.js → percentages-BXMCSKIN-X4aF_7zv.js} +3 -3
  66. package/dist-embed/chunks/{pl-PL-T2D74RX3-B3jg7qOY.js → pl-PL-T2D74RX3-DDD5SgtT.js} +1 -1
  67. package/dist-embed/chunks/{pt-BR-5N22H2LF-aCJuloaY.js → pt-BR-5N22H2LF-BIIRVQqv.js} +1 -1
  68. package/dist-embed/chunks/{pt-PT-UZXXM6DQ-8ZZdQp1P.js → pt-PT-UZXXM6DQ-HB1n3nNc.js} +1 -1
  69. package/dist-embed/chunks/{ro-RO-JPDTUUEW-BmyO5zyl.js → ro-RO-JPDTUUEW-CDxFIF2P.js} +1 -1
  70. package/dist-embed/chunks/{ru-RU-B4JR7IUQ-BneR_2Bm.js → ru-RU-B4JR7IUQ-CM2wpzEh.js} +1 -1
  71. package/dist-embed/chunks/{si-LK-N5RQ5JYF-CDB0IyVm.js → si-LK-N5RQ5JYF-u_f-pZ4T.js} +1 -1
  72. package/dist-embed/chunks/{sk-SK-C5VTKIMK-ypZmPMe_.js → sk-SK-C5VTKIMK-1MdhriDY.js} +1 -1
  73. package/dist-embed/chunks/{sl-SI-NN7IZMDC-D9OrZXr7.js → sl-SI-NN7IZMDC-BtkaEwYy.js} +1 -1
  74. package/dist-embed/chunks/{subset-shared.chunk-cQajIUFT.js → subset-shared.chunk-Ca3xPoZL.js} +1 -1
  75. package/dist-embed/chunks/{subset-worker.chunk-DEC9qaDu.js → subset-worker.chunk-CEgJtfh9.js} +1 -1
  76. package/dist-embed/chunks/{sv-SE-XGPEYMSR-CXBRqMMZ.js → sv-SE-XGPEYMSR-CX9l-s8b.js} +1 -1
  77. package/dist-embed/chunks/{ta-IN-2NMHFXQM-BuB9HEjH.js → ta-IN-2NMHFXQM-Bs3QMZdy.js} +1 -1
  78. package/dist-embed/chunks/{th-TH-HPSO5L25-Ci7wR5dZ.js → th-TH-HPSO5L25-yCfu_zLh.js} +1 -1
  79. package/dist-embed/chunks/{tr-TR-DEFEU3FU-CEJUT8zN.js → tr-TR-DEFEU3FU-PnpIJqSm.js} +1 -1
  80. package/dist-embed/chunks/{uk-UA-QMV73CPH-Ceh5JIiD.js → uk-UA-QMV73CPH--aODafpt.js} +1 -1
  81. package/dist-embed/chunks/{url-DuKx0yk0.js → url-CzjbCo42.js} +1 -1
  82. package/dist-embed/chunks/{vi-VN-M7AON7JQ-8-R9Ohxp.js → vi-VN-M7AON7JQ-BruA8Fg-.js} +1 -1
  83. package/dist-embed/chunks/{zh-CN-LNUGB5OW-D4q5wqKm.js → zh-CN-LNUGB5OW-DtbH5pJi.js} +1 -1
  84. package/dist-embed/chunks/{zh-HK-E62DVLB3-_UiIVKpk.js → zh-HK-E62DVLB3-CPacR6Re.js} +1 -1
  85. package/dist-embed/chunks/{zh-TW-RAJ6MFWO-DyXZ-PXI.js → zh-TW-RAJ6MFWO-CImbtPSf.js} +1 -1
  86. package/dist-embed/datalayer-app-main.js +82 -82
  87. package/lib/api/runtimes/environments.d.ts +2 -2
  88. package/lib/api/runtimes/environments.js +5 -5
  89. package/lib/api/runtimes/runtimes.d.ts +7 -7
  90. package/lib/api/runtimes/runtimes.js +5 -5
  91. package/lib/apps/__tests__/fixtures/sceneCheckCases.json +1 -1
  92. package/lib/apps/apps/AppBrowserSandbox.js +1 -1
  93. package/lib/apps/apps/AppComposer.d.ts +3 -3
  94. package/lib/apps/apps/AppComposer.js +3 -3
  95. package/lib/apps/apps/AppFeedback.d.ts +1 -1
  96. package/lib/apps/apps/AppKept.d.ts +1 -1
  97. package/lib/apps/apps/AppKept.js +1 -1
  98. package/lib/apps/apps/AppRenderer.d.ts +14 -14
  99. package/lib/apps/apps/AppRenderer.js +18 -20
  100. package/lib/apps/apps/AppRuntimePlugins.js +2 -3
  101. package/lib/apps/apps/agent.js +1 -1
  102. package/lib/apps/apps/appspec.d.ts +10 -10
  103. package/lib/apps/apps/appspec.js +35 -35
  104. package/lib/apps/apps/browserSandbox.d.ts +1 -1
  105. package/lib/apps/apps/checks.d.ts +16 -7
  106. package/lib/apps/apps/checks.js +65 -21
  107. package/lib/apps/apps/composer.d.ts +2 -2
  108. package/lib/apps/apps/composer.js +1 -1
  109. package/lib/apps/apps/computer.d.ts +3 -3
  110. package/lib/apps/apps/computer.js +1 -1
  111. package/lib/apps/apps/customComponents.d.ts +2 -2
  112. package/lib/apps/apps/customComponents.js +3 -3
  113. package/lib/apps/apps/feedback.d.ts +2 -2
  114. package/lib/apps/apps/hostTools.d.ts +3 -3
  115. package/lib/apps/apps/hostTools.js +2 -2
  116. package/lib/apps/apps/kept.d.ts +1 -1
  117. package/lib/apps/apps/language.d.ts +1 -1
  118. package/lib/apps/apps/pluginPair.d.ts +1 -1
  119. package/lib/apps/apps/records.js +1 -1
  120. package/lib/apps/apps/rules.d.ts +2 -2
  121. package/lib/apps/apps/rules.js +2 -2
  122. package/lib/apps/apps/saved.d.ts +1 -1
  123. package/lib/apps/apps/saved.js +1 -1
  124. package/lib/apps/apps/sceneChecks.js +3 -3
  125. package/lib/apps/apps/sceneYaml.js +1 -1
  126. package/lib/apps/apps/sessionRules.d.ts +7 -8
  127. package/lib/apps/apps/sessionRules.js +6 -7
  128. package/lib/apps/apps/settingsInputs.d.ts +1 -1
  129. package/lib/apps/apps/settingsInputs.js +1 -1
  130. package/lib/apps/apps/threads.d.ts +2 -2
  131. package/lib/apps/apps/threads.js +1 -1
  132. package/lib/apps/apps/uploads.d.ts +1 -1
  133. package/lib/apps/apps/visitorToken.d.ts +1 -1
  134. package/lib/apps/apps/visitorToken.js +2 -2
  135. package/lib/apps/core/a2uiComponents.js +1 -2
  136. package/lib/apps/core/appFiles.js +1 -1
  137. package/lib/apps/core/canvasBlocks.d.ts +1 -1
  138. package/lib/apps/core/canvasBlocks.js +1 -1
  139. package/lib/apps/core/canvasParts.d.ts +3 -3
  140. package/lib/apps/core/canvasParts.js +1 -1
  141. package/lib/apps/core/index.d.ts +23 -13
  142. package/lib/apps/core/index.js +5 -6
  143. package/lib/apps/embed/AppEmbed.d.ts +9 -9
  144. package/lib/apps/embed/AppEmbed.js +9 -10
  145. package/lib/apps/embed/LoopEmbed.d.ts +2 -3
  146. package/lib/apps/embed/datalayer-app.js +1 -1
  147. package/lib/apps/embed/element.js +11 -11
  148. package/lib/apps/embed/embedConfig.d.ts +8 -10
  149. package/lib/apps/embed/embedConfig.js +6 -7
  150. package/lib/apps/embed/embedSession.d.ts +3 -3
  151. package/lib/apps/embed/embedSession.js +2 -2
  152. package/lib/apps/embed/embeddedSecrets.d.ts +1 -1
  153. package/lib/apps/embed/embeddedSecrets.js +1 -1
  154. package/lib/apps/embed/hostBridge.d.ts +14 -14
  155. package/lib/apps/embed/hostBridge.js +9 -9
  156. package/lib/apps/embed/loader.js +2 -2
  157. package/lib/apps/embed/visitorApp.d.ts +1 -1
  158. package/lib/apps/index.d.ts +1 -1
  159. package/lib/apps/index.js +3 -3
  160. package/lib/apps/plugins/a2ui/A2uiView.js +1 -1
  161. package/lib/apps/plugins/a2ui-surface/AnswerShows.d.ts +2 -2
  162. package/lib/apps/plugins/a2ui-surface/AnswerShows.js +1 -1
  163. package/lib/apps/plugins/a2ui-surface/InlineSurface.d.ts +1 -1
  164. package/lib/apps/plugins/a2ui-surface/SurfaceToolResult.js +2 -2
  165. package/lib/apps/plugins/a2ui-surface/index.js +1 -1
  166. package/lib/apps/plugins/a2ui-surface/ownComponents.js +1 -1
  167. package/lib/apps/plugins/a2ui-surface/toolResult.d.ts +2 -2
  168. package/lib/apps/plugins/a2ui-surface/toolResult.js +2 -2
  169. package/lib/apps/plugins/agent-capacity/index.d.ts +2 -2
  170. package/lib/apps/plugins/agents/DatalayerAgentBridge.js +4 -4
  171. package/lib/apps/plugins/agents/appLaunch.d.ts +1 -1
  172. package/lib/apps/plugins/agents/plugin.d.ts +4 -4
  173. package/lib/apps/plugins/agents/switchable.js +1 -1
  174. package/lib/apps/plugins/app-activity/AppActivity.d.ts +1 -1
  175. package/lib/apps/plugins/app-components/index.d.ts +1 -2
  176. package/lib/apps/plugins/app-components/index.js +1 -2
  177. package/lib/apps/plugins/app-computer/AppComputer.d.ts +1 -1
  178. package/lib/apps/plugins/app-computer/AppComputer.js +2 -2
  179. package/lib/apps/plugins/app-elements/AppElements.d.ts +1 -2
  180. package/lib/apps/plugins/app-elements/AppElements.js +1 -1
  181. package/lib/apps/plugins/app-elements/QuestionView.d.ts +1 -2
  182. package/lib/apps/plugins/app-elements/QuestionView.js +1 -1
  183. package/lib/apps/plugins/app-elements/index.d.ts +2 -2
  184. package/lib/apps/plugins/app-elements/index.js +2 -2
  185. package/lib/apps/plugins/app-page/AppPage.d.ts +3 -3
  186. package/lib/apps/plugins/app-page/appPageModel.d.ts +5 -5
  187. package/lib/apps/plugins/app-page/appPageModel.js +1 -1
  188. package/lib/apps/plugins/app-page/index.d.ts +3 -3
  189. package/lib/apps/plugins/app-page/index.js +1 -1
  190. package/lib/apps/plugins/app-page/pageRun.d.ts +2 -2
  191. package/lib/apps/plugins/app-page/pageRun.js +2 -2
  192. package/lib/apps/plugins/app-rules/AppRulesCard.d.ts +11 -5
  193. package/lib/apps/plugins/app-rules/AppRulesCard.js +13 -5
  194. package/lib/apps/plugins/assistant/index.d.ts +2 -2
  195. package/lib/apps/plugins/assistant-characters/index.d.ts +2 -2
  196. package/lib/apps/plugins/assistant-characters/index.js +2 -2
  197. package/lib/apps/plugins/canvas-blocks/index.d.ts +1 -1
  198. package/lib/apps/plugins/canvas-blocks/index.js +1 -1
  199. package/lib/apps/plugins/canvas-parts/index.d.ts +5 -5
  200. package/lib/apps/plugins/canvas-parts/index.js +5 -5
  201. package/lib/apps/plugins/chat/ChatView.js +54 -37
  202. package/lib/apps/plugins/chat/index.d.ts +8 -8
  203. package/lib/apps/plugins/document/DocumentView.js +2 -2
  204. package/lib/apps/plugins/notebook/NotebookView.js +1 -1
  205. package/lib/apps/plugins/page-layout/SplitLayout.d.ts +1 -1
  206. package/lib/apps/plugins/pap-sign-in/PapSignInCard.d.ts +1 -1
  207. package/lib/apps/plugins/pap-sign-in/PapSignInCard.js +1 -1
  208. package/lib/apps/plugins/pap-sign-in/index.js +1 -1
  209. package/lib/apps/plugins/pap-sign-in/signIn.d.ts +1 -1
  210. package/lib/apps/plugins/pap-sign-in/signIn.js +1 -1
  211. package/lib/apps/plugins/plugins-panel/index.d.ts +1 -1
  212. package/lib/apps/plugins/plugins-panel/index.js +1 -1
  213. package/lib/apps/plugins/shield-displays/DiffCard.d.ts +2 -2
  214. package/lib/apps/plugins/shield-displays/TerminalCard.d.ts +1 -1
  215. package/lib/apps/plugins/shield-displays/index.js +3 -3
  216. package/lib/apps/presets.d.ts +9 -9
  217. package/lib/apps/presets.js +3 -3
  218. package/lib/apps/shell/LoopWorkspace.d.ts +1 -1
  219. package/lib/apps/shell/LoopWorkspace.js +9 -1
  220. package/lib/apps/shell/PluginToggles.d.ts +1 -1
  221. package/lib/apps/shell/SidebarRail.d.ts +1 -1
  222. package/lib/apps/shell/paneMotion.d.ts +1 -1
  223. package/lib/apps/shell/paneMotion.js +1 -1
  224. package/lib/chat/ChatFloating.d.ts +8 -9
  225. package/lib/chat/ChatFloating.js +4 -4
  226. package/lib/chat/ChatInline.js +1 -1
  227. package/lib/chat/ChatLanguage.d.ts +1 -1
  228. package/lib/chat/ChatLanguage.js +1 -1
  229. package/lib/chat/assistant/AssistantContextMenu.d.ts +1 -1
  230. package/lib/chat/assistant/AssistantStage.d.ts +4 -4
  231. package/lib/chat/assistant/AssistantStage.js +1 -1
  232. package/lib/chat/assistant/BalloonParts.d.ts +1 -1
  233. package/lib/chat/assistant/BalloonVisual.d.ts +1 -1
  234. package/lib/chat/assistant/SpeechBalloon.d.ts +2 -2
  235. package/lib/chat/assistant/SpriteCharacter.d.ts +1 -1
  236. package/lib/chat/assistant/characters.d.ts +2 -2
  237. package/lib/chat/assistant/formats/acf.js +1 -1
  238. package/lib/chat/assistant/formats/files.js +1 -1
  239. package/lib/chat/assistant/formats/index.d.ts +1 -1
  240. package/lib/chat/assistant/formats/index.js +1 -1
  241. package/lib/chat/assistant/formats/types.d.ts +1 -1
  242. package/lib/chat/assistant/state.d.ts +2 -2
  243. package/lib/chat/assistant/toolLine.js +1 -1
  244. package/lib/chat/base/ChatBase.js +28 -20
  245. package/lib/chat/base/conversationItems.d.ts +3 -3
  246. package/lib/chat/base/loopElement.d.ts +2 -2
  247. package/lib/chat/base/loopStep.d.ts +3 -3
  248. package/lib/chat/base/loopStep.js +1 -1
  249. package/lib/chat/base/loopWindow.d.ts +3 -3
  250. package/lib/chat/base/loopWindow.js +3 -3
  251. package/lib/chat/base/uiFiles.d.ts +1 -1
  252. package/lib/chat/base/uiFiles.js +1 -1
  253. package/lib/chat/base/uiOps.d.ts +1 -1
  254. package/lib/chat/base/uiOps.js +1 -1
  255. package/lib/chat/index.js +1 -1
  256. package/lib/chat/indicators/McpStatusIndicator.js +1 -1
  257. package/lib/chat/indicators/SkillsStatusIndicator.js +1 -1
  258. package/lib/chat/messages/ChatMessageList.d.ts +3 -4
  259. package/lib/chat/messages/ChatMessageList.js +2 -2
  260. package/lib/chat/messages/markdownWithoutHtml.d.ts +1 -1
  261. package/lib/chat/messages/markdownWithoutHtml.js +1 -1
  262. package/lib/chat/presence/Presence.d.ts +2 -2
  263. package/lib/chat/presence/Presence.js +1 -1
  264. package/lib/chat/presence/presenceStatus.d.ts +2 -2
  265. package/lib/chat/presence/presenceStatus.js +2 -2
  266. package/lib/chat/prompt/InputPrompt.d.ts +3 -3
  267. package/lib/chat/prompt/InputPromptBase.d.ts +1 -1
  268. package/lib/chat/prompt/InputPromptBase.js +1 -1
  269. package/lib/chat/prompt/InputPromptLexical.d.ts +1 -1
  270. package/lib/chat/styles/streamdownStyles.js +1 -1
  271. package/lib/chat/useViewportDrag.d.ts +1 -1
  272. package/lib/chat/viewModes.d.ts +1 -1
  273. package/lib/chat/viewModes.js +2 -2
  274. package/lib/chat/words.js +1 -1
  275. package/lib/client/mixins/RuntimesMixin.d.ts +3 -3
  276. package/lib/client/mixins/RuntimesMixin.js +3 -3
  277. package/lib/components/a2ui/custom/index.d.ts +3 -3
  278. package/lib/components/a2ui/custom/index.js +1 -1
  279. package/lib/components/a2ui/custom/sandbox.d.ts +2 -2
  280. package/lib/components/a2ui/custom/sandbox.js +2 -2
  281. package/lib/components/a2ui/datalayer/Chart.js +2 -2
  282. package/lib/components/a2ui/datalayer/Chat.js +1 -1
  283. package/lib/components/a2ui/datalayer/Download.js +1 -1
  284. package/lib/components/a2ui/datalayer/Evidence.js +1 -1
  285. package/lib/components/a2ui/datalayer/FileUpload.d.ts +1 -1
  286. package/lib/components/a2ui/datalayer/FileUpload.js +2 -2
  287. package/lib/components/a2ui/datalayer/Form.js +2 -2
  288. package/lib/components/a2ui/datalayer/SchemaForm.d.ts +1 -1
  289. package/lib/components/a2ui/datalayer/Table.js +1 -1
  290. package/lib/components/a2ui/datalayer/drawn.d.ts +1 -1
  291. package/lib/components/a2ui/datalayer/drawn.js +1 -1
  292. package/lib/components/a2ui/datalayer/formWidgets.js +1 -1
  293. package/lib/components/a2ui/datalayer/index.d.ts +1 -1
  294. package/lib/components/a2ui/datalayer/schema.d.ts +2 -2
  295. package/lib/components/a2ui/datalayer/schema.js +2 -2
  296. package/lib/components/a2ui/styles.js +1 -1
  297. package/lib/components/a2ui/visibleWhen.d.ts +3 -3
  298. package/lib/components/a2ui/visibleWhen.js +3 -3
  299. package/lib/components/code-sandboxes/CodeSandboxEnvironmentSelect.d.ts +1 -1
  300. package/lib/components/code-sandboxes/CodeSandboxLauncher.js +1 -1
  301. package/lib/components/code-sandboxes/CodeSandboxUtils.d.ts +1 -1
  302. package/lib/components/code-sandboxes/codeSandboxEnvironments.d.ts +2 -2
  303. package/lib/components/inspector/a2aSpans.d.ts +1 -1
  304. package/lib/components/inspector/a2aSpans.js +1 -1
  305. package/lib/components/teams/A2ATeamGraph.d.ts +3 -3
  306. package/lib/components/teams/A2ATeamGraph.js +1 -3
  307. package/lib/components/teams/AnswerSurfaces.d.ts +1 -1
  308. package/lib/components/teams/NotebookPreview.d.ts +1 -1
  309. package/lib/components/teams/SceneTranscript.d.ts +1 -1
  310. package/lib/components/teams/SceneView.d.ts +1 -1
  311. package/lib/components/teams/a2aTeamFlow.d.ts +1 -1
  312. package/lib/components/teams/a2aTeamFlow.js +1 -1
  313. package/lib/components/teams/sceneStage.d.ts +1 -1
  314. package/lib/components/teams/sceneTranscript.d.ts +1 -1
  315. package/lib/components/teams/useA2ATeam.d.ts +5 -5
  316. package/lib/components/teams/useA2ATeam.js +3 -3
  317. package/lib/config/AgentConfiguration.d.ts +1 -1
  318. package/lib/examples/AssistantExample.d.ts +1 -1
  319. package/lib/examples/AssistantExample.js +1 -1
  320. package/lib/examples/AssistantGalleryExample.d.ts +1 -1
  321. package/lib/examples/AssistantGalleryExample.js +1 -1
  322. package/lib/examples/LoopAppComputerExample.d.ts +1 -1
  323. package/lib/examples/LoopAppComputerExample.js +1 -1
  324. package/lib/examples/ProtocolSignedRequestsExample.d.ts +1 -1
  325. package/lib/examples/ProtocolSignedRequestsExample.js +1 -1
  326. package/lib/examples/ProtocolUcpCheckoutExample.d.ts +1 -1
  327. package/lib/examples/ProtocolUcpCheckoutExample.js +1 -1
  328. package/lib/examples/ScenesExample.d.ts +1 -1
  329. package/lib/examples/ScenesExample.js +1 -1
  330. package/lib/examples/ShieldHarnessExample.d.ts +1 -1
  331. package/lib/examples/ShieldHarnessExample.js +1 -1
  332. package/lib/examples/ShieldPolicyExample.d.ts +1 -1
  333. package/lib/examples/ShieldPolicyExample.js +1 -1
  334. package/lib/examples/VoiceChatExample.d.ts +1 -1
  335. package/lib/examples/VoiceChatExample.js +1 -1
  336. package/lib/examples/example-selector.js +3 -3
  337. package/lib/examples/exampleGroups.js +3 -3
  338. package/lib/examples/pap/PapSignInDisplayView.d.ts +1 -1
  339. package/lib/examples/pap/PapSignInDisplayView.js +1 -1
  340. package/lib/examples/pap/papSignInCases.js +1 -1
  341. package/lib/examples/protocols/signedRequestsDemo.d.ts +1 -1
  342. package/lib/examples/protocols/signedRequestsDemo.js +1 -1
  343. package/lib/examples/protocols/ucpCheckoutDemo.d.ts +1 -1
  344. package/lib/examples/protocols/ucpCheckoutDemo.js +1 -1
  345. package/lib/examples/shield/shieldHarness.d.ts +1 -1
  346. package/lib/examples/shield/shieldPolicyDemo.d.ts +2 -2
  347. package/lib/examples/shield/shieldPolicyDemo.js +1 -1
  348. package/lib/examples/utils/assistantGallery.d.ts +1 -1
  349. package/lib/examples/utils/clippyJsCharacters.js +2 -2
  350. package/lib/examples/utils/testSpriteCharacter.js +2 -2
  351. package/lib/hooks/ownRoutes.d.ts +1 -1
  352. package/lib/hooks/useAgentRuntimes.d.ts +1 -1
  353. package/lib/hooks/useChat.js +1 -1
  354. package/lib/index.js +1 -1
  355. package/lib/loop-example-main.js +1 -1
  356. package/lib/models/Environment.d.ts +11 -11
  357. package/lib/models/Environment.js +1 -1
  358. package/lib/models/RuntimeDTO.d.ts +1 -1
  359. package/lib/portable/activity.d.ts +2 -2
  360. package/lib/portable/activity.js +3 -3
  361. package/lib/portable/adapterEvents.d.ts +1 -1
  362. package/lib/portable/agUiRefusal.d.ts +1 -1
  363. package/lib/portable/agUiRefusal.js +1 -1
  364. package/lib/portable/agui.d.ts +2 -2
  365. package/lib/portable/agui.js +2 -2
  366. package/lib/portable/approvalCard.d.ts +1 -1
  367. package/lib/portable/approvalCard.js +1 -1
  368. package/lib/portable/approvals.d.ts +2 -2
  369. package/lib/portable/approvals.js +1 -1
  370. package/lib/portable/conversation.d.ts +2 -2
  371. package/lib/portable/conversation.js +1 -1
  372. package/lib/portable/direct.d.ts +2 -2
  373. package/lib/portable/displays.d.ts +2 -2
  374. package/lib/portable/displays.js +3 -3
  375. package/lib/portable/fixtures.d.ts +4 -5
  376. package/lib/portable/fixtures.js +4 -5
  377. package/lib/portable/hosts/agentClient.d.ts +5 -6
  378. package/lib/portable/hosts/agentClient.js +7 -7
  379. package/lib/portable/hosts/approvalRenderers.d.ts +6 -7
  380. package/lib/portable/hosts/approvalRenderers.js +2 -3
  381. package/lib/portable/hosts/client.d.ts +9 -6
  382. package/lib/portable/hosts/client.js +9 -8
  383. package/lib/portable/hosts/contracts.d.ts +2 -4
  384. package/lib/portable/hosts/contracts.js +2 -4
  385. package/lib/portable/hosts/contracts.json +2 -2
  386. package/lib/portable/hosts/deadLetters.js +2 -2
  387. package/lib/portable/hosts/deliveries.d.ts +2 -3
  388. package/lib/portable/hosts/forbiddenGraph.d.ts +4 -4
  389. package/lib/portable/hosts/forbiddenGraph.js +4 -4
  390. package/lib/portable/hosts/health.d.ts +3 -4
  391. package/lib/portable/hosts/health.js +3 -4
  392. package/lib/portable/hosts/index.d.ts +1 -1
  393. package/lib/portable/hosts/index.js +1 -1
  394. package/lib/portable/hosts/observability.d.ts +1 -1
  395. package/lib/portable/hosts/observability.js +3 -4
  396. package/lib/portable/hosts/postgresQueue.d.ts +2 -2
  397. package/lib/portable/hosts/postgresQueue.js +3 -3
  398. package/lib/portable/hosts/queue.d.ts +1 -1
  399. package/lib/portable/hosts/quotas.d.ts +2 -2
  400. package/lib/portable/hosts/quotas.js +2 -2
  401. package/lib/portable/hosts/rateLimit.d.ts +1 -1
  402. package/lib/portable/hosts/resolution.d.ts +2 -2
  403. package/lib/portable/hosts/schema.d.ts +1 -1
  404. package/lib/portable/hosts/schema.js +1 -1
  405. package/lib/portable/hosts/secretCipher.d.ts +2 -2
  406. package/lib/portable/hosts/sessionUid.js +1 -2
  407. package/lib/portable/hosts/turnState.d.ts +1 -1
  408. package/lib/portable/index.js +12 -12
  409. package/lib/portable/lifecycle.d.ts +3 -3
  410. package/lib/portable/presence.d.ts +3 -3
  411. package/lib/portable/protectedInput.d.ts +1 -1
  412. package/lib/portable/records.d.ts +2 -2
  413. package/lib/portable/records.js +2 -2
  414. package/lib/portable/runMeasures.d.ts +1 -1
  415. package/lib/portable/runMeasures.js +1 -1
  416. package/lib/portable/runtimes.d.ts +1 -1
  417. package/lib/portable/semantic-events.json +1 -1
  418. package/lib/portable/semantic.d.ts +1 -1
  419. package/lib/portable/semantic.js +1 -1
  420. package/lib/portable/semanticOfAgUi.d.ts +2 -2
  421. package/lib/portable/semanticOfAgUi.js +1 -1
  422. package/lib/portable/signIn.d.ts +5 -5
  423. package/lib/portable/signIn.js +1 -1
  424. package/lib/portable/signInStatus.d.ts +1 -2
  425. package/lib/portable/signInStatus.js +1 -2
  426. package/lib/portable/thread.d.ts +2 -2
  427. package/lib/portable/thread.js +2 -2
  428. package/lib/portable/views.d.ts +5 -5
  429. package/lib/protocols/A2AAdapter.d.ts +1 -1
  430. package/lib/protocols/A2AAdapter.js +3 -3
  431. package/lib/protocols/AGUIAdapter.d.ts +1 -1
  432. package/lib/protocols/AGUIAdapter.js +2 -2
  433. package/lib/protocols/BrowserAgentAdapter.d.ts +2 -2
  434. package/lib/protocols/BrowserAgentAdapter.js +1 -1
  435. package/lib/protocols/VercelAIAdapter.js +2 -2
  436. package/lib/protocols/a2a/index.d.ts +1 -1
  437. package/lib/protocols/a2a/index.js +1 -1
  438. package/lib/protocols/agentProtocols.d.ts +1 -1
  439. package/lib/protocols/agentProtocols.js +1 -1
  440. package/lib/protocols/agentic-commerce/index.d.ts +2 -2
  441. package/lib/protocols/agentic-commerce/index.js +2 -2
  442. package/lib/protocols/commerce.d.ts +1 -1
  443. package/lib/protocols/commerce.js +3 -3
  444. package/lib/protocols/core.d.ts +3 -3
  445. package/lib/protocols/core.js +2 -2
  446. package/lib/protocols/mcp/client.js +1 -1
  447. package/lib/protocols/mcp/index.js +1 -1
  448. package/lib/protocols/pact/index.d.ts +6 -6
  449. package/lib/protocols/pact/index.js +6 -6
  450. package/lib/protocols/ucp/index.d.ts +2 -2
  451. package/lib/protocols/ucp/index.js +2 -2
  452. package/lib/protocols/ucp/merchant.js +1 -2
  453. package/lib/protocols/web-bot-auth/index.d.ts +1 -1
  454. package/lib/protocols/web-bot-auth/index.js +1 -1
  455. package/lib/protocols/web-bot-auth/tap.js +1 -1
  456. package/lib/runtimes/actions.js +2 -2
  457. package/lib/runtimes/apis.d.ts +3 -4
  458. package/lib/runtimes/browser/a2aPeer.d.ts +1 -1
  459. package/lib/runtimes/browser/a2aPeer.js +1 -1
  460. package/lib/runtimes/browser/protocol.d.ts +1 -1
  461. package/lib/runtimes/variants.d.ts +3 -3
  462. package/lib/runtimes/variants.js +4 -4
  463. package/lib/specs/agents/agents.d.ts +6 -0
  464. package/lib/specs/agents/agents.js +296 -2
  465. package/lib/specs/apps.js +28 -28
  466. package/lib/specs/appspecSchema.js +62 -62
  467. package/lib/specs/harnesses.d.ts +1 -1
  468. package/lib/specs/harnesses.js +1 -1
  469. package/lib/specs/policies.d.ts +1 -1
  470. package/lib/specs/policies.js +2 -2
  471. package/lib/specs/protocols.d.ts +1 -1
  472. package/lib/specs/sceneSchema.js +4 -4
  473. package/lib/specs/scenes.js +4 -4
  474. package/lib/specs/standards.d.ts +1 -1
  475. package/lib/specs/ui.d.ts +2 -2
  476. package/lib/specs/ui.js +1 -1
  477. package/lib/specs/uiRenderers.d.ts +1 -1
  478. package/lib/specs/voices.d.ts +2 -2
  479. package/lib/specs/voices.js +2 -2
  480. package/lib/stories/loop/ReferenceScreens.js +1 -1
  481. package/lib/stories/loop/pictures-main.js +2 -2
  482. package/lib/test-setup.js +1 -1
  483. package/lib/types/agentspecs.d.ts +81 -85
  484. package/lib/types/chat.d.ts +26 -13
  485. package/lib/types/messages.d.ts +1 -1
  486. package/lib/types/protocol.d.ts +3 -3
  487. package/lib/types/scenes.d.ts +6 -6
  488. package/lib/types/teams.d.ts +3 -3
  489. package/lib/ui-plugins/MCPUIPlugin.d.ts +2 -2
  490. package/lib/ui-plugins/MCPUIPlugin.js +1 -1
  491. package/lib/voice/ComposerVoice.d.ts +5 -3
  492. package/lib/voice/ComposerVoice.js +4 -4
  493. package/lib/voice/HandsFree.d.ts +9 -3
  494. package/lib/voice/HandsFree.js +19 -4
  495. package/lib/voice/ReadAloud.d.ts +1 -1
  496. package/lib/voice/VoiceInput.d.ts +1 -2
  497. package/lib/voice/VoiceInput.js +10 -2
  498. package/lib/voice/VoiceMenu.d.ts +1 -1
  499. package/lib/voice/captions.d.ts +1 -1
  500. package/lib/voice/captions.js +1 -1
  501. package/lib/voice/capture.d.ts +1 -1
  502. package/lib/voice/capture.js +1 -1
  503. package/lib/voice/chatVoice.d.ts +1 -1
  504. package/lib/voice/chatVoice.js +3 -3
  505. package/lib/voice/choices.d.ts +2 -2
  506. package/lib/voice/choices.js +2 -2
  507. package/lib/voice/consent.js +1 -1
  508. package/lib/voice/handsFree.d.ts +31 -4
  509. package/lib/voice/handsFree.js +34 -4
  510. package/lib/voice/hearing.d.ts +1 -1
  511. package/lib/voice/hearing.js +1 -1
  512. package/lib/voice/index.d.ts +2 -2
  513. package/lib/voice/pinned.d.ts +2 -2
  514. package/lib/voice/pinned.js +2 -2
  515. package/lib/voice/sayAloud.d.ts +2 -2
  516. package/lib/voice/sayAloud.js +2 -2
  517. package/lib/voice/sentences.d.ts +1 -1
  518. package/lib/voice/sentences.js +1 -1
  519. package/lib/voice/serverHearing.d.ts +8 -2
  520. package/lib/voice/serverHearing.js +37 -6
  521. package/lib/voice/settings.d.ts +2 -2
  522. package/lib/voice/settings.js +2 -2
  523. package/lib/voice/speaker.d.ts +10 -4
  524. package/lib/voice/speaker.js +5 -2
  525. package/lib/voice/types.d.ts +1 -1
  526. package/lib/voice/useSpokenAnswers.js +2 -2
  527. package/lib/voice/useVoiceSettings.js +1 -1
  528. package/lib/voice/useVoiceSpeaker.js +1 -1
  529. package/package.json +2 -2
  530. package/scripts/codegen/generate_agentic_commerce.sh +1 -1
  531. package/scripts/codegen/generate_agents.py +5 -5
  532. package/scripts/codegen/generate_apps.py +3 -3
  533. package/scripts/codegen/generate_harnesses.py +4 -4
  534. package/scripts/codegen/generate_mcp_servers.py +2 -2
  535. package/scripts/codegen/generate_policies.py +3 -3
  536. package/scripts/codegen/generate_protocols.py +3 -4
  537. package/scripts/codegen/generate_scenes.py +4 -4
  538. package/scripts/codegen/generate_standards.py +3 -3
  539. package/scripts/codegen/generate_teams.py +1 -1
  540. package/scripts/codegen/generate_ui.py +8 -8
  541. package/scripts/codegen/generate_ui_renderers.py +3 -3
  542. package/scripts/codegen/generate_voices.py +4 -4
  543. package/scripts/dist-embed.mjs +1 -1
  544. package/scripts/generate-environments-types.py +1 -1
  545. package/scripts/record-scene-checks.py +2 -2
  546. package/scripts/voice/measure.py +3 -3
  547. package/scripts/voice/pin_store.py +1 -1
  548. package/scripts/voice/serve_store.py +1 -1
  549. package/scripts/voice/transcribe.mjs +1 -1
  550. 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 (LOOP U-19).
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 (LOOP U-19). Answered anywhere, an
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 (LOOP R-24). */
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 (SHIELD §6.3, SH-54): what decides it now,
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?.conversationId;
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 (LOOP T-24): the character a
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 (LOOP T-23; the
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
- * (LOOP T-24, T-25): the paper clip, the wizard, the cat and the L👀P eyes.
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 (LOOP T-24, T-26): a character a
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
- * (LOOP T-24, T-25): the paper clip, the wizard, the cat and the L👀P eyes.
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 (LOOP T-24, T-26): a character a
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 (LOOP C-12): each UI plugin
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 (LOOP C-12): each UI plugin
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 (LOOP C-20): one plugin per source of
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 (SHIELD SH-43): each harness an
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 (AGENT_PROTOCOLS PS-04): a planned one offered, not enabled. */
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 (AGENTIC_UI R8): a part of the agent's
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 (AGENT_PROTOCOLS PS-05). */
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 (LOOP C-20): one plugin per source of
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 (SHIELD SH-43): each harness an
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 (AGENT_PROTOCOLS PS-04): a planned one offered, not enabled. */
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 (AGENTIC_UI R8): a part of the agent's
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 (AGENT_PROTOCOLS PS-05). */
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 (LOOP T-19, `--loop-face-large`, 72px).
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 (VOICE.md VO-10): the composer's *Stop speaking*.
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 (LOOP R-01): its balloon and its blink.
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`, STUDIO E-11): what a file given on the page is
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, LOOP P-19), read when it is sent. */
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`, LOOP R-04): the application's session takes a
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 (STUDIO E-11); to any other no file is handed — said, rather
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, LOOP P-19) goes under it —
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 (VOICE.md VO-27).
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 (LOOP P-21).
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, controlsRef.current?.thread());
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`, PAP_DATALAYER
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 (LOOP H-01).
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
- // LOOP P-20) wins over what was contributed when the reactor was built.
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 (REACTOR_UI RU-7:
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 (LOOP P-19). Picking one writes `/<name> `, and the
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 (LOOP R-27) is switched off with the reason, by the
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 (STUDIO P-24,
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 (VOICE.md VO-10, VO-11, VO-49): the microphone in the
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 (LOOP R-32, R-04): its
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 (STUDIO D-15). It speaks to the application's session API,
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 (LOOP R-30) the application runs on the visitors'
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 (LOOP R-20): it runs a session of its deployment, and no more.
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
- * (VOICE.md VO-37, VO-19): the host's token, else this one — a visitor's,
1324
- * an embed's or the person's; an embed's names its deployment (decision 16).
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, PAP_DATALAYER's release gates): its chat calls
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 (LOOP P-24): its conversation
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 (LOOP P-19): the options sent with a
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
- // (LOOP R-04): each thread a session, recorded under its uid,
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 (REACTOR_UI RU-W): what its answers
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 (LOOP T-17, T-18): a person using an application is not
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
- // `interface.voice`, VOICE.md VO-49): the microphone in the
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 (LOOP D-10), an
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
- // (LOOP T-08, T-19): the thing a person's eye lands on first.
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 (LOOP R-17): it says so beside its face, and
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 (LOOP R-01).
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` (LOOP T-06, T-12) — the conversation then takes
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 (LOOP T-05), so
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 (LOOP T-08): a name, a face
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 (LOOP D-13): an embedded application's
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 (VOICE.md VO-10, VO-20, VO-49): a microphone in the composer,
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 (LOOP P-26).
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 (§3.5, §3.6).
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 (§3.5, §3.6).
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 (§3.5, §3.6).
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 (LOOP T-07, an Appspec's `layout: split`).
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 (AGENT_PROTOCOLS PI-56): where the
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