@schlenkr/ragents 0.1.9 → 0.1.11

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (749) hide show
  1. package/apps/server/package.json +1 -1
  2. package/apps/server/src/access-projection.ts +9 -39
  3. package/apps/server/src/access-service.ts +3 -3
  4. package/apps/server/src/access-session.ts +19 -19
  5. package/apps/server/src/api/contracts.ts +32 -29
  6. package/apps/server/src/api/core-methods.ts +21 -19
  7. package/apps/server/src/api/delivery.ts +2 -2
  8. package/apps/server/src/api/reference.ts +27 -27
  9. package/apps/server/src/api/rights.ts +18 -18
  10. package/apps/server/src/chat-handler.ts +5 -5
  11. package/apps/server/src/config-definition.ts +37 -10
  12. package/apps/server/src/config-file.ts +49 -49
  13. package/apps/server/src/config.ts +2 -0
  14. package/apps/server/src/data-directory.ts +2 -2
  15. package/apps/server/src/external-access.ts +1 -1
  16. package/apps/server/src/folder-install.ts +1 -1
  17. package/apps/server/src/help-files.ts +1 -1
  18. package/apps/server/src/host-api.json +8 -1
  19. package/apps/server/src/host-api.ts +3 -2
  20. package/apps/server/src/host-record.ts +3 -3
  21. package/apps/server/src/host-resolution-hooks.mjs +4 -4
  22. package/apps/server/src/host-version.ts +17 -17
  23. package/apps/server/src/host-web.ts +5 -5
  24. package/apps/server/src/main.ts +6 -6
  25. package/apps/server/src/missing-environment.ts +6 -6
  26. package/apps/server/src/parent-watch.ts +4 -4
  27. package/apps/server/src/plugin-build/build.ts +31 -31
  28. package/apps/server/src/plugin-build/host-api-names.ts +7 -7
  29. package/apps/server/src/plugin-build/plugin-description.ts +15 -15
  30. package/apps/server/src/plugin-build/typecheck.ts +1 -1
  31. package/apps/server/src/plugin-support/actor-programs/app-project.ts +19 -19
  32. package/apps/server/src/plugin-support/actor-programs/client-compiler.ts +4 -4
  33. package/apps/server/src/plugin-support/actor-programs/client-contracts.ts +11 -11
  34. package/apps/server/src/plugin-support/actor-programs/contract.ts +17 -17
  35. package/apps/server/src/plugin-support/actor-programs/runtime-libraries.ts +1 -1
  36. package/apps/server/src/plugin-support/actor-programs/workflow/index.ts +5 -5
  37. package/apps/server/src/plugin-support/actor-programs/workflow/prompt-reader.ts +2 -2
  38. package/apps/server/src/plugin-support/chat-display-policy.ts +2 -2
  39. package/apps/server/src/plugin-support/front-matter.ts +6 -6
  40. package/apps/server/src/plugin-support/http.ts +2 -2
  41. package/apps/server/src/plugin-support/language-server/contract.ts +8 -8
  42. package/apps/server/src/plugin-support/language-server/plugin.ts +2 -2
  43. package/apps/server/src/plugin-support/language-server/snapshot-method.ts +1 -1
  44. package/apps/server/src/plugin-support/language-server/tools.ts +11 -11
  45. package/apps/server/src/plugin-support/model-aliases.ts +30 -20
  46. package/apps/server/src/plugin-support/model-choice.ts +15 -15
  47. package/apps/server/src/plugin-support/model-completion.ts +44 -23
  48. package/apps/server/src/plugin-support/model-providers.ts +170 -0
  49. package/apps/server/src/plugin-support/model-upstreams.ts +1 -1
  50. package/apps/server/src/plugin-support/native-typescript-child.ts +4 -4
  51. package/apps/server/src/plugin-support/native-typescript-executor.ts +12 -12
  52. package/apps/server/src/plugin-support/plugin-config.ts +3 -3
  53. package/apps/server/src/plugin-support/plugin-folder.ts +2 -2
  54. package/apps/server/src/plugin-support/plugins-root.ts +2 -2
  55. package/apps/server/src/plugin-support/process-sandbox.ts +48 -47
  56. package/apps/server/src/plugin-support/product-model-settings-contract.ts +3 -3
  57. package/apps/server/src/plugin-support/product-model-settings.ts +10 -10
  58. package/apps/server/src/plugin-support/product-relay.ts +9 -9
  59. package/apps/server/src/plugin-support/product-start-options.ts +4 -4
  60. package/apps/server/src/plugin-support/prompt.ts +1 -1
  61. package/apps/server/src/plugin-support/provision.ts +8 -8
  62. package/apps/server/src/plugin-support/run-scripts.ts +17 -17
  63. package/apps/server/src/plugin-support/skills.ts +18 -18
  64. package/apps/server/src/plugin-support/start-entries-contract.ts +17 -17
  65. package/apps/server/src/plugin-support/start-options-contract.ts +5 -5
  66. package/apps/server/src/plugin-support/system-prompts.ts +11 -11
  67. package/apps/server/src/plugin-support/thinking-level.ts +2 -2
  68. package/apps/server/src/plugin-support/tool-availability.ts +2 -2
  69. package/apps/server/src/plugin-support/workspace-ownership.ts +5 -5
  70. package/apps/server/src/plugin-support/workspace-sandbox-host.ts +37 -37
  71. package/apps/server/src/plugin-support/zip.ts +7 -7
  72. package/apps/server/src/profile/bundle-manifest.ts +17 -17
  73. package/apps/server/src/profile/compose.ts +12 -7
  74. package/apps/server/src/profile/plugin-discovery.ts +12 -12
  75. package/apps/server/src/profile/provisioning.ts +5 -5
  76. package/apps/server/src/profile-target.ts +10 -10
  77. package/apps/server/src/protocol.ts +2 -2
  78. package/apps/server/src/provider.ts +63 -58
  79. package/apps/server/src/ragents/actor-chat-history.ts +8 -8
  80. package/apps/server/src/ragents/chat-text-positions.ts +2 -2
  81. package/apps/server/src/ragents/coordinator.ts +2 -2
  82. package/apps/server/src/ragents/engine.ts +25 -24
  83. package/apps/server/src/ragents/global-chat.ts +14 -8
  84. package/apps/server/src/ragents/host-services.ts +6 -3
  85. package/apps/server/src/ragents/journal-chat-events.ts +1 -1
  86. package/apps/server/src/ragents/run-owner.ts +2 -2
  87. package/apps/server/src/ragents/session.ts +49 -49
  88. package/apps/server/src/ragents/typescript-tools.ts +12 -12
  89. package/apps/server/src/ragents/workspace-runtime.ts +28 -28
  90. package/apps/server/src/rpc/dispatcher.ts +19 -19
  91. package/apps/server/src/rpc/http-transport.ts +11 -11
  92. package/apps/server/src/rpc/stdio-transport.ts +3 -3
  93. package/apps/server/src/run-preparation-input.ts +5 -5
  94. package/apps/server/src/run-preparation.ts +24 -24
  95. package/apps/server/src/run-transfer.ts +39 -39
  96. package/apps/server/src/server.ts +51 -49
  97. package/apps/server/src/settings.ts +1 -1
  98. package/apps/server/src/startup.ts +3 -3
  99. package/apps/server/src/title-compactor.ts +9 -9
  100. package/apps/server/src/title-settings.ts +3 -3
  101. package/apps/server/src/web-bundles.ts +2 -2
  102. package/apps/server/src/web-stylesheet.ts +2 -2
  103. package/apps/web/dist/assets/{highlighted-body-KPVGNVTW-xXXhTDbh.js → highlighted-body-KPVGNVTW-BfNSGxjB.js} +1 -1
  104. package/apps/web/dist/assets/main-D6bsKcIK.js +11 -0
  105. package/apps/web/dist/assets/mermaid-HWGCJPDP-DROEqEeg.js +608 -0
  106. package/apps/web/dist/assets/runPanel-Dumuuqry.js +21 -0
  107. package/apps/web/dist/help/guide-access.html +5 -5
  108. package/apps/web/dist/help/guide-access.md +2 -2
  109. package/apps/web/dist/help/guide-clients.html +64 -55
  110. package/apps/web/dist/help/guide-clients.md +62 -52
  111. package/apps/web/dist/help/guide-distributed.html +12 -7
  112. package/apps/web/dist/help/guide-distributed.md +9 -4
  113. package/apps/web/dist/help/guide-functions.html +3 -3
  114. package/apps/web/dist/help/guide-getting-started.html +24 -15
  115. package/apps/web/dist/help/guide-getting-started.md +22 -12
  116. package/apps/web/dist/help/guide-ideas.html +3 -3
  117. package/apps/web/dist/help/guide-plugins.html +5 -4
  118. package/apps/web/dist/help/guide-plugins.md +2 -1
  119. package/apps/web/dist/help/guide-programs.html +3 -3
  120. package/apps/web/dist/help/guide-runtime.html +6 -6
  121. package/apps/web/dist/help/guide-runtime.md +3 -3
  122. package/apps/web/dist/help/guide.html +3 -3
  123. package/apps/web/dist/help/index.html +1997 -942
  124. package/apps/web/dist/help/mini-app.css +30 -0
  125. package/apps/web/dist/help/mini-app.js +14 -14
  126. package/apps/web/dist/host-web.json +90 -90
  127. package/apps/web/dist/index.html +3 -3
  128. package/apps/web/dist/run-panel.html +3 -3
  129. package/apps/web/package.json +1 -1
  130. package/apps/web/src/AccessContext.tsx +15 -15
  131. package/apps/web/src/App.tsx +13 -13
  132. package/apps/web/src/DiffCode.tsx +2 -2
  133. package/apps/web/src/HelpDialog.tsx +3 -3
  134. package/apps/web/src/Overview.tsx +13 -13
  135. package/apps/web/src/PluginActivation.ts +1 -1
  136. package/apps/web/src/PluginChat.tsx +15 -15
  137. package/apps/web/src/PluginFailureNotice.tsx +1 -1
  138. package/apps/web/src/PluginRegistry.tsx +44 -44
  139. package/apps/web/src/RunPreparationChat.tsx +11 -11
  140. package/apps/web/src/RunStore.ts +1 -1
  141. package/apps/web/src/SessionList.tsx +14 -14
  142. package/apps/web/src/SettingsModal.tsx +112 -112
  143. package/apps/web/src/StartOptions.tsx +11 -11
  144. package/apps/web/src/StartSelection.tsx +11 -11
  145. package/apps/web/src/StartTiles.tsx +8 -8
  146. package/apps/web/src/SurfaceShortcuts.tsx +3 -3
  147. package/apps/web/src/ThemeSettings.tsx +8 -8
  148. package/apps/web/src/TitleModelSettings.tsx +13 -13
  149. package/apps/web/src/WorkspacePanel.tsx +9 -9
  150. package/apps/web/src/access-session.ts +4 -4
  151. package/apps/web/src/access-token.ts +5 -5
  152. package/apps/web/src/actor-conversation.ts +3 -3
  153. package/apps/web/src/actor-programs/client-ui/DataTable.tsx +8 -8
  154. package/apps/web/src/actor-programs/client-ui/FilePicker.tsx +4 -4
  155. package/apps/web/src/actor-programs/client-ui/FlowDiagram.tsx +13 -13
  156. package/apps/web/src/actor-programs/client-ui/Viewers.tsx +4 -4
  157. package/apps/web/src/actor-programs/client-ui/WorkflowDiagram.tsx +1 -1
  158. package/apps/web/src/actor-programs/client-ui/file-contracts.d.ts +4 -4
  159. package/apps/web/src/actor-programs/client-ui/file-selection.ts +1 -1
  160. package/apps/web/src/actor-programs/client-ui/viewer-contracts.d.ts +3 -3
  161. package/apps/web/src/api.ts +7 -7
  162. package/apps/web/src/chat/StoppedActorNotice.tsx +5 -5
  163. package/apps/web/src/chat/chat-target.ts +3 -3
  164. package/apps/web/src/chat/requests.ts +2 -2
  165. package/apps/web/src/chat/useAttachmentCapabilities.ts +2 -2
  166. package/apps/web/src/chat-view-settings.tsx +5 -6
  167. package/apps/web/src/diff-view.css +1 -1
  168. package/apps/web/src/highlighting.css +1 -1
  169. package/apps/web/src/language-server/language-server-plugin.tsx +30 -30
  170. package/apps/web/src/lib/labels.ts +6 -6
  171. package/apps/web/src/main.tsx +4 -4
  172. package/apps/web/src/offered-machines.ts +2 -2
  173. package/apps/web/src/page-opener.tsx +1 -1
  174. package/apps/web/src/panel/ConnectionsPage.tsx +26 -23
  175. package/apps/web/src/panel/LoginForm.tsx +6 -6
  176. package/apps/web/src/panel/PanelDialogs.tsx +22 -22
  177. package/apps/web/src/panel/PanelHeader.tsx +2 -2
  178. package/apps/web/src/panel/PanelPage.tsx +1 -1
  179. package/apps/web/src/panel/RunLine.tsx +4 -4
  180. package/apps/web/src/panel/RunsPage.tsx +15 -15
  181. package/apps/web/src/panel/StartPage.tsx +29 -26
  182. package/apps/web/src/panel/connection-state.ts +9 -9
  183. package/apps/web/src/panel/contract.ts +34 -27
  184. package/apps/web/src/panel.tsx +1 -1
  185. package/apps/web/src/plugin-bootstrap.ts +5 -5
  186. package/apps/web/src/product/ModelControl.tsx +3 -3
  187. package/apps/web/src/product/ProductModelSettings.tsx +16 -16
  188. package/apps/web/src/product/SystemPromptControl.tsx +11 -11
  189. package/apps/web/src/product/model-settings.ts +2 -2
  190. package/apps/web/src/rpc/client.ts +16 -16
  191. package/apps/web/src/rpc.ts +1 -1
  192. package/apps/web/src/run-overview.ts +1 -1
  193. package/apps/web/src/run-panel/RunPanelApp.tsx +39 -39
  194. package/apps/web/src/run-panel/RunPanelHeader.tsx +6 -6
  195. package/apps/web/src/run-panel/RunPanelMenu.tsx +6 -6
  196. package/apps/web/src/run-panel/RunPanelRail.tsx +4 -4
  197. package/apps/web/src/run-panel/RunPanelWorkspace.tsx +3 -3
  198. package/apps/web/src/run-panel/clipboard.ts +3 -3
  199. package/apps/web/src/run-panel/host-contract.ts +5 -5
  200. package/apps/web/src/run-panel/host.ts +15 -15
  201. package/apps/web/src/run-panel/input-bridge.ts +1 -1
  202. package/apps/web/src/run-panel/run-panel-location.ts +5 -5
  203. package/apps/web/src/run-panel/use-session-list.ts +1 -1
  204. package/apps/web/src/run-panel/workspace-state.ts +3 -3
  205. package/apps/web/src/run-panel.tsx +4 -4
  206. package/apps/web/src/run-preparation.ts +2 -2
  207. package/apps/web/src/run-view.ts +3 -3
  208. package/apps/web/src/settings-contributions.ts +32 -32
  209. package/apps/web/src/theme.ts +9 -9
  210. package/apps/web/src/title-model-settings.ts +6 -6
  211. package/apps/web/src/ui/ListDetail.tsx +9 -9
  212. package/apps/web/src/ui/dialog.tsx +2 -2
  213. package/apps/web/src/ui/modal-controller.ts +3 -3
  214. package/apps/web/src/ui/modal.tsx +2 -2
  215. package/apps/web/src/ui/popover.tsx +1 -1
  216. package/apps/web/src/ui/relative-time.ts +8 -8
  217. package/apps/web/src/ui/startup-notice.tsx +2 -2
  218. package/apps/web/src/ui/state-icon.tsx +1 -1
  219. package/apps/web/src/ui/state-vocabulary.ts +16 -16
  220. package/apps/web/src/ui/stop-button.tsx +2 -2
  221. package/bundles/ragents.activity/ragents-bundle.json +2 -2
  222. package/bundles/ragents.activity/web/classes.json +1 -1
  223. package/bundles/ragents.activity/web/index.js +1 -1
  224. package/bundles/ragents.activity/web/index.js.map +2 -2
  225. package/bundles/ragents.actor-programs/ragents-bundle.json +2 -2
  226. package/bundles/ragents.actor-programs/server/index.js +256 -228
  227. package/bundles/ragents.actor-programs/server/index.js.map +4 -4
  228. package/bundles/ragents.actor-programs/web/classes.json +1 -1
  229. package/bundles/ragents.actor-programs/web/index.js +1 -1
  230. package/bundles/ragents.actor-programs/web/index.js.map +3 -3
  231. package/bundles/ragents.ask/ragents-bundle.json +2 -4
  232. package/bundles/ragents.ask/server/chunks/{chunk-PDJO75SQ.js → chunk-YOV27MAR.js} +2 -2
  233. package/bundles/ragents.ask/server/chunks/chunk-YOV27MAR.js.map +7 -0
  234. package/bundles/ragents.ask/server/exports/server/contract.js +1 -1
  235. package/bundles/ragents.ask/server/index.js +23 -23
  236. package/bundles/ragents.ask/server/index.js.map +2 -2
  237. package/bundles/ragents.ask/web/chunks/{chunk-WFN4374U.js → chunk-D6NNB5DS.js} +1 -1
  238. package/bundles/ragents.ask/web/chunks/chunk-D6NNB5DS.js.map +7 -0
  239. package/bundles/ragents.ask/web/chunks/{chunk-V7W3QDVS.js → chunk-IQBHK7MV.js} +2 -2
  240. package/bundles/ragents.ask/web/chunks/{chunk-V7W3QDVS.js.map → chunk-IQBHK7MV.js.map} +4 -4
  241. package/bundles/ragents.ask/web/chunks/chunk-PWFIAMX4.js +2 -0
  242. package/bundles/ragents.ask/web/chunks/chunk-PWFIAMX4.js.map +7 -0
  243. package/bundles/ragents.ask/web/chunks/chunk-QHGKEESD.js +2 -0
  244. package/bundles/ragents.ask/web/chunks/chunk-QHGKEESD.js.map +7 -0
  245. package/bundles/ragents.ask/web/classes.json +1 -1
  246. package/bundles/ragents.ask/web/exports/ask-payload.js +1 -1
  247. package/bundles/ragents.ask/web/exports/web/QuestionCard.js +1 -1
  248. package/bundles/ragents.ask/web/exports/web/api.js +1 -1
  249. package/bundles/ragents.ask/web/index.js +1 -1
  250. package/bundles/ragents.ask/web/index.js.map +4 -4
  251. package/bundles/ragents.browser/executor/index.mjs +35 -35
  252. package/bundles/ragents.browser/executor/index.mjs.map +2 -2
  253. package/bundles/ragents.browser/ragents-bundle.json +2 -2
  254. package/bundles/ragents.browser/server/chunks/{chunk-CWLX4VA5.js → chunk-PYEISBNE.js} +1 -1
  255. package/bundles/ragents.browser/server/chunks/{chunk-CWLX4VA5.js.map → chunk-PYEISBNE.js.map} +1 -1
  256. package/bundles/ragents.browser/server/exports/server/contract.js +1 -1
  257. package/bundles/ragents.browser/server/index.js +31 -31
  258. package/bundles/ragents.browser/server/index.js.map +2 -2
  259. package/bundles/ragents.browser/skills/browser-testing/SKILL.md +30 -30
  260. package/bundles/ragents.documents/prompt.hbs +1 -1
  261. package/bundles/ragents.documents/ragents-bundle.json +2 -2
  262. package/bundles/ragents.documents/server/chunks/{chunk-QIECRZ7C.js → chunk-KMZWOVTI.js} +3 -3
  263. package/bundles/ragents.documents/server/chunks/{chunk-QIECRZ7C.js.map → chunk-KMZWOVTI.js.map} +2 -2
  264. package/bundles/ragents.documents/server/exports/contract.js +1 -1
  265. package/bundles/ragents.documents/server/index.js +26 -26
  266. package/bundles/ragents.documents/server/index.js.map +2 -2
  267. package/bundles/ragents.documents/web/classes.json +1 -1
  268. package/bundles/ragents.documents/web/index.js +1 -1
  269. package/bundles/ragents.documents/web/index.js.map +3 -3
  270. package/bundles/ragents.lsp-fsharp/executor/index.mjs +4 -4
  271. package/bundles/ragents.lsp-fsharp/executor/index.mjs.map +2 -2
  272. package/bundles/ragents.lsp-fsharp/ragents-bundle.json +2 -2
  273. package/bundles/ragents.lsp-fsharp/server/index.js +5 -5
  274. package/bundles/ragents.lsp-fsharp/server/index.js.map +2 -2
  275. package/bundles/ragents.lsp-fsharp/web/index.js +1 -1
  276. package/bundles/ragents.lsp-fsharp/web/index.js.map +2 -2
  277. package/bundles/ragents.lsp-roslyn/executor/index.mjs +3 -3
  278. package/bundles/ragents.lsp-roslyn/executor/index.mjs.map +2 -2
  279. package/bundles/ragents.lsp-roslyn/ragents-bundle.json +2 -2
  280. package/bundles/ragents.lsp-roslyn/server/index.js +17 -17
  281. package/bundles/ragents.lsp-roslyn/server/index.js.map +2 -2
  282. package/bundles/ragents.lsp-roslyn/web/index.js +1 -1
  283. package/bundles/ragents.lsp-roslyn/web/index.js.map +2 -2
  284. package/bundles/ragents.lsp-typescript/executor/index.mjs +2 -2
  285. package/bundles/ragents.lsp-typescript/executor/index.mjs.map +2 -2
  286. package/bundles/ragents.lsp-typescript/ragents-bundle.json +2 -2
  287. package/bundles/ragents.lsp-typescript/server/index.js.map +1 -1
  288. package/bundles/ragents.lsp-typescript/web/index.js +1 -1
  289. package/bundles/ragents.lsp-typescript/web/index.js.map +2 -2
  290. package/bundles/ragents.model-relay/ragents-bundle.json +7 -3
  291. package/bundles/ragents.model-relay/server/index.js +25 -21
  292. package/bundles/ragents.model-relay/server/index.js.map +2 -2
  293. package/bundles/ragents.orchestration/ragents-bundle.json +2 -2
  294. package/bundles/ragents.orchestration/server/index.js +28 -28
  295. package/bundles/ragents.orchestration/server/index.js.map +2 -2
  296. package/bundles/ragents.orchestration/web/chunks/{chunk-OSKPH6SZ.js → chunk-CFMJD5ZI.js} +2 -2
  297. package/bundles/ragents.orchestration/web/chunks/chunk-HOBLI364.js +2 -0
  298. package/bundles/ragents.orchestration/web/chunks/{chunk-OQYCNYXN.js.map → chunk-HOBLI364.js.map} +2 -2
  299. package/bundles/ragents.orchestration/web/chunks/{chunk-ODMMQGX2.js → chunk-UCIMT2R4.js} +2 -2
  300. package/bundles/ragents.orchestration/web/classes.json +1 -1
  301. package/bundles/ragents.orchestration/web/exports/web/program-slot.js +1 -1
  302. package/bundles/ragents.orchestration/web/exports/web/surface-entities.js +1 -1
  303. package/bundles/ragents.orchestration/web/index.js +8 -8
  304. package/bundles/ragents.orchestration/web/index.js.map +3 -3
  305. package/bundles/ragents.overseer/ragents-bundle.json +2 -2
  306. package/bundles/ragents.overseer/server/index.js +99 -99
  307. package/bundles/ragents.overseer/server/index.js.map +2 -2
  308. package/bundles/ragents.overseer/web/classes.json +1 -1
  309. package/bundles/ragents.overseer/web/index.js +1 -1
  310. package/bundles/ragents.overseer/web/index.js.map +2 -2
  311. package/bundles/ragents.processes/ragents-bundle.json +2 -2
  312. package/bundles/ragents.processes/server/index.js +11 -11
  313. package/bundles/ragents.processes/server/index.js.map +2 -2
  314. package/bundles/ragents.processes/web/classes.json +1 -1
  315. package/bundles/ragents.processes/web/index.js +3 -3
  316. package/bundles/ragents.processes/web/index.js.map +2 -2
  317. package/bundles/ragents.product/ragents-bundle.json +2 -2
  318. package/bundles/ragents.product/server/index.js +12 -13
  319. package/bundles/ragents.product/server/index.js.map +2 -2
  320. package/bundles/ragents.product/web/classes.json +1 -1
  321. package/bundles/ragents.product/web/index.js +1 -1
  322. package/bundles/ragents.product/web/index.js.map +2 -2
  323. package/bundles/ragents.profile-distribution/ragents-bundle.json +2 -2
  324. package/bundles/ragents.profile-distribution/server/index.js +31 -31
  325. package/bundles/ragents.profile-distribution/server/index.js.map +2 -2
  326. package/bundles/ragents.reference/ragents-bundle.json +2 -2
  327. package/bundles/ragents.reference/run-scripts/balcony-wizard/RUN.md +19 -19
  328. package/bundles/ragents.reference/run-scripts/balcony-wizard/actors/balcony-app/package.json +2 -2
  329. package/bundles/ragents.reference/run-scripts/balcony-wizard/actors/balcony-app/src/client.tsx +14 -14
  330. package/bundles/ragents.reference/run-scripts/balcony-wizard/actors/balcony-app/src/conversation.ts +2 -2
  331. package/bundles/ragents.reference/run-scripts/balcony-wizard/actors/balcony-app/tests/conversation.test.ts +49 -49
  332. package/bundles/ragents.reference/run-scripts/balcony-wizard/package.json +1 -1
  333. package/bundles/ragents.reference/run-scripts/balcony-wizard/src/server.ts +9 -9
  334. package/bundles/ragents.reference/run-scripts/balcony-wizard/tests/program.test.ts +9 -9
  335. package/bundles/ragents.reference/run-scripts/conversation-circle/RUN.md +7 -7
  336. package/bundles/ragents.reference/run-scripts/conversation-circle/package.json +1 -1
  337. package/bundles/ragents.reference/run-scripts/conversation-circle/src/server.ts +13 -13
  338. package/bundles/ragents.reference/run-scripts/conversation-circle/tests/helpers.ts +1 -1
  339. package/bundles/ragents.reference/run-scripts/conversation-circle/tests/program.test.ts +8 -8
  340. package/bundles/ragents.reference/run-scripts/learning-afternoon/RUN.md +16 -16
  341. package/bundles/ragents.reference/run-scripts/learning-afternoon/package.json +1 -1
  342. package/bundles/ragents.reference/run-scripts/learning-afternoon/prompts/experiment.md +1 -1
  343. package/bundles/ragents.reference/run-scripts/learning-afternoon/prompts/helper.md +3 -3
  344. package/bundles/ragents.reference/run-scripts/learning-afternoon/prompts/quiz.md +1 -1
  345. package/bundles/ragents.reference/run-scripts/learning-afternoon/src/server.ts +9 -9
  346. package/bundles/ragents.reference/run-scripts/learning-afternoon/tests/program.test.ts +39 -39
  347. package/bundles/ragents.reference/run-scripts/moderated-round/RUN.md +7 -7
  348. package/bundles/ragents.reference/run-scripts/moderated-round/package.json +1 -1
  349. package/bundles/ragents.reference/run-scripts/moderated-round/src/server.ts +9 -9
  350. package/bundles/ragents.reference/run-scripts/moderated-round/tests/helpers.ts +1 -1
  351. package/bundles/ragents.reference/run-scripts/moderated-round/tests/program.test.ts +6 -6
  352. package/bundles/ragents.reference/run-scripts/shared-actor-list/RUN.md +12 -12
  353. package/bundles/ragents.reference/run-scripts/shared-actor-list/actors/shared-list/package.json +2 -2
  354. package/bundles/ragents.reference/run-scripts/shared-actor-list/actors/shared-list/src/contract.ts +3 -3
  355. package/bundles/ragents.reference/run-scripts/shared-actor-list/actors/shared-list/tests/program.test.ts +4 -4
  356. package/bundles/ragents.reference/run-scripts/shared-actor-list/package.json +1 -1
  357. package/bundles/ragents.reference/run-scripts/shared-actor-list/src/server.ts +11 -11
  358. package/bundles/ragents.reference/run-scripts/shared-actor-list/tests/helpers.ts +1 -1
  359. package/bundles/ragents.reference/run-scripts/shared-actor-list/tests/program.test.ts +13 -13
  360. package/bundles/ragents.reference/run-scripts/word-game/RUN.md +18 -18
  361. package/bundles/ragents.reference/run-scripts/word-game/package.json +2 -2
  362. package/bundles/ragents.reference/run-scripts/word-game/src/client.tsx +1 -1
  363. package/bundles/ragents.reference/run-scripts/word-game/src/contract.ts +2 -2
  364. package/bundles/ragents.reference/run-scripts/word-game/src/server.ts +16 -16
  365. package/bundles/ragents.reference/run-scripts/word-game/tests/program.test.ts +39 -39
  366. package/bundles/ragents.reference/skills/100-shared-actor-list/SKILL.md +5 -5
  367. package/bundles/ragents.reference/skills/110-all-card-slots/SKILL.md +5 -5
  368. package/bundles/ragents.reference/skills/150-editorial-workbench/SKILL.md +5 -5
  369. package/bundles/ragents.reference/skills/160-learning-companion/SKILL.md +5 -5
  370. package/bundles/ragents.reference/skills/170-photo-collection/SKILL.md +5 -5
  371. package/bundles/ragents.reference/skills/180-decision-workbench/SKILL.md +5 -5
  372. package/bundles/ragents.reference/skills/190-review-queue/SKILL.md +5 -5
  373. package/bundles/ragents.reference/skills/20-circle-of-four/SKILL.md +5 -5
  374. package/bundles/ragents.reference/skills/200-typescript-diagnostics/SKILL.md +5 -5
  375. package/bundles/ragents.reference/skills/210-moderator-handover/SKILL.md +5 -5
  376. package/bundles/ragents.reference/skills/220-actor-approval-list/SKILL.md +5 -5
  377. package/bundles/ragents.reference/skills/230-shared-state-views/SKILL.md +5 -5
  378. package/bundles/ragents.reference/skills/240-live-result-list/SKILL.md +5 -5
  379. package/bundles/ragents.reference/skills/250-balcony-wizard/SKILL.md +5 -5
  380. package/bundles/ragents.reference/skills/30-llm-without-runtime-knowledge/SKILL.md +5 -5
  381. package/bundles/ragents.reference/skills/35-actor-input-fifo/SKILL.md +5 -5
  382. package/bundles/ragents.reference/skills/40-subscription-matrix/SKILL.md +5 -5
  383. package/bundles/ragents.reference/skills/50-subscription-removal/SKILL.md +5 -5
  384. package/bundles/ragents.reference/skills/60-stop-in-the-circle/SKILL.md +5 -5
  385. package/bundles/ragents.reference/skills/65-artifact-least-privilege/SKILL.md +5 -5
  386. package/bundles/ragents.reference/skills/70-headless-counter/SKILL.md +5 -5
  387. package/bundles/ragents.reference/skills/75-lsp-demo/SKILL.md +5 -5
  388. package/bundles/ragents.reference/skills/80-actor-text-analysis/SKILL.md +5 -5
  389. package/bundles/ragents.reference/skills/90-actor-notes/SKILL.md +5 -5
  390. package/bundles/ragents.reference/skills/95-hello-world/SKILL.md +5 -5
  391. package/bundles/ragents.reference/skills/decision-brief/SKILL.md +24 -24
  392. package/bundles/ragents.reference/skills/learning-sprint/SKILL.md +24 -24
  393. package/bundles/ragents.reference/web/classes.json +1 -1
  394. package/bundles/ragents.reference/web/index.js +1 -1
  395. package/bundles/ragents.reference/web/index.js.map +2 -2
  396. package/bundles/ragents.todo/ragents-bundle.json +2 -2
  397. package/bundles/ragents.todo/server/index.js +5 -5
  398. package/bundles/ragents.todo/server/index.js.map +2 -2
  399. package/bundles/ragents.todo/web/classes.json +1 -1
  400. package/bundles/ragents.todo/web/index.js +1 -1
  401. package/bundles/ragents.todo/web/index.js.map +2 -2
  402. package/bundles/ragents.transcript/ragents-bundle.json +2 -2
  403. package/bundles/ragents.transcript/server/index.js +11 -11
  404. package/bundles/ragents.transcript/server/index.js.map +2 -2
  405. package/bundles/ragents.watch/ragents-bundle.json +2 -2
  406. package/bundles/ragents.watch/server/index.js +48 -48
  407. package/bundles/ragents.watch/server/index.js.map +2 -2
  408. package/bundles/ragents.workspace/ragents-bundle.json +2 -2
  409. package/bundles/ragents.workspace/server/index.js +83 -81
  410. package/bundles/ragents.workspace/server/index.js.map +2 -2
  411. package/bundles/ragents.workspace/web/classes.json +1 -1
  412. package/bundles/ragents.workspace/web/index.js +1 -1
  413. package/bundles/ragents.workspace/web/index.js.map +2 -2
  414. package/package.json +4 -4
  415. package/packages/agent/dist/core/model-runtime.d.ts +7 -2
  416. package/packages/agent/dist/core/tools/bash.d.ts +1 -1
  417. package/packages/agent/dist/index.d.ts +1 -1
  418. package/packages/agent/dist/loop/agent-loop.d.ts +2 -2
  419. package/packages/agent/src/core/compaction/utils.ts +1 -1
  420. package/packages/agent/src/core/model-runtime.ts +45 -5
  421. package/packages/agent/src/core/tools/bash.ts +1 -1
  422. package/packages/agent/src/index.ts +1 -1
  423. package/packages/agent/src/loop/agent-loop.ts +2 -2
  424. package/packages/ai/dist/models.d.ts +1 -0
  425. package/packages/ai/dist/models.generated.d.ts +4544 -983
  426. package/packages/ai/dist/providers/openrouter.models.d.ts +4544 -983
  427. package/packages/ai/src/api/ai-sdk.ts +33 -7
  428. package/packages/ai/src/api-registry.ts +1 -1
  429. package/packages/ai/src/index.ts +2 -2
  430. package/packages/ai/src/models.generated.ts +1 -1
  431. package/packages/ai/src/models.ts +1 -1
  432. package/packages/ai/src/providers/openrouter.models.ts +3723 -550
  433. package/packages/ragents/src/access.ts +12 -12
  434. package/packages/ragents/src/agents/actor-input.ts +33 -33
  435. package/packages/ragents/src/agents/catalog.ts +1 -1
  436. package/packages/ragents/src/agents/delivery.ts +17 -17
  437. package/packages/ragents/src/agents/plugins.ts +1 -1
  438. package/packages/ragents/src/agents/scheduler.ts +7 -7
  439. package/packages/ragents/src/agents/schemas.ts +1 -1
  440. package/packages/ragents/src/agents/tool-orientation.ts +4 -4
  441. package/packages/ragents/src/agents/tools.ts +20 -20
  442. package/packages/ragents/src/agents/toolset.ts +5 -5
  443. package/packages/ragents/src/agents/workspaces.ts +1 -1
  444. package/packages/ragents/src/domain/events.ts +1 -1
  445. package/packages/ragents/src/domain/model.ts +5 -5
  446. package/packages/ragents/src/drivers/agent-runtime.ts +1 -1
  447. package/packages/ragents/src/drivers/agent-turn.ts +4 -4
  448. package/packages/ragents/src/drivers/agent.ts +2 -2
  449. package/packages/ragents/src/drivers/attachments.ts +4 -4
  450. package/packages/ragents/src/http/contracts.ts +14 -14
  451. package/packages/ragents/src/http/methods.ts +6 -6
  452. package/packages/ragents/src/index.ts +1 -0
  453. package/packages/ragents/src/plugin-host.ts +162 -116
  454. package/packages/ragents/src/plugin-types.ts +29 -10
  455. package/packages/ragents/src/rpc/contract.ts +5 -5
  456. package/packages/ragents/src/rpc/contribution.ts +2 -2
  457. package/packages/ragents/src/rpc/peer.ts +11 -11
  458. package/packages/ragents/src/rpc/protocol.ts +2 -2
  459. package/packages/ragents/src/runtime/decisions/turns.ts +1 -1
  460. package/packages/ragents/src/runtime/journal.ts +10 -10
  461. package/packages/ragents/src/runtime/orchestration.ts +8 -8
  462. package/packages/ragents/src/runtime/stop.ts +2 -2
  463. package/packages/ragents/src/script/mediators.ts +35 -35
  464. package/packages/ragents/src/typescript/async-compiler.ts +14 -14
  465. package/packages/ragents/src/typescript/compiler-worker.ts +2 -2
  466. package/packages/ragents/src/typescript/compiler.ts +7 -7
  467. package/packages/ragents/src/typescript/snippet.ts +5 -5
  468. package/packages/workspace-executor/src/bash-launch.ts +13 -13
  469. package/packages/workspace-executor/src/commands.ts +18 -18
  470. package/packages/workspace-executor/src/context.ts +15 -15
  471. package/packages/workspace-executor/src/contributions.ts +35 -35
  472. package/packages/workspace-executor/src/errors.ts +1 -1
  473. package/packages/workspace-executor/src/executor.ts +15 -15
  474. package/packages/workspace-executor/src/files.ts +30 -30
  475. package/packages/workspace-executor/src/language-server/contract.ts +2 -2
  476. package/packages/workspace-executor/src/language-server/diagnostics.ts +4 -4
  477. package/packages/workspace-executor/src/language-server/host.ts +35 -35
  478. package/packages/workspace-executor/src/language-server/json-rpc.ts +4 -4
  479. package/packages/workspace-executor/src/language-server/module.ts +11 -11
  480. package/packages/workspace-executor/src/language-server/roots.ts +3 -3
  481. package/packages/workspace-executor/src/language-server/session.ts +15 -15
  482. package/packages/workspace-executor/src/language-server/workspace-solutions.ts +2 -2
  483. package/packages/workspace-executor/src/managed-process.ts +35 -7
  484. package/packages/workspace-executor/src/module.ts +8 -8
  485. package/packages/workspace-executor/src/modules.ts +3 -3
  486. package/packages/workspace-executor/src/paths.ts +11 -11
  487. package/packages/workspace-executor/src/process-sandbox.ts +3 -3
  488. package/packages/workspace-executor/src/processes/module.ts +3 -3
  489. package/packages/workspace-executor/src/processes/process-table.ts +20 -20
  490. package/packages/workspace-executor/src/processes/scanner.ts +3 -3
  491. package/packages/workspace-executor/src/processes/snapshot.ts +2 -2
  492. package/packages/workspace-executor/src/processes/terminator.ts +13 -13
  493. package/packages/workspace-executor/src/run-folders.ts +3 -3
  494. package/packages/workspace-executor/src/safe-environment.ts +4 -4
  495. package/packages/workspace-executor/src/sandbox-tools.ts +37 -31
  496. package/packages/workspace-executor/src/session-ident.ts +2 -2
  497. package/packages/workspace-executor/src/shell-platform.ts +2 -2
  498. package/packages/workspace-executor/src/tools.ts +5 -5
  499. package/plugins/ragents.activity/web/ActivityHeader.tsx +3 -3
  500. package/plugins/ragents.activity/web/activity.ts +2 -2
  501. package/plugins/ragents.actor-programs/server/access-projections.ts +31 -0
  502. package/plugins/ragents.actor-programs/server/agent-tools.ts +2 -2
  503. package/plugins/ragents.actor-programs/server/capability-resolver.ts +3 -3
  504. package/plugins/ragents.actor-programs/server/controls-template.ts +46 -46
  505. package/plugins/ragents.actor-programs/server/controls-tool.ts +4 -4
  506. package/plugins/ragents.actor-programs/server/index.ts +2 -0
  507. package/plugins/ragents.actor-programs/server/limits.ts +3 -3
  508. package/plugins/ragents.actor-programs/server/methods.ts +1 -1
  509. package/plugins/ragents.actor-programs/server/project-diagnostics.ts +8 -8
  510. package/plugins/ragents.actor-programs/server/routes.ts +8 -8
  511. package/plugins/ragents.actor-programs/server/runtime.ts +90 -90
  512. package/plugins/ragents.actor-programs/server/templates.ts +59 -59
  513. package/plugins/ragents.actor-programs/server/test-report.ts +5 -5
  514. package/plugins/ragents.actor-programs/server/tool-contributor.ts +1 -1
  515. package/plugins/ragents.actor-programs/web/ActorViewFrame.tsx +17 -17
  516. package/plugins/ragents.actor-programs/web/AppsPanel.tsx +26 -26
  517. package/plugins/ragents.actor-programs/web/EmbeddedApps.tsx +3 -3
  518. package/plugins/ragents.actor-programs/web/FullscreenHost.tsx +2 -2
  519. package/plugins/ragents.actor-programs/web/FunctionForm.tsx +16 -16
  520. package/plugins/ragents.actor-programs/web/ProgramSource.tsx +5 -5
  521. package/plugins/ragents.actor-programs/web/api.ts +36 -36
  522. package/plugins/ragents.actor-programs/web/bridge.ts +8 -8
  523. package/plugins/ragents.actor-programs/web/chat-state.ts +4 -4
  524. package/plugins/ragents.actor-programs/web/context.ts +1 -1
  525. package/plugins/ragents.actor-programs/web/function-input.ts +6 -6
  526. package/plugins/ragents.actor-programs/web/index.tsx +1 -1
  527. package/plugins/ragents.actor-programs/web/program-state.ts +4 -4
  528. package/plugins/ragents.ask/ask-payload.ts +1 -1
  529. package/plugins/ragents.ask/contract.ts +5 -5
  530. package/plugins/ragents.ask/server/answer-method.ts +1 -1
  531. package/plugins/ragents.ask/server/ask-service.ts +9 -9
  532. package/plugins/ragents.ask/server/ask-tool.ts +10 -10
  533. package/plugins/ragents.ask/server/contract.ts +5 -5
  534. package/plugins/ragents.ask/web/AskActionView.tsx +1 -1
  535. package/plugins/ragents.ask/web/QuestionCard.tsx +22 -22
  536. package/plugins/ragents.ask/web/index.tsx +2 -8
  537. package/plugins/ragents.browser/executor/contract.ts +6 -6
  538. package/plugins/ragents.browser/executor/index.ts +1 -1
  539. package/plugins/ragents.browser/executor/module.ts +6 -6
  540. package/plugins/ragents.browser/executor/pages.ts +32 -32
  541. package/plugins/ragents.browser/executor/playwright.ts +8 -8
  542. package/plugins/ragents.browser/provision.ts +7 -7
  543. package/plugins/ragents.browser/server/browser.ts +14 -14
  544. package/plugins/ragents.browser/server/contract.ts +1 -1
  545. package/plugins/ragents.browser/server/index.ts +1 -1
  546. package/plugins/ragents.browser/server/tools.ts +14 -14
  547. package/plugins/ragents.browser/skills/browser-testing/SKILL.md +30 -30
  548. package/plugins/ragents.documents/contract.ts +2 -2
  549. package/plugins/ragents.documents/prompt.hbs +1 -1
  550. package/plugins/ragents.documents/server/document-write-tool.ts +12 -12
  551. package/plugins/ragents.documents/server/files-route.ts +6 -6
  552. package/plugins/ragents.documents/server/show-document-tool.ts +26 -26
  553. package/plugins/ragents.documents/server/store.ts +1 -1
  554. package/plugins/ragents.documents/web/DocumentViewer.tsx +37 -37
  555. package/plugins/ragents.documents/web/index.tsx +11 -11
  556. package/plugins/ragents.lsp-fsharp/executor.ts +7 -7
  557. package/plugins/ragents.lsp-fsharp/provision.ts +7 -7
  558. package/plugins/ragents.lsp-roslyn/executor.ts +5 -5
  559. package/plugins/ragents.lsp-roslyn/provision.ts +4 -4
  560. package/plugins/ragents.lsp-roslyn/server/index.ts +5 -5
  561. package/plugins/ragents.lsp-roslyn/server/solution-on-start.ts +13 -13
  562. package/plugins/ragents.lsp-typescript/executor.ts +3 -3
  563. package/plugins/ragents.model-relay/server/config.ts +6 -2
  564. package/plugins/ragents.model-relay/server/index.ts +2 -2
  565. package/plugins/ragents.model-relay/server/relay.ts +23 -22
  566. package/plugins/ragents.orchestration/contract.ts +8 -8
  567. package/plugins/ragents.orchestration/server/index.ts +4 -4
  568. package/plugins/ragents.orchestration/server/run-stop-tool.ts +3 -3
  569. package/plugins/ragents.orchestration/server/surface-tool.ts +5 -5
  570. package/plugins/ragents.orchestration/tiled-layout.ts +11 -11
  571. package/plugins/ragents.orchestration/web/ActorChat.tsx +2 -2
  572. package/plugins/ragents.orchestration/web/ActorChatControls.tsx +4 -4
  573. package/plugins/ragents.orchestration/web/ActorChatPreview.tsx +1 -1
  574. package/plugins/ragents.orchestration/web/ActorPopout.tsx +1 -1
  575. package/plugins/ragents.orchestration/web/ActorShortcut.tsx +6 -6
  576. package/plugins/ragents.orchestration/web/ActorSurfaceControls.tsx +15 -15
  577. package/plugins/ragents.orchestration/web/ActorTile.tsx +1 -1
  578. package/plugins/ragents.orchestration/web/Center.tsx +5 -5
  579. package/plugins/ragents.orchestration/web/DocumentsSection.tsx +2 -2
  580. package/plugins/ragents.orchestration/web/ExecutionsPanel.tsx +15 -15
  581. package/plugins/ragents.orchestration/web/FlowInspector.tsx +103 -103
  582. package/plugins/ragents.orchestration/web/JournalStatus.tsx +11 -11
  583. package/plugins/ragents.orchestration/web/MaterialBody.tsx +2 -2
  584. package/plugins/ragents.orchestration/web/StopRunButton.tsx +6 -6
  585. package/plugins/ragents.orchestration/web/TiledSurface.tsx +9 -9
  586. package/plugins/ragents.orchestration/web/actor-header-settings.ts +5 -5
  587. package/plugins/ragents.orchestration/web/constants.ts +2 -2
  588. package/plugins/ragents.orchestration/web/executions.ts +6 -6
  589. package/plugins/ragents.orchestration/web/format.ts +1 -1
  590. package/plugins/ragents.orchestration/web/index.tsx +2 -2
  591. package/plugins/ragents.orchestration/web/run-panel/AddresseeControl.tsx +7 -7
  592. package/plugins/ragents.orchestration/web/run-panel/AddresseeTree.tsx +8 -8
  593. package/plugins/ragents.orchestration/web/run-panel/RunPanel.tsx +29 -28
  594. package/plugins/ragents.orchestration/web/run-panel/RunPanelSettings.tsx +7 -7
  595. package/plugins/ragents.orchestration/web/run-panel/addressee-tree.ts +13 -13
  596. package/plugins/ragents.orchestration/web/run-panel/run-panel-actors.ts +3 -3
  597. package/plugins/ragents.orchestration/web/run-panel/run-panel-settings.ts +2 -2
  598. package/plugins/ragents.orchestration/web/run-panel/run-panel-startup.ts +3 -3
  599. package/plugins/ragents.orchestration/web/run-panel/run-panel-state.ts +7 -7
  600. package/plugins/ragents.orchestration/web/run-panel/sheet-status.ts +10 -10
  601. package/plugins/ragents.orchestration/web/surface-startup.ts +8 -8
  602. package/plugins/ragents.orchestration/web/surface-view-settings.ts +1 -1
  603. package/plugins/ragents.orchestration/web/tiled-view-settings.ts +1 -1
  604. package/plugins/ragents.overseer/contract.ts +20 -20
  605. package/plugins/ragents.overseer/server/api.ts +8 -8
  606. package/plugins/ragents.overseer/server/coordinator-prompt.ts +10 -10
  607. package/plugins/ragents.overseer/server/coordinator.ts +4 -4
  608. package/plugins/ragents.overseer/server/index.ts +24 -24
  609. package/plugins/ragents.overseer/server/orientation.ts +8 -8
  610. package/plugins/ragents.overseer/server/quick-answer.ts +9 -9
  611. package/plugins/ragents.overseer/server/run-directory.ts +5 -5
  612. package/plugins/ragents.overseer/server/settings.ts +6 -6
  613. package/plugins/ragents.overseer/server/user-location.ts +16 -16
  614. package/plugins/ragents.overseer/web/ModelSettings.tsx +9 -9
  615. package/plugins/ragents.overseer/web/index.tsx +20 -20
  616. package/plugins/ragents.overseer/web/model-settings.ts +1 -1
  617. package/plugins/ragents.overseer/web/quick-answers.ts +2 -2
  618. package/plugins/ragents.processes/contract.ts +5 -5
  619. package/plugins/ragents.processes/server/methods.ts +4 -4
  620. package/plugins/ragents.processes/server/observer.ts +8 -8
  621. package/plugins/ragents.processes/server/run-processes.ts +2 -2
  622. package/plugins/ragents.processes/web/ProcessHeader.tsx +10 -10
  623. package/plugins/ragents.processes/web/processes.ts +10 -10
  624. package/plugins/ragents.product/server/config.ts +1 -1
  625. package/plugins/ragents.product/server/index.ts +4 -4
  626. package/plugins/ragents.product/server/runtime.ts +9 -10
  627. package/plugins/ragents.product/web/index.tsx +1 -1
  628. package/plugins/ragents.profile-distribution/contract.ts +10 -10
  629. package/plugins/ragents.profile-distribution/server/archive.ts +20 -20
  630. package/plugins/ragents.profile-distribution/server/config.ts +2 -2
  631. package/plugins/ragents.profile-distribution/server/index.ts +4 -4
  632. package/plugins/ragents.reference/examples.ts +27 -27
  633. package/plugins/ragents.reference/run-scripts/balcony-wizard/RUN.md +19 -19
  634. package/plugins/ragents.reference/run-scripts/balcony-wizard/actors/balcony-app/package.json +2 -2
  635. package/plugins/ragents.reference/run-scripts/balcony-wizard/actors/balcony-app/src/client.tsx +14 -14
  636. package/plugins/ragents.reference/run-scripts/balcony-wizard/actors/balcony-app/src/conversation.ts +2 -2
  637. package/plugins/ragents.reference/run-scripts/balcony-wizard/actors/balcony-app/tests/conversation.test.ts +49 -49
  638. package/plugins/ragents.reference/run-scripts/balcony-wizard/package.json +1 -1
  639. package/plugins/ragents.reference/run-scripts/balcony-wizard/src/server.ts +9 -9
  640. package/plugins/ragents.reference/run-scripts/balcony-wizard/tests/program.test.ts +9 -9
  641. package/plugins/ragents.reference/run-scripts/conversation-circle/RUN.md +7 -7
  642. package/plugins/ragents.reference/run-scripts/conversation-circle/package.json +1 -1
  643. package/plugins/ragents.reference/run-scripts/conversation-circle/src/server.ts +13 -13
  644. package/plugins/ragents.reference/run-scripts/conversation-circle/tests/helpers.ts +1 -1
  645. package/plugins/ragents.reference/run-scripts/conversation-circle/tests/program.test.ts +8 -8
  646. package/plugins/ragents.reference/run-scripts/learning-afternoon/RUN.md +16 -16
  647. package/plugins/ragents.reference/run-scripts/learning-afternoon/package.json +1 -1
  648. package/plugins/ragents.reference/run-scripts/learning-afternoon/prompts/experiment.md +1 -1
  649. package/plugins/ragents.reference/run-scripts/learning-afternoon/prompts/helper.md +3 -3
  650. package/plugins/ragents.reference/run-scripts/learning-afternoon/prompts/quiz.md +1 -1
  651. package/plugins/ragents.reference/run-scripts/learning-afternoon/src/server.ts +9 -9
  652. package/plugins/ragents.reference/run-scripts/learning-afternoon/tests/program.test.ts +39 -39
  653. package/plugins/ragents.reference/run-scripts/moderated-round/RUN.md +7 -7
  654. package/plugins/ragents.reference/run-scripts/moderated-round/package.json +1 -1
  655. package/plugins/ragents.reference/run-scripts/moderated-round/src/server.ts +9 -9
  656. package/plugins/ragents.reference/run-scripts/moderated-round/tests/helpers.ts +1 -1
  657. package/plugins/ragents.reference/run-scripts/moderated-round/tests/program.test.ts +6 -6
  658. package/plugins/ragents.reference/run-scripts/shared-actor-list/RUN.md +12 -12
  659. package/plugins/ragents.reference/run-scripts/shared-actor-list/actors/shared-list/package.json +2 -2
  660. package/plugins/ragents.reference/run-scripts/shared-actor-list/actors/shared-list/src/contract.ts +3 -3
  661. package/plugins/ragents.reference/run-scripts/shared-actor-list/actors/shared-list/tests/program.test.ts +4 -4
  662. package/plugins/ragents.reference/run-scripts/shared-actor-list/package.json +1 -1
  663. package/plugins/ragents.reference/run-scripts/shared-actor-list/src/server.ts +11 -11
  664. package/plugins/ragents.reference/run-scripts/shared-actor-list/tests/helpers.ts +1 -1
  665. package/plugins/ragents.reference/run-scripts/shared-actor-list/tests/program.test.ts +13 -13
  666. package/plugins/ragents.reference/run-scripts/word-game/RUN.md +18 -18
  667. package/plugins/ragents.reference/run-scripts/word-game/package.json +2 -2
  668. package/plugins/ragents.reference/run-scripts/word-game/src/client.tsx +1 -1
  669. package/plugins/ragents.reference/run-scripts/word-game/src/contract.ts +2 -2
  670. package/plugins/ragents.reference/run-scripts/word-game/src/server.ts +16 -16
  671. package/plugins/ragents.reference/run-scripts/word-game/tests/program.test.ts +39 -39
  672. package/plugins/ragents.reference/skills/100-shared-actor-list/SKILL.md +5 -5
  673. package/plugins/ragents.reference/skills/110-all-card-slots/SKILL.md +5 -5
  674. package/plugins/ragents.reference/skills/150-editorial-workbench/SKILL.md +5 -5
  675. package/plugins/ragents.reference/skills/160-learning-companion/SKILL.md +5 -5
  676. package/plugins/ragents.reference/skills/170-photo-collection/SKILL.md +5 -5
  677. package/plugins/ragents.reference/skills/180-decision-workbench/SKILL.md +5 -5
  678. package/plugins/ragents.reference/skills/190-review-queue/SKILL.md +5 -5
  679. package/plugins/ragents.reference/skills/20-circle-of-four/SKILL.md +5 -5
  680. package/plugins/ragents.reference/skills/200-typescript-diagnostics/SKILL.md +5 -5
  681. package/plugins/ragents.reference/skills/210-moderator-handover/SKILL.md +5 -5
  682. package/plugins/ragents.reference/skills/220-actor-approval-list/SKILL.md +5 -5
  683. package/plugins/ragents.reference/skills/230-shared-state-views/SKILL.md +5 -5
  684. package/plugins/ragents.reference/skills/240-live-result-list/SKILL.md +5 -5
  685. package/plugins/ragents.reference/skills/250-balcony-wizard/SKILL.md +5 -5
  686. package/plugins/ragents.reference/skills/30-llm-without-runtime-knowledge/SKILL.md +5 -5
  687. package/plugins/ragents.reference/skills/35-actor-input-fifo/SKILL.md +5 -5
  688. package/plugins/ragents.reference/skills/40-subscription-matrix/SKILL.md +5 -5
  689. package/plugins/ragents.reference/skills/50-subscription-removal/SKILL.md +5 -5
  690. package/plugins/ragents.reference/skills/60-stop-in-the-circle/SKILL.md +5 -5
  691. package/plugins/ragents.reference/skills/65-artifact-least-privilege/SKILL.md +5 -5
  692. package/plugins/ragents.reference/skills/70-headless-counter/SKILL.md +5 -5
  693. package/plugins/ragents.reference/skills/75-lsp-demo/SKILL.md +5 -5
  694. package/plugins/ragents.reference/skills/80-actor-text-analysis/SKILL.md +5 -5
  695. package/plugins/ragents.reference/skills/90-actor-notes/SKILL.md +5 -5
  696. package/plugins/ragents.reference/skills/95-hello-world/SKILL.md +5 -5
  697. package/plugins/ragents.reference/skills/decision-brief/SKILL.md +24 -24
  698. package/plugins/ragents.reference/skills/learning-sprint/SKILL.md +24 -24
  699. package/plugins/ragents.reference/walkthroughs.ts +128 -128
  700. package/plugins/ragents.reference/web/StartGuides.tsx +23 -23
  701. package/plugins/ragents.todo/server/todo-tool.ts +6 -6
  702. package/plugins/ragents.todo/web/TodoSection.tsx +1 -1
  703. package/plugins/ragents.transcript/server/transcript.ts +11 -11
  704. package/plugins/ragents.watch/server/condition.ts +4 -4
  705. package/plugins/ragents.watch/server/functions.ts +27 -27
  706. package/plugins/ragents.watch/server/observation.ts +2 -2
  707. package/plugins/ragents.watch/server/service.ts +14 -14
  708. package/plugins/ragents.workspace/client/transport.ts +1 -1
  709. package/plugins/ragents.workspace/client/workspace-client.ts +62 -49
  710. package/plugins/ragents.workspace/contract.ts +46 -46
  711. package/plugins/ragents.workspace/server/binding.ts +20 -20
  712. package/plugins/ragents.workspace/server/browse-route.ts +8 -8
  713. package/plugins/ragents.workspace/server/clients.ts +42 -42
  714. package/plugins/ragents.workspace/server/config.ts +8 -5
  715. package/plugins/ragents.workspace/server/index.ts +5 -4
  716. package/plugins/ragents.workspace/server/runtime.ts +26 -26
  717. package/plugins/ragents.workspace/server/shell-platform.ts +1 -1
  718. package/plugins/ragents.workspace/web/FileBrowser.tsx +10 -10
  719. package/plugins/ragents.workspace/web/WorkspaceBinding.tsx +24 -24
  720. package/plugins/ragents.workspace/web/index.tsx +1 -1
  721. package/ragents.config.core.ts +1 -1
  722. package/ragents.config.developer.ts +3 -3
  723. package/ragents.config.showcase.ts +2 -2
  724. package/scripts/agent/agent-cli.ts +96 -96
  725. package/scripts/agent/journal.ts +5 -5
  726. package/scripts/agent/turn-control.ts +4 -4
  727. package/scripts/package/build-package.ts +29 -29
  728. package/scripts/package/host-links.mjs +3 -3
  729. package/scripts/package/publish-package.ts +29 -29
  730. package/scripts/package/ragents.mjs +19 -19
  731. package/scripts/plugin/build-builtin-plugins.ts +5 -5
  732. package/scripts/plugin/plugin-cli.ts +14 -14
  733. package/scripts/provision/run-provision.ts +14 -15
  734. package/scripts/remote/connect.ts +46 -46
  735. package/scripts/remote/start.ts +18 -18
  736. package/scripts/workspace-client/run-workspace-client.ts +23 -23
  737. package/apps/web/dist/assets/main-C7JeZFjs.js +0 -6
  738. package/apps/web/dist/assets/mermaid-HWGCJPDP-DfsU5ofC.js +0 -478
  739. package/apps/web/dist/assets/runPanel-ZT6TPDLM.js +0 -21
  740. package/bundles/ragents.ask/server/chunks/chunk-PDJO75SQ.js.map +0 -7
  741. package/bundles/ragents.ask/web/chunks/chunk-4VXWWEG7.js +0 -2
  742. package/bundles/ragents.ask/web/chunks/chunk-4VXWWEG7.js.map +0 -7
  743. package/bundles/ragents.ask/web/chunks/chunk-VUBJDIKQ.js +0 -2
  744. package/bundles/ragents.ask/web/chunks/chunk-VUBJDIKQ.js.map +0 -7
  745. package/bundles/ragents.ask/web/chunks/chunk-WFN4374U.js.map +0 -7
  746. package/bundles/ragents.orchestration/web/chunks/chunk-OQYCNYXN.js +0 -2
  747. package/plugins/ragents.ask/web/QuestionSection.tsx +0 -48
  748. /package/bundles/ragents.orchestration/web/chunks/{chunk-OSKPH6SZ.js.map → chunk-CFMJD5ZI.js.map} +0 -0
  749. /package/bundles/ragents.orchestration/web/chunks/{chunk-ODMMQGX2.js.map → chunk-UCIMT2R4.js.map} +0 -0
@@ -55,7 +55,7 @@ const NEW_FILE_AGE_MS = 10_000;
55
55
  const uriOf = (absolutePath: string): string => pathToFileURL(absolutePath).href;
56
56
 
57
57
  const timeoutError = (label: string, what: string, timeoutMs: number): Error =>
58
- new Error(`${label}: ${what} nicht innerhalb von ${Math.round(timeoutMs / 1000)} s`);
58
+ new Error(`${label}: ${what} not within ${Math.round(timeoutMs / 1000)} s`);
59
59
 
60
60
  export const withTimeout = <T>(promise: Promise<T>, timeoutMs: number, error: () => Error): Promise<T> =>
61
61
  new Promise((resolve, reject) => {
@@ -108,14 +108,14 @@ export class LanguageServerSession {
108
108
  onStderr: (chunk) => {
109
109
  this.#stderr = (this.#stderr + chunk.toString("utf8")).slice(-STDERR_TAIL);
110
110
  },
111
- onExit: (code) => this.#ended(`Code ${code ?? "Signal"}`),
111
+ onExit: (code) => this.#ended(`code ${code ?? "signal"}`),
112
112
  onError: (error) => {
113
113
  this.#service.kill("SIGKILL");
114
- this.#ended(`Fehler: ${error.message}`);
114
+ this.#ended(`error: ${error.message}`);
115
115
  },
116
116
  });
117
117
  const output = this.#service.stdin;
118
- if (!output) throw new Error(`${launch.label}: Standardeingabe fehlt`);
118
+ if (!output) throw new Error(`${launch.label}: standard input is missing`);
119
119
  this.#connection = new JsonRpcConnection({
120
120
  label: launch.label,
121
121
  input: this.#input,
@@ -161,7 +161,7 @@ export class LanguageServerSession {
161
161
  },
162
162
  }),
163
163
  timeoutMs,
164
- () => timeoutError(launch.label, "initialisiert", timeoutMs),
164
+ () => timeoutError(launch.label, "initialized", timeoutMs),
165
165
  ) as { capabilities?: Record<string, unknown> };
166
166
  session.#serverCapabilities = result.capabilities ?? {};
167
167
  session.#connection.notify("initialized", {});
@@ -201,7 +201,7 @@ export class LanguageServerSession {
201
201
  return withTimeout(
202
202
  new Promise<unknown>((resolve, reject) => {
203
203
  if (this.#exitReason !== undefined) {
204
- reject(new Error(`${this.label} läuft nicht mehr (${this.#exitReason})${this.#stderrHint()}`));
204
+ reject(new Error(`${this.label} is no longer running (${this.#exitReason})${this.#stderrHint()}`));
205
205
  return;
206
206
  }
207
207
  const onExit = (error: Error) => {
@@ -226,7 +226,7 @@ export class LanguageServerSession {
226
226
  this.#assertRunning();
227
227
  const extension = path.extname(absolutePath).toLowerCase();
228
228
  const languageId = this.#launch.languages[extension];
229
- if (!languageId) throw new Error(`${this.label} kennt die Endung ${extension || "(keine)"} nicht`);
229
+ if (!languageId) throw new Error(`${this.label} does not know the extension ${extension || "(none)"}`);
230
230
  const uri = uriOf(absolutePath);
231
231
  const text = await readFile(absolutePath, "utf8");
232
232
  const settleMs = this.#launch.newFileSettleMs;
@@ -257,16 +257,16 @@ export class LanguageServerSession {
257
257
  await withTimeout(
258
258
  this.#connection.request("shutdown", null),
259
259
  SHUTDOWN_TIMEOUT_MS,
260
- () => timeoutError(this.label, "shutdown beantwortet", SHUTDOWN_TIMEOUT_MS),
260
+ () => timeoutError(this.label, "shutdown answered", SHUTDOWN_TIMEOUT_MS),
261
261
  );
262
262
  this.#connection.notify("exit", null);
263
263
  } catch {
264
264
  }
265
- await withTimeout(this.#service.finished, SHUTDOWN_TIMEOUT_MS, () => new Error("weiter")).catch(() => {
265
+ await withTimeout(this.#service.finished, SHUTDOWN_TIMEOUT_MS, () => new Error("continue")).catch(() => {
266
266
  this.#service.kill("SIGKILL");
267
267
  });
268
268
  await this.#service.finished.catch(() => undefined);
269
- this.#connection.close(new Error(`${this.label} wurde beendet`));
269
+ this.#connection.close(new Error(`${this.label} was ended`));
270
270
  }
271
271
 
272
272
  async #isYoung(absolutePath: string): Promise<boolean> {
@@ -277,7 +277,7 @@ export class LanguageServerSession {
277
277
  #ended(reason: string): void {
278
278
  if (this.#exitReason !== undefined) return;
279
279
  this.#exitReason = reason;
280
- const error = new Error(`${this.label} wurde beendet (${reason})${this.#stderrHint()}`);
280
+ const error = new Error(`${this.label} was ended (${reason})${this.#stderrHint()}`);
281
281
  this.#connection.close(error);
282
282
  this.#input.destroy();
283
283
  for (const listener of [...this.#exitListeners]) listener(error);
@@ -296,7 +296,7 @@ export class LanguageServerSession {
296
296
 
297
297
  #assertRunning(): void {
298
298
  if (this.#exitReason !== undefined) {
299
- throw new Error(`${this.label} läuft nicht mehr (${this.#exitReason})${this.#stderrHint()}`);
299
+ throw new Error(`${this.label} is no longer running (${this.#exitReason})${this.#stderrHint()}`);
300
300
  }
301
301
  }
302
302
 
@@ -345,7 +345,7 @@ export class LanguageServerSession {
345
345
  ...(identifier === undefined ? {} : { identifier }),
346
346
  }),
347
347
  Math.max(1, deadline - Date.now()),
348
- () => timeoutError(this.label, "Diagnostik geliefert", timeoutMs),
348
+ () => timeoutError(this.label, "diagnostics delivered", timeoutMs),
349
349
  ) as { kind?: string; items?: Diagnostic[] } | null;
350
350
  return result?.items ?? [];
351
351
  } catch (error) {
@@ -370,7 +370,7 @@ export class LanguageServerSession {
370
370
  entry !== undefined && entry.receivedAt >= closedAt;
371
371
  if (!confirmed(this.#published.get(uri)) && !await this.#waitForPublish(uri, confirmed, CLOSE_PUBLISH_TIMEOUT_MS)) {
372
372
  this.#assertRunning();
373
- throw timeoutError(this.label, "didClose bestätigt", CLOSE_PUBLISH_TIMEOUT_MS);
373
+ throw timeoutError(this.label, "didClose confirmed", CLOSE_PUBLISH_TIMEOUT_MS);
374
374
  }
375
375
  }
376
376
 
@@ -401,7 +401,7 @@ export class LanguageServerSession {
401
401
  entry !== undefined && entry.receivedAt >= sentAt && (entry.version === undefined || entry.version >= version);
402
402
  if (!matches(this.#published.get(uri)) && !await this.#waitForPublish(uri, matches, timeoutMs)) {
403
403
  this.#assertRunning();
404
- throw timeoutError(this.label, "Diagnostik geliefert", timeoutMs);
404
+ throw timeoutError(this.label, "diagnostics delivered", timeoutMs);
405
405
  }
406
406
  const settleDeadline = Date.now() + SETTLE_LIMIT_MS;
407
407
  while (Date.now() < settleDeadline && await this.#waitForPublish(uri, matches, SETTLE_MS)) continue;
@@ -52,7 +52,7 @@ const gitSolutions = async (context: WorkspaceProcessContext, extensions: readon
52
52
  "ls-files", "-z", "--cached", "--others", "--exclude-standard", "--",
53
53
  ...extensions.map((extension) => `:(icase)*${extension}`),
54
54
  ]);
55
- if (listed.code !== 0) throw new Error(`git ls-files ist mit Code ${listed.code} gescheitert`);
55
+ if (listed.code !== 0) throw new Error(`git ls-files failed with code ${listed.code}`);
56
56
  return listed.output.split("\0").filter(Boolean);
57
57
  };
58
58
 
@@ -70,7 +70,7 @@ const directorySolutions = async (root: string, extensions: readonly string[], r
70
70
  return nested.flat();
71
71
  };
72
72
 
73
- /** Ohne Git-Arbeitsverzeichnis durchsucht es den Ordner selbst, sechs Ebenen tief und ohne versteckte Ordner. */
73
+ /** Without a Git working directory it searches the folder itself, six levels deep and without hidden folders. */
74
74
  export const workspaceSolutions = async (
75
75
  context: WorkspaceProcessContext,
76
76
  extensions: readonly string[],
@@ -2,6 +2,7 @@ import { execFile, spawn, type ChildProcess } from "node:child_process";
2
2
  import { readdir, readFile } from "node:fs/promises";
3
3
  import type { Writable } from "node:stream";
4
4
  import { killProcessTree } from "@ragents/agent";
5
+ import { bashLaunch } from "./bash-launch.js";
5
6
 
6
7
  const PROCESS_GROUP_JOIN_TIMEOUT_MS = 5_000;
7
8
  const PROCESS_GROUP_POLL_MS = 25;
@@ -72,11 +73,38 @@ export const processExists = (pid: number): boolean => {
72
73
  }
73
74
  };
74
75
 
75
- /** Windows kennt keine Prozessgruppe und kein SIGKILL: der Baum geht über taskkill /T /F, und zwar ohne Wartezusage. */
76
+ /** Windows knows no process group and no SIGKILL: the tree goes through taskkill /T /F, and without a promise to wait. */
76
77
  export const stopProcessTree = (pid: number): void => {
77
78
  if (processExists(pid)) killProcessTree(pid);
78
79
  };
79
80
 
81
+ /** Marks the processes of a bash call on Windows: MSYS does not attach the children of the bash to its Windows process tree, so taskkill /T does not reach them. */
82
+ export const MSYS_CALL_ENV = "RAGENTS_BASH_CALL";
83
+
84
+ /** The Windows ids of all MSYS processes in the process groups in which a process carries the marker, even after the bash itself has ended. */
85
+ const msysGroupScript = (marker: string): string => [
86
+ "groups=' '",
87
+ `for d in /proc/[0-9]*; do tr '\\0' '\\n' < "$d/environ" 2>/dev/null | grep -qxF '${MSYS_CALL_ENV}=${marker}' && groups="$groups$(cat "$d/pgid") "; done`,
88
+ `for d in /proc/[0-9]*; do case "$groups" in *" $(cat "$d/pgid" 2>/dev/null) "*) cat "$d/winpid" 2>/dev/null;; esac; done`,
89
+ ].join("\n");
90
+
91
+ const execFileText = (file: string, args: readonly string[], env?: NodeJS.ProcessEnv): Promise<{ stdout: string; error: Error | null }> =>
92
+ new Promise((resolve) => {
93
+ execFile(file, [...args], { env, windowsHide: true, timeout: 15_000 }, (error, stdout) => resolve({ stdout, error }));
94
+ });
95
+
96
+ /** Ends on Windows everything that a bash call with this marker started, including the native trees below it. */
97
+ export const stopMsysCall = async (bash: string, env: NodeJS.ProcessEnv, marker: string): Promise<void> => {
98
+ const launch = bashLaunch({ bash, rg: undefined }, msysGroupScript(marker), env, "win32");
99
+ const listing = await execFileText(launch.command, launch.args, launch.env);
100
+ if (listing.error) throw new Error(`The processes of the bash call could not be determined: ${listing.error.message}`);
101
+ const winpids = [...new Set(listing.stdout.split(/\s+/).filter((pid) => /^\d+$/.test(pid)))];
102
+ if (winpids.length === 0) return;
103
+ await execFileText("taskkill", ["/F", "/T", ...winpids.flatMap((pid) => ["/PID", pid])]);
104
+ const alive = winpids.filter((pid) => processExists(Number(pid)));
105
+ if (alive.length > 0) throw new Error(`The processes ${alive.join(", ")} of the bash call keep running after taskkill`);
106
+ };
107
+
80
108
  const darwinProcessGroupExists = (pid: number): Promise<boolean> =>
81
109
  new Promise((resolve, reject) => {
82
110
  execFile("/bin/ps", ["-axo", "pgid=,stat="], { timeout: 5_000, maxBuffer: 4 * 1024 * 1024 }, (error, stdout) => {
@@ -86,7 +114,7 @@ const darwinProcessGroupExists = (pid: number): Promise<boolean> =>
86
114
  }
87
115
  const rows = stdout.split("\n").map((line) => /^\s*(\d+)\s*(\S*)\s*$/.exec(line)).filter((row) => row !== null);
88
116
  if (rows.length === 0) {
89
- reject(new Error(`macOS-Prozessgruppe ${pid}: ungültige Prozessliste: ${stdout.slice(0, 200)}`));
117
+ reject(new Error(`macOS process group ${pid}: invalid process list: ${stdout.slice(0, 200)}`));
90
118
  return;
91
119
  }
92
120
  resolve(rows.some((row) => Number(row[1]) === pid && !row[2].startsWith("Z")));
@@ -164,7 +192,7 @@ const joinProcessGroup = async (
164
192
  while (await processGroupExists(pid)) {
165
193
  if (Date.now() >= deadline) {
166
194
  throw new ProcessGroupJoinError(
167
- `${label}: Prozessgruppe ${pid} konnte nicht beendet werden`,
195
+ `${label}: process group ${pid} could not be ended`,
168
196
  );
169
197
  }
170
198
  await new Promise<void>((finish) => setTimeout(finish, PROCESS_GROUP_POLL_MS));
@@ -173,7 +201,7 @@ const joinProcessGroup = async (
173
201
  if (error instanceof ProcessGroupJoinError) throw error;
174
202
  const detail = error instanceof Error ? error.message : String(error);
175
203
  throw new ProcessGroupJoinError(
176
- `${label}: Prozessgruppe ${pid} konnte nicht geprüft werden: ${detail}`,
204
+ `${label}: process group ${pid} could not be checked: ${detail}`,
177
205
  );
178
206
  }
179
207
  };
@@ -184,7 +212,7 @@ export const runManagedProcess = (options: ManagedProcessOptions): Promise<Manag
184
212
  const reason = options.signal?.reason;
185
213
  return reason instanceof Error
186
214
  ? reason
187
- : new Error(`${options.label} wurde abgebrochen`);
215
+ : new Error(`${options.label} was cancelled`);
188
216
  };
189
217
  if (options.signal?.aborted) {
190
218
  reject(abortError());
@@ -219,7 +247,7 @@ export const runManagedProcess = (options: ManagedProcessOptions): Promise<Manag
219
247
  terminationTimer = setTimeout(() => {
220
248
  sendSignal("SIGKILL");
221
249
  processError ??= new ProcessGroupJoinError(
222
- `${options.label}: Prozessgruppe ${pid ?? "unbekannt"} hat die Beendigungsfrist überschritten`,
250
+ `${options.label}: process group ${pid ?? "unknown"} exceeded the termination grace period`,
223
251
  );
224
252
  child.stdout?.destroy();
225
253
  child.stderr?.destroy();
@@ -322,7 +350,7 @@ export const startManagedService = (options: ManagedServiceOptions): ManagedServ
322
350
  finished,
323
351
  exited: () => exited,
324
352
  send: (message) => new Promise<void>((resolve, reject) => {
325
- if (!child.connected) return reject(new Error(`${options.label}: IPC-Verbindung ist geschlossen`));
353
+ if (!child.connected) return reject(new Error(`${options.label}: IPC connection is closed`));
326
354
  child.send(message as import("node:child_process").Serializable, (error) => error ? reject(error) : resolve());
327
355
  }),
328
356
  };
@@ -1,32 +1,32 @@
1
1
  import type { WorkspaceProcessContext } from "./context.js";
2
2
  import type { OperationFootprint } from "./paths.js";
3
3
 
4
- /** Ein Aufruf einer Operation: der Run, die Eingabe und was der Aufrufer mitgibt. */
4
+ /** A call of an operation: the run, the input and what the caller passes along. */
5
5
  export interface WorkspaceOperationCall {
6
6
  readonly runId: string;
7
7
  readonly input: unknown;
8
8
  readonly toolCallId: string | undefined;
9
9
  readonly signal: AbortSignal | undefined;
10
- /** Meldet einen JSON-Wert als Fortschritt; fehlt, wenn der Aufrufer keinen Fortschritt will. */
10
+ /** Reports a JSON value as progress; missing if the caller wants no progress. */
11
11
  readonly progress: ((value: unknown) => void) | undefined;
12
12
  }
13
13
 
14
14
  export type WorkspaceOperation = (call: WorkspaceOperationCall) => Promise<unknown>;
15
15
 
16
- /** Ein Baustein des Executors: benannte Operationen und sein Anteil am Aufräumen. */
16
+ /** A building block of the executor: named operations and its share of the cleanup. */
17
17
  export interface WorkspaceExecutorModule {
18
18
  readonly operations: Readonly<Record<string, WorkspaceOperation>>;
19
- /** Der Fußabdruck einer Eingabe je Operation; ohne Eintrag spricht sie keine bestimmte Wurzel an. Wirft nie, auch nicht bei ungültiger Eingabe. */
19
+ /** The footprint of an input per operation; without an entry it addresses no specific root. Never throws, not even for invalid input. */
20
20
  readonly footprints?: Readonly<Record<string, (input: unknown) => OperationFootprint>>;
21
- /** Eine Anmerkung zu einer gerade geschriebenen Datei, etwa die Diagnostik eines Sprachservers. */
21
+ /** An annotation for a file just written, such as the diagnostics of a language server. */
22
22
  readonly annotate?: (runId: string, absolutePath: string) => Promise<string | undefined>;
23
- /** Gibt frei, was das Modul für einen Run hält. */
23
+ /** Releases what the module holds for a run. */
24
24
  readonly stopRun?: (runId: string) => Promise<void>;
25
- /** Gibt alles frei; danach ruft niemand das Modul mehr auf, es darf spätere Aufrufe mit Ursache ablehnen. */
25
+ /** Releases everything; afterwards nobody calls the module anymore, it may reject later calls with a cause. */
26
26
  readonly shutdown?: () => Promise<void>;
27
27
  }
28
28
 
29
- /** Was ein Modul vom Executor bekommt: den Kontext eines Runs auf dieser Maschine und die Anmerkungen aller Module. */
29
+ /** What a module gets from the executor: the context of a run on this machine and the annotations of all modules. */
30
30
  export interface WorkspaceModuleHost {
31
31
  readonly contextFor: (runId: string) => Promise<WorkspaceProcessContext>;
32
32
  readonly annotate: (runId: string, absolutePath: string) => Promise<string | undefined>;
@@ -8,13 +8,13 @@ import { runFolderModule } from "./run-folders.js";
8
8
  import { sandboxToolsModule } from "./sandbox-tools.js";
9
9
 
10
10
  export interface WorkspaceExecutorModuleOptions {
11
- /** Der neue Ordner eines Runs auf dieser Maschine; nur ein Arbeitsplatz kennt ihn, auf dem Server legt ihn der Host an. */
11
+ /** The new folder of a run on this machine; only a workspace knows it, on the server the host creates it. */
12
12
  runFolder?: (runId: string) => string;
13
- /** Die Beiträge der Plugins, gebaut für diese Maschine; Server und Arbeitsplatz bekommen dieselben. */
13
+ /** The contributions of the plugins, built for this machine; server and workspace get the same ones. */
14
14
  contributions: readonly WorkspaceExecutorParts[];
15
15
  }
16
16
 
17
- /** Die Module eines Executors: die eigenen und was die Beiträge der Plugins hinzufügen. */
17
+ /** The modules of an executor: its own and what the contributions of the plugins add. */
18
18
  export const workspaceExecutorModules = (options: WorkspaceExecutorModuleOptions): readonly WorkspaceModuleFactory[] => [
19
19
  sandboxToolsModule,
20
20
  languageServerModule(options.contributions.flatMap((parts) => parts.languageServers ?? [])),
@@ -4,12 +4,12 @@ import { WorkspaceOperationError } from "./errors.js";
4
4
 
5
5
  export interface ResolvedWorkspaceRoot {
6
6
  directory: string;
7
- /** `@name`, bei einer Wurzel unter einem gemeinsamen Alias `@name/<ordner>`. */
7
+ /** `@name`, for a root under a shared alias `@name/<folder>`. */
8
8
  alias?: string;
9
9
  environmentVariable?: string;
10
10
  }
11
11
 
12
- /** Welche Wurzeln die Eingabe einer Operation anspricht: die Aliasse zusätzlicher Wurzeln und ob ein Pfad ohne Alias die Wurzel des Runs nennt. */
12
+ /** Which roots the input of an operation addresses: the aliases of additional roots and whether a path without an alias names the root of the run. */
13
13
  export interface AddressedRoots {
14
14
  readonly aliases: readonly string[];
15
15
  readonly runRoot: boolean;
@@ -17,17 +17,17 @@ export interface AddressedRoots {
17
17
 
18
18
  export const NO_ROOTS: AddressedRoots = { aliases: [], runRoot: false };
19
19
 
20
- /** Was ein Aufrufer über eine Eingabe wissen muss, ohne ihre Form zu kennen: die Wurzeln, die sie anspricht, und die Laufzeit, die sie selbst verlangt. */
20
+ /** What a caller must know about an input without knowing its shape: the roots it addresses and the running time it requires itself. */
21
21
  export interface OperationFootprint {
22
22
  readonly roots: AddressedRoots;
23
23
  readonly durationMs?: number;
24
24
  }
25
25
 
26
- /** Der Alias, mit dem ein Pfad beginnt, ist sein erster Abschnitt, wenn der mit @ beginnt. */
26
+ /** The alias a path starts with is its first segment, if that starts with @. */
27
27
  export const aliasOf = (location: string): string | undefined =>
28
28
  location.startsWith("@") ? location.split("/")[0] : undefined;
29
29
 
30
- /** Die Wurzeln, die Felder einer Eingabe als Pfade nennen, eine Liste mit jedem Eintrag: ein Pfad mit Alias dessen Wurzel, jeder andere die des Runs. */
30
+ /** The roots that fields of an input name as paths, a list with every entry: a path with an alias its root, every other one the root of the run. */
31
31
  export const rootsOfFields = (input: unknown, ...keys: readonly string[]): AddressedRoots => {
32
32
  const fields: Readonly<Record<string, unknown>> = typeof input === "object" && input !== null ? input as Record<string, unknown> : {};
33
33
  const named = keys.flatMap((key) => [fields[key]].flat()).filter((entry): entry is string => typeof entry === "string");
@@ -35,7 +35,7 @@ export const rootsOfFields = (input: unknown, ...keys: readonly string[]): Addre
35
35
  return { aliases: [...new Set(aliases)], runRoot: named.some((entry) => aliasOf(entry) === undefined) };
36
36
  };
37
37
 
38
- /** Die Wurzel, die ein Pfad mit Alias nennt, und der Rest darunter; ohne passenden Alias keine. */
38
+ /** The root that a path with an alias names, and the rest below it; without a matching alias none. */
39
39
  export const aliasedRoot = (
40
40
  requested: string,
41
41
  aliases: Readonly<Record<string, string>>,
@@ -44,14 +44,14 @@ export const aliasedRoot = (
44
44
  return found && { directory: found[1], rest: requested.slice(found[0].length + 1) };
45
45
  };
46
46
 
47
- /** Nennt bei einem gemeinsamen Alias wie `@skills` auch den Ordner darunter, weil erst beide eine Wurzel bestimmen. */
47
+ /** For a shared alias like `@skills` also names the folder below it, because only both together determine a root. */
48
48
  export const unknownAliasError = (requested: string, aliases: Readonly<Record<string, string>>): WorkspaceOperationError => {
49
49
  const [first, second] = requested.split("/");
50
50
  const known = Object.keys(aliases);
51
51
  const named = second !== undefined && known.some((alias) => alias.startsWith(`${first}/`)) ? `${first}/${second}` : first;
52
52
  return new WorkspaceOperationError(
53
53
  "workspace-alias-unknown",
54
- `Unbekannter Arbeitsverzeichnis-Alias: ${named} (bekannt: ${known.length > 0 ? known.join(", ") : "keine"})`,
54
+ `Unknown working directory alias: ${named} (known: ${known.length > 0 ? known.join(", ") : "none"})`,
55
55
  400,
56
56
  );
57
57
  };
@@ -72,7 +72,7 @@ export const resolvedWorkspacePath = async (filename: string): Promise<string> =
72
72
  const code = (error as NodeJS.ErrnoException).code;
73
73
  if (code !== "ENOENT" && code !== "ENOTDIR") throw error;
74
74
  const info = await lstat(candidate).catch(() => undefined);
75
- if (info?.isSymbolicLink()) throw new Error(`Pfad außerhalb des Arbeitsverzeichnisses: ${filename}`);
75
+ if (info?.isSymbolicLink()) throw new Error(`Path outside the working directory: ${filename}`);
76
76
  const parent = path.dirname(candidate);
77
77
  if (parent === candidate) throw error;
78
78
  rest.unshift(path.basename(candidate));
@@ -81,7 +81,7 @@ export const resolvedWorkspacePath = async (filename: string): Promise<string> =
81
81
  }
82
82
  };
83
83
 
84
- /** Liegt der Pfad in der Wurzel oder ist er sie selbst; auch für eine Laufwerkswurzel wie `/` oder `C:\`. */
84
+ /** Whether the path lies in the root or is the root itself; also for a drive root like `/` or `C:\`. */
85
85
  export const containsWorkspacePath = (root: string, filename: string): boolean => {
86
86
  const relative = path.relative(root, filename);
87
87
  return relative === "" || (relative !== ".." && !relative.startsWith(`..${path.sep}`) && !path.isAbsolute(relative));
@@ -90,6 +90,6 @@ export const containsWorkspacePath = (root: string, filename: string): boolean =
90
90
  export const allowedWorkspacePath = async (filename: string, roots: readonly string[]): Promise<string> => {
91
91
  const absolute = await resolvedWorkspacePath(filename);
92
92
  const canonicalRoots = await Promise.all(roots.map(resolvedWorkspacePath));
93
- if (!canonicalRoots.some((root) => containsWorkspacePath(root, absolute))) throw new Error(`Pfad außerhalb des Arbeitsverzeichnisses: ${filename}`);
93
+ if (!canonicalRoots.some((root) => containsWorkspacePath(root, absolute))) throw new Error(`Path outside the working directory: ${filename}`);
94
94
  return absolute;
95
95
  };
@@ -1,16 +1,16 @@
1
1
  import type { WorkspaceProcessContext } from "./context.js";
2
2
 
3
- /** Ein Programm mit seinen Argumenten, so wie es gestartet wird. */
3
+ /** A program with its arguments, as it is started. */
4
4
  export interface ProcessLaunch {
5
5
  readonly command: string;
6
6
  readonly args: readonly string[];
7
7
  }
8
8
 
9
- /** Wie ein Executor die Prozesse eines Runs in seine Sandbox steckt; der Kontext trägt sie, jeder Start fragt sie. */
9
+ /** How an executor puts the processes of a run into its sandbox; the context carries it, every start asks it. */
10
10
  export interface ProcessSandbox {
11
11
  readonly wrap: (launch: ProcessLaunch) => Promise<ProcessLaunch>;
12
12
  }
13
13
 
14
- /** Der Start eines Prozesses im Kontext eines Runs: mit Sandbox eingepackt, ohne unverändert. */
14
+ /** The start of a process in the context of a run: wrapped with a sandbox, unchanged without one. */
15
15
  export const sandboxedLaunch = (context: WorkspaceProcessContext, launch: ProcessLaunch): Promise<ProcessLaunch> =>
16
16
  context.sandbox ? context.sandbox.wrap(launch) : Promise.resolve(launch);
@@ -11,17 +11,17 @@ export const PROCESS_OPERATIONS = {
11
11
  } as const;
12
12
 
13
13
  export interface ProcessModuleOptions {
14
- /** Die Prozesstabelle dieser Maschine; ohne Angabe die der Plattform, aufgelöst erst im Aufruf. */
14
+ /** The process table of this machine; without a value the one of the platform, resolved only at the call. */
15
15
  table?: () => ProcessTable;
16
16
  }
17
17
 
18
18
  const processIdOf = (input: unknown): string => {
19
19
  const value = (input as { processId?: unknown } | null)?.processId;
20
- if (typeof value !== "string") throw new WorkspaceOperationError("invalid-process", "Ungültige Prozessreferenz", 400);
20
+ if (typeof value !== "string") throw new WorkspaceOperationError("invalid-process", "Invalid process reference", 400);
21
21
  return value;
22
22
  };
23
23
 
24
- /** Die markierten Prozesse eines Runs auf dieser Maschine; ohne Prozesstabelle (Windows) räumt der Stopp nur die Bash-Bäume ab. */
24
+ /** The marked processes of a run on this machine; without a process table (Windows) the stop only clears the bash trees. */
25
25
  export const processModule = (options: ProcessModuleOptions = {}): WorkspaceModuleFactory => () => {
26
26
  const table = options.table ?? (() => processTableForPlatform());
27
27
  const cleansUp = options.table !== undefined || hasProcessTable();
@@ -45,8 +45,8 @@ const runCommand = async (file: string, args: string[], toleratedExitCodes: read
45
45
  } catch (error) {
46
46
  const failure = error as Error & { code?: number | string; stdout?: string; stderr?: string };
47
47
  if (typeof failure.code === "number" && toleratedExitCodes.includes(failure.code)) return failure.stdout ?? "";
48
- if (failure.code === "ENOENT") throw new Error(`${file} ist nicht installiert; die Prozessüberwachung braucht es`);
49
- throw new Error(`${file} ${args[0]} ist fehlgeschlagen: ${(failure.stderr || failure.message).trim()}`);
48
+ if (failure.code === "ENOENT") throw new Error(`${file} is not installed; the process monitor needs it`);
49
+ throw new Error(`${file} ${args[0]} failed: ${(failure.stderr || failure.message).trim()}`);
50
50
  }
51
51
  };
52
52
 
@@ -59,7 +59,7 @@ const MARKER_TOKEN = new RegExp(`(?:^|\\s)${RUN_MARKER_ENV}=(\\S+)`);
59
59
 
60
60
  export class ProcessChangedError extends Error {
61
61
  constructor(readonly pid: number) {
62
- super(`Prozess ${pid} hat sich während der Umgebungsabfrage geändert`);
62
+ super(`Process ${pid} changed during the environment query`);
63
63
  this.name = "ProcessChangedError";
64
64
  }
65
65
  }
@@ -67,7 +67,7 @@ export class ProcessChangedError extends Error {
67
67
  export const parseDarwinProcessTable = (text: string): ProcessRecord[] =>
68
68
  text.split("\n").filter((line) => line.trim() !== "").map((line) => {
69
69
  const match = DARWIN_TABLE_LINE.exec(line);
70
- if (!match) throw new Error(`Unlesbare Prozesszeile von ps: ${line}`);
70
+ if (!match) throw new Error(`Unreadable process line from ps: ${line}`);
71
71
  return {
72
72
  pid: Number(match[1]),
73
73
  ppid: Number(match[2]),
@@ -126,7 +126,7 @@ export const parseLsofListeners = (text: string): Map<number, WorkspaceProcessPo
126
126
  const darwinCommands = (text: string): Map<number, string> => new Map(text.split("\n")
127
127
  .filter((line) => line.trim() !== "").map((line) => {
128
128
  const match = /^\s*(\d+)\s+(.*)$/.exec(line);
129
- if (!match) throw new Error("Unlesbare Befehlszeile von ps");
129
+ if (!match) throw new Error("Unreadable command line from ps");
130
130
  return [Number(match[1]), match[2]];
131
131
  }));
132
132
 
@@ -191,7 +191,7 @@ const explainAccess = (error: unknown, pid: number, what: string): Error => {
191
191
  const code = (error as NodeJS.ErrnoException).code;
192
192
  if (code === "EACCES" || code === "EPERM") {
193
193
  return new Error(
194
- `${what} von Prozess ${pid} ist nicht lesbar (${code}); als root braucht die Prozessüberwachung CAP_SYS_PTRACE`,
194
+ `${what} of process ${pid} is not readable (${code}); as root the process monitor needs CAP_SYS_PTRACE`,
195
195
  );
196
196
  }
197
197
  return error instanceof Error ? error : new Error(String(error));
@@ -209,7 +209,7 @@ export const parseLinuxStat = (text: string): LinuxStat => {
209
209
  const open = text.indexOf("(");
210
210
  const close = text.lastIndexOf(")");
211
211
  const fields = open >= 0 && close > open ? text.slice(close + 2).trim().split(" ") : [];
212
- if (fields.length < 20) throw new Error(`Unlesbare stat-Zeile: ${text.trim()}`);
212
+ if (fields.length < 20) throw new Error(`Unreadable stat line: ${text.trim()}`);
213
213
  return {
214
214
  comm: text.slice(open + 1, close),
215
215
  state: fields[0],
@@ -260,7 +260,7 @@ export const addressFromHex = (hex: string): string => {
260
260
  if (groups.every((group) => group === 0)) return WILDCARD;
261
261
  return formatIpv6(groups);
262
262
  }
263
- throw new Error(`Unbekannte Adressform in /proc/net/tcp: ${hex}`);
263
+ throw new Error(`Unknown address form in /proc/net/tcp: ${hex}`);
264
264
  };
265
265
 
266
266
  export interface LinuxListener {
@@ -271,7 +271,7 @@ export interface LinuxListener {
271
271
  export const parseLinuxTcpTable = (text: string): LinuxListener[] =>
272
272
  text.split("\n").slice(1).filter((line) => line.trim() !== "").flatMap((line) => {
273
273
  const fields = line.trim().split(/\s+/);
274
- if (fields.length < 10) throw new Error(`Unlesbare Zeile in /proc/net/tcp: ${line.trim()}`);
274
+ if (fields.length < 10) throw new Error(`Unreadable line in /proc/net/tcp: ${line.trim()}`);
275
275
  if (fields[3] !== "0A") return [];
276
276
  const [hexAddress, hexPort] = fields[1].split(":");
277
277
  return [{ inode: fields[9], port: { port: parseInt(hexPort, 16), address: addressFromHex(hexAddress) } }];
@@ -297,7 +297,7 @@ const readLinuxRecord = async (proc: string, pid: number): Promise<ProcessRecord
297
297
  const parsed = parseLinuxStat(stat);
298
298
  if (parsed.state === "Z") return undefined;
299
299
  const uid = Number(/^Uid:\s+(\d+)/m.exec(status)?.[1]);
300
- if (!Number.isInteger(uid)) throw new Error(`${proc}/${pid}/status nennt keine Uid`);
300
+ if (!Number.isInteger(uid)) throw new Error(`${proc}/${pid}/status names no Uid`);
301
301
  const args = cmdline.toString("utf8").split("\0").filter((argument) => argument !== "");
302
302
  return {
303
303
  pid,
@@ -315,7 +315,7 @@ const readLinuxMarker = async (proc: string, pid: number, asRoot: boolean): Prom
315
315
  environ = await readFile(`${proc}/${pid}/environ`);
316
316
  } catch (error) {
317
317
  if (isGone(error) || (isDenied(error) && !asRoot)) return undefined;
318
- throw explainAccess(error, pid, "Die Umgebung");
318
+ throw explainAccess(error, pid, "The environment");
319
319
  }
320
320
  const prefix = `${RUN_MARKER_ENV}=`;
321
321
  const entry = environ.toString("utf8").split("\0").find((candidate) => candidate.startsWith(prefix));
@@ -344,7 +344,7 @@ const linuxSocketInodes = async (proc: string, pid: number, asRoot: boolean): Pr
344
344
  names = await readdir(directory);
345
345
  } catch (error) {
346
346
  if (isGone(error) || (isDenied(error) && !asRoot)) return [];
347
- throw explainAccess(error, pid, "Die Dateideskriptoren");
347
+ throw explainAccess(error, pid, "The file descriptors");
348
348
  }
349
349
  const inodes: string[] = [];
350
350
  for (const name of names) {
@@ -353,7 +353,7 @@ const linuxSocketInodes = async (proc: string, pid: number, asRoot: boolean): Pr
353
353
  target = await readlink(`${directory}/${name}`);
354
354
  } catch (error) {
355
355
  if (isGone(error) || (isDenied(error) && !asRoot)) continue;
356
- throw explainAccess(error, pid, "Die Dateideskriptoren");
356
+ throw explainAccess(error, pid, "The file descriptors");
357
357
  }
358
358
  const match = /^socket:\[(\d+)\]$/.exec(target);
359
359
  if (match) inodes.push(match[1]);
@@ -362,13 +362,13 @@ const linuxSocketInodes = async (proc: string, pid: number, asRoot: boolean): Pr
362
362
  };
363
363
 
364
364
  export interface LinuxProcessTableOptions {
365
- /** Der Ordner der Prozessdateien; Tests nennen einen eigenen. */
365
+ /** The folder of the process files; tests name their own. */
366
366
  readonly proc?: string;
367
- /** Als root ist eine gesperrte Umgebung ein fehlendes Recht; sonst hat sich ein eigener Prozess unlesbar gemacht. */
367
+ /** As root a locked environment is a missing right; otherwise one of our own processes made itself unreadable. */
368
368
  readonly asRoot?: boolean;
369
369
  }
370
370
 
371
- /** Ohne root liest die Tabelle nur eigene Prozesse; einer, der sich unlesbar gemacht hat (PR_SET_DUMPABLE, etwa ein Chrome-Helfer oder ssh-agent), trägt keinen erkennbaren Marker. */
371
+ /** Without root the table reads only our own processes; one that made itself unreadable (PR_SET_DUMPABLE, such as a Chrome helper or ssh-agent) carries no recognizable marker. */
372
372
  export const linuxProcessTable = (options: LinuxProcessTableOptions = {}): ProcessTable => {
373
373
  const proc = options.proc ?? "/proc";
374
374
  const asRoot = options.asRoot ?? process.getuid?.() === 0;
@@ -403,7 +403,7 @@ export const linuxProcessTable = (options: LinuxProcessTableOptions = {}): Proce
403
403
  };
404
404
  };
405
405
 
406
- /** Nur macOS und Linux haben eine Prozesstabelle, aus der sich Run-Marker lesen lassen. */
406
+ /** Only macOS and Linux have a process table from which run markers can be read. */
407
407
  export const hasProcessTable = (platform: NodeJS.Platform = process.platform): boolean =>
408
408
  platform === "darwin" || platform === "linux";
409
409
 
@@ -411,8 +411,8 @@ export const processTableForPlatform = (platform: NodeJS.Platform = process.plat
411
411
  if (platform === "darwin") return darwinProcessTable();
412
412
  if (platform === "linux") return linuxProcessTable();
413
413
  if (platform === "win32") {
414
- throw new Error("Unter Windows gibt es keine Prozesstabelle: für Runs, die auf diesem Rechner arbeiten, zeigt und beendet "
415
- + "die Prozessüberwachung nichts. Die Werkzeuge des Arbeitsbereichs brauchen sie nicht.");
414
+ throw new Error("There is no process table on Windows: for runs working on this machine the process monitor "
415
+ + "shows and ends nothing. The tools of the workspace do not need it.");
416
416
  }
417
- throw new Error(`Die Prozessüberwachung kennt die Plattform ${platform} nicht (nur darwin und linux)`);
417
+ throw new Error(`The process monitor does not know the platform ${platform} (only darwin and linux)`);
418
418
  };
@@ -22,7 +22,7 @@ interface Scan {
22
22
 
23
23
  const keyOf = (record: ProcessRecord): string => `${record.pid}:${record.startKey}`;
24
24
 
25
- /** Liest die markierten Prozesse dieser Maschine; gleichzeitige Abfragen mehrerer Runs teilen sich einen Tabellenscan. */
25
+ /** Reads the marked processes of this machine; concurrent queries of several runs share one table scan. */
26
26
  export class ProcessScanner {
27
27
  readonly #options: ProcessScannerOptions;
28
28
  readonly #now: () => Date;
@@ -52,7 +52,7 @@ export class ProcessScanner {
52
52
  ports,
53
53
  firstSeen: (record) => {
54
54
  const seen = scan.firstSeen.get(record.pid);
55
- if (!seen) throw new Error(`Prozess ${record.pid} ohne Erstsichtung`);
55
+ if (!seen) throw new Error(`Process ${record.pid} without a first sighting`);
56
56
  return seen;
57
57
  },
58
58
  }),
@@ -71,7 +71,7 @@ export class ProcessScanner {
71
71
  return uid === undefined || uid === 0 || record.uid === uid;
72
72
  }
73
73
 
74
- /** Die Umgebung eines Prozesses wird nur einmal gelesen; ein Fehler dabei merkt sich nichts. */
74
+ /** The environment of a process is read only once; an error while doing so is not remembered. */
75
75
  async #scan(): Promise<Scan> {
76
76
  const table = this.#options.table();
77
77
  const records = await table.list();