@schlenkr/ragents 0.1.10 → 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 (743) hide show
  1. package/apps/server/package.json +1 -1
  2. package/apps/server/src/access-projection.ts +4 -4
  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 +29 -29
  6. package/apps/server/src/api/core-methods.ts +17 -17
  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 +6 -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 +39 -39
  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 +61 -56
  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 +23 -23
  83. package/apps/server/src/ragents/global-chat.ts +8 -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 +48 -48
  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-BO4wLQtE.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 +53 -54
  110. package/apps/web/dist/help/guide-clients.md +50 -51
  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 +196 -144
  124. package/apps/web/dist/help/mini-app.css +6 -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 +23 -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 +26 -26
  182. package/apps/web/src/panel/connection-state.ts +9 -9
  183. package/apps/web/src/panel/contract.ts +28 -28
  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 +225 -225
  227. package/bundles/ragents.actor-programs/server/index.js.map +2 -2
  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 -2
  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-MBRPS477.js → chunk-IQBHK7MV.js} +2 -2
  240. package/bundles/ragents.ask/web/chunks/{chunk-MBRPS477.js.map → chunk-IQBHK7MV.js.map} +3 -3
  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 +2 -2
  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 +2 -2
  305. package/bundles/ragents.overseer/ragents-bundle.json +2 -2
  306. package/bundles/ragents.overseer/server/index.js +98 -98
  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 +81 -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/index.d.ts +1 -1
  417. package/packages/agent/dist/loop/agent-loop.d.ts +2 -2
  418. package/packages/agent/src/core/compaction/utils.ts +1 -1
  419. package/packages/agent/src/core/model-runtime.ts +45 -5
  420. package/packages/agent/src/index.ts +1 -1
  421. package/packages/agent/src/loop/agent-loop.ts +2 -2
  422. package/packages/ai/dist/models.d.ts +1 -0
  423. package/packages/ai/dist/models.generated.d.ts +4544 -983
  424. package/packages/ai/dist/providers/openrouter.models.d.ts +4544 -983
  425. package/packages/ai/src/api/ai-sdk.ts +33 -7
  426. package/packages/ai/src/api-registry.ts +1 -1
  427. package/packages/ai/src/index.ts +2 -2
  428. package/packages/ai/src/models.generated.ts +1 -1
  429. package/packages/ai/src/models.ts +1 -1
  430. package/packages/ai/src/providers/openrouter.models.ts +3723 -550
  431. package/packages/ragents/src/access.ts +12 -12
  432. package/packages/ragents/src/agents/actor-input.ts +33 -33
  433. package/packages/ragents/src/agents/catalog.ts +1 -1
  434. package/packages/ragents/src/agents/delivery.ts +17 -17
  435. package/packages/ragents/src/agents/plugins.ts +1 -1
  436. package/packages/ragents/src/agents/scheduler.ts +7 -7
  437. package/packages/ragents/src/agents/schemas.ts +1 -1
  438. package/packages/ragents/src/agents/tool-orientation.ts +4 -4
  439. package/packages/ragents/src/agents/tools.ts +20 -20
  440. package/packages/ragents/src/agents/toolset.ts +5 -5
  441. package/packages/ragents/src/agents/workspaces.ts +1 -1
  442. package/packages/ragents/src/domain/events.ts +1 -1
  443. package/packages/ragents/src/domain/model.ts +5 -5
  444. package/packages/ragents/src/drivers/agent-runtime.ts +1 -1
  445. package/packages/ragents/src/drivers/agent-turn.ts +4 -4
  446. package/packages/ragents/src/drivers/agent.ts +2 -2
  447. package/packages/ragents/src/drivers/attachments.ts +4 -4
  448. package/packages/ragents/src/http/contracts.ts +14 -14
  449. package/packages/ragents/src/http/methods.ts +6 -6
  450. package/packages/ragents/src/plugin-host.ts +119 -119
  451. package/packages/ragents/src/plugin-types.ts +16 -16
  452. package/packages/ragents/src/rpc/contract.ts +5 -5
  453. package/packages/ragents/src/rpc/contribution.ts +2 -2
  454. package/packages/ragents/src/rpc/peer.ts +11 -11
  455. package/packages/ragents/src/rpc/protocol.ts +2 -2
  456. package/packages/ragents/src/runtime/decisions/turns.ts +1 -1
  457. package/packages/ragents/src/runtime/journal.ts +10 -10
  458. package/packages/ragents/src/runtime/orchestration.ts +8 -8
  459. package/packages/ragents/src/runtime/stop.ts +2 -2
  460. package/packages/ragents/src/script/mediators.ts +35 -35
  461. package/packages/ragents/src/typescript/async-compiler.ts +14 -14
  462. package/packages/ragents/src/typescript/compiler-worker.ts +2 -2
  463. package/packages/ragents/src/typescript/compiler.ts +7 -7
  464. package/packages/ragents/src/typescript/snippet.ts +5 -5
  465. package/packages/workspace-executor/src/bash-launch.ts +13 -13
  466. package/packages/workspace-executor/src/commands.ts +18 -18
  467. package/packages/workspace-executor/src/context.ts +15 -15
  468. package/packages/workspace-executor/src/contributions.ts +35 -35
  469. package/packages/workspace-executor/src/errors.ts +1 -1
  470. package/packages/workspace-executor/src/executor.ts +15 -15
  471. package/packages/workspace-executor/src/files.ts +30 -30
  472. package/packages/workspace-executor/src/language-server/contract.ts +2 -2
  473. package/packages/workspace-executor/src/language-server/diagnostics.ts +4 -4
  474. package/packages/workspace-executor/src/language-server/host.ts +35 -35
  475. package/packages/workspace-executor/src/language-server/json-rpc.ts +4 -4
  476. package/packages/workspace-executor/src/language-server/module.ts +11 -11
  477. package/packages/workspace-executor/src/language-server/roots.ts +3 -3
  478. package/packages/workspace-executor/src/language-server/session.ts +15 -15
  479. package/packages/workspace-executor/src/language-server/workspace-solutions.ts +2 -2
  480. package/packages/workspace-executor/src/managed-process.ts +12 -12
  481. package/packages/workspace-executor/src/module.ts +8 -8
  482. package/packages/workspace-executor/src/modules.ts +3 -3
  483. package/packages/workspace-executor/src/paths.ts +11 -11
  484. package/packages/workspace-executor/src/process-sandbox.ts +3 -3
  485. package/packages/workspace-executor/src/processes/module.ts +3 -3
  486. package/packages/workspace-executor/src/processes/process-table.ts +20 -20
  487. package/packages/workspace-executor/src/processes/scanner.ts +3 -3
  488. package/packages/workspace-executor/src/processes/snapshot.ts +2 -2
  489. package/packages/workspace-executor/src/processes/terminator.ts +13 -13
  490. package/packages/workspace-executor/src/run-folders.ts +3 -3
  491. package/packages/workspace-executor/src/safe-environment.ts +4 -4
  492. package/packages/workspace-executor/src/sandbox-tools.ts +28 -28
  493. package/packages/workspace-executor/src/session-ident.ts +2 -2
  494. package/packages/workspace-executor/src/shell-platform.ts +2 -2
  495. package/packages/workspace-executor/src/tools.ts +5 -5
  496. package/plugins/ragents.activity/web/ActivityHeader.tsx +3 -3
  497. package/plugins/ragents.activity/web/activity.ts +2 -2
  498. package/plugins/ragents.actor-programs/server/access-projections.ts +1 -1
  499. package/plugins/ragents.actor-programs/server/agent-tools.ts +2 -2
  500. package/plugins/ragents.actor-programs/server/capability-resolver.ts +3 -3
  501. package/plugins/ragents.actor-programs/server/controls-template.ts +46 -46
  502. package/plugins/ragents.actor-programs/server/controls-tool.ts +4 -4
  503. package/plugins/ragents.actor-programs/server/limits.ts +3 -3
  504. package/plugins/ragents.actor-programs/server/methods.ts +1 -1
  505. package/plugins/ragents.actor-programs/server/project-diagnostics.ts +8 -8
  506. package/plugins/ragents.actor-programs/server/routes.ts +8 -8
  507. package/plugins/ragents.actor-programs/server/runtime.ts +90 -90
  508. package/plugins/ragents.actor-programs/server/templates.ts +59 -59
  509. package/plugins/ragents.actor-programs/server/test-report.ts +5 -5
  510. package/plugins/ragents.actor-programs/server/tool-contributor.ts +1 -1
  511. package/plugins/ragents.actor-programs/web/ActorViewFrame.tsx +17 -17
  512. package/plugins/ragents.actor-programs/web/AppsPanel.tsx +26 -26
  513. package/plugins/ragents.actor-programs/web/EmbeddedApps.tsx +3 -3
  514. package/plugins/ragents.actor-programs/web/FullscreenHost.tsx +2 -2
  515. package/plugins/ragents.actor-programs/web/FunctionForm.tsx +16 -16
  516. package/plugins/ragents.actor-programs/web/ProgramSource.tsx +5 -5
  517. package/plugins/ragents.actor-programs/web/api.ts +36 -36
  518. package/plugins/ragents.actor-programs/web/bridge.ts +8 -8
  519. package/plugins/ragents.actor-programs/web/chat-state.ts +4 -4
  520. package/plugins/ragents.actor-programs/web/context.ts +1 -1
  521. package/plugins/ragents.actor-programs/web/function-input.ts +6 -6
  522. package/plugins/ragents.actor-programs/web/index.tsx +1 -1
  523. package/plugins/ragents.actor-programs/web/program-state.ts +4 -4
  524. package/plugins/ragents.ask/ask-payload.ts +1 -1
  525. package/plugins/ragents.ask/contract.ts +5 -5
  526. package/plugins/ragents.ask/server/answer-method.ts +1 -1
  527. package/plugins/ragents.ask/server/ask-service.ts +9 -9
  528. package/plugins/ragents.ask/server/ask-tool.ts +10 -10
  529. package/plugins/ragents.ask/server/contract.ts +5 -5
  530. package/plugins/ragents.ask/web/AskActionView.tsx +1 -1
  531. package/plugins/ragents.ask/web/QuestionCard.tsx +22 -22
  532. package/plugins/ragents.ask/web/index.tsx +2 -2
  533. package/plugins/ragents.browser/executor/contract.ts +6 -6
  534. package/plugins/ragents.browser/executor/index.ts +1 -1
  535. package/plugins/ragents.browser/executor/module.ts +6 -6
  536. package/plugins/ragents.browser/executor/pages.ts +32 -32
  537. package/plugins/ragents.browser/executor/playwright.ts +8 -8
  538. package/plugins/ragents.browser/provision.ts +7 -7
  539. package/plugins/ragents.browser/server/browser.ts +14 -14
  540. package/plugins/ragents.browser/server/contract.ts +1 -1
  541. package/plugins/ragents.browser/server/index.ts +1 -1
  542. package/plugins/ragents.browser/server/tools.ts +14 -14
  543. package/plugins/ragents.browser/skills/browser-testing/SKILL.md +30 -30
  544. package/plugins/ragents.documents/contract.ts +2 -2
  545. package/plugins/ragents.documents/prompt.hbs +1 -1
  546. package/plugins/ragents.documents/server/document-write-tool.ts +12 -12
  547. package/plugins/ragents.documents/server/files-route.ts +6 -6
  548. package/plugins/ragents.documents/server/show-document-tool.ts +26 -26
  549. package/plugins/ragents.documents/server/store.ts +1 -1
  550. package/plugins/ragents.documents/web/DocumentViewer.tsx +37 -37
  551. package/plugins/ragents.documents/web/index.tsx +11 -11
  552. package/plugins/ragents.lsp-fsharp/executor.ts +7 -7
  553. package/plugins/ragents.lsp-fsharp/provision.ts +7 -7
  554. package/plugins/ragents.lsp-roslyn/executor.ts +5 -5
  555. package/plugins/ragents.lsp-roslyn/provision.ts +4 -4
  556. package/plugins/ragents.lsp-roslyn/server/index.ts +5 -5
  557. package/plugins/ragents.lsp-roslyn/server/solution-on-start.ts +13 -13
  558. package/plugins/ragents.lsp-typescript/executor.ts +3 -3
  559. package/plugins/ragents.model-relay/server/config.ts +6 -2
  560. package/plugins/ragents.model-relay/server/index.ts +2 -2
  561. package/plugins/ragents.model-relay/server/relay.ts +23 -22
  562. package/plugins/ragents.orchestration/contract.ts +8 -8
  563. package/plugins/ragents.orchestration/server/index.ts +4 -4
  564. package/plugins/ragents.orchestration/server/run-stop-tool.ts +3 -3
  565. package/plugins/ragents.orchestration/server/surface-tool.ts +5 -5
  566. package/plugins/ragents.orchestration/tiled-layout.ts +11 -11
  567. package/plugins/ragents.orchestration/web/ActorChat.tsx +2 -2
  568. package/plugins/ragents.orchestration/web/ActorChatControls.tsx +4 -4
  569. package/plugins/ragents.orchestration/web/ActorChatPreview.tsx +1 -1
  570. package/plugins/ragents.orchestration/web/ActorPopout.tsx +1 -1
  571. package/plugins/ragents.orchestration/web/ActorShortcut.tsx +6 -6
  572. package/plugins/ragents.orchestration/web/ActorSurfaceControls.tsx +15 -15
  573. package/plugins/ragents.orchestration/web/Center.tsx +5 -5
  574. package/plugins/ragents.orchestration/web/DocumentsSection.tsx +2 -2
  575. package/plugins/ragents.orchestration/web/ExecutionsPanel.tsx +15 -15
  576. package/plugins/ragents.orchestration/web/FlowInspector.tsx +103 -103
  577. package/plugins/ragents.orchestration/web/JournalStatus.tsx +11 -11
  578. package/plugins/ragents.orchestration/web/MaterialBody.tsx +2 -2
  579. package/plugins/ragents.orchestration/web/StopRunButton.tsx +6 -6
  580. package/plugins/ragents.orchestration/web/TiledSurface.tsx +9 -9
  581. package/plugins/ragents.orchestration/web/actor-header-settings.ts +5 -5
  582. package/plugins/ragents.orchestration/web/constants.ts +2 -2
  583. package/plugins/ragents.orchestration/web/executions.ts +6 -6
  584. package/plugins/ragents.orchestration/web/format.ts +1 -1
  585. package/plugins/ragents.orchestration/web/index.tsx +2 -2
  586. package/plugins/ragents.orchestration/web/run-panel/AddresseeControl.tsx +7 -7
  587. package/plugins/ragents.orchestration/web/run-panel/AddresseeTree.tsx +8 -8
  588. package/plugins/ragents.orchestration/web/run-panel/RunPanel.tsx +22 -22
  589. package/plugins/ragents.orchestration/web/run-panel/RunPanelSettings.tsx +7 -7
  590. package/plugins/ragents.orchestration/web/run-panel/addressee-tree.ts +13 -13
  591. package/plugins/ragents.orchestration/web/run-panel/run-panel-actors.ts +3 -3
  592. package/plugins/ragents.orchestration/web/run-panel/run-panel-settings.ts +2 -2
  593. package/plugins/ragents.orchestration/web/run-panel/run-panel-startup.ts +3 -3
  594. package/plugins/ragents.orchestration/web/run-panel/run-panel-state.ts +7 -7
  595. package/plugins/ragents.orchestration/web/run-panel/sheet-status.ts +9 -9
  596. package/plugins/ragents.orchestration/web/surface-startup.ts +8 -8
  597. package/plugins/ragents.orchestration/web/surface-view-settings.ts +1 -1
  598. package/plugins/ragents.orchestration/web/tiled-view-settings.ts +1 -1
  599. package/plugins/ragents.overseer/contract.ts +20 -20
  600. package/plugins/ragents.overseer/server/api.ts +6 -6
  601. package/plugins/ragents.overseer/server/coordinator-prompt.ts +10 -10
  602. package/plugins/ragents.overseer/server/coordinator.ts +4 -4
  603. package/plugins/ragents.overseer/server/index.ts +24 -24
  604. package/plugins/ragents.overseer/server/orientation.ts +8 -8
  605. package/plugins/ragents.overseer/server/quick-answer.ts +9 -9
  606. package/plugins/ragents.overseer/server/run-directory.ts +5 -5
  607. package/plugins/ragents.overseer/server/settings.ts +6 -6
  608. package/plugins/ragents.overseer/server/user-location.ts +16 -16
  609. package/plugins/ragents.overseer/web/ModelSettings.tsx +9 -9
  610. package/plugins/ragents.overseer/web/index.tsx +20 -20
  611. package/plugins/ragents.overseer/web/model-settings.ts +1 -1
  612. package/plugins/ragents.overseer/web/quick-answers.ts +2 -2
  613. package/plugins/ragents.processes/contract.ts +5 -5
  614. package/plugins/ragents.processes/server/methods.ts +4 -4
  615. package/plugins/ragents.processes/server/observer.ts +8 -8
  616. package/plugins/ragents.processes/server/run-processes.ts +2 -2
  617. package/plugins/ragents.processes/web/ProcessHeader.tsx +10 -10
  618. package/plugins/ragents.processes/web/processes.ts +10 -10
  619. package/plugins/ragents.product/server/config.ts +1 -1
  620. package/plugins/ragents.product/server/index.ts +4 -4
  621. package/plugins/ragents.product/server/runtime.ts +9 -10
  622. package/plugins/ragents.product/web/index.tsx +1 -1
  623. package/plugins/ragents.profile-distribution/contract.ts +10 -10
  624. package/plugins/ragents.profile-distribution/server/archive.ts +20 -20
  625. package/plugins/ragents.profile-distribution/server/config.ts +2 -2
  626. package/plugins/ragents.profile-distribution/server/index.ts +4 -4
  627. package/plugins/ragents.reference/examples.ts +27 -27
  628. package/plugins/ragents.reference/run-scripts/balcony-wizard/RUN.md +19 -19
  629. package/plugins/ragents.reference/run-scripts/balcony-wizard/actors/balcony-app/package.json +2 -2
  630. package/plugins/ragents.reference/run-scripts/balcony-wizard/actors/balcony-app/src/client.tsx +14 -14
  631. package/plugins/ragents.reference/run-scripts/balcony-wizard/actors/balcony-app/src/conversation.ts +2 -2
  632. package/plugins/ragents.reference/run-scripts/balcony-wizard/actors/balcony-app/tests/conversation.test.ts +49 -49
  633. package/plugins/ragents.reference/run-scripts/balcony-wizard/package.json +1 -1
  634. package/plugins/ragents.reference/run-scripts/balcony-wizard/src/server.ts +9 -9
  635. package/plugins/ragents.reference/run-scripts/balcony-wizard/tests/program.test.ts +9 -9
  636. package/plugins/ragents.reference/run-scripts/conversation-circle/RUN.md +7 -7
  637. package/plugins/ragents.reference/run-scripts/conversation-circle/package.json +1 -1
  638. package/plugins/ragents.reference/run-scripts/conversation-circle/src/server.ts +13 -13
  639. package/plugins/ragents.reference/run-scripts/conversation-circle/tests/helpers.ts +1 -1
  640. package/plugins/ragents.reference/run-scripts/conversation-circle/tests/program.test.ts +8 -8
  641. package/plugins/ragents.reference/run-scripts/learning-afternoon/RUN.md +16 -16
  642. package/plugins/ragents.reference/run-scripts/learning-afternoon/package.json +1 -1
  643. package/plugins/ragents.reference/run-scripts/learning-afternoon/prompts/experiment.md +1 -1
  644. package/plugins/ragents.reference/run-scripts/learning-afternoon/prompts/helper.md +3 -3
  645. package/plugins/ragents.reference/run-scripts/learning-afternoon/prompts/quiz.md +1 -1
  646. package/plugins/ragents.reference/run-scripts/learning-afternoon/src/server.ts +9 -9
  647. package/plugins/ragents.reference/run-scripts/learning-afternoon/tests/program.test.ts +39 -39
  648. package/plugins/ragents.reference/run-scripts/moderated-round/RUN.md +7 -7
  649. package/plugins/ragents.reference/run-scripts/moderated-round/package.json +1 -1
  650. package/plugins/ragents.reference/run-scripts/moderated-round/src/server.ts +9 -9
  651. package/plugins/ragents.reference/run-scripts/moderated-round/tests/helpers.ts +1 -1
  652. package/plugins/ragents.reference/run-scripts/moderated-round/tests/program.test.ts +6 -6
  653. package/plugins/ragents.reference/run-scripts/shared-actor-list/RUN.md +12 -12
  654. package/plugins/ragents.reference/run-scripts/shared-actor-list/actors/shared-list/package.json +2 -2
  655. package/plugins/ragents.reference/run-scripts/shared-actor-list/actors/shared-list/src/contract.ts +3 -3
  656. package/plugins/ragents.reference/run-scripts/shared-actor-list/actors/shared-list/tests/program.test.ts +4 -4
  657. package/plugins/ragents.reference/run-scripts/shared-actor-list/package.json +1 -1
  658. package/plugins/ragents.reference/run-scripts/shared-actor-list/src/server.ts +11 -11
  659. package/plugins/ragents.reference/run-scripts/shared-actor-list/tests/helpers.ts +1 -1
  660. package/plugins/ragents.reference/run-scripts/shared-actor-list/tests/program.test.ts +13 -13
  661. package/plugins/ragents.reference/run-scripts/word-game/RUN.md +18 -18
  662. package/plugins/ragents.reference/run-scripts/word-game/package.json +2 -2
  663. package/plugins/ragents.reference/run-scripts/word-game/src/client.tsx +1 -1
  664. package/plugins/ragents.reference/run-scripts/word-game/src/contract.ts +2 -2
  665. package/plugins/ragents.reference/run-scripts/word-game/src/server.ts +16 -16
  666. package/plugins/ragents.reference/run-scripts/word-game/tests/program.test.ts +39 -39
  667. package/plugins/ragents.reference/skills/100-shared-actor-list/SKILL.md +5 -5
  668. package/plugins/ragents.reference/skills/110-all-card-slots/SKILL.md +5 -5
  669. package/plugins/ragents.reference/skills/150-editorial-workbench/SKILL.md +5 -5
  670. package/plugins/ragents.reference/skills/160-learning-companion/SKILL.md +5 -5
  671. package/plugins/ragents.reference/skills/170-photo-collection/SKILL.md +5 -5
  672. package/plugins/ragents.reference/skills/180-decision-workbench/SKILL.md +5 -5
  673. package/plugins/ragents.reference/skills/190-review-queue/SKILL.md +5 -5
  674. package/plugins/ragents.reference/skills/20-circle-of-four/SKILL.md +5 -5
  675. package/plugins/ragents.reference/skills/200-typescript-diagnostics/SKILL.md +5 -5
  676. package/plugins/ragents.reference/skills/210-moderator-handover/SKILL.md +5 -5
  677. package/plugins/ragents.reference/skills/220-actor-approval-list/SKILL.md +5 -5
  678. package/plugins/ragents.reference/skills/230-shared-state-views/SKILL.md +5 -5
  679. package/plugins/ragents.reference/skills/240-live-result-list/SKILL.md +5 -5
  680. package/plugins/ragents.reference/skills/250-balcony-wizard/SKILL.md +5 -5
  681. package/plugins/ragents.reference/skills/30-llm-without-runtime-knowledge/SKILL.md +5 -5
  682. package/plugins/ragents.reference/skills/35-actor-input-fifo/SKILL.md +5 -5
  683. package/plugins/ragents.reference/skills/40-subscription-matrix/SKILL.md +5 -5
  684. package/plugins/ragents.reference/skills/50-subscription-removal/SKILL.md +5 -5
  685. package/plugins/ragents.reference/skills/60-stop-in-the-circle/SKILL.md +5 -5
  686. package/plugins/ragents.reference/skills/65-artifact-least-privilege/SKILL.md +5 -5
  687. package/plugins/ragents.reference/skills/70-headless-counter/SKILL.md +5 -5
  688. package/plugins/ragents.reference/skills/75-lsp-demo/SKILL.md +5 -5
  689. package/plugins/ragents.reference/skills/80-actor-text-analysis/SKILL.md +5 -5
  690. package/plugins/ragents.reference/skills/90-actor-notes/SKILL.md +5 -5
  691. package/plugins/ragents.reference/skills/95-hello-world/SKILL.md +5 -5
  692. package/plugins/ragents.reference/skills/decision-brief/SKILL.md +24 -24
  693. package/plugins/ragents.reference/skills/learning-sprint/SKILL.md +24 -24
  694. package/plugins/ragents.reference/walkthroughs.ts +128 -128
  695. package/plugins/ragents.reference/web/StartGuides.tsx +23 -23
  696. package/plugins/ragents.todo/server/todo-tool.ts +6 -6
  697. package/plugins/ragents.todo/web/TodoSection.tsx +1 -1
  698. package/plugins/ragents.transcript/server/transcript.ts +11 -11
  699. package/plugins/ragents.watch/server/condition.ts +4 -4
  700. package/plugins/ragents.watch/server/functions.ts +27 -27
  701. package/plugins/ragents.watch/server/observation.ts +2 -2
  702. package/plugins/ragents.watch/server/service.ts +14 -14
  703. package/plugins/ragents.workspace/client/transport.ts +1 -1
  704. package/plugins/ragents.workspace/client/workspace-client.ts +54 -54
  705. package/plugins/ragents.workspace/contract.ts +46 -46
  706. package/plugins/ragents.workspace/server/binding.ts +20 -20
  707. package/plugins/ragents.workspace/server/browse-route.ts +8 -8
  708. package/plugins/ragents.workspace/server/clients.ts +42 -42
  709. package/plugins/ragents.workspace/server/config.ts +7 -7
  710. package/plugins/ragents.workspace/server/index.ts +3 -3
  711. package/plugins/ragents.workspace/server/runtime.ts +26 -26
  712. package/plugins/ragents.workspace/server/shell-platform.ts +1 -1
  713. package/plugins/ragents.workspace/web/FileBrowser.tsx +10 -10
  714. package/plugins/ragents.workspace/web/WorkspaceBinding.tsx +24 -24
  715. package/plugins/ragents.workspace/web/index.tsx +1 -1
  716. package/ragents.config.core.ts +1 -1
  717. package/ragents.config.developer.ts +3 -3
  718. package/ragents.config.showcase.ts +2 -2
  719. package/scripts/agent/agent-cli.ts +96 -96
  720. package/scripts/agent/journal.ts +5 -5
  721. package/scripts/agent/turn-control.ts +4 -4
  722. package/scripts/package/build-package.ts +29 -29
  723. package/scripts/package/host-links.mjs +3 -3
  724. package/scripts/package/publish-package.ts +29 -29
  725. package/scripts/package/ragents.mjs +19 -19
  726. package/scripts/plugin/build-builtin-plugins.ts +5 -5
  727. package/scripts/plugin/plugin-cli.ts +14 -14
  728. package/scripts/provision/run-provision.ts +14 -15
  729. package/scripts/remote/connect.ts +46 -46
  730. package/scripts/remote/start.ts +18 -18
  731. package/scripts/workspace-client/run-workspace-client.ts +23 -23
  732. package/apps/web/dist/assets/main-DnnqWHkH.js +0 -11
  733. package/apps/web/dist/assets/mermaid-HWGCJPDP-BLLeth5_.js +0 -568
  734. package/apps/web/dist/assets/runPanel-DPm7s3KM.js +0 -21
  735. package/bundles/ragents.ask/server/chunks/chunk-PDJO75SQ.js.map +0 -7
  736. package/bundles/ragents.ask/web/chunks/chunk-4VXWWEG7.js +0 -2
  737. package/bundles/ragents.ask/web/chunks/chunk-4VXWWEG7.js.map +0 -7
  738. package/bundles/ragents.ask/web/chunks/chunk-VUBJDIKQ.js +0 -2
  739. package/bundles/ragents.ask/web/chunks/chunk-VUBJDIKQ.js.map +0 -7
  740. package/bundles/ragents.ask/web/chunks/chunk-WFN4374U.js.map +0 -7
  741. package/bundles/ragents.orchestration/web/chunks/chunk-OQYCNYXN.js +0 -2
  742. /package/bundles/ragents.orchestration/web/chunks/{chunk-OSKPH6SZ.js.map → chunk-CFMJD5ZI.js.map} +0 -0
  743. /package/bundles/ragents.orchestration/web/chunks/{chunk-ODMMQGX2.js.map → chunk-UCIMT2R4.js.map} +0 -0
@@ -11,11 +11,11 @@ export interface ActorProgramTemplate {
11
11
 
12
12
  const blank: ActorProgramTemplate = {
13
13
  id: "blank",
14
- title: "Leere Mini-App",
15
- description: "Eine reine React-View am vorhandenen Actor ohne zusätzliche Serverfunktion.",
14
+ title: "Blank mini-app",
15
+ description: "A pure React view on the existing actor without an additional server function.",
16
16
  ragents: {
17
- title: "Meine View",
18
- description: "Eine kleine Bedienoberfläche des vorhandenen Actors.",
17
+ title: "My view",
18
+ description: "A small interface of the existing actor.",
19
19
  views: [{ id: "main", client: "src/client.tsx" }],
20
20
  },
21
21
  files: {
@@ -23,13 +23,13 @@ const blank: ActorProgramTemplate = {
23
23
  import * as UI from "@ragents/client/ui";
24
24
 
25
25
  const App = () => (
26
- <UI.AppLayout title="Meine View">
27
- <UI.Stack><p>Bereit für deine Inhalte.</p></UI.Stack>
26
+ <UI.AppLayout title="My view">
27
+ <UI.Stack><p>Ready for your content.</p></UI.Stack>
28
28
  </UI.AppLayout>
29
29
  );
30
30
 
31
31
  const root = document.getElementById("root");
32
- if (!root) throw new Error("Das Wurzelelement #root fehlt.");
32
+ if (!root) throw new Error("The #root element is missing.");
33
33
  createRoot(root).render(<App />);
34
34
  `,
35
35
  },
@@ -37,11 +37,11 @@ createRoot(root).render(<App />);
37
37
 
38
38
  const chat: ActorProgramTemplate = {
39
39
  id: "chat",
40
- title: "Actor-Chat",
41
- description: "Wiederverwendbarer Chat mit Verlauf und optionaler Eingabe an den Actor dieser View.",
40
+ title: "Actor chat",
41
+ description: "Reusable chat with history and optional input to the actor of this view.",
42
42
  ragents: {
43
- title: "Actor-Chat",
44
- description: "Zeigt das Gespräch mit einem Actor und sendet ihm Benutzereingaben.",
43
+ title: "Actor chat",
44
+ description: "Shows the conversation with an actor and sends it user input.",
45
45
  views: [{ id: "main", client: "src/client.tsx" }],
46
46
  },
47
47
  files: {
@@ -50,11 +50,11 @@ import * as UI from "@ragents/client/ui";
50
50
  import { context } from "@ragents/client";
51
51
 
52
52
  const App = () => (
53
- <UI.Chat actor={"@" + context.actor.handle} className="h-full" showInput placeholder="Nachricht an den Actor" />
53
+ <UI.Chat actor={"@" + context.actor.handle} className="h-full" showInput placeholder="Message to the actor" />
54
54
  );
55
55
 
56
56
  const root = document.getElementById("root");
57
- if (!root) throw new Error("Das Wurzelelement #root fehlt.");
57
+ if (!root) throw new Error("The #root element is missing.");
58
58
  createRoot(root).render(<App />);
59
59
  `,
60
60
  },
@@ -62,11 +62,11 @@ createRoot(root).render(<App />);
62
62
 
63
63
  const textAnalysis: ActorProgramTemplate = {
64
64
  id: "text-analysis",
65
- title: "Textanalyse",
66
- description: "Ein TypeScript-Actor analysiert Texte mit eigener Funktion, Zustand und React-View.",
65
+ title: "Text analysis",
66
+ description: "A TypeScript actor analyzes texts with its own function, state, and React view.",
67
67
  ragents: {
68
- title: "Textanalyse",
69
- description: "Zählt Zeichen, Wörter und Zeilen und merkt sich die Zahl der Analysen.",
68
+ title: "Text analysis",
69
+ description: "Counts characters, words, and lines and remembers the number of analyses.",
70
70
  backend: "src/server.ts",
71
71
  views: [{ id: "main", client: "src/client.tsx" }],
72
72
  },
@@ -81,23 +81,23 @@ type FormValues = Parameters<typeof UI.Form>[0]["values"];
81
81
  const App = () => {
82
82
  const state = useAppState();
83
83
  const [values, setValues] = React.useState<FormValues>({ text: "" });
84
- const [result, setResult] = React.useState("Bereit");
84
+ const [result, setResult] = React.useState("Ready");
85
85
 
86
86
  const analyse = async (next: FormValues): Promise<void> => {
87
87
  const answer = await context.capabilities.call("analyse", { text: String(next.text ?? "") });
88
88
  setResult([
89
- \`Zeichen: \${answer.characters}\`,
90
- \`Wörter: \${answer.words}\`,
91
- \`Zeilen: \${answer.lines}\`,
89
+ \`Characters: \${answer.characters}\`,
90
+ \`Words: \${answer.words}\`,
91
+ \`Lines: \${answer.lines}\`,
92
92
  ].join("\\n"));
93
93
  };
94
94
 
95
95
  return (
96
- <UI.AppLayout title="Textanalyse" description={<>Analysen: {state.analyses ?? 0}</>}>
96
+ <UI.AppLayout title="Text analysis" description={<>Analyses: {state.analyses ?? 0}</>}>
97
97
  <UI.Grid>
98
98
  <UI.Form fields={[
99
- { id: "text", label: "Text", type: "textarea", rows: 6, placeholder: "Text eingeben" },
100
- ]} values={values} onChange={setValues} onSubmit={analyse} submitLabel="Analysieren" />
99
+ { id: "text", label: "Text", type: "textarea", rows: 6, placeholder: "Enter text" },
100
+ ]} values={values} onChange={setValues} onSubmit={analyse} submitLabel="Analyze" />
101
101
  <UI.Stack><pre aria-live="polite" className="min-h-[90px] overflow-auto rounded-md border border-border bg-muted p-2.5 font-mono whitespace-pre-wrap">{result}</pre></UI.Stack>
102
102
  </UI.Grid>
103
103
  </UI.AppLayout>
@@ -105,7 +105,7 @@ const App = () => {
105
105
  };
106
106
 
107
107
  const root = document.getElementById("root");
108
- if (!root) throw new Error("Das Wurzelelement #root fehlt.");
108
+ if (!root) throw new Error("The #root element is missing.");
109
109
  createRoot(root).render(<App />);
110
110
  `,
111
111
  "src/contract.ts": `import { Type } from "typebox";
@@ -114,10 +114,10 @@ export const contract = {
114
114
  state: Type.Object({ analyses: Type.Optional(Type.Integer({"minimum": 0})) }, {"additionalProperties": false}),
115
115
  functions: {
116
116
  analyse: {
117
- label: "Text analysieren",
118
- description: "Zählt Wörter, Zeichen und Zeilen ohne externe Wirkung.",
117
+ label: "Analyze text",
118
+ description: "Counts words, characters, and lines without external effects.",
119
119
  tool: { name: "analyse_text" },
120
- input: Type.Object({ text: Type.String({"description": "Der zu analysierende Text."}) }, {"additionalProperties": false}),
120
+ input: Type.Object({ text: Type.String({"description": "The text to analyze."}) }, {"additionalProperties": false}),
121
121
  output: Type.Object({ text: Type.String(), characters: Type.Integer({"minimum": 0}), words: Type.Integer({"minimum": 0}), lines: Type.Integer({"minimum": 0}), analyses: Type.Integer({"minimum": 1}) }, {"additionalProperties": false}),
122
122
  capabilities: [],
123
123
  },
@@ -153,9 +153,9 @@ import { createTestContext } from "@ragents/server/testing";
153
153
  import { contract } from "../src/contract.ts";
154
154
  import program from "../src/server.ts";
155
155
 
156
- test("zählt Wörter, Zeilen und weitere Analysen", async () => {
156
+ test("counts words, lines, and further analyses", async () => {
157
157
  const context = createTestContext<Static<typeof contract.state>>({ state: {} });
158
- assert.deepEqual(await program.functions.analyse({"text": " Hallo Welt\\nNeue Zeile "}, context), {"text": "Hallo Welt\\nNeue Zeile", "characters": 21, "words": 4, "lines": 2, "analyses": 1});
158
+ assert.deepEqual(await program.functions.analyse({"text": " Hello world\\nNew line "}, context), {"text": "Hello world\\nNew line", "characters": 20, "words": 4, "lines": 2, "analyses": 1});
159
159
  assert.deepEqual(await program.functions.analyse({"text": ""}, context), {"text": "", "characters": 0, "words": 0, "lines": 0, "analyses": 2});
160
160
  assert.deepEqual(context.state.read(), {"analyses": 2});
161
161
  });
@@ -165,11 +165,11 @@ test("zählt Wörter, Zeilen und weitere Analysen", async () => {
165
165
 
166
166
  const headlessCounter: ActorProgramTemplate = {
167
167
  id: "headless-counter",
168
- title: "Zähler ohne Oberfläche",
169
- description: "Ein TypeScript-Actor zählt Eingaben in seinem Zustand und bietet dieselbe Arbeit als Funktion an.",
168
+ title: "Counter without interface",
169
+ description: "A TypeScript actor counts inputs in its state and offers the same work as a function.",
170
170
  ragents: {
171
- title: "Zähler",
172
- description: "Sammelt eingehende Texte ohne Modellaufrufe oder Oberfläche.",
171
+ title: "Counter",
172
+ description: "Collects incoming texts without model calls or interface.",
173
173
  backend: "src/server.ts",
174
174
  },
175
175
  files: {
@@ -184,13 +184,13 @@ export const contract = {
184
184
  state,
185
185
  functions: {
186
186
  record: {
187
- label: "Text zählen",
187
+ label: "Count text",
188
188
  input: Type.Object({ text: Type.String() }, { additionalProperties: false }),
189
189
  output: Type.Object({ count: Type.Integer(), texts: Type.Array(Type.String()) }, { additionalProperties: false }),
190
190
  tool: { name: "record_text" },
191
191
  },
192
192
  inspect: {
193
- label: "Zähler lesen",
193
+ label: "Read counter",
194
194
  input: Type.Object({}, { additionalProperties: false }),
195
195
  output: state,
196
196
  tool: { name: "read_counter" },
@@ -229,14 +229,14 @@ import { createTestContext } from "@ragents/server/testing";
229
229
  import { contract } from "../src/contract.ts";
230
230
  import program from "../src/server.ts";
231
231
 
232
- test("Eingaben und Funktionen teilen denselben Zähler", async () => {
232
+ test("inputs and functions share the same counter", async () => {
233
233
  const context = createTestContext<Static<typeof contract.state>>({ state: {} });
234
- for (const content of ["eins", "zwei", "drei"]) {
234
+ for (const content of ["one", "two", "three"]) {
235
235
  await program.onInput!({ id: content, content, artifactIds: [], sourceEventIds: [], subscriptionId: null, event: null }, context);
236
236
  }
237
- assert.deepEqual(await program.functions.inspect({}, context), { texts: ["eins", "zwei", "drei"], count: 3 });
238
- assert.deepEqual(await program.functions.record({ text: "vier" }, context), { texts: ["eins", "zwei", "drei", "vier"], count: 4 });
239
- assert.deepEqual(context.state.read(), { texts: ["eins", "zwei", "drei", "vier"], count: 4 });
237
+ assert.deepEqual(await program.functions.inspect({}, context), { texts: ["one", "two", "three"], count: 3 });
238
+ assert.deepEqual(await program.functions.record({ text: "four" }, context), { texts: ["one", "two", "three", "four"], count: 4 });
239
+ assert.deepEqual(context.state.read(), { texts: ["one", "two", "three", "four"], count: 4 });
240
240
  });
241
241
  `,
242
242
  },
@@ -244,11 +244,11 @@ test("Eingaben und Funktionen teilen denselben Zähler", async () => {
244
244
 
245
245
  const sharedList: ActorProgramTemplate = {
246
246
  id: "shared-list",
247
- title: "Gemeinsame Liste eines Actors",
248
- description: "Ein Actor besitzt eine Funktion und eine React-View für denselben Listenstand.",
247
+ title: "Shared list of an actor",
248
+ description: "An actor owns a function and a React view for the same list state.",
249
249
  ragents: {
250
- title: "Gemeinsame Liste",
251
- description: "Sammelt Texte aus der App und aus einem Agenten-Werkzeug in einer gemeinsamen Liste.",
250
+ title: "Shared list",
251
+ description: "Collects texts from the app and from an agent tool in a shared list.",
252
252
  backend: "src/server.ts",
253
253
  views: [{ id: "main", client: "src/client.tsx" }],
254
254
  },
@@ -263,21 +263,21 @@ type FormValues = Parameters<typeof UI.Form>[0]["values"];
263
263
  const App = () => {
264
264
  const state = useAppState();
265
265
  const [values, setValues] = React.useState<FormValues>({ text: "" });
266
- const [status, setStatus] = React.useState("Bereit");
266
+ const [status, setStatus] = React.useState("Ready");
267
267
  const entries = state.entries ?? [];
268
268
 
269
269
  const append = async (next: FormValues): Promise<void> => {
270
270
  const answer = await context.capabilities.call("append", { text: String(next.text ?? "") });
271
271
  setValues({ text: "" });
272
- setStatus(\`Hinzugefügt: \${answer.text}\`);
272
+ setStatus(\`Added: \${answer.text}\`);
273
273
  };
274
274
 
275
275
  return (
276
- <UI.AppLayout title="Gemeinsame Liste" description={<>{entries.length} {entries.length === 1 ? "Eintrag" : "Einträge"}</>}>
276
+ <UI.AppLayout title="Shared list" description={<>{entries.length} {entries.length === 1 ? "item" : "items"}</>}>
277
277
  <UI.Grid>
278
278
  <UI.Form fields={[
279
- { id: "text", label: "Neuer Eintrag", type: "textarea", placeholder: "Text eingeben" },
280
- ]} values={values} onChange={setValues} onSubmit={append} submitLabel="Hinzufügen" />
279
+ { id: "text", label: "New item", type: "textarea", placeholder: "Enter text" },
280
+ ]} values={values} onChange={setValues} onSubmit={append} submitLabel="Add" />
281
281
  <UI.Stack>
282
282
  <p className="text-muted-foreground" role="status">{status}</p>
283
283
  <ul className="border-t border-border">
@@ -290,7 +290,7 @@ const App = () => {
290
290
  };
291
291
 
292
292
  const root = document.getElementById("root");
293
- if (!root) throw new Error("Das Wurzelelement #root fehlt.");
293
+ if (!root) throw new Error("The #root element is missing.");
294
294
  createRoot(root).render(<App />);
295
295
  `,
296
296
  "src/contract.ts": `import { Type } from "typebox";
@@ -299,9 +299,9 @@ export const contract = {
299
299
  state: Type.Object({ entries: Type.Optional(Type.Array(Type.String())) }, {"additionalProperties": false}),
300
300
  functions: {
301
301
  append: {
302
- label: "Eintrag hinzufügen",
303
- description: "Hängt den eingegebenen Text an die gemeinsame Liste an.",
304
- input: Type.Object({ text: Type.String({"description": "Der Text für den neuen Listeneintrag."}) }, {"additionalProperties": false}),
302
+ label: "Add entry",
303
+ description: "Appends the entered text to the shared list.",
304
+ input: Type.Object({ text: Type.String({"description": "The text for the new list entry."}) }, {"additionalProperties": false}),
305
305
  output: Type.Object({ text: Type.String(), entries: Type.Array(Type.String()) }, {"additionalProperties": false}),
306
306
  capabilities: [],
307
307
  tool: { name: "append_to_list", card: true },
@@ -331,11 +331,11 @@ import { createTestContext } from "@ragents/server/testing";
331
331
  import { contract } from "../src/contract.ts";
332
332
  import program from "../src/server.ts";
333
333
 
334
- test("ergänzt Einträge ohne vorhandene Einträge zu verlieren", async () => {
334
+ test("adds entries without losing existing entries", async () => {
335
335
  const context = createTestContext<Static<typeof contract.state>>({ state: {} });
336
- assert.deepEqual(await program.functions.append({"text": " Erster Eintrag "}, context), {"text": "Erster Eintrag", "entries": ["Erster Eintrag"]});
337
- assert.deepEqual(await program.functions.append({"text": "Zweiter Eintrag"}, context), {"text": "Zweiter Eintrag", "entries": ["Erster Eintrag", "Zweiter Eintrag"]});
338
- assert.deepEqual(context.state.read(), {"entries": ["Erster Eintrag", "Zweiter Eintrag"]});
336
+ assert.deepEqual(await program.functions.append({"text": " First entry "}, context), {"text": "First entry", "entries": ["First entry"]});
337
+ assert.deepEqual(await program.functions.append({"text": "Second entry"}, context), {"text": "Second entry", "entries": ["First entry", "Second entry"]});
338
+ assert.deepEqual(context.state.read(), {"entries": ["First entry", "Second entry"]});
339
339
  });
340
340
  `,
341
341
  },
@@ -350,6 +350,6 @@ export const templateFiles = (template: ActorProgramTemplate, name: string): Rea
350
350
 
351
351
  export const templateById = (id: string): ActorProgramTemplate => {
352
352
  const template = runModuleTemplates.find((candidate) => candidate.id === id);
353
- if (!template) throw new Error(`Unbekannte Actor-Programm-Vorlage ${id}. Gültig: ${runModuleTemplates.map((entry) => entry.id).join(", ")}.`);
353
+ if (!template) throw new Error(`Unknown actor program template ${id}. Valid: ${runModuleTemplates.map((entry) => entry.id).join(", ")}.`);
354
354
  return template;
355
355
  };
@@ -79,7 +79,7 @@ export const createTestReport = async (directory: string) => {
79
79
  const describe = (failure: Extract<TestRecord, { kind: "fail" }>): string => {
80
80
  const fileOutput = failure.message === "test failed" && failure.file !== null ? stderrByFile.get(failure.file) ?? stderrByFile.get(relative(failure.file)) : undefined;
81
81
  const message = fileOutput ? errorLines(fileOutput).join("; ") : failure.generated ? failure.message.split("\n")[0]!.replace(/:$/, "") : failure.message.trim().slice(0, 500);
82
- const values = failure.expected === undefined || failure.expected === failure.actual ? "" : ` - erwartet ${failure.expected}, tatsächlich ${failure.actual}`;
82
+ const values = failure.expected === undefined || failure.expected === failure.actual ? "" : ` - expected ${failure.expected}, actual ${failure.actual}`;
83
83
  return `- ${failure.name} (${placeOf(failure)}): ${relative(message)}${relative(values)}`;
84
84
  };
85
85
 
@@ -93,12 +93,12 @@ export const createTestReport = async (directory: string) => {
93
93
  record(pending);
94
94
  pending = "";
95
95
  const summary = outcome.timedOut
96
- ? `Tests für ${name} nach Zeitüberschreitung abgebrochen: ${passed} bestanden, ${failed} fehlgeschlagen.`
97
- : `Tests für ${name} fehlgeschlagen: ${passed} bestanden, ${failed} fehlgeschlagen.`;
96
+ ? `Tests for ${name} canceled after a timeout: ${passed} passed, ${failed} failed.`
97
+ : `Tests for ${name} failed: ${passed} passed, ${failed} failed.`;
98
98
  const details = failures.map(describe);
99
- const more = failed > failures.length ? [`... und ${failed - failures.length} weitere`] : [];
99
+ const more = failed > failures.length ? [`... and ${failed - failures.length} more`] : [];
100
100
  const withoutResult = failed === 0
101
- ? [`Der Testlauf endete${outcome.code === null ? "" : ` mit Code ${outcome.code}`} ohne fehlgeschlagenen Test:`, ...errorLines([...unparsed, ...outcome.stderr.split("\n")]).map(relative)]
101
+ ? [`The test run ended${outcome.code === null ? "" : ` with code ${outcome.code}`} without a failed test:`, ...errorLines([...unparsed, ...outcome.stderr.split("\n")]).map(relative)]
102
102
  : [];
103
103
  return [summary, ...details, ...more, ...withoutResult].join("\n");
104
104
  },
@@ -12,7 +12,7 @@ const metadata = [
12
12
  { name: "actor_program_diagnostics", label: "Actor Program Diagnostics", description: "Read the last project diagnostics.", longDescription: "Changed errors are automatically supplied before the next model request." },
13
13
  ] as const;
14
14
  export const actorProgramManagementToolNames = metadata.map((entry) => entry.name);
15
- export const actorProgramToolsAvailable = defineToolAvailability({ availability: "conditional", availabilityDetail: "Für ausführbare Actors mit agent.spawn und plugin.state.write." }, actor => actor.kind !== "human" && holdsUsable(actor, "agent.spawn") && holdsUsable(actor, "plugin.state.write"));
15
+ export const actorProgramToolsAvailable = defineToolAvailability({ availability: "conditional", availabilityDetail: "For executable actors with agent.spawn and plugin.state.write." }, actor => actor.kind !== "human" && holdsUsable(actor, "agent.spawn") && holdsUsable(actor, "plugin.state.write"));
16
16
  const name = Type.String({ pattern: "^[a-z][a-z0-9-]{0,63}$" });
17
17
  type Diagnostics = Pick<ReturnType<typeof createProjectDiagnostics>, "latest">;
18
18
  const managementTools = (runtime: ActorProgramRuntime, diagnostics: Diagnostics): RunFunction[] => [
@@ -131,7 +131,7 @@ export function ActorViewFrame({
131
131
  const saved = entry;
132
132
  void pending.then((result) => { saved.result = result; });
133
133
  }
134
- publish(entry.result ?? { attachmentCapabilitiesError: "Modellfähigkeiten werden geprüft ..." });
134
+ publish(entry.result ?? { attachmentCapabilitiesError: "Checking model capabilities ..." });
135
135
  if (!entry.result) void entry.pending.then(publish);
136
136
  } catch (cause) {
137
137
  publish({ attachmentCapabilitiesError: cause instanceof Error ? cause.message : String(cause) });
@@ -157,7 +157,7 @@ export function ActorViewFrame({
157
157
  setActionError(undefined);
158
158
  setSubmitting((current) => [...current, request.requestId]);
159
159
  try {
160
- if (!writableRef.current) throw new Error("Du hast Lesezugriff auf diese Actor-Ansicht.");
160
+ if (!writableRef.current) throw new Error("You have read-only access to this actor view.");
161
161
  const invocation = await invoke(
162
162
  installedApp.id,
163
163
  installedApp.revision,
@@ -219,7 +219,7 @@ export function ActorViewFrame({
219
219
  }
220
220
  const { request } = validation;
221
221
  if (recentRequestIdsRef.current.has(request.requestId)) {
222
- postError(port, request.requestId, "Diese requestId wurde bereits verwendet");
222
+ postError(port, request.requestId, "This requestId has already been used");
223
223
  return;
224
224
  }
225
225
  recentRequestIdsRef.current.add(request.requestId);
@@ -240,7 +240,7 @@ export function ActorViewFrame({
240
240
  if (request.type === RUN_APP_CHAT_SEND) {
241
241
  void (async () => {
242
242
  try {
243
- if (!writableRef.current) throw new Error("Du hast Lesezugriff auf diesen Chat.");
243
+ if (!writableRef.current) throw new Error("You have read-only access to this chat.");
244
244
  const current = sessionRef.current;
245
245
  const snapshot = chatSnapshotOf(current, request.actor);
246
246
  if (snapshot.error) throw new Error(snapshot.error);
@@ -263,7 +263,7 @@ export function ActorViewFrame({
263
263
  }
264
264
  const action = installedApp.actions.find((entry) => entry.id === request.actionId);
265
265
  if (!action) {
266
- postError(port, request.requestId, "Die angeforderte App-Aktion ist nicht installiert");
266
+ postError(port, request.requestId, "The requested app action is not installed");
267
267
  return;
268
268
  }
269
269
  void executeRequest(request, port, generation, installedApp);
@@ -280,7 +280,7 @@ export function ActorViewFrame({
280
280
  port.onmessage = (event) => handlePortMessage(event.data, port, generation, installedApp);
281
281
  port.onmessageerror = () => {
282
282
  if (generation === bridgeGenerationRef.current && port === portRef.current) {
283
- postError(port, undefined, "Die App hat eine unlesbare Nachricht gesendet");
283
+ postError(port, undefined, "The app sent an unreadable message");
284
284
  }
285
285
  };
286
286
  port.start();
@@ -356,13 +356,13 @@ export function ActorViewFrame({
356
356
  pendingPort?.close();
357
357
  pendingPort = undefined;
358
358
  closeBridge();
359
- setFrameError("Die App hat ihre installierte Seite verlassen und wurde getrennt.");
359
+ setFrameError("The app left its installed page and was disconnected.");
360
360
  };
361
361
  window.addEventListener("message", receiveReady);
362
362
  frame.addEventListener("load", handleLoad);
363
363
  frame.src = `${frameUrl}#ragentsBridge=${encodeURIComponent(bridgeToken)}`;
364
364
  const timeout = window.setTimeout(() => {
365
- if (!bridgeConnectedRef.current) setFrameError("Die App hat keine gültige Host-Bridge geöffnet.");
365
+ if (!bridgeConnectedRef.current) setFrameError("The app did not open a valid host bridge.");
366
366
  }, 5_000);
367
367
  return () => {
368
368
  window.clearTimeout(timeout);
@@ -410,30 +410,30 @@ export function ActorViewFrame({
410
410
  ? app.actions.find((action) => action.id === confirmationInvocation.actionId)
411
411
  : undefined;
412
412
  const status = frameError
413
- ? { tone: "error", title: "App getrennt", detail: frameError }
413
+ ? { tone: "error", title: "App disconnected", detail: frameError }
414
414
  : submitting.length > 0
415
- ? { tone: "running", title: "Aktion wird gestartet", detail: `${submitting.length} Anfrage(n)` }
415
+ ? { tone: "running", title: "Starting action", detail: `${submitting.length} request(s)` }
416
416
  : confirmationAction
417
- ? { tone: "confirm", title: "Wartet auf Deine Bestätigung", detail: confirmationAction.label }
417
+ ? { tone: "confirm", title: "Waiting for your confirmation", detail: confirmationAction.label }
418
418
  : active.length > 0
419
- ? { tone: "running", title: "Aktion läuft", detail: active.map((invocation) =>
419
+ ? { tone: "running", title: "Action running", detail: active.map((invocation) =>
420
420
  app.actions.find((action) => action.id === invocation.actionId)?.label.trim()
421
421
  || (access.can("runs.inspect") ? invocation.actionId : "")).filter(Boolean).join(", ") }
422
422
  : actionError
423
- ? { tone: "error", title: "Aktion fehlgeschlagen", detail: actionError }
423
+ ? { tone: "error", title: "Action failed", detail: actionError }
424
424
  : latest?.status === "failed"
425
- ? { tone: "error", title: "Letzte Aktion fehlgeschlagen", detail: latest.error }
425
+ ? { tone: "error", title: "Last action failed", detail: latest.error }
426
426
  : latest?.status === "cancelled"
427
- ? { tone: "muted", title: "Letzte Aktion abgebrochen", detail: latest.actionId }
427
+ ? { tone: "muted", title: "Last action cancelled", detail: latest.actionId }
428
428
  : latest?.status === "succeeded"
429
429
  ? {
430
430
  tone: "success",
431
- title: "Letzte Aktion abgeschlossen",
431
+ title: "Last action completed",
432
432
  detail: latest.output.at(-1) ?? latest.actionId,
433
433
  }
434
434
  : bridgeReady
435
435
  ? undefined
436
- : { tone: "muted", title: "App wird geladen", detail: "Bridge noch nicht verbunden" };
436
+ : { tone: "muted", title: "Loading app", detail: "Bridge not connected yet" };
437
437
 
438
438
  const visibleStatus = status && (presentation === "fullscreen" ? status.tone === "error" : status.tone !== "success") ? status : undefined;
439
439
 
@@ -86,7 +86,7 @@ export function ActorProgramsProvider({
86
86
  const closeFullscreen = useCallback(() => setFullscreen(undefined), []);
87
87
  const openFullscreen = useCallback((appId: string) => {
88
88
  if (!actorProgramApps(session).some((app) => app.id === appId && app.app.visible !== false)) {
89
- throw new Error("Die Actor-Ansicht ist nicht auf der Fläche verfügbar.");
89
+ throw new Error("The actor view is not available on the surface.");
90
90
  }
91
91
  setFullscreen({ runId, appId });
92
92
  }, [runId, session]);
@@ -230,13 +230,13 @@ export function HostConfirmation({ action, session }: { action: RunAction; sessi
230
230
  };
231
231
 
232
232
  return (
233
- <section aria-label="Host-Bestätigung" className="grid flex-none gap-2 border-b border-border-soft bg-warning-soft px-workspace-inset py-2.5" data-slot="host-confirmation">
233
+ <section aria-label="Host confirmation" className="grid flex-none gap-2 border-b border-border-soft bg-warning-soft px-workspace-inset py-2.5" data-slot="host-confirmation">
234
234
  <header className="grid gap-0.5">
235
- <strong className="text-[0.72rem] text-foreground">Bestätigung im Host</strong>
236
- <span className="text-xs text-muted-foreground">Die App kann diese Entscheidung nicht selbst beantworten.</span>
235
+ <strong className="text-[0.72rem] text-foreground">Confirmation in the host</strong>
236
+ <span className="text-xs text-muted-foreground">The app cannot answer this decision itself.</span>
237
237
  </header>
238
238
  {busy
239
- ? <p className="text-xs text-muted-foreground">Antwort wird verarbeitet</p>
239
+ ? <p className="text-xs text-muted-foreground">Processing answer</p>
240
240
  : (
241
241
  <QuestionCard
242
242
  onAnswer={access.can("runs.write") ? (text: string) => void answer(text) : undefined}
@@ -261,7 +261,7 @@ export function ToolsPanel({ active, navigation, selection, session }: Workspace
261
261
  return (
262
262
  <div className="flex h-full items-center justify-center gap-2.5 text-sm text-muted-foreground">
263
263
  <Spinner aria-hidden aria-label={undefined} role={undefined} />
264
- <span>Funktionen werden geladen</span>
264
+ <span>Loading functions</span>
265
265
  </div>
266
266
  );
267
267
  }
@@ -270,11 +270,11 @@ export function ToolsPanel({ active, navigation, selection, session }: Workspace
270
270
  <Empty>
271
271
  <EmptyHeader>
272
272
  <EmptyMedia><IconTools /></EmptyMedia>
273
- <EmptyTitle>Funktionen konnten nicht geladen werden</EmptyTitle>
273
+ <EmptyTitle>Functions could not be loaded</EmptyTitle>
274
274
  <EmptyDescription>{error}</EmptyDescription>
275
275
  </EmptyHeader>
276
276
  <EmptyContent>
277
- <Button onClick={() => void refresh()} variant="outline">Erneut versuchen</Button>
277
+ <Button onClick={() => void refresh()} variant="outline">Retry</Button>
278
278
  </EmptyContent>
279
279
  </Empty>
280
280
  );
@@ -284,12 +284,12 @@ export function ToolsPanel({ active, navigation, selection, session }: Workspace
284
284
  <Empty>
285
285
  <EmptyHeader>
286
286
  <EmptyMedia><IconTools /></EmptyMedia>
287
- <EmptyTitle>Funktion nicht mehr verfügbar</EmptyTitle>
288
- <EmptyDescription>Das ausgewählte Actor-Funktion ist in diesem Run nicht mehr installiert.</EmptyDescription>
287
+ <EmptyTitle>Function no longer available</EmptyTitle>
288
+ <EmptyDescription>The selected actor function is no longer installed in this run.</EmptyDescription>
289
289
  </EmptyHeader>
290
290
  <EmptyContent>
291
291
  <Button onClick={() => navigation.openTab(RUN_TOOLS_TAB_ID, null)} variant="outline">
292
- Zur Übersicht
292
+ To overview
293
293
  </Button>
294
294
  </EmptyContent>
295
295
  </Empty>
@@ -299,12 +299,12 @@ export function ToolsPanel({ active, navigation, selection, session }: Workspace
299
299
  return (
300
300
  <div className="flex h-full min-h-0 flex-col">
301
301
  <header className={headClass}>
302
- <Button aria-label="Zurück zur Funktionsübersicht" onClick={() => navigation.openTab(RUN_TOOLS_TAB_ID, null)} size="icon-sm" title="Zurück zur Funktionsübersicht" variant="outline">
302
+ <Button aria-label="Back to function overview" onClick={() => navigation.openTab(RUN_TOOLS_TAB_ID, null)} size="icon-sm" title="Back to function overview" variant="outline">
303
303
  <ArrowLeftIcon />
304
304
  </Button>
305
305
  <span className="grid min-w-0 gap-px">
306
306
  <strong className="truncate text-[0.82rem] font-semibold" title={selected.name}>{selected.name}</strong>
307
- <small className="truncate text-xs text-muted-foreground">Funktion von @{selected.actorHandle}</small>
307
+ <small className="truncate text-xs text-muted-foreground">Function of @{selected.actorHandle}</small>
308
308
  </span>
309
309
  </header>
310
310
  <div className="flex min-h-0 flex-col gap-[22px] overflow-y-auto px-workspace-inset pt-[18px] pb-7">
@@ -316,7 +316,7 @@ export function ToolsPanel({ active, navigation, selection, session }: Workspace
316
316
  </div>
317
317
  </div>
318
318
  <section>
319
- <h3 className={sectionLabelClass}>Verfügbar für</h3>
319
+ <h3 className={sectionLabelClass}>Available to</h3>
320
320
  <div className="flex flex-wrap gap-1.5">
321
321
  {selected.targets.map((target) => <span className="rounded-full bg-primary/9 px-2 py-1 text-xs text-foreground" key={target.actorId}>{targetLabel(target)}</span>)}
322
322
  </div>
@@ -327,8 +327,8 @@ export function ToolsPanel({ active, navigation, selection, session }: Workspace
327
327
  </section>
328
328
  <ProgramSource api={api} moduleId={selected.moduleId} revision={selected.revision} runId={runId} />
329
329
  <dl className="grid grid-cols-2 gap-2">
330
- {[{ label: "Programm", value: selected.moduleId, title: undefined },
331
- { label: "Quellhash", value: selected.sourceHash.slice(0, 12), title: selected.sourceHash }].map((fact) => (
330
+ {[{ label: "Program", value: selected.moduleId, title: undefined },
331
+ { label: "Source hash", value: selected.sourceHash.slice(0, 12), title: selected.sourceHash }].map((fact) => (
332
332
  <div className="grid gap-[3px] rounded-lg bg-foreground/4 px-2.5 py-2" key={fact.label}>
333
333
  <dt className="text-[0.61rem] text-muted-foreground uppercase">{fact.label}</dt>
334
334
  <dd className="truncate font-mono text-xs text-foreground" title={fact.title}>{fact.value}</dd>
@@ -344,8 +344,8 @@ export function ToolsPanel({ active, navigation, selection, session }: Workspace
344
344
  <Empty>
345
345
  <EmptyHeader>
346
346
  <EmptyMedia><IconTools /></EmptyMedia>
347
- <EmptyTitle>Noch keine Funktionen</EmptyTitle>
348
- <EmptyDescription>Von Agenten erstellte Actor-Funktionen dieses Runs erscheinen hier.</EmptyDescription>
347
+ <EmptyTitle>No functions yet</EmptyTitle>
348
+ <EmptyDescription>Actor functions created by agents in this run appear here.</EmptyDescription>
349
349
  </EmptyHeader>
350
350
  </Empty>
351
351
  );
@@ -367,7 +367,7 @@ export function ToolsPanel({ active, navigation, selection, session }: Workspace
367
367
  <small className="truncate text-[0.69rem] text-muted-foreground">{tool.description}</small>
368
368
  </span>
369
369
  <Badge className="max-w-[132px] truncate @max-[470px]:hidden" variant="secondary">
370
- {tool.targets.length} {tool.targets.length === 1 ? "Agent" : "Agenten"}
370
+ {tool.targets.length} {tool.targets.length === 1 ? "agent" : "agents"}
371
371
  </Badge>
372
372
  <IconOpen />
373
373
  </button>
@@ -376,7 +376,7 @@ export function ToolsPanel({ active, navigation, selection, session }: Workspace
376
376
  );
377
377
  }
378
378
 
379
- /** Ein Klick auf eine Mini-App wählt ihre Kachel auf der Fläche; die Fläche ist der Flächen-Controller des Orchestrierungs-Plugins. */
379
+ /** A click on a mini-app selects its tile on the surface; the surface is the surface controller of the orchestration plugin. */
380
380
  export function ActorProgramsHeader({ session }: SessionHeaderContext) {
381
381
  const canArrange = useAccess().can("runs.inspect");
382
382
  const surface = useSurfaceController();
@@ -386,7 +386,7 @@ export function ActorProgramsHeader({ session }: SessionHeaderContext) {
386
386
  if (apps.length === 0) return null;
387
387
 
388
388
  return (
389
- <nav aria-label="Actor-Ansichten" className="flex min-w-0 flex-none items-stretch">
389
+ <nav aria-label="Actor views" className="flex min-w-0 flex-none items-stretch">
390
390
  {apps.map((app) => (
391
391
  <div role="group" aria-label={app.title} key={`app:${app.id}`}
392
392
  className={cn("relative flex flex-none items-stretch border-r border-border hover:bg-accent focus-within:bg-accent",
@@ -402,19 +402,19 @@ export function ActorProgramsHeader({ session }: SessionHeaderContext) {
402
402
  closeFullscreen();
403
403
  }}
404
404
  onClick={() => {
405
- if (!surface) throw new Error("Die App-Zugänge brauchen den Flächen-Controller des Orchestrierungs-Plugins.");
405
+ if (!surface) throw new Error("The app entries need the surface controller of the orchestration plugin.");
406
406
  closeFullscreen();
407
407
  surface.acceptSelection({ type: "run-app", id: app.id });
408
408
  }}
409
- aria-label={`Mini-App: ${app.title} von @${app.actorHandle}`}
410
- title={`Mini-App: ${app.title} von @${app.actorHandle}${canArrange ? ". Zum Andocken auf eine Kachel ziehen." : ""}`}
409
+ aria-label={`Mini-app: ${app.title} of @${app.actorHandle}`}
410
+ title={`Mini-app: ${app.title} of @${app.actorHandle}${canArrange ? ". Drag onto a tile to dock." : ""}`}
411
411
  type="button"
412
412
  >
413
413
  <span className={cn(quickIconClass, !stage.has(`app:${app.id}`) && "bg-transparent")}><LayoutGridIcon size={20} /></span>
414
414
  <ToolbarCopy><ToolbarLabel>@{app.actorHandle}</ToolbarLabel><ToolbarText>{app.title}</ToolbarText></ToolbarCopy>
415
415
  </ToolbarItem>
416
- <ToolbarItem as="button" aria-expanded={fullscreenAppId === app.id} aria-label={`${app.title} ${fullscreenAppId === app.id ? "Vollansicht schließen" : "in Vollansicht öffnen"}`}
417
- title={`${app.title} ${fullscreenAppId === app.id ? "Vollansicht schließen" : "in Vollansicht öffnen"}`}
416
+ <ToolbarItem as="button" aria-expanded={fullscreenAppId === app.id} aria-label={`${app.title} ${fullscreenAppId === app.id ? "close full view" : "open in full view"}`}
417
+ title={`${app.title} ${fullscreenAppId === app.id ? "close full view" : "open in full view"}`}
418
418
  className="relative w-[38px] justify-center border-r-0 p-0 hover:not-disabled:bg-transparent before:pointer-events-none before:absolute before:top-1/4 before:bottom-1/4 before:left-0 before:border-l before:border-dashed before:border-border-strong before:content-['']"
419
419
  onClick={() => fullscreenAppId === app.id ? closeFullscreen() : openFullscreen(app.id)} type="button">
420
420
  <ExpandIcon />
@@ -37,9 +37,9 @@ export const actorProgramSurfaceElements = (session: SessionContext): readonly S
37
37
  const placement = Array.isArray(rawPlacements) ? rawPlacements.find((entry) => isRecord(entry) && entry.kind === "canvas") : undefined;
38
38
  const surface = isRecord(placement) ? placement : undefined;
39
39
  if (surface && typeof surface.anchorActorId !== "string") {
40
- throw new Error(`Die Flächenplatzierung der Actor-Ansicht ${module.title} ist ungültig`);
40
+ throw new Error(`The surface placement of the actor view ${module.title} is invalid`);
41
41
  }
42
- if (surface && surface.anchorActorId !== module.actorId) throw new Error(`Die Ansicht ${module.title} gehört zu @${module.actorHandle}.`);
42
+ if (surface && surface.anchorActorId !== module.actorId) throw new Error(`The view ${module.title} belongs to @${module.actorHandle}.`);
43
43
  return [{
44
44
  id: module.id,
45
45
  title: module.title,
@@ -68,7 +68,7 @@ export function ActorProgramSurfaceElement({ definition, session }: SurfaceEleme
68
68
  ) : (
69
69
  <div className="flex flex-1 items-center justify-center gap-2 text-[0.7rem] text-muted-foreground">
70
70
  <Spinner aria-hidden aria-label={undefined} role={undefined} />
71
- <span>Actor-Ansicht wird geladen</span>
71
+ <span>Loading actor view</span>
72
72
  </div>
73
73
  );
74
74
  return (