@schlenkr/ragents 0.1.9 → 0.1.11

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 (749) hide show
  1. package/apps/server/package.json +1 -1
  2. package/apps/server/src/access-projection.ts +9 -39
  3. package/apps/server/src/access-service.ts +3 -3
  4. package/apps/server/src/access-session.ts +19 -19
  5. package/apps/server/src/api/contracts.ts +32 -29
  6. package/apps/server/src/api/core-methods.ts +21 -19
  7. package/apps/server/src/api/delivery.ts +2 -2
  8. package/apps/server/src/api/reference.ts +27 -27
  9. package/apps/server/src/api/rights.ts +18 -18
  10. package/apps/server/src/chat-handler.ts +5 -5
  11. package/apps/server/src/config-definition.ts +37 -10
  12. package/apps/server/src/config-file.ts +49 -49
  13. package/apps/server/src/config.ts +2 -0
  14. package/apps/server/src/data-directory.ts +2 -2
  15. package/apps/server/src/external-access.ts +1 -1
  16. package/apps/server/src/folder-install.ts +1 -1
  17. package/apps/server/src/help-files.ts +1 -1
  18. package/apps/server/src/host-api.json +8 -1
  19. package/apps/server/src/host-api.ts +3 -2
  20. package/apps/server/src/host-record.ts +3 -3
  21. package/apps/server/src/host-resolution-hooks.mjs +4 -4
  22. package/apps/server/src/host-version.ts +17 -17
  23. package/apps/server/src/host-web.ts +5 -5
  24. package/apps/server/src/main.ts +6 -6
  25. package/apps/server/src/missing-environment.ts +6 -6
  26. package/apps/server/src/parent-watch.ts +4 -4
  27. package/apps/server/src/plugin-build/build.ts +31 -31
  28. package/apps/server/src/plugin-build/host-api-names.ts +7 -7
  29. package/apps/server/src/plugin-build/plugin-description.ts +15 -15
  30. package/apps/server/src/plugin-build/typecheck.ts +1 -1
  31. package/apps/server/src/plugin-support/actor-programs/app-project.ts +19 -19
  32. package/apps/server/src/plugin-support/actor-programs/client-compiler.ts +4 -4
  33. package/apps/server/src/plugin-support/actor-programs/client-contracts.ts +11 -11
  34. package/apps/server/src/plugin-support/actor-programs/contract.ts +17 -17
  35. package/apps/server/src/plugin-support/actor-programs/runtime-libraries.ts +1 -1
  36. package/apps/server/src/plugin-support/actor-programs/workflow/index.ts +5 -5
  37. package/apps/server/src/plugin-support/actor-programs/workflow/prompt-reader.ts +2 -2
  38. package/apps/server/src/plugin-support/chat-display-policy.ts +2 -2
  39. package/apps/server/src/plugin-support/front-matter.ts +6 -6
  40. package/apps/server/src/plugin-support/http.ts +2 -2
  41. package/apps/server/src/plugin-support/language-server/contract.ts +8 -8
  42. package/apps/server/src/plugin-support/language-server/plugin.ts +2 -2
  43. package/apps/server/src/plugin-support/language-server/snapshot-method.ts +1 -1
  44. package/apps/server/src/plugin-support/language-server/tools.ts +11 -11
  45. package/apps/server/src/plugin-support/model-aliases.ts +30 -20
  46. package/apps/server/src/plugin-support/model-choice.ts +15 -15
  47. package/apps/server/src/plugin-support/model-completion.ts +44 -23
  48. package/apps/server/src/plugin-support/model-providers.ts +170 -0
  49. package/apps/server/src/plugin-support/model-upstreams.ts +1 -1
  50. package/apps/server/src/plugin-support/native-typescript-child.ts +4 -4
  51. package/apps/server/src/plugin-support/native-typescript-executor.ts +12 -12
  52. package/apps/server/src/plugin-support/plugin-config.ts +3 -3
  53. package/apps/server/src/plugin-support/plugin-folder.ts +2 -2
  54. package/apps/server/src/plugin-support/plugins-root.ts +2 -2
  55. package/apps/server/src/plugin-support/process-sandbox.ts +48 -47
  56. package/apps/server/src/plugin-support/product-model-settings-contract.ts +3 -3
  57. package/apps/server/src/plugin-support/product-model-settings.ts +10 -10
  58. package/apps/server/src/plugin-support/product-relay.ts +9 -9
  59. package/apps/server/src/plugin-support/product-start-options.ts +4 -4
  60. package/apps/server/src/plugin-support/prompt.ts +1 -1
  61. package/apps/server/src/plugin-support/provision.ts +8 -8
  62. package/apps/server/src/plugin-support/run-scripts.ts +17 -17
  63. package/apps/server/src/plugin-support/skills.ts +18 -18
  64. package/apps/server/src/plugin-support/start-entries-contract.ts +17 -17
  65. package/apps/server/src/plugin-support/start-options-contract.ts +5 -5
  66. package/apps/server/src/plugin-support/system-prompts.ts +11 -11
  67. package/apps/server/src/plugin-support/thinking-level.ts +2 -2
  68. package/apps/server/src/plugin-support/tool-availability.ts +2 -2
  69. package/apps/server/src/plugin-support/workspace-ownership.ts +5 -5
  70. package/apps/server/src/plugin-support/workspace-sandbox-host.ts +37 -37
  71. package/apps/server/src/plugin-support/zip.ts +7 -7
  72. package/apps/server/src/profile/bundle-manifest.ts +17 -17
  73. package/apps/server/src/profile/compose.ts +12 -7
  74. package/apps/server/src/profile/plugin-discovery.ts +12 -12
  75. package/apps/server/src/profile/provisioning.ts +5 -5
  76. package/apps/server/src/profile-target.ts +10 -10
  77. package/apps/server/src/protocol.ts +2 -2
  78. package/apps/server/src/provider.ts +63 -58
  79. package/apps/server/src/ragents/actor-chat-history.ts +8 -8
  80. package/apps/server/src/ragents/chat-text-positions.ts +2 -2
  81. package/apps/server/src/ragents/coordinator.ts +2 -2
  82. package/apps/server/src/ragents/engine.ts +25 -24
  83. package/apps/server/src/ragents/global-chat.ts +14 -8
  84. package/apps/server/src/ragents/host-services.ts +6 -3
  85. package/apps/server/src/ragents/journal-chat-events.ts +1 -1
  86. package/apps/server/src/ragents/run-owner.ts +2 -2
  87. package/apps/server/src/ragents/session.ts +49 -49
  88. package/apps/server/src/ragents/typescript-tools.ts +12 -12
  89. package/apps/server/src/ragents/workspace-runtime.ts +28 -28
  90. package/apps/server/src/rpc/dispatcher.ts +19 -19
  91. package/apps/server/src/rpc/http-transport.ts +11 -11
  92. package/apps/server/src/rpc/stdio-transport.ts +3 -3
  93. package/apps/server/src/run-preparation-input.ts +5 -5
  94. package/apps/server/src/run-preparation.ts +24 -24
  95. package/apps/server/src/run-transfer.ts +39 -39
  96. package/apps/server/src/server.ts +51 -49
  97. package/apps/server/src/settings.ts +1 -1
  98. package/apps/server/src/startup.ts +3 -3
  99. package/apps/server/src/title-compactor.ts +9 -9
  100. package/apps/server/src/title-settings.ts +3 -3
  101. package/apps/server/src/web-bundles.ts +2 -2
  102. package/apps/server/src/web-stylesheet.ts +2 -2
  103. package/apps/web/dist/assets/{highlighted-body-KPVGNVTW-xXXhTDbh.js → highlighted-body-KPVGNVTW-BfNSGxjB.js} +1 -1
  104. package/apps/web/dist/assets/main-D6bsKcIK.js +11 -0
  105. package/apps/web/dist/assets/mermaid-HWGCJPDP-DROEqEeg.js +608 -0
  106. package/apps/web/dist/assets/runPanel-Dumuuqry.js +21 -0
  107. package/apps/web/dist/help/guide-access.html +5 -5
  108. package/apps/web/dist/help/guide-access.md +2 -2
  109. package/apps/web/dist/help/guide-clients.html +64 -55
  110. package/apps/web/dist/help/guide-clients.md +62 -52
  111. package/apps/web/dist/help/guide-distributed.html +12 -7
  112. package/apps/web/dist/help/guide-distributed.md +9 -4
  113. package/apps/web/dist/help/guide-functions.html +3 -3
  114. package/apps/web/dist/help/guide-getting-started.html +24 -15
  115. package/apps/web/dist/help/guide-getting-started.md +22 -12
  116. package/apps/web/dist/help/guide-ideas.html +3 -3
  117. package/apps/web/dist/help/guide-plugins.html +5 -4
  118. package/apps/web/dist/help/guide-plugins.md +2 -1
  119. package/apps/web/dist/help/guide-programs.html +3 -3
  120. package/apps/web/dist/help/guide-runtime.html +6 -6
  121. package/apps/web/dist/help/guide-runtime.md +3 -3
  122. package/apps/web/dist/help/guide.html +3 -3
  123. package/apps/web/dist/help/index.html +1997 -942
  124. package/apps/web/dist/help/mini-app.css +30 -0
  125. package/apps/web/dist/help/mini-app.js +14 -14
  126. package/apps/web/dist/host-web.json +90 -90
  127. package/apps/web/dist/index.html +3 -3
  128. package/apps/web/dist/run-panel.html +3 -3
  129. package/apps/web/package.json +1 -1
  130. package/apps/web/src/AccessContext.tsx +15 -15
  131. package/apps/web/src/App.tsx +13 -13
  132. package/apps/web/src/DiffCode.tsx +2 -2
  133. package/apps/web/src/HelpDialog.tsx +3 -3
  134. package/apps/web/src/Overview.tsx +13 -13
  135. package/apps/web/src/PluginActivation.ts +1 -1
  136. package/apps/web/src/PluginChat.tsx +15 -15
  137. package/apps/web/src/PluginFailureNotice.tsx +1 -1
  138. package/apps/web/src/PluginRegistry.tsx +44 -44
  139. package/apps/web/src/RunPreparationChat.tsx +11 -11
  140. package/apps/web/src/RunStore.ts +1 -1
  141. package/apps/web/src/SessionList.tsx +14 -14
  142. package/apps/web/src/SettingsModal.tsx +112 -112
  143. package/apps/web/src/StartOptions.tsx +11 -11
  144. package/apps/web/src/StartSelection.tsx +11 -11
  145. package/apps/web/src/StartTiles.tsx +8 -8
  146. package/apps/web/src/SurfaceShortcuts.tsx +3 -3
  147. package/apps/web/src/ThemeSettings.tsx +8 -8
  148. package/apps/web/src/TitleModelSettings.tsx +13 -13
  149. package/apps/web/src/WorkspacePanel.tsx +9 -9
  150. package/apps/web/src/access-session.ts +4 -4
  151. package/apps/web/src/access-token.ts +5 -5
  152. package/apps/web/src/actor-conversation.ts +3 -3
  153. package/apps/web/src/actor-programs/client-ui/DataTable.tsx +8 -8
  154. package/apps/web/src/actor-programs/client-ui/FilePicker.tsx +4 -4
  155. package/apps/web/src/actor-programs/client-ui/FlowDiagram.tsx +13 -13
  156. package/apps/web/src/actor-programs/client-ui/Viewers.tsx +4 -4
  157. package/apps/web/src/actor-programs/client-ui/WorkflowDiagram.tsx +1 -1
  158. package/apps/web/src/actor-programs/client-ui/file-contracts.d.ts +4 -4
  159. package/apps/web/src/actor-programs/client-ui/file-selection.ts +1 -1
  160. package/apps/web/src/actor-programs/client-ui/viewer-contracts.d.ts +3 -3
  161. package/apps/web/src/api.ts +7 -7
  162. package/apps/web/src/chat/StoppedActorNotice.tsx +5 -5
  163. package/apps/web/src/chat/chat-target.ts +3 -3
  164. package/apps/web/src/chat/requests.ts +2 -2
  165. package/apps/web/src/chat/useAttachmentCapabilities.ts +2 -2
  166. package/apps/web/src/chat-view-settings.tsx +5 -6
  167. package/apps/web/src/diff-view.css +1 -1
  168. package/apps/web/src/highlighting.css +1 -1
  169. package/apps/web/src/language-server/language-server-plugin.tsx +30 -30
  170. package/apps/web/src/lib/labels.ts +6 -6
  171. package/apps/web/src/main.tsx +4 -4
  172. package/apps/web/src/offered-machines.ts +2 -2
  173. package/apps/web/src/page-opener.tsx +1 -1
  174. package/apps/web/src/panel/ConnectionsPage.tsx +26 -23
  175. package/apps/web/src/panel/LoginForm.tsx +6 -6
  176. package/apps/web/src/panel/PanelDialogs.tsx +22 -22
  177. package/apps/web/src/panel/PanelHeader.tsx +2 -2
  178. package/apps/web/src/panel/PanelPage.tsx +1 -1
  179. package/apps/web/src/panel/RunLine.tsx +4 -4
  180. package/apps/web/src/panel/RunsPage.tsx +15 -15
  181. package/apps/web/src/panel/StartPage.tsx +29 -26
  182. package/apps/web/src/panel/connection-state.ts +9 -9
  183. package/apps/web/src/panel/contract.ts +34 -27
  184. package/apps/web/src/panel.tsx +1 -1
  185. package/apps/web/src/plugin-bootstrap.ts +5 -5
  186. package/apps/web/src/product/ModelControl.tsx +3 -3
  187. package/apps/web/src/product/ProductModelSettings.tsx +16 -16
  188. package/apps/web/src/product/SystemPromptControl.tsx +11 -11
  189. package/apps/web/src/product/model-settings.ts +2 -2
  190. package/apps/web/src/rpc/client.ts +16 -16
  191. package/apps/web/src/rpc.ts +1 -1
  192. package/apps/web/src/run-overview.ts +1 -1
  193. package/apps/web/src/run-panel/RunPanelApp.tsx +39 -39
  194. package/apps/web/src/run-panel/RunPanelHeader.tsx +6 -6
  195. package/apps/web/src/run-panel/RunPanelMenu.tsx +6 -6
  196. package/apps/web/src/run-panel/RunPanelRail.tsx +4 -4
  197. package/apps/web/src/run-panel/RunPanelWorkspace.tsx +3 -3
  198. package/apps/web/src/run-panel/clipboard.ts +3 -3
  199. package/apps/web/src/run-panel/host-contract.ts +5 -5
  200. package/apps/web/src/run-panel/host.ts +15 -15
  201. package/apps/web/src/run-panel/input-bridge.ts +1 -1
  202. package/apps/web/src/run-panel/run-panel-location.ts +5 -5
  203. package/apps/web/src/run-panel/use-session-list.ts +1 -1
  204. package/apps/web/src/run-panel/workspace-state.ts +3 -3
  205. package/apps/web/src/run-panel.tsx +4 -4
  206. package/apps/web/src/run-preparation.ts +2 -2
  207. package/apps/web/src/run-view.ts +3 -3
  208. package/apps/web/src/settings-contributions.ts +32 -32
  209. package/apps/web/src/theme.ts +9 -9
  210. package/apps/web/src/title-model-settings.ts +6 -6
  211. package/apps/web/src/ui/ListDetail.tsx +9 -9
  212. package/apps/web/src/ui/dialog.tsx +2 -2
  213. package/apps/web/src/ui/modal-controller.ts +3 -3
  214. package/apps/web/src/ui/modal.tsx +2 -2
  215. package/apps/web/src/ui/popover.tsx +1 -1
  216. package/apps/web/src/ui/relative-time.ts +8 -8
  217. package/apps/web/src/ui/startup-notice.tsx +2 -2
  218. package/apps/web/src/ui/state-icon.tsx +1 -1
  219. package/apps/web/src/ui/state-vocabulary.ts +16 -16
  220. package/apps/web/src/ui/stop-button.tsx +2 -2
  221. package/bundles/ragents.activity/ragents-bundle.json +2 -2
  222. package/bundles/ragents.activity/web/classes.json +1 -1
  223. package/bundles/ragents.activity/web/index.js +1 -1
  224. package/bundles/ragents.activity/web/index.js.map +2 -2
  225. package/bundles/ragents.actor-programs/ragents-bundle.json +2 -2
  226. package/bundles/ragents.actor-programs/server/index.js +256 -228
  227. package/bundles/ragents.actor-programs/server/index.js.map +4 -4
  228. package/bundles/ragents.actor-programs/web/classes.json +1 -1
  229. package/bundles/ragents.actor-programs/web/index.js +1 -1
  230. package/bundles/ragents.actor-programs/web/index.js.map +3 -3
  231. package/bundles/ragents.ask/ragents-bundle.json +2 -4
  232. package/bundles/ragents.ask/server/chunks/{chunk-PDJO75SQ.js → chunk-YOV27MAR.js} +2 -2
  233. package/bundles/ragents.ask/server/chunks/chunk-YOV27MAR.js.map +7 -0
  234. package/bundles/ragents.ask/server/exports/server/contract.js +1 -1
  235. package/bundles/ragents.ask/server/index.js +23 -23
  236. package/bundles/ragents.ask/server/index.js.map +2 -2
  237. package/bundles/ragents.ask/web/chunks/{chunk-WFN4374U.js → chunk-D6NNB5DS.js} +1 -1
  238. package/bundles/ragents.ask/web/chunks/chunk-D6NNB5DS.js.map +7 -0
  239. package/bundles/ragents.ask/web/chunks/{chunk-V7W3QDVS.js → chunk-IQBHK7MV.js} +2 -2
  240. package/bundles/ragents.ask/web/chunks/{chunk-V7W3QDVS.js.map → chunk-IQBHK7MV.js.map} +4 -4
  241. package/bundles/ragents.ask/web/chunks/chunk-PWFIAMX4.js +2 -0
  242. package/bundles/ragents.ask/web/chunks/chunk-PWFIAMX4.js.map +7 -0
  243. package/bundles/ragents.ask/web/chunks/chunk-QHGKEESD.js +2 -0
  244. package/bundles/ragents.ask/web/chunks/chunk-QHGKEESD.js.map +7 -0
  245. package/bundles/ragents.ask/web/classes.json +1 -1
  246. package/bundles/ragents.ask/web/exports/ask-payload.js +1 -1
  247. package/bundles/ragents.ask/web/exports/web/QuestionCard.js +1 -1
  248. package/bundles/ragents.ask/web/exports/web/api.js +1 -1
  249. package/bundles/ragents.ask/web/index.js +1 -1
  250. package/bundles/ragents.ask/web/index.js.map +4 -4
  251. package/bundles/ragents.browser/executor/index.mjs +35 -35
  252. package/bundles/ragents.browser/executor/index.mjs.map +2 -2
  253. package/bundles/ragents.browser/ragents-bundle.json +2 -2
  254. package/bundles/ragents.browser/server/chunks/{chunk-CWLX4VA5.js → chunk-PYEISBNE.js} +1 -1
  255. package/bundles/ragents.browser/server/chunks/{chunk-CWLX4VA5.js.map → chunk-PYEISBNE.js.map} +1 -1
  256. package/bundles/ragents.browser/server/exports/server/contract.js +1 -1
  257. package/bundles/ragents.browser/server/index.js +31 -31
  258. package/bundles/ragents.browser/server/index.js.map +2 -2
  259. package/bundles/ragents.browser/skills/browser-testing/SKILL.md +30 -30
  260. package/bundles/ragents.documents/prompt.hbs +1 -1
  261. package/bundles/ragents.documents/ragents-bundle.json +2 -2
  262. package/bundles/ragents.documents/server/chunks/{chunk-QIECRZ7C.js → chunk-KMZWOVTI.js} +3 -3
  263. package/bundles/ragents.documents/server/chunks/{chunk-QIECRZ7C.js.map → chunk-KMZWOVTI.js.map} +2 -2
  264. package/bundles/ragents.documents/server/exports/contract.js +1 -1
  265. package/bundles/ragents.documents/server/index.js +26 -26
  266. package/bundles/ragents.documents/server/index.js.map +2 -2
  267. package/bundles/ragents.documents/web/classes.json +1 -1
  268. package/bundles/ragents.documents/web/index.js +1 -1
  269. package/bundles/ragents.documents/web/index.js.map +3 -3
  270. package/bundles/ragents.lsp-fsharp/executor/index.mjs +4 -4
  271. package/bundles/ragents.lsp-fsharp/executor/index.mjs.map +2 -2
  272. package/bundles/ragents.lsp-fsharp/ragents-bundle.json +2 -2
  273. package/bundles/ragents.lsp-fsharp/server/index.js +5 -5
  274. package/bundles/ragents.lsp-fsharp/server/index.js.map +2 -2
  275. package/bundles/ragents.lsp-fsharp/web/index.js +1 -1
  276. package/bundles/ragents.lsp-fsharp/web/index.js.map +2 -2
  277. package/bundles/ragents.lsp-roslyn/executor/index.mjs +3 -3
  278. package/bundles/ragents.lsp-roslyn/executor/index.mjs.map +2 -2
  279. package/bundles/ragents.lsp-roslyn/ragents-bundle.json +2 -2
  280. package/bundles/ragents.lsp-roslyn/server/index.js +17 -17
  281. package/bundles/ragents.lsp-roslyn/server/index.js.map +2 -2
  282. package/bundles/ragents.lsp-roslyn/web/index.js +1 -1
  283. package/bundles/ragents.lsp-roslyn/web/index.js.map +2 -2
  284. package/bundles/ragents.lsp-typescript/executor/index.mjs +2 -2
  285. package/bundles/ragents.lsp-typescript/executor/index.mjs.map +2 -2
  286. package/bundles/ragents.lsp-typescript/ragents-bundle.json +2 -2
  287. package/bundles/ragents.lsp-typescript/server/index.js.map +1 -1
  288. package/bundles/ragents.lsp-typescript/web/index.js +1 -1
  289. package/bundles/ragents.lsp-typescript/web/index.js.map +2 -2
  290. package/bundles/ragents.model-relay/ragents-bundle.json +7 -3
  291. package/bundles/ragents.model-relay/server/index.js +25 -21
  292. package/bundles/ragents.model-relay/server/index.js.map +2 -2
  293. package/bundles/ragents.orchestration/ragents-bundle.json +2 -2
  294. package/bundles/ragents.orchestration/server/index.js +28 -28
  295. package/bundles/ragents.orchestration/server/index.js.map +2 -2
  296. package/bundles/ragents.orchestration/web/chunks/{chunk-OSKPH6SZ.js → chunk-CFMJD5ZI.js} +2 -2
  297. package/bundles/ragents.orchestration/web/chunks/chunk-HOBLI364.js +2 -0
  298. package/bundles/ragents.orchestration/web/chunks/{chunk-OQYCNYXN.js.map → chunk-HOBLI364.js.map} +2 -2
  299. package/bundles/ragents.orchestration/web/chunks/{chunk-ODMMQGX2.js → chunk-UCIMT2R4.js} +2 -2
  300. package/bundles/ragents.orchestration/web/classes.json +1 -1
  301. package/bundles/ragents.orchestration/web/exports/web/program-slot.js +1 -1
  302. package/bundles/ragents.orchestration/web/exports/web/surface-entities.js +1 -1
  303. package/bundles/ragents.orchestration/web/index.js +8 -8
  304. package/bundles/ragents.orchestration/web/index.js.map +3 -3
  305. package/bundles/ragents.overseer/ragents-bundle.json +2 -2
  306. package/bundles/ragents.overseer/server/index.js +99 -99
  307. package/bundles/ragents.overseer/server/index.js.map +2 -2
  308. package/bundles/ragents.overseer/web/classes.json +1 -1
  309. package/bundles/ragents.overseer/web/index.js +1 -1
  310. package/bundles/ragents.overseer/web/index.js.map +2 -2
  311. package/bundles/ragents.processes/ragents-bundle.json +2 -2
  312. package/bundles/ragents.processes/server/index.js +11 -11
  313. package/bundles/ragents.processes/server/index.js.map +2 -2
  314. package/bundles/ragents.processes/web/classes.json +1 -1
  315. package/bundles/ragents.processes/web/index.js +3 -3
  316. package/bundles/ragents.processes/web/index.js.map +2 -2
  317. package/bundles/ragents.product/ragents-bundle.json +2 -2
  318. package/bundles/ragents.product/server/index.js +12 -13
  319. package/bundles/ragents.product/server/index.js.map +2 -2
  320. package/bundles/ragents.product/web/classes.json +1 -1
  321. package/bundles/ragents.product/web/index.js +1 -1
  322. package/bundles/ragents.product/web/index.js.map +2 -2
  323. package/bundles/ragents.profile-distribution/ragents-bundle.json +2 -2
  324. package/bundles/ragents.profile-distribution/server/index.js +31 -31
  325. package/bundles/ragents.profile-distribution/server/index.js.map +2 -2
  326. package/bundles/ragents.reference/ragents-bundle.json +2 -2
  327. package/bundles/ragents.reference/run-scripts/balcony-wizard/RUN.md +19 -19
  328. package/bundles/ragents.reference/run-scripts/balcony-wizard/actors/balcony-app/package.json +2 -2
  329. package/bundles/ragents.reference/run-scripts/balcony-wizard/actors/balcony-app/src/client.tsx +14 -14
  330. package/bundles/ragents.reference/run-scripts/balcony-wizard/actors/balcony-app/src/conversation.ts +2 -2
  331. package/bundles/ragents.reference/run-scripts/balcony-wizard/actors/balcony-app/tests/conversation.test.ts +49 -49
  332. package/bundles/ragents.reference/run-scripts/balcony-wizard/package.json +1 -1
  333. package/bundles/ragents.reference/run-scripts/balcony-wizard/src/server.ts +9 -9
  334. package/bundles/ragents.reference/run-scripts/balcony-wizard/tests/program.test.ts +9 -9
  335. package/bundles/ragents.reference/run-scripts/conversation-circle/RUN.md +7 -7
  336. package/bundles/ragents.reference/run-scripts/conversation-circle/package.json +1 -1
  337. package/bundles/ragents.reference/run-scripts/conversation-circle/src/server.ts +13 -13
  338. package/bundles/ragents.reference/run-scripts/conversation-circle/tests/helpers.ts +1 -1
  339. package/bundles/ragents.reference/run-scripts/conversation-circle/tests/program.test.ts +8 -8
  340. package/bundles/ragents.reference/run-scripts/learning-afternoon/RUN.md +16 -16
  341. package/bundles/ragents.reference/run-scripts/learning-afternoon/package.json +1 -1
  342. package/bundles/ragents.reference/run-scripts/learning-afternoon/prompts/experiment.md +1 -1
  343. package/bundles/ragents.reference/run-scripts/learning-afternoon/prompts/helper.md +3 -3
  344. package/bundles/ragents.reference/run-scripts/learning-afternoon/prompts/quiz.md +1 -1
  345. package/bundles/ragents.reference/run-scripts/learning-afternoon/src/server.ts +9 -9
  346. package/bundles/ragents.reference/run-scripts/learning-afternoon/tests/program.test.ts +39 -39
  347. package/bundles/ragents.reference/run-scripts/moderated-round/RUN.md +7 -7
  348. package/bundles/ragents.reference/run-scripts/moderated-round/package.json +1 -1
  349. package/bundles/ragents.reference/run-scripts/moderated-round/src/server.ts +9 -9
  350. package/bundles/ragents.reference/run-scripts/moderated-round/tests/helpers.ts +1 -1
  351. package/bundles/ragents.reference/run-scripts/moderated-round/tests/program.test.ts +6 -6
  352. package/bundles/ragents.reference/run-scripts/shared-actor-list/RUN.md +12 -12
  353. package/bundles/ragents.reference/run-scripts/shared-actor-list/actors/shared-list/package.json +2 -2
  354. package/bundles/ragents.reference/run-scripts/shared-actor-list/actors/shared-list/src/contract.ts +3 -3
  355. package/bundles/ragents.reference/run-scripts/shared-actor-list/actors/shared-list/tests/program.test.ts +4 -4
  356. package/bundles/ragents.reference/run-scripts/shared-actor-list/package.json +1 -1
  357. package/bundles/ragents.reference/run-scripts/shared-actor-list/src/server.ts +11 -11
  358. package/bundles/ragents.reference/run-scripts/shared-actor-list/tests/helpers.ts +1 -1
  359. package/bundles/ragents.reference/run-scripts/shared-actor-list/tests/program.test.ts +13 -13
  360. package/bundles/ragents.reference/run-scripts/word-game/RUN.md +18 -18
  361. package/bundles/ragents.reference/run-scripts/word-game/package.json +2 -2
  362. package/bundles/ragents.reference/run-scripts/word-game/src/client.tsx +1 -1
  363. package/bundles/ragents.reference/run-scripts/word-game/src/contract.ts +2 -2
  364. package/bundles/ragents.reference/run-scripts/word-game/src/server.ts +16 -16
  365. package/bundles/ragents.reference/run-scripts/word-game/tests/program.test.ts +39 -39
  366. package/bundles/ragents.reference/skills/100-shared-actor-list/SKILL.md +5 -5
  367. package/bundles/ragents.reference/skills/110-all-card-slots/SKILL.md +5 -5
  368. package/bundles/ragents.reference/skills/150-editorial-workbench/SKILL.md +5 -5
  369. package/bundles/ragents.reference/skills/160-learning-companion/SKILL.md +5 -5
  370. package/bundles/ragents.reference/skills/170-photo-collection/SKILL.md +5 -5
  371. package/bundles/ragents.reference/skills/180-decision-workbench/SKILL.md +5 -5
  372. package/bundles/ragents.reference/skills/190-review-queue/SKILL.md +5 -5
  373. package/bundles/ragents.reference/skills/20-circle-of-four/SKILL.md +5 -5
  374. package/bundles/ragents.reference/skills/200-typescript-diagnostics/SKILL.md +5 -5
  375. package/bundles/ragents.reference/skills/210-moderator-handover/SKILL.md +5 -5
  376. package/bundles/ragents.reference/skills/220-actor-approval-list/SKILL.md +5 -5
  377. package/bundles/ragents.reference/skills/230-shared-state-views/SKILL.md +5 -5
  378. package/bundles/ragents.reference/skills/240-live-result-list/SKILL.md +5 -5
  379. package/bundles/ragents.reference/skills/250-balcony-wizard/SKILL.md +5 -5
  380. package/bundles/ragents.reference/skills/30-llm-without-runtime-knowledge/SKILL.md +5 -5
  381. package/bundles/ragents.reference/skills/35-actor-input-fifo/SKILL.md +5 -5
  382. package/bundles/ragents.reference/skills/40-subscription-matrix/SKILL.md +5 -5
  383. package/bundles/ragents.reference/skills/50-subscription-removal/SKILL.md +5 -5
  384. package/bundles/ragents.reference/skills/60-stop-in-the-circle/SKILL.md +5 -5
  385. package/bundles/ragents.reference/skills/65-artifact-least-privilege/SKILL.md +5 -5
  386. package/bundles/ragents.reference/skills/70-headless-counter/SKILL.md +5 -5
  387. package/bundles/ragents.reference/skills/75-lsp-demo/SKILL.md +5 -5
  388. package/bundles/ragents.reference/skills/80-actor-text-analysis/SKILL.md +5 -5
  389. package/bundles/ragents.reference/skills/90-actor-notes/SKILL.md +5 -5
  390. package/bundles/ragents.reference/skills/95-hello-world/SKILL.md +5 -5
  391. package/bundles/ragents.reference/skills/decision-brief/SKILL.md +24 -24
  392. package/bundles/ragents.reference/skills/learning-sprint/SKILL.md +24 -24
  393. package/bundles/ragents.reference/web/classes.json +1 -1
  394. package/bundles/ragents.reference/web/index.js +1 -1
  395. package/bundles/ragents.reference/web/index.js.map +2 -2
  396. package/bundles/ragents.todo/ragents-bundle.json +2 -2
  397. package/bundles/ragents.todo/server/index.js +5 -5
  398. package/bundles/ragents.todo/server/index.js.map +2 -2
  399. package/bundles/ragents.todo/web/classes.json +1 -1
  400. package/bundles/ragents.todo/web/index.js +1 -1
  401. package/bundles/ragents.todo/web/index.js.map +2 -2
  402. package/bundles/ragents.transcript/ragents-bundle.json +2 -2
  403. package/bundles/ragents.transcript/server/index.js +11 -11
  404. package/bundles/ragents.transcript/server/index.js.map +2 -2
  405. package/bundles/ragents.watch/ragents-bundle.json +2 -2
  406. package/bundles/ragents.watch/server/index.js +48 -48
  407. package/bundles/ragents.watch/server/index.js.map +2 -2
  408. package/bundles/ragents.workspace/ragents-bundle.json +2 -2
  409. package/bundles/ragents.workspace/server/index.js +83 -81
  410. package/bundles/ragents.workspace/server/index.js.map +2 -2
  411. package/bundles/ragents.workspace/web/classes.json +1 -1
  412. package/bundles/ragents.workspace/web/index.js +1 -1
  413. package/bundles/ragents.workspace/web/index.js.map +2 -2
  414. package/package.json +4 -4
  415. package/packages/agent/dist/core/model-runtime.d.ts +7 -2
  416. package/packages/agent/dist/core/tools/bash.d.ts +1 -1
  417. package/packages/agent/dist/index.d.ts +1 -1
  418. package/packages/agent/dist/loop/agent-loop.d.ts +2 -2
  419. package/packages/agent/src/core/compaction/utils.ts +1 -1
  420. package/packages/agent/src/core/model-runtime.ts +45 -5
  421. package/packages/agent/src/core/tools/bash.ts +1 -1
  422. package/packages/agent/src/index.ts +1 -1
  423. package/packages/agent/src/loop/agent-loop.ts +2 -2
  424. package/packages/ai/dist/models.d.ts +1 -0
  425. package/packages/ai/dist/models.generated.d.ts +4544 -983
  426. package/packages/ai/dist/providers/openrouter.models.d.ts +4544 -983
  427. package/packages/ai/src/api/ai-sdk.ts +33 -7
  428. package/packages/ai/src/api-registry.ts +1 -1
  429. package/packages/ai/src/index.ts +2 -2
  430. package/packages/ai/src/models.generated.ts +1 -1
  431. package/packages/ai/src/models.ts +1 -1
  432. package/packages/ai/src/providers/openrouter.models.ts +3723 -550
  433. package/packages/ragents/src/access.ts +12 -12
  434. package/packages/ragents/src/agents/actor-input.ts +33 -33
  435. package/packages/ragents/src/agents/catalog.ts +1 -1
  436. package/packages/ragents/src/agents/delivery.ts +17 -17
  437. package/packages/ragents/src/agents/plugins.ts +1 -1
  438. package/packages/ragents/src/agents/scheduler.ts +7 -7
  439. package/packages/ragents/src/agents/schemas.ts +1 -1
  440. package/packages/ragents/src/agents/tool-orientation.ts +4 -4
  441. package/packages/ragents/src/agents/tools.ts +20 -20
  442. package/packages/ragents/src/agents/toolset.ts +5 -5
  443. package/packages/ragents/src/agents/workspaces.ts +1 -1
  444. package/packages/ragents/src/domain/events.ts +1 -1
  445. package/packages/ragents/src/domain/model.ts +5 -5
  446. package/packages/ragents/src/drivers/agent-runtime.ts +1 -1
  447. package/packages/ragents/src/drivers/agent-turn.ts +4 -4
  448. package/packages/ragents/src/drivers/agent.ts +2 -2
  449. package/packages/ragents/src/drivers/attachments.ts +4 -4
  450. package/packages/ragents/src/http/contracts.ts +14 -14
  451. package/packages/ragents/src/http/methods.ts +6 -6
  452. package/packages/ragents/src/index.ts +1 -0
  453. package/packages/ragents/src/plugin-host.ts +162 -116
  454. package/packages/ragents/src/plugin-types.ts +29 -10
  455. package/packages/ragents/src/rpc/contract.ts +5 -5
  456. package/packages/ragents/src/rpc/contribution.ts +2 -2
  457. package/packages/ragents/src/rpc/peer.ts +11 -11
  458. package/packages/ragents/src/rpc/protocol.ts +2 -2
  459. package/packages/ragents/src/runtime/decisions/turns.ts +1 -1
  460. package/packages/ragents/src/runtime/journal.ts +10 -10
  461. package/packages/ragents/src/runtime/orchestration.ts +8 -8
  462. package/packages/ragents/src/runtime/stop.ts +2 -2
  463. package/packages/ragents/src/script/mediators.ts +35 -35
  464. package/packages/ragents/src/typescript/async-compiler.ts +14 -14
  465. package/packages/ragents/src/typescript/compiler-worker.ts +2 -2
  466. package/packages/ragents/src/typescript/compiler.ts +7 -7
  467. package/packages/ragents/src/typescript/snippet.ts +5 -5
  468. package/packages/workspace-executor/src/bash-launch.ts +13 -13
  469. package/packages/workspace-executor/src/commands.ts +18 -18
  470. package/packages/workspace-executor/src/context.ts +15 -15
  471. package/packages/workspace-executor/src/contributions.ts +35 -35
  472. package/packages/workspace-executor/src/errors.ts +1 -1
  473. package/packages/workspace-executor/src/executor.ts +15 -15
  474. package/packages/workspace-executor/src/files.ts +30 -30
  475. package/packages/workspace-executor/src/language-server/contract.ts +2 -2
  476. package/packages/workspace-executor/src/language-server/diagnostics.ts +4 -4
  477. package/packages/workspace-executor/src/language-server/host.ts +35 -35
  478. package/packages/workspace-executor/src/language-server/json-rpc.ts +4 -4
  479. package/packages/workspace-executor/src/language-server/module.ts +11 -11
  480. package/packages/workspace-executor/src/language-server/roots.ts +3 -3
  481. package/packages/workspace-executor/src/language-server/session.ts +15 -15
  482. package/packages/workspace-executor/src/language-server/workspace-solutions.ts +2 -2
  483. package/packages/workspace-executor/src/managed-process.ts +35 -7
  484. package/packages/workspace-executor/src/module.ts +8 -8
  485. package/packages/workspace-executor/src/modules.ts +3 -3
  486. package/packages/workspace-executor/src/paths.ts +11 -11
  487. package/packages/workspace-executor/src/process-sandbox.ts +3 -3
  488. package/packages/workspace-executor/src/processes/module.ts +3 -3
  489. package/packages/workspace-executor/src/processes/process-table.ts +20 -20
  490. package/packages/workspace-executor/src/processes/scanner.ts +3 -3
  491. package/packages/workspace-executor/src/processes/snapshot.ts +2 -2
  492. package/packages/workspace-executor/src/processes/terminator.ts +13 -13
  493. package/packages/workspace-executor/src/run-folders.ts +3 -3
  494. package/packages/workspace-executor/src/safe-environment.ts +4 -4
  495. package/packages/workspace-executor/src/sandbox-tools.ts +37 -31
  496. package/packages/workspace-executor/src/session-ident.ts +2 -2
  497. package/packages/workspace-executor/src/shell-platform.ts +2 -2
  498. package/packages/workspace-executor/src/tools.ts +5 -5
  499. package/plugins/ragents.activity/web/ActivityHeader.tsx +3 -3
  500. package/plugins/ragents.activity/web/activity.ts +2 -2
  501. package/plugins/ragents.actor-programs/server/access-projections.ts +31 -0
  502. package/plugins/ragents.actor-programs/server/agent-tools.ts +2 -2
  503. package/plugins/ragents.actor-programs/server/capability-resolver.ts +3 -3
  504. package/plugins/ragents.actor-programs/server/controls-template.ts +46 -46
  505. package/plugins/ragents.actor-programs/server/controls-tool.ts +4 -4
  506. package/plugins/ragents.actor-programs/server/index.ts +2 -0
  507. package/plugins/ragents.actor-programs/server/limits.ts +3 -3
  508. package/plugins/ragents.actor-programs/server/methods.ts +1 -1
  509. package/plugins/ragents.actor-programs/server/project-diagnostics.ts +8 -8
  510. package/plugins/ragents.actor-programs/server/routes.ts +8 -8
  511. package/plugins/ragents.actor-programs/server/runtime.ts +90 -90
  512. package/plugins/ragents.actor-programs/server/templates.ts +59 -59
  513. package/plugins/ragents.actor-programs/server/test-report.ts +5 -5
  514. package/plugins/ragents.actor-programs/server/tool-contributor.ts +1 -1
  515. package/plugins/ragents.actor-programs/web/ActorViewFrame.tsx +17 -17
  516. package/plugins/ragents.actor-programs/web/AppsPanel.tsx +26 -26
  517. package/plugins/ragents.actor-programs/web/EmbeddedApps.tsx +3 -3
  518. package/plugins/ragents.actor-programs/web/FullscreenHost.tsx +2 -2
  519. package/plugins/ragents.actor-programs/web/FunctionForm.tsx +16 -16
  520. package/plugins/ragents.actor-programs/web/ProgramSource.tsx +5 -5
  521. package/plugins/ragents.actor-programs/web/api.ts +36 -36
  522. package/plugins/ragents.actor-programs/web/bridge.ts +8 -8
  523. package/plugins/ragents.actor-programs/web/chat-state.ts +4 -4
  524. package/plugins/ragents.actor-programs/web/context.ts +1 -1
  525. package/plugins/ragents.actor-programs/web/function-input.ts +6 -6
  526. package/plugins/ragents.actor-programs/web/index.tsx +1 -1
  527. package/plugins/ragents.actor-programs/web/program-state.ts +4 -4
  528. package/plugins/ragents.ask/ask-payload.ts +1 -1
  529. package/plugins/ragents.ask/contract.ts +5 -5
  530. package/plugins/ragents.ask/server/answer-method.ts +1 -1
  531. package/plugins/ragents.ask/server/ask-service.ts +9 -9
  532. package/plugins/ragents.ask/server/ask-tool.ts +10 -10
  533. package/plugins/ragents.ask/server/contract.ts +5 -5
  534. package/plugins/ragents.ask/web/AskActionView.tsx +1 -1
  535. package/plugins/ragents.ask/web/QuestionCard.tsx +22 -22
  536. package/plugins/ragents.ask/web/index.tsx +2 -8
  537. package/plugins/ragents.browser/executor/contract.ts +6 -6
  538. package/plugins/ragents.browser/executor/index.ts +1 -1
  539. package/plugins/ragents.browser/executor/module.ts +6 -6
  540. package/plugins/ragents.browser/executor/pages.ts +32 -32
  541. package/plugins/ragents.browser/executor/playwright.ts +8 -8
  542. package/plugins/ragents.browser/provision.ts +7 -7
  543. package/plugins/ragents.browser/server/browser.ts +14 -14
  544. package/plugins/ragents.browser/server/contract.ts +1 -1
  545. package/plugins/ragents.browser/server/index.ts +1 -1
  546. package/plugins/ragents.browser/server/tools.ts +14 -14
  547. package/plugins/ragents.browser/skills/browser-testing/SKILL.md +30 -30
  548. package/plugins/ragents.documents/contract.ts +2 -2
  549. package/plugins/ragents.documents/prompt.hbs +1 -1
  550. package/plugins/ragents.documents/server/document-write-tool.ts +12 -12
  551. package/plugins/ragents.documents/server/files-route.ts +6 -6
  552. package/plugins/ragents.documents/server/show-document-tool.ts +26 -26
  553. package/plugins/ragents.documents/server/store.ts +1 -1
  554. package/plugins/ragents.documents/web/DocumentViewer.tsx +37 -37
  555. package/plugins/ragents.documents/web/index.tsx +11 -11
  556. package/plugins/ragents.lsp-fsharp/executor.ts +7 -7
  557. package/plugins/ragents.lsp-fsharp/provision.ts +7 -7
  558. package/plugins/ragents.lsp-roslyn/executor.ts +5 -5
  559. package/plugins/ragents.lsp-roslyn/provision.ts +4 -4
  560. package/plugins/ragents.lsp-roslyn/server/index.ts +5 -5
  561. package/plugins/ragents.lsp-roslyn/server/solution-on-start.ts +13 -13
  562. package/plugins/ragents.lsp-typescript/executor.ts +3 -3
  563. package/plugins/ragents.model-relay/server/config.ts +6 -2
  564. package/plugins/ragents.model-relay/server/index.ts +2 -2
  565. package/plugins/ragents.model-relay/server/relay.ts +23 -22
  566. package/plugins/ragents.orchestration/contract.ts +8 -8
  567. package/plugins/ragents.orchestration/server/index.ts +4 -4
  568. package/plugins/ragents.orchestration/server/run-stop-tool.ts +3 -3
  569. package/plugins/ragents.orchestration/server/surface-tool.ts +5 -5
  570. package/plugins/ragents.orchestration/tiled-layout.ts +11 -11
  571. package/plugins/ragents.orchestration/web/ActorChat.tsx +2 -2
  572. package/plugins/ragents.orchestration/web/ActorChatControls.tsx +4 -4
  573. package/plugins/ragents.orchestration/web/ActorChatPreview.tsx +1 -1
  574. package/plugins/ragents.orchestration/web/ActorPopout.tsx +1 -1
  575. package/plugins/ragents.orchestration/web/ActorShortcut.tsx +6 -6
  576. package/plugins/ragents.orchestration/web/ActorSurfaceControls.tsx +15 -15
  577. package/plugins/ragents.orchestration/web/ActorTile.tsx +1 -1
  578. package/plugins/ragents.orchestration/web/Center.tsx +5 -5
  579. package/plugins/ragents.orchestration/web/DocumentsSection.tsx +2 -2
  580. package/plugins/ragents.orchestration/web/ExecutionsPanel.tsx +15 -15
  581. package/plugins/ragents.orchestration/web/FlowInspector.tsx +103 -103
  582. package/plugins/ragents.orchestration/web/JournalStatus.tsx +11 -11
  583. package/plugins/ragents.orchestration/web/MaterialBody.tsx +2 -2
  584. package/plugins/ragents.orchestration/web/StopRunButton.tsx +6 -6
  585. package/plugins/ragents.orchestration/web/TiledSurface.tsx +9 -9
  586. package/plugins/ragents.orchestration/web/actor-header-settings.ts +5 -5
  587. package/plugins/ragents.orchestration/web/constants.ts +2 -2
  588. package/plugins/ragents.orchestration/web/executions.ts +6 -6
  589. package/plugins/ragents.orchestration/web/format.ts +1 -1
  590. package/plugins/ragents.orchestration/web/index.tsx +2 -2
  591. package/plugins/ragents.orchestration/web/run-panel/AddresseeControl.tsx +7 -7
  592. package/plugins/ragents.orchestration/web/run-panel/AddresseeTree.tsx +8 -8
  593. package/plugins/ragents.orchestration/web/run-panel/RunPanel.tsx +29 -28
  594. package/plugins/ragents.orchestration/web/run-panel/RunPanelSettings.tsx +7 -7
  595. package/plugins/ragents.orchestration/web/run-panel/addressee-tree.ts +13 -13
  596. package/plugins/ragents.orchestration/web/run-panel/run-panel-actors.ts +3 -3
  597. package/plugins/ragents.orchestration/web/run-panel/run-panel-settings.ts +2 -2
  598. package/plugins/ragents.orchestration/web/run-panel/run-panel-startup.ts +3 -3
  599. package/plugins/ragents.orchestration/web/run-panel/run-panel-state.ts +7 -7
  600. package/plugins/ragents.orchestration/web/run-panel/sheet-status.ts +10 -10
  601. package/plugins/ragents.orchestration/web/surface-startup.ts +8 -8
  602. package/plugins/ragents.orchestration/web/surface-view-settings.ts +1 -1
  603. package/plugins/ragents.orchestration/web/tiled-view-settings.ts +1 -1
  604. package/plugins/ragents.overseer/contract.ts +20 -20
  605. package/plugins/ragents.overseer/server/api.ts +8 -8
  606. package/plugins/ragents.overseer/server/coordinator-prompt.ts +10 -10
  607. package/plugins/ragents.overseer/server/coordinator.ts +4 -4
  608. package/plugins/ragents.overseer/server/index.ts +24 -24
  609. package/plugins/ragents.overseer/server/orientation.ts +8 -8
  610. package/plugins/ragents.overseer/server/quick-answer.ts +9 -9
  611. package/plugins/ragents.overseer/server/run-directory.ts +5 -5
  612. package/plugins/ragents.overseer/server/settings.ts +6 -6
  613. package/plugins/ragents.overseer/server/user-location.ts +16 -16
  614. package/plugins/ragents.overseer/web/ModelSettings.tsx +9 -9
  615. package/plugins/ragents.overseer/web/index.tsx +20 -20
  616. package/plugins/ragents.overseer/web/model-settings.ts +1 -1
  617. package/plugins/ragents.overseer/web/quick-answers.ts +2 -2
  618. package/plugins/ragents.processes/contract.ts +5 -5
  619. package/plugins/ragents.processes/server/methods.ts +4 -4
  620. package/plugins/ragents.processes/server/observer.ts +8 -8
  621. package/plugins/ragents.processes/server/run-processes.ts +2 -2
  622. package/plugins/ragents.processes/web/ProcessHeader.tsx +10 -10
  623. package/plugins/ragents.processes/web/processes.ts +10 -10
  624. package/plugins/ragents.product/server/config.ts +1 -1
  625. package/plugins/ragents.product/server/index.ts +4 -4
  626. package/plugins/ragents.product/server/runtime.ts +9 -10
  627. package/plugins/ragents.product/web/index.tsx +1 -1
  628. package/plugins/ragents.profile-distribution/contract.ts +10 -10
  629. package/plugins/ragents.profile-distribution/server/archive.ts +20 -20
  630. package/plugins/ragents.profile-distribution/server/config.ts +2 -2
  631. package/plugins/ragents.profile-distribution/server/index.ts +4 -4
  632. package/plugins/ragents.reference/examples.ts +27 -27
  633. package/plugins/ragents.reference/run-scripts/balcony-wizard/RUN.md +19 -19
  634. package/plugins/ragents.reference/run-scripts/balcony-wizard/actors/balcony-app/package.json +2 -2
  635. package/plugins/ragents.reference/run-scripts/balcony-wizard/actors/balcony-app/src/client.tsx +14 -14
  636. package/plugins/ragents.reference/run-scripts/balcony-wizard/actors/balcony-app/src/conversation.ts +2 -2
  637. package/plugins/ragents.reference/run-scripts/balcony-wizard/actors/balcony-app/tests/conversation.test.ts +49 -49
  638. package/plugins/ragents.reference/run-scripts/balcony-wizard/package.json +1 -1
  639. package/plugins/ragents.reference/run-scripts/balcony-wizard/src/server.ts +9 -9
  640. package/plugins/ragents.reference/run-scripts/balcony-wizard/tests/program.test.ts +9 -9
  641. package/plugins/ragents.reference/run-scripts/conversation-circle/RUN.md +7 -7
  642. package/plugins/ragents.reference/run-scripts/conversation-circle/package.json +1 -1
  643. package/plugins/ragents.reference/run-scripts/conversation-circle/src/server.ts +13 -13
  644. package/plugins/ragents.reference/run-scripts/conversation-circle/tests/helpers.ts +1 -1
  645. package/plugins/ragents.reference/run-scripts/conversation-circle/tests/program.test.ts +8 -8
  646. package/plugins/ragents.reference/run-scripts/learning-afternoon/RUN.md +16 -16
  647. package/plugins/ragents.reference/run-scripts/learning-afternoon/package.json +1 -1
  648. package/plugins/ragents.reference/run-scripts/learning-afternoon/prompts/experiment.md +1 -1
  649. package/plugins/ragents.reference/run-scripts/learning-afternoon/prompts/helper.md +3 -3
  650. package/plugins/ragents.reference/run-scripts/learning-afternoon/prompts/quiz.md +1 -1
  651. package/plugins/ragents.reference/run-scripts/learning-afternoon/src/server.ts +9 -9
  652. package/plugins/ragents.reference/run-scripts/learning-afternoon/tests/program.test.ts +39 -39
  653. package/plugins/ragents.reference/run-scripts/moderated-round/RUN.md +7 -7
  654. package/plugins/ragents.reference/run-scripts/moderated-round/package.json +1 -1
  655. package/plugins/ragents.reference/run-scripts/moderated-round/src/server.ts +9 -9
  656. package/plugins/ragents.reference/run-scripts/moderated-round/tests/helpers.ts +1 -1
  657. package/plugins/ragents.reference/run-scripts/moderated-round/tests/program.test.ts +6 -6
  658. package/plugins/ragents.reference/run-scripts/shared-actor-list/RUN.md +12 -12
  659. package/plugins/ragents.reference/run-scripts/shared-actor-list/actors/shared-list/package.json +2 -2
  660. package/plugins/ragents.reference/run-scripts/shared-actor-list/actors/shared-list/src/contract.ts +3 -3
  661. package/plugins/ragents.reference/run-scripts/shared-actor-list/actors/shared-list/tests/program.test.ts +4 -4
  662. package/plugins/ragents.reference/run-scripts/shared-actor-list/package.json +1 -1
  663. package/plugins/ragents.reference/run-scripts/shared-actor-list/src/server.ts +11 -11
  664. package/plugins/ragents.reference/run-scripts/shared-actor-list/tests/helpers.ts +1 -1
  665. package/plugins/ragents.reference/run-scripts/shared-actor-list/tests/program.test.ts +13 -13
  666. package/plugins/ragents.reference/run-scripts/word-game/RUN.md +18 -18
  667. package/plugins/ragents.reference/run-scripts/word-game/package.json +2 -2
  668. package/plugins/ragents.reference/run-scripts/word-game/src/client.tsx +1 -1
  669. package/plugins/ragents.reference/run-scripts/word-game/src/contract.ts +2 -2
  670. package/plugins/ragents.reference/run-scripts/word-game/src/server.ts +16 -16
  671. package/plugins/ragents.reference/run-scripts/word-game/tests/program.test.ts +39 -39
  672. package/plugins/ragents.reference/skills/100-shared-actor-list/SKILL.md +5 -5
  673. package/plugins/ragents.reference/skills/110-all-card-slots/SKILL.md +5 -5
  674. package/plugins/ragents.reference/skills/150-editorial-workbench/SKILL.md +5 -5
  675. package/plugins/ragents.reference/skills/160-learning-companion/SKILL.md +5 -5
  676. package/plugins/ragents.reference/skills/170-photo-collection/SKILL.md +5 -5
  677. package/plugins/ragents.reference/skills/180-decision-workbench/SKILL.md +5 -5
  678. package/plugins/ragents.reference/skills/190-review-queue/SKILL.md +5 -5
  679. package/plugins/ragents.reference/skills/20-circle-of-four/SKILL.md +5 -5
  680. package/plugins/ragents.reference/skills/200-typescript-diagnostics/SKILL.md +5 -5
  681. package/plugins/ragents.reference/skills/210-moderator-handover/SKILL.md +5 -5
  682. package/plugins/ragents.reference/skills/220-actor-approval-list/SKILL.md +5 -5
  683. package/plugins/ragents.reference/skills/230-shared-state-views/SKILL.md +5 -5
  684. package/plugins/ragents.reference/skills/240-live-result-list/SKILL.md +5 -5
  685. package/plugins/ragents.reference/skills/250-balcony-wizard/SKILL.md +5 -5
  686. package/plugins/ragents.reference/skills/30-llm-without-runtime-knowledge/SKILL.md +5 -5
  687. package/plugins/ragents.reference/skills/35-actor-input-fifo/SKILL.md +5 -5
  688. package/plugins/ragents.reference/skills/40-subscription-matrix/SKILL.md +5 -5
  689. package/plugins/ragents.reference/skills/50-subscription-removal/SKILL.md +5 -5
  690. package/plugins/ragents.reference/skills/60-stop-in-the-circle/SKILL.md +5 -5
  691. package/plugins/ragents.reference/skills/65-artifact-least-privilege/SKILL.md +5 -5
  692. package/plugins/ragents.reference/skills/70-headless-counter/SKILL.md +5 -5
  693. package/plugins/ragents.reference/skills/75-lsp-demo/SKILL.md +5 -5
  694. package/plugins/ragents.reference/skills/80-actor-text-analysis/SKILL.md +5 -5
  695. package/plugins/ragents.reference/skills/90-actor-notes/SKILL.md +5 -5
  696. package/plugins/ragents.reference/skills/95-hello-world/SKILL.md +5 -5
  697. package/plugins/ragents.reference/skills/decision-brief/SKILL.md +24 -24
  698. package/plugins/ragents.reference/skills/learning-sprint/SKILL.md +24 -24
  699. package/plugins/ragents.reference/walkthroughs.ts +128 -128
  700. package/plugins/ragents.reference/web/StartGuides.tsx +23 -23
  701. package/plugins/ragents.todo/server/todo-tool.ts +6 -6
  702. package/plugins/ragents.todo/web/TodoSection.tsx +1 -1
  703. package/plugins/ragents.transcript/server/transcript.ts +11 -11
  704. package/plugins/ragents.watch/server/condition.ts +4 -4
  705. package/plugins/ragents.watch/server/functions.ts +27 -27
  706. package/plugins/ragents.watch/server/observation.ts +2 -2
  707. package/plugins/ragents.watch/server/service.ts +14 -14
  708. package/plugins/ragents.workspace/client/transport.ts +1 -1
  709. package/plugins/ragents.workspace/client/workspace-client.ts +62 -49
  710. package/plugins/ragents.workspace/contract.ts +46 -46
  711. package/plugins/ragents.workspace/server/binding.ts +20 -20
  712. package/plugins/ragents.workspace/server/browse-route.ts +8 -8
  713. package/plugins/ragents.workspace/server/clients.ts +42 -42
  714. package/plugins/ragents.workspace/server/config.ts +8 -5
  715. package/plugins/ragents.workspace/server/index.ts +5 -4
  716. package/plugins/ragents.workspace/server/runtime.ts +26 -26
  717. package/plugins/ragents.workspace/server/shell-platform.ts +1 -1
  718. package/plugins/ragents.workspace/web/FileBrowser.tsx +10 -10
  719. package/plugins/ragents.workspace/web/WorkspaceBinding.tsx +24 -24
  720. package/plugins/ragents.workspace/web/index.tsx +1 -1
  721. package/ragents.config.core.ts +1 -1
  722. package/ragents.config.developer.ts +3 -3
  723. package/ragents.config.showcase.ts +2 -2
  724. package/scripts/agent/agent-cli.ts +96 -96
  725. package/scripts/agent/journal.ts +5 -5
  726. package/scripts/agent/turn-control.ts +4 -4
  727. package/scripts/package/build-package.ts +29 -29
  728. package/scripts/package/host-links.mjs +3 -3
  729. package/scripts/package/publish-package.ts +29 -29
  730. package/scripts/package/ragents.mjs +19 -19
  731. package/scripts/plugin/build-builtin-plugins.ts +5 -5
  732. package/scripts/plugin/plugin-cli.ts +14 -14
  733. package/scripts/provision/run-provision.ts +14 -15
  734. package/scripts/remote/connect.ts +46 -46
  735. package/scripts/remote/start.ts +18 -18
  736. package/scripts/workspace-client/run-workspace-client.ts +23 -23
  737. package/apps/web/dist/assets/main-C7JeZFjs.js +0 -6
  738. package/apps/web/dist/assets/mermaid-HWGCJPDP-DfsU5ofC.js +0 -478
  739. package/apps/web/dist/assets/runPanel-ZT6TPDLM.js +0 -21
  740. package/bundles/ragents.ask/server/chunks/chunk-PDJO75SQ.js.map +0 -7
  741. package/bundles/ragents.ask/web/chunks/chunk-4VXWWEG7.js +0 -2
  742. package/bundles/ragents.ask/web/chunks/chunk-4VXWWEG7.js.map +0 -7
  743. package/bundles/ragents.ask/web/chunks/chunk-VUBJDIKQ.js +0 -2
  744. package/bundles/ragents.ask/web/chunks/chunk-VUBJDIKQ.js.map +0 -7
  745. package/bundles/ragents.ask/web/chunks/chunk-WFN4374U.js.map +0 -7
  746. package/bundles/ragents.orchestration/web/chunks/chunk-OQYCNYXN.js +0 -2
  747. package/plugins/ragents.ask/web/QuestionSection.tsx +0 -48
  748. /package/bundles/ragents.orchestration/web/chunks/{chunk-OSKPH6SZ.js.map → chunk-CFMJD5ZI.js.map} +0 -0
  749. /package/bundles/ragents.orchestration/web/chunks/{chunk-ODMMQGX2.js.map → chunk-UCIMT2R4.js.map} +0 -0
@@ -10,14 +10,14 @@ const modelRelayPlugin: RAgentsPlugin = {
10
10
  register: (host) => {
11
11
  const upstreams = host.service(modelUpstreamsToken);
12
12
  let resolved: readonly ResolvedAlias[] | undefined;
13
- const aliases = (): readonly ResolvedAlias[] => resolved ??= resolveAliases(modelRelayConfig.aliases(), upstreams());
13
+ const aliases = (): readonly ResolvedAlias[] => resolved ??= resolveAliases(modelRelayConfig.aliases(), modelRelayConfig.upstreams(upstreams()));
14
14
  const log = new Protocol(host.storage.root("relay.log"));
15
15
  host.lifecycle({
16
16
  id: "ragents.model-relay",
17
17
  initialize: () => {
18
18
  const list = aliases();
19
19
  log.write(`=== Start: ${list.map((entry) => `${entry.alias}=${entry.upstream.id}/${entry.model.id}`).join(", ")} ===`);
20
- console.log(`Modell-Relay: ${list.length} Aliasse unter /relay/v1 (${list.map((entry) => entry.alias).join(", ")})`);
20
+ console.log(`Model relay: ${list.length} aliases under /relay/v1 (${list.map((entry) => entry.alias).join(", ")})`);
21
21
  },
22
22
  shutdown: () => log.close(),
23
23
  });
@@ -4,7 +4,7 @@ import { pipeline } from "node:stream/promises";
4
4
  import type { ReadableStream } from "node:stream/web";
5
5
  import type { HttpRouteContribution } from "@ragents/engine";
6
6
  import { PayloadTooLargeError, readBody, writeJson } from "@ragents/host/plugin-support/http.js";
7
- import type { ModelAlias } from "@ragents/host/plugin-support/model-aliases.js";
7
+ import { validatedAliasModel, type ModelAlias } from "@ragents/host/plugin-support/model-aliases.js";
8
8
  import type { ModelUpstream } from "@ragents/host/plugin-support/model-upstreams.js";
9
9
 
10
10
  export const RELAY_PATH_PREFIX = "/relay/v1";
@@ -18,35 +18,36 @@ export interface ResolvedAlias {
18
18
  readonly alias: string;
19
19
  readonly upstream: ModelUpstream;
20
20
  readonly model: ModelUpstream["models"][number];
21
- readonly compaction: ModelAlias["compaction"];
21
+ /** The model as the alias offers it: with its thinking levels and compaction values. */
22
+ readonly offered: ModelUpstream["models"][number];
22
23
  }
23
24
 
24
- /** Jeder Alias muss auf einen konfigurierten Anbieter und ein Modell aus dessen Katalog zeigen. */
25
+ /** Every alias must point to a configured provider and a model from its catalog that its thinking levels and compaction values fit. */
25
26
  export const resolveAliases = (aliases: readonly ModelAlias[], upstreams: readonly ModelUpstream[]): readonly ResolvedAlias[] =>
26
27
  aliases.map((entry) => {
27
28
  const upstream = upstreams.find((candidate) => candidate.id === entry.upstream);
28
29
  if (!upstream) {
29
- const available = upstreams.map((candidate) => candidate.id).join(", ") || "keiner";
30
- throw new Error(`MODEL_ALIASES: der Anbieter ${entry.upstream} hinter ${entry.alias} ist auf diesem Server nicht konfiguriert (verfügbar: ${available})`);
30
+ const available = upstreams.map((candidate) => candidate.id).join(", ") || "none";
31
+ throw new Error(`MODEL_ALIASES: the provider ${entry.upstream} behind ${entry.alias} is not configured on this server (available: ${available})`);
31
32
  }
32
33
  const model = upstream.models.find((candidate) => candidate.id === entry.model);
33
- if (!model) throw new Error(`MODEL_ALIASES: das Modell ${entry.model} hinter ${entry.alias} fehlt im Katalog von ${entry.upstream}`);
34
- return { alias: entry.alias, upstream, model, compaction: entry.compaction };
34
+ if (!model) throw new Error(`MODEL_ALIASES: the model ${entry.model} behind ${entry.alias} is missing from the catalog of ${entry.upstream}`);
35
+ return { alias: entry.alias, upstream, model, offered: validatedAliasModel(entry, model) };
35
36
  });
36
37
 
37
- /** Der Katalogeintrag nennt nur, was der Verbraucher für Draht und Kompaktierung braucht; Name, Anbieter und Kosten bleiben beim Server. */
38
+ /** The catalog entry names only what the consumer needs for the wire and compaction; name, provider and costs stay with the server. */
38
39
  export const catalogEntryOf = (resolved: ResolvedAlias) => ({
39
40
  id: resolved.alias,
40
41
  object: "model" as const,
41
42
  owned_by: "relay",
42
43
  catalog: {
43
- reasoning: resolved.model.reasoning,
44
- ...(resolved.model.thinkingLevelMap ? { thinkingLevelMap: resolved.model.thinkingLevelMap } : {}),
45
- input: [...resolved.model.input],
46
- contextWindow: resolved.model.contextWindow,
47
- maxTokens: resolved.model.maxTokens,
48
- compaction: resolved.compaction,
49
- ...(resolved.model.compat ? { compat: resolved.model.compat } : {}),
44
+ reasoning: resolved.offered.reasoning,
45
+ ...(resolved.offered.thinkingLevelMap ? { thinkingLevelMap: resolved.offered.thinkingLevelMap } : {}),
46
+ input: [...resolved.offered.input],
47
+ contextWindow: resolved.offered.contextWindow,
48
+ maxTokens: resolved.offered.maxTokens,
49
+ compaction: resolved.offered.compaction,
50
+ ...(resolved.offered.compat ? { compat: resolved.offered.compat } : {}),
50
51
  },
51
52
  });
52
53
 
@@ -55,7 +56,7 @@ interface Usage {
55
56
  readonly completion: number | undefined;
56
57
  }
57
58
 
58
- /** Ersetzt im durchgereichten Strom den echten Modellnamen durch den Alias, entfernt den Anbieter und merkt sich den letzten usage-Block. */
59
+ /** Replaces the real model name with the alias in the forwarded stream, removes the provider and remembers the last usage block. */
59
60
  const responseRewriter = (alias: string) => {
60
61
  const decoder = new TextDecoder();
61
62
  let pending = "";
@@ -139,7 +140,7 @@ export const createRelayRoutes = (options: RelayRouteOptions): HttpRouteContribu
139
140
  matches: (request, url) => request.method === "POST" && url.pathname === completionsPath,
140
141
  requiredRights: [RELAY_RIGHT],
141
142
  handle: async ({ request, response, access }) => {
142
- const user = access.user?.id ?? "anonym";
143
+ const user = access.user?.id ?? "anonymous";
143
144
  let text: string;
144
145
  try {
145
146
  text = await readBody(request, MAX_REQUEST_BYTES);
@@ -152,17 +153,17 @@ export const createRelayRoutes = (options: RelayRouteOptions): HttpRouteContribu
152
153
  try { parsed = JSON.parse(text); }
153
154
  catch { parsed = undefined; }
154
155
  if (!parsed || typeof parsed !== "object" || Array.isArray(parsed)) {
155
- writeJson(response, 400, openAiError("Der Anfragekörper ist kein JSON-Objekt", "invalid_request_error"));
156
+ writeJson(response, 400, openAiError("The request body is not a JSON object", "invalid_request_error"));
156
157
  return;
157
158
  }
158
159
  const alias = (parsed as { model?: unknown }).model;
159
160
  if (typeof alias !== "string" || !alias) {
160
- writeJson(response, 400, openAiError("Die Anfrage nennt kein Modell", "invalid_request_error"));
161
+ writeJson(response, 400, openAiError("The request names no model", "invalid_request_error"));
161
162
  return;
162
163
  }
163
164
  const resolved = options.aliases().find((candidate) => candidate.alias === alias);
164
165
  if (!resolved) {
165
- writeJson(response, 404, openAiError(`Das Modell ${alias} ist auf diesem Relay unbekannt`, "invalid_request_error"));
166
+ writeJson(response, 404, openAiError(`The model ${alias} is unknown on this relay`, "invalid_request_error"));
166
167
  return;
167
168
  }
168
169
  const controller = new AbortController();
@@ -179,8 +180,8 @@ export const createRelayRoutes = (options: RelayRouteOptions): HttpRouteContribu
179
180
  } catch (error) {
180
181
  if (controller.signal.aborted) return;
181
182
  const reason = error instanceof Error ? error.message : String(error);
182
- options.log(`${user} ${alias} -> ${resolved.upstream.id}/${resolved.model.id}: nicht erreichbar (${reason})`);
183
- writeJson(response, 502, openAiError(`Der Anbieter hinter ${alias} ist nicht erreichbar`, "server_error"));
183
+ options.log(`${user} ${alias} -> ${resolved.upstream.id}/${resolved.model.id}: unreachable (${reason})`);
184
+ writeJson(response, 502, openAiError(`The provider behind ${alias} is unreachable`, "server_error"));
184
185
  return;
185
186
  }
186
187
  response.writeHead(upstream.status, {
@@ -21,15 +21,15 @@ export const surfaceEntityOf = (text: string): SurfaceEntity => {
21
21
  const trimmed = text.trim();
22
22
  if (trimmed.startsWith("@")) {
23
23
  const handle = handleKey(trimmed);
24
- if (!handle || /\s/.test(handle)) throw new Error(`Entität ${JSON.stringify(text)}: nach dem @ fehlt ein Handle`);
24
+ if (!handle || /\s/.test(handle)) throw new Error(`Entity ${JSON.stringify(text)}: a handle is missing after the @`);
25
25
  return { kind: "actor", handle };
26
26
  }
27
27
  const match = /^app:(.+)$/s.exec(trimmed);
28
28
  if (!match) {
29
- throw new Error(`Entität ${JSON.stringify(text)}: erwartet @handle oder app:<id>`);
29
+ throw new Error(`Entity ${JSON.stringify(text)}: expected @handle or app:<id>`);
30
30
  }
31
31
  const id = match[1].trim();
32
- if (!id) throw new Error(`Entität ${JSON.stringify(text)}: die ID nach dem Doppelpunkt ist leer`);
32
+ if (!id) throw new Error(`Entity ${JSON.stringify(text)}: the ID after the colon is empty`);
33
33
  return { kind: "app", id };
34
34
  };
35
35
 
@@ -38,14 +38,14 @@ export const surfaceEntityKey = (entity: SurfaceEntity): string =>
38
38
 
39
39
  const LEGACY_KEYS = ["nodes", "shapes", "lines", "mode"] as const;
40
40
 
41
- /** Parses and validates a tile layout; throws a German error naming the first violation. */
41
+ /** Parses and validates a tile layout; throws an error naming the first violation. */
42
42
  export const surfaceLayoutOf = (value: unknown): SurfaceLayout => {
43
- if (!isRecord(value)) throw new Error("Die Anordnung muss ein Objekt mit root sein");
43
+ if (!isRecord(value)) throw new Error("The arrangement must be an object with root");
44
44
  const legacy = LEGACY_KEYS.filter((key) => key in value);
45
45
  if (legacy.length > 0) {
46
- throw new Error(`Die Programmanordnung stammt aus der entfernten freien Fläche (${legacy.join(", ")}); `
47
- + "canvas_layout_replace mit root setzt sie als Kachelaufteilung neu");
46
+ throw new Error(`The program arrangement comes from the removed free surface (${legacy.join(", ")}); `
47
+ + "canvas_layout_replace with root sets it anew as a tile layout");
48
48
  }
49
- if (!("root" in value)) throw new Error("root fehlt; erwartet wird eine Kachel, eine Teilung oder null");
49
+ if (!("root" in value)) throw new Error("root is missing; expected a tile, a split or null");
50
50
  return { root: value.root === null ? null : surfaceTileNodeOf(value.root) };
51
51
  };
@@ -21,13 +21,13 @@ const orchestrationPlugin: RAgentsPlugin = {
21
21
  host.functions(createSurfaceToolContributor());
22
22
  host.functions(createRunStopContributor(
23
23
  (runId) => host.service(runManagementToken)().stop(runId),
24
- (error) => console.error("Run-Stopp durch den Koordinator fehlgeschlagen", error),
24
+ (error) => console.error("Run stop by the coordinator failed", error),
25
25
  ));
26
26
  host.operations({
27
27
  id: "actor_input",
28
- label: "Actor-Input einreihen",
29
- description: "Reiht für einen Actor einen normalen Texteingang unter der gebundenen Identität ein - "
30
- + "als Agent oder, aus einer App-Aktion, als Besitzer des Runs. Bestätigt nur das Einreihen. TypeScript-Actors verstehen ausschließlich ihr programmiertes Eingabeprotokoll, keine freien Aufträge.",
28
+ label: "Enqueue actor input",
29
+ description: "Enqueues a normal text input for an actor under the bound identity - "
30
+ + "as an agent or, from an app action, as the owner of the run. Only confirms the enqueueing. TypeScript actors understand only their programmed input protocol, no free-form tasks.",
31
31
  schema: actorInputSchema,
32
32
  resultSchema: eventResultSchemaOf("actor.input.enqueued"),
33
33
  operator: "direct",
@@ -4,15 +4,15 @@ import { toolDescriptorFrom } from "@ragents/host/plugin-support/agent-tool.js";
4
4
 
5
5
  const available = defineToolAvailability({
6
6
  availability: "conditional",
7
- availabilityDetail: "Für den Primary-Actor mit execution.stopOwned im eigenen Run.",
7
+ availabilityDetail: "For the primary actor with execution.stopOwned in its own run.",
8
8
  requiredCapabilities: ["execution.stopOwned"],
9
9
  }, (actor, view) => actor.kind !== "human" && actor.id === view.primaryActorId && holdsUsable(actor, "execution.stopOwned"));
10
10
 
11
11
  export const createRunStopContributor = (stop: (runId: string) => Promise<void>, onError: (error: unknown) => void): ToolContributor => {
12
12
  const definition = defineRunFunction({
13
13
  name: "run_stop",
14
- label: "Run stoppen",
15
- description: "Leitet den vollständigen Stopp des eigenen Runs ein: laufende Turns, Werkzeuge, Unteragenten und Plugin-Dienste. Gespräch und Dateien bleiben erhalten. Bricht auch den eigenen Turn ab; die Annahme ist keine Bestätigung abgeschlossener Bereinigung. Bei Benutzerwunsch nach vollständigem Abbruch sofort verwenden, keine Abbruchnachricht an beschäftigte Agenten senden.",
14
+ label: "Stop run",
15
+ description: "Initiates the complete stop of your own run: running turns, tools, subagents and plugin services. Conversation and files are kept. Also cancels your own turn; acceptance is not a confirmation of completed cleanup. Use immediately when the user wants a complete cancellation; do not send a cancel message to busy agents.",
16
16
  schema: Type.Object({}, { additionalProperties: false }),
17
17
  resultSchema: Type.Object({ requested: Type.Literal(true) }, { additionalProperties: false }),
18
18
  available,
@@ -36,7 +36,7 @@ export const surfaceToolMetadata = {
36
36
 
37
37
  export const canDesignSurface = defineToolAvailability({
38
38
  availability: "conditional",
39
- availabilityDetail: "Nur für Agenten und TypeScript-Actors mit der Capability plugin.state.write.",
39
+ availabilityDetail: "Only for agents and TypeScript actors with the capability plugin.state.write.",
40
40
  requiredCapabilities: ["plugin.state.write"],
41
41
  }, (actor) => actor.kind !== "human" && holdsUsable(actor, "plugin.state.write"));
42
42
 
@@ -72,15 +72,15 @@ const isStopped = (actor: RunView["actors"][number]) => actor.kind !== "human" &
72
72
 
73
73
  const surfaceActorOf = (view: RunView, reference: string, where: string) => {
74
74
  const entity = surfaceEntityOf(reference);
75
- if (entity.kind !== "actor") throw invalid(`${where}: ${reference} ist kein Actor`);
75
+ if (entity.kind !== "actor") throw invalid(`${where}: ${reference} is not an actor`);
76
76
  const handle = entity.handle;
77
77
  const found = actorByHandle(view.actors, handle);
78
78
  if (!found) {
79
79
  const known = view.actors.filter((actor) => actor.kind !== "human").map((actor) => `@${actor.handle}`);
80
- throw invalid(`${where}: @${handle} ist kein Actor dieses Runs. Vorhanden: ${known.join(", ") || "keine"}`);
80
+ throw invalid(`${where}: @${handle} is not an actor of this run. Present: ${known.join(", ") || "none"}`);
81
81
  }
82
82
  if (found.kind === "human") {
83
- throw invalid(`${where}: @${handle} ist der Mensch im Chat; der Chat liegt fest links neben der Fläche`);
83
+ throw invalid(`${where}: @${handle} is the human in the chat; the chat is fixed to the left of the surface`);
84
84
  }
85
85
  return found;
86
86
  };
@@ -102,7 +102,7 @@ const resolveAppReferences = (view: RunView, layout: SurfaceLayout): SurfaceLayo
102
102
  try {
103
103
  return `app:${resolveActorView(programs, entity.id).view.id}`;
104
104
  } catch (error) {
105
- throw invalid(`${where}: ${reference}: ${error instanceof Error ? error.message : String(error)} Flächenentitäten erhalten das Präfix app:.`);
105
+ throw invalid(`${where}: ${reference}: ${error instanceof Error ? error.message : String(error)} Surface entities get the prefix app:.`);
106
106
  }
107
107
  };
108
108
  return parsedLayout({ root: layout.root ? mapSurfaceTileEntities(layout.root, (entity) => resolve(entity, "root")) : null });
@@ -8,28 +8,28 @@ export const MAX_SURFACE_TILES = 64;
8
8
  export const surfaceTileNodeOf = (input: unknown): SurfaceTileNode => {
9
9
  const entities = new Set<string>();
10
10
  const parse = (value: unknown, where: string, depth: number): SurfaceTileNode => {
11
- if (depth > MAX_SURFACE_TILE_DEPTH) throw new Error(`${where}: höchstens ${MAX_SURFACE_TILE_DEPTH} verschachtelte Teilungen sind erlaubt`);
12
- if (typeof value !== "object" || value === null || Array.isArray(value)) throw new Error(`${where} muss eine Kachel oder Teilung sein`);
11
+ if (depth > MAX_SURFACE_TILE_DEPTH) throw new Error(`${where}: at most ${MAX_SURFACE_TILE_DEPTH} nested splits are allowed`);
12
+ if (typeof value !== "object" || value === null || Array.isArray(value)) throw new Error(`${where} must be a tile or a split`);
13
13
  const node = value as Record<string, unknown>;
14
14
  if (Object.hasOwn(node, "entity")) {
15
- if (Object.keys(node).some((key) => key !== "entity" && key !== "chatInput")) throw new Error(`${where}: eine Kachel trägt nur entity und chatInput; eine Teilung direction, weights und children`);
16
- if (typeof node.entity !== "string") throw new Error(`${where}.entity muss @handle oder app:<name>/<view> sein`);
15
+ if (Object.keys(node).some((key) => key !== "entity" && key !== "chatInput")) throw new Error(`${where}: a tile carries only entity and chatInput; a split direction, weights and children`);
16
+ if (typeof node.entity !== "string") throw new Error(`${where}.entity must be @handle or app:<name>/<view>`);
17
17
  const entity = surfaceEntityOf(node.entity);
18
18
  const key = surfaceEntityKey(entity);
19
19
  if (node.chatInput !== undefined && (entity.kind !== "actor" || typeof node.chatInput !== "boolean")) {
20
- throw new Error(`${where}.chatInput ist nur für Actors als Wahrheitswert erlaubt`);
20
+ throw new Error(`${where}.chatInput is only allowed for actors, as a boolean`);
21
21
  }
22
- if (entities.has(key)) throw new Error(`${where}: ${key} ist mehr als einmal als Kachel platziert`);
22
+ if (entities.has(key)) throw new Error(`${where}: ${key} is placed as a tile more than once`);
23
23
  entities.add(key);
24
- if (entities.size > MAX_SURFACE_TILES) throw new Error(`Höchstens ${MAX_SURFACE_TILES} Kacheln sind erlaubt`);
24
+ if (entities.size > MAX_SURFACE_TILES) throw new Error(`At most ${MAX_SURFACE_TILES} tiles are allowed`);
25
25
  return node.chatInput === undefined ? { entity: key } : { entity: key, chatInput: node.chatInput as boolean };
26
26
  }
27
- if (Object.keys(node).some((key) => !["direction", "weights", "children"].includes(key))) throw new Error(`${where}: eine Teilung trägt nur direction, weights und children`);
28
- if (node.direction !== "horizontal" && node.direction !== "vertical") throw new Error(`${where}.direction muss horizontal oder vertical sein`);
27
+ if (Object.keys(node).some((key) => !["direction", "weights", "children"].includes(key))) throw new Error(`${where}: a split carries only direction, weights and children`);
28
+ if (node.direction !== "horizontal" && node.direction !== "vertical") throw new Error(`${where}.direction must be horizontal or vertical`);
29
29
  if (!Array.isArray(node.weights) || node.weights.length !== 2 || node.weights.some((weight) => typeof weight !== "number" || !Number.isFinite(weight) || weight <= 0)) {
30
- throw new Error(`${where}.weights muss genau zwei endliche positive Zahlen enthalten`);
30
+ throw new Error(`${where}.weights must contain exactly two finite positive numbers`);
31
31
  }
32
- if (!Array.isArray(node.children) || node.children.length !== 2) throw new Error(`${where}.children muss genau zwei Kacheln oder Teilungen enthalten`);
32
+ if (!Array.isArray(node.children) || node.children.length !== 2) throw new Error(`${where}.children must contain exactly two tiles or splits`);
33
33
  return {
34
34
  direction: node.direction,
35
35
  weights: [node.weights[0], node.weights[1]],
@@ -14,7 +14,7 @@ export function ActorChat({ actor, view, presentation, display = presentation, p
14
14
  actor: RunActor;
15
15
  view: RunView;
16
16
  presentation: "surface" | "inspector";
17
- /** Schlüssel der Anzeigefläche für den gemerkten Detailgrad; Default ist die Darstellung. */
17
+ /** Key of the display surface for the remembered detail level; defaults to the presentation. */
18
18
  display?: string;
19
19
  primaryMessages?: readonly Message[];
20
20
  conversation?: readonly Message[];
@@ -43,7 +43,7 @@ export function ActorChat({ actor, view, presentation, display = presentation, p
43
43
  <ChatMessages
44
44
  className={className}
45
45
  detailMode={detailMode}
46
- emptyState={<Empty><EmptyHeader><EmptyTitle>{actor.kind === "script" ? "Noch kein Verlauf" : "Noch kein Gespräch"}</EmptyTitle><EmptyDescription>{actor.kind === "script" ? "Hier erscheinen Programmeingaben und ihre Verarbeitung." : "Schreibe eine Nachricht, um das Gespräch zu beginnen."}</EmptyDescription></EmptyHeader></Empty>}
46
+ emptyState={<Empty><EmptyHeader><EmptyTitle>{actor.kind === "script" ? "No history yet" : "No conversation yet"}</EmptyTitle><EmptyDescription>{actor.kind === "script" ? "Program inputs and their processing appear here." : "Write a message to start the conversation."}</EmptyDescription></EmptyHeader></Empty>}
47
47
  messages={messages}
48
48
  renderAction={renderAction}
49
49
  renderTool={renderTool}
@@ -26,8 +26,8 @@ export function ActorChatControls({ actor, view, composerVisible = true, present
26
26
  const [stopError, setStopError] = useState<string>();
27
27
  const chatView = useChatViewSettings(view.id, actor.id, "agents", display);
28
28
  const attachments = useAttachmentCapabilities(view.id, actor.id, JSON.stringify(actor.execution?.driver.config));
29
- const disabledReason = !writable ? "Du hast Lesezugriff auf diesen Run." : undefined;
30
- const switches = <ChatViewSwitches collapsible={presentation === "surface"} settings={chatView} />;
29
+ const disabledReason = !writable ? "You have read access to this run." : undefined;
30
+ const switches = <ChatViewSwitches settings={chatView} />;
31
31
  if (!composerVisible || actor.kind === "human") return <div className={controlsClass}>{toolbarLeft}{switches}</div>;
32
32
  if (actor.kind === "script") return <div className={controlsClass}><p className={noteClass}>{programChatNotice}</p>{toolbarLeft}{switches}</div>;
33
33
  if (actor.lifecycle?.kind === "stopped") return <div className={presentation === "inspector" ? "flex-shrink-0 px-5 pt-2.5 pb-3.5" : undefined}>
@@ -47,11 +47,11 @@ export function ActorChatControls({ actor, view, composerVisible = true, present
47
47
  } : undefined}
48
48
  rows={1}
49
49
  running={running}
50
- texts={{ placeholder: disabledReason ?? `Nachricht an @${actor.handle} ...` }}
50
+ texts={{ placeholder: disabledReason ?? `Message to @${actor.handle} ...` }}
51
51
  toolbarLeft={<>
52
52
  {toolbarLeft}
53
53
  {switches}
54
- {presentation === "inspector" && <span className="truncate text-[0.7rem] text-muted-foreground">an @{actor.handle}</span>}
54
+ {presentation === "inspector" && <span className="truncate text-[0.7rem] text-muted-foreground">to @{actor.handle}</span>}
55
55
  </>}
56
56
  toolbarRight={toolbarRight}
57
57
  />
@@ -19,7 +19,7 @@ export const ActorChatPreview = memo(function ActorChatPreview({ actor, view, pr
19
19
  if (!element) return;
20
20
  element.tabIndex = 0;
21
21
  element.setAttribute("role", "region");
22
- element.setAttribute("aria-label", `Chatverlauf von @${actor.handle}`);
22
+ element.setAttribute("aria-label", `Chat history of @${actor.handle}`);
23
23
  }, [actor.handle]);
24
24
  return <div className="flex min-h-[106px] w-full min-w-0 flex-1 flex-col overflow-hidden rounded-b-[16px] text-left" data-surface-scroll="true">
25
25
  <ChatPanel className="flex-1" composer={<ActorChatControls actor={actor} view={view} composerVisible={chatInput} presentation="surface" running={running} />}>
@@ -9,7 +9,7 @@ export function ActorPopout({ open, id, label, closeLabel, buttonRef, onClose, w
9
9
  closeLabel: string;
10
10
  buttonRef: RefObject<HTMLButtonElement | null>;
11
11
  onClose: (restoreFocus?: boolean) => void;
12
- /** Pixel oder die ganze verfügbare Breite neben dem Anker. */
12
+ /** Pixels or the whole available width next to the anchor. */
13
13
  width: number | "available";
14
14
  height: number;
15
15
  placement?: "bottom" | "top";
@@ -40,17 +40,17 @@ export function ActorShortcut({ actor, view, session, open, onToggle, onClose, v
40
40
  }, [onClose]);
41
41
 
42
42
  const inspect = (selection: FlowSelection) => {
43
- if (!surface) throw new Error("Der Actor-Zugang benötigt den Flächen-Controller.");
43
+ if (!surface) throw new Error("The actor shortcut needs the surface controller.");
44
44
  surface.acceptSelection(selection);
45
45
  close();
46
46
  };
47
47
  const tone = actorTone(view, actor);
48
- const label = actor.kind === "agent" ? `Chat mit @${actor.handle}` : `Actor-Ansicht von @${actor.handle}`;
49
- const type = !technical ? "Agent" : actor.kind === "agent" ? "LLM-Agent" : "TypeScript-Actor";
48
+ const label = actor.kind === "agent" ? `Chat with @${actor.handle}` : `Actor view of @${actor.handle}`;
49
+ const type = !technical ? "Agent" : actor.kind === "agent" ? "LLM agent" : "TypeScript actor";
50
50
 
51
51
  return <div className="flex items-stretch [&[hidden]]:hidden" hidden={!visible}>
52
52
  <ToolbarItem as="button" aria-controls={visited ? panelId : undefined} aria-expanded={open} aria-haspopup="dialog"
53
- aria-label={`${actor.displayName || actor.handle}. ${type}: ${label} öffnen`} className="font-bold"
53
+ aria-label={`${actor.displayName || actor.handle}. ${type}: open ${label}`} className="font-bold"
54
54
  data-tone={tone} data-staged={staged || undefined} onClick={() => { setVisited(true); onToggle(); }}
55
55
  draggable={technical} onDragStart={(event) => {
56
56
  if (!technical) { event.preventDefault(); return; }
@@ -58,11 +58,11 @@ export function ActorShortcut({ actor, view, session, open, onToggle, onClose, v
58
58
  event.dataTransfer.effectAllowed = "move";
59
59
  close();
60
60
  }}
61
- ref={buttonRef} title={`${type}: ${label} öffnen${technical ? ". Zum Andocken auf eine Kachel ziehen." : ""}`} type="button">
61
+ ref={buttonRef} title={`${type}: open ${label}${technical ? ". Drag onto a tile to dock." : ""}`} type="button">
62
62
  <span className={cn(shortcutIconClass, staged && shortcutFillClass[tone])}>{actor.kind === "agent" ? <UsersIcon size={20} /> : <CodeIcon size={20} />}</span>
63
63
  <ToolbarCopy><ToolbarLabel>@{actor.handle}</ToolbarLabel><ToolbarText>{actor.displayName && actor.displayName !== actor.handle ? actor.displayName : type}</ToolbarText></ToolbarCopy>
64
64
  </ToolbarItem>
65
- {visited && <ActorPopout open={open} id={panelId} label={label} closeLabel={`${label} schließen`}
65
+ {visited && <ActorPopout open={open} id={panelId} label={label} closeLabel={`Close ${label}`}
66
66
  buttonRef={buttonRef} keepMounted onClose={close} width={actor.kind === "agent" ? 784 : 560} height={640} role="dialog">
67
67
  <div className="min-h-0 min-w-0 flex-1 overflow-auto overscroll-contain">
68
68
  <FlowInspector actorConversations={session.actorConversations} canGoBack={false} chatDisplay="popout" composerVisible
@@ -20,13 +20,13 @@ export interface ActorSurfaceControlsProps {
20
20
 
21
21
  const nameClass = "min-w-0 max-w-full text-left font-semibold [overflow-wrap:anywhere]";
22
22
 
23
- const actorType = (actor: RunActor) => actor.kind === "human" ? "Benutzer" : actor.kind === "agent" ? "LLM-Agent" : "TypeScript-Actor";
24
- const actorStatus = (actor: RunActor) => actor.lifecycle?.kind === "running" ? "Arbeitet" : actor.lifecycle?.kind === "stopped" ? "Gestoppt" : actor.lifecycle?.kind === "idle" ? "Bereit" : "";
23
+ const actorType = (actor: RunActor) => actor.kind === "human" ? "User" : actor.kind === "agent" ? "LLM agent" : "TypeScript actor";
24
+ const actorStatus = (actor: RunActor) => actor.lifecycle?.kind === "running" ? "Working" : actor.lifecycle?.kind === "stopped" ? "Stopped" : actor.lifecycle?.kind === "idle" ? "Ready" : "";
25
25
 
26
26
  export function filterSurfaceActors(actors: readonly RunActor[], appActorIds: ReadonlySet<string>, query: string): readonly RunActor[] {
27
- const words = query.trim().toLocaleLowerCase("de-DE").split(/\s+/).filter(Boolean);
27
+ const words = query.trim().toLocaleLowerCase("en-US").split(/\s+/).filter(Boolean);
28
28
  return actors.filter((actor) => {
29
- const text = [`@${actor.handle}`, actor.displayName, actor.kind, actorType(actor), actor.lifecycle?.kind, actorStatus(actor), appActorIds.has(actor.id) ? "Mini-App" : ""].join(" ").toLocaleLowerCase("de-DE");
29
+ const text = [`@${actor.handle}`, actor.displayName, actor.kind, actorType(actor), actor.lifecycle?.kind, actorStatus(actor), appActorIds.has(actor.id) ? "Mini-app" : ""].join(" ").toLocaleLowerCase("en-US");
30
30
  return words.every((word) => text.includes(word));
31
31
  });
32
32
  }
@@ -46,7 +46,7 @@ export function ActorShortcuts({ session }: SessionHeaderContext) {
46
46
  }, [actors, close, openKey, session.session.id, shown]);
47
47
  if (!view || actors.length === 0) return null;
48
48
 
49
- return <nav aria-label="Actors des Runs" className="flex min-w-0 flex-none items-stretch">
49
+ return <nav aria-label="Actors of the run" className="flex min-w-0 flex-none items-stretch">
50
50
  {actors.map((actor) => {
51
51
  const key = `${session.session.id}:${actor.id}`;
52
52
  return <ActorShortcut actor={actor} key={key} onClose={close}
@@ -63,9 +63,9 @@ export function ActorHeaderModeControl({ runId }: { runId: string }) {
63
63
  const mode = useActorHeaderMode(runId);
64
64
  const modes = inspect ? ACTOR_HEADER_MODES : PUBLIC_ACTOR_HEADER_MODES;
65
65
  const next = modes[(modes.indexOf(mode) + 1) % modes.length];
66
- const label = `Actor-Anzeige: ${ACTOR_HEADER_MODE_LABELS[mode]}. Wechseln zu ${ACTOR_HEADER_MODE_LABELS[next]}`;
66
+ const label = `Actor display: ${ACTOR_HEADER_MODE_LABELS[mode]}. Switch to ${ACTOR_HEADER_MODE_LABELS[next]}`;
67
67
  return <ToolbarItem as="button" aria-label={label} className="w-[120px] max-w-[120px] min-w-[120px] flex-[0_0_120px]" onClick={() => saveActorHeaderMode(runId, next)} title={label} type="button">
68
- <ToolbarCopy><ToolbarLabel>Anzeige</ToolbarLabel><ToolbarText>{ACTOR_HEADER_MODE_LABELS[mode]}</ToolbarText></ToolbarCopy>
68
+ <ToolbarCopy><ToolbarLabel>Display</ToolbarLabel><ToolbarText>{ACTOR_HEADER_MODE_LABELS[mode]}</ToolbarText></ToolbarCopy>
69
69
  </ToolbarItem>;
70
70
  }
71
71
 
@@ -90,15 +90,15 @@ export function ActorSurfaceControls({ session, appActorIds, preferences, onPref
90
90
  aria-label={label} title={label} onClick={() => setOpen((value) => !value)} type="button">
91
91
  <UsersIcon size={20} /><ToolbarText>Actors</ToolbarText>
92
92
  </ToolbarItem>
93
- {open && <ActorPopout open id={panelId} label="Actors des Runs" closeLabel="Actorliste schließen"
93
+ {open && <ActorPopout open id={panelId} label="Actors of the run" closeLabel="Close actor list"
94
94
  buttonRef={buttonRef} onClose={close} width={460} height={460}
95
95
  placement="bottom" focusInput role="region">
96
96
  <div className="flex flex-none items-center gap-2.5 p-2.5">
97
- <Input className="flex-1" aria-label="Actors durchsuchen" onChange={(event) => setQuery(event.target.value)} placeholder="Handle, Typ oder Status suchen ..." type="search" value={query} />
98
- <span className="flex-none whitespace-nowrap text-[0.68rem] text-muted-foreground" role="status">{filtered.length} von {actors?.length ?? 0}</span>
97
+ <Input className="flex-1" aria-label="Search actors" onChange={(event) => setQuery(event.target.value)} placeholder="Search handle, type or status ..." type="search" value={query} />
98
+ <span className="flex-none whitespace-nowrap text-[0.68rem] text-muted-foreground" role="status">{filtered.length} of {actors?.length ?? 0}</span>
99
99
  </div>
100
100
  <ActorSurfaceList actors={filtered} appActorIds={appActorIds} primaryActorId={runView?.primaryActorId} onPreferencesChange={onPreferencesChange} preferences={preferences} />
101
- <p className="flex-none border-t border-border-soft px-2.5 py-2.5 text-[0.68rem] text-muted-foreground">Persönliche Ansicht dieses Runs</p>
101
+ <p className="flex-none border-t border-border-soft px-2.5 py-2.5 text-[0.68rem] text-muted-foreground">Personal view of this run</p>
102
102
  </ActorPopout>}
103
103
  </div>;
104
104
  }
@@ -111,19 +111,19 @@ export function ActorSurfaceList({ actors, appActorIds, primaryActorId, onPrefer
111
111
  preferences: SurfaceViewPreferences;
112
112
  }) {
113
113
  return <div className="min-h-0 flex-1 overflow-auto overscroll-contain px-2.5">
114
- {actors.length === 0 ? <p className="text-muted-foreground">Keine passenden Actors.</p> : <ul className="list-none">{actors.map((actor) => <li className="grid grid-cols-[minmax(0,1fr)_auto] items-center gap-2.5 border-b border-border-soft py-1.5" key={actor.id}>
114
+ {actors.length === 0 ? <p className="text-muted-foreground">No matching actors.</p> : <ul className="list-none">{actors.map((actor) => <li className="grid grid-cols-[minmax(0,1fr)_auto] items-center gap-2.5 border-b border-border-soft py-1.5" key={actor.id}>
115
115
  <div className="grid min-w-0 gap-0.5 leading-[1.3]">
116
116
  <div className="flex min-w-0 flex-wrap items-baseline gap-x-2 gap-y-0.5">
117
117
  <span className={nameClass}>@{actor.handle}</span>
118
118
  {actor.displayName !== actor.handle && <span className="min-w-0 max-w-full text-[0.7rem] [overflow-wrap:anywhere]">{actor.displayName}</span>}
119
119
  </div>
120
120
  <span className="flex flex-wrap items-center gap-x-2 gap-y-0.5 text-[0.66rem] text-muted-foreground">
121
- <span>{actorType(actor)}</span>{actorStatus(actor) && <span>{actorStatus(actor)}</span>}{appActorIds.has(actor.id) && <span className="text-primary">Mini-App</span>}
121
+ <span>{actorType(actor)}</span>{actorStatus(actor) && <span>{actorStatus(actor)}</span>}{appActorIds.has(actor.id) && <span className="text-primary">Mini-app</span>}
122
122
  </span>
123
123
  </div>
124
124
  {actor.kind !== "human" && <label className="flex cursor-pointer items-center gap-[5px] whitespace-nowrap text-[0.68rem]">
125
- <input aria-label={`@${actor.handle} auf der Fläche anzeigen`} checked={actorVisibleOnSurface(actor, appActorIds, preferences, primaryActorId)} onChange={(event) => onPreferencesChange({ ...preferences, actorVisibility: { ...preferences.actorVisibility, [actor.id]: event.target.checked } })} type="checkbox" />
126
- <span>Fläche</span>
125
+ <input aria-label={`Show @${actor.handle} on the surface`} checked={actorVisibleOnSurface(actor, appActorIds, preferences, primaryActorId)} onChange={(event) => onPreferencesChange({ ...preferences, actorVisibility: { ...preferences.actorVisibility, [actor.id]: event.target.checked } })} type="checkbox" />
126
+ <span>Surface</span>
127
127
  </label>}
128
128
  </li>)}</ul>}
129
129
  </div>;
@@ -12,7 +12,7 @@ export function ActorTile({ actor, view, cardSections, chatInput, session, navig
12
12
  navigation: SessionNavigation;
13
13
  onSelect: (selection: EntityReference) => void;
14
14
  }) {
15
- return <div className="flex flex-col overflow-hidden has-[>[data-slot=card-sections]:not(:empty)]:min-h-[260px]">
15
+ return <div className="flex flex-col overflow-hidden has-[>[data-slot=card-sections]:not(:empty)]:min-h-[260px] has-[[data-chat=actions]:not(:empty)]:min-h-[260px]">
16
16
  <ActorChatPreview actor={actor} view={view} chatInput={chatInput} running={actor.lifecycle?.kind === "running"}
17
17
  conversation={session.actorConversations?.[actor.id]} historyError={session.conversationError}
18
18
  onNavigate={onSelect} primaryMessages={actor.id === view.primaryActorId ? session.messages : undefined} />
@@ -29,7 +29,7 @@ function RunOrchestrationCenter({
29
29
  }: SurfaceCenterContext) {
30
30
  const inspect = useAccess().can("runs.inspect");
31
31
  const surface = useSurfaceController();
32
- if (!surface) throw new Error("Die Fläche braucht den Flächen-Controller des Orchestrierungs-Plugins.");
32
+ if (!surface) throw new Error("The surface needs the surface controller of the orchestration plugin.");
33
33
  const lastRunView = useRef<ReturnType<typeof runViewFrom>>(undefined);
34
34
  const parsedRunView = runViewFrom(session.runView);
35
35
  if (parsedRunView !== undefined) lastRunView.current = parsedRunView;
@@ -103,14 +103,14 @@ function RunOrchestrationCenter({
103
103
 
104
104
  return (
105
105
  <div className="relative flex h-full min-h-0 min-w-0 flex-1 overflow-clip" data-view="tiled">
106
- {personalLayout && <StatusGroup container={statusContainer} label="Fläche" order={20}>
106
+ {personalLayout && <StatusGroup container={statusContainer} label="Surface" order={20}>
107
107
  <button className={statusControlClass} onClick={() => saveSurfacePresentation(session.session.id, null)}
108
- title="Eigene Anordnung zurücksetzen und der Programmanordnung folgen" type="button">Programmvorgabe übernehmen</button>
108
+ title="Reset your own arrangement and follow the program arrangement" type="button">Apply program default</button>
109
109
  </StatusGroup>}
110
110
  {runToolbarContainer && createPortal(<><ActorHeaderModeControl runId={session.session.id} />{inspect && <ActorSurfaceControls session={session}
111
111
  appActorIds={appActorIds} preferences={preferences}
112
112
  onPreferencesChange={(next) => saveSurfaceViewPreferences(session.session.id, next)} />}</>, runToolbarContainer)}
113
- <div aria-label="Fläche" className="relative min-h-0 min-w-0 flex-[1_1_360px] overflow-clip bg-[image:var(--surface-backdrop)]" ref={stageRef}>
113
+ <div aria-label="Surface" className="relative min-h-0 min-w-0 flex-[1_1_360px] overflow-clip bg-[image:var(--surface-backdrop)]" ref={stageRef}>
114
114
  <SurfaceGrain />
115
115
  {(programLayout.error || presentationError) && <p className="absolute inset-x-2 top-2 z-10 bg-secondary p-3 text-destructive" role="alert">{programLayout.error || presentationError}</p>}
116
116
  {runView && !showStartup && <div className="absolute inset-y-0 left-0 w-[var(--surface-visible-width,100%)] overflow-hidden">
@@ -124,7 +124,7 @@ function RunOrchestrationCenter({
124
124
  );
125
125
  }
126
126
 
127
- /** Feines Rauschen über der Fläche, damit das Material nicht glatt wirkt. */
127
+ /** Fine noise over the surface so the material does not look smooth. */
128
128
  function SurfaceGrain() {
129
129
  return <svg aria-hidden="true" className="pointer-events-none absolute inset-0 size-full opacity-10" preserveAspectRatio="none" viewBox="0 0 180 180">
130
130
  <filter id="surface-grain"><feTurbulence baseFrequency=".76" numOctaves="3" stitchTiles="stitch" type="fractalNoise" /></filter>
@@ -5,7 +5,7 @@ import { SectionLabel } from "@ragents/web/ui";
5
5
 
6
6
  const openDocument = (navigation: SessionNavigation, artifact: RunArtifact) => {
7
7
  if (navigation.revealEntity({ type: "artifact", id: artifact.id })) return;
8
- throw new Error(`Kein Plugin kann das Dokument ${artifact.title} anzeigen`);
8
+ throw new Error(`No plugin can show the document ${artifact.title}`);
9
9
  };
10
10
 
11
11
  export function DocumentsSection({ actor, navigation, session }: CardSectionContext) {
@@ -18,7 +18,7 @@ export function DocumentsSection({ actor, navigation, session }: CardSectionCont
18
18
  return (
19
19
  <section className="grid gap-1.5">
20
20
  <SectionLabel>
21
- <span>Dokumente</span>
21
+ <span>Documents</span>
22
22
  <small>{documents.length}</small>
23
23
  </SectionLabel>
24
24
  <ul className="grid list-none gap-1">