@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
@@ -1,7 +1,7 @@
1
1
  import type { ConnectionStateName } from "../ui/state-vocabulary";
2
2
  import type { ConnectionView, MissingEnvironment } from "./contract";
3
3
 
4
- /** Der Zustand eines Servers im Vokabular der Seiten; ein lokales Profil ist verbunden nicht "verbunden", sondern bereit. */
4
+ /** The state of a server in the vocabulary of the pages; a connected local profile is not "connected" but ready. */
5
5
  export const connectionState = (connection: ConnectionView): ConnectionStateName => {
6
6
  switch (connection.state.kind) {
7
7
  case "stopped": return "stopped";
@@ -15,12 +15,12 @@ export const connectionState = (connection: ConnectionView): ConnectionStateName
15
15
  }
16
16
  };
17
17
 
18
- /** Warum eine fehlende Umgebungsvariable den Start aufhält: welche, wofür sie das Profil braucht und wohin ihr Wert gehört. */
18
+ /** Why a missing environment variable holds up the start: which one, what the profile needs it for, and where its value belongs. */
19
19
  const missingEnvironmentDetail = (missing: MissingEnvironment): string =>
20
- `Die Umgebungsvariable ${missing.variable} ist nicht gesetzt; die Konfiguration verlangt sie für ${missing.section}.${missing.key}. `
21
- + "Hinterlege ihren Wert als Secret in VS Code; er bleibt in der SecretStorage und kommt beim nächsten Start in die Umgebung des Hosts.";
20
+ `The environment variable ${missing.variable} is not set; the configuration requires it for ${missing.section}.${missing.key}. `
21
+ + "Store its value as a secret in VS Code; it stays in the SecretStorage and goes into the host's environment on the next start.";
22
22
 
23
- /** Der Grund, der zum Zustand gehört; er steht unter der Zeile des Servers. */
23
+ /** The reason that belongs to the state; it appears below the server's row. */
24
24
  export const stateDetail = (connection: ConnectionView): string | undefined => {
25
25
  if (connection.missingEnvironment) return missingEnvironmentDetail(connection.missingEnvironment);
26
26
  const state = connection.state;
@@ -28,13 +28,13 @@ export const stateDetail = (connection: ConnectionView): string | undefined => {
28
28
  return undefined;
29
29
  };
30
30
 
31
- export const kindLabel = (connection: ConnectionView): string => connection.kind === "profile" ? "lokales Profil" : "Server";
31
+ export const kindLabel = (connection: ConnectionView): string => connection.kind === "profile" ? "local profile" : "server";
32
32
 
33
- /** Die Zielzeile unter dem Namen: das lokale Profil, der Host des Servers oder der Server, dessen Profil lokal läuft. */
33
+ /** The route line below the name: the local profile, the server's host, or the server whose profile runs locally. */
34
34
  export const routeLabel = (connection: ConnectionView): string => {
35
35
  const route = connection.route;
36
- if (route.kind === "profile") return `lokal \u00b7 ${route.profile}`;
37
- return route.localHost ? `${route.host} \u00b7 lokal` : route.host;
36
+ if (route.kind === "profile") return `local \u00b7 ${route.profile}`;
37
+ return route.localHost ? `${route.host} \u00b7 local` : route.host;
38
38
  };
39
39
 
40
40
  export const busyState = (connection: ConnectionView): boolean => connection.state.kind === "starting" || connection.state.kind === "connecting";
@@ -1,6 +1,6 @@
1
1
  import type { RunPanelTheme } from "../run-panel/host-contract";
2
2
 
3
- /** Ein Server der Erweiterung: ein RAgents-Server per Adresse oder ein lokales Profil, das sie selbst startet. */
3
+ /** A server of the extension: a RAgents server by address or a local profile that the extension starts itself. */
4
4
  export type ConnectionKind = "server" | "profile";
5
5
 
6
6
  export type ConnectionState =
@@ -13,10 +13,10 @@ export type ConnectionState =
13
13
  | { readonly kind: "forbidden"; readonly message: string }
14
14
  | { readonly kind: "failed"; readonly message: string };
15
15
 
16
- /** Eine Umgebungsvariable, die die Konfiguration eines Profils mit env("NAME") verlangt, ohne dass sie gesetzt ist. */
16
+ /** An environment variable that a profile's configuration requires with env("NAME") without it being set. */
17
17
  export interface MissingEnvironment {
18
18
  readonly variable: string;
19
- /** Die Sektion der Konfiguration, die sie braucht, etwa ein Plugin. */
19
+ /** The configuration section that needs it, for example a plugin. */
20
20
  readonly section: string;
21
21
  readonly key: string;
22
22
  }
@@ -27,9 +27,9 @@ export interface ConnectionRun {
27
27
  readonly state: "running" | "waiting" | "idle" | "ended";
28
28
  readonly pendingActions: number;
29
29
  readonly updatedAt: number;
30
- /** Die Erweiterung konnte die Run-Ansicht nicht lesen; die Zeile nennt den Grund. */
30
+ /** The extension could not read the run view; the row names the reason. */
31
31
  readonly problem?: string;
32
- /** Warum der Server den Run gesperrt hat; die Zeile öffnet ihn nicht, löschen bleibt möglich. */
32
+ /** Why the server locked the run; the row does not open it, deleting stays possible. */
33
33
  readonly locked?: string;
34
34
  }
35
35
 
@@ -38,13 +38,13 @@ export interface ConnectionEntry {
38
38
  readonly title: string;
39
39
  readonly description: string;
40
40
  readonly kind: "skill" | "script";
41
- /** Die Gruppe der Vorlagen auf Start; ein Run-Script ohne eigene Kategorie steht unter "Run-Scripts". */
41
+ /** The template group on Start; a run script without its own category is listed under "Run scripts". */
42
42
  readonly category: string;
43
- /** Ein Leitfaden fragt vor dem Start nach; die Vorlage heißt dann "Einrichten" statt "Starten". */
43
+ /** A guide asks questions before the start; the template is then labeled "Set up" instead of "Start". */
44
44
  readonly guided?: boolean;
45
45
  }
46
46
 
47
- /** Wohin der Server geht: ein lokales Profil, eine Adresse oder eine Adresse, deren verteiltes Profil auf einem lokalen Host läuft. */
47
+ /** Where the server points: a local profile, an address, or an address whose distributed profile runs on a local host. */
48
48
  export type ConnectionRoute =
49
49
  | { readonly kind: "profile"; readonly profile: string }
50
50
  | { readonly kind: "server"; readonly host: string; readonly localHost: boolean };
@@ -52,57 +52,64 @@ export type ConnectionRoute =
52
52
  export interface ConnectionView {
53
53
  readonly name: string;
54
54
  readonly kind: ConnectionKind;
55
- /** Adresse des Servers oder Pfad der Profildatei. */
55
+ /** Address of the server or path of the profile file. */
56
56
  readonly address: string;
57
57
  readonly route: ConnectionRoute;
58
58
  readonly state: ConnectionState;
59
59
  readonly runs: readonly ConnectionRun[];
60
60
  readonly entries: readonly ConnectionEntry[];
61
- /** Die Vorlage aus entries, die das Plus am Chip nimmt und die auf Start zuerst steht; ohne sie ist ein neuer Run ein leerer Chat. */
61
+ /** The template from entries that the plus on the chip uses and that comes first on Start; without it a new run is an empty chat. */
62
62
  readonly defaultEntry?: string;
63
- /** Neue Runs sind erlaubt; ohne das Recht bleibt nur die Liste. */
63
+ /** New runs are allowed; without the right only the list remains. */
64
64
  readonly canCreate: boolean;
65
- /** Der angemeldete Benutzer, sofern der Server Benutzer führt. */
65
+ /** The signed-in user, if the server manages users. */
66
66
  readonly user?: string;
67
- /** Die zuletzt versuchte Kennung; das Anmeldeformular übernimmt sie. */
67
+ /** The most recently tried user name; the sign-in form takes it over. */
68
68
  readonly loginUser?: string;
69
- /** Anmeldedaten liegen in der SecretStorage, damit sich die Erweiterung still am Server anmeldet. */
69
+ /** Credentials are stored in the SecretStorage so the extension signs in to the server silently. */
70
70
  readonly savedLogin?: boolean;
71
- /** Fehler der letzten Aktion an diesem Server, direkt in seiner Zeile. */
71
+ /** Error of the last action on this server, directly in its row. */
72
72
  readonly problem?: string;
73
- /** Start oder Übernahme scheiterten an dieser Umgebungsvariablen; die Zeile führt von hier zum Wert und zum neuen Versuch. */
73
+ /** Start or takeover failed because of this environment variable; the row leads from here to the value and the retry. */
74
74
  readonly missingEnvironment?: MissingEnvironment;
75
+ /** Extension and server carry a different RAgents version; an error if the workstation is not registered because of it. */
76
+ readonly versionNotice?: ConnectionNotice;
75
77
  }
76
78
 
77
- /** Die vier Seiten der Erweiterung; "run" zeigt das Run-Panel statt dieser Seite. */
79
+ export interface ConnectionNotice {
80
+ readonly level: "error" | "warning";
81
+ readonly text: string;
82
+ }
83
+
84
+ /** The four pages of the extension; "run" shows the run panel instead of this page. */
78
85
  export type PanelPage = "start" | "runs" | "run" | "connections";
79
86
 
80
- /** Die Seiten, auf die das Panel selbst umschalten darf; zum Run führt openRun. */
87
+ /** The pages the panel may switch to itself; openRun leads to the run. */
81
88
  export const PANEL_PAGES = ["start", "runs", "connections"] as const;
82
89
 
83
90
  export interface PanelState {
84
91
  readonly theme: RunPanelTheme;
85
92
  readonly page: PanelPage;
86
93
  readonly connections: readonly ConnectionView[];
87
- /** Die Profildateien im Host-Ordner; der Dialog bietet sie an, ohne Host bleibt die Liste leer. */
94
+ /** The profile files in the host folder; the dialog offers them, without a host the list stays empty. */
88
95
  readonly profileSuggestions: readonly string[];
89
- /** Die Einstellung ragents.connections ist fehlerhaft; die Seite nennt den Grund. */
96
+ /** The ragents.connections setting is invalid; the page names the reason. */
90
97
  readonly problem?: string;
91
- /** Der zuletzt über den Dateidialog gewählte Profilpfad; der Dialog übernimmt ihn. */
98
+ /** The profile path most recently chosen in the file dialog; the dialog takes it over. */
92
99
  readonly pickedProfileFile?: string;
93
- /** Die Seite Runs beginnt mit den Runs dieses Servers; der Chip auf Start setzt ihn, die Titelzeile nicht. */
100
+ /** The Runs page starts with the runs of this server; the chip on Start sets it, the title bar does not. */
94
101
  readonly runsConnection?: string;
95
- /** Namen aus ragents.hostEnvironment ohne Wert in der SecretStorage; die Einstellung gilt für alle Server, darum steht die Liste einmal. */
102
+ /** Names from ragents.hostEnvironment without a value in the SecretStorage; the setting applies to all servers, so the list appears once. */
96
103
  readonly missingSecrets?: readonly string[];
97
104
  }
98
105
 
99
- /** Der Zustand kommt von der Erweiterung, zuerst eingebettet in die Seite, danach als Nachricht. */
106
+ /** The state comes from the extension, first embedded in the page, then as a message. */
100
107
  export interface PanelStateMessage {
101
108
  readonly type: "ragents.panel.state";
102
109
  readonly state: PanelState;
103
110
  }
104
111
 
105
- /** Was die Panelseite an die Erweiterung schickt. */
112
+ /** What the panel page sends to the extension. */
106
113
  export type PanelAction =
107
114
  | { readonly action: "page"; readonly page: (typeof PANEL_PAGES)[number]; readonly connection?: string }
108
115
  | { readonly action: "settingsFile" }
@@ -113,8 +120,8 @@ export type PanelAction =
113
120
  | { readonly action: "updateServer"; readonly name: string; readonly newName: string; readonly url: string }
114
121
  | { readonly action: "updateProfile"; readonly name: string; readonly newName: string; readonly profileFile: string }
115
122
  | { readonly action: "remove" | "connect" | "disconnect" | "logout" | "startProfile" | "stopProfile" | "retry"; readonly name: string }
116
- /** Der Name einer Umgebungsvariablen, nicht der eines Servers: die Erweiterung fragt den Wert ab und legt ihn in die SecretStorage.
117
- * Mit connection kommt der Name zuerst in ragents.hostEnvironment, und dieser Server startet danach erneut. */
123
+ /** The name of an environment variable, not of a server: the extension asks for the value and puts it into the SecretStorage.
124
+ * With connection the name first goes into ragents.hostEnvironment, and this server then restarts. */
118
125
  | { readonly action: "setSecret"; readonly name: string; readonly connection?: string }
119
126
  | { readonly action: "login"; readonly name: string; readonly user: string; readonly password: string }
120
127
  | { readonly action: "login"; readonly name: string; readonly token: string }
@@ -9,7 +9,7 @@ declare function acquireVsCodeApi(): { postMessage(message: unknown): void };
9
9
 
10
10
  const root = document.getElementById("root");
11
11
  const embedded = document.getElementById("state");
12
- if (!root || !embedded?.textContent) throw new Error("Root-Element oder eingebetteter Zustand fehlt");
12
+ if (!root || !embedded?.textContent) throw new Error("Root element or embedded state is missing");
13
13
 
14
14
  const vscode = acquireVsCodeApi();
15
15
  const initial = JSON.parse(embedded.textContent) as PanelState;
@@ -36,17 +36,17 @@ const isWebPlugin = (value: unknown): value is WebPlugin =>
36
36
  const webPluginFrom = (id: string, module: unknown): WebPlugin => {
37
37
  const plugin = (module as Record<string, unknown>).webPlugin;
38
38
  if (!isWebPlugin(plugin)) {
39
- throw new Error(`Der Web-Einstieg des Plugins ${id} exportiert keine Konstante webPlugin mit einer Plugin-Kennung`);
39
+ throw new Error(`The web entry of plugin ${id} does not export a webPlugin constant with a plugin id`);
40
40
  }
41
41
  if (plugin.id !== id) {
42
- throw new Error(`Das Bundle ${id} meldet die abweichende Kennung ${plugin.id}`);
42
+ throw new Error(`The bundle ${id} reports the different id ${plugin.id}`);
43
43
  }
44
44
  return plugin;
45
45
  };
46
46
 
47
47
  const loaded = <T>(id: string, url: string, load: Promise<T>): Promise<T> =>
48
48
  load.catch((cause: unknown) => {
49
- throw new Error(`Die Web-Hälfte des Plugins ${id} lädt nicht von ${url}: ${cause instanceof Error ? cause.message : String(cause)}`);
49
+ throw new Error(`The web half of plugin ${id} does not load from ${url}: ${cause instanceof Error ? cause.message : String(cause)}`);
50
50
  });
51
51
 
52
52
  /** A plugin without a web half stays a bare descriptor; one with a web half loads its bundle and stylesheet. */
@@ -97,12 +97,12 @@ export const pluginBootstrapFrom = (value: unknown): PluginBootstrap => {
97
97
  || value.defaultStartEntry !== undefined && typeof value.defaultStartEntry !== "string"
98
98
  || typeof value.product.id !== "string" || !value.product.id
99
99
  || typeof value.product.title !== "string" || !value.product.title) {
100
- throw new Error("Die Plugin-Konfiguration entspricht nicht dem erwarteten Format");
100
+ throw new Error("The plugin configuration does not match the expected format");
101
101
  }
102
102
  const plugins = value.plugins.map((entry): PluginDescriptor => {
103
103
  if (!isRecord(entry) || typeof entry.id !== "string" || !entry.id || entry.web !== undefined && !isWebAddresses(entry.web)
104
104
  || entry.config !== undefined && !isRecord(entry.config)) {
105
- throw new Error("Die Plugin-Konfiguration enthält einen ungültigen Plugin-Descriptor");
105
+ throw new Error("The plugin configuration contains an invalid plugin descriptor");
106
106
  }
107
107
  return {
108
108
  id: entry.id,
@@ -21,7 +21,7 @@ const modelPresentationFrom = (presentation: unknown, optionId: string): ModelPr
21
21
  const raw = presentation as Record<string, unknown> | null;
22
22
  if (typeof raw !== "object" || raw === null || raw.kind !== "model"
23
23
  || typeof raw.provider !== "string" || !isStringList(raw.options) || !isStringList(raw.thinkingOptions)) {
24
- throw new Error(`Die Startoption ${optionId} liefert keine Modell-Darstellung`);
24
+ throw new Error(`The start option ${optionId} does not provide a model presentation`);
25
25
  }
26
26
  return { provider: raw.provider, options: raw.options, thinkingOptions: raw.thinkingOptions };
27
27
  };
@@ -30,7 +30,7 @@ const modelValueFrom = (value: unknown, optionId: string): ModelValue => {
30
30
  const raw = value as Record<string, unknown> | null;
31
31
  if (typeof raw !== "object" || raw === null || typeof raw.model !== "string"
32
32
  || (raw.thinking !== undefined && typeof raw.thinking !== "string")) {
33
- throw new Error(`Der Wert der Startoption ${optionId} ist keine Modellwahl`);
33
+ throw new Error(`The value of start option ${optionId} is not a model choice`);
34
34
  }
35
35
  return { model: raw.model, ...(typeof raw.thinking === "string" ? { thinking: raw.thinking } : {}) };
36
36
  };
@@ -66,7 +66,7 @@ export function ModelControl({ disabled, error, option, setValue }: StartOptionC
66
66
  return (
67
67
  <div className="grid flex-1 min-w-0 grid-cols-[minmax(0,1fr)_auto] items-center gap-1.5">
68
68
  <Select disabled={disabled} items={modelOptions} value={value.model} onValueChange={(model) => { if (model !== null) chooseModel(model); }}>
69
- <SelectTrigger aria-label="Modell" className="min-w-0 max-w-full" size="sm"><SelectValue /></SelectTrigger>
69
+ <SelectTrigger aria-label="Model" className="min-w-0 max-w-full" size="sm"><SelectValue /></SelectTrigger>
70
70
  <SelectContent>{modelOptions.map((option) => <SelectItem key={option.value} value={option.value}>{option.label}</SelectItem>)}</SelectContent>
71
71
  </Select>
72
72
  {presentation.thinkingOptions.length > 0 && (
@@ -7,10 +7,10 @@ import { modelDraftOf, requestProductModelSettings } from "./model-settings";
7
7
  import { modelDefaultsChangedEvent } from "../model-settings-events";
8
8
 
9
9
  const profileLabels: Record<string, { title: string; description: string }> = {
10
- coordinator: { title: "Run-Koordinator", description: "Die Vorgabe beim Start eines neuen Runs." },
11
- relay: { title: "Vermittler", description: "Agenten, die Nachrichten und Ergebnisse weitergeben." },
12
- standard: { title: "Agenten", description: "Die Vorgabe für weitere Agenten im Run." },
13
- reviewer: { title: "Prüfung", description: "Die Vorgabe für Agenten mit Prüfauftrag." },
10
+ coordinator: { title: "Run coordinator", description: "The default when a new run starts." },
11
+ relay: { title: "Relay", description: "Agents that pass on messages and results." },
12
+ standard: { title: "Agents", description: "The default for further agents in the run." },
13
+ reviewer: { title: "Review", description: "The default for agents with a review task." },
14
14
  };
15
15
 
16
16
  type LoadState = { status: "loading" } | { status: "failed"; error: string }
@@ -54,9 +54,9 @@ export function ProductModelSettings({ pluginId }: { pluginId: string }) {
54
54
  if (!readable) return null;
55
55
  if (state.status === "failed") return <Alert variant="destructive">
56
56
  <AlertDescription>{state.error}</AlertDescription>
57
- <AlertAction><Button onClick={() => setRetry((value) => value + 1)} size="sm" variant="outline">Erneut laden</Button></AlertAction>
57
+ <AlertAction><Button onClick={() => setRetry((value) => value + 1)} size="sm" variant="outline">Reload</Button></AlertAction>
58
58
  </Alert>;
59
- if (state.status !== "ready" || !draft) return <p role="status">Modellvorgaben werden geladen ...</p>;
59
+ if (state.status !== "ready" || !draft) return <p role="status">Loading model defaults ...</p>;
60
60
  const { settings } = state;
61
61
  const change = (name: string, model: string, thinking: ProductModelDraft["profiles"][number]["thinking"]) => {
62
62
  setDraft({ profiles: draft.profiles.map((profile) => profile.name === name ? { ...profile, model, thinking } : profile) });
@@ -73,18 +73,18 @@ export function ProductModelSettings({ pluginId }: { pluginId: string }) {
73
73
  const saved = await requestProductModelSettings(pluginId, { draft });
74
74
  setState({ status: "ready", settings: saved });
75
75
  setDraft(modelDraftOf(saved));
76
- setNotice("Vorgaben gespeichert. Sie gelten für neue Actors und noch nicht gestartete Runs.");
76
+ setNotice("Defaults saved. They apply to new actors and runs that have not started yet.");
77
77
  window.dispatchEvent(new Event(modelDefaultsChangedEvent));
78
78
  } catch (cause) { setError(messageOf(cause)); }
79
79
  finally { saving.current = false; setPending(false); }
80
80
  };
81
- return <form className="grid min-w-0 gap-4.5" aria-label="Modellvorgaben für neue Runs und Agenten" onSubmit={(event) => {
81
+ return <form className="grid min-w-0 gap-4.5" aria-label="Model defaults for new runs and agents" onSubmit={(event) => {
82
82
  event.preventDefault();
83
83
  void save();
84
84
  }}>
85
- <p className={noteClass}>Für dieses Profil gespeichert. Bereits angelegte Actors behalten ihr Modell.
86
- Eine ausdrücklich gewählte Modellauswahl im Run hat Vorrang.</p>
87
- {!writable && <p className={noteClass}>Du hast Lesezugriff auf diese Einstellungen.</p>}
85
+ <p className={noteClass}>Saved for this profile. Actors that already exist keep their model.
86
+ A model explicitly chosen in the run takes precedence.</p>
87
+ {!writable && <p className={noteClass}>You have read access to these settings.</p>}
88
88
  <div className="grid gap-4">
89
89
  {settings.profiles.map((profile) => {
90
90
  const value = draft.profiles.find((entry) => entry.name === profile.name)!;
@@ -102,9 +102,9 @@ export function ProductModelSettings({ pluginId }: { pluginId: string }) {
102
102
  const next = settings.models.find((entry) => entry.id === model && entry.provider === profile.provider)!;
103
103
  const thinking = next.thinking.includes(value.thinking) ? value.thinking : next.thinking[0]!;
104
104
  change(profile.name, model, thinking);
105
- if (thinking !== value.thinking) setNotice(`Für ${label.title} wurde die verfügbare Reasoning-Stufe ${thinkingLabel(thinking)} gewählt. Prüfe sie vor dem Speichern.`);
105
+ if (thinking !== value.thinking) setNotice(`The available reasoning level ${thinkingLabel(thinking)} was chosen for ${label.title}. Check it before saving.`);
106
106
  }}>
107
- <SelectTrigger aria-label="Modell" className={triggerClass}><SelectValue /></SelectTrigger>
107
+ <SelectTrigger aria-label="Model" className={triggerClass}><SelectValue /></SelectTrigger>
108
108
  <SelectContent>{modelOptions.map((option) => <SelectItem key={option.value} value={option.value}>{option.label}</SelectItem>)}</SelectContent>
109
109
  </Select>
110
110
  <Select disabled={!writable || pending || metadata.thinking.length < 2} items={thinkingOptions} value={value.thinking}
@@ -120,11 +120,11 @@ export function ProductModelSettings({ pluginId }: { pluginId: string }) {
120
120
  })}
121
121
  </div>
122
122
  <div className="flex flex-wrap items-center gap-2.5">
123
- <Button type="submit" disabled={!writable || pending || !dirty}>{pending ? "Wird gespeichert ..." : "Vorgaben speichern"}</Button>
123
+ <Button type="submit" disabled={!writable || pending || !dirty}>{pending ? "Saving ..." : "Save defaults"}</Button>
124
124
  {dirty && <Button disabled={pending} variant="outline" onClick={() => {
125
125
  setDraft(modelDraftOf(settings)); setError(undefined); setNotice(undefined);
126
- }}>Änderungen verwerfen</Button>}
127
- <span className={`${noteClass} basis-full`} role="status">{notice ?? (dirty ? "Ungespeicherte Änderungen" : "")}</span>
126
+ }}>Discard changes</Button>}
127
+ <span className={`${noteClass} basis-full`} role="status">{notice ?? (dirty ? "Unsaved changes" : "")}</span>
128
128
  </div>
129
129
  {error && <Alert variant="destructive"><AlertDescription>{error}</AlertDescription></Alert>}
130
130
  </form>;
@@ -28,7 +28,7 @@ const presentationFrom = (presentation: unknown, optionId: string): SystemPrompt
28
28
  const raw = presentation as Record<string, unknown> | null;
29
29
  if (typeof raw !== "object" || raw === null || raw.kind !== "system-prompt"
30
30
  || !Array.isArray(raw.options) || !raw.options.every(isPromptOption)) {
31
- throw new Error(`Die Startoption ${optionId} liefert keine Systemprompt-Darstellung`);
31
+ throw new Error(`The start option ${optionId} does not provide a system prompt presentation`);
32
32
  }
33
33
  return { options: raw.options };
34
34
  };
@@ -38,7 +38,7 @@ const valueFrom = (value: unknown, optionId: string): SystemPromptValue => {
38
38
  if (typeof raw !== "object" || raw === null
39
39
  || !Array.isArray(raw.promptIds) || raw.promptIds.some((id) => typeof id !== "string")
40
40
  || typeof raw.shareWithAgents !== "boolean") {
41
- throw new Error(`Der Wert der Startoption ${optionId} ist keine Systemprompt-Auswahl`);
41
+ throw new Error(`The value of start option ${optionId} is not a system prompt selection`);
42
42
  }
43
43
  return { promptIds: raw.promptIds as string[], shareWithAgents: raw.shareWithAgents };
44
44
  };
@@ -75,9 +75,9 @@ export function SystemPromptControl({ disabled, error, option, setValue }: Start
75
75
 
76
76
  return (
77
77
  <div className="flex flex-col items-start gap-2" onMouseLeave={() => setPreviewId(undefined)}>
78
- <span className="text-[0.72rem] font-semibold text-muted-foreground">Systemprompts</span>
78
+ <span className="text-[0.72rem] font-semibold text-muted-foreground">System prompts</span>
79
79
  <div className="relative flex justify-center">
80
- <div aria-label="Systemprompts" className="flex flex-wrap justify-center gap-2" role="group">
80
+ <div aria-label="System prompts" className="flex flex-wrap justify-center gap-2" role="group">
81
81
  {presentation.options.map((entry) => (
82
82
  <Toggle
83
83
  disabled={disabled}
@@ -104,11 +104,11 @@ export function SystemPromptControl({ disabled, error, option, setValue }: Start
104
104
  onCheckedChange={(checked) => share(checked)}
105
105
  />
106
106
  <span>
107
- Auch an die Agenten weiterreichen
107
+ Also pass on to the agents
108
108
  <span className="block text-[0.72rem] text-muted-foreground">
109
109
  {value.shareWithAgents
110
- ? "Erzeugte Agenten bekommen die Prompts zusätzlich. Plain-LLMs mit tools: [] bleiben ausgenommen."
111
- : "Die Prompts gelten nur für den Koordinator."}
110
+ ? "Spawned agents get the prompts as well. Plain LLMs with tools: [] are excluded."
111
+ : "The prompts apply only to the coordinator."}
112
112
  </span>
113
113
  </span>
114
114
  </label>
@@ -120,17 +120,17 @@ export function SystemPromptControl({ disabled, error, option, setValue }: Start
120
120
  export function SystemPromptBadge({ option }: StartOptionBadgeContext) {
121
121
  if (!option.selectable || !option.locked) return null;
122
122
  const parsed = parse(option);
123
- if ("message" in parsed) return <ToolbarItem title={parsed.message}><ToolbarText>Systemprompts unlesbar</ToolbarText></ToolbarItem>;
123
+ if ("message" in parsed) return <ToolbarItem title={parsed.message}><ToolbarText>System prompts unreadable</ToolbarText></ToolbarItem>;
124
124
  const { presentation, value } = parsed;
125
125
  const labels = presentation.options
126
126
  .filter((entry) => value.promptIds.includes(entry.id))
127
127
  .map((entry) => entry.label);
128
128
  if (labels.length === 0) return null;
129
- const scopeLabel = value.shareWithAgents ? "Koordinator und Agenten" : "nur Koordinator";
129
+ const scopeLabel = value.shareWithAgents ? "coordinator and agents" : "coordinator only";
130
130
  const text = labels.join(" + ");
131
131
  return (
132
- <ToolbarItem title={`Systemprompts: ${text} (${scopeLabel})`}>
133
- <ToolbarCopy><ToolbarLabel>Systemprompts</ToolbarLabel><ToolbarText>{value.shareWithAgents ? `${text} + Agenten` : text}</ToolbarText></ToolbarCopy>
132
+ <ToolbarItem title={`System prompts: ${text} (${scopeLabel})`}>
133
+ <ToolbarCopy><ToolbarLabel>System prompts</ToolbarLabel><ToolbarText>{value.shareWithAgents ? `${text} + agents` : text}</ToolbarText></ToolbarCopy>
134
134
  </ToolbarItem>
135
135
  );
136
136
  }
@@ -13,13 +13,13 @@ export const productModelSettingsFrom = (value: unknown): ProductModelSettings =
13
13
  && text(model.label) && Array.isArray(model.thinking) && model.thinking.length > 0 && model.thinking.every(text))
14
14
  || !value.profiles.every((profile) => record(profile) && text(profile.name) && typeof profile.description === "string"
15
15
  && text(profile.provider) && text(profile.model) && text(profile.thinking))) {
16
- throw new Error("Der Server hat ungültige Modellvorgaben geliefert.");
16
+ throw new Error("The server returned invalid model defaults.");
17
17
  }
18
18
  const settings = value as unknown as ProductModelSettings;
19
19
  const names = settings.profiles.map((profile) => profile.name);
20
20
  if (new Set(names).size !== names.length || settings.profiles.some((profile) => !settings.models.some((model) =>
21
21
  model.id === profile.model && model.provider === profile.provider && model.thinking.includes(profile.thinking)))) {
22
- throw new Error("Die Modellvorgaben passen nicht zum verfügbaren Modellkatalog.");
22
+ throw new Error("The model defaults do not match the available model catalog.");
23
23
  }
24
24
  return settings;
25
25
  };
@@ -29,7 +29,7 @@ export interface RpcClientOptions {
29
29
  baseUrl?: string;
30
30
  fetch?: typeof fetch;
31
31
  retryDelayMs?: number;
32
- /** So lange darf der Strom schweigen, bevor er als verloren gilt; der Server pingt alle 15 Sekunden. */
32
+ /** How long the stream may stay silent before it counts as lost; the server pings every 15 seconds. */
33
33
  idleTimeoutMs?: number;
34
34
  }
35
35
 
@@ -47,7 +47,7 @@ const EARLY_EVENT_TTL_MS = 10_000;
47
47
 
48
48
  const messageOf = (cause: unknown): string => cause instanceof Error ? cause.message : String(cause);
49
49
 
50
- /** Liest einen SSE-Strom Block für Block; ein Block ist bis zur Leerzeile. */
50
+ /** Reads an SSE stream block by block; a block runs up to the blank line. */
51
51
  async function* sseBlocks(body: ReadableStream<Uint8Array>, onChunk: () => void): AsyncGenerator<{ event: string | undefined; data: string | undefined }> {
52
52
  const reader = body.getReader();
53
53
  const decoder = new TextDecoder();
@@ -71,7 +71,7 @@ async function* sseBlocks(body: ReadableStream<Uint8Array>, onChunk: () => void)
71
71
  }
72
72
  }
73
73
 
74
- /** Der Client der Nachrichtenschicht: Anfragen per POST, Benachrichtigungen und Anfragen des Servers über einen Strom. */
74
+ /** The client of the messaging layer: requests via POST, notifications and server requests over a stream. */
75
75
  export class RpcClient {
76
76
  readonly #baseUrl: string;
77
77
  readonly #fetch: typeof fetch;
@@ -131,7 +131,7 @@ export class RpcClient {
131
131
  };
132
132
  }
133
133
 
134
- /** Beantwortet Anfragen des Servers, etwa an einen Arbeitsplatz; hält dafür den Strom offen. */
134
+ /** Answers requests from the server, for example to a workstation; keeps the stream open for that. */
135
135
  handle<C extends OperationContract>(
136
136
  contract: C,
137
137
  handler: (input: OperationInput<C>, context: RpcHandlerContext) => OperationResult<C> | Promise<OperationResult<C>>,
@@ -151,7 +151,7 @@ export class RpcClient {
151
151
  return () => { this.#statusListeners.delete(listener); };
152
152
  }
153
153
 
154
- /** Nach jeder neuen Verbindung, wenn die Abonnements wieder stehen; ein Arbeitsplatz meldet sich dann erneut an. */
154
+ /** After every new connection, once the subscriptions are back in place; a workstation then registers again. */
155
155
  onConnected(listener: () => void): () => void {
156
156
  this.#connectedListeners.add(listener);
157
157
  return () => { this.#connectedListeners.delete(listener); };
@@ -162,7 +162,7 @@ export class RpcClient {
162
162
  this.#open();
163
163
  }
164
164
 
165
- /** Beendet den Strom; offene Anfragen des Servers werden abgebrochen, eigene Anfragen bleiben möglich. */
165
+ /** Ends the stream; open requests from the server are cancelled, own requests stay possible. */
166
166
  close(): void {
167
167
  this.#stop();
168
168
  this.#set({ kind: "idle" });
@@ -177,7 +177,7 @@ export class RpcClient {
177
177
  for (const listener of [...this.#statusListeners]) listener(status);
178
178
  }
179
179
 
180
- /** Ohne Strom erreicht keine Antwort mehr den Server; laufende Handler enden deshalb mit ihm. */
180
+ /** Without a stream no answer reaches the server anymore; running handlers therefore end with it. */
181
181
  #stop(): void {
182
182
  if (this.#retry !== undefined) clearTimeout(this.#retry);
183
183
  this.#retry = undefined;
@@ -190,12 +190,12 @@ export class RpcClient {
190
190
  for (const subscription of this.#subscriptions) subscription.serverId = undefined;
191
191
  }
192
192
 
193
- /** Ein halb offener Strom liefert nichts mehr, auch keinen Ping; nach der Ruhezeit gilt er als verloren. */
193
+ /** A half-open stream delivers nothing anymore, not even a ping; after the idle time it counts as lost. */
194
194
  #watchIdle(controller: AbortController): void {
195
195
  if (this.#idle !== undefined) clearTimeout(this.#idle);
196
196
  this.#idle = setTimeout(() => {
197
197
  this.#idle = undefined;
198
- if (this.#stream === controller) this.#scheduleRetry(`Der Ereignisstrom schweigt seit ${Math.round(this.#idleTimeoutMs / 1000)} s.`);
198
+ if (this.#stream === controller) this.#scheduleRetry(`The event stream has been silent for ${Math.round(this.#idleTimeoutMs / 1000)} s.`);
199
199
  }, this.#idleTimeoutMs);
200
200
  }
201
201
 
@@ -217,7 +217,7 @@ export class RpcClient {
217
217
  this.#set({ kind: "unauthorized" });
218
218
  return;
219
219
  }
220
- if (!response.ok || !response.body) throw new Error(`Der Ereignisstrom antwortete mit ${response.status}.`);
220
+ if (!response.ok || !response.body) throw new Error(`The event stream responded with ${response.status}.`);
221
221
  this.#watchIdle(controller);
222
222
  for await (const block of sseBlocks(response.body, () => this.#watchIdle(controller))) {
223
223
  if (controller.signal.aborted) return;
@@ -232,7 +232,7 @@ export class RpcClient {
232
232
  const message = JSON.parse(block.data) as unknown;
233
233
  if (isRpcMessage(message)) this.#peer.receive(message);
234
234
  }
235
- if (!controller.signal.aborted) this.#scheduleRetry("Der Server hat den Ereignisstrom beendet.");
235
+ if (!controller.signal.aborted) this.#scheduleRetry("The server ended the event stream.");
236
236
  }
237
237
 
238
238
  #scheduleRetry(message: string): void {
@@ -260,7 +260,7 @@ export class RpcClient {
260
260
  this.#earlyEvents.delete(serverId);
261
261
  for (const message of early?.messages ?? []) subscription.onMessage(message);
262
262
  } catch (cause) {
263
- subscription.onError?.(`Kanal ${subscription.contract.id}: ${messageOf(cause)}`);
263
+ subscription.onError?.(`Channel ${subscription.contract.id}: ${messageOf(cause)}`);
264
264
  }
265
265
  }
266
266
 
@@ -270,7 +270,7 @@ export class RpcClient {
270
270
  subscription.onMessage(params.message);
271
271
  return;
272
272
  }
273
- // Das Ereignis kann vor der Antwort auf das Abonnement eintreffen; kurz aufheben.
273
+ // The event can arrive before the answer to the subscription; keep it briefly.
274
274
  const now = Date.now();
275
275
  for (const [id, entry] of this.#earlyEvents) if (now - entry.at > EARLY_EVENT_TTL_MS) this.#earlyEvents.delete(id);
276
276
  const entry = this.#earlyEvents.get(params.subscription) ?? { at: now, messages: [] };
@@ -291,7 +291,7 @@ export class RpcClient {
291
291
  if (this.#connection) headers[RPC_CONNECTION_HEADER] = this.#connection;
292
292
  if (!isRpcRequest(message)) {
293
293
  if (!this.#connection) return;
294
- // Benachrichtigungen und Antworten gehen in Reihenfolge, damit Fortschritt nie sein Ergebnis überholt.
294
+ // Notifications and responses go out in order so progress never overtakes its result.
295
295
  const send = this.#outgoing.then(() => this.#fetch(`${this.#baseUrl}${RPC_PATH}`, { method: "POST", headers, body: JSON.stringify(message) }));
296
296
  this.#outgoing = send.then(() => undefined, () => undefined);
297
297
  await send;
@@ -308,12 +308,12 @@ export class RpcClient {
308
308
  return;
309
309
  }
310
310
  const detail = body as { error?: unknown; code?: unknown } | undefined;
311
- const text = typeof detail?.error === "string" ? detail.error : `Der Server antwortete mit ${response.status}.`;
311
+ const text = typeof detail?.error === "string" ? detail.error : `The server responded with ${response.status}.`;
312
312
  this.#peer.receive(rpcFailure(message.id, RPC_ERROR_CODES.application, text, { code: typeof detail?.code === "string" ? detail.code : "http-error", status: response.status }));
313
313
  } catch (cause) {
314
314
  const cancelled = controller.signal.aborted;
315
315
  this.#peer.receive(rpcFailure(message.id, cancelled ? RPC_ERROR_CODES.cancelled : RPC_ERROR_CODES.connectionClosed,
316
- cancelled ? "Abgebrochen" : `${this.#baseUrl || "Der Server"} ist nicht erreichbar: ${messageOf(cause)}`));
316
+ cancelled ? "Cancelled" : `${this.#baseUrl || "The server"} is unreachable: ${messageOf(cause)}`));
317
317
  } finally {
318
318
  this.#inFlight.delete(id);
319
319
  }
@@ -1,4 +1,4 @@
1
1
  import { RpcClient } from "./rpc/client";
2
2
 
3
- /** Der eine Client der Seite; der Ereignisstrom öffnet sich mit dem ersten Abonnement. */
3
+ /** The page's single client; the event stream opens with the first subscription. */
4
4
  export const rpc = new RpcClient();
@@ -18,7 +18,7 @@ export function groupRunsByActivity(sessions: readonly SessionInfo[], now = new
18
18
  const key = dayKey(date);
19
19
  const group = groups.get(key) ?? {
20
20
  date: key,
21
- label: key === today ? "Heute" : key === dayKey(yesterday) ? "Gestern" : date.toLocaleDateString("de-DE", { weekday: "long", day: "numeric", month: "long", ...(date.getFullYear() === now.getFullYear() ? {} : { year: "numeric" }) }),
21
+ label: key === today ? "Today" : key === dayKey(yesterday) ? "Yesterday" : date.toLocaleDateString("en-US", { weekday: "long", day: "numeric", month: "long", ...(date.getFullYear() === now.getFullYear() ? {} : { year: "numeric" }) }),
22
22
  sessions: [],
23
23
  };
24
24
  group.sessions.push(session);