@schlenkr/ragents 0.1.10 → 0.1.12

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 (748) hide show
  1. package/README.md +1 -1
  2. package/apps/server/package.json +1 -1
  3. package/apps/server/src/access-projection.ts +6 -6
  4. package/apps/server/src/access-service.ts +3 -3
  5. package/apps/server/src/access-session.ts +19 -19
  6. package/apps/server/src/api/contracts.ts +29 -29
  7. package/apps/server/src/api/core-methods.ts +17 -17
  8. package/apps/server/src/api/delivery.ts +2 -2
  9. package/apps/server/src/api/reference.ts +27 -27
  10. package/apps/server/src/api/rights.ts +18 -18
  11. package/apps/server/src/chat-handler.ts +5 -5
  12. package/apps/server/src/config-definition.ts +37 -10
  13. package/apps/server/src/config-file.ts +49 -49
  14. package/apps/server/src/config.ts +2 -0
  15. package/apps/server/src/data-directory.ts +2 -2
  16. package/apps/server/src/external-access.ts +1 -1
  17. package/apps/server/src/folder-install.ts +1 -1
  18. package/apps/server/src/help-files.ts +1 -1
  19. package/apps/server/src/host-api.json +6 -1
  20. package/apps/server/src/host-api.ts +3 -2
  21. package/apps/server/src/host-record.ts +3 -3
  22. package/apps/server/src/host-resolution-hooks.mjs +4 -4
  23. package/apps/server/src/host-version.ts +17 -17
  24. package/apps/server/src/host-web.ts +5 -5
  25. package/apps/server/src/main.ts +6 -6
  26. package/apps/server/src/missing-environment.ts +6 -6
  27. package/apps/server/src/parent-watch.ts +4 -4
  28. package/apps/server/src/plugin-build/build.ts +38 -38
  29. package/apps/server/src/plugin-build/host-api-names.ts +7 -7
  30. package/apps/server/src/plugin-build/plugin-description.ts +15 -15
  31. package/apps/server/src/plugin-build/typecheck.ts +1 -1
  32. package/apps/server/src/plugin-support/actor-programs/app-project.ts +19 -19
  33. package/apps/server/src/plugin-support/actor-programs/client-compiler.ts +4 -4
  34. package/apps/server/src/plugin-support/actor-programs/client-contracts.ts +11 -11
  35. package/apps/server/src/plugin-support/actor-programs/contract.ts +17 -17
  36. package/apps/server/src/plugin-support/actor-programs/runtime-libraries.ts +1 -1
  37. package/apps/server/src/plugin-support/actor-programs/workflow/index.ts +5 -5
  38. package/apps/server/src/plugin-support/actor-programs/workflow/prompt-reader.ts +2 -2
  39. package/apps/server/src/plugin-support/chat-display-policy.ts +2 -2
  40. package/apps/server/src/plugin-support/front-matter.ts +6 -6
  41. package/apps/server/src/plugin-support/http.ts +2 -2
  42. package/apps/server/src/plugin-support/language-server/contract.ts +8 -8
  43. package/apps/server/src/plugin-support/language-server/plugin.ts +2 -2
  44. package/apps/server/src/plugin-support/language-server/snapshot-method.ts +1 -1
  45. package/apps/server/src/plugin-support/language-server/tools.ts +11 -11
  46. package/apps/server/src/plugin-support/model-aliases.ts +30 -20
  47. package/apps/server/src/plugin-support/model-choice.ts +15 -15
  48. package/apps/server/src/plugin-support/model-completion.ts +44 -23
  49. package/apps/server/src/plugin-support/model-providers.ts +170 -0
  50. package/apps/server/src/plugin-support/model-upstreams.ts +1 -1
  51. package/apps/server/src/plugin-support/native-typescript-child.ts +4 -4
  52. package/apps/server/src/plugin-support/native-typescript-executor.ts +12 -12
  53. package/apps/server/src/plugin-support/plugin-config.ts +3 -3
  54. package/apps/server/src/plugin-support/plugin-folder.ts +2 -2
  55. package/apps/server/src/plugin-support/plugins-root.ts +2 -2
  56. package/apps/server/src/plugin-support/process-sandbox.ts +39 -39
  57. package/apps/server/src/plugin-support/product-model-settings-contract.ts +3 -3
  58. package/apps/server/src/plugin-support/product-model-settings.ts +10 -10
  59. package/apps/server/src/plugin-support/product-relay.ts +9 -9
  60. package/apps/server/src/plugin-support/product-start-options.ts +4 -4
  61. package/apps/server/src/plugin-support/prompt.ts +1 -1
  62. package/apps/server/src/plugin-support/provision.ts +8 -8
  63. package/apps/server/src/plugin-support/run-scripts.ts +17 -17
  64. package/apps/server/src/plugin-support/skills.ts +18 -18
  65. package/apps/server/src/plugin-support/start-entries-contract.ts +17 -17
  66. package/apps/server/src/plugin-support/start-options-contract.ts +5 -5
  67. package/apps/server/src/plugin-support/system-prompts.ts +11 -11
  68. package/apps/server/src/plugin-support/thinking-level.ts +2 -2
  69. package/apps/server/src/plugin-support/tool-availability.ts +2 -2
  70. package/apps/server/src/plugin-support/workspace-ownership.ts +5 -5
  71. package/apps/server/src/plugin-support/workspace-sandbox-host.ts +37 -37
  72. package/apps/server/src/plugin-support/zip.ts +7 -7
  73. package/apps/server/src/profile/bundle-manifest.ts +27 -27
  74. package/apps/server/src/profile/compose.ts +12 -7
  75. package/apps/server/src/profile/plugin-discovery.ts +14 -14
  76. package/apps/server/src/profile/provisioning.ts +5 -5
  77. package/apps/server/src/profile-target.ts +10 -10
  78. package/apps/server/src/protocol.ts +2 -2
  79. package/apps/server/src/provider.ts +62 -57
  80. package/apps/server/src/ragents/actor-chat-history.ts +8 -8
  81. package/apps/server/src/ragents/chat-text-positions.ts +2 -2
  82. package/apps/server/src/ragents/coordinator.ts +2 -2
  83. package/apps/server/src/ragents/engine.ts +23 -23
  84. package/apps/server/src/ragents/global-chat.ts +8 -8
  85. package/apps/server/src/ragents/host-services.ts +6 -3
  86. package/apps/server/src/ragents/journal-chat-events.ts +1 -1
  87. package/apps/server/src/ragents/run-owner.ts +2 -2
  88. package/apps/server/src/ragents/session.ts +49 -49
  89. package/apps/server/src/ragents/typescript-tools.ts +12 -12
  90. package/apps/server/src/ragents/workspace-runtime.ts +28 -28
  91. package/apps/server/src/rpc/dispatcher.ts +19 -19
  92. package/apps/server/src/rpc/http-transport.ts +11 -11
  93. package/apps/server/src/rpc/stdio-transport.ts +3 -3
  94. package/apps/server/src/run-preparation-input.ts +5 -5
  95. package/apps/server/src/run-preparation.ts +24 -24
  96. package/apps/server/src/run-transfer.ts +39 -39
  97. package/apps/server/src/server.ts +48 -48
  98. package/apps/server/src/settings.ts +1 -1
  99. package/apps/server/src/startup.ts +3 -3
  100. package/apps/server/src/title-compactor.ts +9 -9
  101. package/apps/server/src/title-settings.ts +3 -3
  102. package/apps/server/src/web-bundles.ts +2 -2
  103. package/apps/server/src/web-stylesheet.ts +2 -2
  104. package/apps/web/dist/assets/{highlighted-body-KPVGNVTW-BO4wLQtE.js → highlighted-body-KPVGNVTW-CpPi6QLr.js} +1 -1
  105. package/apps/web/dist/assets/main-DJmCHGzM.js +11 -0
  106. package/apps/web/dist/assets/mermaid-HWGCJPDP-q-mf1kLN.js +608 -0
  107. package/apps/web/dist/assets/runPanel-nk_aMxSn.js +21 -0
  108. package/apps/web/dist/help/guide-access.html +5 -5
  109. package/apps/web/dist/help/guide-access.md +2 -2
  110. package/apps/web/dist/help/guide-clients.html +53 -54
  111. package/apps/web/dist/help/guide-clients.md +50 -51
  112. package/apps/web/dist/help/guide-distributed.html +12 -7
  113. package/apps/web/dist/help/guide-distributed.md +9 -4
  114. package/apps/web/dist/help/guide-functions.html +3 -3
  115. package/apps/web/dist/help/guide-getting-started.html +24 -15
  116. package/apps/web/dist/help/guide-getting-started.md +22 -12
  117. package/apps/web/dist/help/guide-ideas.html +3 -3
  118. package/apps/web/dist/help/guide-plugins.html +5 -4
  119. package/apps/web/dist/help/guide-plugins.md +2 -1
  120. package/apps/web/dist/help/guide-programs.html +3 -3
  121. package/apps/web/dist/help/guide-runtime.html +6 -6
  122. package/apps/web/dist/help/guide-runtime.md +3 -3
  123. package/apps/web/dist/help/guide.html +3 -3
  124. package/apps/web/dist/help/index.html +196 -144
  125. package/apps/web/dist/help/mini-app.css +6 -0
  126. package/apps/web/dist/help/mini-app.js +14 -14
  127. package/apps/web/dist/host-web.json +91 -91
  128. package/apps/web/dist/index.html +3 -3
  129. package/apps/web/dist/run-panel.html +3 -3
  130. package/apps/web/package.json +1 -1
  131. package/apps/web/src/AccessContext.tsx +15 -15
  132. package/apps/web/src/App.tsx +13 -13
  133. package/apps/web/src/DiffCode.tsx +2 -2
  134. package/apps/web/src/HelpDialog.tsx +3 -3
  135. package/apps/web/src/Overview.tsx +13 -13
  136. package/apps/web/src/PluginActivation.ts +1 -1
  137. package/apps/web/src/PluginChat.tsx +15 -15
  138. package/apps/web/src/PluginFailureNotice.tsx +1 -1
  139. package/apps/web/src/PluginRegistry.tsx +44 -44
  140. package/apps/web/src/RunPreparationChat.tsx +11 -11
  141. package/apps/web/src/RunStore.ts +1 -1
  142. package/apps/web/src/SessionList.tsx +14 -14
  143. package/apps/web/src/SettingsModal.tsx +112 -112
  144. package/apps/web/src/StartOptions.tsx +11 -11
  145. package/apps/web/src/StartSelection.tsx +11 -11
  146. package/apps/web/src/StartTiles.tsx +8 -8
  147. package/apps/web/src/SurfaceShortcuts.tsx +3 -3
  148. package/apps/web/src/ThemeSettings.tsx +8 -8
  149. package/apps/web/src/TitleModelSettings.tsx +13 -13
  150. package/apps/web/src/WorkspacePanel.tsx +9 -9
  151. package/apps/web/src/access-session.ts +4 -4
  152. package/apps/web/src/access-token.ts +5 -5
  153. package/apps/web/src/actor-conversation.ts +3 -3
  154. package/apps/web/src/actor-programs/client-ui/DataTable.tsx +8 -8
  155. package/apps/web/src/actor-programs/client-ui/FilePicker.tsx +4 -4
  156. package/apps/web/src/actor-programs/client-ui/FlowDiagram.tsx +13 -13
  157. package/apps/web/src/actor-programs/client-ui/Viewers.tsx +4 -4
  158. package/apps/web/src/actor-programs/client-ui/WorkflowDiagram.tsx +1 -1
  159. package/apps/web/src/actor-programs/client-ui/file-contracts.d.ts +4 -4
  160. package/apps/web/src/actor-programs/client-ui/file-selection.ts +1 -1
  161. package/apps/web/src/actor-programs/client-ui/viewer-contracts.d.ts +3 -3
  162. package/apps/web/src/api.ts +7 -7
  163. package/apps/web/src/chat/QuasselHost.tsx +1 -1
  164. package/apps/web/src/chat/StoppedActorNotice.tsx +5 -5
  165. package/apps/web/src/chat/chat-target.ts +3 -3
  166. package/apps/web/src/chat/requests.ts +2 -2
  167. package/apps/web/src/chat/useAttachmentCapabilities.ts +2 -2
  168. package/apps/web/src/chat-view-settings.tsx +5 -6
  169. package/apps/web/src/diff-view.css +1 -1
  170. package/apps/web/src/highlighting.css +1 -1
  171. package/apps/web/src/language-server/language-server-plugin.tsx +30 -30
  172. package/apps/web/src/lib/labels.ts +6 -6
  173. package/apps/web/src/main.tsx +4 -4
  174. package/apps/web/src/offered-machines.ts +2 -2
  175. package/apps/web/src/page-opener.tsx +1 -1
  176. package/apps/web/src/panel/ConnectionsPage.tsx +23 -23
  177. package/apps/web/src/panel/LoginForm.tsx +6 -6
  178. package/apps/web/src/panel/PanelDialogs.tsx +22 -22
  179. package/apps/web/src/panel/PanelHeader.tsx +2 -2
  180. package/apps/web/src/panel/PanelPage.tsx +1 -1
  181. package/apps/web/src/panel/RunLine.tsx +4 -4
  182. package/apps/web/src/panel/RunsPage.tsx +15 -15
  183. package/apps/web/src/panel/StartPage.tsx +26 -26
  184. package/apps/web/src/panel/connection-state.ts +9 -9
  185. package/apps/web/src/panel/contract.ts +28 -28
  186. package/apps/web/src/panel.tsx +1 -1
  187. package/apps/web/src/plugin-bootstrap.ts +5 -5
  188. package/apps/web/src/product/ModelControl.tsx +3 -3
  189. package/apps/web/src/product/ProductModelSettings.tsx +16 -16
  190. package/apps/web/src/product/SystemPromptControl.tsx +11 -11
  191. package/apps/web/src/product/model-settings.ts +2 -2
  192. package/apps/web/src/rpc/client.ts +16 -16
  193. package/apps/web/src/rpc.ts +1 -1
  194. package/apps/web/src/run-overview.ts +1 -1
  195. package/apps/web/src/run-panel/RunPanelApp.tsx +39 -39
  196. package/apps/web/src/run-panel/RunPanelHeader.tsx +6 -6
  197. package/apps/web/src/run-panel/RunPanelMenu.tsx +6 -6
  198. package/apps/web/src/run-panel/RunPanelRail.tsx +4 -4
  199. package/apps/web/src/run-panel/RunPanelWorkspace.tsx +3 -3
  200. package/apps/web/src/run-panel/clipboard.ts +3 -3
  201. package/apps/web/src/run-panel/host-contract.ts +5 -5
  202. package/apps/web/src/run-panel/host.ts +15 -15
  203. package/apps/web/src/run-panel/input-bridge.ts +1 -1
  204. package/apps/web/src/run-panel/run-panel-location.ts +5 -5
  205. package/apps/web/src/run-panel/use-session-list.ts +1 -1
  206. package/apps/web/src/run-panel/workspace-state.ts +3 -3
  207. package/apps/web/src/run-panel.tsx +4 -4
  208. package/apps/web/src/run-preparation.ts +2 -2
  209. package/apps/web/src/run-view.ts +3 -3
  210. package/apps/web/src/settings-contributions.ts +32 -32
  211. package/apps/web/src/theme.ts +9 -9
  212. package/apps/web/src/title-model-settings.ts +6 -6
  213. package/apps/web/src/ui/ListDetail.tsx +9 -9
  214. package/apps/web/src/ui/dialog.tsx +2 -2
  215. package/apps/web/src/ui/modal-controller.ts +3 -3
  216. package/apps/web/src/ui/modal.tsx +2 -2
  217. package/apps/web/src/ui/popover.tsx +1 -1
  218. package/apps/web/src/ui/relative-time.ts +8 -8
  219. package/apps/web/src/ui/startup-notice.tsx +2 -2
  220. package/apps/web/src/ui/state-icon.tsx +1 -1
  221. package/apps/web/src/ui/state-vocabulary.ts +16 -16
  222. package/apps/web/src/ui/stop-button.tsx +2 -2
  223. package/bundles/ragents.activity/ragents-bundle.json +3 -3
  224. package/bundles/ragents.activity/web/classes.json +1 -1
  225. package/bundles/ragents.activity/web/index.js +1 -1
  226. package/bundles/ragents.activity/web/index.js.map +2 -2
  227. package/bundles/ragents.actor-programs/ragents-bundle.json +3 -3
  228. package/bundles/ragents.actor-programs/server/index.js +225 -225
  229. package/bundles/ragents.actor-programs/server/index.js.map +2 -2
  230. package/bundles/ragents.actor-programs/web/classes.json +1 -1
  231. package/bundles/ragents.actor-programs/web/index.js +1 -1
  232. package/bundles/ragents.actor-programs/web/index.js.map +3 -3
  233. package/bundles/ragents.ask/ragents-bundle.json +3 -3
  234. package/bundles/ragents.ask/server/chunks/{chunk-PDJO75SQ.js → chunk-YOV27MAR.js} +2 -2
  235. package/bundles/ragents.ask/server/chunks/chunk-YOV27MAR.js.map +7 -0
  236. package/bundles/ragents.ask/server/exports/server/contract.js +1 -1
  237. package/bundles/ragents.ask/server/index.js +23 -23
  238. package/bundles/ragents.ask/server/index.js.map +2 -2
  239. package/bundles/ragents.ask/web/chunks/{chunk-WFN4374U.js → chunk-D6NNB5DS.js} +1 -1
  240. package/bundles/ragents.ask/web/chunks/chunk-D6NNB5DS.js.map +7 -0
  241. package/bundles/ragents.ask/web/chunks/{chunk-MBRPS477.js → chunk-IQBHK7MV.js} +2 -2
  242. package/bundles/ragents.ask/web/chunks/{chunk-MBRPS477.js.map → chunk-IQBHK7MV.js.map} +3 -3
  243. package/bundles/ragents.ask/web/chunks/chunk-PWFIAMX4.js +2 -0
  244. package/bundles/ragents.ask/web/chunks/chunk-PWFIAMX4.js.map +7 -0
  245. package/bundles/ragents.ask/web/chunks/chunk-QHGKEESD.js +2 -0
  246. package/bundles/ragents.ask/web/chunks/chunk-QHGKEESD.js.map +7 -0
  247. package/bundles/ragents.ask/web/classes.json +1 -1
  248. package/bundles/ragents.ask/web/exports/ask-payload.js +1 -1
  249. package/bundles/ragents.ask/web/exports/web/QuestionCard.js +1 -1
  250. package/bundles/ragents.ask/web/exports/web/api.js +1 -1
  251. package/bundles/ragents.ask/web/index.js +1 -1
  252. package/bundles/ragents.ask/web/index.js.map +2 -2
  253. package/bundles/ragents.browser/executor/index.mjs +35 -35
  254. package/bundles/ragents.browser/executor/index.mjs.map +2 -2
  255. package/bundles/ragents.browser/ragents-bundle.json +3 -3
  256. package/bundles/ragents.browser/server/chunks/{chunk-CWLX4VA5.js → chunk-PYEISBNE.js} +1 -1
  257. package/bundles/ragents.browser/server/chunks/{chunk-CWLX4VA5.js.map → chunk-PYEISBNE.js.map} +1 -1
  258. package/bundles/ragents.browser/server/exports/server/contract.js +1 -1
  259. package/bundles/ragents.browser/server/index.js +31 -31
  260. package/bundles/ragents.browser/server/index.js.map +2 -2
  261. package/bundles/ragents.browser/skills/browser-testing/SKILL.md +30 -30
  262. package/bundles/ragents.documents/prompt.hbs +1 -1
  263. package/bundles/ragents.documents/ragents-bundle.json +3 -3
  264. package/bundles/ragents.documents/server/chunks/{chunk-QIECRZ7C.js → chunk-KMZWOVTI.js} +3 -3
  265. package/bundles/ragents.documents/server/chunks/{chunk-QIECRZ7C.js.map → chunk-KMZWOVTI.js.map} +2 -2
  266. package/bundles/ragents.documents/server/exports/contract.js +1 -1
  267. package/bundles/ragents.documents/server/index.js +26 -26
  268. package/bundles/ragents.documents/server/index.js.map +2 -2
  269. package/bundles/ragents.documents/web/classes.json +1 -1
  270. package/bundles/ragents.documents/web/index.js +1 -1
  271. package/bundles/ragents.documents/web/index.js.map +3 -3
  272. package/bundles/ragents.lsp-fsharp/executor/index.mjs +4 -4
  273. package/bundles/ragents.lsp-fsharp/executor/index.mjs.map +2 -2
  274. package/bundles/ragents.lsp-fsharp/ragents-bundle.json +3 -3
  275. package/bundles/ragents.lsp-fsharp/server/index.js +5 -5
  276. package/bundles/ragents.lsp-fsharp/server/index.js.map +2 -2
  277. package/bundles/ragents.lsp-fsharp/web/index.js +1 -1
  278. package/bundles/ragents.lsp-fsharp/web/index.js.map +2 -2
  279. package/bundles/ragents.lsp-roslyn/executor/index.mjs +3 -3
  280. package/bundles/ragents.lsp-roslyn/executor/index.mjs.map +2 -2
  281. package/bundles/ragents.lsp-roslyn/ragents-bundle.json +3 -3
  282. package/bundles/ragents.lsp-roslyn/server/index.js +17 -17
  283. package/bundles/ragents.lsp-roslyn/server/index.js.map +2 -2
  284. package/bundles/ragents.lsp-roslyn/web/index.js +1 -1
  285. package/bundles/ragents.lsp-roslyn/web/index.js.map +2 -2
  286. package/bundles/ragents.lsp-typescript/executor/index.mjs +2 -2
  287. package/bundles/ragents.lsp-typescript/executor/index.mjs.map +2 -2
  288. package/bundles/ragents.lsp-typescript/ragents-bundle.json +3 -3
  289. package/bundles/ragents.lsp-typescript/server/index.js.map +1 -1
  290. package/bundles/ragents.lsp-typescript/web/index.js +1 -1
  291. package/bundles/ragents.lsp-typescript/web/index.js.map +2 -2
  292. package/bundles/ragents.model-relay/ragents-bundle.json +8 -4
  293. package/bundles/ragents.model-relay/server/index.js +25 -21
  294. package/bundles/ragents.model-relay/server/index.js.map +2 -2
  295. package/bundles/ragents.orchestration/ragents-bundle.json +3 -3
  296. package/bundles/ragents.orchestration/server/index.js +28 -28
  297. package/bundles/ragents.orchestration/server/index.js.map +2 -2
  298. package/bundles/ragents.orchestration/web/chunks/{chunk-OSKPH6SZ.js → chunk-CFMJD5ZI.js} +2 -2
  299. package/bundles/ragents.orchestration/web/chunks/chunk-HOBLI364.js +2 -0
  300. package/bundles/ragents.orchestration/web/chunks/{chunk-OQYCNYXN.js.map → chunk-HOBLI364.js.map} +2 -2
  301. package/bundles/ragents.orchestration/web/chunks/{chunk-ODMMQGX2.js → chunk-UCIMT2R4.js} +2 -2
  302. package/bundles/ragents.orchestration/web/classes.json +1 -1
  303. package/bundles/ragents.orchestration/web/exports/web/program-slot.js +1 -1
  304. package/bundles/ragents.orchestration/web/exports/web/surface-entities.js +1 -1
  305. package/bundles/ragents.orchestration/web/index.js +8 -8
  306. package/bundles/ragents.orchestration/web/index.js.map +2 -2
  307. package/bundles/ragents.overseer/ragents-bundle.json +3 -3
  308. package/bundles/ragents.overseer/server/index.js +98 -98
  309. package/bundles/ragents.overseer/server/index.js.map +2 -2
  310. package/bundles/ragents.overseer/web/classes.json +1 -1
  311. package/bundles/ragents.overseer/web/index.js +1 -1
  312. package/bundles/ragents.overseer/web/index.js.map +2 -2
  313. package/bundles/ragents.processes/ragents-bundle.json +3 -3
  314. package/bundles/ragents.processes/server/index.js +11 -11
  315. package/bundles/ragents.processes/server/index.js.map +2 -2
  316. package/bundles/ragents.processes/web/classes.json +1 -1
  317. package/bundles/ragents.processes/web/index.js +3 -3
  318. package/bundles/ragents.processes/web/index.js.map +2 -2
  319. package/bundles/ragents.product/ragents-bundle.json +3 -3
  320. package/bundles/ragents.product/server/index.js +12 -13
  321. package/bundles/ragents.product/server/index.js.map +2 -2
  322. package/bundles/ragents.product/web/classes.json +1 -1
  323. package/bundles/ragents.product/web/index.js +1 -1
  324. package/bundles/ragents.product/web/index.js.map +2 -2
  325. package/bundles/ragents.profile-distribution/ragents-bundle.json +3 -3
  326. package/bundles/ragents.profile-distribution/server/index.js +31 -31
  327. package/bundles/ragents.profile-distribution/server/index.js.map +2 -2
  328. package/bundles/ragents.reference/ragents-bundle.json +3 -3
  329. package/bundles/ragents.reference/run-scripts/balcony-wizard/RUN.md +19 -19
  330. package/bundles/ragents.reference/run-scripts/balcony-wizard/actors/balcony-app/package.json +2 -2
  331. package/bundles/ragents.reference/run-scripts/balcony-wizard/actors/balcony-app/src/client.tsx +14 -14
  332. package/bundles/ragents.reference/run-scripts/balcony-wizard/actors/balcony-app/src/conversation.ts +2 -2
  333. package/bundles/ragents.reference/run-scripts/balcony-wizard/actors/balcony-app/tests/conversation.test.ts +49 -49
  334. package/bundles/ragents.reference/run-scripts/balcony-wizard/package.json +1 -1
  335. package/bundles/ragents.reference/run-scripts/balcony-wizard/src/server.ts +9 -9
  336. package/bundles/ragents.reference/run-scripts/balcony-wizard/tests/program.test.ts +9 -9
  337. package/bundles/ragents.reference/run-scripts/conversation-circle/RUN.md +7 -7
  338. package/bundles/ragents.reference/run-scripts/conversation-circle/package.json +1 -1
  339. package/bundles/ragents.reference/run-scripts/conversation-circle/src/server.ts +13 -13
  340. package/bundles/ragents.reference/run-scripts/conversation-circle/tests/helpers.ts +1 -1
  341. package/bundles/ragents.reference/run-scripts/conversation-circle/tests/program.test.ts +8 -8
  342. package/bundles/ragents.reference/run-scripts/learning-afternoon/RUN.md +16 -16
  343. package/bundles/ragents.reference/run-scripts/learning-afternoon/package.json +1 -1
  344. package/bundles/ragents.reference/run-scripts/learning-afternoon/prompts/experiment.md +1 -1
  345. package/bundles/ragents.reference/run-scripts/learning-afternoon/prompts/helper.md +3 -3
  346. package/bundles/ragents.reference/run-scripts/learning-afternoon/prompts/quiz.md +1 -1
  347. package/bundles/ragents.reference/run-scripts/learning-afternoon/src/server.ts +9 -9
  348. package/bundles/ragents.reference/run-scripts/learning-afternoon/tests/program.test.ts +39 -39
  349. package/bundles/ragents.reference/run-scripts/moderated-round/RUN.md +7 -7
  350. package/bundles/ragents.reference/run-scripts/moderated-round/package.json +1 -1
  351. package/bundles/ragents.reference/run-scripts/moderated-round/src/server.ts +9 -9
  352. package/bundles/ragents.reference/run-scripts/moderated-round/tests/helpers.ts +1 -1
  353. package/bundles/ragents.reference/run-scripts/moderated-round/tests/program.test.ts +6 -6
  354. package/bundles/ragents.reference/run-scripts/shared-actor-list/RUN.md +12 -12
  355. package/bundles/ragents.reference/run-scripts/shared-actor-list/actors/shared-list/package.json +2 -2
  356. package/bundles/ragents.reference/run-scripts/shared-actor-list/actors/shared-list/src/contract.ts +3 -3
  357. package/bundles/ragents.reference/run-scripts/shared-actor-list/actors/shared-list/tests/program.test.ts +4 -4
  358. package/bundles/ragents.reference/run-scripts/shared-actor-list/package.json +1 -1
  359. package/bundles/ragents.reference/run-scripts/shared-actor-list/src/server.ts +11 -11
  360. package/bundles/ragents.reference/run-scripts/shared-actor-list/tests/helpers.ts +1 -1
  361. package/bundles/ragents.reference/run-scripts/shared-actor-list/tests/program.test.ts +13 -13
  362. package/bundles/ragents.reference/run-scripts/word-game/RUN.md +18 -18
  363. package/bundles/ragents.reference/run-scripts/word-game/package.json +2 -2
  364. package/bundles/ragents.reference/run-scripts/word-game/src/client.tsx +1 -1
  365. package/bundles/ragents.reference/run-scripts/word-game/src/contract.ts +2 -2
  366. package/bundles/ragents.reference/run-scripts/word-game/src/server.ts +16 -16
  367. package/bundles/ragents.reference/run-scripts/word-game/tests/program.test.ts +39 -39
  368. package/bundles/ragents.reference/skills/100-shared-actor-list/SKILL.md +5 -5
  369. package/bundles/ragents.reference/skills/110-all-card-slots/SKILL.md +5 -5
  370. package/bundles/ragents.reference/skills/150-editorial-workbench/SKILL.md +5 -5
  371. package/bundles/ragents.reference/skills/160-learning-companion/SKILL.md +5 -5
  372. package/bundles/ragents.reference/skills/170-photo-collection/SKILL.md +5 -5
  373. package/bundles/ragents.reference/skills/180-decision-workbench/SKILL.md +5 -5
  374. package/bundles/ragents.reference/skills/190-review-queue/SKILL.md +5 -5
  375. package/bundles/ragents.reference/skills/20-circle-of-four/SKILL.md +5 -5
  376. package/bundles/ragents.reference/skills/200-typescript-diagnostics/SKILL.md +5 -5
  377. package/bundles/ragents.reference/skills/210-moderator-handover/SKILL.md +5 -5
  378. package/bundles/ragents.reference/skills/220-actor-approval-list/SKILL.md +5 -5
  379. package/bundles/ragents.reference/skills/230-shared-state-views/SKILL.md +5 -5
  380. package/bundles/ragents.reference/skills/240-live-result-list/SKILL.md +5 -5
  381. package/bundles/ragents.reference/skills/250-balcony-wizard/SKILL.md +5 -5
  382. package/bundles/ragents.reference/skills/30-llm-without-runtime-knowledge/SKILL.md +5 -5
  383. package/bundles/ragents.reference/skills/35-actor-input-fifo/SKILL.md +5 -5
  384. package/bundles/ragents.reference/skills/40-subscription-matrix/SKILL.md +5 -5
  385. package/bundles/ragents.reference/skills/50-subscription-removal/SKILL.md +5 -5
  386. package/bundles/ragents.reference/skills/60-stop-in-the-circle/SKILL.md +5 -5
  387. package/bundles/ragents.reference/skills/65-artifact-least-privilege/SKILL.md +5 -5
  388. package/bundles/ragents.reference/skills/70-headless-counter/SKILL.md +5 -5
  389. package/bundles/ragents.reference/skills/75-lsp-demo/SKILL.md +5 -5
  390. package/bundles/ragents.reference/skills/80-actor-text-analysis/SKILL.md +5 -5
  391. package/bundles/ragents.reference/skills/90-actor-notes/SKILL.md +5 -5
  392. package/bundles/ragents.reference/skills/95-hello-world/SKILL.md +5 -5
  393. package/bundles/ragents.reference/skills/decision-brief/SKILL.md +24 -24
  394. package/bundles/ragents.reference/skills/learning-sprint/SKILL.md +24 -24
  395. package/bundles/ragents.reference/web/classes.json +1 -1
  396. package/bundles/ragents.reference/web/index.js +1 -1
  397. package/bundles/ragents.reference/web/index.js.map +2 -2
  398. package/bundles/ragents.todo/ragents-bundle.json +3 -3
  399. package/bundles/ragents.todo/server/index.js +5 -8
  400. package/bundles/ragents.todo/server/index.js.map +2 -2
  401. package/bundles/ragents.todo/web/classes.json +1 -1
  402. package/bundles/ragents.todo/web/index.js +1 -1
  403. package/bundles/ragents.todo/web/index.js.map +2 -2
  404. package/bundles/ragents.transcript/ragents-bundle.json +3 -3
  405. package/bundles/ragents.transcript/server/index.js +11 -11
  406. package/bundles/ragents.transcript/server/index.js.map +2 -2
  407. package/bundles/ragents.watch/ragents-bundle.json +3 -3
  408. package/bundles/ragents.watch/server/index.js +48 -48
  409. package/bundles/ragents.watch/server/index.js.map +2 -2
  410. package/bundles/ragents.workspace/ragents-bundle.json +3 -3
  411. package/bundles/ragents.workspace/server/index.js +83 -83
  412. package/bundles/ragents.workspace/server/index.js.map +2 -2
  413. package/bundles/ragents.workspace/web/classes.json +1 -1
  414. package/bundles/ragents.workspace/web/index.js +1 -1
  415. package/bundles/ragents.workspace/web/index.js.map +2 -2
  416. package/package.json +4 -4
  417. package/packages/agent/dist/core/model-runtime.d.ts +7 -2
  418. package/packages/agent/dist/index.d.ts +1 -1
  419. package/packages/agent/dist/loop/agent-loop.d.ts +2 -2
  420. package/packages/agent/src/core/compaction/utils.ts +1 -1
  421. package/packages/agent/src/core/model-runtime.ts +45 -5
  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 +3725 -552
  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/plugin-host.ts +119 -119
  453. package/packages/ragents/src/plugin-types.ts +16 -16
  454. package/packages/ragents/src/rpc/contract.ts +5 -5
  455. package/packages/ragents/src/rpc/contribution.ts +2 -2
  456. package/packages/ragents/src/rpc/peer.ts +11 -11
  457. package/packages/ragents/src/rpc/protocol.ts +2 -2
  458. package/packages/ragents/src/runtime/decisions/turns.ts +1 -1
  459. package/packages/ragents/src/runtime/journal-storage.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 +44 -44
  472. package/packages/workspace-executor/src/errors.ts +1 -1
  473. package/packages/workspace-executor/src/executor.ts +16 -16
  474. package/packages/workspace-executor/src/files.ts +31 -31
  475. package/packages/workspace-executor/src/index.ts +1 -1
  476. package/packages/workspace-executor/src/language-server/contract.ts +2 -2
  477. package/packages/workspace-executor/src/language-server/diagnostics.ts +4 -4
  478. package/packages/workspace-executor/src/language-server/host.ts +36 -36
  479. package/packages/workspace-executor/src/language-server/json-rpc.ts +4 -4
  480. package/packages/workspace-executor/src/language-server/module.ts +11 -11
  481. package/packages/workspace-executor/src/language-server/roots.ts +3 -3
  482. package/packages/workspace-executor/src/language-server/session.ts +15 -15
  483. package/packages/workspace-executor/src/language-server/workspace-solutions.ts +3 -3
  484. package/packages/workspace-executor/src/managed-process.ts +12 -12
  485. package/packages/workspace-executor/src/module.ts +8 -8
  486. package/packages/workspace-executor/src/modules.ts +3 -3
  487. package/packages/workspace-executor/src/paths.ts +11 -11
  488. package/packages/workspace-executor/src/process-sandbox.ts +3 -3
  489. package/packages/workspace-executor/src/processes/module.ts +3 -3
  490. package/packages/workspace-executor/src/processes/process-table.ts +20 -20
  491. package/packages/workspace-executor/src/processes/scanner.ts +3 -3
  492. package/packages/workspace-executor/src/processes/snapshot.ts +2 -2
  493. package/packages/workspace-executor/src/processes/terminator.ts +13 -13
  494. package/packages/workspace-executor/src/run-folders.ts +3 -3
  495. package/packages/workspace-executor/src/safe-environment.ts +4 -4
  496. package/packages/workspace-executor/src/sandbox-tools.ts +28 -28
  497. package/packages/workspace-executor/src/session-ident.ts +2 -2
  498. package/packages/workspace-executor/src/shell-platform.ts +2 -2
  499. package/packages/workspace-executor/src/tools.ts +5 -5
  500. package/plugins/ragents.activity/web/ActivityHeader.tsx +3 -3
  501. package/plugins/ragents.activity/web/activity.ts +2 -2
  502. package/plugins/ragents.actor-programs/server/access-projections.ts +1 -1
  503. package/plugins/ragents.actor-programs/server/agent-tools.ts +2 -2
  504. package/plugins/ragents.actor-programs/server/capability-resolver.ts +3 -3
  505. package/plugins/ragents.actor-programs/server/controls-template.ts +46 -46
  506. package/plugins/ragents.actor-programs/server/controls-tool.ts +4 -4
  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 -2
  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 +3 -3
  572. package/plugins/ragents.orchestration/web/ActorChatControls.tsx +4 -5
  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/Center.tsx +5 -5
  578. package/plugins/ragents.orchestration/web/DocumentsSection.tsx +2 -2
  579. package/plugins/ragents.orchestration/web/ExecutionsPanel.tsx +15 -15
  580. package/plugins/ragents.orchestration/web/FlowInspector.tsx +103 -103
  581. package/plugins/ragents.orchestration/web/JournalStatus.tsx +11 -11
  582. package/plugins/ragents.orchestration/web/MaterialBody.tsx +2 -2
  583. package/plugins/ragents.orchestration/web/StopRunButton.tsx +6 -6
  584. package/plugins/ragents.orchestration/web/TiledSurface.tsx +9 -9
  585. package/plugins/ragents.orchestration/web/actor-header-settings.ts +5 -5
  586. package/plugins/ragents.orchestration/web/constants.ts +2 -2
  587. package/plugins/ragents.orchestration/web/executions.ts +6 -6
  588. package/plugins/ragents.orchestration/web/format.ts +1 -1
  589. package/plugins/ragents.orchestration/web/index.tsx +2 -2
  590. package/plugins/ragents.orchestration/web/run-panel/AddresseeControl.tsx +7 -7
  591. package/plugins/ragents.orchestration/web/run-panel/AddresseeTree.tsx +8 -8
  592. package/plugins/ragents.orchestration/web/run-panel/RunPanel.tsx +22 -22
  593. package/plugins/ragents.orchestration/web/run-panel/RunPanelSettings.tsx +7 -7
  594. package/plugins/ragents.orchestration/web/run-panel/addressee-tree.ts +13 -13
  595. package/plugins/ragents.orchestration/web/run-panel/run-panel-actors.ts +3 -3
  596. package/plugins/ragents.orchestration/web/run-panel/run-panel-settings.ts +2 -2
  597. package/plugins/ragents.orchestration/web/run-panel/run-panel-startup.ts +3 -3
  598. package/plugins/ragents.orchestration/web/run-panel/run-panel-state.ts +7 -7
  599. package/plugins/ragents.orchestration/web/run-panel/sheet-status.ts +9 -9
  600. package/plugins/ragents.orchestration/web/surface-startup.ts +8 -8
  601. package/plugins/ragents.orchestration/web/surface-view-settings.ts +1 -1
  602. package/plugins/ragents.orchestration/web/tiled-view-settings.ts +1 -1
  603. package/plugins/ragents.overseer/contract.ts +20 -20
  604. package/plugins/ragents.overseer/server/api.ts +6 -6
  605. package/plugins/ragents.overseer/server/coordinator-prompt.ts +10 -10
  606. package/plugins/ragents.overseer/server/coordinator.ts +4 -4
  607. package/plugins/ragents.overseer/server/index.ts +24 -24
  608. package/plugins/ragents.overseer/server/orientation.ts +8 -8
  609. package/plugins/ragents.overseer/server/quick-answer.ts +9 -9
  610. package/plugins/ragents.overseer/server/run-directory.ts +5 -5
  611. package/plugins/ragents.overseer/server/settings.ts +6 -6
  612. package/plugins/ragents.overseer/server/user-location.ts +16 -16
  613. package/plugins/ragents.overseer/web/ModelSettings.tsx +9 -9
  614. package/plugins/ragents.overseer/web/index.tsx +20 -20
  615. package/plugins/ragents.overseer/web/model-settings.ts +1 -1
  616. package/plugins/ragents.overseer/web/quick-answers.ts +2 -2
  617. package/plugins/ragents.processes/contract.ts +5 -5
  618. package/plugins/ragents.processes/server/methods.ts +4 -4
  619. package/plugins/ragents.processes/server/observer.ts +8 -8
  620. package/plugins/ragents.processes/server/run-processes.ts +2 -2
  621. package/plugins/ragents.processes/web/ProcessHeader.tsx +10 -10
  622. package/plugins/ragents.processes/web/processes.ts +10 -10
  623. package/plugins/ragents.product/server/config.ts +1 -1
  624. package/plugins/ragents.product/server/index.ts +4 -4
  625. package/plugins/ragents.product/server/runtime.ts +9 -10
  626. package/plugins/ragents.product/web/index.tsx +1 -1
  627. package/plugins/ragents.profile-distribution/contract.ts +10 -10
  628. package/plugins/ragents.profile-distribution/server/archive.ts +20 -20
  629. package/plugins/ragents.profile-distribution/server/config.ts +2 -2
  630. package/plugins/ragents.profile-distribution/server/index.ts +4 -4
  631. package/plugins/ragents.reference/examples.ts +27 -27
  632. package/plugins/ragents.reference/run-scripts/balcony-wizard/RUN.md +19 -19
  633. package/plugins/ragents.reference/run-scripts/balcony-wizard/actors/balcony-app/package.json +2 -2
  634. package/plugins/ragents.reference/run-scripts/balcony-wizard/actors/balcony-app/src/client.tsx +14 -14
  635. package/plugins/ragents.reference/run-scripts/balcony-wizard/actors/balcony-app/src/conversation.ts +2 -2
  636. package/plugins/ragents.reference/run-scripts/balcony-wizard/actors/balcony-app/tests/conversation.test.ts +49 -49
  637. package/plugins/ragents.reference/run-scripts/balcony-wizard/package.json +1 -1
  638. package/plugins/ragents.reference/run-scripts/balcony-wizard/src/server.ts +9 -9
  639. package/plugins/ragents.reference/run-scripts/balcony-wizard/tests/program.test.ts +9 -9
  640. package/plugins/ragents.reference/run-scripts/conversation-circle/RUN.md +7 -7
  641. package/plugins/ragents.reference/run-scripts/conversation-circle/package.json +1 -1
  642. package/plugins/ragents.reference/run-scripts/conversation-circle/src/server.ts +13 -13
  643. package/plugins/ragents.reference/run-scripts/conversation-circle/tests/helpers.ts +1 -1
  644. package/plugins/ragents.reference/run-scripts/conversation-circle/tests/program.test.ts +8 -8
  645. package/plugins/ragents.reference/run-scripts/learning-afternoon/RUN.md +16 -16
  646. package/plugins/ragents.reference/run-scripts/learning-afternoon/package.json +1 -1
  647. package/plugins/ragents.reference/run-scripts/learning-afternoon/prompts/experiment.md +1 -1
  648. package/plugins/ragents.reference/run-scripts/learning-afternoon/prompts/helper.md +3 -3
  649. package/plugins/ragents.reference/run-scripts/learning-afternoon/prompts/quiz.md +1 -1
  650. package/plugins/ragents.reference/run-scripts/learning-afternoon/src/server.ts +9 -9
  651. package/plugins/ragents.reference/run-scripts/learning-afternoon/tests/program.test.ts +39 -39
  652. package/plugins/ragents.reference/run-scripts/moderated-round/RUN.md +7 -7
  653. package/plugins/ragents.reference/run-scripts/moderated-round/package.json +1 -1
  654. package/plugins/ragents.reference/run-scripts/moderated-round/src/server.ts +9 -9
  655. package/plugins/ragents.reference/run-scripts/moderated-round/tests/helpers.ts +1 -1
  656. package/plugins/ragents.reference/run-scripts/moderated-round/tests/program.test.ts +6 -6
  657. package/plugins/ragents.reference/run-scripts/shared-actor-list/RUN.md +12 -12
  658. package/plugins/ragents.reference/run-scripts/shared-actor-list/actors/shared-list/package.json +2 -2
  659. package/plugins/ragents.reference/run-scripts/shared-actor-list/actors/shared-list/src/contract.ts +3 -3
  660. package/plugins/ragents.reference/run-scripts/shared-actor-list/actors/shared-list/tests/program.test.ts +4 -4
  661. package/plugins/ragents.reference/run-scripts/shared-actor-list/package.json +1 -1
  662. package/plugins/ragents.reference/run-scripts/shared-actor-list/src/server.ts +11 -11
  663. package/plugins/ragents.reference/run-scripts/shared-actor-list/tests/helpers.ts +1 -1
  664. package/plugins/ragents.reference/run-scripts/shared-actor-list/tests/program.test.ts +13 -13
  665. package/plugins/ragents.reference/run-scripts/word-game/RUN.md +18 -18
  666. package/plugins/ragents.reference/run-scripts/word-game/package.json +2 -2
  667. package/plugins/ragents.reference/run-scripts/word-game/src/client.tsx +1 -1
  668. package/plugins/ragents.reference/run-scripts/word-game/src/contract.ts +2 -2
  669. package/plugins/ragents.reference/run-scripts/word-game/src/server.ts +16 -16
  670. package/plugins/ragents.reference/run-scripts/word-game/tests/program.test.ts +39 -39
  671. package/plugins/ragents.reference/skills/100-shared-actor-list/SKILL.md +5 -5
  672. package/plugins/ragents.reference/skills/110-all-card-slots/SKILL.md +5 -5
  673. package/plugins/ragents.reference/skills/150-editorial-workbench/SKILL.md +5 -5
  674. package/plugins/ragents.reference/skills/160-learning-companion/SKILL.md +5 -5
  675. package/plugins/ragents.reference/skills/170-photo-collection/SKILL.md +5 -5
  676. package/plugins/ragents.reference/skills/180-decision-workbench/SKILL.md +5 -5
  677. package/plugins/ragents.reference/skills/190-review-queue/SKILL.md +5 -5
  678. package/plugins/ragents.reference/skills/20-circle-of-four/SKILL.md +5 -5
  679. package/plugins/ragents.reference/skills/200-typescript-diagnostics/SKILL.md +5 -5
  680. package/plugins/ragents.reference/skills/210-moderator-handover/SKILL.md +5 -5
  681. package/plugins/ragents.reference/skills/220-actor-approval-list/SKILL.md +5 -5
  682. package/plugins/ragents.reference/skills/230-shared-state-views/SKILL.md +5 -5
  683. package/plugins/ragents.reference/skills/240-live-result-list/SKILL.md +5 -5
  684. package/plugins/ragents.reference/skills/250-balcony-wizard/SKILL.md +5 -5
  685. package/plugins/ragents.reference/skills/30-llm-without-runtime-knowledge/SKILL.md +5 -5
  686. package/plugins/ragents.reference/skills/35-actor-input-fifo/SKILL.md +5 -5
  687. package/plugins/ragents.reference/skills/40-subscription-matrix/SKILL.md +5 -5
  688. package/plugins/ragents.reference/skills/50-subscription-removal/SKILL.md +5 -5
  689. package/plugins/ragents.reference/skills/60-stop-in-the-circle/SKILL.md +5 -5
  690. package/plugins/ragents.reference/skills/65-artifact-least-privilege/SKILL.md +5 -5
  691. package/plugins/ragents.reference/skills/70-headless-counter/SKILL.md +5 -5
  692. package/plugins/ragents.reference/skills/75-lsp-demo/SKILL.md +5 -5
  693. package/plugins/ragents.reference/skills/80-actor-text-analysis/SKILL.md +5 -5
  694. package/plugins/ragents.reference/skills/90-actor-notes/SKILL.md +5 -5
  695. package/plugins/ragents.reference/skills/95-hello-world/SKILL.md +5 -5
  696. package/plugins/ragents.reference/skills/decision-brief/SKILL.md +24 -24
  697. package/plugins/ragents.reference/skills/learning-sprint/SKILL.md +24 -24
  698. package/plugins/ragents.reference/walkthroughs.ts +128 -128
  699. package/plugins/ragents.reference/web/StartGuides.tsx +23 -23
  700. package/plugins/ragents.todo/contract.ts +0 -3
  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 +63 -63
  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 +50 -50
  714. package/plugins/ragents.workspace/server/config.ts +7 -7
  715. package/plugins/ragents.workspace/server/index.ts +3 -3
  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 +31 -31
  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 +49 -49
  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-DnnqWHkH.js +0 -11
  738. package/apps/web/dist/assets/mermaid-HWGCJPDP-BLLeth5_.js +0 -568
  739. package/apps/web/dist/assets/runPanel-DPm7s3KM.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/bundles/ragents.orchestration/web/chunks/{chunk-OSKPH6SZ.js.map → chunk-CFMJD5ZI.js.map} +0 -0
  748. /package/bundles/ragents.orchestration/web/chunks/{chunk-ODMMQGX2.js.map → chunk-UCIMT2R4.js.map} +0 -0
@@ -46,10 +46,10 @@ type SettingsPageSelection =
46
46
  | { kind: "capability"; id: ContributionKind };
47
47
 
48
48
  const settingsAreas = [
49
- { id: "models", label: "Modelle" },
50
- { id: "appearance", label: "Darstellung" },
49
+ { id: "models", label: "Models" },
50
+ { id: "appearance", label: "Appearance" },
51
51
  { id: "plugins", label: "Plugins" },
52
- { id: "runtime", label: "Laufzeit" },
52
+ { id: "runtime", label: "Runtime" },
53
53
  ] as const;
54
54
  const capabilities = contributionFilters.filter(
55
55
  (option): option is { id: ContributionKind; label: string } => option.id !== "all",
@@ -190,14 +190,14 @@ export function SettingsModal({ onClose, registry }: SettingsModalProps) {
190
190
  <header className="grid flex-none grid-cols-[auto_minmax(0,1fr)_auto] items-center gap-3 border-b border-border px-3.5 py-2.5">
191
191
  <span className="flex size-[34px] items-center justify-center rounded-[10px] bg-[color-mix(in_srgb,var(--primary)_12%,var(--background))] text-primary"><SettingsIcon size={18} /></span>
192
192
  <span className="grid min-w-0 gap-px">
193
- <DialogTitle render={<strong />}>Einstellungen</DialogTitle>
194
- <span className="truncate text-[0.7rem] text-muted-foreground max-[520px]:hidden">Modelle und Darstellung anpassen</span>
193
+ <DialogTitle render={<strong />}>Settings</DialogTitle>
194
+ <span className="truncate text-[0.7rem] text-muted-foreground max-[520px]:hidden">Adjust models and appearance</span>
195
195
  </span>
196
- <Button aria-label="Schließen" className="rounded-full" onClick={onClose} ref={closeRef} size="icon" variant="outline">
196
+ <Button aria-label="Close" className="rounded-full" onClick={onClose} ref={closeRef} size="icon" variant="outline">
197
197
  <XIcon />
198
198
  </Button>
199
199
  </header>
200
- <nav aria-label="Einstellungsbereiche" className="flex flex-none gap-1 overflow-x-auto border-b border-border px-4.5 max-md:px-2">
200
+ <nav aria-label="Settings areas" className="flex flex-none gap-1 overflow-x-auto border-b border-border px-4.5 max-md:px-2">
201
201
  {settingsAreas.map((area) => <button
202
202
  aria-current={activeArea === area.id ? "page" : undefined}
203
203
  className={cn(settingsAreaClass, activeArea === area.id ? "border-b-primary font-bold text-primary" : "text-muted-foreground hover:text-foreground")}
@@ -207,14 +207,14 @@ export function SettingsModal({ onClose, registry }: SettingsModalProps) {
207
207
  >{area.label}</button>)}
208
208
  </nav>
209
209
  {catalogVisible && <div className="flex flex-none gap-1 border-b border-border-soft px-3.5 py-2.5">
210
- <ToggleGroup aria-label="Plugins ordnen" size="sm" spacing={0} value={[axis]} variant="outline"
210
+ <ToggleGroup aria-label="Group plugins" size="sm" spacing={0} value={[axis]} variant="outline"
211
211
  onValueChange={([value]) => { if (value) changeAxis(value === "capability" ? "capability" : "plugin"); }}>
212
- <ToggleGroupItem value="plugin">Nach Plugin</ToggleGroupItem>
213
- <ToggleGroupItem value="capability">Nach Fähigkeit</ToggleGroupItem>
212
+ <ToggleGroupItem value="plugin">By plugin</ToggleGroupItem>
213
+ <ToggleGroupItem value="capability">By capability</ToggleGroupItem>
214
214
  </ToggleGroup>
215
215
  </div>}
216
216
  <div className={cn("grid min-h-0 flex-1", catalogVisible ? "grid-cols-[230px_minmax(0,1fr)] max-[900px]:grid-cols-[190px_minmax(0,1fr)] max-md:grid-cols-[minmax(0,1fr)] max-md:grid-rows-[auto_minmax(0,1fr)]" : "grid-cols-[minmax(0,1fr)]")}>
217
- {catalogVisible && <nav aria-label="Plugins durchsuchen" className="flex min-w-0 flex-col gap-[3px] overflow-y-auto border-r border-border-soft bg-background/72 px-2.5 py-4 max-md:flex-row max-md:overflow-x-auto max-md:border-r-0 max-md:border-b max-md:border-border-soft max-md:p-2" ref={navigationRef}>
217
+ {catalogVisible && <nav aria-label="Browse plugins" className="flex min-w-0 flex-col gap-[3px] overflow-y-auto border-r border-border-soft bg-background/72 px-2.5 py-4 max-md:flex-row max-md:overflow-x-auto max-md:border-r-0 max-md:border-b max-md:border-border-soft max-md:p-2" ref={navigationRef}>
218
218
  {axis === "plugin" && filtered.map((group) => {
219
219
  const count = countContributions(group);
220
220
  const selected = selection.kind === "plugin" && selection.id === group.id;
@@ -253,12 +253,12 @@ export function SettingsModal({ onClose, registry }: SettingsModalProps) {
253
253
  })}
254
254
  </nav>}
255
255
  <div className="min-h-0 min-w-0 overflow-y-auto bg-app [scrollbar-width:thin]" ref={contentRef}>
256
- {selection.kind === "models" && <SettingsPage title="Modelle" description="Wähle Modell und Reasoning-Tiefe für die jeweiligen Aufgaben.">
256
+ {selection.kind === "models" && <SettingsPage title="Models" description="Choose the model and reasoning depth for each task.">
257
257
  <div className={settingsPanelsClass}>
258
258
  <PluginSettings contributions={modelSettings} panel />
259
- {access.can("settings.read") && <SettingsSection panel title="Überschriften"><TitleModelSettings /></SettingsSection>}
259
+ {access.can("settings.read") && <SettingsSection panel title="Titles"><TitleModelSettings /></SettingsSection>}
260
260
  </div>
261
- {modelSettings.length === 0 && !access.can("settings.read") && <SettingsEmpty>Für deine Zugriffsrechte sind keine Modelleinstellungen verfügbar.</SettingsEmpty>}
261
+ {modelSettings.length === 0 && !access.can("settings.read") && <SettingsEmpty>No model settings are available for your access rights.</SettingsEmpty>}
262
262
  </SettingsPage>}
263
263
  {selection.kind === "appearance" && <div className="[&>:first-child]:pb-0">
264
264
  <ThemeSettings />
@@ -267,26 +267,26 @@ export function SettingsModal({ onClose, registry }: SettingsModalProps) {
267
267
  </div>}
268
268
  </div>}
269
269
  {(catalogVisible || selection.kind === "runtime") && settings !== null && state.status !== "ready" && <p className="border-b border-border-soft px-5 py-2.5 text-[0.72rem] text-muted-foreground" role={state.status === "failed" ? "alert" : "status"}>
270
- {state.status === "loading" ? "Katalog wird aktualisiert ..." : <>Katalog konnte nicht aktualisiert werden: {state.error} <Button onClick={() => setReload((value) => value + 1)} size="sm" variant="outline">Erneut laden</Button></>}
270
+ {state.status === "loading" ? "Refreshing catalog ..." : <>Could not refresh the catalog: {state.error} <Button onClick={() => setReload((value) => value + 1)} size="sm" variant="outline">Reload</Button></>}
271
271
  </p>}
272
272
  {(catalogVisible || selection.kind === "runtime") && settings === null && state.status === "loading" && (
273
273
  <div className={loadStateClass}>
274
274
  <Spinner aria-hidden className="size-3" />
275
- Laufzeit und Plugins werden geladen.
275
+ Loading runtime and plugins.
276
276
  </div>
277
277
  )}
278
278
  {(catalogVisible || selection.kind === "runtime") && settings === null && state.status === "failed" && (
279
279
  <div className={cn(loadStateClass, "flex-col text-center text-destructive")} role="alert">
280
280
  <CircleAlertIcon size={14} />
281
- <strong className="text-[0.86rem] text-foreground">Katalog nicht erreichbar</strong>
281
+ <strong className="text-[0.86rem] text-foreground">Catalog unreachable</strong>
282
282
  <span className="max-w-[560px]">{state.error}</span>
283
- <Button className="mt-1.5" onClick={() => setReload((value) => value + 1)} size="sm" variant="outline">Erneut laden</Button>
283
+ <Button className="mt-1.5" onClick={() => setReload((value) => value + 1)} size="sm" variant="outline">Reload</Button>
284
284
  </div>
285
285
  )}
286
286
  {settings !== null && selection.kind === "runtime" && <RuntimePage groups={groups} registry={registry} settings={settings} />}
287
- {settings !== null && selection.kind === "plugins" && <SettingsPage title="Plugins" description="Durchsuche die installierten Beiträge nach Plugin oder Fähigkeit. Wähle ein Plugin für seine Details.">
287
+ {settings !== null && selection.kind === "plugins" && <SettingsPage title="Plugins" description="Browse the installed contributions by plugin or capability. Choose a plugin for its details.">
288
288
  <div className="grid gap-4">{groups.map((group) => <button className={ownerLinkClass} key={group.id} onClick={() => openPlugin(group.id)} type="button">
289
- {group.id}<span className={ownerLinkNoteClass}>{countContributions(group)} Beiträge</span>
289
+ {group.id}<span className={ownerLinkNoteClass}>{countContributions(group)} contributions</span>
290
290
  </button>)}</div>
291
291
  </SettingsPage>}
292
292
  {settings !== null && (selection.kind === "plugin" || selection.kind === "capability") && (
@@ -294,12 +294,12 @@ export function SettingsModal({ onClose, registry }: SettingsModalProps) {
294
294
  )}
295
295
  {settings !== null && selection.kind === "plugin" && (
296
296
  active === undefined
297
- ? <div className={settingsPageClass}><SettingsEmpty>Dieses Plugin ist nicht mehr geladen.</SettingsEmpty></div>
297
+ ? <div className={settingsPageClass}><SettingsEmpty>This plugin is no longer loaded.</SettingsEmpty></div>
298
298
  : <PluginPage group={active} key={active.id} settings={registry.settings} />
299
299
  )}
300
300
  {settings !== null && activeCapability !== undefined && (
301
- <SettingsPage title={activeCapability.label} description={`${activeCapability.groups.length} Plugins liefern passende Beiträge. Öffne ein Plugin für seine vollständigen Details.`}>
302
- {activeCapability.groups.length === 0 && <SettingsEmpty>Keine Beiträge gefunden. Wähle eine andere Fähigkeit oder ändere die Suche.</SettingsEmpty>}
301
+ <SettingsPage title={activeCapability.label} description={`${activeCapability.groups.length} plugins provide matching contributions. Open a plugin for its full details.`}>
302
+ {activeCapability.groups.length === 0 && <SettingsEmpty>No contributions found. Choose another capability or change the search.</SettingsEmpty>}
303
303
  {activeCapability.groups.map((group) => (
304
304
  <PluginPage
305
305
  group={group} key={`${activeCapability.id}:${group.id}`} settings={group.settings}
@@ -324,7 +324,7 @@ function ContributionFilterBar({ filter, onFilter, onQuery, query, showKinds }:
324
324
  }) {
325
325
  return (
326
326
  <div className="sticky top-0 z-[2] grid gap-2.5 border-b border-border-soft bg-background/92 px-[clamp(20px,4vw,46px)] py-3 backdrop-blur-[6px] max-md:px-3.5">
327
- {showKinds && <div aria-label="Beitragsarten" className="flex flex-wrap gap-1.5" role="group">
327
+ {showKinds && <div aria-label="Contribution kinds" className="flex flex-wrap gap-1.5" role="group">
328
328
  {contributionFilters.map((option) => (
329
329
  <Toggle key={option.id} pressed={filter === option.id} onPressedChange={() => onFilter(option.id)} size="sm" variant="outline">
330
330
  {option.label}
@@ -332,10 +332,10 @@ function ContributionFilterBar({ filter, onFilter, onQuery, query, showKinds }:
332
332
  ))}
333
333
  </div>}
334
334
  <label className="grid gap-1.5">
335
- <span className="text-[0.67rem] font-medium text-muted-foreground">Beiträge durchsuchen</span>
335
+ <span className="text-[0.67rem] font-medium text-muted-foreground">Search contributions</span>
336
336
  <Input
337
337
  onChange={(event) => onQuery(event.target.value)}
338
- placeholder="Kennung, Name, Titel oder Beschreibung"
338
+ placeholder="ID, name, title or description"
339
339
  type="search"
340
340
  value={query}
341
341
  />
@@ -354,85 +354,85 @@ function RuntimePage({ groups, registry, settings }: {
354
354
  const internalHooks = settings.agentHooks.filter((hook) => hook.kind === "internal");
355
355
  return (
356
356
  <SettingsPage
357
- description={`Die Werte stammen aus der aktuell laufenden ${registry.brand.title}-Instanz. Konfigurationswerte mit Geheimnissen werden vom Server nicht ausgeliefert.`}
358
- title="Laufzeit"
357
+ description={`The values come from the currently running ${registry.brand.title} instance. The server does not deliver configuration values that contain secrets.`}
358
+ title="Runtime"
359
359
  >
360
360
  <div className="grid grid-cols-4 gap-2.5 max-[900px]:grid-cols-2 max-[520px]:grid-cols-1">
361
- <SettingsFact label="Produkt" value={settings.product.title} detail={settings.product.id} />
362
- <SettingsFact label="Profil" value={settings.runtime.profile} detail={settings.product.id} />
363
- <SettingsFact label="Workspace-Modus" value={settings.runtime.workspaceMode} detail="je Run" />
364
- <SettingsFact label="Modelle" value={String(settings.models.length)} detail={`${settings.profiles.length} Profile`} />
365
- <SettingsFact label="Plugins" value={String(groups.length)} detail={`${settings.tools.length} Funktionen`} />
361
+ <SettingsFact label="Product" value={settings.product.title} detail={settings.product.id} />
362
+ <SettingsFact label="Profile" value={settings.runtime.profile} detail={settings.product.id} />
363
+ <SettingsFact label="Workspace mode" value={settings.runtime.workspaceMode} detail="per run" />
364
+ <SettingsFact label="Models" value={String(settings.models.length)} detail={`${settings.profiles.length} profiles`} />
365
+ <SettingsFact label="Plugins" value={String(groups.length)} detail={`${settings.tools.length} functions`} />
366
366
  </div>
367
- <SettingsSection title="Laufzeit und Arbeitsverzeichnisse">
368
- <SettingsValue label="Working Directory" value={settings.runtime.host.workingDirectory} copy />
367
+ <SettingsSection title="Runtime and working directories">
368
+ <SettingsValue label="Working directory" value={settings.runtime.host.workingDirectory} copy />
369
369
  <SettingsValue
370
370
  label="Host"
371
- value={`${settings.runtime.host.mode === "native" ? "Lokal" : "Container"} / ${settings.runtime.host.platform}`}
371
+ value={`${settings.runtime.host.mode === "native" ? "Local" : "Container"} / ${settings.runtime.host.platform}`}
372
372
  />
373
- <SettingsValue label="Datenverzeichnis" value={settings.runtime.dataDirectory} copy />
373
+ <SettingsValue label="Data directory" value={settings.runtime.dataDirectory} copy />
374
374
  <SettingsValue
375
- label="Konfigurationsdatei"
376
- value={settings.runtime.configFile ?? "keine geladen"}
375
+ label="Configuration file"
376
+ value={settings.runtime.configFile ?? "none loaded"}
377
377
  copy={settings.runtime.configFile !== null}
378
378
  />
379
- <SettingsValue label="Workspace-Muster je Run" value={workspace.directoryPattern} copy />
379
+ <SettingsValue label="Workspace pattern per run" value={workspace.directoryPattern} copy />
380
380
  <SettingsValue
381
- label="Dateiablage je Run"
382
- value={documents?.directoryPattern ?? "kein Dokumentenstore geladen"}
381
+ label="File storage per run"
382
+ value={documents?.directoryPattern ?? "no document store loaded"}
383
383
  copy={documents !== null}
384
384
  />
385
385
  </SettingsSection>
386
386
  <SettingsNote>
387
- Ein Agent kann innerhalb eines Runs ein eigenes Rollenprompt erhalten. Dieses run-spezifische Prompt ist kein
388
- statischer Modellwert und wird deshalb nicht in dieser Produktübersicht dargestellt.
387
+ An agent can receive its own role prompt within a run. This run-specific prompt is not a
388
+ static model value and is therefore not shown in this product overview.
389
389
  </SettingsNote>
390
- <SettingsSection count={settings.models.length} title="Verfügbare Modelle">
390
+ <SettingsSection count={settings.models.length} title="Available models">
391
391
  <p className={sectionCopyClass}>
392
- Modelle sind auswählbare Laufzeitziele. Profile bündeln Modell, Treiber, Denktiefe und Ausführungsgrenzen.
392
+ Models are selectable runtime targets. Profiles bundle model, driver, thinking level and execution limits.
393
393
  </p>
394
394
  <div className="grid grid-cols-2 gap-2.5 max-md:grid-cols-1">
395
395
  {settings.models.map((model) => <ModelCard key={modelKey(model)} model={model} />)}
396
396
  </div>
397
397
  </SettingsSection>
398
- <SettingsSection count={settings.profiles.length} title="Profile">
398
+ <SettingsSection count={settings.profiles.length} title="Profiles">
399
399
  <p className={sectionCopyClass}>
400
- Retries gelten pro Agenten-Turn nach technischen Fehlern. Die erste Ausführung zählt nicht als Retry.
401
- Nicht replay-sichere oder terminal blockierte Turns werden nicht erneut ausgeführt.
400
+ Retries apply per agent turn after technical errors. The first execution does not count as a retry.
401
+ Turns that are not replay-safe or are terminally blocked are not executed again.
402
402
  </p>
403
403
  <div className={cardListClass}>
404
404
  {settings.profiles.map((profile) => <ProfileCard key={profile.name} profile={profile} />)}
405
405
  </div>
406
406
  </SettingsSection>
407
- <SettingsSection title="Zusammengesetzter Produkt-Systemprompt">
407
+ <SettingsSection title="Composed product system prompt">
408
408
  <p className={sectionCopyClass}>
409
- {settings.systemPrompt.composition} Der endgültige Agentenprompt ist run-spezifisch und deshalb keine feste
410
- Modelleinstellung.
409
+ {settings.systemPrompt.composition} The final agent prompt is run-specific and therefore not a fixed
410
+ model setting.
411
411
  </p>
412
- <PromptCode content={settings.systemPrompt.content} copyLabel="Produkt-Systemprompt kopieren" />
412
+ <PromptCode content={settings.systemPrompt.content} copyLabel="Copy product system prompt" />
413
413
  </SettingsSection>
414
- <SettingsSection count={settings.systemPrompt.runtimeContracts.length} title="RAgents-Laufzeitverträge">
414
+ <SettingsSection count={settings.systemPrompt.runtimeContracts.length} title="RAgents runtime contracts">
415
415
  <div className={cardListClass}>
416
416
  {settings.systemPrompt.runtimeContracts.map((contract) => (
417
417
  <details className={disclosureClass} key={contract.audience}>
418
418
  <summary className={summaryClass}>
419
419
  <span className={cardCopyClass}>
420
- <strong className={cardTitleClass}>{contract.audience === "coordinator" ? "Koordinator" : "Agent"}</strong>
421
- <small className={cardNoteClass}>Wird zur Laufzeit ergänzt</small>
420
+ <strong className={cardTitleClass}>{contract.audience === "coordinator" ? "Coordinator" : "Agent"}</strong>
421
+ <small className={cardNoteClass}>Added at runtime</small>
422
422
  </span>
423
423
  </summary>
424
- <PromptCode content={contract.content} copyLabel={`${contract.audience} Laufzeitvertrag kopieren`} />
424
+ <PromptCode content={contract.content} copyLabel={`Copy ${contract.audience} runtime contract`} />
425
425
  </details>
426
426
  ))}
427
427
  </div>
428
428
  </SettingsSection>
429
- <SettingsSection count={internalHooks.length} title="Interne Hooks">
429
+ <SettingsSection count={internalHooks.length} title="Internal hooks">
430
430
  <p className={sectionCopyClass}>
431
- Diese Hooks gehören der Agentenlaufzeit selbst und stammen aus keinem Plugin. Hooks eines Plugins
432
- stehen auf der Seite ihres Plugins.
431
+ These hooks belong to the agent runtime itself and come from no plugin. A plugin's hooks
432
+ are listed on that plugin's page.
433
433
  </p>
434
434
  {internalHooks.length === 0
435
- ? <SettingsEmpty>Kein interner Hook registriert.</SettingsEmpty>
435
+ ? <SettingsEmpty>No internal hook registered.</SettingsEmpty>
436
436
  : (
437
437
  <div className={cardListClass}>
438
438
  {internalHooks.map((hook) => (
@@ -470,18 +470,18 @@ function PluginPage({ group, settings, onOpenPlugin }: {
470
470
  <header>
471
471
  <div className="flex items-center justify-between gap-3">
472
472
  {onOpenPlugin
473
- ? <button className={ownerLinkClass} onClick={onOpenPlugin} type="button">{group.id}<span className={ownerLinkNoteClass}>Plugin öffnen</span></button>
473
+ ? <button className={ownerLinkClass} onClick={onOpenPlugin} type="button">{group.id}<span className={ownerLinkNoteClass}>Open plugin</span></button>
474
474
  : <h2 className={`${pageTitleClass} truncate font-mono`}>{group.id}</h2>}
475
475
  {!onOpenPlugin && <span className={statusListClass}>
476
- <StatusBadge active={group.serverRegistered} label={group.serverRegistered ? "Server registriert" : "Server unbekannt"} />
477
- <StatusBadge active={group.webActive} label={group.webActive ? "Web aktiv" : "Web inaktiv"} />
476
+ <StatusBadge active={group.serverRegistered} label={group.serverRegistered ? "Server registered" : "Server unknown"} />
477
+ <StatusBadge active={group.webActive} label={group.webActive ? "Web active" : "Web inactive"} />
478
478
  </span>}
479
479
  </div>
480
- {!onOpenPlugin && <p className={pageLeadClass}>Abhängigkeiten: {group.requires.length === 0 ? "keine" : group.requires.join(", ")}</p>}
480
+ {!onOpenPlugin && <p className={pageLeadClass}>Dependencies: {group.requires.length === 0 ? "none" : group.requires.join(", ")}</p>}
481
481
  </header>
482
482
  <PluginSettings contributions={contributions} />
483
483
  {group.tools.length > 0 && (
484
- <SettingsSection count={group.tools.length} title="Funktionen">
484
+ <SettingsSection count={group.tools.length} title="Functions">
485
485
  <div className={cardListClass}>
486
486
  {group.tools.map((tool) => <ToolCard key={tool.id} tool={tool} />)}
487
487
  </div>
@@ -497,20 +497,20 @@ function PluginPage({ group, settings, onOpenPlugin }: {
497
497
  <strong className={cardTitleClass}>{contribution.id}</strong>
498
498
  <small className={cardNoteClass}>{contribution.owner}</small>
499
499
  </span>
500
- <span className={chipClass}>Reihenfolge {contribution.order}</span>
500
+ <span className={chipClass}>Order {contribution.order}</span>
501
501
  </summary>
502
- <PromptCode content={contribution.content} copyLabel={`${contribution.id} kopieren`} />
502
+ <PromptCode content={contribution.content} copyLabel={`Copy ${contribution.id}`} />
503
503
  </details>
504
504
  ))}
505
505
  </div>
506
506
  </SettingsSection>
507
507
  )}
508
508
  {group.startEntries.length > 0 && (
509
- <SettingsSection count={group.startEntries.length} title="Vorlagen">
509
+ <SettingsSection count={group.startEntries.length} title="Templates">
510
510
  <p className={sectionCopyClass}>
511
- Was das Plugin auf die Startseite legt. Ein Skill öffnet einen bearbeitbaren Auftrag;
512
- ein Run-Script baut den Run selbst auf, bevor
513
- der Chat beginnt. Nennt eine Vorlage einen Leitfaden, öffnet der Klick zuerst dessen Dialog.
511
+ What the plugin puts on the Start page. A skill opens an editable task;
512
+ a run script builds the run itself before
513
+ the chat begins. If a template names a guide, the click opens its dialog first.
514
514
  </p>
515
515
  <div className={cardListClass}>
516
516
  {group.startEntries.map((entry) => (
@@ -521,21 +521,21 @@ function PluginPage({ group, settings, onOpenPlugin }: {
521
521
  <small className={cardNoteClass}>{entry.owner} / {entry.id}</small>
522
522
  </span>
523
523
  <span className={chipClass}>{entryActionLabel(entry)}</span>
524
- {entry.action === "skill" && <CopyButton label={`${entry.title} kopieren`} text={entry.prompt} />}
524
+ {entry.action === "skill" && <CopyButton label={`Copy ${entry.title}`} text={entry.prompt} />}
525
525
  </header>
526
526
  <p className={cardCopyTextClass}>{entry.description}</p>
527
- {entry.action === "skill" && <p className={cardCopyTextClass}>Kategorie: {entry.category}</p>}
527
+ {entry.action === "skill" && <p className={cardCopyTextClass}>Category: {entry.category}</p>}
528
528
  {entry.action === "skill" && <pre className={`${preClass} max-h-[180px] px-3 py-2.5`}>{entry.prompt}</pre>}
529
529
  {entry.action === "skill" && (
530
530
  <p className={cardCopyTextClass}>
531
531
  Skill <code>{entry.skill}</code>
532
- {entry.guide ? <> · Leitfaden <code>{entry.guide}</code></> : " · ohne Leitfaden"}
532
+ {entry.guide ? <> · guide <code>{entry.guide}</code></> : " · no guide"}
533
533
  </p>
534
534
  )}
535
535
  {entry.action === "script" && (
536
536
  <p className={cardCopyTextClass}>
537
- {entry.coordinator ? "Mit Koordinator" : "Ohne Koordinator, das Script wählt den Primary-Actor"}
538
- {entry.guide ? <> · Leitfaden <code>{entry.guide}</code></> : " · ohne Leitfaden"}
537
+ {entry.coordinator ? "With coordinator" : "Without coordinator, the script chooses the primary actor"}
538
+ {entry.guide ? <> · guide <code>{entry.guide}</code></> : " · no guide"}
539
539
  </p>
540
540
  )}
541
541
  </article>
@@ -581,26 +581,26 @@ function PluginPage({ group, settings, onOpenPlugin }: {
581
581
  </SettingsSection>
582
582
  )}
583
583
  {(group.configuration.length > 0 || publicConfigText !== undefined) && (
584
- <SettingsSection count={group.configuration.length} title="Konfiguration">
584
+ <SettingsSection count={group.configuration.length} title="Configuration">
585
585
  <p className={sectionCopyClass}>
586
- Angezeigt werden die Herkunft der Konfigurationsschlüssel und die öffentliche Client-Konfiguration,
587
- niemals geheime Werte.
586
+ Shown are the origin of the configuration keys and the public client configuration,
587
+ never secret values.
588
588
  </p>
589
589
  {group.configuration.length > 0 && (
590
590
  <div className="grid gap-1.5 rounded-lg border border-border-soft bg-background/68 px-2.5 py-2">
591
- <span className={valueLabelClass}>Konfigurationsquellen</span>
591
+ <span className={valueLabelClass}>Configuration sources</span>
592
592
  <div className="flex flex-wrap gap-1.5">
593
593
  {group.configuration.map((entry) => (
594
594
  <span className={tagClass} key={entry.key}>
595
595
  <code className="font-mono">{entry.key}</code>
596
- <small className="text-[0.59rem] text-muted-foreground">{entry.secret ? `${entry.source} (geheim)` : entry.source}</small>
596
+ <small className="text-[0.59rem] text-muted-foreground">{entry.secret ? `${entry.source} (secret)` : entry.source}</small>
597
597
  </span>
598
598
  ))}
599
599
  </div>
600
600
  </div>
601
601
  )}
602
602
  {publicConfigText !== undefined && (
603
- <PromptCode content={publicConfigText} copyLabel={`${group.id} Client-Konfiguration kopieren`} />
603
+ <PromptCode content={publicConfigText} copyLabel={`Copy ${group.id} client configuration`} />
604
604
  )}
605
605
  </SettingsSection>
606
606
  )}
@@ -609,8 +609,8 @@ function PluginPage({ group, settings, onOpenPlugin }: {
609
609
  count={group.web.state === "contributions" ? group.web.contributions.length : undefined}
610
610
  title="Web"
611
611
  >
612
- {group.web.state === "none" && <SettingsEmpty>Kein Web-Modul</SettingsEmpty>}
613
- {group.web.state === "withoutContributions" && <SettingsEmpty>Web-Modul ohne Beiträge</SettingsEmpty>}
612
+ {group.web.state === "none" && <SettingsEmpty>No web module</SettingsEmpty>}
613
+ {group.web.state === "withoutContributions" && <SettingsEmpty>Web module without contributions</SettingsEmpty>}
614
614
  {group.web.state === "contributions" && (
615
615
  <div className="grid gap-[7px]">
616
616
  {group.web.contributions.map((contribution) => (
@@ -632,7 +632,7 @@ function PluginPage({ group, settings, onOpenPlugin }: {
632
632
  )}
633
633
  </SettingsSection>
634
634
  )}
635
- {empty && <SettingsEmpty>Keine Beiträge entsprechen Filter und Suche.</SettingsEmpty>}
635
+ {empty && <SettingsEmpty>No contributions match the filter and search.</SettingsEmpty>}
636
636
  </div>
637
637
  );
638
638
  }
@@ -665,33 +665,33 @@ function SkillDetail({ onBack, skill }: { onBack: () => void; skill: SettingsSki
665
665
  return (
666
666
  <div className={settingsPageClass}>
667
667
  <header className="grid justify-items-start gap-2.5">
668
- <Button aria-label="Zurück zu den Beiträgen" className="rounded-full" onClick={onBack} size="icon" variant="outline"><ArrowLeftIcon /></Button>
668
+ <Button aria-label="Back to contributions" className="rounded-full" onClick={onBack} size="icon" variant="outline"><ArrowLeftIcon /></Button>
669
669
  <span className="grid gap-1">
670
670
  <h2 className={pageTitleClass}>{skill.id}</h2>
671
- <p className="text-[0.73rem] text-muted-foreground">{skill.owner}{files.length > 0 && ` / ${files.length} ${files.length === 1 ? "Datei" : "Dateien"}`}</p>
671
+ <p className="text-[0.73rem] text-muted-foreground">{skill.owner}{files.length > 0 && ` / ${files.length} ${files.length === 1 ? "file" : "files"}`}</p>
672
672
  </span>
673
673
  </header>
674
- <SettingsSection title="Verfügbarkeit">
675
- <SettingsValue label="Zielgruppe" value={skill.audiences.map(skillAudienceLabel).join(", ")} />
674
+ <SettingsSection title="Availability">
675
+ <SettingsValue label="Audience" value={skill.audiences.map(skillAudienceLabel).join(", ")} />
676
676
  </SettingsSection>
677
- <SettingsSection title="Registrierte Pfade">
678
- {skill.paths.map((path) => <SettingsValue copy key={path} label="Pfad" value={path} />)}
677
+ <SettingsSection title="Registered paths">
678
+ {skill.paths.map((path) => <SettingsValue copy key={path} label="Path" value={path} />)}
679
679
  </SettingsSection>
680
680
  {state.status === "loading" && (
681
681
  <div className={loadStateClass}>
682
682
  <Spinner aria-hidden className="size-3" />
683
- Skill wird gelesen.
683
+ Reading skill.
684
684
  </div>
685
685
  )}
686
686
  {state.status === "failed" && (
687
687
  <div className={cn(loadStateClass, "flex-col text-center text-destructive")} role="alert">
688
688
  <CircleAlertIcon size={14} />
689
- <strong className="text-[0.86rem] text-foreground">Skill nicht lesbar</strong>
689
+ <strong className="text-[0.86rem] text-foreground">Skill not readable</strong>
690
690
  <span className="max-w-[560px]">{state.error}</span>
691
691
  </div>
692
692
  )}
693
693
  {state.status === "ready" && files.length === 0 && (
694
- <SettingsEmpty>Der Skill-Pfad enthält keine Dateien.</SettingsEmpty>
694
+ <SettingsEmpty>The skill path contains no files.</SettingsEmpty>
695
695
  )}
696
696
  {files.length > 1 && (
697
697
  <div className="flex flex-wrap gap-1.5">
@@ -715,21 +715,21 @@ function SkillDocument({ file }: { file: SettingsSkillFile }) {
715
715
  <strong className={cardTitleClass}>{file.path}</strong>
716
716
  <small className="text-[0.63rem] text-muted-foreground">{formatBytes(file.bytes)}</small>
717
717
  </span>
718
- {file.content !== null && <CopyButton label={`${file.path} kopieren`} text={skillFileText(file)} />}
718
+ {file.content !== null && <CopyButton label={`Copy ${file.path}`} text={skillFileText(file)} />}
719
719
  </header>
720
720
  {file.frontMatter !== null && (
721
721
  <details className={cn(disclosureClass, "mt-3 mr-3 ml-3")}>
722
722
  <summary className={summaryClass}>
723
723
  <span className={cardCopyClass}>
724
724
  <strong className={cardTitleClass}>Frontmatter</strong>
725
- <small className={cardNoteClass}>Kopfdaten, die die Agentenlaufzeit aus der Datei liest</small>
725
+ <small className={cardNoteClass}>Header data the agent runtime reads from the file</small>
726
726
  </span>
727
727
  </summary>
728
- <PromptCode content={file.frontMatter} copyLabel="Frontmatter kopieren" />
728
+ <PromptCode content={file.frontMatter} copyLabel="Copy frontmatter" />
729
729
  </details>
730
730
  )}
731
731
  {file.content === null
732
- ? <SettingsEmpty className="m-3">Diese Datei ist nicht als Text darstellbar.</SettingsEmpty>
732
+ ? <SettingsEmpty className="m-3">This file cannot be shown as text.</SettingsEmpty>
733
733
  : file.path.toLowerCase().endsWith(".md")
734
734
  ? <div className="px-4.5 pt-4 pb-5 text-[0.79rem] leading-[1.62] text-foreground"><Markdown text={file.content} /></div>
735
735
  : <div className="overflow-auto"><SourceCode className="px-4 pt-4 pb-5 text-[0.7rem] leading-[1.55]" content={file.content} path={file.path} /></div>}
@@ -742,7 +742,7 @@ function ModelCard({ model }: { model: SettingsModel }) {
742
742
  <article className={cn(cardClass, "grid gap-[3px] px-3.5 py-3")}>
743
743
  <strong className="truncate text-[0.79rem]">{model.label}</strong>
744
744
  <span className="truncate text-[0.67rem] text-muted-foreground">{model.provider} / {model.model}</span>
745
- <small className="truncate text-[0.67rem] text-muted-foreground">Treiber: {model.driver}</small>
745
+ <small className="truncate text-[0.67rem] text-muted-foreground">Driver: {model.driver}</small>
746
746
  </article>
747
747
  );
748
748
  }
@@ -753,7 +753,7 @@ function ProfileCard({ profile }: { profile: SettingsProfile }) {
753
753
  profile.driver,
754
754
  profile.provider,
755
755
  profile.model,
756
- ...(profile.thinking ? [`Denktiefe ${profile.thinking}`] : []),
756
+ ...(profile.thinking ? [`Thinking level ${profile.thinking}`] : []),
757
757
  ]
758
758
  : [profile.driver];
759
759
  return (
@@ -766,8 +766,8 @@ function ProfileCard({ profile }: { profile: SettingsProfile }) {
766
766
  </header>
767
767
  <p className={cardCopyTextClass}>{profile.description}</p>
768
768
  <footer className="flex flex-wrap gap-x-3 gap-y-1.5 text-[0.64rem] text-muted-foreground">
769
- <span>{profile.turnTimeoutMs === null ? "Kein Turn-Timeout" : `Turn-Timeout ${formatDuration(profile.turnTimeoutMs)}`}</span>
770
- <span>{profile.isolateWorkspace ? "Eigener Agenten-Workspace" : "Gemeinsamer Run-Workspace"}</span>
769
+ <span>{profile.turnTimeoutMs === null ? "No turn timeout" : `Turn timeout ${formatDuration(profile.turnTimeoutMs)}`}</span>
770
+ <span>{profile.isolateWorkspace ? "Own agent workspace" : "Shared run workspace"}</span>
771
771
  </footer>
772
772
  </article>
773
773
  );
@@ -781,9 +781,9 @@ function HookCard({ hook }: { hook: SettingsAgentHook }) {
781
781
  <strong className={cardTitleClass}>{hook.id}</strong>
782
782
  <small className={cardNoteClass}>{hook.owner}</small>
783
783
  </span>
784
- <StatusBadge active label={hook.kind === "internal" ? "Intern" : "Plugin-Beitrag"} />
784
+ <StatusBadge active label={hook.kind === "internal" ? "Internal" : "Plugin contribution"} />
785
785
  </header>
786
- <SettingsValue label="Auflösung je Agent" value={hook.resolvesPerAgent ? "Ja" : "Nein"} />
786
+ <SettingsValue label="Resolved per agent" value={hook.resolvesPerAgent ? "Yes" : "No"} />
787
787
  {hook.factories.length > 0 && (
788
788
  <SettingsValue
789
789
  label="Factories"
@@ -812,7 +812,7 @@ function ToolCard({ tool }: { tool: SettingsTool }) {
812
812
  </header>
813
813
  <p className={cn(cardCopyTextClass, "my-0")}>{tool.description}</p>
814
814
  <dl className="grid grid-cols-2 gap-1.5 max-md:grid-cols-1">
815
- {[["Eigentümer", tool.owner], ["Herkunft", tool.source], ["Scope", toolScopeLabel(tool.scope)], ["Verfügbarkeit", tool.availabilityDetail]].map(([label, value]) => (
815
+ {[["Owner", tool.owner], ["Source", tool.source], ["Scope", toolScopeLabel(tool.scope)], ["Availability", tool.availabilityDetail]].map(([label, value]) => (
816
816
  <div className="grid min-w-0 gap-0.5 rounded-lg border border-border-soft bg-background/68 px-2 py-1.5" key={label}>
817
817
  <dt className="text-[0.61rem] text-muted-foreground">{label}</dt>
818
818
  <dd className="min-w-0 text-[0.68rem] text-foreground [overflow-wrap:anywhere]">{value}</dd>
@@ -864,7 +864,7 @@ function SettingsValue({ copy = false, label, value }: { copy?: boolean; label:
864
864
  <div className="grid min-h-[38px] grid-cols-[minmax(130px,0.28fr)_minmax(0,1fr)_auto] items-center gap-2.5 rounded-lg border border-border-soft bg-background/68 px-2.5 py-1.5 max-[520px]:grid-cols-[minmax(0,1fr)_auto]">
865
865
  <span className={cn(valueLabelClass, "max-[520px]:col-span-full")}>{label}</span>
866
866
  <code className="min-w-0 truncate font-mono text-[0.7rem] text-foreground" title={value}>{value}</code>
867
- {copy && <CopyButton label={`${label} kopieren`} text={value} />}
867
+ {copy && <CopyButton label={`Copy ${label}`} text={value} />}
868
868
  </div>
869
869
  );
870
870
  }
@@ -894,7 +894,7 @@ function CopyButton({ className, label, text }: { className?: string; label: str
894
894
  .then(() => setStatus("copied"))
895
895
  .catch(() => setStatus("failed"));
896
896
  };
897
- const statusLabel = status === "copied" ? "Kopiert" : status === "failed" ? "Nicht kopiert" : "Kopieren";
897
+ const statusLabel = status === "copied" ? "Copied" : status === "failed" ? "Not copied" : "Copy";
898
898
  return (
899
899
  <Button
900
900
  aria-label={label}
@@ -931,16 +931,16 @@ const skillFileText = (file: SettingsSkillFile) =>
931
931
 
932
932
  const formatDuration = (milliseconds: number) => {
933
933
  const seconds = milliseconds / 1000;
934
- if (seconds < 60) return `${seconds.toLocaleString("de-DE")} s`;
934
+ if (seconds < 60) return `${seconds.toLocaleString("en-US")} s`;
935
935
  const minutes = seconds / 60;
936
- if (minutes < 60) return `${minutes.toLocaleString("de-DE")} min`;
937
- return `${(minutes / 60).toLocaleString("de-DE")} h`;
936
+ if (minutes < 60) return `${minutes.toLocaleString("en-US")} min`;
937
+ return `${(minutes / 60).toLocaleString("en-US")} h`;
938
938
  };
939
939
 
940
940
  const sensitiveKey = (key: string) => /secret|token|password|credential|api.?key|authorization|cookie/i.test(key);
941
941
 
942
942
  const sanitizedValue = (value: unknown, key = ""): unknown => {
943
- if (key && sensitiveKey(key)) return "[ausgeblendet]";
943
+ if (key && sensitiveKey(key)) return "[hidden]";
944
944
  if (Array.isArray(value)) return value.map((entry) => sanitizedValue(entry));
945
945
  if (typeof value !== "object" || value === null) return value;
946
946
  return Object.fromEntries(