@schlenkr/ragents 0.1.10 → 0.1.11

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (743) hide show
  1. package/apps/server/package.json +1 -1
  2. package/apps/server/src/access-projection.ts +4 -4
  3. package/apps/server/src/access-service.ts +3 -3
  4. package/apps/server/src/access-session.ts +19 -19
  5. package/apps/server/src/api/contracts.ts +29 -29
  6. package/apps/server/src/api/core-methods.ts +17 -17
  7. package/apps/server/src/api/delivery.ts +2 -2
  8. package/apps/server/src/api/reference.ts +27 -27
  9. package/apps/server/src/api/rights.ts +18 -18
  10. package/apps/server/src/chat-handler.ts +5 -5
  11. package/apps/server/src/config-definition.ts +37 -10
  12. package/apps/server/src/config-file.ts +49 -49
  13. package/apps/server/src/config.ts +2 -0
  14. package/apps/server/src/data-directory.ts +2 -2
  15. package/apps/server/src/external-access.ts +1 -1
  16. package/apps/server/src/folder-install.ts +1 -1
  17. package/apps/server/src/help-files.ts +1 -1
  18. package/apps/server/src/host-api.json +6 -1
  19. package/apps/server/src/host-api.ts +3 -2
  20. package/apps/server/src/host-record.ts +3 -3
  21. package/apps/server/src/host-resolution-hooks.mjs +4 -4
  22. package/apps/server/src/host-version.ts +17 -17
  23. package/apps/server/src/host-web.ts +5 -5
  24. package/apps/server/src/main.ts +6 -6
  25. package/apps/server/src/missing-environment.ts +6 -6
  26. package/apps/server/src/parent-watch.ts +4 -4
  27. package/apps/server/src/plugin-build/build.ts +31 -31
  28. package/apps/server/src/plugin-build/host-api-names.ts +7 -7
  29. package/apps/server/src/plugin-build/plugin-description.ts +15 -15
  30. package/apps/server/src/plugin-build/typecheck.ts +1 -1
  31. package/apps/server/src/plugin-support/actor-programs/app-project.ts +19 -19
  32. package/apps/server/src/plugin-support/actor-programs/client-compiler.ts +4 -4
  33. package/apps/server/src/plugin-support/actor-programs/client-contracts.ts +11 -11
  34. package/apps/server/src/plugin-support/actor-programs/contract.ts +17 -17
  35. package/apps/server/src/plugin-support/actor-programs/runtime-libraries.ts +1 -1
  36. package/apps/server/src/plugin-support/actor-programs/workflow/index.ts +5 -5
  37. package/apps/server/src/plugin-support/actor-programs/workflow/prompt-reader.ts +2 -2
  38. package/apps/server/src/plugin-support/chat-display-policy.ts +2 -2
  39. package/apps/server/src/plugin-support/front-matter.ts +6 -6
  40. package/apps/server/src/plugin-support/http.ts +2 -2
  41. package/apps/server/src/plugin-support/language-server/contract.ts +8 -8
  42. package/apps/server/src/plugin-support/language-server/plugin.ts +2 -2
  43. package/apps/server/src/plugin-support/language-server/snapshot-method.ts +1 -1
  44. package/apps/server/src/plugin-support/language-server/tools.ts +11 -11
  45. package/apps/server/src/plugin-support/model-aliases.ts +30 -20
  46. package/apps/server/src/plugin-support/model-choice.ts +15 -15
  47. package/apps/server/src/plugin-support/model-completion.ts +44 -23
  48. package/apps/server/src/plugin-support/model-providers.ts +170 -0
  49. package/apps/server/src/plugin-support/model-upstreams.ts +1 -1
  50. package/apps/server/src/plugin-support/native-typescript-child.ts +4 -4
  51. package/apps/server/src/plugin-support/native-typescript-executor.ts +12 -12
  52. package/apps/server/src/plugin-support/plugin-config.ts +3 -3
  53. package/apps/server/src/plugin-support/plugin-folder.ts +2 -2
  54. package/apps/server/src/plugin-support/plugins-root.ts +2 -2
  55. package/apps/server/src/plugin-support/process-sandbox.ts +39 -39
  56. package/apps/server/src/plugin-support/product-model-settings-contract.ts +3 -3
  57. package/apps/server/src/plugin-support/product-model-settings.ts +10 -10
  58. package/apps/server/src/plugin-support/product-relay.ts +9 -9
  59. package/apps/server/src/plugin-support/product-start-options.ts +4 -4
  60. package/apps/server/src/plugin-support/prompt.ts +1 -1
  61. package/apps/server/src/plugin-support/provision.ts +8 -8
  62. package/apps/server/src/plugin-support/run-scripts.ts +17 -17
  63. package/apps/server/src/plugin-support/skills.ts +18 -18
  64. package/apps/server/src/plugin-support/start-entries-contract.ts +17 -17
  65. package/apps/server/src/plugin-support/start-options-contract.ts +5 -5
  66. package/apps/server/src/plugin-support/system-prompts.ts +11 -11
  67. package/apps/server/src/plugin-support/thinking-level.ts +2 -2
  68. package/apps/server/src/plugin-support/tool-availability.ts +2 -2
  69. package/apps/server/src/plugin-support/workspace-ownership.ts +5 -5
  70. package/apps/server/src/plugin-support/workspace-sandbox-host.ts +37 -37
  71. package/apps/server/src/plugin-support/zip.ts +7 -7
  72. package/apps/server/src/profile/bundle-manifest.ts +17 -17
  73. package/apps/server/src/profile/compose.ts +12 -7
  74. package/apps/server/src/profile/plugin-discovery.ts +12 -12
  75. package/apps/server/src/profile/provisioning.ts +5 -5
  76. package/apps/server/src/profile-target.ts +10 -10
  77. package/apps/server/src/protocol.ts +2 -2
  78. package/apps/server/src/provider.ts +61 -56
  79. package/apps/server/src/ragents/actor-chat-history.ts +8 -8
  80. package/apps/server/src/ragents/chat-text-positions.ts +2 -2
  81. package/apps/server/src/ragents/coordinator.ts +2 -2
  82. package/apps/server/src/ragents/engine.ts +23 -23
  83. package/apps/server/src/ragents/global-chat.ts +8 -8
  84. package/apps/server/src/ragents/host-services.ts +6 -3
  85. package/apps/server/src/ragents/journal-chat-events.ts +1 -1
  86. package/apps/server/src/ragents/run-owner.ts +2 -2
  87. package/apps/server/src/ragents/session.ts +49 -49
  88. package/apps/server/src/ragents/typescript-tools.ts +12 -12
  89. package/apps/server/src/ragents/workspace-runtime.ts +28 -28
  90. package/apps/server/src/rpc/dispatcher.ts +19 -19
  91. package/apps/server/src/rpc/http-transport.ts +11 -11
  92. package/apps/server/src/rpc/stdio-transport.ts +3 -3
  93. package/apps/server/src/run-preparation-input.ts +5 -5
  94. package/apps/server/src/run-preparation.ts +24 -24
  95. package/apps/server/src/run-transfer.ts +39 -39
  96. package/apps/server/src/server.ts +48 -48
  97. package/apps/server/src/settings.ts +1 -1
  98. package/apps/server/src/startup.ts +3 -3
  99. package/apps/server/src/title-compactor.ts +9 -9
  100. package/apps/server/src/title-settings.ts +3 -3
  101. package/apps/server/src/web-bundles.ts +2 -2
  102. package/apps/server/src/web-stylesheet.ts +2 -2
  103. package/apps/web/dist/assets/{highlighted-body-KPVGNVTW-BO4wLQtE.js → highlighted-body-KPVGNVTW-BfNSGxjB.js} +1 -1
  104. package/apps/web/dist/assets/main-D6bsKcIK.js +11 -0
  105. package/apps/web/dist/assets/mermaid-HWGCJPDP-DROEqEeg.js +608 -0
  106. package/apps/web/dist/assets/runPanel-Dumuuqry.js +21 -0
  107. package/apps/web/dist/help/guide-access.html +5 -5
  108. package/apps/web/dist/help/guide-access.md +2 -2
  109. package/apps/web/dist/help/guide-clients.html +53 -54
  110. package/apps/web/dist/help/guide-clients.md +50 -51
  111. package/apps/web/dist/help/guide-distributed.html +12 -7
  112. package/apps/web/dist/help/guide-distributed.md +9 -4
  113. package/apps/web/dist/help/guide-functions.html +3 -3
  114. package/apps/web/dist/help/guide-getting-started.html +24 -15
  115. package/apps/web/dist/help/guide-getting-started.md +22 -12
  116. package/apps/web/dist/help/guide-ideas.html +3 -3
  117. package/apps/web/dist/help/guide-plugins.html +5 -4
  118. package/apps/web/dist/help/guide-plugins.md +2 -1
  119. package/apps/web/dist/help/guide-programs.html +3 -3
  120. package/apps/web/dist/help/guide-runtime.html +6 -6
  121. package/apps/web/dist/help/guide-runtime.md +3 -3
  122. package/apps/web/dist/help/guide.html +3 -3
  123. package/apps/web/dist/help/index.html +196 -144
  124. package/apps/web/dist/help/mini-app.css +6 -0
  125. package/apps/web/dist/help/mini-app.js +14 -14
  126. package/apps/web/dist/host-web.json +90 -90
  127. package/apps/web/dist/index.html +3 -3
  128. package/apps/web/dist/run-panel.html +3 -3
  129. package/apps/web/package.json +1 -1
  130. package/apps/web/src/AccessContext.tsx +15 -15
  131. package/apps/web/src/App.tsx +13 -13
  132. package/apps/web/src/DiffCode.tsx +2 -2
  133. package/apps/web/src/HelpDialog.tsx +3 -3
  134. package/apps/web/src/Overview.tsx +13 -13
  135. package/apps/web/src/PluginActivation.ts +1 -1
  136. package/apps/web/src/PluginChat.tsx +15 -15
  137. package/apps/web/src/PluginFailureNotice.tsx +1 -1
  138. package/apps/web/src/PluginRegistry.tsx +44 -44
  139. package/apps/web/src/RunPreparationChat.tsx +11 -11
  140. package/apps/web/src/RunStore.ts +1 -1
  141. package/apps/web/src/SessionList.tsx +14 -14
  142. package/apps/web/src/SettingsModal.tsx +112 -112
  143. package/apps/web/src/StartOptions.tsx +11 -11
  144. package/apps/web/src/StartSelection.tsx +11 -11
  145. package/apps/web/src/StartTiles.tsx +8 -8
  146. package/apps/web/src/SurfaceShortcuts.tsx +3 -3
  147. package/apps/web/src/ThemeSettings.tsx +8 -8
  148. package/apps/web/src/TitleModelSettings.tsx +13 -13
  149. package/apps/web/src/WorkspacePanel.tsx +9 -9
  150. package/apps/web/src/access-session.ts +4 -4
  151. package/apps/web/src/access-token.ts +5 -5
  152. package/apps/web/src/actor-conversation.ts +3 -3
  153. package/apps/web/src/actor-programs/client-ui/DataTable.tsx +8 -8
  154. package/apps/web/src/actor-programs/client-ui/FilePicker.tsx +4 -4
  155. package/apps/web/src/actor-programs/client-ui/FlowDiagram.tsx +13 -13
  156. package/apps/web/src/actor-programs/client-ui/Viewers.tsx +4 -4
  157. package/apps/web/src/actor-programs/client-ui/WorkflowDiagram.tsx +1 -1
  158. package/apps/web/src/actor-programs/client-ui/file-contracts.d.ts +4 -4
  159. package/apps/web/src/actor-programs/client-ui/file-selection.ts +1 -1
  160. package/apps/web/src/actor-programs/client-ui/viewer-contracts.d.ts +3 -3
  161. package/apps/web/src/api.ts +7 -7
  162. package/apps/web/src/chat/StoppedActorNotice.tsx +5 -5
  163. package/apps/web/src/chat/chat-target.ts +3 -3
  164. package/apps/web/src/chat/requests.ts +2 -2
  165. package/apps/web/src/chat/useAttachmentCapabilities.ts +2 -2
  166. package/apps/web/src/chat-view-settings.tsx +5 -6
  167. package/apps/web/src/diff-view.css +1 -1
  168. package/apps/web/src/highlighting.css +1 -1
  169. package/apps/web/src/language-server/language-server-plugin.tsx +30 -30
  170. package/apps/web/src/lib/labels.ts +6 -6
  171. package/apps/web/src/main.tsx +4 -4
  172. package/apps/web/src/offered-machines.ts +2 -2
  173. package/apps/web/src/page-opener.tsx +1 -1
  174. package/apps/web/src/panel/ConnectionsPage.tsx +23 -23
  175. package/apps/web/src/panel/LoginForm.tsx +6 -6
  176. package/apps/web/src/panel/PanelDialogs.tsx +22 -22
  177. package/apps/web/src/panel/PanelHeader.tsx +2 -2
  178. package/apps/web/src/panel/PanelPage.tsx +1 -1
  179. package/apps/web/src/panel/RunLine.tsx +4 -4
  180. package/apps/web/src/panel/RunsPage.tsx +15 -15
  181. package/apps/web/src/panel/StartPage.tsx +26 -26
  182. package/apps/web/src/panel/connection-state.ts +9 -9
  183. package/apps/web/src/panel/contract.ts +28 -28
  184. package/apps/web/src/panel.tsx +1 -1
  185. package/apps/web/src/plugin-bootstrap.ts +5 -5
  186. package/apps/web/src/product/ModelControl.tsx +3 -3
  187. package/apps/web/src/product/ProductModelSettings.tsx +16 -16
  188. package/apps/web/src/product/SystemPromptControl.tsx +11 -11
  189. package/apps/web/src/product/model-settings.ts +2 -2
  190. package/apps/web/src/rpc/client.ts +16 -16
  191. package/apps/web/src/rpc.ts +1 -1
  192. package/apps/web/src/run-overview.ts +1 -1
  193. package/apps/web/src/run-panel/RunPanelApp.tsx +39 -39
  194. package/apps/web/src/run-panel/RunPanelHeader.tsx +6 -6
  195. package/apps/web/src/run-panel/RunPanelMenu.tsx +6 -6
  196. package/apps/web/src/run-panel/RunPanelRail.tsx +4 -4
  197. package/apps/web/src/run-panel/RunPanelWorkspace.tsx +3 -3
  198. package/apps/web/src/run-panel/clipboard.ts +3 -3
  199. package/apps/web/src/run-panel/host-contract.ts +5 -5
  200. package/apps/web/src/run-panel/host.ts +15 -15
  201. package/apps/web/src/run-panel/input-bridge.ts +1 -1
  202. package/apps/web/src/run-panel/run-panel-location.ts +5 -5
  203. package/apps/web/src/run-panel/use-session-list.ts +1 -1
  204. package/apps/web/src/run-panel/workspace-state.ts +3 -3
  205. package/apps/web/src/run-panel.tsx +4 -4
  206. package/apps/web/src/run-preparation.ts +2 -2
  207. package/apps/web/src/run-view.ts +3 -3
  208. package/apps/web/src/settings-contributions.ts +32 -32
  209. package/apps/web/src/theme.ts +9 -9
  210. package/apps/web/src/title-model-settings.ts +6 -6
  211. package/apps/web/src/ui/ListDetail.tsx +9 -9
  212. package/apps/web/src/ui/dialog.tsx +2 -2
  213. package/apps/web/src/ui/modal-controller.ts +3 -3
  214. package/apps/web/src/ui/modal.tsx +2 -2
  215. package/apps/web/src/ui/popover.tsx +1 -1
  216. package/apps/web/src/ui/relative-time.ts +8 -8
  217. package/apps/web/src/ui/startup-notice.tsx +2 -2
  218. package/apps/web/src/ui/state-icon.tsx +1 -1
  219. package/apps/web/src/ui/state-vocabulary.ts +16 -16
  220. package/apps/web/src/ui/stop-button.tsx +2 -2
  221. package/bundles/ragents.activity/ragents-bundle.json +2 -2
  222. package/bundles/ragents.activity/web/classes.json +1 -1
  223. package/bundles/ragents.activity/web/index.js +1 -1
  224. package/bundles/ragents.activity/web/index.js.map +2 -2
  225. package/bundles/ragents.actor-programs/ragents-bundle.json +2 -2
  226. package/bundles/ragents.actor-programs/server/index.js +225 -225
  227. package/bundles/ragents.actor-programs/server/index.js.map +2 -2
  228. package/bundles/ragents.actor-programs/web/classes.json +1 -1
  229. package/bundles/ragents.actor-programs/web/index.js +1 -1
  230. package/bundles/ragents.actor-programs/web/index.js.map +3 -3
  231. package/bundles/ragents.ask/ragents-bundle.json +2 -2
  232. package/bundles/ragents.ask/server/chunks/{chunk-PDJO75SQ.js → chunk-YOV27MAR.js} +2 -2
  233. package/bundles/ragents.ask/server/chunks/chunk-YOV27MAR.js.map +7 -0
  234. package/bundles/ragents.ask/server/exports/server/contract.js +1 -1
  235. package/bundles/ragents.ask/server/index.js +23 -23
  236. package/bundles/ragents.ask/server/index.js.map +2 -2
  237. package/bundles/ragents.ask/web/chunks/{chunk-WFN4374U.js → chunk-D6NNB5DS.js} +1 -1
  238. package/bundles/ragents.ask/web/chunks/chunk-D6NNB5DS.js.map +7 -0
  239. package/bundles/ragents.ask/web/chunks/{chunk-MBRPS477.js → chunk-IQBHK7MV.js} +2 -2
  240. package/bundles/ragents.ask/web/chunks/{chunk-MBRPS477.js.map → chunk-IQBHK7MV.js.map} +3 -3
  241. package/bundles/ragents.ask/web/chunks/chunk-PWFIAMX4.js +2 -0
  242. package/bundles/ragents.ask/web/chunks/chunk-PWFIAMX4.js.map +7 -0
  243. package/bundles/ragents.ask/web/chunks/chunk-QHGKEESD.js +2 -0
  244. package/bundles/ragents.ask/web/chunks/chunk-QHGKEESD.js.map +7 -0
  245. package/bundles/ragents.ask/web/classes.json +1 -1
  246. package/bundles/ragents.ask/web/exports/ask-payload.js +1 -1
  247. package/bundles/ragents.ask/web/exports/web/QuestionCard.js +1 -1
  248. package/bundles/ragents.ask/web/exports/web/api.js +1 -1
  249. package/bundles/ragents.ask/web/index.js +1 -1
  250. package/bundles/ragents.ask/web/index.js.map +2 -2
  251. package/bundles/ragents.browser/executor/index.mjs +35 -35
  252. package/bundles/ragents.browser/executor/index.mjs.map +2 -2
  253. package/bundles/ragents.browser/ragents-bundle.json +2 -2
  254. package/bundles/ragents.browser/server/chunks/{chunk-CWLX4VA5.js → chunk-PYEISBNE.js} +1 -1
  255. package/bundles/ragents.browser/server/chunks/{chunk-CWLX4VA5.js.map → chunk-PYEISBNE.js.map} +1 -1
  256. package/bundles/ragents.browser/server/exports/server/contract.js +1 -1
  257. package/bundles/ragents.browser/server/index.js +31 -31
  258. package/bundles/ragents.browser/server/index.js.map +2 -2
  259. package/bundles/ragents.browser/skills/browser-testing/SKILL.md +30 -30
  260. package/bundles/ragents.documents/prompt.hbs +1 -1
  261. package/bundles/ragents.documents/ragents-bundle.json +2 -2
  262. package/bundles/ragents.documents/server/chunks/{chunk-QIECRZ7C.js → chunk-KMZWOVTI.js} +3 -3
  263. package/bundles/ragents.documents/server/chunks/{chunk-QIECRZ7C.js.map → chunk-KMZWOVTI.js.map} +2 -2
  264. package/bundles/ragents.documents/server/exports/contract.js +1 -1
  265. package/bundles/ragents.documents/server/index.js +26 -26
  266. package/bundles/ragents.documents/server/index.js.map +2 -2
  267. package/bundles/ragents.documents/web/classes.json +1 -1
  268. package/bundles/ragents.documents/web/index.js +1 -1
  269. package/bundles/ragents.documents/web/index.js.map +3 -3
  270. package/bundles/ragents.lsp-fsharp/executor/index.mjs +4 -4
  271. package/bundles/ragents.lsp-fsharp/executor/index.mjs.map +2 -2
  272. package/bundles/ragents.lsp-fsharp/ragents-bundle.json +2 -2
  273. package/bundles/ragents.lsp-fsharp/server/index.js +5 -5
  274. package/bundles/ragents.lsp-fsharp/server/index.js.map +2 -2
  275. package/bundles/ragents.lsp-fsharp/web/index.js +1 -1
  276. package/bundles/ragents.lsp-fsharp/web/index.js.map +2 -2
  277. package/bundles/ragents.lsp-roslyn/executor/index.mjs +3 -3
  278. package/bundles/ragents.lsp-roslyn/executor/index.mjs.map +2 -2
  279. package/bundles/ragents.lsp-roslyn/ragents-bundle.json +2 -2
  280. package/bundles/ragents.lsp-roslyn/server/index.js +17 -17
  281. package/bundles/ragents.lsp-roslyn/server/index.js.map +2 -2
  282. package/bundles/ragents.lsp-roslyn/web/index.js +1 -1
  283. package/bundles/ragents.lsp-roslyn/web/index.js.map +2 -2
  284. package/bundles/ragents.lsp-typescript/executor/index.mjs +2 -2
  285. package/bundles/ragents.lsp-typescript/executor/index.mjs.map +2 -2
  286. package/bundles/ragents.lsp-typescript/ragents-bundle.json +2 -2
  287. package/bundles/ragents.lsp-typescript/server/index.js.map +1 -1
  288. package/bundles/ragents.lsp-typescript/web/index.js +1 -1
  289. package/bundles/ragents.lsp-typescript/web/index.js.map +2 -2
  290. package/bundles/ragents.model-relay/ragents-bundle.json +7 -3
  291. package/bundles/ragents.model-relay/server/index.js +25 -21
  292. package/bundles/ragents.model-relay/server/index.js.map +2 -2
  293. package/bundles/ragents.orchestration/ragents-bundle.json +2 -2
  294. package/bundles/ragents.orchestration/server/index.js +28 -28
  295. package/bundles/ragents.orchestration/server/index.js.map +2 -2
  296. package/bundles/ragents.orchestration/web/chunks/{chunk-OSKPH6SZ.js → chunk-CFMJD5ZI.js} +2 -2
  297. package/bundles/ragents.orchestration/web/chunks/chunk-HOBLI364.js +2 -0
  298. package/bundles/ragents.orchestration/web/chunks/{chunk-OQYCNYXN.js.map → chunk-HOBLI364.js.map} +2 -2
  299. package/bundles/ragents.orchestration/web/chunks/{chunk-ODMMQGX2.js → chunk-UCIMT2R4.js} +2 -2
  300. package/bundles/ragents.orchestration/web/classes.json +1 -1
  301. package/bundles/ragents.orchestration/web/exports/web/program-slot.js +1 -1
  302. package/bundles/ragents.orchestration/web/exports/web/surface-entities.js +1 -1
  303. package/bundles/ragents.orchestration/web/index.js +8 -8
  304. package/bundles/ragents.orchestration/web/index.js.map +2 -2
  305. package/bundles/ragents.overseer/ragents-bundle.json +2 -2
  306. package/bundles/ragents.overseer/server/index.js +98 -98
  307. package/bundles/ragents.overseer/server/index.js.map +2 -2
  308. package/bundles/ragents.overseer/web/classes.json +1 -1
  309. package/bundles/ragents.overseer/web/index.js +1 -1
  310. package/bundles/ragents.overseer/web/index.js.map +2 -2
  311. package/bundles/ragents.processes/ragents-bundle.json +2 -2
  312. package/bundles/ragents.processes/server/index.js +11 -11
  313. package/bundles/ragents.processes/server/index.js.map +2 -2
  314. package/bundles/ragents.processes/web/classes.json +1 -1
  315. package/bundles/ragents.processes/web/index.js +3 -3
  316. package/bundles/ragents.processes/web/index.js.map +2 -2
  317. package/bundles/ragents.product/ragents-bundle.json +2 -2
  318. package/bundles/ragents.product/server/index.js +12 -13
  319. package/bundles/ragents.product/server/index.js.map +2 -2
  320. package/bundles/ragents.product/web/classes.json +1 -1
  321. package/bundles/ragents.product/web/index.js +1 -1
  322. package/bundles/ragents.product/web/index.js.map +2 -2
  323. package/bundles/ragents.profile-distribution/ragents-bundle.json +2 -2
  324. package/bundles/ragents.profile-distribution/server/index.js +31 -31
  325. package/bundles/ragents.profile-distribution/server/index.js.map +2 -2
  326. package/bundles/ragents.reference/ragents-bundle.json +2 -2
  327. package/bundles/ragents.reference/run-scripts/balcony-wizard/RUN.md +19 -19
  328. package/bundles/ragents.reference/run-scripts/balcony-wizard/actors/balcony-app/package.json +2 -2
  329. package/bundles/ragents.reference/run-scripts/balcony-wizard/actors/balcony-app/src/client.tsx +14 -14
  330. package/bundles/ragents.reference/run-scripts/balcony-wizard/actors/balcony-app/src/conversation.ts +2 -2
  331. package/bundles/ragents.reference/run-scripts/balcony-wizard/actors/balcony-app/tests/conversation.test.ts +49 -49
  332. package/bundles/ragents.reference/run-scripts/balcony-wizard/package.json +1 -1
  333. package/bundles/ragents.reference/run-scripts/balcony-wizard/src/server.ts +9 -9
  334. package/bundles/ragents.reference/run-scripts/balcony-wizard/tests/program.test.ts +9 -9
  335. package/bundles/ragents.reference/run-scripts/conversation-circle/RUN.md +7 -7
  336. package/bundles/ragents.reference/run-scripts/conversation-circle/package.json +1 -1
  337. package/bundles/ragents.reference/run-scripts/conversation-circle/src/server.ts +13 -13
  338. package/bundles/ragents.reference/run-scripts/conversation-circle/tests/helpers.ts +1 -1
  339. package/bundles/ragents.reference/run-scripts/conversation-circle/tests/program.test.ts +8 -8
  340. package/bundles/ragents.reference/run-scripts/learning-afternoon/RUN.md +16 -16
  341. package/bundles/ragents.reference/run-scripts/learning-afternoon/package.json +1 -1
  342. package/bundles/ragents.reference/run-scripts/learning-afternoon/prompts/experiment.md +1 -1
  343. package/bundles/ragents.reference/run-scripts/learning-afternoon/prompts/helper.md +3 -3
  344. package/bundles/ragents.reference/run-scripts/learning-afternoon/prompts/quiz.md +1 -1
  345. package/bundles/ragents.reference/run-scripts/learning-afternoon/src/server.ts +9 -9
  346. package/bundles/ragents.reference/run-scripts/learning-afternoon/tests/program.test.ts +39 -39
  347. package/bundles/ragents.reference/run-scripts/moderated-round/RUN.md +7 -7
  348. package/bundles/ragents.reference/run-scripts/moderated-round/package.json +1 -1
  349. package/bundles/ragents.reference/run-scripts/moderated-round/src/server.ts +9 -9
  350. package/bundles/ragents.reference/run-scripts/moderated-round/tests/helpers.ts +1 -1
  351. package/bundles/ragents.reference/run-scripts/moderated-round/tests/program.test.ts +6 -6
  352. package/bundles/ragents.reference/run-scripts/shared-actor-list/RUN.md +12 -12
  353. package/bundles/ragents.reference/run-scripts/shared-actor-list/actors/shared-list/package.json +2 -2
  354. package/bundles/ragents.reference/run-scripts/shared-actor-list/actors/shared-list/src/contract.ts +3 -3
  355. package/bundles/ragents.reference/run-scripts/shared-actor-list/actors/shared-list/tests/program.test.ts +4 -4
  356. package/bundles/ragents.reference/run-scripts/shared-actor-list/package.json +1 -1
  357. package/bundles/ragents.reference/run-scripts/shared-actor-list/src/server.ts +11 -11
  358. package/bundles/ragents.reference/run-scripts/shared-actor-list/tests/helpers.ts +1 -1
  359. package/bundles/ragents.reference/run-scripts/shared-actor-list/tests/program.test.ts +13 -13
  360. package/bundles/ragents.reference/run-scripts/word-game/RUN.md +18 -18
  361. package/bundles/ragents.reference/run-scripts/word-game/package.json +2 -2
  362. package/bundles/ragents.reference/run-scripts/word-game/src/client.tsx +1 -1
  363. package/bundles/ragents.reference/run-scripts/word-game/src/contract.ts +2 -2
  364. package/bundles/ragents.reference/run-scripts/word-game/src/server.ts +16 -16
  365. package/bundles/ragents.reference/run-scripts/word-game/tests/program.test.ts +39 -39
  366. package/bundles/ragents.reference/skills/100-shared-actor-list/SKILL.md +5 -5
  367. package/bundles/ragents.reference/skills/110-all-card-slots/SKILL.md +5 -5
  368. package/bundles/ragents.reference/skills/150-editorial-workbench/SKILL.md +5 -5
  369. package/bundles/ragents.reference/skills/160-learning-companion/SKILL.md +5 -5
  370. package/bundles/ragents.reference/skills/170-photo-collection/SKILL.md +5 -5
  371. package/bundles/ragents.reference/skills/180-decision-workbench/SKILL.md +5 -5
  372. package/bundles/ragents.reference/skills/190-review-queue/SKILL.md +5 -5
  373. package/bundles/ragents.reference/skills/20-circle-of-four/SKILL.md +5 -5
  374. package/bundles/ragents.reference/skills/200-typescript-diagnostics/SKILL.md +5 -5
  375. package/bundles/ragents.reference/skills/210-moderator-handover/SKILL.md +5 -5
  376. package/bundles/ragents.reference/skills/220-actor-approval-list/SKILL.md +5 -5
  377. package/bundles/ragents.reference/skills/230-shared-state-views/SKILL.md +5 -5
  378. package/bundles/ragents.reference/skills/240-live-result-list/SKILL.md +5 -5
  379. package/bundles/ragents.reference/skills/250-balcony-wizard/SKILL.md +5 -5
  380. package/bundles/ragents.reference/skills/30-llm-without-runtime-knowledge/SKILL.md +5 -5
  381. package/bundles/ragents.reference/skills/35-actor-input-fifo/SKILL.md +5 -5
  382. package/bundles/ragents.reference/skills/40-subscription-matrix/SKILL.md +5 -5
  383. package/bundles/ragents.reference/skills/50-subscription-removal/SKILL.md +5 -5
  384. package/bundles/ragents.reference/skills/60-stop-in-the-circle/SKILL.md +5 -5
  385. package/bundles/ragents.reference/skills/65-artifact-least-privilege/SKILL.md +5 -5
  386. package/bundles/ragents.reference/skills/70-headless-counter/SKILL.md +5 -5
  387. package/bundles/ragents.reference/skills/75-lsp-demo/SKILL.md +5 -5
  388. package/bundles/ragents.reference/skills/80-actor-text-analysis/SKILL.md +5 -5
  389. package/bundles/ragents.reference/skills/90-actor-notes/SKILL.md +5 -5
  390. package/bundles/ragents.reference/skills/95-hello-world/SKILL.md +5 -5
  391. package/bundles/ragents.reference/skills/decision-brief/SKILL.md +24 -24
  392. package/bundles/ragents.reference/skills/learning-sprint/SKILL.md +24 -24
  393. package/bundles/ragents.reference/web/classes.json +1 -1
  394. package/bundles/ragents.reference/web/index.js +1 -1
  395. package/bundles/ragents.reference/web/index.js.map +2 -2
  396. package/bundles/ragents.todo/ragents-bundle.json +2 -2
  397. package/bundles/ragents.todo/server/index.js +5 -5
  398. package/bundles/ragents.todo/server/index.js.map +2 -2
  399. package/bundles/ragents.todo/web/classes.json +1 -1
  400. package/bundles/ragents.todo/web/index.js +1 -1
  401. package/bundles/ragents.todo/web/index.js.map +2 -2
  402. package/bundles/ragents.transcript/ragents-bundle.json +2 -2
  403. package/bundles/ragents.transcript/server/index.js +11 -11
  404. package/bundles/ragents.transcript/server/index.js.map +2 -2
  405. package/bundles/ragents.watch/ragents-bundle.json +2 -2
  406. package/bundles/ragents.watch/server/index.js +48 -48
  407. package/bundles/ragents.watch/server/index.js.map +2 -2
  408. package/bundles/ragents.workspace/ragents-bundle.json +2 -2
  409. package/bundles/ragents.workspace/server/index.js +81 -81
  410. package/bundles/ragents.workspace/server/index.js.map +2 -2
  411. package/bundles/ragents.workspace/web/classes.json +1 -1
  412. package/bundles/ragents.workspace/web/index.js +1 -1
  413. package/bundles/ragents.workspace/web/index.js.map +2 -2
  414. package/package.json +4 -4
  415. package/packages/agent/dist/core/model-runtime.d.ts +7 -2
  416. package/packages/agent/dist/index.d.ts +1 -1
  417. package/packages/agent/dist/loop/agent-loop.d.ts +2 -2
  418. package/packages/agent/src/core/compaction/utils.ts +1 -1
  419. package/packages/agent/src/core/model-runtime.ts +45 -5
  420. package/packages/agent/src/index.ts +1 -1
  421. package/packages/agent/src/loop/agent-loop.ts +2 -2
  422. package/packages/ai/dist/models.d.ts +1 -0
  423. package/packages/ai/dist/models.generated.d.ts +4544 -983
  424. package/packages/ai/dist/providers/openrouter.models.d.ts +4544 -983
  425. package/packages/ai/src/api/ai-sdk.ts +33 -7
  426. package/packages/ai/src/api-registry.ts +1 -1
  427. package/packages/ai/src/index.ts +2 -2
  428. package/packages/ai/src/models.generated.ts +1 -1
  429. package/packages/ai/src/models.ts +1 -1
  430. package/packages/ai/src/providers/openrouter.models.ts +3723 -550
  431. package/packages/ragents/src/access.ts +12 -12
  432. package/packages/ragents/src/agents/actor-input.ts +33 -33
  433. package/packages/ragents/src/agents/catalog.ts +1 -1
  434. package/packages/ragents/src/agents/delivery.ts +17 -17
  435. package/packages/ragents/src/agents/plugins.ts +1 -1
  436. package/packages/ragents/src/agents/scheduler.ts +7 -7
  437. package/packages/ragents/src/agents/schemas.ts +1 -1
  438. package/packages/ragents/src/agents/tool-orientation.ts +4 -4
  439. package/packages/ragents/src/agents/tools.ts +20 -20
  440. package/packages/ragents/src/agents/toolset.ts +5 -5
  441. package/packages/ragents/src/agents/workspaces.ts +1 -1
  442. package/packages/ragents/src/domain/events.ts +1 -1
  443. package/packages/ragents/src/domain/model.ts +5 -5
  444. package/packages/ragents/src/drivers/agent-runtime.ts +1 -1
  445. package/packages/ragents/src/drivers/agent-turn.ts +4 -4
  446. package/packages/ragents/src/drivers/agent.ts +2 -2
  447. package/packages/ragents/src/drivers/attachments.ts +4 -4
  448. package/packages/ragents/src/http/contracts.ts +14 -14
  449. package/packages/ragents/src/http/methods.ts +6 -6
  450. package/packages/ragents/src/plugin-host.ts +119 -119
  451. package/packages/ragents/src/plugin-types.ts +16 -16
  452. package/packages/ragents/src/rpc/contract.ts +5 -5
  453. package/packages/ragents/src/rpc/contribution.ts +2 -2
  454. package/packages/ragents/src/rpc/peer.ts +11 -11
  455. package/packages/ragents/src/rpc/protocol.ts +2 -2
  456. package/packages/ragents/src/runtime/decisions/turns.ts +1 -1
  457. package/packages/ragents/src/runtime/journal.ts +10 -10
  458. package/packages/ragents/src/runtime/orchestration.ts +8 -8
  459. package/packages/ragents/src/runtime/stop.ts +2 -2
  460. package/packages/ragents/src/script/mediators.ts +35 -35
  461. package/packages/ragents/src/typescript/async-compiler.ts +14 -14
  462. package/packages/ragents/src/typescript/compiler-worker.ts +2 -2
  463. package/packages/ragents/src/typescript/compiler.ts +7 -7
  464. package/packages/ragents/src/typescript/snippet.ts +5 -5
  465. package/packages/workspace-executor/src/bash-launch.ts +13 -13
  466. package/packages/workspace-executor/src/commands.ts +18 -18
  467. package/packages/workspace-executor/src/context.ts +15 -15
  468. package/packages/workspace-executor/src/contributions.ts +35 -35
  469. package/packages/workspace-executor/src/errors.ts +1 -1
  470. package/packages/workspace-executor/src/executor.ts +15 -15
  471. package/packages/workspace-executor/src/files.ts +30 -30
  472. package/packages/workspace-executor/src/language-server/contract.ts +2 -2
  473. package/packages/workspace-executor/src/language-server/diagnostics.ts +4 -4
  474. package/packages/workspace-executor/src/language-server/host.ts +35 -35
  475. package/packages/workspace-executor/src/language-server/json-rpc.ts +4 -4
  476. package/packages/workspace-executor/src/language-server/module.ts +11 -11
  477. package/packages/workspace-executor/src/language-server/roots.ts +3 -3
  478. package/packages/workspace-executor/src/language-server/session.ts +15 -15
  479. package/packages/workspace-executor/src/language-server/workspace-solutions.ts +2 -2
  480. package/packages/workspace-executor/src/managed-process.ts +12 -12
  481. package/packages/workspace-executor/src/module.ts +8 -8
  482. package/packages/workspace-executor/src/modules.ts +3 -3
  483. package/packages/workspace-executor/src/paths.ts +11 -11
  484. package/packages/workspace-executor/src/process-sandbox.ts +3 -3
  485. package/packages/workspace-executor/src/processes/module.ts +3 -3
  486. package/packages/workspace-executor/src/processes/process-table.ts +20 -20
  487. package/packages/workspace-executor/src/processes/scanner.ts +3 -3
  488. package/packages/workspace-executor/src/processes/snapshot.ts +2 -2
  489. package/packages/workspace-executor/src/processes/terminator.ts +13 -13
  490. package/packages/workspace-executor/src/run-folders.ts +3 -3
  491. package/packages/workspace-executor/src/safe-environment.ts +4 -4
  492. package/packages/workspace-executor/src/sandbox-tools.ts +28 -28
  493. package/packages/workspace-executor/src/session-ident.ts +2 -2
  494. package/packages/workspace-executor/src/shell-platform.ts +2 -2
  495. package/packages/workspace-executor/src/tools.ts +5 -5
  496. package/plugins/ragents.activity/web/ActivityHeader.tsx +3 -3
  497. package/plugins/ragents.activity/web/activity.ts +2 -2
  498. package/plugins/ragents.actor-programs/server/access-projections.ts +1 -1
  499. package/plugins/ragents.actor-programs/server/agent-tools.ts +2 -2
  500. package/plugins/ragents.actor-programs/server/capability-resolver.ts +3 -3
  501. package/plugins/ragents.actor-programs/server/controls-template.ts +46 -46
  502. package/plugins/ragents.actor-programs/server/controls-tool.ts +4 -4
  503. package/plugins/ragents.actor-programs/server/limits.ts +3 -3
  504. package/plugins/ragents.actor-programs/server/methods.ts +1 -1
  505. package/plugins/ragents.actor-programs/server/project-diagnostics.ts +8 -8
  506. package/plugins/ragents.actor-programs/server/routes.ts +8 -8
  507. package/plugins/ragents.actor-programs/server/runtime.ts +90 -90
  508. package/plugins/ragents.actor-programs/server/templates.ts +59 -59
  509. package/plugins/ragents.actor-programs/server/test-report.ts +5 -5
  510. package/plugins/ragents.actor-programs/server/tool-contributor.ts +1 -1
  511. package/plugins/ragents.actor-programs/web/ActorViewFrame.tsx +17 -17
  512. package/plugins/ragents.actor-programs/web/AppsPanel.tsx +26 -26
  513. package/plugins/ragents.actor-programs/web/EmbeddedApps.tsx +3 -3
  514. package/plugins/ragents.actor-programs/web/FullscreenHost.tsx +2 -2
  515. package/plugins/ragents.actor-programs/web/FunctionForm.tsx +16 -16
  516. package/plugins/ragents.actor-programs/web/ProgramSource.tsx +5 -5
  517. package/plugins/ragents.actor-programs/web/api.ts +36 -36
  518. package/plugins/ragents.actor-programs/web/bridge.ts +8 -8
  519. package/plugins/ragents.actor-programs/web/chat-state.ts +4 -4
  520. package/plugins/ragents.actor-programs/web/context.ts +1 -1
  521. package/plugins/ragents.actor-programs/web/function-input.ts +6 -6
  522. package/plugins/ragents.actor-programs/web/index.tsx +1 -1
  523. package/plugins/ragents.actor-programs/web/program-state.ts +4 -4
  524. package/plugins/ragents.ask/ask-payload.ts +1 -1
  525. package/plugins/ragents.ask/contract.ts +5 -5
  526. package/plugins/ragents.ask/server/answer-method.ts +1 -1
  527. package/plugins/ragents.ask/server/ask-service.ts +9 -9
  528. package/plugins/ragents.ask/server/ask-tool.ts +10 -10
  529. package/plugins/ragents.ask/server/contract.ts +5 -5
  530. package/plugins/ragents.ask/web/AskActionView.tsx +1 -1
  531. package/plugins/ragents.ask/web/QuestionCard.tsx +22 -22
  532. package/plugins/ragents.ask/web/index.tsx +2 -2
  533. package/plugins/ragents.browser/executor/contract.ts +6 -6
  534. package/plugins/ragents.browser/executor/index.ts +1 -1
  535. package/plugins/ragents.browser/executor/module.ts +6 -6
  536. package/plugins/ragents.browser/executor/pages.ts +32 -32
  537. package/plugins/ragents.browser/executor/playwright.ts +8 -8
  538. package/plugins/ragents.browser/provision.ts +7 -7
  539. package/plugins/ragents.browser/server/browser.ts +14 -14
  540. package/plugins/ragents.browser/server/contract.ts +1 -1
  541. package/plugins/ragents.browser/server/index.ts +1 -1
  542. package/plugins/ragents.browser/server/tools.ts +14 -14
  543. package/plugins/ragents.browser/skills/browser-testing/SKILL.md +30 -30
  544. package/plugins/ragents.documents/contract.ts +2 -2
  545. package/plugins/ragents.documents/prompt.hbs +1 -1
  546. package/plugins/ragents.documents/server/document-write-tool.ts +12 -12
  547. package/plugins/ragents.documents/server/files-route.ts +6 -6
  548. package/plugins/ragents.documents/server/show-document-tool.ts +26 -26
  549. package/plugins/ragents.documents/server/store.ts +1 -1
  550. package/plugins/ragents.documents/web/DocumentViewer.tsx +37 -37
  551. package/plugins/ragents.documents/web/index.tsx +11 -11
  552. package/plugins/ragents.lsp-fsharp/executor.ts +7 -7
  553. package/plugins/ragents.lsp-fsharp/provision.ts +7 -7
  554. package/plugins/ragents.lsp-roslyn/executor.ts +5 -5
  555. package/plugins/ragents.lsp-roslyn/provision.ts +4 -4
  556. package/plugins/ragents.lsp-roslyn/server/index.ts +5 -5
  557. package/plugins/ragents.lsp-roslyn/server/solution-on-start.ts +13 -13
  558. package/plugins/ragents.lsp-typescript/executor.ts +3 -3
  559. package/plugins/ragents.model-relay/server/config.ts +6 -2
  560. package/plugins/ragents.model-relay/server/index.ts +2 -2
  561. package/plugins/ragents.model-relay/server/relay.ts +23 -22
  562. package/plugins/ragents.orchestration/contract.ts +8 -8
  563. package/plugins/ragents.orchestration/server/index.ts +4 -4
  564. package/plugins/ragents.orchestration/server/run-stop-tool.ts +3 -3
  565. package/plugins/ragents.orchestration/server/surface-tool.ts +5 -5
  566. package/plugins/ragents.orchestration/tiled-layout.ts +11 -11
  567. package/plugins/ragents.orchestration/web/ActorChat.tsx +2 -2
  568. package/plugins/ragents.orchestration/web/ActorChatControls.tsx +4 -4
  569. package/plugins/ragents.orchestration/web/ActorChatPreview.tsx +1 -1
  570. package/plugins/ragents.orchestration/web/ActorPopout.tsx +1 -1
  571. package/plugins/ragents.orchestration/web/ActorShortcut.tsx +6 -6
  572. package/plugins/ragents.orchestration/web/ActorSurfaceControls.tsx +15 -15
  573. package/plugins/ragents.orchestration/web/Center.tsx +5 -5
  574. package/plugins/ragents.orchestration/web/DocumentsSection.tsx +2 -2
  575. package/plugins/ragents.orchestration/web/ExecutionsPanel.tsx +15 -15
  576. package/plugins/ragents.orchestration/web/FlowInspector.tsx +103 -103
  577. package/plugins/ragents.orchestration/web/JournalStatus.tsx +11 -11
  578. package/plugins/ragents.orchestration/web/MaterialBody.tsx +2 -2
  579. package/plugins/ragents.orchestration/web/StopRunButton.tsx +6 -6
  580. package/plugins/ragents.orchestration/web/TiledSurface.tsx +9 -9
  581. package/plugins/ragents.orchestration/web/actor-header-settings.ts +5 -5
  582. package/plugins/ragents.orchestration/web/constants.ts +2 -2
  583. package/plugins/ragents.orchestration/web/executions.ts +6 -6
  584. package/plugins/ragents.orchestration/web/format.ts +1 -1
  585. package/plugins/ragents.orchestration/web/index.tsx +2 -2
  586. package/plugins/ragents.orchestration/web/run-panel/AddresseeControl.tsx +7 -7
  587. package/plugins/ragents.orchestration/web/run-panel/AddresseeTree.tsx +8 -8
  588. package/plugins/ragents.orchestration/web/run-panel/RunPanel.tsx +22 -22
  589. package/plugins/ragents.orchestration/web/run-panel/RunPanelSettings.tsx +7 -7
  590. package/plugins/ragents.orchestration/web/run-panel/addressee-tree.ts +13 -13
  591. package/plugins/ragents.orchestration/web/run-panel/run-panel-actors.ts +3 -3
  592. package/plugins/ragents.orchestration/web/run-panel/run-panel-settings.ts +2 -2
  593. package/plugins/ragents.orchestration/web/run-panel/run-panel-startup.ts +3 -3
  594. package/plugins/ragents.orchestration/web/run-panel/run-panel-state.ts +7 -7
  595. package/plugins/ragents.orchestration/web/run-panel/sheet-status.ts +9 -9
  596. package/plugins/ragents.orchestration/web/surface-startup.ts +8 -8
  597. package/plugins/ragents.orchestration/web/surface-view-settings.ts +1 -1
  598. package/plugins/ragents.orchestration/web/tiled-view-settings.ts +1 -1
  599. package/plugins/ragents.overseer/contract.ts +20 -20
  600. package/plugins/ragents.overseer/server/api.ts +6 -6
  601. package/plugins/ragents.overseer/server/coordinator-prompt.ts +10 -10
  602. package/plugins/ragents.overseer/server/coordinator.ts +4 -4
  603. package/plugins/ragents.overseer/server/index.ts +24 -24
  604. package/plugins/ragents.overseer/server/orientation.ts +8 -8
  605. package/plugins/ragents.overseer/server/quick-answer.ts +9 -9
  606. package/plugins/ragents.overseer/server/run-directory.ts +5 -5
  607. package/plugins/ragents.overseer/server/settings.ts +6 -6
  608. package/plugins/ragents.overseer/server/user-location.ts +16 -16
  609. package/plugins/ragents.overseer/web/ModelSettings.tsx +9 -9
  610. package/plugins/ragents.overseer/web/index.tsx +20 -20
  611. package/plugins/ragents.overseer/web/model-settings.ts +1 -1
  612. package/plugins/ragents.overseer/web/quick-answers.ts +2 -2
  613. package/plugins/ragents.processes/contract.ts +5 -5
  614. package/plugins/ragents.processes/server/methods.ts +4 -4
  615. package/plugins/ragents.processes/server/observer.ts +8 -8
  616. package/plugins/ragents.processes/server/run-processes.ts +2 -2
  617. package/plugins/ragents.processes/web/ProcessHeader.tsx +10 -10
  618. package/plugins/ragents.processes/web/processes.ts +10 -10
  619. package/plugins/ragents.product/server/config.ts +1 -1
  620. package/plugins/ragents.product/server/index.ts +4 -4
  621. package/plugins/ragents.product/server/runtime.ts +9 -10
  622. package/plugins/ragents.product/web/index.tsx +1 -1
  623. package/plugins/ragents.profile-distribution/contract.ts +10 -10
  624. package/plugins/ragents.profile-distribution/server/archive.ts +20 -20
  625. package/plugins/ragents.profile-distribution/server/config.ts +2 -2
  626. package/plugins/ragents.profile-distribution/server/index.ts +4 -4
  627. package/plugins/ragents.reference/examples.ts +27 -27
  628. package/plugins/ragents.reference/run-scripts/balcony-wizard/RUN.md +19 -19
  629. package/plugins/ragents.reference/run-scripts/balcony-wizard/actors/balcony-app/package.json +2 -2
  630. package/plugins/ragents.reference/run-scripts/balcony-wizard/actors/balcony-app/src/client.tsx +14 -14
  631. package/plugins/ragents.reference/run-scripts/balcony-wizard/actors/balcony-app/src/conversation.ts +2 -2
  632. package/plugins/ragents.reference/run-scripts/balcony-wizard/actors/balcony-app/tests/conversation.test.ts +49 -49
  633. package/plugins/ragents.reference/run-scripts/balcony-wizard/package.json +1 -1
  634. package/plugins/ragents.reference/run-scripts/balcony-wizard/src/server.ts +9 -9
  635. package/plugins/ragents.reference/run-scripts/balcony-wizard/tests/program.test.ts +9 -9
  636. package/plugins/ragents.reference/run-scripts/conversation-circle/RUN.md +7 -7
  637. package/plugins/ragents.reference/run-scripts/conversation-circle/package.json +1 -1
  638. package/plugins/ragents.reference/run-scripts/conversation-circle/src/server.ts +13 -13
  639. package/plugins/ragents.reference/run-scripts/conversation-circle/tests/helpers.ts +1 -1
  640. package/plugins/ragents.reference/run-scripts/conversation-circle/tests/program.test.ts +8 -8
  641. package/plugins/ragents.reference/run-scripts/learning-afternoon/RUN.md +16 -16
  642. package/plugins/ragents.reference/run-scripts/learning-afternoon/package.json +1 -1
  643. package/plugins/ragents.reference/run-scripts/learning-afternoon/prompts/experiment.md +1 -1
  644. package/plugins/ragents.reference/run-scripts/learning-afternoon/prompts/helper.md +3 -3
  645. package/plugins/ragents.reference/run-scripts/learning-afternoon/prompts/quiz.md +1 -1
  646. package/plugins/ragents.reference/run-scripts/learning-afternoon/src/server.ts +9 -9
  647. package/plugins/ragents.reference/run-scripts/learning-afternoon/tests/program.test.ts +39 -39
  648. package/plugins/ragents.reference/run-scripts/moderated-round/RUN.md +7 -7
  649. package/plugins/ragents.reference/run-scripts/moderated-round/package.json +1 -1
  650. package/plugins/ragents.reference/run-scripts/moderated-round/src/server.ts +9 -9
  651. package/plugins/ragents.reference/run-scripts/moderated-round/tests/helpers.ts +1 -1
  652. package/plugins/ragents.reference/run-scripts/moderated-round/tests/program.test.ts +6 -6
  653. package/plugins/ragents.reference/run-scripts/shared-actor-list/RUN.md +12 -12
  654. package/plugins/ragents.reference/run-scripts/shared-actor-list/actors/shared-list/package.json +2 -2
  655. package/plugins/ragents.reference/run-scripts/shared-actor-list/actors/shared-list/src/contract.ts +3 -3
  656. package/plugins/ragents.reference/run-scripts/shared-actor-list/actors/shared-list/tests/program.test.ts +4 -4
  657. package/plugins/ragents.reference/run-scripts/shared-actor-list/package.json +1 -1
  658. package/plugins/ragents.reference/run-scripts/shared-actor-list/src/server.ts +11 -11
  659. package/plugins/ragents.reference/run-scripts/shared-actor-list/tests/helpers.ts +1 -1
  660. package/plugins/ragents.reference/run-scripts/shared-actor-list/tests/program.test.ts +13 -13
  661. package/plugins/ragents.reference/run-scripts/word-game/RUN.md +18 -18
  662. package/plugins/ragents.reference/run-scripts/word-game/package.json +2 -2
  663. package/plugins/ragents.reference/run-scripts/word-game/src/client.tsx +1 -1
  664. package/plugins/ragents.reference/run-scripts/word-game/src/contract.ts +2 -2
  665. package/plugins/ragents.reference/run-scripts/word-game/src/server.ts +16 -16
  666. package/plugins/ragents.reference/run-scripts/word-game/tests/program.test.ts +39 -39
  667. package/plugins/ragents.reference/skills/100-shared-actor-list/SKILL.md +5 -5
  668. package/plugins/ragents.reference/skills/110-all-card-slots/SKILL.md +5 -5
  669. package/plugins/ragents.reference/skills/150-editorial-workbench/SKILL.md +5 -5
  670. package/plugins/ragents.reference/skills/160-learning-companion/SKILL.md +5 -5
  671. package/plugins/ragents.reference/skills/170-photo-collection/SKILL.md +5 -5
  672. package/plugins/ragents.reference/skills/180-decision-workbench/SKILL.md +5 -5
  673. package/plugins/ragents.reference/skills/190-review-queue/SKILL.md +5 -5
  674. package/plugins/ragents.reference/skills/20-circle-of-four/SKILL.md +5 -5
  675. package/plugins/ragents.reference/skills/200-typescript-diagnostics/SKILL.md +5 -5
  676. package/plugins/ragents.reference/skills/210-moderator-handover/SKILL.md +5 -5
  677. package/plugins/ragents.reference/skills/220-actor-approval-list/SKILL.md +5 -5
  678. package/plugins/ragents.reference/skills/230-shared-state-views/SKILL.md +5 -5
  679. package/plugins/ragents.reference/skills/240-live-result-list/SKILL.md +5 -5
  680. package/plugins/ragents.reference/skills/250-balcony-wizard/SKILL.md +5 -5
  681. package/plugins/ragents.reference/skills/30-llm-without-runtime-knowledge/SKILL.md +5 -5
  682. package/plugins/ragents.reference/skills/35-actor-input-fifo/SKILL.md +5 -5
  683. package/plugins/ragents.reference/skills/40-subscription-matrix/SKILL.md +5 -5
  684. package/plugins/ragents.reference/skills/50-subscription-removal/SKILL.md +5 -5
  685. package/plugins/ragents.reference/skills/60-stop-in-the-circle/SKILL.md +5 -5
  686. package/plugins/ragents.reference/skills/65-artifact-least-privilege/SKILL.md +5 -5
  687. package/plugins/ragents.reference/skills/70-headless-counter/SKILL.md +5 -5
  688. package/plugins/ragents.reference/skills/75-lsp-demo/SKILL.md +5 -5
  689. package/plugins/ragents.reference/skills/80-actor-text-analysis/SKILL.md +5 -5
  690. package/plugins/ragents.reference/skills/90-actor-notes/SKILL.md +5 -5
  691. package/plugins/ragents.reference/skills/95-hello-world/SKILL.md +5 -5
  692. package/plugins/ragents.reference/skills/decision-brief/SKILL.md +24 -24
  693. package/plugins/ragents.reference/skills/learning-sprint/SKILL.md +24 -24
  694. package/plugins/ragents.reference/walkthroughs.ts +128 -128
  695. package/plugins/ragents.reference/web/StartGuides.tsx +23 -23
  696. package/plugins/ragents.todo/server/todo-tool.ts +6 -6
  697. package/plugins/ragents.todo/web/TodoSection.tsx +1 -1
  698. package/plugins/ragents.transcript/server/transcript.ts +11 -11
  699. package/plugins/ragents.watch/server/condition.ts +4 -4
  700. package/plugins/ragents.watch/server/functions.ts +27 -27
  701. package/plugins/ragents.watch/server/observation.ts +2 -2
  702. package/plugins/ragents.watch/server/service.ts +14 -14
  703. package/plugins/ragents.workspace/client/transport.ts +1 -1
  704. package/plugins/ragents.workspace/client/workspace-client.ts +54 -54
  705. package/plugins/ragents.workspace/contract.ts +46 -46
  706. package/plugins/ragents.workspace/server/binding.ts +20 -20
  707. package/plugins/ragents.workspace/server/browse-route.ts +8 -8
  708. package/plugins/ragents.workspace/server/clients.ts +42 -42
  709. package/plugins/ragents.workspace/server/config.ts +7 -7
  710. package/plugins/ragents.workspace/server/index.ts +3 -3
  711. package/plugins/ragents.workspace/server/runtime.ts +26 -26
  712. package/plugins/ragents.workspace/server/shell-platform.ts +1 -1
  713. package/plugins/ragents.workspace/web/FileBrowser.tsx +10 -10
  714. package/plugins/ragents.workspace/web/WorkspaceBinding.tsx +24 -24
  715. package/plugins/ragents.workspace/web/index.tsx +1 -1
  716. package/ragents.config.core.ts +1 -1
  717. package/ragents.config.developer.ts +3 -3
  718. package/ragents.config.showcase.ts +2 -2
  719. package/scripts/agent/agent-cli.ts +96 -96
  720. package/scripts/agent/journal.ts +5 -5
  721. package/scripts/agent/turn-control.ts +4 -4
  722. package/scripts/package/build-package.ts +29 -29
  723. package/scripts/package/host-links.mjs +3 -3
  724. package/scripts/package/publish-package.ts +29 -29
  725. package/scripts/package/ragents.mjs +19 -19
  726. package/scripts/plugin/build-builtin-plugins.ts +5 -5
  727. package/scripts/plugin/plugin-cli.ts +14 -14
  728. package/scripts/provision/run-provision.ts +14 -15
  729. package/scripts/remote/connect.ts +46 -46
  730. package/scripts/remote/start.ts +18 -18
  731. package/scripts/workspace-client/run-workspace-client.ts +23 -23
  732. package/apps/web/dist/assets/main-DnnqWHkH.js +0 -11
  733. package/apps/web/dist/assets/mermaid-HWGCJPDP-BLLeth5_.js +0 -568
  734. package/apps/web/dist/assets/runPanel-DPm7s3KM.js +0 -21
  735. package/bundles/ragents.ask/server/chunks/chunk-PDJO75SQ.js.map +0 -7
  736. package/bundles/ragents.ask/web/chunks/chunk-4VXWWEG7.js +0 -2
  737. package/bundles/ragents.ask/web/chunks/chunk-4VXWWEG7.js.map +0 -7
  738. package/bundles/ragents.ask/web/chunks/chunk-VUBJDIKQ.js +0 -2
  739. package/bundles/ragents.ask/web/chunks/chunk-VUBJDIKQ.js.map +0 -7
  740. package/bundles/ragents.ask/web/chunks/chunk-WFN4374U.js.map +0 -7
  741. package/bundles/ragents.orchestration/web/chunks/chunk-OQYCNYXN.js +0 -2
  742. /package/bundles/ragents.orchestration/web/chunks/{chunk-OSKPH6SZ.js.map → chunk-CFMJD5ZI.js.map} +0 -0
  743. /package/bundles/ragents.orchestration/web/chunks/{chunk-ODMMQGX2.js.map → chunk-UCIMT2R4.js.map} +0 -0
@@ -20,7 +20,7 @@ function RunExecutionsPanel({ active, runId, view }: { active: boolean; runId: s
20
20
  const [journal, setJournal] = useState<{ events: readonly JournalEvent[]; loaded: boolean; loading: boolean; error: string | null }>({ events: [], loaded: false, loading: false, error: null });
21
21
  const [query, setQuery] = useState("");
22
22
  const [status, setStatus] = useState<ExecutionStatus | "all">("all");
23
- const statusOptions = [{ value: "all", label: "Alle Status" }, ...(["running", "completed", "failed", "interrupted"] as const).map((value) => ({ value, label: executionStatusLabel(value) }))];
23
+ const statusOptions = [{ value: "all", label: "All statuses" }, ...(["running", "completed", "failed", "interrupted"] as const).map((value) => ({ value, label: executionStatusLabel(value) }))];
24
24
  const [now, setNow] = useState(Date.now);
25
25
  const [reload, setReload] = useState(0);
26
26
  const revision = view?.revision;
@@ -50,19 +50,19 @@ function RunExecutionsPanel({ active, runId, view }: { active: boolean; runId: s
50
50
  return () => window.clearInterval(timer);
51
51
  }, [active, running]);
52
52
 
53
- return <section aria-label="TypeScript-Ausführungen" className="flex h-full min-h-0 min-w-0 flex-col bg-background text-[0.78rem] text-foreground">
54
- <header className="px-3.5 pt-3.5 pb-2.5"><h2 className="mb-1.5 text-[0.92rem]">Executions</h2><p className="leading-[1.5] text-muted-foreground">TypeScript-Snippets aller Actors in diesem Run.</p></header>
53
+ return <section aria-label="TypeScript executions" className="flex h-full min-h-0 min-w-0 flex-col bg-background text-[0.78rem] text-foreground">
54
+ <header className="px-3.5 pt-3.5 pb-2.5"><h2 className="mb-1.5 text-[0.92rem]">Executions</h2><p className="leading-[1.5] text-muted-foreground">TypeScript snippets of all actors in this run.</p></header>
55
55
  <div className="grid grid-cols-[minmax(0,1fr)_auto] gap-2 border-b border-border-soft px-3.5 pb-3">
56
- <Input className="col-span-full" aria-label="Ausführungen durchsuchen" onChange={(event) => setQuery(event.target.value)} placeholder="Actor, Code oder Ergebnis suchen" type="search" value={query} />
56
+ <Input className="col-span-full" aria-label="Search executions" onChange={(event) => setQuery(event.target.value)} placeholder="Search actor, code or result" type="search" value={query} />
57
57
  <Select items={statusOptions} value={status} onValueChange={(value) => { if (value !== null) setStatus(value as ExecutionStatus | "all"); }}>
58
- <SelectTrigger className="min-w-0" aria-label="Ausführungsstatus"><SelectValue /></SelectTrigger>
58
+ <SelectTrigger className="min-w-0" aria-label="Execution status"><SelectValue /></SelectTrigger>
59
59
  <SelectContent>{statusOptions.map((option) => <SelectItem key={option.value} value={option.value}>{option.label}</SelectItem>)}</SelectContent>
60
60
  </Select>
61
- <span className="self-center text-right text-[0.68rem] text-muted-foreground" role="status">{journal.loading ? (journal.loaded ? "Aktualisiert ..." : "Lädt ...") : journal.loaded ? `${filtered.length} von ${executions.length} Ausführungen` : "Noch nicht geladen"}</span>
61
+ <span className="self-center text-right text-[0.68rem] text-muted-foreground" role="status">{journal.loading ? (journal.loaded ? "Refreshing ..." : "Loading ...") : journal.loaded ? `${filtered.length} of ${executions.length} executions` : "Not loaded yet"}</span>
62
62
  </div>
63
- {journal.error && <Alert className="mx-3.5 my-2 w-auto" variant="destructive"><AlertDescription className="whitespace-pre-wrap text-destructive [overflow-wrap:anywhere]">{journal.error}{journal.loaded ? " Der zuletzt geladene Stand bleibt sichtbar." : ""}</AlertDescription><Button disabled={!active || journal.loading} onClick={() => setReload((value) => value + 1)} size="sm" variant="ghost">Erneut laden</Button></Alert>}
64
- <div aria-label="Ausführungen, neueste zuerst" className="min-h-0 flex-1 overflow-auto overscroll-contain px-3 pb-3">
65
- {journal.loaded && !journal.loading && filtered.length === 0 && <p className="mx-0.5 my-4.5 leading-[1.6] text-muted-foreground">{executions.length === 0 ? "In diesem Run wurde noch kein TypeScript-Snippet ausgeführt." : "Keine Ausführungen passen zu dieser Suche."}</p>}
63
+ {journal.error && <Alert className="mx-3.5 my-2 w-auto" variant="destructive"><AlertDescription className="whitespace-pre-wrap text-destructive [overflow-wrap:anywhere]">{journal.error}{journal.loaded ? " The last loaded state stays visible." : ""}</AlertDescription><Button disabled={!active || journal.loading} onClick={() => setReload((value) => value + 1)} size="sm" variant="ghost">Reload</Button></Alert>}
64
+ <div aria-label="Executions, newest first" className="min-h-0 flex-1 overflow-auto overscroll-contain px-3 pb-3">
65
+ {journal.loaded && !journal.loading && filtered.length === 0 && <p className="mx-0.5 my-4.5 leading-[1.6] text-muted-foreground">{executions.length === 0 ? "No TypeScript snippet has been executed in this run yet." : "No executions match this search."}</p>}
66
66
  {filtered.map((execution) => <ExecutionEntry execution={execution} key={execution.key} now={now} />)}
67
67
  </div>
68
68
  </section>;
@@ -85,21 +85,21 @@ const logClass = "m-0 max-h-[24rem] overflow-auto rounded-sm bg-background p-2 f
85
85
 
86
86
  function ExecutionEntry({ execution, now }: { execution: TypeScriptExecution; now: number }) {
87
87
  const [expanded, setExpanded] = useState(false);
88
- const preview = execution.code?.trim().split("\n").find((line) => line.trim()) ?? execution.path ?? "TypeScript-Snippet";
88
+ const preview = execution.code?.trim().split("\n").find((line) => line.trim()) ?? execution.path ?? "TypeScript snippet";
89
89
  return <details className="mt-2.5 overflow-hidden rounded-sm border border-border-soft bg-card open:[&>summary]:before:rotate-45" onToggle={(event) => setExpanded(event.currentTarget.open)}>
90
90
  <summary className={summaryClass}>
91
91
  <span className="truncate font-[650]" title={`${execution.actorName} (${execution.actorId})`}>@{execution.actorHandle}</span>
92
92
  <Badge className={`h-auto rounded-[5px] px-[5px] py-0.5 text-[0.64rem] ${statusBadgeClass[execution.status] ?? "bg-secondary text-muted-foreground"}`}>{executionStatusLabel(execution.status)}</Badge>
93
93
  <span className="col-span-full truncate font-mono text-[0.68rem]" title={preview}>{preview}</span>
94
- <span className="col-span-full flex flex-wrap justify-between gap-x-3 gap-y-1.5 text-[0.65rem] tabular-nums text-muted-foreground"><time dateTime={execution.startedAt} title={new Date(execution.startedAt).toLocaleString("de-DE")}>{new Date(execution.startedAt).toLocaleString("de-DE", { day: "2-digit", month: "2-digit", hour: "2-digit", minute: "2-digit", second: "2-digit" })}</time><span>{executionDuration(execution, now)}</span></span>
94
+ <span className="col-span-full flex flex-wrap justify-between gap-x-3 gap-y-1.5 text-[0.65rem] tabular-nums text-muted-foreground"><time dateTime={execution.startedAt} title={new Date(execution.startedAt).toLocaleString("en-US")}>{new Date(execution.startedAt).toLocaleString("en-US", { day: "2-digit", month: "2-digit", hour: "2-digit", minute: "2-digit", second: "2-digit" })}</time><span>{executionDuration(execution, now)}</span></span>
95
95
  </summary>
96
96
  {expanded && <div className={contentClass}>
97
- {execution.path && <p className="mt-2.5 grid gap-1 text-[0.68rem] text-muted-foreground"><span>Pfad</span><code className="[overflow-wrap:anywhere]">{execution.path}</code></p>}
97
+ {execution.path && <p className="mt-2.5 grid gap-1 text-[0.68rem] text-muted-foreground"><span>Path</span><code className="[overflow-wrap:anywhere]">{execution.path}</code></p>}
98
98
  <h3>Code</h3>
99
- {execution.code !== null ? <SourceCode className={sourceClass} content={execution.code} language="typescript" path={execution.path ?? "snippet.ts"} /> : <p className="text-[0.72rem] leading-[1.5] text-muted-foreground">{execution.path ? "Für diesen Pfadaufruf ist kein historischer Code gespeichert." : "Für diesen Aufruf ist kein historischer Code gespeichert."}</p>}
99
+ {execution.code !== null ? <SourceCode className={sourceClass} content={execution.code} language="typescript" path={execution.path ?? "snippet.ts"} /> : <p className="text-[0.72rem] leading-[1.5] text-muted-foreground">{execution.path ? "No historical code is stored for this path call." : "No historical code is stored for this call."}</p>}
100
100
  {execution.logs.length > 0 && <><h3>Logs</h3><pre className={logClass}>{execution.logs.join("\n")}</pre></>}
101
- {execution.result !== undefined && <><h3>Ergebnis</h3><SourceCode className={sourceClass} content={JSON.stringify(execution.result, null, 2)} language="json" path="result.json" /></>}
102
- {execution.error && <><h3>{execution.status === "interrupted" ? "Unterbrechung" : "Fehler"}</h3><pre className={`${logClass} text-destructive`}>{execution.error}</pre></>}
101
+ {execution.result !== undefined && <><h3>Result</h3><SourceCode className={sourceClass} content={JSON.stringify(execution.result, null, 2)} language="json" path="result.json" /></>}
102
+ {execution.error && <><h3>{execution.status === "interrupted" ? "Interruption" : "Error"}</h3><pre className={`${logClass} text-destructive`}>{execution.error}</pre></>}
103
103
  </div>}
104
104
  </details>;
105
105
  }
@@ -42,7 +42,7 @@ interface FlowInspectorProps {
42
42
  actorConversations?: Readonly<Record<string, readonly Message[]>>;
43
43
  conversationError?: string;
44
44
  primaryRunning: boolean;
45
- /** Anzeigefläche für den gemerkten Detailgrad; das Popout meldet sich getrennt vom Seiteninspector. */
45
+ /** Display surface for the remembered detail level; the popout registers separately from the side inspector. */
46
46
  chatDisplay?: string;
47
47
  }
48
48
 
@@ -92,26 +92,26 @@ const pillToneClass: Readonly<Record<string, string>> = {
92
92
  const tabClass = "grid size-[30px] flex-[0_0_30px] place-items-center p-0";
93
93
 
94
94
  const STATUS_LABELS: Record<string, string> = {
95
- active: "Aktiv",
96
- approved: "Bestätigt",
97
- completed: "Abgeschlossen",
98
- dismissed: "Verworfen",
99
- failed: "Fehlgeschlagen",
100
- idle: "Bereit",
101
- interrupted: "Unterbrochen",
102
- pending: "Offen",
103
- removed: "Entfernt",
104
- running: "Läuft",
105
- stopped: "Gestoppt",
95
+ active: "Active",
96
+ approved: "Approved",
97
+ completed: "Completed",
98
+ dismissed: "Dismissed",
99
+ failed: "Failed",
100
+ idle: "Ready",
101
+ interrupted: "Interrupted",
102
+ pending: "Open",
103
+ removed: "Removed",
104
+ running: "Running",
105
+ stopped: "Stopped",
106
106
  };
107
107
 
108
108
  const ACTOR_KIND_LABELS: Record<RunActor["kind"], string> = {
109
109
  human: "Person",
110
110
  agent: "Agent",
111
- script: "Logik-Actor",
111
+ script: "Logic actor",
112
112
  };
113
113
 
114
- const STOP_REASON = "Vom Bediener gestoppt";
114
+ const STOP_REASON = "Stopped by the operator";
115
115
 
116
116
  const shortId = (id: string) => (id.length > 12 ? `${id.slice(0, 12)}...` : id);
117
117
 
@@ -128,7 +128,7 @@ const runCostUsd = (view: RunView): number | undefined => {
128
128
  };
129
129
 
130
130
  const formatCostUsd = (value: number) =>
131
- `${value.toLocaleString("de-DE", { minimumFractionDigits: 2, maximumFractionDigits: value > 0 && value < 0.005 ? 4 : 2 })} USD`;
131
+ `${value.toLocaleString("en-US", { minimumFractionDigits: 2, maximumFractionDigits: value > 0 && value < 0.005 ? 4 : 2 })} USD`;
132
132
 
133
133
  interface RunIndex {
134
134
  view: RunView;
@@ -165,8 +165,8 @@ export function FlowInspector(props: FlowInspectorProps) {
165
165
  return (
166
166
  <Empty>
167
167
  <EmptyHeader>
168
- <EmptyTitle>Noch kein Ablauf</EmptyTitle>
169
- <EmptyDescription>Sobald Actors gestartet werden, erscheint hier die Detailansicht.</EmptyDescription>
168
+ <EmptyTitle>No flow yet</EmptyTitle>
169
+ <EmptyDescription>As soon as actors are started, the detail view appears here.</EmptyDescription>
170
170
  </EmptyHeader>
171
171
  </Empty>
172
172
  );
@@ -194,12 +194,12 @@ export function FlowInspector(props: FlowInspectorProps) {
194
194
  if (actor) return <ActorView actor={actor} index={index} key={actor.id} {...props} />;
195
195
  if (fallbackActor) return <ActorView actor={fallbackActor} index={index} key={fallbackActor.id} {...props} />;
196
196
 
197
- return <Empty><EmptyHeader><EmptyTitle>Keine Actors</EmptyTitle></EmptyHeader></Empty>;
197
+ return <Empty><EmptyHeader><EmptyTitle>No actors</EmptyTitle></EmptyHeader></Empty>;
198
198
  }
199
199
 
200
200
  function BackButton({ canGoBack, onBack }: { canGoBack: boolean; onBack: () => void }) {
201
201
  if (!canGoBack) return null;
202
- return <Button aria-label="Zurück" className="rounded-full" onClick={onBack} size="icon" variant="outline"><ArrowLeftIcon /></Button>;
202
+ return <Button aria-label="Back" className="rounded-full" onClick={onBack} size="icon" variant="outline"><ArrowLeftIcon /></Button>;
203
203
  }
204
204
 
205
205
  function StatusPill({ status }: { status: string }) {
@@ -240,8 +240,8 @@ function SectionTabs({ sections, children }: { sections: SectionTab[]; children:
240
240
 
241
241
  return (
242
242
  <Tabs className="contents" onValueChange={(value) => setOpenId(value === "chat" ? null : String(value))} value={open?.id ?? "chat"}>
243
- <TabsList aria-label="Actor-Ansichten" className="flex h-auto w-auto max-w-full flex-shrink-0 flex-nowrap justify-start gap-1 overflow-x-auto rounded-none border-b border-border-soft px-workspace-inset py-1.5" variant="line">
244
- <TabsTrigger aria-label="Chat anzeigen" className={tabClass} id={`${id}-chat-tab`} title="Chat anzeigen" value="chat">
243
+ <TabsList aria-label="Actor views" className="flex h-auto w-auto max-w-full flex-shrink-0 flex-nowrap justify-start gap-1 overflow-x-auto rounded-none border-b border-border-soft px-workspace-inset py-1.5" variant="line">
244
+ <TabsTrigger aria-label="Show chat" className={tabClass} id={`${id}-chat-tab`} title="Show chat" value="chat">
245
245
  <SectionIcon kind="chat" />
246
246
  </TabsTrigger>
247
247
  {sections.map((section) => (
@@ -264,14 +264,14 @@ function SectionTabs({ sections, children }: { sections: SectionTab[]; children:
264
264
  }
265
265
 
266
266
  function CapabilityList({ grants }: { grants: RunCapabilityGrant[] }) {
267
- if (grants.length === 0) return <Badge className={pillClass}>Keine Capabilities</Badge>;
267
+ if (grants.length === 0) return <Badge className={pillClass}>No capabilities</Badge>;
268
268
  return (
269
269
  <div className="flex flex-wrap gap-1 py-1.5">
270
270
  {grants.map((grant, position) => {
271
271
  const scope = grant.scope.kind === "workspace" ? grant.scope.path : "Run";
272
272
  const suffix = [
273
- grant.delegable ? "delegierbar" : undefined,
274
- grant.usable === false ? "nur weitergeben" : undefined,
273
+ grant.delegable ? "delegable" : undefined,
274
+ grant.usable === false ? "pass on only" : undefined,
275
275
  ].filter(Boolean).join(", ");
276
276
  return (
277
277
  <span className="rounded-full border border-border-soft px-2 py-0.5 text-[0.68rem] [&>small]:text-muted-foreground" key={`${grant.capability}-${position}`} title={scope}>
@@ -307,7 +307,7 @@ function ActionCard({ action, runId, onError }: { action: RunAction; runId: stri
307
307
  <div className={actionClass}>
308
308
  <strong>{action.title}</strong>
309
309
  {action.description && <p>{action.description}</p>}
310
- {action.owner && <p>wartet auf Eingabe - {action.owner}</p>}
310
+ {action.owner && <p>waiting for input - {action.owner}</p>}
311
311
  {action.input && (
312
312
  <Input
313
313
  className="my-1.5 text-[0.76rem]"
@@ -320,14 +320,14 @@ function ActionCard({ action, runId, onError }: { action: RunAction; runId: stri
320
320
  )}
321
321
  <div className="mt-1 flex justify-end gap-1.5">
322
322
  <Button disabled={!writable || busy} onClick={() => void resolve("dismissed", undefined)} size="sm" variant="outline">
323
- Verwerfen
323
+ Dismiss
324
324
  </Button>
325
325
  <Button
326
326
  disabled={!writable || busy || (action.input?.required === true && response.trim() === "")}
327
327
  onClick={() => void resolve("approved", response.trim() || undefined)}
328
328
  size="sm"
329
329
  >
330
- Quittieren
330
+ Acknowledge
331
331
  </Button>
332
332
  </div>
333
333
  </div>
@@ -365,46 +365,46 @@ function ActorView({ actor, index, ...props }: FlowInspectorProps & { actor: Run
365
365
  const driverLabel = actor.kind === "script"
366
366
  ? "TypeScript"
367
367
  : !driver || driver.kind === "manual"
368
- ? "Manuell"
368
+ ? "Manual"
369
369
  : [driver.kind, driver.config.provider].filter(Boolean).join(" - ");
370
370
 
371
371
  const config = driver && driver.kind !== "manual" ? driver.config : undefined;
372
372
  const sections: SectionTab[] = [
373
- { id: "info", label: "Info: Modell und Run-Details", icon: <SectionIcon kind="info" />, content: (
373
+ { id: "info", label: "Info: model and run details", icon: <SectionIcon kind="info" />, content: (
374
374
  <div className={statusClass}>
375
375
  {lifecycle && <StatusPill status={lifecycle} />}
376
- <span>{primary ? "Primärer Actor" : ACTOR_KIND_LABELS[actor.kind]}</span>
376
+ <span>{primary ? "Primary actor" : ACTOR_KIND_LABELS[actor.kind]}</span>
377
377
  <span>{driverLabel}</span>
378
378
  {config?.model && <span className="max-w-[220px] truncate" title={config.model}>{config.model}</span>}
379
- {config?.thinking && <span>Denktiefe {thinkingLabel(config.thinking)}</span>}
380
- <span>{pendingInputCount} offen</span>
379
+ {config?.thinking && <span>Thinking level {thinkingLabel(config.thinking)}</span>}
380
+ <span>{pendingInputCount} open</span>
381
381
  <span>{turns.length} Turns</span>
382
382
  {primary && runCost !== undefined && (
383
- <span title="Gesamtkosten des Runs über alle Turns">{formatCostUsd(runCost)}</span>
383
+ <span title="Total cost of the run across all turns">{formatCostUsd(runCost)}</span>
384
384
  )}
385
385
  </div>
386
386
  ) },
387
387
  ...(actor.prompt ? [{
388
- id: "auftrag",
389
- label: "Auftrag",
388
+ id: "prompt",
389
+ label: "Task",
390
390
  icon: <SectionIcon kind="prompt" />,
391
391
  content: <pre className={textBlockClass}>{actor.prompt}</pre>,
392
392
  }] : []),
393
393
  ...(programSource ? [{
394
394
  id: "source",
395
- label: "Quelltext",
395
+ label: "Source code",
396
396
  icon: <SectionIcon kind="source" />,
397
397
  content: programSource,
398
398
  }] : actor.source ? [{
399
399
  id: "source",
400
- label: "Quelltext",
400
+ label: "Source code",
401
401
  icon: <SectionIcon kind="source" />,
402
402
  count: actor.source.replace(/\n$/, "").split("\n").length,
403
403
  content: <SourceListing handle={actor.handle} source={actor.source} />,
404
404
  }] : []),
405
405
  ...(inputsConfig.length > 0 ? [{
406
- id: "vorgaben",
407
- label: "Vorgaben",
406
+ id: "settings",
407
+ label: "Settings",
408
408
  icon: <SectionIcon kind="settings" />,
409
409
  count: inputsConfig.length,
410
410
  content: (
@@ -414,8 +414,8 @@ function ActorView({ actor, index, ...props }: FlowInspectorProps & { actor: Run
414
414
  ),
415
415
  }] : []),
416
416
  {
417
- id: "eingaben",
418
- label: "Eingaben",
417
+ id: "inputs",
418
+ label: "Inputs",
419
419
  icon: <SectionIcon kind="inputs" />,
420
420
  count: inputs.length,
421
421
  content: (
@@ -462,8 +462,8 @@ function ActorView({ actor, index, ...props }: FlowInspectorProps & { actor: Run
462
462
  ),
463
463
  },
464
464
  ...(actions.length > 0 ? [{
465
- id: "aktionen",
466
- label: "Aktionen",
465
+ id: "actions",
466
+ label: "Actions",
467
467
  icon: <SectionIcon kind="actions" />,
468
468
  count: actions.length,
469
469
  content: (
@@ -478,8 +478,8 @@ function ActorView({ actor, index, ...props }: FlowInspectorProps & { actor: Run
478
478
  ),
479
479
  }] : []),
480
480
  ...(artifacts.length > 0 ? [{
481
- id: "artefakte",
482
- label: "Artefakte",
481
+ id: "artifacts",
482
+ label: "Artifacts",
483
483
  icon: <SectionIcon kind="artifacts" />,
484
484
  count: artifacts.length,
485
485
  content: (
@@ -500,13 +500,13 @@ function ActorView({ actor, index, ...props }: FlowInspectorProps & { actor: Run
500
500
  content: <CapabilityList grants={actor.grants} />,
501
501
  },
502
502
  {
503
- id: "werkzeuge",
504
- label: "Werkzeuge",
503
+ id: "tools",
504
+ label: "Tools",
505
505
  icon: <WrenchIcon size={15} />,
506
506
  ...(actor.toolNames ? { count: actor.toolNames.length } : {}),
507
507
  content: (
508
508
  <p className={mutedClass}>
509
- {actor.toolNames === null ? "Alle verfügbaren Werkzeuge" : actor.toolNames?.join(", ") || "Keine Werkzeuge"}
509
+ {actor.toolNames === null ? "All available tools" : actor.toolNames?.join(", ") || "No tools"}
510
510
  </p>
511
511
  ),
512
512
  },
@@ -519,7 +519,7 @@ function ActorView({ actor, index, ...props }: FlowInspectorProps & { actor: Run
519
519
  <div className="flex min-w-0 flex-1 items-baseline gap-2 [&>span]:flex-1">
520
520
  <h2>{actor.displayName}</h2>
521
521
  <span className={subtitleClass}>
522
- @{actor.handle}{inspect && actor.createdBy ? ` - erzeugt von ${actorLabel(index, actor.createdBy)}` : ""}
522
+ @{actor.handle}{inspect && actor.createdBy ? ` - created by ${actorLabel(index, actor.createdBy)}` : ""}
523
523
  </span>
524
524
  </div>
525
525
  {active && writable && (
@@ -527,7 +527,7 @@ function ActorView({ actor, index, ...props }: FlowInspectorProps & { actor: Run
527
527
  className="flex-shrink-0"
528
528
  onClick={() => void stopActor(view.id, actor.id, STOP_REASON).catch((caught: Error) => setError(caught.message))}
529
529
  size="sm"
530
- title={`@${actor.handle} samt beauftragten Kindern dauerhaft stoppen; die Chat-Eingabe unterbricht dagegen nur den laufenden Turn`}
530
+ title={`Stop @${actor.handle} and its assigned children permanently; the chat input, in contrast, only interrupts the running turn`}
531
531
  variant="destructive"
532
532
  >
533
533
  Stop
@@ -539,7 +539,7 @@ function ActorView({ actor, index, ...props }: FlowInspectorProps & { actor: Run
539
539
  size="sm"
540
540
  variant="outline"
541
541
  >
542
- Neu starten
542
+ Restart
543
543
  </Button>
544
544
  )}
545
545
  </header>
@@ -588,21 +588,21 @@ function InputView({ index, input, ...props }: FlowInspectorProps & { index: Run
588
588
  <div className={inspectorClass}>
589
589
  <DetailHeader canGoBack={props.canGoBack} eyebrow="ActorInput" onBack={props.onBack} subtitle={formatTime(input.enqueuedAt)} title={shortId(input.id)} />
590
590
  <div className={scrollClass}>
591
- <section className={sectionClass}><h3>Inhalt</h3><pre className={textBlockClass}>{input.content}</pre></section>
591
+ <section className={sectionClass}><h3>Content</h3><pre className={textBlockClass}>{input.content}</pre></section>
592
592
  <section className={sectionClass}>
593
593
  <h3>Routing</h3>
594
594
  <dl className={propertiesClass}>
595
595
  <dt>Actor</dt><dd><EntityLink id={input.actorId} index={index} onNavigate={props.onNavigate} /></dd>
596
- <dt>Eingereiht von</dt><dd><EntityLink id={input.enqueuedBy} index={index} onNavigate={props.onNavigate} /></dd>
597
- <dt>Turn</dt><dd>{input.lifecycle.kind === "claimed" ? <SelectionLink label={shortId(input.lifecycle.turnId)} onNavigate={props.onNavigate} selection={{ type: "turn", id: input.lifecycle.turnId }} /> : input.lifecycle.kind === "discarded" ? "verworfen" : "wartet"}</dd>
598
- <dt>Subscription</dt><dd>{input.subscriptionId ? <SelectionLink label={shortId(input.subscriptionId)} onNavigate={props.onNavigate} selection={{ type: "subscription", id: input.subscriptionId }} /> : "keine"}</dd>
596
+ <dt>Enqueued by</dt><dd><EntityLink id={input.enqueuedBy} index={index} onNavigate={props.onNavigate} /></dd>
597
+ <dt>Turn</dt><dd>{input.lifecycle.kind === "claimed" ? <SelectionLink label={shortId(input.lifecycle.turnId)} onNavigate={props.onNavigate} selection={{ type: "turn", id: input.lifecycle.turnId }} /> : input.lifecycle.kind === "discarded" ? "dismissed" : "waiting"}</dd>
598
+ <dt>Subscription</dt><dd>{input.subscriptionId ? <SelectionLink label={shortId(input.subscriptionId)} onNavigate={props.onNavigate} selection={{ type: "subscription", id: input.subscriptionId }} /> : "none"}</dd>
599
599
  {input.lifecycle.kind === "discarded" && <>
600
- <dt>Verworfen</dt><dd>{formatTime(input.lifecycle.at)}</dd>
601
- <dt>Grund</dt><dd>{input.lifecycle.reason}</dd>
600
+ <dt>Dismissed</dt><dd>{formatTime(input.lifecycle.at)}</dd>
601
+ <dt>Reason</dt><dd>{input.lifecycle.reason}</dd>
602
602
  </>}
603
603
  </dl>
604
604
  </section>
605
- {input.sourceEventIds.length > 0 && <section className={sectionClass}><h3>Quell-Events</h3><p className={mutedClass}>{input.sourceEventIds.join(", ")}</p></section>}
605
+ {input.sourceEventIds.length > 0 && <section className={sectionClass}><h3>Source events</h3><p className={mutedClass}>{input.sourceEventIds.join(", ")}</p></section>}
606
606
  {artifacts.length > 0 && <ArtifactRows artifacts={artifacts} onNavigate={props.onNavigate} />}
607
607
  </div>
608
608
  </div>
@@ -620,20 +620,20 @@ function TurnView({ index, turn, ...props }: FlowInspectorProps & { index: RunIn
620
620
  <h3>Details</h3>
621
621
  <dl className={propertiesClass}>
622
622
  <dt>Actor</dt><dd><EntityLink id={turn.actorId} index={index} onNavigate={props.onNavigate} /></dd>
623
- <dt>Eingabe</dt><dd><SelectionLink label={shortId(turn.inputId)} onNavigate={props.onNavigate} selection={{ type: "input", id: turn.inputId }} /></dd>
624
- <dt>Beendet</dt><dd>{turn.finishedAt ? formatTime(turn.finishedAt) : "läuft"}</dd>
625
- {turn.reason && <><dt>Grund</dt><dd>{turn.reason}</dd></>}
623
+ <dt>Input</dt><dd><SelectionLink label={shortId(turn.inputId)} onNavigate={props.onNavigate} selection={{ type: "input", id: turn.inputId }} /></dd>
624
+ <dt>Ended</dt><dd>{turn.finishedAt ? formatTime(turn.finishedAt) : "running"}</dd>
625
+ {turn.reason && <><dt>Reason</dt><dd>{turn.reason}</dd></>}
626
626
  </dl>
627
627
  </section>
628
628
  {usage && (
629
629
  <section className={sectionClass}>
630
- <h3>Nutzung</h3>
630
+ <h3>Usage</h3>
631
631
  <dl className={propertiesClass}>
632
- <dt>Input-Tokens</dt><dd>{usage.inputTokens ?? 0}</dd>
633
- <dt>Output-Tokens</dt><dd>{usage.outputTokens ?? 0}</dd>
634
- <dt>Cache gelesen</dt><dd>{usage.cacheReadTokens ?? 0}</dd>
635
- <dt>Cache geschrieben</dt><dd>{usage.cacheWriteTokens ?? 0}</dd>
636
- <dt>Kosten</dt><dd>{(usage.costUsd ?? 0).toFixed(6)} USD</dd>
632
+ <dt>Input tokens</dt><dd>{usage.inputTokens ?? 0}</dd>
633
+ <dt>Output tokens</dt><dd>{usage.outputTokens ?? 0}</dd>
634
+ <dt>Cache read</dt><dd>{usage.cacheReadTokens ?? 0}</dd>
635
+ <dt>Cache written</dt><dd>{usage.cacheWriteTokens ?? 0}</dd>
636
+ <dt>Cost</dt><dd>{(usage.costUsd ?? 0).toFixed(6)} USD</dd>
637
637
  </dl>
638
638
  </section>
639
639
  )}
@@ -652,16 +652,16 @@ function SubscriptionView({ index, subscription, ...props }: FlowInspectorProps
652
652
  <h3>Filter</h3>
653
653
  <dl className={propertiesClass}>
654
654
  <dt>Subscriber</dt><dd><EntityLink id={subscription.subscriberId} index={index} onNavigate={props.onNavigate} /></dd>
655
- <dt>Quell-Actors</dt><dd>{subscription.sourceActorIds?.map((id) => actorLabel(index, id)).join(", ") ?? "alle"}</dd>
656
- <dt>Actor-Arten</dt><dd>{subscription.sourceActorKinds?.join(", ") ?? "alle"}</dd>
657
- <dt>Event-Typen</dt><dd>{subscription.eventTypes.join(", ")}</dd>
658
- <dt>Eigene Events</dt><dd>{subscription.includeSelf ? "ja" : "nein"}</dd>
659
- <dt>Angelegt von</dt><dd><EntityLink id={subscription.createdBy} index={index} onNavigate={props.onNavigate} /></dd>
660
- {subscription.status !== "active" && <><dt>Grund</dt><dd>{subscription.reason}</dd></>}
661
- {subscription.status === "failed" && <><dt>Fehler-Event</dt><dd>{subscription.sourceEventId}</dd></>}
655
+ <dt>Source actors</dt><dd>{subscription.sourceActorIds?.map((id) => actorLabel(index, id)).join(", ") ?? "all"}</dd>
656
+ <dt>Actor kinds</dt><dd>{subscription.sourceActorKinds?.join(", ") ?? "all"}</dd>
657
+ <dt>Event types</dt><dd>{subscription.eventTypes.join(", ")}</dd>
658
+ <dt>Own events</dt><dd>{subscription.includeSelf ? "yes" : "no"}</dd>
659
+ <dt>Created by</dt><dd><EntityLink id={subscription.createdBy} index={index} onNavigate={props.onNavigate} /></dd>
660
+ {subscription.status !== "active" && <><dt>Reason</dt><dd>{subscription.reason}</dd></>}
661
+ {subscription.status === "failed" && <><dt>Error event</dt><dd>{subscription.sourceEventId}</dd></>}
662
662
  </dl>
663
663
  </section>
664
- {subscription.sourceActorIds && <section className={sectionClass}><h3>Quell-Actors</h3><ActorRows actorIds={subscription.sourceActorIds} index={index} onNavigate={props.onNavigate} /></section>}
664
+ {subscription.sourceActorIds && <section className={sectionClass}><h3>Source actors</h3><ActorRows actorIds={subscription.sourceActorIds} index={index} onNavigate={props.onNavigate} /></section>}
665
665
  </div>
666
666
  </div>
667
667
  );
@@ -671,23 +671,23 @@ function ActionView({ action, index, ...props }: FlowInspectorProps & { action:
671
671
  const [error, setError] = useState<string>();
672
672
  return (
673
673
  <div className={inspectorClass}>
674
- <DetailHeader canGoBack={props.canGoBack} eyebrow="Aktion" onBack={props.onBack} subtitle={actorLabel(index, action.askedBy)} title={action.title} />
674
+ <DetailHeader canGoBack={props.canGoBack} eyebrow="Action" onBack={props.onBack} subtitle={actorLabel(index, action.askedBy)} title={action.title} />
675
675
  <div className={statusClass}><StatusPill status={action.status} /></div>
676
676
  <div className={scrollClass}>
677
677
  {action.status === "pending" && <ActionCard action={action} onError={setError} runId={index.view.id} />}
678
- {action.description && <section className={sectionClass}><h3>Beschreibung</h3><p>{action.description}</p></section>}
678
+ {action.description && <section className={sectionClass}><h3>Description</h3><p>{action.description}</p></section>}
679
679
  <section className={sectionClass}>
680
680
  <h3>Details</h3>
681
681
  <dl className={propertiesClass}>
682
- <dt>Gefragt von</dt><dd><EntityLink id={action.askedBy} index={index} onNavigate={props.onNavigate} /></dd>
683
- <dt>Vorgeschlagen</dt><dd>{formatTime(action.proposedAt)}</dd>
684
- {action.resolvedAt && <><dt>Aufgelöst</dt><dd>{formatTime(action.resolvedAt)}</dd></>}
685
- {action.owner && <><dt>Eigentümer</dt><dd>{action.owner}</dd></>}
686
- {action.result !== null && action.result !== undefined && <><dt>Ergebnis</dt><dd>{typeof action.result === "string" ? action.result : JSON.stringify(action.result)}</dd></>}
682
+ <dt>Asked by</dt><dd><EntityLink id={action.askedBy} index={index} onNavigate={props.onNavigate} /></dd>
683
+ <dt>Proposed</dt><dd>{formatTime(action.proposedAt)}</dd>
684
+ {action.resolvedAt && <><dt>Resolved</dt><dd>{formatTime(action.resolvedAt)}</dd></>}
685
+ {action.owner && <><dt>Owner</dt><dd>{action.owner}</dd></>}
686
+ {action.result !== null && action.result !== undefined && <><dt>Result</dt><dd>{typeof action.result === "string" ? action.result : JSON.stringify(action.result)}</dd></>}
687
687
  </dl>
688
688
  </section>
689
- {Object.keys(action.parameters).length > 0 && <section className={sectionClass}><h3>Parameter</h3><pre className={textBlockClass}>{JSON.stringify(action.parameters, null, 2)}</pre></section>}
690
- {action.payload !== null && action.payload !== undefined && <section className={sectionClass}><h3>Nutzdaten</h3><pre className={textBlockClass}>{JSON.stringify(action.payload, null, 2)}</pre></section>}
689
+ {Object.keys(action.parameters).length > 0 && <section className={sectionClass}><h3>Parameters</h3><pre className={textBlockClass}>{JSON.stringify(action.parameters, null, 2)}</pre></section>}
690
+ {action.payload !== null && action.payload !== undefined && <section className={sectionClass}><h3>Payload</h3><pre className={textBlockClass}>{JSON.stringify(action.payload, null, 2)}</pre></section>}
691
691
  {error && <p className={errorClass}>{error}</p>}
692
692
  </div>
693
693
  </div>
@@ -729,7 +729,7 @@ function ActorRows({ actorIds, index, onNavigate }: {
729
729
  function ArtifactRows({ artifacts, onNavigate }: { artifacts: RunArtifact[]; onNavigate: (selection: FlowSelection) => void }) {
730
730
  return (
731
731
  <section className={sectionClass}>
732
- <h3>Artefakte</h3>
732
+ <h3>Artifacts</h3>
733
733
  <div className={rowsClass}>
734
734
  {artifacts.map((artifact) => (
735
735
  <button className={rowClass} key={artifact.id} onClick={() => onNavigate({ type: "artifact", id: artifact.id })} type="button">
@@ -848,16 +848,16 @@ function ArtifactDiff({ artifact, index }: { artifact: RunArtifact; index: RunIn
848
848
  if (beforeText === undefined || afterText === undefined) return undefined;
849
849
  const left = beforeText.split("\n");
850
850
  const right = afterText.split("\n");
851
- if (left.length > DIFF_LINE_LIMIT || right.length > DIFF_LINE_LIMIT) return "zu groß" as const;
851
+ if (left.length > DIFF_LINE_LIMIT || right.length > DIFF_LINE_LIMIT) return "too large" as const;
852
852
  return lineDiff(left, right);
853
853
  }, [beforeText, afterText]);
854
854
 
855
855
  if (!artifact.previousVersionId) return null;
856
- if (!previous) return <p className={mutedClass}>Vorversion nicht in dieser Projektion.</p>;
857
- if (!before || !after || before.kind === "loading" || after.kind === "loading") return <p className={mutedClass}>Vergleich wird geladen ...</p>;
858
- if (rows === undefined) return <p className={mutedClass}>{artifact.mediaType} wird nicht zeilenweise verglichen.</p>;
859
- if (rows === "zu groß") return <p className={mutedClass}>Zu groß für den Zeilenvergleich (mehr als {DIFF_LINE_LIMIT} Zeilen).</p>;
860
- if (rows.every((entry) => entry.kind === "same")) return <p className={mutedClass}>Beide Versionen haben denselben Text.</p>;
856
+ if (!previous) return <p className={mutedClass}>Previous version not in this projection.</p>;
857
+ if (!before || !after || before.kind === "loading" || after.kind === "loading") return <p className={mutedClass}>Loading comparison ...</p>;
858
+ if (rows === undefined) return <p className={mutedClass}>{artifact.mediaType} is not compared line by line.</p>;
859
+ if (rows === "too large") return <p className={mutedClass}>Too large for the line comparison (more than {DIFF_LINE_LIMIT} lines).</p>;
860
+ if (rows.every((entry) => entry.kind === "same")) return <p className={mutedClass}>Both versions have the same text.</p>;
861
861
  const marks = { same: " ", added: "+", removed: "-" };
862
862
  return <pre className="my-1.5 overflow-x-auto rounded-lg bg-foreground/4 p-2 text-[0.7rem] [&>span]:block [&>span]:whitespace-pre [&>span[data-diff=added]]:bg-success-soft [&>span[data-diff=removed]]:bg-destructive-soft">{rows.map((entry, position) => <span data-diff={entry.kind} key={position}>{marks[entry.kind]} {entry.text}{"\n"}</span>)}</pre>;
863
863
  }
@@ -871,25 +871,25 @@ function ArtifactView({ artifact, index, ...props }: FlowInspectorProps & { arti
871
871
  <header className={headClass}>
872
872
  <BackButton canGoBack={props.canGoBack} onBack={props.onBack} />
873
873
  <div className="min-w-0 flex-1">
874
- <p className="mb-0.5 text-[0.66rem] font-semibold tracking-[0.08em] uppercase text-muted-foreground">Artefakt</p>
874
+ <p className="mb-0.5 text-[0.66rem] font-semibold tracking-[0.08em] uppercase text-muted-foreground">Artifact</p>
875
875
  <h2>{artifact.title}</h2>
876
- <span className={subtitleClass}>von {actorLabel(index, artifact.createdBy)} - {formatBytes(artifact.size)} - {artifact.mediaType}</span>
876
+ <span className={subtitleClass}>by {actorLabel(index, artifact.createdBy)} - {formatBytes(artifact.size)} - {artifact.mediaType}</span>
877
877
  </div>
878
- <Button render={<a href={runArtifactContentUrl(view.id, artifact.id)} />} size="sm" variant="outline">Herunterladen</Button>
878
+ <Button render={<a href={runArtifactContentUrl(view.id, artifact.id)} />} size="sm" variant="outline">Download</Button>
879
879
  </header>
880
880
  <div className={scrollClass}>
881
881
  <section className={sectionClass}>
882
- <h3>Inhalt</h3>
883
- {(!content || content.kind === "loading") && <p className={mutedClass}>Artefakt wird geladen ...</p>}
884
- {content?.kind === "error" && <p className={errorClass}>{content.message} <button className={linkClass} onClick={retry} type="button">Erneut laden</button></p>}
885
- {content?.kind === "download" && <p className={mutedClass}>Keine Vorschau für {artifact.mediaType}.</p>}
882
+ <h3>Content</h3>
883
+ {(!content || content.kind === "loading") && <p className={mutedClass}>Loading artifact ...</p>}
884
+ {content?.kind === "error" && <p className={errorClass}>{content.message} <button className={linkClass} onClick={retry} type="button">Reload</button></p>}
885
+ {content?.kind === "download" && <p className={mutedClass}>No preview for {artifact.mediaType}.</p>}
886
886
  {content?.kind === "image" && <img alt={artifact.title} className="max-w-full rounded-lg" src={runArtifactContentUrl(view.id, artifact.id)} />}
887
887
  {content?.kind === "text" && <pre className={textBlockClass}>{content.text}</pre>}
888
888
  </section>
889
- {artifact.previousVersionId && <section className={sectionClass}><h3>Änderung zur Vorversion</h3><ArtifactDiff artifact={artifact} index={index} /></section>}
889
+ {artifact.previousVersionId && <section className={sectionClass}><h3>Change from previous version</h3><ArtifactDiff artifact={artifact} index={index} /></section>}
890
890
  {carriedOn.length > 0 && (
891
891
  <section className={sectionClass}>
892
- <h3>Verwendet in Eingaben</h3>
892
+ <h3>Used in inputs</h3>
893
893
  <div className={rowsClass}>
894
894
  {carriedOn.map((input) => (
895
895
  <button className={rowClass} key={input.id} onClick={() => props.onNavigate({ type: "input", id: input.id })} type="button">
@@ -902,10 +902,10 @@ function ArtifactView({ artifact, index, ...props }: FlowInspectorProps & { arti
902
902
  <section className={sectionClass}>
903
903
  <h3>Details</h3>
904
904
  <dl className={propertiesClass}>
905
- <dt>Erstellt von</dt><dd><EntityLink id={artifact.createdBy} index={index} onNavigate={props.onNavigate} /></dd>
905
+ <dt>Created by</dt><dd><EntityLink id={artifact.createdBy} index={index} onNavigate={props.onNavigate} /></dd>
906
906
  <dt>Hash</dt><dd>{shortId(artifact.hash)}</dd>
907
- <dt>Erstellt</dt><dd>{formatTime(artifact.createdAt)}</dd>
908
- {artifact.previousVersionId && <><dt>Vorversion</dt><dd><SelectionLink label={shortId(artifact.previousVersionId)} onNavigate={props.onNavigate} selection={{ type: "artifact", id: artifact.previousVersionId }} /></dd></>}
907
+ <dt>Created</dt><dd>{formatTime(artifact.createdAt)}</dd>
908
+ {artifact.previousVersionId && <><dt>Previous version</dt><dd><SelectionLink label={shortId(artifact.previousVersionId)} onNavigate={props.onNavigate} selection={{ type: "artifact", id: artifact.previousVersionId }} /></dd></>}
909
909
  </dl>
910
910
  </section>
911
911
  </div>
@@ -40,9 +40,9 @@ export function JournalStatus({ session }: SessionHeaderContext) {
40
40
  }, [open, session.session.id, revision, reload]);
41
41
 
42
42
  const filtered = useMemo(() => {
43
- const search = query.trim().toLocaleLowerCase("de-DE");
43
+ const search = query.trim().toLocaleLowerCase("en-US");
44
44
  const handles = new Map(view?.actors.map((actor) => [actor.id, actor.handle]));
45
- return [...events].reverse().filter((event) => !search || `${handles.get(event.actorId) ?? ""} ${JSON.stringify(event)}`.toLocaleLowerCase("de-DE").includes(search));
45
+ return [...events].reverse().filter((event) => !search || `${handles.get(event.actorId) ?? ""} ${JSON.stringify(event)}`.toLocaleLowerCase("en-US").includes(search));
46
46
  }, [events, query, view?.actors]);
47
47
  const actors = new Map(view?.actors.map((actor) => [actor.id, actor.handle]));
48
48
 
@@ -51,22 +51,22 @@ export function JournalStatus({ session }: SessionHeaderContext) {
51
51
  Journal
52
52
  </button>
53
53
  <Popover open={open} onOpenChange={(next) => { if (!next) close(); }}>
54
- <PopoverContent align="start" anchor={buttonRef} aria-label="Journal des Runs" className="flex min-h-0 min-w-0 flex-col gap-0 overflow-hidden rounded-t-sm rounded-b-none p-0 text-[0.76rem]" collisionPadding={8} id={panelId}
54
+ <PopoverContent align="start" anchor={buttonRef} aria-label="Journal of the run" className="flex min-h-0 min-w-0 flex-col gap-0 overflow-hidden rounded-t-sm rounded-b-none p-0 text-[0.76rem]" collisionPadding={8} id={panelId}
55
55
  initialFocus={searchRef} role="region" side="top" style={{ width: "min(900px, var(--available-width))", height: "min(480px, var(--available-height))" }}>
56
56
  <header className="flex flex-none items-center gap-2 border-b border-border-soft px-2.5 py-2">
57
57
  <div className="flex min-w-0 flex-1 items-baseline gap-2.5 [&>span]:truncate"><strong>Journal</strong><span className="text-muted-foreground">{session.session.title || "Run"}</span></div>
58
- <Button onClick={() => setReload((value) => value + 1)} size="sm" variant="ghost">Aktualisieren</Button>
59
- <Button aria-label="Journal schließen" onClick={() => close(true)} size="icon-sm" title="Journal schließen" variant="ghost"><XIcon /></Button>
58
+ <Button onClick={() => setReload((value) => value + 1)} size="sm" variant="ghost">Refresh</Button>
59
+ <Button aria-label="Close journal" onClick={() => close(true)} size="icon-sm" title="Close journal" variant="ghost"><XIcon /></Button>
60
60
  </header>
61
61
  <div className="flex flex-none items-center gap-3 px-2.5 py-2">
62
- <Input className="flex-1" aria-label="Journal durchsuchen" onChange={(event) => { setQuery(event.target.value); setLimit(100); }} placeholder="Ereignistyp, Actor oder Inhalt suchen ..." ref={searchRef} type="search" value={query} />
63
- <span className="flex-none whitespace-nowrap text-[0.68rem] text-muted-foreground" role="status">{loading ? "Lädt ..." : `${filtered.length} Ereignisse`}</span>
62
+ <Input className="flex-1" aria-label="Search journal" onChange={(event) => { setQuery(event.target.value); setLimit(100); }} placeholder="Search event type, actor or content ..." ref={searchRef} type="search" value={query} />
63
+ <span className="flex-none whitespace-nowrap text-[0.68rem] text-muted-foreground" role="status">{loading ? "Loading ..." : `${filtered.length} events`}</span>
64
64
  </div>
65
65
  {error && <p className="flex-none px-2.5 pb-2 text-destructive" role="alert">{error}</p>}
66
- <div aria-label="Journalereignisse, neueste zuerst" className="min-h-0 flex-1 overflow-auto overscroll-contain px-2.5 pb-2.5">
67
- {!loading && !error && filtered.length === 0 && <p className="text-muted-foreground">{query ? "Keine passenden Ereignisse." : "Das Journal enthält noch keine Ereignisse."}</p>}
66
+ <div aria-label="Journal events, newest first" className="min-h-0 flex-1 overflow-auto overscroll-contain px-2.5 pb-2.5">
67
+ {!loading && !error && filtered.length === 0 && <p className="text-muted-foreground">{query ? "No matching events." : "The journal contains no events yet."}</p>}
68
68
  {filtered.slice(0, limit).map((event) => <JournalEntry actor={actors.get(event.actorId)} event={event} key={event.eventId} />)}
69
- {filtered.length > limit && <Button onClick={() => setLimit((value) => value + 100)} size="sm" variant="outline">Weitere Ereignisse anzeigen</Button>}
69
+ {filtered.length > limit && <Button onClick={() => setLimit((value) => value + 100)} size="sm" variant="outline">Show more events</Button>}
70
70
  </div>
71
71
  </PopoverContent>
72
72
  </Popover>
@@ -80,7 +80,7 @@ function JournalEntry({ actor, event }: { actor: string | undefined; event: Jour
80
80
  <span className="text-muted-foreground tabular-nums">{event.sequence}</span>
81
81
  <span className="font-mono [overflow-wrap:anywhere]">{event.type}</span>
82
82
  <span className="truncate max-[550px]:col-start-2 max-[550px]:row-start-2" title={event.actorId}>{actor ? `@${actor}` : event.actorId}</span>
83
- <time className="text-muted-foreground tabular-nums max-[550px]:col-start-3 max-[550px]:row-start-1" dateTime={event.occurredAt}>{new Date(event.occurredAt).toLocaleTimeString("de-DE")}</time>
83
+ <time className="text-muted-foreground tabular-nums max-[550px]:col-start-3 max-[550px]:row-start-1" dateTime={event.occurredAt}>{new Date(event.occurredAt).toLocaleTimeString("en-US")}</time>
84
84
  </summary>
85
85
  {expanded && <SourceCode className="m-0 mb-2 text-[0.68rem]" content={JSON.stringify(event, null, 2)} language="json" path="event.json" />}
86
86
  </details>;