@datalayer/agent-runtimes 1.3.90 → 1.3.93

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (421) hide show
  1. package/dist-embed/assets/coincident.worker-Dd47v4fq.js +9 -0
  2. package/dist-embed/assets/comlink.worker-DmOp1QjG.js +9 -0
  3. package/dist-embed/datalayer-app.css +1 -0
  4. package/dist-embed/datalayer-app.js +4 -0
  5. package/dist-embed/lite-service-worker.js +91 -0
  6. package/lib/{loop → apps}/apps/AppComposer.d.ts +1 -1
  7. package/lib/{loop → apps}/apps/AppComposer.js +1 -1
  8. package/lib/{loop → apps}/apps/AppFeedback.d.ts +1 -1
  9. package/lib/{loop → apps}/apps/AppFeedback.js +12 -3
  10. package/lib/{loop → apps}/apps/AppKept.d.ts +1 -1
  11. package/lib/{loop → apps}/apps/AppRenderer.d.ts +1 -1
  12. package/lib/{loop → apps}/apps/AppRenderer.js +2 -2
  13. package/lib/{loop → apps}/apps/AppRuntimePlugins.js +1 -1
  14. package/lib/{loop → apps}/apps/agent.js +1 -1
  15. package/lib/{loop → apps}/apps/appspec.d.ts +1 -1
  16. package/lib/{loop → apps}/apps/checks.js +1 -1
  17. package/lib/{loop → apps}/apps/composer.d.ts +1 -1
  18. package/lib/{loop → apps}/apps/computer.d.ts +1 -1
  19. package/lib/{loop → apps}/apps/customComponents.js +1 -1
  20. package/lib/{loop → apps}/apps/feedback.d.ts +4 -3
  21. package/lib/{loop → apps}/apps/feedback.js +4 -2
  22. package/lib/{loop → apps}/apps/hostTools.d.ts +1 -1
  23. package/lib/{loop → apps}/apps/index.d.ts +1 -1
  24. package/lib/{loop → apps}/apps/index.js +1 -1
  25. package/lib/{loop → apps}/apps/kept.d.ts +1 -1
  26. package/lib/{loop → apps}/apps/language.d.ts +1 -1
  27. package/lib/{loop → apps}/apps/pluginPair.d.ts +1 -1
  28. package/lib/{loop → apps}/apps/records.d.ts +1 -1
  29. package/lib/{loop → apps}/apps/rules.js +1 -1
  30. package/lib/{loop → apps}/apps/saved.d.ts +1 -1
  31. package/lib/{loop → apps}/apps/saved.js +1 -1
  32. package/lib/{loop → apps}/apps/settingsInputs.d.ts +1 -1
  33. package/lib/{loop → apps}/apps/settingsInputs.js +1 -1
  34. package/lib/{loop → apps}/apps/threads.d.ts +1 -1
  35. package/lib/{loop → apps}/apps/uploads.d.ts +1 -1
  36. package/lib/{loop → apps}/apps/visitorToken.js +1 -1
  37. package/lib/{loop → apps}/apps/yaml.js +1 -1
  38. package/lib/{loop → apps}/core/a2uiComponents.js +2 -2
  39. package/lib/{loop → apps}/core/canvasBlocks.js +2 -2
  40. package/lib/{loop → apps}/core/focusRequests.js +1 -1
  41. package/lib/{loop → apps}/core/index.d.ts +19 -0
  42. package/lib/{loop → apps}/core/index.js +28 -1
  43. package/lib/{loop → apps}/core/promptStore.js +1 -1
  44. package/lib/{loop → apps}/core/surfaceRequests.d.ts +1 -1
  45. package/lib/{loop → apps}/core/toolbar.js +1 -1
  46. package/lib/{loop → apps}/embed/AppEmbed.js +1 -1
  47. package/lib/{loop → apps}/embed/LoopEmbed.d.ts +1 -1
  48. package/lib/{loop → apps}/embed/LoopEmbed.js +1 -1
  49. package/lib/{loop → apps}/embed/datalayer-app.js +1 -1
  50. package/lib/{loop → apps}/embed/element.js +1 -1
  51. package/lib/{loop → apps}/embed/embedConfig.d.ts +1 -1
  52. package/lib/{loop → apps}/embed/embedSession.d.ts +1 -1
  53. package/lib/{loop → apps}/embed/hostBridge.d.ts +1 -1
  54. package/lib/{loop → apps}/extensions.js +1 -1
  55. package/lib/{loop → apps}/index.d.ts +1 -1
  56. package/lib/{loop → apps}/index.js +1 -1
  57. package/lib/{loop → apps}/plugins/a2a-sidebar/A2ASidebar.d.ts +1 -1
  58. package/lib/{loop → apps}/plugins/a2a-sidebar/A2ASidebar.js +1 -1
  59. package/lib/{loop → apps}/plugins/a2a-sidebar/index.js +1 -1
  60. package/lib/{loop → apps}/plugins/a2ui/A2uiView.d.ts +1 -1
  61. package/lib/{loop → apps}/plugins/a2ui/index.js +1 -1
  62. package/lib/{loop → apps}/plugins/a2ui-scene/index.d.ts +1 -1
  63. package/lib/{loop → apps}/plugins/a2ui-surface/InlineSurface.d.ts +2 -2
  64. package/lib/{loop → apps}/plugins/a2ui-surface/SurfaceToolResult.d.ts +1 -1
  65. package/lib/{loop → apps}/plugins/a2ui-surface/ownComponents.js +1 -1
  66. package/lib/{loop → apps}/plugins/a2ui-surface/toolResult.d.ts +1 -1
  67. package/lib/{loop → apps}/plugins/agent-a2a/index.js +2 -2
  68. package/lib/{loop → apps}/plugins/agent-a2ui/index.js +1 -1
  69. package/lib/{loop → apps}/plugins/agent-a2ui-jupyter-output/index.js +1 -1
  70. package/lib/{loop → apps}/plugins/agent-capacity/index.d.ts +2 -2
  71. package/lib/{loop → apps}/plugins/agent-capacity/index.js +2 -2
  72. package/lib/{loop → apps}/plugins/agent-checkpoints/index.js +1 -1
  73. package/lib/{loop → apps}/plugins/agent-code-sandbox/index.js +1 -1
  74. package/lib/{loop → apps}/plugins/agent-code-sandboxes/index.js +1 -1
  75. package/lib/{loop → apps}/plugins/agent-codemode/index.js +1 -1
  76. package/lib/{loop → apps}/plugins/agent-compaction/index.js +1 -1
  77. package/lib/{loop → apps}/plugins/agent-evals/index.js +2 -2
  78. package/lib/{loop → apps}/plugins/agent-guardrails/index.js +2 -2
  79. package/lib/{loop → apps}/plugins/agent-hooks/index.js +1 -1
  80. package/lib/{loop → apps}/plugins/agent-inference/index.js +1 -1
  81. package/lib/{loop → apps}/plugins/agent-mcp/index.js +2 -2
  82. package/lib/{loop → apps}/plugins/agent-memory/index.js +2 -2
  83. package/lib/{loop → apps}/plugins/agent-monitoring/index.js +2 -2
  84. package/lib/{loop → apps}/plugins/agent-notifications/index.js +2 -2
  85. package/lib/{loop → apps}/plugins/agent-otel/index.js +1 -1
  86. package/lib/{loop → apps}/plugins/agent-outputs/index.js +1 -1
  87. package/lib/{loop → apps}/plugins/agent-parameters/index.js +2 -2
  88. package/lib/{loop → apps}/plugins/agent-skills/index.js +2 -2
  89. package/lib/{loop → apps}/plugins/agent-subagents/index.js +2 -2
  90. package/lib/{loop → apps}/plugins/agent-tool-approvals/index.js +1 -1
  91. package/lib/{loop → apps}/plugins/agent-triggers/index.js +1 -1
  92. package/lib/{loop → apps}/plugins/agents/AgentSummaryPanel.d.ts +1 -1
  93. package/lib/{loop → apps}/plugins/agents/AnonymousKeyBadge.d.ts +1 -1
  94. package/lib/{loop → apps}/plugins/agents/DatalayerAgentBridge.d.ts +1 -1
  95. package/lib/{loop → apps}/plugins/agents/DatalayerAgentMount.d.ts +1 -1
  96. package/lib/{loop → apps}/plugins/agents/SandboxSelector.d.ts +1 -1
  97. package/lib/{loop → apps}/plugins/agents/SandboxStatusBridge.d.ts +1 -1
  98. package/lib/{loop → apps}/plugins/agents/SandboxView.d.ts +1 -1
  99. package/lib/{loop → apps}/plugins/agents/TeamMemberPicker.d.ts +1 -1
  100. package/lib/{loop → apps}/plugins/agents/agentIcons.d.ts +1 -1
  101. package/lib/{loop → apps}/plugins/agents/agentIcons.js +1 -1
  102. package/lib/{loop → apps}/plugins/agents/appLaunch.d.ts +1 -1
  103. package/lib/{loop → apps}/plugins/agents/browserService.js +1 -1
  104. package/lib/{loop → apps}/plugins/agents/index.d.ts +1 -1
  105. package/lib/{loop → apps}/plugins/agents/index.js +1 -1
  106. package/lib/{loop → apps}/plugins/agents/plugin.d.ts +1 -1
  107. package/lib/{loop → apps}/plugins/agents/service.d.ts +1 -1
  108. package/lib/{loop → apps}/plugins/agents/service.js +1 -1
  109. package/lib/{loop → apps}/plugins/agents/specSubagents.d.ts +1 -1
  110. package/lib/{loop → apps}/plugins/agents/switchable.d.ts +1 -1
  111. package/lib/{loop → apps}/plugins/agents/switchable.js +1 -1
  112. package/lib/{loop → apps}/plugins/agents/team.d.ts +1 -1
  113. package/lib/{loop → apps}/plugins/agents/team.js +1 -1
  114. package/lib/{loop → apps}/plugins/agents/useSandboxService.js +1 -1
  115. package/lib/{loop → apps}/plugins/agents/useTeamSelection.js +1 -1
  116. package/lib/{loop → apps}/plugins/agentspecs/AgentspecPicker.d.ts +1 -1
  117. package/lib/{loop → apps}/plugins/agentspecs/index.js +1 -1
  118. package/lib/{loop → apps}/plugins/app-activity/AppActivity.d.ts +1 -1
  119. package/lib/{loop → apps}/plugins/app-components/index.d.ts +1 -1
  120. package/lib/{loop → apps}/plugins/app-components/index.js +1 -1
  121. package/lib/{loop → apps}/plugins/app-computer/AppComputer.d.ts +1 -1
  122. package/lib/{loop → apps}/plugins/app-computer/AppComputer.js +31 -8
  123. package/lib/{loop → apps}/plugins/app-elements/AppElements.d.ts +1 -1
  124. package/lib/{loop → apps}/plugins/app-elements/index.d.ts +1 -1
  125. package/lib/{loop → apps}/plugins/app-elements/index.js +1 -1
  126. package/lib/{loop → apps}/plugins/app-page/AppPage.d.ts +1 -1
  127. package/lib/{loop → apps}/plugins/app-page/AppPage.js +25 -7
  128. package/lib/{loop → apps}/plugins/app-page/appPageModel.d.ts +1 -1
  129. package/lib/{loop → apps}/plugins/app-page/index.d.ts +1 -1
  130. package/lib/{loop → apps}/plugins/app-page/pageRun.d.ts +1 -1
  131. package/lib/{loop → apps}/plugins/app-page/pageRun.js +1 -1
  132. package/lib/{loop → apps}/plugins/app-rules/AppRulesCard.d.ts +1 -1
  133. package/lib/{loop → apps}/plugins/assistant/index.d.ts +1 -1
  134. package/lib/{loop → apps}/plugins/assistant-characters/index.d.ts +1 -1
  135. package/lib/{loop → apps}/plugins/assistant-characters/index.js +1 -1
  136. package/lib/{loop → apps}/plugins/canvas-blocks/index.d.ts +1 -1
  137. package/lib/{loop → apps}/plugins/canvas-blocks/index.js +1 -1
  138. package/lib/{loop → apps}/plugins/chat/ChatView.d.ts +1 -1
  139. package/lib/{loop → apps}/plugins/chat/ChatView.js +49 -24
  140. package/lib/{loop → apps}/plugins/chat/chatViewTools.js +1 -1
  141. package/lib/{loop → apps}/plugins/chat/index.js +1 -1
  142. package/lib/{loop → apps}/plugins/chat/turnState.d.ts +1 -1
  143. package/lib/{loop → apps}/plugins/chat/turnState.js +1 -1
  144. package/lib/{loop → apps}/plugins/chat-extras/index.js +1 -1
  145. package/lib/{loop → apps}/plugins/chat-header/HeaderView.d.ts +1 -1
  146. package/lib/{loop → apps}/plugins/chat-view/index.js +1 -1
  147. package/lib/{loop → apps}/plugins/checkpoints-sidebar/CheckpointsSidebar.d.ts +1 -1
  148. package/lib/{loop → apps}/plugins/checkpoints-sidebar/CheckpointsSidebar.js +1 -1
  149. package/lib/{loop → apps}/plugins/checkpoints-sidebar/index.js +1 -1
  150. package/lib/{loop → apps}/plugins/commands/index.js +1 -1
  151. package/lib/{loop → apps}/plugins/decks/index.js +1 -1
  152. package/lib/{loop → apps}/plugins/decks/surface.d.ts +1 -1
  153. package/lib/{loop → apps}/plugins/decks/surface.js +1 -1
  154. package/lib/{loop → apps}/plugins/document/DocumentView.d.ts +1 -1
  155. package/lib/{loop → apps}/plugins/document/index.js +1 -1
  156. package/lib/{loop → apps}/plugins/document/openingDocument.d.ts +1 -1
  157. package/lib/{loop → apps}/plugins/document-toolbar/SandboxStatusItem.d.ts +1 -1
  158. package/lib/{loop → apps}/plugins/document-toolbar/index.js +1 -1
  159. package/lib/{loop → apps}/plugins/document-toolbar/names.d.ts +1 -1
  160. package/lib/{loop → apps}/plugins/document-toolbar/names.js +1 -1
  161. package/lib/{loop → apps}/plugins/document-toolbar/plugin.js +1 -1
  162. package/lib/{loop → apps}/plugins/document-view/index.js +1 -1
  163. package/lib/{loop → apps}/plugins/graph/GraphToggle.d.ts +1 -1
  164. package/lib/{loop → apps}/plugins/graph/GraphView.d.ts +1 -1
  165. package/lib/{loop → apps}/plugins/graph/index.js +1 -1
  166. package/lib/{loop → apps}/plugins/graph/viewType.d.ts +1 -1
  167. package/lib/{loop → apps}/plugins/graph/viewType.js +1 -1
  168. package/lib/{loop → apps}/plugins/input-prompt/ComposerView.d.ts +1 -1
  169. package/lib/{loop → apps}/plugins/models/index.js +1 -1
  170. package/lib/{loop → apps}/plugins/notebook/NotebookView.d.ts +1 -1
  171. package/lib/{loop → apps}/plugins/notebook/index.js +1 -1
  172. package/lib/{loop → apps}/plugins/notebook/openingNotebook.d.ts +1 -1
  173. package/lib/{loop → apps}/plugins/notebook-toolbar/index.js +1 -1
  174. package/lib/{loop → apps}/plugins/notebook-toolbar/names.d.ts +1 -1
  175. package/lib/{loop → apps}/plugins/notebook-toolbar/names.js +1 -1
  176. package/lib/{loop → apps}/plugins/notebook-toolbar/plugin.js +1 -1
  177. package/lib/{loop → apps}/plugins/notebook-view/index.js +1 -1
  178. package/lib/{loop → apps}/plugins/page-layout/SplitLayout.d.ts +1 -1
  179. package/lib/{loop → apps}/plugins/page-layout/SplitLayout.js +1 -1
  180. package/lib/{loop → apps}/plugins/page-layout/TurnPanel.d.ts +1 -1
  181. package/lib/{loop → apps}/plugins/page-layout/TurnPanel.js +2 -1
  182. package/lib/{loop → apps}/plugins/plugins-panel/index.js +1 -1
  183. package/lib/{loop → apps}/plugins/prompt/NewChatAction.d.ts +1 -1
  184. package/lib/{loop → apps}/plugins/prompt/index.js +1 -1
  185. package/lib/{loop → apps}/plugins/shell/editorChoice.d.ts +1 -1
  186. package/lib/{loop → apps}/plugins/shell/editorChoice.js +1 -1
  187. package/lib/{loop → apps}/plugins/shell/index.d.ts +1 -1
  188. package/lib/{loop → apps}/plugins/shell/useEditorPreviews.d.ts +1 -1
  189. package/lib/{loop → apps}/plugins/subagent-activity/SubagentPulse.d.ts +1 -1
  190. package/lib/{loop → apps}/plugins/subagent-activity/index.js +1 -1
  191. package/lib/{loop → apps}/plugins/view-switch/index.d.ts +1 -1
  192. package/lib/{loop → apps}/plugins/window-frame/WindowFrame.d.ts +1 -1
  193. package/lib/{loop → apps}/plugins/window-frame/index.js +1 -1
  194. package/lib/{loop → apps}/plugins/window-frame/slots.d.ts +1 -1
  195. package/lib/{loop → apps}/plugins/window-frame/slots.js +1 -1
  196. package/lib/{loop → apps}/presets.d.ts +1 -1
  197. package/lib/{loop → apps}/presets.js +1 -1
  198. package/lib/{loop → apps}/shell/LoopWorkspace.d.ts +1 -1
  199. package/lib/{loop → apps}/shell/PluginToggles.d.ts +1 -1
  200. package/lib/{loop → apps}/shell/SidebarRail.d.ts +1 -1
  201. package/lib/{loop → apps}/shell/ViewSwitcher.d.ts +1 -1
  202. package/lib/{loop → apps}/shell/WorkspaceFullScreenAction.d.ts +1 -1
  203. package/lib/{loop → apps}/shell/index.d.ts +1 -1
  204. package/lib/{loop → apps}/shell/index.js +1 -1
  205. package/lib/{loop → apps}/shell/paneMotion.d.ts +1 -1
  206. package/lib/{loop → apps}/shell/paneMotion.js +1 -1
  207. package/lib/{loop → apps}/shell/useWorkspaceFullScreen.d.ts +1 -1
  208. package/lib/chat/ChatLanguage.js +1 -1
  209. package/lib/chat/messages/ChatMarkdown.js +2 -1
  210. package/lib/chat/messages/markdownWithoutHtml.d.ts +34 -0
  211. package/lib/chat/messages/markdownWithoutHtml.js +53 -0
  212. package/lib/chat/parts/ReasoningPart.js +2 -1
  213. package/lib/chat/parts/TextPart.js +2 -1
  214. package/lib/chat/words.d.ts +7 -0
  215. package/lib/chat/words.js +14 -2
  216. package/lib/components/a2ui/custom/index.js +1 -3
  217. package/lib/components/a2ui/datalayer/FileUpload.js +1 -1
  218. package/lib/components/a2ui/styles.js +16 -5
  219. package/lib/components/cards/NotificationEventCard.js +2 -1
  220. package/lib/components/cards/OutputCard.js +2 -1
  221. package/lib/components/teams/AnswerSurfaces.js +1 -1
  222. package/lib/components/teams/AnswerSurfacesView.js +2 -2
  223. package/lib/components/teams/TeamNotebookView.d.ts +1 -1
  224. package/lib/components/teams/TeamNotebookView.js +1 -1
  225. package/lib/components/teams/sceneTranscript.d.ts +1 -1
  226. package/lib/examples/A2UiAgentExample.js +3 -3
  227. package/lib/examples/A2UiComponentsGalleryExample.js +2 -2
  228. package/lib/examples/A2UiContactCardExample.js +2 -2
  229. package/lib/examples/A2UiJupyterOutputExample.js +3 -3
  230. package/lib/examples/A2UiRestaurantExample.js +2 -2
  231. package/lib/examples/A2UiViewerExample.js +2 -2
  232. package/lib/examples/AgentA2AExample.js +3 -3
  233. package/lib/examples/AgentCheckpointsExample.js +3 -3
  234. package/lib/examples/AgentCodeSandboxExample.js +2 -2
  235. package/lib/examples/AgentCodeSandboxesExample.js +2 -2
  236. package/lib/examples/AgentCodemodeExample.js +3 -3
  237. package/lib/examples/AgentCompactionExample.js +2 -2
  238. package/lib/examples/AgentDecideExample.js +3 -3
  239. package/lib/examples/AgentEvalsExample.js +2 -2
  240. package/lib/examples/AgentGuardrailsExample.js +3 -3
  241. package/lib/examples/AgentHooksExample.js +2 -2
  242. package/lib/examples/AgentInferenceProviderExample.js +2 -2
  243. package/lib/examples/AgentMCPExample.js +3 -3
  244. package/lib/examples/AgentMemoryExample.js +2 -2
  245. package/lib/examples/AgentMonitoringExample.js +3 -3
  246. package/lib/examples/AgentNotificationsExample.js +2 -2
  247. package/lib/examples/AgentOtelExample.js +2 -2
  248. package/lib/examples/AgentOutputsExample.js +2 -2
  249. package/lib/examples/AgentParametersExample.js +2 -2
  250. package/lib/examples/AgentSkillsExample.js +2 -2
  251. package/lib/examples/AgentSubagentsExample.js +2 -2
  252. package/lib/examples/AgentToolApprovalsExample.js +2 -2
  253. package/lib/examples/AgentTriggersExample.js +2 -2
  254. package/lib/examples/AssistantExample.js +1 -1
  255. package/lib/examples/DecksAgent.js +2 -2
  256. package/lib/examples/DocumentPageAgent.js +1 -1
  257. package/lib/examples/LoopAppComputerExample.js +1 -1
  258. package/lib/examples/LoopShellExample.js +3 -3
  259. package/lib/examples/LoopWorkspaceExample.d.ts +1 -1
  260. package/lib/examples/LoopWorkspaceExample.js +5 -5
  261. package/lib/examples/NotebookPageAgent.js +1 -1
  262. package/lib/examples/utils/AssistantGalleryGrid.js +1 -1
  263. package/lib/examples/utils/owlCharacterPlugin.js +1 -1
  264. package/lib/index.d.ts +1 -1
  265. package/lib/index.js +1 -1
  266. package/lib/loop-example-main.js +1 -1
  267. package/lib/loop-main.js +9 -9
  268. package/lib/stories/loop/ReferenceScreens.js +1 -1
  269. package/lib/ui-plugins/MCPUIPlugin.d.ts +14 -0
  270. package/lib/ui-plugins/MCPUIPlugin.js +17 -48
  271. package/lib/ui-plugins/index.d.ts +1 -1
  272. package/lib/ui-plugins/index.js +1 -1
  273. package/package.json +3 -2
  274. /package/lib/{loop → apps}/apps/AppKept.js +0 -0
  275. /package/lib/{loop → apps}/apps/AppRuntimePlugins.d.ts +0 -0
  276. /package/lib/{loop → apps}/apps/agent.d.ts +0 -0
  277. /package/lib/{loop → apps}/apps/appspec.js +0 -0
  278. /package/lib/{loop → apps}/apps/checks.d.ts +0 -0
  279. /package/lib/{loop → apps}/apps/composer.js +0 -0
  280. /package/lib/{loop → apps}/apps/computer.js +0 -0
  281. /package/lib/{loop → apps}/apps/customComponents.d.ts +0 -0
  282. /package/lib/{loop → apps}/apps/hostTools.js +0 -0
  283. /package/lib/{loop → apps}/apps/kept.js +0 -0
  284. /package/lib/{loop → apps}/apps/language.js +0 -0
  285. /package/lib/{loop → apps}/apps/pluginPair.js +0 -0
  286. /package/lib/{loop → apps}/apps/records.js +0 -0
  287. /package/lib/{loop → apps}/apps/rules.d.ts +0 -0
  288. /package/lib/{loop → apps}/apps/threads.js +0 -0
  289. /package/lib/{loop → apps}/apps/uploads.js +0 -0
  290. /package/lib/{loop → apps}/apps/visitorToken.d.ts +0 -0
  291. /package/lib/{loop → apps}/apps/yaml.d.ts +0 -0
  292. /package/lib/{loop → apps}/core/a2uiComponents.d.ts +0 -0
  293. /package/lib/{loop → apps}/core/canvasBlocks.d.ts +0 -0
  294. /package/lib/{loop → apps}/core/focusRequests.d.ts +0 -0
  295. /package/lib/{loop → apps}/core/promptStore.d.ts +0 -0
  296. /package/lib/{loop → apps}/core/surfaceRequests.js +0 -0
  297. /package/lib/{loop → apps}/core/toolbar.d.ts +0 -0
  298. /package/lib/{loop → apps}/embed/AppEmbed.d.ts +0 -0
  299. /package/lib/{loop → apps}/embed/datalayer-app.d.ts +0 -0
  300. /package/lib/{loop → apps}/embed/element.d.ts +0 -0
  301. /package/lib/{loop → apps}/embed/embedConfig.js +0 -0
  302. /package/lib/{loop → apps}/embed/embedSession.js +0 -0
  303. /package/lib/{loop → apps}/embed/embedTheme.d.ts +0 -0
  304. /package/lib/{loop → apps}/embed/embedTheme.js +0 -0
  305. /package/lib/{loop → apps}/embed/hostBridge.js +0 -0
  306. /package/lib/{loop → apps}/extensions.d.ts +0 -0
  307. /package/lib/{loop → apps}/plugins/a2a-sidebar/index.d.ts +0 -0
  308. /package/lib/{loop → apps}/plugins/a2ui/A2uiView.js +0 -0
  309. /package/lib/{loop → apps}/plugins/a2ui/index.d.ts +0 -0
  310. /package/lib/{loop → apps}/plugins/a2ui-scene/index.js +0 -0
  311. /package/lib/{loop → apps}/plugins/a2ui-surface/InlineSurface.js +0 -0
  312. /package/lib/{loop → apps}/plugins/a2ui-surface/SurfaceToolResult.js +0 -0
  313. /package/lib/{loop → apps}/plugins/a2ui-surface/index.d.ts +0 -0
  314. /package/lib/{loop → apps}/plugins/a2ui-surface/index.js +0 -0
  315. /package/lib/{loop → apps}/plugins/a2ui-surface/ownComponents.d.ts +0 -0
  316. /package/lib/{loop → apps}/plugins/a2ui-surface/toolResult.js +0 -0
  317. /package/lib/{loop → apps}/plugins/agent-a2a/index.d.ts +0 -0
  318. /package/lib/{loop → apps}/plugins/agent-a2ui/index.d.ts +0 -0
  319. /package/lib/{loop → apps}/plugins/agent-a2ui-jupyter-output/index.d.ts +0 -0
  320. /package/lib/{loop → apps}/plugins/agent-checkpoints/index.d.ts +0 -0
  321. /package/lib/{loop → apps}/plugins/agent-code-sandbox/index.d.ts +0 -0
  322. /package/lib/{loop → apps}/plugins/agent-code-sandboxes/index.d.ts +0 -0
  323. /package/lib/{loop → apps}/plugins/agent-codemode/index.d.ts +0 -0
  324. /package/lib/{loop → apps}/plugins/agent-compaction/index.d.ts +0 -0
  325. /package/lib/{loop → apps}/plugins/agent-evals/index.d.ts +0 -0
  326. /package/lib/{loop → apps}/plugins/agent-guardrails/index.d.ts +0 -0
  327. /package/lib/{loop → apps}/plugins/agent-hooks/index.d.ts +0 -0
  328. /package/lib/{loop → apps}/plugins/agent-inference/index.d.ts +0 -0
  329. /package/lib/{loop → apps}/plugins/agent-mcp/index.d.ts +0 -0
  330. /package/lib/{loop → apps}/plugins/agent-memory/index.d.ts +0 -0
  331. /package/lib/{loop → apps}/plugins/agent-monitoring/index.d.ts +0 -0
  332. /package/lib/{loop → apps}/plugins/agent-notifications/index.d.ts +0 -0
  333. /package/lib/{loop → apps}/plugins/agent-otel/index.d.ts +0 -0
  334. /package/lib/{loop → apps}/plugins/agent-outputs/index.d.ts +0 -0
  335. /package/lib/{loop → apps}/plugins/agent-parameters/index.d.ts +0 -0
  336. /package/lib/{loop → apps}/plugins/agent-skills/index.d.ts +0 -0
  337. /package/lib/{loop → apps}/plugins/agent-subagents/index.d.ts +0 -0
  338. /package/lib/{loop → apps}/plugins/agent-tool-approvals/index.d.ts +0 -0
  339. /package/lib/{loop → apps}/plugins/agent-triggers/index.d.ts +0 -0
  340. /package/lib/{loop → apps}/plugins/agents/AgentSummaryPanel.js +0 -0
  341. /package/lib/{loop → apps}/plugins/agents/AnonymousKeyBadge.js +0 -0
  342. /package/lib/{loop → apps}/plugins/agents/DatalayerAgentBridge.js +0 -0
  343. /package/lib/{loop → apps}/plugins/agents/DatalayerAgentMount.js +0 -0
  344. /package/lib/{loop → apps}/plugins/agents/SandboxSelector.js +0 -0
  345. /package/lib/{loop → apps}/plugins/agents/SandboxStatusBridge.js +0 -0
  346. /package/lib/{loop → apps}/plugins/agents/SandboxView.js +0 -0
  347. /package/lib/{loop → apps}/plugins/agents/TeamMemberPicker.js +0 -0
  348. /package/lib/{loop → apps}/plugins/agents/appLaunch.js +0 -0
  349. /package/lib/{loop → apps}/plugins/agents/browserService.d.ts +0 -0
  350. /package/lib/{loop → apps}/plugins/agents/plugin.js +0 -0
  351. /package/lib/{loop → apps}/plugins/agents/specSubagents.js +0 -0
  352. /package/lib/{loop → apps}/plugins/agents/useSandboxService.d.ts +0 -0
  353. /package/lib/{loop → apps}/plugins/agents/useTeamSelection.d.ts +0 -0
  354. /package/lib/{loop → apps}/plugins/agentspecs/AgentspecPicker.js +0 -0
  355. /package/lib/{loop → apps}/plugins/agentspecs/index.d.ts +0 -0
  356. /package/lib/{loop → apps}/plugins/app-activity/AppActivity.js +0 -0
  357. /package/lib/{loop → apps}/plugins/app-activity/index.d.ts +0 -0
  358. /package/lib/{loop → apps}/plugins/app-activity/index.js +0 -0
  359. /package/lib/{loop → apps}/plugins/app-computer/index.d.ts +0 -0
  360. /package/lib/{loop → apps}/plugins/app-computer/index.js +0 -0
  361. /package/lib/{loop → apps}/plugins/app-elements/AppElements.js +0 -0
  362. /package/lib/{loop → apps}/plugins/app-page/appPageModel.js +0 -0
  363. /package/lib/{loop → apps}/plugins/app-page/index.js +0 -0
  364. /package/lib/{loop → apps}/plugins/app-rules/AppRulesCard.js +0 -0
  365. /package/lib/{loop → apps}/plugins/app-rules/index.d.ts +0 -0
  366. /package/lib/{loop → apps}/plugins/app-rules/index.js +0 -0
  367. /package/lib/{loop → apps}/plugins/assistant/index.js +0 -0
  368. /package/lib/{loop → apps}/plugins/chat/chatViewTools.d.ts +0 -0
  369. /package/lib/{loop → apps}/plugins/chat/index.d.ts +0 -0
  370. /package/lib/{loop → apps}/plugins/chat-extras/index.d.ts +0 -0
  371. /package/lib/{loop → apps}/plugins/chat-header/HeaderView.js +0 -0
  372. /package/lib/{loop → apps}/plugins/chat-header/index.d.ts +0 -0
  373. /package/lib/{loop → apps}/plugins/chat-header/index.js +0 -0
  374. /package/lib/{loop → apps}/plugins/chat-view/index.d.ts +0 -0
  375. /package/lib/{loop → apps}/plugins/checkpoints-sidebar/index.d.ts +0 -0
  376. /package/lib/{loop → apps}/plugins/commands/index.d.ts +0 -0
  377. /package/lib/{loop → apps}/plugins/decks/DeckSurface.d.ts +0 -0
  378. /package/lib/{loop → apps}/plugins/decks/DeckSurface.js +0 -0
  379. /package/lib/{loop → apps}/plugins/decks/DecksMenu.d.ts +0 -0
  380. /package/lib/{loop → apps}/plugins/decks/DecksMenu.js +0 -0
  381. /package/lib/{loop → apps}/plugins/decks/index.d.ts +0 -0
  382. /package/lib/{loop → apps}/plugins/document/DocumentView.js +0 -0
  383. /package/lib/{loop → apps}/plugins/document/index.d.ts +0 -0
  384. /package/lib/{loop → apps}/plugins/document/openingDocument.js +0 -0
  385. /package/lib/{loop → apps}/plugins/document-toolbar/SandboxStatusItem.js +0 -0
  386. /package/lib/{loop → apps}/plugins/document-toolbar/index.d.ts +0 -0
  387. /package/lib/{loop → apps}/plugins/document-toolbar/plugin.d.ts +0 -0
  388. /package/lib/{loop → apps}/plugins/document-view/index.d.ts +0 -0
  389. /package/lib/{loop → apps}/plugins/graph/GraphToggle.js +0 -0
  390. /package/lib/{loop → apps}/plugins/graph/GraphView.js +0 -0
  391. /package/lib/{loop → apps}/plugins/graph/index.d.ts +0 -0
  392. /package/lib/{loop → apps}/plugins/input-prompt/ComposerView.js +0 -0
  393. /package/lib/{loop → apps}/plugins/input-prompt/index.d.ts +0 -0
  394. /package/lib/{loop → apps}/plugins/input-prompt/index.js +0 -0
  395. /package/lib/{loop → apps}/plugins/models/index.d.ts +0 -0
  396. /package/lib/{loop → apps}/plugins/notebook/NotebookView.js +0 -0
  397. /package/lib/{loop → apps}/plugins/notebook/index.d.ts +0 -0
  398. /package/lib/{loop → apps}/plugins/notebook/openingNotebook.js +0 -0
  399. /package/lib/{loop → apps}/plugins/notebook-toolbar/index.d.ts +0 -0
  400. /package/lib/{loop → apps}/plugins/notebook-toolbar/items.d.ts +0 -0
  401. /package/lib/{loop → apps}/plugins/notebook-toolbar/items.js +0 -0
  402. /package/lib/{loop → apps}/plugins/notebook-toolbar/plugin.d.ts +0 -0
  403. /package/lib/{loop → apps}/plugins/notebook-view/index.d.ts +0 -0
  404. /package/lib/{loop → apps}/plugins/page-layout/index.d.ts +0 -0
  405. /package/lib/{loop → apps}/plugins/page-layout/index.js +0 -0
  406. /package/lib/{loop → apps}/plugins/plugins-panel/index.d.ts +0 -0
  407. /package/lib/{loop → apps}/plugins/prompt/NewChatAction.js +0 -0
  408. /package/lib/{loop → apps}/plugins/prompt/index.d.ts +0 -0
  409. /package/lib/{loop → apps}/plugins/shell/index.js +0 -0
  410. /package/lib/{loop → apps}/plugins/shell/useEditorPreviews.js +0 -0
  411. /package/lib/{loop → apps}/plugins/subagent-activity/SubagentPulse.js +0 -0
  412. /package/lib/{loop → apps}/plugins/subagent-activity/index.d.ts +0 -0
  413. /package/lib/{loop → apps}/plugins/view-switch/index.js +0 -0
  414. /package/lib/{loop → apps}/plugins/window-frame/WindowFrame.js +0 -0
  415. /package/lib/{loop → apps}/plugins/window-frame/index.d.ts +0 -0
  416. /package/lib/{loop → apps}/shell/LoopWorkspace.js +0 -0
  417. /package/lib/{loop → apps}/shell/PluginToggles.js +0 -0
  418. /package/lib/{loop → apps}/shell/SidebarRail.js +0 -0
  419. /package/lib/{loop → apps}/shell/ViewSwitcher.js +0 -0
  420. /package/lib/{loop → apps}/shell/WorkspaceFullScreenAction.js +0 -0
  421. /package/lib/{loop → apps}/shell/useWorkspaceFullScreen.js +0 -0
@@ -10,7 +10,7 @@
10
10
  * with it, which a landing page that lazy-loads this workspace pays for on
11
11
  * every visit. These are the names the catalogue actually uses.
12
12
  *
13
- * @module loop/plugins/agents/agentIcons
13
+ * @module apps/plugins/agents/agentIcons
14
14
  */
15
15
  import { type Icon } from '@primer/octicons-react';
16
16
  /**
@@ -14,7 +14,7 @@
14
14
  * with it, which a landing page that lazy-loads this workspace pays for on
15
15
  * every visit. These are the names the catalogue actually uses.
16
16
  *
17
- * @module loop/plugins/agents/agentIcons
17
+ * @module apps/plugins/agents/agentIcons
18
18
  */
19
19
  import { BeakerIcon, BellIcon, BookIcon, BriefcaseIcon, BrowserIcon, BugIcon, ChecklistIcon, CodeReviewIcon, ClockIcon, CodeIcon, CommentDiscussionIcon, CpuIcon, CreditCardIcon, DatabaseIcon, FileIcon, FoldIcon, GitBranchIcon, GlobeIcon, GraphIcon, HeartIcon, IssueOpenedIcon, LightBulbIcon, ListUnorderedIcon, MailIcon, MegaphoneIcon, MortarBoardIcon, NoteIcon, OrganizationIcon, PackageIcon, PencilIcon, PeopleIcon, PlayIcon, PulseIcon, RssIcon, SearchIcon, ShareAndroidIcon, ShieldCheckIcon, ShieldIcon, SlidersIcon, SunIcon, SyncIcon, TableIcon, TagIcon, TasklistIcon, TelescopeIcon, ToolsIcon, RocketIcon, ZapIcon, } from '@primer/octicons-react';
20
20
  import { AiAgentIcon } from '@datalayer/icons-react';
@@ -3,7 +3,7 @@
3
3
  *
4
4
  * Pure, so it is read without the agent hook's runtime stack.
5
5
  *
6
- * @module loop/plugins/agents/appLaunch
6
+ * @module apps/plugins/agents/appLaunch
7
7
  */
8
8
  import type { AppLaunch } from '../../../hooks/useAgentRuntimes';
9
9
  /**
@@ -16,7 +16,7 @@
16
16
  * dynamic `import()` inside `connect()`, so a workspace that never starts a
17
17
  * browser sandbox never downloads one.
18
18
  *
19
- * @module loop/plugins/agents/browserService
19
+ * @module apps/plugins/agents/browserService
20
20
  */
21
21
  import { computed, signal } from '@datalayer/reactor';
22
22
  import { PageConfig } from '@jupyterlab/coreutils';
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * `@datalayer/loop-plugin-agents` — the sandbox, owned in one place.
3
3
  *
4
- * @module loop/plugins/agents
4
+ * @module apps/plugins/agents
5
5
  */
6
6
  export { AGENTS_PLUGIN_NAME, AgentsPlugin, type AgentsConfig, type AgentsOutput, } from './plugin';
7
7
  export { AgentsPlugin as default } from './plugin';
@@ -5,7 +5,7 @@
5
5
  /**
6
6
  * `@datalayer/loop-plugin-agents` — the sandbox, owned in one place.
7
7
  *
8
- * @module loop/plugins/agents
8
+ * @module apps/plugins/agents
9
9
  */
10
10
  export { AGENTS_PLUGIN_NAME, AgentsPlugin, } from './plugin';
11
11
  export { AgentsPlugin as default } from './plugin';
@@ -13,7 +13,7 @@
13
13
  * Which agentspec the session runs is a different question, and belongs to
14
14
  * `@datalayer/loop-plugin-agentspecs`.
15
15
  *
16
- * @module loop/plugins/agents/plugin
16
+ * @module apps/plugins/agents/plugin
17
17
  */
18
18
  import type { DatalayerVisitors } from '../../apps/visitorToken';
19
19
  import type { ReactorSlotComponent } from '@datalayer/reactor/react';
@@ -11,7 +11,7 @@
11
11
  * an extension and not a component — a view can unmount without the sandbox
12
12
  * forgetting what it is doing.
13
13
  *
14
- * @module loop/plugins/agents/service
14
+ * @module apps/plugins/agents/service
15
15
  */
16
16
  import { type ReadonlySignal } from '@datalayer/reactor';
17
17
  import type { SandboxSnapshot, SandboxState } from '../../core';
@@ -15,7 +15,7 @@
15
15
  * an extension and not a component — a view can unmount without the sandbox
16
16
  * forgetting what it is doing.
17
17
  *
18
- * @module loop/plugins/agents/service
18
+ * @module apps/plugins/agents/service
19
19
  */
20
20
  import { computed, signal, } from '@datalayer/reactor';
21
21
  /**
@@ -9,7 +9,7 @@
9
9
  * showed none. This is the spec's list in the shape the browser runtime wants,
10
10
  * with a general-purpose helper when the spec asks for one.
11
11
  *
12
- * @module loop/plugins/agents/specSubagents
12
+ * @module apps/plugins/agents/specSubagents
13
13
  */
14
14
  import type { BrowserSubagent } from '../../../runtimes/browser';
15
15
  import type { Agentspec } from '../../../types';
@@ -15,7 +15,7 @@
15
15
  * switching is a real swap rather than a flag: the old backing is disconnected
16
16
  * before the new one starts, and every signal a view reads follows across.
17
17
  *
18
- * @module loop/plugins/agents/switchable
18
+ * @module apps/plugins/agents/switchable
19
19
  */
20
20
  import { type ReadonlySignal } from '@datalayer/reactor';
21
21
  import type { Kernel } from '@jupyterlab/services';
@@ -19,7 +19,7 @@
19
19
  * switching is a real swap rather than a flag: the old backing is disconnected
20
20
  * before the new one starts, and every signal a view reads follows across.
21
21
  *
22
- * @module loop/plugins/agents/switchable
22
+ * @module apps/plugins/agents/switchable
23
23
  */
24
24
  import { computed, signal, } from '@datalayer/reactor';
25
25
  import { browserSource, createBrowserSandboxService, } from './browserService';
@@ -15,7 +15,7 @@
15
15
  * is: a supervisor team routing between a tutor and a compactor needs one
16
16
  * thread both can read, and a delegation team needs the opposite.
17
17
  *
18
- * @module loop/plugins/agents/team
18
+ * @module apps/plugins/agents/team
19
19
  */
20
20
  import { type ReadonlySignal } from '@datalayer/reactor';
21
21
  import type { TeamContextSharing, TeamSpec } from '../../../types/teams';
@@ -19,7 +19,7 @@
19
19
  * is: a supervisor team routing between a tutor and a compactor needs one
20
20
  * thread both can read, and a delegation team needs the opposite.
21
21
  *
22
- * @module loop/plugins/agents/team
22
+ * @module apps/plugins/agents/team
23
23
  */
24
24
  import { computed, signal, } from '@datalayer/reactor';
25
25
  import { TEAM_SPECS } from '../../../specs/teams/teams';
@@ -10,7 +10,7 @@
10
10
  * extension graph and what lets a host swap the implementation — a JupyterLab
11
11
  * front-end backed by the running server instead of a cloud runtime.
12
12
  *
13
- * @module loop/plugins/agents/useSandboxService
13
+ * @module apps/plugins/agents/useSandboxService
14
14
  */
15
15
  import { useReactorPlatform } from '@datalayer/reactor/react';
16
16
  import { AGENTS_PLUGIN_NAME } from './plugin';
@@ -9,7 +9,7 @@
9
9
  * and whoever needs it asks the reactor rather than being handed it down a
10
10
  * prop chain that would have to pass through views that do not care.
11
11
  *
12
- * @module loop/plugins/agents/useTeamSelection
12
+ * @module apps/plugins/agents/useTeamSelection
13
13
  */
14
14
  import { useReactorPlatform } from '@datalayer/reactor/react';
15
15
  import { AGENTS_PLUGIN_NAME } from './plugin';
@@ -5,7 +5,7 @@
5
5
  * goes through `configure-from-spec` — one way to reconfigure a running agent
6
6
  * rather than two that can disagree.
7
7
  *
8
- * @module loop/plugins/agents/AgentspecPicker
8
+ * @module apps/plugins/agents/AgentspecPicker
9
9
  */
10
10
  import type { JSX } from 'react';
11
11
  import type { LoopWorkspaceContext } from '../../core';
@@ -8,7 +8,7 @@
8
8
  * The other half of the question `@datalayer/loop-plugin-agents` answers: that
9
9
  * one says *where* the agent runs, this one says *what* it is.
10
10
  *
11
- * @module loop/plugins/agents
11
+ * @module apps/plugins/agents
12
12
  */
13
13
  import { contribution, definePlugin } from '@datalayer/reactor';
14
14
  import { LoopCommand, LoopSlots } from '../../core';
@@ -5,7 +5,7 @@
5
5
  * the approvals, the answer. Read from the record ai-agents keeps (R-07),
6
6
  * again each time a turn of the conversation ends.
7
7
  *
8
- * @module loop/plugins/app-activity/AppActivity
8
+ * @module apps/plugins/app-activity/AppActivity
9
9
  */
10
10
  import type { JSX } from 'react';
11
11
  /** What the feed says. */
@@ -10,7 +10,7 @@
10
10
  * an invalid declaration — and drawn in a sandboxed frame of no origin
11
11
  * (`components/a2ui/custom`).
12
12
  *
13
- * @module loop/plugins/app-components
13
+ * @module apps/plugins/app-components
14
14
  */
15
15
  import { type ReactorPlugin } from '@datalayer/reactor';
16
16
  import type { AppSpec } from '../../../types/agentspecs';
@@ -14,7 +14,7 @@
14
14
  * an invalid declaration — and drawn in a sandboxed frame of no origin
15
15
  * (`components/a2ui/custom`).
16
16
  *
17
- * @module loop/plugins/app-components
17
+ * @module apps/plugins/app-components
18
18
  */
19
19
  import { contribution, definePlugin, } from '@datalayer/reactor';
20
20
  import { customImplementation } from '../../../components/a2ui/custom';
@@ -13,7 +13,7 @@
13
13
  * wait while the person runs code on it themselves; **Hand back** lets its
14
14
  * agent go on.
15
15
  *
16
- * @module loop/plugins/app-computer/AppComputer
16
+ * @module apps/plugins/app-computer/AppComputer
17
17
  */
18
18
  import type { JSX } from 'react';
19
19
  import type { AppSpec } from '../../../types/agentspecs';
@@ -5,7 +5,8 @@ import { Box } from '@datalayer/primer-addons';
5
5
  import { signal } from '@datalayer/reactor';
6
6
  import { useContributions, useSignalValue } from '@datalayer/reactor/react';
7
7
  import { useIAMStore } from '@datalayer/core/lib/state/substates/IAMState';
8
- import { LoopChatTurn, } from '../../core';
8
+ import { useChatWords } from '../../../chat/ChatLanguage';
9
+ import { LoopChatTurn, agentServerOf, noRuntimeSaid, IDLE_SANDBOX_SNAPSHOT, } from '../../core';
9
10
  import { COMPUTER_PARTS, COMPUTER_WORDS, computerParts, downloadComputerFile, handBackComputer, hasComputer, listComputerFiles, parentOf, partsOff, readComputer, runOnComputer, takeOverComputer, terminalEntries, } from '../../apps/computer';
10
11
  const NO_TURN = signal({ id: 0, status: 'idle' });
11
12
  const NO_CONVERSATION = signal([]);
@@ -27,7 +28,9 @@ function Terminal({ conversation, }) {
27
28
  return (_jsxs(Box, { "data-testid": "computer-terminal", children: [_jsx(Heading, { as: "h4", sx: { fontSize: 1, mt: 3, mb: 1 }, children: COMPUTER_WORDS.terminal }), entries.length === 0 ? (_jsx(Text, { as: "p", sx: { fontSize: 1, color: 'fg.muted', m: 0 }, children: COMPUTER_WORDS.nothingRan })) : (_jsx(Box, { bg: "canvas.inset", border: "1px solid", borderColor: "border.muted", borderRadius: 2, p: 2, maxHeight: 320, overflow: "auto", children: entries.map((entry, index) => (_jsxs(Box, { mb: 2, children: [_jsx(Text, { as: "p", sx: { ...MONO, fontWeight: 'semibold' }, children: `$ ${entry.tool}${entry.command ? `: ${entry.command}` : ''}` }), entry.output === undefined ? (_jsx(Spinner, { size: "small" })) : (_jsx(Text, { as: "pre", sx: { ...MONO, color: 'fg.muted' }, children: entry.output }))] }, index))) }))] }));
28
29
  }
29
30
  function save(blob, name) {
30
- const url = URL.createObjectURL(blob);
31
+ // A file of its computer is saved, never opened: its address on this page's
32
+ // origin carries no type a browser would draw (STUDIO D-22).
33
+ const url = URL.createObjectURL(new Blob([blob], { type: 'application/octet-stream' }));
31
34
  const anchor = document.createElement('a');
32
35
  anchor.href = url;
33
36
  anchor.download = name;
@@ -109,9 +112,23 @@ export function AppComputer({ app, workspace, }) {
109
112
  setEnded(turn.id);
110
113
  }
111
114
  }, [settled, turn.id]);
112
- const serverUrl = workspace?.sandbox.agentBaseUrl || workspace?.serverUrl || '';
115
+ const chatText = useChatWords();
116
+ /*
117
+ * The runtime its agent is on, or nothing while none is assigned: then the
118
+ * computer is asked nothing and says why, rather than asking the host's
119
+ * server (on a hosted page, the page's own origin). Outside a workspace
120
+ * there is none either.
121
+ */
122
+ const serverUrl = workspace
123
+ ? agentServerOf(workspace.sandbox, workspace.serverUrl)
124
+ : undefined;
125
+ const noRuntime = serverUrl === undefined
126
+ ? noRuntimeSaid(workspace?.sandbox ?? IDLE_SANDBOX_SNAPSHOT, chatText)
127
+ : undefined;
113
128
  const agentId = workspace?.agentId || app.id;
114
- const context = useMemo(() => ({ serverUrl, agentId, token: token || undefined }), [serverUrl, agentId, token]);
129
+ const context = useMemo(() => serverUrl === undefined
130
+ ? undefined
131
+ : { serverUrl, agentId, token: token || undefined }, [serverUrl, agentId, token]);
115
132
  const parts = computerParts(app);
116
133
  const [state, setState] = useState();
117
134
  const [error, setError] = useState('');
@@ -125,6 +142,9 @@ export function AppComputer({ app, workspace, }) {
125
142
  };
126
143
  }, []);
127
144
  const read = useCallback(() => {
145
+ if (!context) {
146
+ return;
147
+ }
128
148
  readComputer(context).then(found => {
129
149
  if (alive.current) {
130
150
  setState(found);
@@ -135,11 +155,14 @@ export function AppComputer({ app, workspace, }) {
135
155
  }, [context]);
136
156
  const used = hasComputer(parts);
137
157
  useEffect(() => {
138
- if (used && serverUrl) {
158
+ if (used && context) {
139
159
  read();
140
160
  }
141
- }, [used, serverUrl, read, ended]);
161
+ }, [used, context, read, ended]);
142
162
  const act = (step) => {
163
+ if (!context) {
164
+ return;
165
+ }
143
166
  setBusy(true);
144
167
  step(context).then(() => {
145
168
  if (alive.current) {
@@ -154,10 +177,10 @@ export function AppComputer({ app, workspace, }) {
154
177
  });
155
178
  };
156
179
  const me = Boolean(state?.yours);
157
- return (_jsxs(Box, { "data-testid": "app-computer", children: [_jsx(Heading, { as: "h3", sx: { fontSize: 2, mb: 2 }, children: COMPUTER_WORDS.title }), _jsx(Parts, { app: app }), !used ? (_jsx(Text, { as: "p", sx: { fontSize: 1, color: 'fg.muted', m: 0, mt: 1 }, children: COMPUTER_WORDS.none })) : (_jsxs(_Fragment, { children: [_jsx(Text, { as: "p", sx: { fontSize: 0, color: 'fg.muted', m: 0, mt: 1 }, children: COMPUTER_WORDS.noBrowser }), error ? (_jsx(Text, { as: "p", sx: { fontSize: 1, color: 'danger.fg', m: 0, mt: 2 }, children: error })) : null, state ? (_jsxs(Box, { mt: 2, "data-testid": "computer-holder", children: [_jsx(Text, { as: "p", sx: { fontSize: 1, m: 0, mb: 1 }, children: !state.held
180
+ return (_jsxs(Box, { "data-testid": "app-computer", children: [_jsx(Heading, { as: "h3", sx: { fontSize: 2, mb: 2 }, children: COMPUTER_WORDS.title }), _jsx(Parts, { app: app }), !used ? (_jsx(Text, { as: "p", sx: { fontSize: 1, color: 'fg.muted', m: 0, mt: 1 }, children: COMPUTER_WORDS.none })) : (_jsxs(_Fragment, { children: [_jsx(Text, { as: "p", sx: { fontSize: 0, color: 'fg.muted', m: 0, mt: 1 }, children: COMPUTER_WORDS.noBrowser }), noRuntime ? (_jsx(Text, { as: "p", role: "status", sx: { fontSize: 1, color: 'fg.default', m: 0, mt: 2 }, children: noRuntime })) : null, error ? (_jsx(Text, { as: "p", sx: { fontSize: 1, color: 'danger.fg', m: 0, mt: 2 }, children: error })) : null, state && context ? (_jsxs(Box, { mt: 2, "data-testid": "computer-holder", children: [_jsx(Text, { as: "p", sx: { fontSize: 1, m: 0, mb: 1 }, children: !state.held
158
181
  ? COMPUTER_WORDS.agentHas
159
182
  : me
160
183
  ? COMPUTER_WORDS.youHave
161
- : COMPUTER_WORDS.someoneHas }), !state.held ? (_jsx(Button, { size: "small", disabled: busy, onClick: () => act(takeOverComputer), children: COMPUTER_WORDS.takeOver })) : me ? (_jsxs(_Fragment, { children: [_jsx(Button, { size: "small", variant: "primary", disabled: busy, onClick: () => act(handBackComputer), children: COMPUTER_WORDS.handBack }), _jsx(YourTerminal, { context: context })] })) : null] })) : null, _jsx(Terminal, { conversation: conversation }), state ? (_jsx(Files, { context: context, state: state, ended: ended })) : null] }))] }));
184
+ : COMPUTER_WORDS.someoneHas }), !state.held ? (_jsx(Button, { size: "small", disabled: busy, onClick: () => act(takeOverComputer), children: COMPUTER_WORDS.takeOver })) : me ? (_jsxs(_Fragment, { children: [_jsx(Button, { size: "small", variant: "primary", disabled: busy, onClick: () => act(handBackComputer), children: COMPUTER_WORDS.handBack }), _jsx(YourTerminal, { context: context })] })) : null] })) : null, _jsx(Terminal, { conversation: conversation }), state && context ? (_jsx(Files, { context: context, state: state, ended: ended })) : null] }))] }));
162
185
  }
163
186
  export default AppComputer;
@@ -8,7 +8,7 @@
8
8
  * Drawn from the workspace's root slot, positioned against the workspace:
9
9
  * nothing is drawn, and nothing is laid out, while nothing is open.
10
10
  *
11
- * @module loop/plugins/app-elements/AppElements
11
+ * @module apps/plugins/app-elements/AppElements
12
12
  */
13
13
  import type { JSX } from 'react';
14
14
  import { type LoopElement } from '../../../chat/base/loopElement';
@@ -10,7 +10,7 @@
10
10
  * root slot, positioned against the workspace, so that nothing is laid out
11
11
  * while nothing is open.
12
12
  *
13
- * @module loop/plugins/app-elements
13
+ * @module apps/plugins/app-elements
14
14
  */
15
15
  import { type ReactorPlugin } from '@datalayer/reactor';
16
16
  export declare const APP_ELEMENTS_PLUGIN_NAME = "@datalayer/loop-plugin-app-elements";
@@ -14,7 +14,7 @@
14
14
  * root slot, positioned against the workspace, so that nothing is laid out
15
15
  * while nothing is open.
16
16
  *
17
- * @module loop/plugins/app-elements
17
+ * @module apps/plugins/app-elements
18
18
  */
19
19
  import { definePlugin } from '@datalayer/reactor';
20
20
  import { clearLoopElements } from '../../../chat/base/loopElement';
@@ -17,7 +17,7 @@
17
17
  * to the session's `page` action and shows what its code answered at
18
18
  * `/outputs/<name>`, in place — no message is sent (`./pageRun`).
19
19
  *
20
- * @module loop/plugins/app-page/AppPage
20
+ * @module apps/plugins/app-page/AppPage
21
21
  */
22
22
  import type { JSX } from 'react';
23
23
  import type { AppSpec } from '../../../types/agentspecs';
@@ -5,7 +5,8 @@ import { Box } from '@datalayer/primer-addons';
5
5
  import { signal } from '@datalayer/reactor';
6
6
  import { useContributions, useSignalValue } from '@datalayer/reactor/react';
7
7
  import { catalogOfBlocks } from '../../../components/a2ui';
8
- import { LoopCanvasBlock, LoopChatTurn, } from '../../core';
8
+ import { useChatWords } from '../../../chat/ChatLanguage';
9
+ import { LoopCanvasBlock, LoopChatTurn, agentServerOf, noRuntimeSaid, } from '../../core';
9
10
  import { InlineSurface, SURFACE_CATALOG_ID, } from '../a2ui-surface/InlineSurface';
10
11
  import { useOwnComponents } from '../a2ui-surface/ownComponents';
11
12
  import { appPageAction, appPageData, appPageMessages, pageInputsOf, pageOf, } from './appPageModel';
@@ -73,12 +74,25 @@ export function AppPage({ app, workspace }) {
73
74
  ...outputsData(outputs),
74
75
  }), [app, turn, conversation, outputs]);
75
76
  const token = useIAMStore(state => state.token) ?? '';
76
- const pageContext = useRef({ serverUrl: '', agentId: '' });
77
- pageContext.current = {
78
- serverUrl: workspace.sandbox?.agentBaseUrl || workspace.serverUrl || '',
79
- agentId: workspace.agentId || app.id,
80
- token: token || undefined,
81
- };
77
+ const chatText = useChatWords();
78
+ /*
79
+ * Where its page runs: the runtime its agent is on, or nothing while none
80
+ * is assigned — then a run is not sent and the page says why, rather than
81
+ * reaching for the host's server (on a hosted page, the page's own origin).
82
+ */
83
+ const pageServer = agentServerOf(workspace.sandbox, workspace.serverUrl);
84
+ const pageContext = useRef(null);
85
+ pageContext.current =
86
+ pageServer === undefined
87
+ ? null
88
+ : {
89
+ serverUrl: pageServer,
90
+ agentId: workspace.agentId || app.id,
91
+ token: token || undefined,
92
+ };
93
+ const noRuntime = useRef('');
94
+ noRuntime.current =
95
+ pageServer === undefined ? noRuntimeSaid(workspace.sandbox, chatText) : '';
82
96
  const pageSession = useRef(null);
83
97
  const pageRunning = useRef(false);
84
98
  const pageNext = useRef(null);
@@ -96,6 +110,10 @@ export function AppPage({ app, workspace }) {
96
110
  const next = pageNext.current;
97
111
  pageNext.current = null;
98
112
  const context = pageContext.current;
113
+ if (!context) {
114
+ setRefusal(noRuntime.current);
115
+ continue;
116
+ }
99
117
  try {
100
118
  pageSession.current ??= openPageSession(context);
101
119
  const turn = await runPageIn(context, await pageSession.current, next);
@@ -21,7 +21,7 @@
21
21
  *
22
22
  * Pure: the plugin (`./index`) and its view (`./AppPage`) do the drawing.
23
23
  *
24
- * @module loop/plugins/app-page/appPageModel
24
+ * @module apps/plugins/app-page/appPageModel
25
25
  */
26
26
  import type { AppFormField, AppFormSchema, AppPageSpec, AppSpec } from '../../../types/agentspecs';
27
27
  import type { ChatTurnSnapshot, ConversationEntry } from '../../core';
@@ -16,7 +16,7 @@
16
16
  * workspace's one view (`LoopViewType`), in a workspace without a
17
17
  * conversation (LOOP R-02).
18
18
  *
19
- * @module loop/plugins/app-page
19
+ * @module apps/plugins/app-page
20
20
  */
21
21
  import type { ComponentType } from 'react';
22
22
  import { type ReactorPlugin } from '@datalayer/reactor';
@@ -10,7 +10,7 @@
10
10
  * `loop.page`, `{inputs, outputs}`, which the page shows in place. Nothing is
11
11
  * said in the conversation.
12
12
  *
13
- * @module loop/plugins/app-page/pageRun
13
+ * @module apps/plugins/app-page/pageRun
14
14
  */
15
15
  /** The `CUSTOM` event that says what a page shows. */
16
16
  export declare const LOOP_PAGE = "loop.page";
@@ -14,7 +14,7 @@
14
14
  * `loop.page`, `{inputs, outputs}`, which the page shows in place. Nothing is
15
15
  * said in the conversation.
16
16
  *
17
- * @module loop/plugins/app-page/pageRun
17
+ * @module apps/plugins/app-page/pageRun
18
18
  */
19
19
  /** The `CUSTOM` event that says what a page shows. */
20
20
  export const LOOP_PAGE = 'loop.page';
@@ -8,7 +8,7 @@
8
8
  * ai-agents `/ws` stream, the Tool Approvals page's), answered here with
9
9
  * *Approve* or *Reject* over the same socket.
10
10
  *
11
- * @module loop/plugins/app-rules/AppRulesCard
11
+ * @module apps/plugins/app-rules/AppRulesCard
12
12
  */
13
13
  import type { JSX } from 'react';
14
14
  import type { AppRuleSpec, AppSpec } from '../../../types/agentspecs';
@@ -23,7 +23,7 @@
23
23
  * is opened and closed; where the conversation is always on screen, a click
24
24
  * takes the person to its composer.
25
25
  *
26
- * @module loop/plugins/assistant
26
+ * @module apps/plugins/assistant
27
27
  */
28
28
  import type { JSX } from 'react';
29
29
  import { type AssistantState } from '../../../chat/assistant/state';
@@ -3,7 +3,7 @@
3
3
  * (LOOP 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
- * @module loop/plugins/assistant-characters
6
+ * @module apps/plugins/assistant-characters
7
7
  */
8
8
  import { type PluginRef, type ReactorPlugin } from '@datalayer/reactor';
9
9
  import { type AssistantCharacter } from '../../../chat/assistant/characters';
@@ -7,7 +7,7 @@
7
7
  * (LOOP 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
- * @module loop/plugins/assistant-characters
10
+ * @module apps/plugins/assistant-characters
11
11
  */
12
12
  import { buildReactorFromPlugins, contribution, definePlugin, } from '@datalayer/reactor';
13
13
  import { ASSISTANT_CHARACTERS, DEFAULT_ASSISTANT_CHARACTER, } from '../../../chat/assistant/characters';
@@ -9,7 +9,7 @@
9
9
  * A new kind of block arrives as a plugin contributing to the point, never as
10
10
  * a change to the Canvas.
11
11
  *
12
- * @module loop/plugins/canvas-blocks
12
+ * @module apps/plugins/canvas-blocks
13
13
  */
14
14
  import { type ReactorPlatform, type ReactorPlugin } from '@datalayer/reactor';
15
15
  import type { AppSpec, ComponentSpec, UIPluginSpec } from '../../../types/agentspecs';
@@ -13,7 +13,7 @@
13
13
  * A new kind of block arrives as a plugin contributing to the point, never as
14
14
  * a change to the Canvas.
15
15
  *
16
- * @module loop/plugins/canvas-blocks
16
+ * @module apps/plugins/canvas-blocks
17
17
  */
18
18
  import { buildReactorFromPlugins, contribution, definePlugin, } from '@datalayer/reactor';
19
19
  import { listUIPlugins } from '../../../specs/uiPlugins';
@@ -13,7 +13,7 @@
13
13
  * the reply rather than one tab away — and this view holds the point they
14
14
  * arrive through without knowing what either of them is.
15
15
  *
16
- * @module loop/plugins/chat/ChatView
16
+ * @module apps/plugins/chat/ChatView
17
17
  */
18
18
  import type { JSX } from 'react';
19
19
  import { type LoopViewProps } from '../../core';