@schlenkr/ragents 0.1.10 → 0.1.12

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (748) hide show
  1. package/README.md +1 -1
  2. package/apps/server/package.json +1 -1
  3. package/apps/server/src/access-projection.ts +6 -6
  4. package/apps/server/src/access-service.ts +3 -3
  5. package/apps/server/src/access-session.ts +19 -19
  6. package/apps/server/src/api/contracts.ts +29 -29
  7. package/apps/server/src/api/core-methods.ts +17 -17
  8. package/apps/server/src/api/delivery.ts +2 -2
  9. package/apps/server/src/api/reference.ts +27 -27
  10. package/apps/server/src/api/rights.ts +18 -18
  11. package/apps/server/src/chat-handler.ts +5 -5
  12. package/apps/server/src/config-definition.ts +37 -10
  13. package/apps/server/src/config-file.ts +49 -49
  14. package/apps/server/src/config.ts +2 -0
  15. package/apps/server/src/data-directory.ts +2 -2
  16. package/apps/server/src/external-access.ts +1 -1
  17. package/apps/server/src/folder-install.ts +1 -1
  18. package/apps/server/src/help-files.ts +1 -1
  19. package/apps/server/src/host-api.json +6 -1
  20. package/apps/server/src/host-api.ts +3 -2
  21. package/apps/server/src/host-record.ts +3 -3
  22. package/apps/server/src/host-resolution-hooks.mjs +4 -4
  23. package/apps/server/src/host-version.ts +17 -17
  24. package/apps/server/src/host-web.ts +5 -5
  25. package/apps/server/src/main.ts +6 -6
  26. package/apps/server/src/missing-environment.ts +6 -6
  27. package/apps/server/src/parent-watch.ts +4 -4
  28. package/apps/server/src/plugin-build/build.ts +38 -38
  29. package/apps/server/src/plugin-build/host-api-names.ts +7 -7
  30. package/apps/server/src/plugin-build/plugin-description.ts +15 -15
  31. package/apps/server/src/plugin-build/typecheck.ts +1 -1
  32. package/apps/server/src/plugin-support/actor-programs/app-project.ts +19 -19
  33. package/apps/server/src/plugin-support/actor-programs/client-compiler.ts +4 -4
  34. package/apps/server/src/plugin-support/actor-programs/client-contracts.ts +11 -11
  35. package/apps/server/src/plugin-support/actor-programs/contract.ts +17 -17
  36. package/apps/server/src/plugin-support/actor-programs/runtime-libraries.ts +1 -1
  37. package/apps/server/src/plugin-support/actor-programs/workflow/index.ts +5 -5
  38. package/apps/server/src/plugin-support/actor-programs/workflow/prompt-reader.ts +2 -2
  39. package/apps/server/src/plugin-support/chat-display-policy.ts +2 -2
  40. package/apps/server/src/plugin-support/front-matter.ts +6 -6
  41. package/apps/server/src/plugin-support/http.ts +2 -2
  42. package/apps/server/src/plugin-support/language-server/contract.ts +8 -8
  43. package/apps/server/src/plugin-support/language-server/plugin.ts +2 -2
  44. package/apps/server/src/plugin-support/language-server/snapshot-method.ts +1 -1
  45. package/apps/server/src/plugin-support/language-server/tools.ts +11 -11
  46. package/apps/server/src/plugin-support/model-aliases.ts +30 -20
  47. package/apps/server/src/plugin-support/model-choice.ts +15 -15
  48. package/apps/server/src/plugin-support/model-completion.ts +44 -23
  49. package/apps/server/src/plugin-support/model-providers.ts +170 -0
  50. package/apps/server/src/plugin-support/model-upstreams.ts +1 -1
  51. package/apps/server/src/plugin-support/native-typescript-child.ts +4 -4
  52. package/apps/server/src/plugin-support/native-typescript-executor.ts +12 -12
  53. package/apps/server/src/plugin-support/plugin-config.ts +3 -3
  54. package/apps/server/src/plugin-support/plugin-folder.ts +2 -2
  55. package/apps/server/src/plugin-support/plugins-root.ts +2 -2
  56. package/apps/server/src/plugin-support/process-sandbox.ts +39 -39
  57. package/apps/server/src/plugin-support/product-model-settings-contract.ts +3 -3
  58. package/apps/server/src/plugin-support/product-model-settings.ts +10 -10
  59. package/apps/server/src/plugin-support/product-relay.ts +9 -9
  60. package/apps/server/src/plugin-support/product-start-options.ts +4 -4
  61. package/apps/server/src/plugin-support/prompt.ts +1 -1
  62. package/apps/server/src/plugin-support/provision.ts +8 -8
  63. package/apps/server/src/plugin-support/run-scripts.ts +17 -17
  64. package/apps/server/src/plugin-support/skills.ts +18 -18
  65. package/apps/server/src/plugin-support/start-entries-contract.ts +17 -17
  66. package/apps/server/src/plugin-support/start-options-contract.ts +5 -5
  67. package/apps/server/src/plugin-support/system-prompts.ts +11 -11
  68. package/apps/server/src/plugin-support/thinking-level.ts +2 -2
  69. package/apps/server/src/plugin-support/tool-availability.ts +2 -2
  70. package/apps/server/src/plugin-support/workspace-ownership.ts +5 -5
  71. package/apps/server/src/plugin-support/workspace-sandbox-host.ts +37 -37
  72. package/apps/server/src/plugin-support/zip.ts +7 -7
  73. package/apps/server/src/profile/bundle-manifest.ts +27 -27
  74. package/apps/server/src/profile/compose.ts +12 -7
  75. package/apps/server/src/profile/plugin-discovery.ts +14 -14
  76. package/apps/server/src/profile/provisioning.ts +5 -5
  77. package/apps/server/src/profile-target.ts +10 -10
  78. package/apps/server/src/protocol.ts +2 -2
  79. package/apps/server/src/provider.ts +62 -57
  80. package/apps/server/src/ragents/actor-chat-history.ts +8 -8
  81. package/apps/server/src/ragents/chat-text-positions.ts +2 -2
  82. package/apps/server/src/ragents/coordinator.ts +2 -2
  83. package/apps/server/src/ragents/engine.ts +23 -23
  84. package/apps/server/src/ragents/global-chat.ts +8 -8
  85. package/apps/server/src/ragents/host-services.ts +6 -3
  86. package/apps/server/src/ragents/journal-chat-events.ts +1 -1
  87. package/apps/server/src/ragents/run-owner.ts +2 -2
  88. package/apps/server/src/ragents/session.ts +49 -49
  89. package/apps/server/src/ragents/typescript-tools.ts +12 -12
  90. package/apps/server/src/ragents/workspace-runtime.ts +28 -28
  91. package/apps/server/src/rpc/dispatcher.ts +19 -19
  92. package/apps/server/src/rpc/http-transport.ts +11 -11
  93. package/apps/server/src/rpc/stdio-transport.ts +3 -3
  94. package/apps/server/src/run-preparation-input.ts +5 -5
  95. package/apps/server/src/run-preparation.ts +24 -24
  96. package/apps/server/src/run-transfer.ts +39 -39
  97. package/apps/server/src/server.ts +48 -48
  98. package/apps/server/src/settings.ts +1 -1
  99. package/apps/server/src/startup.ts +3 -3
  100. package/apps/server/src/title-compactor.ts +9 -9
  101. package/apps/server/src/title-settings.ts +3 -3
  102. package/apps/server/src/web-bundles.ts +2 -2
  103. package/apps/server/src/web-stylesheet.ts +2 -2
  104. package/apps/web/dist/assets/{highlighted-body-KPVGNVTW-BO4wLQtE.js → highlighted-body-KPVGNVTW-CpPi6QLr.js} +1 -1
  105. package/apps/web/dist/assets/main-DJmCHGzM.js +11 -0
  106. package/apps/web/dist/assets/mermaid-HWGCJPDP-q-mf1kLN.js +608 -0
  107. package/apps/web/dist/assets/runPanel-nk_aMxSn.js +21 -0
  108. package/apps/web/dist/help/guide-access.html +5 -5
  109. package/apps/web/dist/help/guide-access.md +2 -2
  110. package/apps/web/dist/help/guide-clients.html +53 -54
  111. package/apps/web/dist/help/guide-clients.md +50 -51
  112. package/apps/web/dist/help/guide-distributed.html +12 -7
  113. package/apps/web/dist/help/guide-distributed.md +9 -4
  114. package/apps/web/dist/help/guide-functions.html +3 -3
  115. package/apps/web/dist/help/guide-getting-started.html +24 -15
  116. package/apps/web/dist/help/guide-getting-started.md +22 -12
  117. package/apps/web/dist/help/guide-ideas.html +3 -3
  118. package/apps/web/dist/help/guide-plugins.html +5 -4
  119. package/apps/web/dist/help/guide-plugins.md +2 -1
  120. package/apps/web/dist/help/guide-programs.html +3 -3
  121. package/apps/web/dist/help/guide-runtime.html +6 -6
  122. package/apps/web/dist/help/guide-runtime.md +3 -3
  123. package/apps/web/dist/help/guide.html +3 -3
  124. package/apps/web/dist/help/index.html +196 -144
  125. package/apps/web/dist/help/mini-app.css +6 -0
  126. package/apps/web/dist/help/mini-app.js +14 -14
  127. package/apps/web/dist/host-web.json +91 -91
  128. package/apps/web/dist/index.html +3 -3
  129. package/apps/web/dist/run-panel.html +3 -3
  130. package/apps/web/package.json +1 -1
  131. package/apps/web/src/AccessContext.tsx +15 -15
  132. package/apps/web/src/App.tsx +13 -13
  133. package/apps/web/src/DiffCode.tsx +2 -2
  134. package/apps/web/src/HelpDialog.tsx +3 -3
  135. package/apps/web/src/Overview.tsx +13 -13
  136. package/apps/web/src/PluginActivation.ts +1 -1
  137. package/apps/web/src/PluginChat.tsx +15 -15
  138. package/apps/web/src/PluginFailureNotice.tsx +1 -1
  139. package/apps/web/src/PluginRegistry.tsx +44 -44
  140. package/apps/web/src/RunPreparationChat.tsx +11 -11
  141. package/apps/web/src/RunStore.ts +1 -1
  142. package/apps/web/src/SessionList.tsx +14 -14
  143. package/apps/web/src/SettingsModal.tsx +112 -112
  144. package/apps/web/src/StartOptions.tsx +11 -11
  145. package/apps/web/src/StartSelection.tsx +11 -11
  146. package/apps/web/src/StartTiles.tsx +8 -8
  147. package/apps/web/src/SurfaceShortcuts.tsx +3 -3
  148. package/apps/web/src/ThemeSettings.tsx +8 -8
  149. package/apps/web/src/TitleModelSettings.tsx +13 -13
  150. package/apps/web/src/WorkspacePanel.tsx +9 -9
  151. package/apps/web/src/access-session.ts +4 -4
  152. package/apps/web/src/access-token.ts +5 -5
  153. package/apps/web/src/actor-conversation.ts +3 -3
  154. package/apps/web/src/actor-programs/client-ui/DataTable.tsx +8 -8
  155. package/apps/web/src/actor-programs/client-ui/FilePicker.tsx +4 -4
  156. package/apps/web/src/actor-programs/client-ui/FlowDiagram.tsx +13 -13
  157. package/apps/web/src/actor-programs/client-ui/Viewers.tsx +4 -4
  158. package/apps/web/src/actor-programs/client-ui/WorkflowDiagram.tsx +1 -1
  159. package/apps/web/src/actor-programs/client-ui/file-contracts.d.ts +4 -4
  160. package/apps/web/src/actor-programs/client-ui/file-selection.ts +1 -1
  161. package/apps/web/src/actor-programs/client-ui/viewer-contracts.d.ts +3 -3
  162. package/apps/web/src/api.ts +7 -7
  163. package/apps/web/src/chat/QuasselHost.tsx +1 -1
  164. package/apps/web/src/chat/StoppedActorNotice.tsx +5 -5
  165. package/apps/web/src/chat/chat-target.ts +3 -3
  166. package/apps/web/src/chat/requests.ts +2 -2
  167. package/apps/web/src/chat/useAttachmentCapabilities.ts +2 -2
  168. package/apps/web/src/chat-view-settings.tsx +5 -6
  169. package/apps/web/src/diff-view.css +1 -1
  170. package/apps/web/src/highlighting.css +1 -1
  171. package/apps/web/src/language-server/language-server-plugin.tsx +30 -30
  172. package/apps/web/src/lib/labels.ts +6 -6
  173. package/apps/web/src/main.tsx +4 -4
  174. package/apps/web/src/offered-machines.ts +2 -2
  175. package/apps/web/src/page-opener.tsx +1 -1
  176. package/apps/web/src/panel/ConnectionsPage.tsx +23 -23
  177. package/apps/web/src/panel/LoginForm.tsx +6 -6
  178. package/apps/web/src/panel/PanelDialogs.tsx +22 -22
  179. package/apps/web/src/panel/PanelHeader.tsx +2 -2
  180. package/apps/web/src/panel/PanelPage.tsx +1 -1
  181. package/apps/web/src/panel/RunLine.tsx +4 -4
  182. package/apps/web/src/panel/RunsPage.tsx +15 -15
  183. package/apps/web/src/panel/StartPage.tsx +26 -26
  184. package/apps/web/src/panel/connection-state.ts +9 -9
  185. package/apps/web/src/panel/contract.ts +28 -28
  186. package/apps/web/src/panel.tsx +1 -1
  187. package/apps/web/src/plugin-bootstrap.ts +5 -5
  188. package/apps/web/src/product/ModelControl.tsx +3 -3
  189. package/apps/web/src/product/ProductModelSettings.tsx +16 -16
  190. package/apps/web/src/product/SystemPromptControl.tsx +11 -11
  191. package/apps/web/src/product/model-settings.ts +2 -2
  192. package/apps/web/src/rpc/client.ts +16 -16
  193. package/apps/web/src/rpc.ts +1 -1
  194. package/apps/web/src/run-overview.ts +1 -1
  195. package/apps/web/src/run-panel/RunPanelApp.tsx +39 -39
  196. package/apps/web/src/run-panel/RunPanelHeader.tsx +6 -6
  197. package/apps/web/src/run-panel/RunPanelMenu.tsx +6 -6
  198. package/apps/web/src/run-panel/RunPanelRail.tsx +4 -4
  199. package/apps/web/src/run-panel/RunPanelWorkspace.tsx +3 -3
  200. package/apps/web/src/run-panel/clipboard.ts +3 -3
  201. package/apps/web/src/run-panel/host-contract.ts +5 -5
  202. package/apps/web/src/run-panel/host.ts +15 -15
  203. package/apps/web/src/run-panel/input-bridge.ts +1 -1
  204. package/apps/web/src/run-panel/run-panel-location.ts +5 -5
  205. package/apps/web/src/run-panel/use-session-list.ts +1 -1
  206. package/apps/web/src/run-panel/workspace-state.ts +3 -3
  207. package/apps/web/src/run-panel.tsx +4 -4
  208. package/apps/web/src/run-preparation.ts +2 -2
  209. package/apps/web/src/run-view.ts +3 -3
  210. package/apps/web/src/settings-contributions.ts +32 -32
  211. package/apps/web/src/theme.ts +9 -9
  212. package/apps/web/src/title-model-settings.ts +6 -6
  213. package/apps/web/src/ui/ListDetail.tsx +9 -9
  214. package/apps/web/src/ui/dialog.tsx +2 -2
  215. package/apps/web/src/ui/modal-controller.ts +3 -3
  216. package/apps/web/src/ui/modal.tsx +2 -2
  217. package/apps/web/src/ui/popover.tsx +1 -1
  218. package/apps/web/src/ui/relative-time.ts +8 -8
  219. package/apps/web/src/ui/startup-notice.tsx +2 -2
  220. package/apps/web/src/ui/state-icon.tsx +1 -1
  221. package/apps/web/src/ui/state-vocabulary.ts +16 -16
  222. package/apps/web/src/ui/stop-button.tsx +2 -2
  223. package/bundles/ragents.activity/ragents-bundle.json +3 -3
  224. package/bundles/ragents.activity/web/classes.json +1 -1
  225. package/bundles/ragents.activity/web/index.js +1 -1
  226. package/bundles/ragents.activity/web/index.js.map +2 -2
  227. package/bundles/ragents.actor-programs/ragents-bundle.json +3 -3
  228. package/bundles/ragents.actor-programs/server/index.js +225 -225
  229. package/bundles/ragents.actor-programs/server/index.js.map +2 -2
  230. package/bundles/ragents.actor-programs/web/classes.json +1 -1
  231. package/bundles/ragents.actor-programs/web/index.js +1 -1
  232. package/bundles/ragents.actor-programs/web/index.js.map +3 -3
  233. package/bundles/ragents.ask/ragents-bundle.json +3 -3
  234. package/bundles/ragents.ask/server/chunks/{chunk-PDJO75SQ.js → chunk-YOV27MAR.js} +2 -2
  235. package/bundles/ragents.ask/server/chunks/chunk-YOV27MAR.js.map +7 -0
  236. package/bundles/ragents.ask/server/exports/server/contract.js +1 -1
  237. package/bundles/ragents.ask/server/index.js +23 -23
  238. package/bundles/ragents.ask/server/index.js.map +2 -2
  239. package/bundles/ragents.ask/web/chunks/{chunk-WFN4374U.js → chunk-D6NNB5DS.js} +1 -1
  240. package/bundles/ragents.ask/web/chunks/chunk-D6NNB5DS.js.map +7 -0
  241. package/bundles/ragents.ask/web/chunks/{chunk-MBRPS477.js → chunk-IQBHK7MV.js} +2 -2
  242. package/bundles/ragents.ask/web/chunks/{chunk-MBRPS477.js.map → chunk-IQBHK7MV.js.map} +3 -3
  243. package/bundles/ragents.ask/web/chunks/chunk-PWFIAMX4.js +2 -0
  244. package/bundles/ragents.ask/web/chunks/chunk-PWFIAMX4.js.map +7 -0
  245. package/bundles/ragents.ask/web/chunks/chunk-QHGKEESD.js +2 -0
  246. package/bundles/ragents.ask/web/chunks/chunk-QHGKEESD.js.map +7 -0
  247. package/bundles/ragents.ask/web/classes.json +1 -1
  248. package/bundles/ragents.ask/web/exports/ask-payload.js +1 -1
  249. package/bundles/ragents.ask/web/exports/web/QuestionCard.js +1 -1
  250. package/bundles/ragents.ask/web/exports/web/api.js +1 -1
  251. package/bundles/ragents.ask/web/index.js +1 -1
  252. package/bundles/ragents.ask/web/index.js.map +2 -2
  253. package/bundles/ragents.browser/executor/index.mjs +35 -35
  254. package/bundles/ragents.browser/executor/index.mjs.map +2 -2
  255. package/bundles/ragents.browser/ragents-bundle.json +3 -3
  256. package/bundles/ragents.browser/server/chunks/{chunk-CWLX4VA5.js → chunk-PYEISBNE.js} +1 -1
  257. package/bundles/ragents.browser/server/chunks/{chunk-CWLX4VA5.js.map → chunk-PYEISBNE.js.map} +1 -1
  258. package/bundles/ragents.browser/server/exports/server/contract.js +1 -1
  259. package/bundles/ragents.browser/server/index.js +31 -31
  260. package/bundles/ragents.browser/server/index.js.map +2 -2
  261. package/bundles/ragents.browser/skills/browser-testing/SKILL.md +30 -30
  262. package/bundles/ragents.documents/prompt.hbs +1 -1
  263. package/bundles/ragents.documents/ragents-bundle.json +3 -3
  264. package/bundles/ragents.documents/server/chunks/{chunk-QIECRZ7C.js → chunk-KMZWOVTI.js} +3 -3
  265. package/bundles/ragents.documents/server/chunks/{chunk-QIECRZ7C.js.map → chunk-KMZWOVTI.js.map} +2 -2
  266. package/bundles/ragents.documents/server/exports/contract.js +1 -1
  267. package/bundles/ragents.documents/server/index.js +26 -26
  268. package/bundles/ragents.documents/server/index.js.map +2 -2
  269. package/bundles/ragents.documents/web/classes.json +1 -1
  270. package/bundles/ragents.documents/web/index.js +1 -1
  271. package/bundles/ragents.documents/web/index.js.map +3 -3
  272. package/bundles/ragents.lsp-fsharp/executor/index.mjs +4 -4
  273. package/bundles/ragents.lsp-fsharp/executor/index.mjs.map +2 -2
  274. package/bundles/ragents.lsp-fsharp/ragents-bundle.json +3 -3
  275. package/bundles/ragents.lsp-fsharp/server/index.js +5 -5
  276. package/bundles/ragents.lsp-fsharp/server/index.js.map +2 -2
  277. package/bundles/ragents.lsp-fsharp/web/index.js +1 -1
  278. package/bundles/ragents.lsp-fsharp/web/index.js.map +2 -2
  279. package/bundles/ragents.lsp-roslyn/executor/index.mjs +3 -3
  280. package/bundles/ragents.lsp-roslyn/executor/index.mjs.map +2 -2
  281. package/bundles/ragents.lsp-roslyn/ragents-bundle.json +3 -3
  282. package/bundles/ragents.lsp-roslyn/server/index.js +17 -17
  283. package/bundles/ragents.lsp-roslyn/server/index.js.map +2 -2
  284. package/bundles/ragents.lsp-roslyn/web/index.js +1 -1
  285. package/bundles/ragents.lsp-roslyn/web/index.js.map +2 -2
  286. package/bundles/ragents.lsp-typescript/executor/index.mjs +2 -2
  287. package/bundles/ragents.lsp-typescript/executor/index.mjs.map +2 -2
  288. package/bundles/ragents.lsp-typescript/ragents-bundle.json +3 -3
  289. package/bundles/ragents.lsp-typescript/server/index.js.map +1 -1
  290. package/bundles/ragents.lsp-typescript/web/index.js +1 -1
  291. package/bundles/ragents.lsp-typescript/web/index.js.map +2 -2
  292. package/bundles/ragents.model-relay/ragents-bundle.json +8 -4
  293. package/bundles/ragents.model-relay/server/index.js +25 -21
  294. package/bundles/ragents.model-relay/server/index.js.map +2 -2
  295. package/bundles/ragents.orchestration/ragents-bundle.json +3 -3
  296. package/bundles/ragents.orchestration/server/index.js +28 -28
  297. package/bundles/ragents.orchestration/server/index.js.map +2 -2
  298. package/bundles/ragents.orchestration/web/chunks/{chunk-OSKPH6SZ.js → chunk-CFMJD5ZI.js} +2 -2
  299. package/bundles/ragents.orchestration/web/chunks/chunk-HOBLI364.js +2 -0
  300. package/bundles/ragents.orchestration/web/chunks/{chunk-OQYCNYXN.js.map → chunk-HOBLI364.js.map} +2 -2
  301. package/bundles/ragents.orchestration/web/chunks/{chunk-ODMMQGX2.js → chunk-UCIMT2R4.js} +2 -2
  302. package/bundles/ragents.orchestration/web/classes.json +1 -1
  303. package/bundles/ragents.orchestration/web/exports/web/program-slot.js +1 -1
  304. package/bundles/ragents.orchestration/web/exports/web/surface-entities.js +1 -1
  305. package/bundles/ragents.orchestration/web/index.js +8 -8
  306. package/bundles/ragents.orchestration/web/index.js.map +2 -2
  307. package/bundles/ragents.overseer/ragents-bundle.json +3 -3
  308. package/bundles/ragents.overseer/server/index.js +98 -98
  309. package/bundles/ragents.overseer/server/index.js.map +2 -2
  310. package/bundles/ragents.overseer/web/classes.json +1 -1
  311. package/bundles/ragents.overseer/web/index.js +1 -1
  312. package/bundles/ragents.overseer/web/index.js.map +2 -2
  313. package/bundles/ragents.processes/ragents-bundle.json +3 -3
  314. package/bundles/ragents.processes/server/index.js +11 -11
  315. package/bundles/ragents.processes/server/index.js.map +2 -2
  316. package/bundles/ragents.processes/web/classes.json +1 -1
  317. package/bundles/ragents.processes/web/index.js +3 -3
  318. package/bundles/ragents.processes/web/index.js.map +2 -2
  319. package/bundles/ragents.product/ragents-bundle.json +3 -3
  320. package/bundles/ragents.product/server/index.js +12 -13
  321. package/bundles/ragents.product/server/index.js.map +2 -2
  322. package/bundles/ragents.product/web/classes.json +1 -1
  323. package/bundles/ragents.product/web/index.js +1 -1
  324. package/bundles/ragents.product/web/index.js.map +2 -2
  325. package/bundles/ragents.profile-distribution/ragents-bundle.json +3 -3
  326. package/bundles/ragents.profile-distribution/server/index.js +31 -31
  327. package/bundles/ragents.profile-distribution/server/index.js.map +2 -2
  328. package/bundles/ragents.reference/ragents-bundle.json +3 -3
  329. package/bundles/ragents.reference/run-scripts/balcony-wizard/RUN.md +19 -19
  330. package/bundles/ragents.reference/run-scripts/balcony-wizard/actors/balcony-app/package.json +2 -2
  331. package/bundles/ragents.reference/run-scripts/balcony-wizard/actors/balcony-app/src/client.tsx +14 -14
  332. package/bundles/ragents.reference/run-scripts/balcony-wizard/actors/balcony-app/src/conversation.ts +2 -2
  333. package/bundles/ragents.reference/run-scripts/balcony-wizard/actors/balcony-app/tests/conversation.test.ts +49 -49
  334. package/bundles/ragents.reference/run-scripts/balcony-wizard/package.json +1 -1
  335. package/bundles/ragents.reference/run-scripts/balcony-wizard/src/server.ts +9 -9
  336. package/bundles/ragents.reference/run-scripts/balcony-wizard/tests/program.test.ts +9 -9
  337. package/bundles/ragents.reference/run-scripts/conversation-circle/RUN.md +7 -7
  338. package/bundles/ragents.reference/run-scripts/conversation-circle/package.json +1 -1
  339. package/bundles/ragents.reference/run-scripts/conversation-circle/src/server.ts +13 -13
  340. package/bundles/ragents.reference/run-scripts/conversation-circle/tests/helpers.ts +1 -1
  341. package/bundles/ragents.reference/run-scripts/conversation-circle/tests/program.test.ts +8 -8
  342. package/bundles/ragents.reference/run-scripts/learning-afternoon/RUN.md +16 -16
  343. package/bundles/ragents.reference/run-scripts/learning-afternoon/package.json +1 -1
  344. package/bundles/ragents.reference/run-scripts/learning-afternoon/prompts/experiment.md +1 -1
  345. package/bundles/ragents.reference/run-scripts/learning-afternoon/prompts/helper.md +3 -3
  346. package/bundles/ragents.reference/run-scripts/learning-afternoon/prompts/quiz.md +1 -1
  347. package/bundles/ragents.reference/run-scripts/learning-afternoon/src/server.ts +9 -9
  348. package/bundles/ragents.reference/run-scripts/learning-afternoon/tests/program.test.ts +39 -39
  349. package/bundles/ragents.reference/run-scripts/moderated-round/RUN.md +7 -7
  350. package/bundles/ragents.reference/run-scripts/moderated-round/package.json +1 -1
  351. package/bundles/ragents.reference/run-scripts/moderated-round/src/server.ts +9 -9
  352. package/bundles/ragents.reference/run-scripts/moderated-round/tests/helpers.ts +1 -1
  353. package/bundles/ragents.reference/run-scripts/moderated-round/tests/program.test.ts +6 -6
  354. package/bundles/ragents.reference/run-scripts/shared-actor-list/RUN.md +12 -12
  355. package/bundles/ragents.reference/run-scripts/shared-actor-list/actors/shared-list/package.json +2 -2
  356. package/bundles/ragents.reference/run-scripts/shared-actor-list/actors/shared-list/src/contract.ts +3 -3
  357. package/bundles/ragents.reference/run-scripts/shared-actor-list/actors/shared-list/tests/program.test.ts +4 -4
  358. package/bundles/ragents.reference/run-scripts/shared-actor-list/package.json +1 -1
  359. package/bundles/ragents.reference/run-scripts/shared-actor-list/src/server.ts +11 -11
  360. package/bundles/ragents.reference/run-scripts/shared-actor-list/tests/helpers.ts +1 -1
  361. package/bundles/ragents.reference/run-scripts/shared-actor-list/tests/program.test.ts +13 -13
  362. package/bundles/ragents.reference/run-scripts/word-game/RUN.md +18 -18
  363. package/bundles/ragents.reference/run-scripts/word-game/package.json +2 -2
  364. package/bundles/ragents.reference/run-scripts/word-game/src/client.tsx +1 -1
  365. package/bundles/ragents.reference/run-scripts/word-game/src/contract.ts +2 -2
  366. package/bundles/ragents.reference/run-scripts/word-game/src/server.ts +16 -16
  367. package/bundles/ragents.reference/run-scripts/word-game/tests/program.test.ts +39 -39
  368. package/bundles/ragents.reference/skills/100-shared-actor-list/SKILL.md +5 -5
  369. package/bundles/ragents.reference/skills/110-all-card-slots/SKILL.md +5 -5
  370. package/bundles/ragents.reference/skills/150-editorial-workbench/SKILL.md +5 -5
  371. package/bundles/ragents.reference/skills/160-learning-companion/SKILL.md +5 -5
  372. package/bundles/ragents.reference/skills/170-photo-collection/SKILL.md +5 -5
  373. package/bundles/ragents.reference/skills/180-decision-workbench/SKILL.md +5 -5
  374. package/bundles/ragents.reference/skills/190-review-queue/SKILL.md +5 -5
  375. package/bundles/ragents.reference/skills/20-circle-of-four/SKILL.md +5 -5
  376. package/bundles/ragents.reference/skills/200-typescript-diagnostics/SKILL.md +5 -5
  377. package/bundles/ragents.reference/skills/210-moderator-handover/SKILL.md +5 -5
  378. package/bundles/ragents.reference/skills/220-actor-approval-list/SKILL.md +5 -5
  379. package/bundles/ragents.reference/skills/230-shared-state-views/SKILL.md +5 -5
  380. package/bundles/ragents.reference/skills/240-live-result-list/SKILL.md +5 -5
  381. package/bundles/ragents.reference/skills/250-balcony-wizard/SKILL.md +5 -5
  382. package/bundles/ragents.reference/skills/30-llm-without-runtime-knowledge/SKILL.md +5 -5
  383. package/bundles/ragents.reference/skills/35-actor-input-fifo/SKILL.md +5 -5
  384. package/bundles/ragents.reference/skills/40-subscription-matrix/SKILL.md +5 -5
  385. package/bundles/ragents.reference/skills/50-subscription-removal/SKILL.md +5 -5
  386. package/bundles/ragents.reference/skills/60-stop-in-the-circle/SKILL.md +5 -5
  387. package/bundles/ragents.reference/skills/65-artifact-least-privilege/SKILL.md +5 -5
  388. package/bundles/ragents.reference/skills/70-headless-counter/SKILL.md +5 -5
  389. package/bundles/ragents.reference/skills/75-lsp-demo/SKILL.md +5 -5
  390. package/bundles/ragents.reference/skills/80-actor-text-analysis/SKILL.md +5 -5
  391. package/bundles/ragents.reference/skills/90-actor-notes/SKILL.md +5 -5
  392. package/bundles/ragents.reference/skills/95-hello-world/SKILL.md +5 -5
  393. package/bundles/ragents.reference/skills/decision-brief/SKILL.md +24 -24
  394. package/bundles/ragents.reference/skills/learning-sprint/SKILL.md +24 -24
  395. package/bundles/ragents.reference/web/classes.json +1 -1
  396. package/bundles/ragents.reference/web/index.js +1 -1
  397. package/bundles/ragents.reference/web/index.js.map +2 -2
  398. package/bundles/ragents.todo/ragents-bundle.json +3 -3
  399. package/bundles/ragents.todo/server/index.js +5 -8
  400. package/bundles/ragents.todo/server/index.js.map +2 -2
  401. package/bundles/ragents.todo/web/classes.json +1 -1
  402. package/bundles/ragents.todo/web/index.js +1 -1
  403. package/bundles/ragents.todo/web/index.js.map +2 -2
  404. package/bundles/ragents.transcript/ragents-bundle.json +3 -3
  405. package/bundles/ragents.transcript/server/index.js +11 -11
  406. package/bundles/ragents.transcript/server/index.js.map +2 -2
  407. package/bundles/ragents.watch/ragents-bundle.json +3 -3
  408. package/bundles/ragents.watch/server/index.js +48 -48
  409. package/bundles/ragents.watch/server/index.js.map +2 -2
  410. package/bundles/ragents.workspace/ragents-bundle.json +3 -3
  411. package/bundles/ragents.workspace/server/index.js +83 -83
  412. package/bundles/ragents.workspace/server/index.js.map +2 -2
  413. package/bundles/ragents.workspace/web/classes.json +1 -1
  414. package/bundles/ragents.workspace/web/index.js +1 -1
  415. package/bundles/ragents.workspace/web/index.js.map +2 -2
  416. package/package.json +4 -4
  417. package/packages/agent/dist/core/model-runtime.d.ts +7 -2
  418. package/packages/agent/dist/index.d.ts +1 -1
  419. package/packages/agent/dist/loop/agent-loop.d.ts +2 -2
  420. package/packages/agent/src/core/compaction/utils.ts +1 -1
  421. package/packages/agent/src/core/model-runtime.ts +45 -5
  422. package/packages/agent/src/index.ts +1 -1
  423. package/packages/agent/src/loop/agent-loop.ts +2 -2
  424. package/packages/ai/dist/models.d.ts +1 -0
  425. package/packages/ai/dist/models.generated.d.ts +4544 -983
  426. package/packages/ai/dist/providers/openrouter.models.d.ts +4544 -983
  427. package/packages/ai/src/api/ai-sdk.ts +33 -7
  428. package/packages/ai/src/api-registry.ts +1 -1
  429. package/packages/ai/src/index.ts +2 -2
  430. package/packages/ai/src/models.generated.ts +1 -1
  431. package/packages/ai/src/models.ts +1 -1
  432. package/packages/ai/src/providers/openrouter.models.ts +3725 -552
  433. package/packages/ragents/src/access.ts +12 -12
  434. package/packages/ragents/src/agents/actor-input.ts +33 -33
  435. package/packages/ragents/src/agents/catalog.ts +1 -1
  436. package/packages/ragents/src/agents/delivery.ts +17 -17
  437. package/packages/ragents/src/agents/plugins.ts +1 -1
  438. package/packages/ragents/src/agents/scheduler.ts +7 -7
  439. package/packages/ragents/src/agents/schemas.ts +1 -1
  440. package/packages/ragents/src/agents/tool-orientation.ts +4 -4
  441. package/packages/ragents/src/agents/tools.ts +20 -20
  442. package/packages/ragents/src/agents/toolset.ts +5 -5
  443. package/packages/ragents/src/agents/workspaces.ts +1 -1
  444. package/packages/ragents/src/domain/events.ts +1 -1
  445. package/packages/ragents/src/domain/model.ts +5 -5
  446. package/packages/ragents/src/drivers/agent-runtime.ts +1 -1
  447. package/packages/ragents/src/drivers/agent-turn.ts +4 -4
  448. package/packages/ragents/src/drivers/agent.ts +2 -2
  449. package/packages/ragents/src/drivers/attachments.ts +4 -4
  450. package/packages/ragents/src/http/contracts.ts +14 -14
  451. package/packages/ragents/src/http/methods.ts +6 -6
  452. package/packages/ragents/src/plugin-host.ts +119 -119
  453. package/packages/ragents/src/plugin-types.ts +16 -16
  454. package/packages/ragents/src/rpc/contract.ts +5 -5
  455. package/packages/ragents/src/rpc/contribution.ts +2 -2
  456. package/packages/ragents/src/rpc/peer.ts +11 -11
  457. package/packages/ragents/src/rpc/protocol.ts +2 -2
  458. package/packages/ragents/src/runtime/decisions/turns.ts +1 -1
  459. package/packages/ragents/src/runtime/journal-storage.ts +1 -1
  460. package/packages/ragents/src/runtime/journal.ts +10 -10
  461. package/packages/ragents/src/runtime/orchestration.ts +8 -8
  462. package/packages/ragents/src/runtime/stop.ts +2 -2
  463. package/packages/ragents/src/script/mediators.ts +35 -35
  464. package/packages/ragents/src/typescript/async-compiler.ts +14 -14
  465. package/packages/ragents/src/typescript/compiler-worker.ts +2 -2
  466. package/packages/ragents/src/typescript/compiler.ts +7 -7
  467. package/packages/ragents/src/typescript/snippet.ts +5 -5
  468. package/packages/workspace-executor/src/bash-launch.ts +13 -13
  469. package/packages/workspace-executor/src/commands.ts +18 -18
  470. package/packages/workspace-executor/src/context.ts +15 -15
  471. package/packages/workspace-executor/src/contributions.ts +44 -44
  472. package/packages/workspace-executor/src/errors.ts +1 -1
  473. package/packages/workspace-executor/src/executor.ts +16 -16
  474. package/packages/workspace-executor/src/files.ts +31 -31
  475. package/packages/workspace-executor/src/index.ts +1 -1
  476. package/packages/workspace-executor/src/language-server/contract.ts +2 -2
  477. package/packages/workspace-executor/src/language-server/diagnostics.ts +4 -4
  478. package/packages/workspace-executor/src/language-server/host.ts +36 -36
  479. package/packages/workspace-executor/src/language-server/json-rpc.ts +4 -4
  480. package/packages/workspace-executor/src/language-server/module.ts +11 -11
  481. package/packages/workspace-executor/src/language-server/roots.ts +3 -3
  482. package/packages/workspace-executor/src/language-server/session.ts +15 -15
  483. package/packages/workspace-executor/src/language-server/workspace-solutions.ts +3 -3
  484. package/packages/workspace-executor/src/managed-process.ts +12 -12
  485. package/packages/workspace-executor/src/module.ts +8 -8
  486. package/packages/workspace-executor/src/modules.ts +3 -3
  487. package/packages/workspace-executor/src/paths.ts +11 -11
  488. package/packages/workspace-executor/src/process-sandbox.ts +3 -3
  489. package/packages/workspace-executor/src/processes/module.ts +3 -3
  490. package/packages/workspace-executor/src/processes/process-table.ts +20 -20
  491. package/packages/workspace-executor/src/processes/scanner.ts +3 -3
  492. package/packages/workspace-executor/src/processes/snapshot.ts +2 -2
  493. package/packages/workspace-executor/src/processes/terminator.ts +13 -13
  494. package/packages/workspace-executor/src/run-folders.ts +3 -3
  495. package/packages/workspace-executor/src/safe-environment.ts +4 -4
  496. package/packages/workspace-executor/src/sandbox-tools.ts +28 -28
  497. package/packages/workspace-executor/src/session-ident.ts +2 -2
  498. package/packages/workspace-executor/src/shell-platform.ts +2 -2
  499. package/packages/workspace-executor/src/tools.ts +5 -5
  500. package/plugins/ragents.activity/web/ActivityHeader.tsx +3 -3
  501. package/plugins/ragents.activity/web/activity.ts +2 -2
  502. package/plugins/ragents.actor-programs/server/access-projections.ts +1 -1
  503. package/plugins/ragents.actor-programs/server/agent-tools.ts +2 -2
  504. package/plugins/ragents.actor-programs/server/capability-resolver.ts +3 -3
  505. package/plugins/ragents.actor-programs/server/controls-template.ts +46 -46
  506. package/plugins/ragents.actor-programs/server/controls-tool.ts +4 -4
  507. package/plugins/ragents.actor-programs/server/limits.ts +3 -3
  508. package/plugins/ragents.actor-programs/server/methods.ts +1 -1
  509. package/plugins/ragents.actor-programs/server/project-diagnostics.ts +8 -8
  510. package/plugins/ragents.actor-programs/server/routes.ts +8 -8
  511. package/plugins/ragents.actor-programs/server/runtime.ts +90 -90
  512. package/plugins/ragents.actor-programs/server/templates.ts +59 -59
  513. package/plugins/ragents.actor-programs/server/test-report.ts +5 -5
  514. package/plugins/ragents.actor-programs/server/tool-contributor.ts +1 -1
  515. package/plugins/ragents.actor-programs/web/ActorViewFrame.tsx +17 -17
  516. package/plugins/ragents.actor-programs/web/AppsPanel.tsx +26 -26
  517. package/plugins/ragents.actor-programs/web/EmbeddedApps.tsx +3 -3
  518. package/plugins/ragents.actor-programs/web/FullscreenHost.tsx +2 -2
  519. package/plugins/ragents.actor-programs/web/FunctionForm.tsx +16 -16
  520. package/plugins/ragents.actor-programs/web/ProgramSource.tsx +5 -5
  521. package/plugins/ragents.actor-programs/web/api.ts +36 -36
  522. package/plugins/ragents.actor-programs/web/bridge.ts +8 -8
  523. package/plugins/ragents.actor-programs/web/chat-state.ts +4 -4
  524. package/plugins/ragents.actor-programs/web/context.ts +1 -1
  525. package/plugins/ragents.actor-programs/web/function-input.ts +6 -6
  526. package/plugins/ragents.actor-programs/web/index.tsx +1 -1
  527. package/plugins/ragents.actor-programs/web/program-state.ts +4 -4
  528. package/plugins/ragents.ask/ask-payload.ts +1 -1
  529. package/plugins/ragents.ask/contract.ts +5 -5
  530. package/plugins/ragents.ask/server/answer-method.ts +1 -1
  531. package/plugins/ragents.ask/server/ask-service.ts +9 -9
  532. package/plugins/ragents.ask/server/ask-tool.ts +10 -10
  533. package/plugins/ragents.ask/server/contract.ts +5 -5
  534. package/plugins/ragents.ask/web/AskActionView.tsx +1 -1
  535. package/plugins/ragents.ask/web/QuestionCard.tsx +22 -22
  536. package/plugins/ragents.ask/web/index.tsx +2 -2
  537. package/plugins/ragents.browser/executor/contract.ts +6 -6
  538. package/plugins/ragents.browser/executor/index.ts +1 -1
  539. package/plugins/ragents.browser/executor/module.ts +6 -6
  540. package/plugins/ragents.browser/executor/pages.ts +32 -32
  541. package/plugins/ragents.browser/executor/playwright.ts +8 -8
  542. package/plugins/ragents.browser/provision.ts +7 -7
  543. package/plugins/ragents.browser/server/browser.ts +14 -14
  544. package/plugins/ragents.browser/server/contract.ts +1 -1
  545. package/plugins/ragents.browser/server/index.ts +1 -1
  546. package/plugins/ragents.browser/server/tools.ts +14 -14
  547. package/plugins/ragents.browser/skills/browser-testing/SKILL.md +30 -30
  548. package/plugins/ragents.documents/contract.ts +2 -2
  549. package/plugins/ragents.documents/prompt.hbs +1 -1
  550. package/plugins/ragents.documents/server/document-write-tool.ts +12 -12
  551. package/plugins/ragents.documents/server/files-route.ts +6 -6
  552. package/plugins/ragents.documents/server/show-document-tool.ts +26 -26
  553. package/plugins/ragents.documents/server/store.ts +1 -1
  554. package/plugins/ragents.documents/web/DocumentViewer.tsx +37 -37
  555. package/plugins/ragents.documents/web/index.tsx +11 -11
  556. package/plugins/ragents.lsp-fsharp/executor.ts +7 -7
  557. package/plugins/ragents.lsp-fsharp/provision.ts +7 -7
  558. package/plugins/ragents.lsp-roslyn/executor.ts +5 -5
  559. package/plugins/ragents.lsp-roslyn/provision.ts +4 -4
  560. package/plugins/ragents.lsp-roslyn/server/index.ts +5 -5
  561. package/plugins/ragents.lsp-roslyn/server/solution-on-start.ts +13 -13
  562. package/plugins/ragents.lsp-typescript/executor.ts +3 -3
  563. package/plugins/ragents.model-relay/server/config.ts +6 -2
  564. package/plugins/ragents.model-relay/server/index.ts +2 -2
  565. package/plugins/ragents.model-relay/server/relay.ts +23 -22
  566. package/plugins/ragents.orchestration/contract.ts +8 -8
  567. package/plugins/ragents.orchestration/server/index.ts +4 -4
  568. package/plugins/ragents.orchestration/server/run-stop-tool.ts +3 -3
  569. package/plugins/ragents.orchestration/server/surface-tool.ts +5 -5
  570. package/plugins/ragents.orchestration/tiled-layout.ts +11 -11
  571. package/plugins/ragents.orchestration/web/ActorChat.tsx +3 -3
  572. package/plugins/ragents.orchestration/web/ActorChatControls.tsx +4 -5
  573. package/plugins/ragents.orchestration/web/ActorChatPreview.tsx +1 -1
  574. package/plugins/ragents.orchestration/web/ActorPopout.tsx +1 -1
  575. package/plugins/ragents.orchestration/web/ActorShortcut.tsx +6 -6
  576. package/plugins/ragents.orchestration/web/ActorSurfaceControls.tsx +15 -15
  577. package/plugins/ragents.orchestration/web/Center.tsx +5 -5
  578. package/plugins/ragents.orchestration/web/DocumentsSection.tsx +2 -2
  579. package/plugins/ragents.orchestration/web/ExecutionsPanel.tsx +15 -15
  580. package/plugins/ragents.orchestration/web/FlowInspector.tsx +103 -103
  581. package/plugins/ragents.orchestration/web/JournalStatus.tsx +11 -11
  582. package/plugins/ragents.orchestration/web/MaterialBody.tsx +2 -2
  583. package/plugins/ragents.orchestration/web/StopRunButton.tsx +6 -6
  584. package/plugins/ragents.orchestration/web/TiledSurface.tsx +9 -9
  585. package/plugins/ragents.orchestration/web/actor-header-settings.ts +5 -5
  586. package/plugins/ragents.orchestration/web/constants.ts +2 -2
  587. package/plugins/ragents.orchestration/web/executions.ts +6 -6
  588. package/plugins/ragents.orchestration/web/format.ts +1 -1
  589. package/plugins/ragents.orchestration/web/index.tsx +2 -2
  590. package/plugins/ragents.orchestration/web/run-panel/AddresseeControl.tsx +7 -7
  591. package/plugins/ragents.orchestration/web/run-panel/AddresseeTree.tsx +8 -8
  592. package/plugins/ragents.orchestration/web/run-panel/RunPanel.tsx +22 -22
  593. package/plugins/ragents.orchestration/web/run-panel/RunPanelSettings.tsx +7 -7
  594. package/plugins/ragents.orchestration/web/run-panel/addressee-tree.ts +13 -13
  595. package/plugins/ragents.orchestration/web/run-panel/run-panel-actors.ts +3 -3
  596. package/plugins/ragents.orchestration/web/run-panel/run-panel-settings.ts +2 -2
  597. package/plugins/ragents.orchestration/web/run-panel/run-panel-startup.ts +3 -3
  598. package/plugins/ragents.orchestration/web/run-panel/run-panel-state.ts +7 -7
  599. package/plugins/ragents.orchestration/web/run-panel/sheet-status.ts +9 -9
  600. package/plugins/ragents.orchestration/web/surface-startup.ts +8 -8
  601. package/plugins/ragents.orchestration/web/surface-view-settings.ts +1 -1
  602. package/plugins/ragents.orchestration/web/tiled-view-settings.ts +1 -1
  603. package/plugins/ragents.overseer/contract.ts +20 -20
  604. package/plugins/ragents.overseer/server/api.ts +6 -6
  605. package/plugins/ragents.overseer/server/coordinator-prompt.ts +10 -10
  606. package/plugins/ragents.overseer/server/coordinator.ts +4 -4
  607. package/plugins/ragents.overseer/server/index.ts +24 -24
  608. package/plugins/ragents.overseer/server/orientation.ts +8 -8
  609. package/plugins/ragents.overseer/server/quick-answer.ts +9 -9
  610. package/plugins/ragents.overseer/server/run-directory.ts +5 -5
  611. package/plugins/ragents.overseer/server/settings.ts +6 -6
  612. package/plugins/ragents.overseer/server/user-location.ts +16 -16
  613. package/plugins/ragents.overseer/web/ModelSettings.tsx +9 -9
  614. package/plugins/ragents.overseer/web/index.tsx +20 -20
  615. package/plugins/ragents.overseer/web/model-settings.ts +1 -1
  616. package/plugins/ragents.overseer/web/quick-answers.ts +2 -2
  617. package/plugins/ragents.processes/contract.ts +5 -5
  618. package/plugins/ragents.processes/server/methods.ts +4 -4
  619. package/plugins/ragents.processes/server/observer.ts +8 -8
  620. package/plugins/ragents.processes/server/run-processes.ts +2 -2
  621. package/plugins/ragents.processes/web/ProcessHeader.tsx +10 -10
  622. package/plugins/ragents.processes/web/processes.ts +10 -10
  623. package/plugins/ragents.product/server/config.ts +1 -1
  624. package/plugins/ragents.product/server/index.ts +4 -4
  625. package/plugins/ragents.product/server/runtime.ts +9 -10
  626. package/plugins/ragents.product/web/index.tsx +1 -1
  627. package/plugins/ragents.profile-distribution/contract.ts +10 -10
  628. package/plugins/ragents.profile-distribution/server/archive.ts +20 -20
  629. package/plugins/ragents.profile-distribution/server/config.ts +2 -2
  630. package/plugins/ragents.profile-distribution/server/index.ts +4 -4
  631. package/plugins/ragents.reference/examples.ts +27 -27
  632. package/plugins/ragents.reference/run-scripts/balcony-wizard/RUN.md +19 -19
  633. package/plugins/ragents.reference/run-scripts/balcony-wizard/actors/balcony-app/package.json +2 -2
  634. package/plugins/ragents.reference/run-scripts/balcony-wizard/actors/balcony-app/src/client.tsx +14 -14
  635. package/plugins/ragents.reference/run-scripts/balcony-wizard/actors/balcony-app/src/conversation.ts +2 -2
  636. package/plugins/ragents.reference/run-scripts/balcony-wizard/actors/balcony-app/tests/conversation.test.ts +49 -49
  637. package/plugins/ragents.reference/run-scripts/balcony-wizard/package.json +1 -1
  638. package/plugins/ragents.reference/run-scripts/balcony-wizard/src/server.ts +9 -9
  639. package/plugins/ragents.reference/run-scripts/balcony-wizard/tests/program.test.ts +9 -9
  640. package/plugins/ragents.reference/run-scripts/conversation-circle/RUN.md +7 -7
  641. package/plugins/ragents.reference/run-scripts/conversation-circle/package.json +1 -1
  642. package/plugins/ragents.reference/run-scripts/conversation-circle/src/server.ts +13 -13
  643. package/plugins/ragents.reference/run-scripts/conversation-circle/tests/helpers.ts +1 -1
  644. package/plugins/ragents.reference/run-scripts/conversation-circle/tests/program.test.ts +8 -8
  645. package/plugins/ragents.reference/run-scripts/learning-afternoon/RUN.md +16 -16
  646. package/plugins/ragents.reference/run-scripts/learning-afternoon/package.json +1 -1
  647. package/plugins/ragents.reference/run-scripts/learning-afternoon/prompts/experiment.md +1 -1
  648. package/plugins/ragents.reference/run-scripts/learning-afternoon/prompts/helper.md +3 -3
  649. package/plugins/ragents.reference/run-scripts/learning-afternoon/prompts/quiz.md +1 -1
  650. package/plugins/ragents.reference/run-scripts/learning-afternoon/src/server.ts +9 -9
  651. package/plugins/ragents.reference/run-scripts/learning-afternoon/tests/program.test.ts +39 -39
  652. package/plugins/ragents.reference/run-scripts/moderated-round/RUN.md +7 -7
  653. package/plugins/ragents.reference/run-scripts/moderated-round/package.json +1 -1
  654. package/plugins/ragents.reference/run-scripts/moderated-round/src/server.ts +9 -9
  655. package/plugins/ragents.reference/run-scripts/moderated-round/tests/helpers.ts +1 -1
  656. package/plugins/ragents.reference/run-scripts/moderated-round/tests/program.test.ts +6 -6
  657. package/plugins/ragents.reference/run-scripts/shared-actor-list/RUN.md +12 -12
  658. package/plugins/ragents.reference/run-scripts/shared-actor-list/actors/shared-list/package.json +2 -2
  659. package/plugins/ragents.reference/run-scripts/shared-actor-list/actors/shared-list/src/contract.ts +3 -3
  660. package/plugins/ragents.reference/run-scripts/shared-actor-list/actors/shared-list/tests/program.test.ts +4 -4
  661. package/plugins/ragents.reference/run-scripts/shared-actor-list/package.json +1 -1
  662. package/plugins/ragents.reference/run-scripts/shared-actor-list/src/server.ts +11 -11
  663. package/plugins/ragents.reference/run-scripts/shared-actor-list/tests/helpers.ts +1 -1
  664. package/plugins/ragents.reference/run-scripts/shared-actor-list/tests/program.test.ts +13 -13
  665. package/plugins/ragents.reference/run-scripts/word-game/RUN.md +18 -18
  666. package/plugins/ragents.reference/run-scripts/word-game/package.json +2 -2
  667. package/plugins/ragents.reference/run-scripts/word-game/src/client.tsx +1 -1
  668. package/plugins/ragents.reference/run-scripts/word-game/src/contract.ts +2 -2
  669. package/plugins/ragents.reference/run-scripts/word-game/src/server.ts +16 -16
  670. package/plugins/ragents.reference/run-scripts/word-game/tests/program.test.ts +39 -39
  671. package/plugins/ragents.reference/skills/100-shared-actor-list/SKILL.md +5 -5
  672. package/plugins/ragents.reference/skills/110-all-card-slots/SKILL.md +5 -5
  673. package/plugins/ragents.reference/skills/150-editorial-workbench/SKILL.md +5 -5
  674. package/plugins/ragents.reference/skills/160-learning-companion/SKILL.md +5 -5
  675. package/plugins/ragents.reference/skills/170-photo-collection/SKILL.md +5 -5
  676. package/plugins/ragents.reference/skills/180-decision-workbench/SKILL.md +5 -5
  677. package/plugins/ragents.reference/skills/190-review-queue/SKILL.md +5 -5
  678. package/plugins/ragents.reference/skills/20-circle-of-four/SKILL.md +5 -5
  679. package/plugins/ragents.reference/skills/200-typescript-diagnostics/SKILL.md +5 -5
  680. package/plugins/ragents.reference/skills/210-moderator-handover/SKILL.md +5 -5
  681. package/plugins/ragents.reference/skills/220-actor-approval-list/SKILL.md +5 -5
  682. package/plugins/ragents.reference/skills/230-shared-state-views/SKILL.md +5 -5
  683. package/plugins/ragents.reference/skills/240-live-result-list/SKILL.md +5 -5
  684. package/plugins/ragents.reference/skills/250-balcony-wizard/SKILL.md +5 -5
  685. package/plugins/ragents.reference/skills/30-llm-without-runtime-knowledge/SKILL.md +5 -5
  686. package/plugins/ragents.reference/skills/35-actor-input-fifo/SKILL.md +5 -5
  687. package/plugins/ragents.reference/skills/40-subscription-matrix/SKILL.md +5 -5
  688. package/plugins/ragents.reference/skills/50-subscription-removal/SKILL.md +5 -5
  689. package/plugins/ragents.reference/skills/60-stop-in-the-circle/SKILL.md +5 -5
  690. package/plugins/ragents.reference/skills/65-artifact-least-privilege/SKILL.md +5 -5
  691. package/plugins/ragents.reference/skills/70-headless-counter/SKILL.md +5 -5
  692. package/plugins/ragents.reference/skills/75-lsp-demo/SKILL.md +5 -5
  693. package/plugins/ragents.reference/skills/80-actor-text-analysis/SKILL.md +5 -5
  694. package/plugins/ragents.reference/skills/90-actor-notes/SKILL.md +5 -5
  695. package/plugins/ragents.reference/skills/95-hello-world/SKILL.md +5 -5
  696. package/plugins/ragents.reference/skills/decision-brief/SKILL.md +24 -24
  697. package/plugins/ragents.reference/skills/learning-sprint/SKILL.md +24 -24
  698. package/plugins/ragents.reference/walkthroughs.ts +128 -128
  699. package/plugins/ragents.reference/web/StartGuides.tsx +23 -23
  700. package/plugins/ragents.todo/contract.ts +0 -3
  701. package/plugins/ragents.todo/server/todo-tool.ts +6 -6
  702. package/plugins/ragents.todo/web/TodoSection.tsx +1 -1
  703. package/plugins/ragents.transcript/server/transcript.ts +11 -11
  704. package/plugins/ragents.watch/server/condition.ts +4 -4
  705. package/plugins/ragents.watch/server/functions.ts +27 -27
  706. package/plugins/ragents.watch/server/observation.ts +2 -2
  707. package/plugins/ragents.watch/server/service.ts +14 -14
  708. package/plugins/ragents.workspace/client/transport.ts +1 -1
  709. package/plugins/ragents.workspace/client/workspace-client.ts +63 -63
  710. package/plugins/ragents.workspace/contract.ts +46 -46
  711. package/plugins/ragents.workspace/server/binding.ts +20 -20
  712. package/plugins/ragents.workspace/server/browse-route.ts +8 -8
  713. package/plugins/ragents.workspace/server/clients.ts +50 -50
  714. package/plugins/ragents.workspace/server/config.ts +7 -7
  715. package/plugins/ragents.workspace/server/index.ts +3 -3
  716. package/plugins/ragents.workspace/server/runtime.ts +26 -26
  717. package/plugins/ragents.workspace/server/shell-platform.ts +1 -1
  718. package/plugins/ragents.workspace/web/FileBrowser.tsx +10 -10
  719. package/plugins/ragents.workspace/web/WorkspaceBinding.tsx +24 -24
  720. package/plugins/ragents.workspace/web/index.tsx +1 -1
  721. package/ragents.config.core.ts +1 -1
  722. package/ragents.config.developer.ts +3 -3
  723. package/ragents.config.showcase.ts +2 -2
  724. package/scripts/agent/agent-cli.ts +96 -96
  725. package/scripts/agent/journal.ts +5 -5
  726. package/scripts/agent/turn-control.ts +4 -4
  727. package/scripts/package/build-package.ts +31 -31
  728. package/scripts/package/host-links.mjs +3 -3
  729. package/scripts/package/publish-package.ts +29 -29
  730. package/scripts/package/ragents.mjs +19 -19
  731. package/scripts/plugin/build-builtin-plugins.ts +5 -5
  732. package/scripts/plugin/plugin-cli.ts +14 -14
  733. package/scripts/provision/run-provision.ts +14 -15
  734. package/scripts/remote/connect.ts +49 -49
  735. package/scripts/remote/start.ts +18 -18
  736. package/scripts/workspace-client/run-workspace-client.ts +23 -23
  737. package/apps/web/dist/assets/main-DnnqWHkH.js +0 -11
  738. package/apps/web/dist/assets/mermaid-HWGCJPDP-BLLeth5_.js +0 -568
  739. package/apps/web/dist/assets/runPanel-DPm7s3KM.js +0 -21
  740. package/bundles/ragents.ask/server/chunks/chunk-PDJO75SQ.js.map +0 -7
  741. package/bundles/ragents.ask/web/chunks/chunk-4VXWWEG7.js +0 -2
  742. package/bundles/ragents.ask/web/chunks/chunk-4VXWWEG7.js.map +0 -7
  743. package/bundles/ragents.ask/web/chunks/chunk-VUBJDIKQ.js +0 -2
  744. package/bundles/ragents.ask/web/chunks/chunk-VUBJDIKQ.js.map +0 -7
  745. package/bundles/ragents.ask/web/chunks/chunk-WFN4374U.js.map +0 -7
  746. package/bundles/ragents.orchestration/web/chunks/chunk-OQYCNYXN.js +0 -2
  747. /package/bundles/ragents.orchestration/web/chunks/{chunk-OSKPH6SZ.js.map → chunk-CFMJD5ZI.js.map} +0 -0
  748. /package/bundles/ragents.orchestration/web/chunks/{chunk-ODMMQGX2.js.map → chunk-UCIMT2R4.js.map} +0 -0
@@ -48,23 +48,23 @@ export interface RegisteredWorkspaceRoot {
48
48
  ownershipDirectoryFor?: (runId: string) => string | Promise<string>;
49
49
  }
50
50
 
51
- /** Eine Wurzel des Servers, wie ein Prompt sie nennt: ihr Alias, ob Werkzeuge darin schreiben dürfen, und die Variable, die sie in einer Bash auf dem Server nennt. */
51
+ /** A root of the server as a prompt names it: its alias, whether tools may write in it, and the variable that names it in a bash on the server. */
52
52
  export interface ServerRootDescription {
53
53
  readonly alias: string;
54
54
  readonly writable: boolean;
55
55
  readonly environmentVariable?: string;
56
56
  }
57
57
 
58
- /** Der einzige Zugang der Plugins zum Arbeitsbereich eines Runs: eine Operation läuft beim Executor der Maschine, der die angesprochene Wurzel gehört. */
58
+ /** The plugins' only access to a run's workspace: an operation runs at the executor of the machine that owns the addressed root. */
59
59
  export interface SandboxServices {
60
60
  execute: (runId: string, operation: string, input: unknown, options?: WorkspaceExecuteOptions) => Promise<unknown>;
61
- /** Der Kontext für Arbeit, die auf dem Server läuft (TypeScript-Plattform, Actor-Programme); nie der Ordner eines Arbeitsplatzes. */
61
+ /** The context for work that runs on the server (TypeScript platform, actor programs); never the folder of a workstation. */
62
62
  serverProcessContextFor: (runId: string) => Promise<WorkspaceProcessContext>;
63
63
  registerWorkspaceRoot: (root: RegisteredWorkspaceRoot) => void;
64
64
  shutdown: (runId: string) => Promise<void>;
65
65
  }
66
66
 
67
- /** Ein fachlicher Fehler des Executors sieht beim Aufrufer aus wie jeder andere Fehler des Servers. */
67
+ /** A domain error of the executor looks to the caller like any other error of the server. */
68
68
  export const withDomainCause = (error: unknown): unknown =>
69
69
  error instanceof WorkspaceOperationError ? new DomainError(error.code, error.message, error.status) : error;
70
70
 
@@ -72,24 +72,24 @@ export const sandboxServicesToken = serviceToken<SandboxServices>("ragents.works
72
72
 
73
73
  export interface WorkspaceSandboxHostOptions {
74
74
  contributorName: string;
75
- /** Was die Plugins des Profils zum Executor dieses Servers beitragen; jeder Arbeitsplatz der Runs trägt dieselben Beiträge. */
75
+ /** What the profile's plugins contribute to this server's executor; every workstation of the runs carries the same contributions. */
76
76
  contributions: readonly WorkspaceExecutorParts[];
77
77
  workspaceFor: (runId: string) => Promise<SessionWorkspace>;
78
78
  identFor: (runId: string) => Promise<SessionIdent | undefined>;
79
79
  skillPaths: () => Promise<readonly string[]>;
80
80
  homeFor: (runId: string) => Promise<SandboxHomeEnvironment>;
81
81
  storageRootFor?: (runId: string) => string;
82
- /** Der Executor eines Runs, der nicht auf dem Server arbeitet; ohne Antwort führt der Executor des Servers aus. */
82
+ /** The executor of a run that does not work on the server; without an answer the server's executor executes. */
83
83
  executorFor?: (runId: string) => Promise<WorkspaceExecutor | undefined>;
84
- /** Der eigene Ordner eines solchen Runs auf dem Server, für Arbeit, die dort läuft. */
84
+ /** The own folder of such a run on the server, for work that runs there. */
85
85
  serverDirectoryFor?: (runId: string) => Promise<string>;
86
- /** Die Prozess-Sandbox, in der jeder Prozess des Executors dieses Servers startet; ohne sie laufen Prozesse ohne. */
86
+ /** The process sandbox in which every process of this server's executor starts; without it processes run without one. */
87
87
  processSandbox?: RunProcessSandboxes;
88
- /** Die Bash des Executors dieses Servers; unter Windows Pflicht, sonst ohne Angabe die des Systems. */
88
+ /** The bash of this server's executor; required on Windows, otherwise the system's when not set. */
89
89
  bash?: string;
90
- /** Das rg des Executors dieses Servers; ohne Angabe gilt eines im PATH. */
90
+ /** The rg of this server's executor; when not set, one on the PATH applies. */
91
91
  rg?: string;
92
- /** Die Zeitgrenze von bash in Sekunden für Aufrufe ohne eigene, auf jeder Maschine der Runs; ohne Angabe die des Werkzeugs. */
92
+ /** The bash time limit in seconds for calls without their own, on every machine of the runs; when not set, the tool's. */
93
93
  bashTimeoutSeconds?: number;
94
94
  }
95
95
 
@@ -102,7 +102,7 @@ const sandboxDescriptions: Readonly<Record<string, string>> = {
102
102
 
103
103
  const describeSandboxTool = (definition: AgentToolDefinition): AgentToolDefinition => {
104
104
  const description = sandboxDescriptions[definition.name];
105
- if (!description) throw new Error(`Das Sandbox-Werkzeug ${definition.name} hat keine Kurzbeschreibung`);
105
+ if (!description) throw new Error(`The sandbox tool ${definition.name} has no short description`);
106
106
  return { ...definition, description, longDescription: definition.description, nativeTool: true };
107
107
  };
108
108
 
@@ -119,39 +119,39 @@ interface StableRunParts {
119
119
  ident?: SessionIdent;
120
120
  home: SandboxHomeEnvironment;
121
121
  readOnlyRoots: readonly ResolvedWorkspaceRoot[];
122
- /** Der eigene Temp-Ordner des Runs in der Sandbox. */
122
+ /** The run's own temp folder in the sandbox. */
123
123
  temporary?: string;
124
124
  }
125
125
 
126
126
  const mixedRoots = (aliases: readonly string[]): DomainError => new DomainError(
127
127
  "workspace-roots-mixed",
128
- `Der Aufruf nennt ${aliases.join(", ")} auf dem Server und zugleich einen Pfad im Arbeitsbereich auf dem Arbeitsplatz; `
129
- + "ein Aufruf erreicht nur einen Rechner. Teile ihn in einen Aufruf je Rechner.",
128
+ `The call names ${aliases.join(", ")} on the server and at the same time a path in the workspace on the workstation; `
129
+ + "a call reaches only one machine. Split it into one call per machine.",
130
130
  400,
131
131
  );
132
132
 
133
- /** Die Ordner, die ein Arbeitsbereich der Prozess-Sandbox zusätzlich öffnet, getrennt nach Zugriff; ein relativer Pfad hätte auf dem Server keinen Ort. */
133
+ /** The folders a workspace additionally opens to the process sandbox, separated by access; a relative path would have no location on the server. */
134
134
  const sandboxFoldersWith = (folders: readonly SandboxFolder[], access: SandboxFolder["access"]): string[] =>
135
135
  folders.filter((folder) => folder.access === access).map((folder) => {
136
- if (!path.isAbsolute(folder.directory)) throw new Error(`Der Ordner ${folder.directory} für die Prozess-Sandbox muss absolut sein`);
136
+ if (!path.isAbsolute(folder.directory)) throw new Error(`The folder ${folder.directory} for the process sandbox must be absolute`);
137
137
  return folder.directory;
138
138
  });
139
139
 
140
- /** Ein nur lesbarer Pfad, den es nicht gibt, ist keine Wurzel; ein fehlender Skill-Ordner darf keinen Run verhindern. */
140
+ /** A read-only path that does not exist is not a root; a missing skill folder must not prevent a run. */
141
141
  const existingRoots = async (roots: readonly ResolvedWorkspaceRoot[]): Promise<ResolvedWorkspaceRoot[]> => {
142
142
  const resolved = await Promise.all(roots.map((root) =>
143
143
  realpath(root.directory).then((directory) => ({ ...root, directory }), () => undefined)));
144
144
  return resolved.filter((root) => root !== undefined);
145
145
  };
146
146
 
147
- /** Der Executor des Servers mit den Wurzeln des Servers; eine Operation mit Alias läuft dort, jede andere beim Executor der Bindung des Runs. */
147
+ /** The server's executor with the server's roots; an operation with an alias runs there, every other one at the executor of the run's binding. */
148
148
  export class WorkspaceSandboxHost implements SandboxServices {
149
149
  readonly #options: WorkspaceSandboxHostOptions;
150
150
  readonly #definitions: readonly AgentToolDefinition[];
151
151
  readonly #workspaceRoots: RegisteredWorkspaceRoot[] = [];
152
152
  readonly #local: WorkspaceOperationExecutor;
153
153
  readonly #stable = new Map<string, Promise<StableRunParts>>();
154
- /** Je Run der Dateistand, den ein Modell zuletzt gesehen hat, nach Actor, Modellkontext und Pfad; nur im Speicher, ein Verlust verlangt höchstens ein neues read. */
154
+ /** Per run the file state a model saw last, by actor, model context and path; only in memory, a loss requires at most a new read. */
155
155
  readonly #seen = new Map<string, Map<string, SeenFile>>();
156
156
 
157
157
  constructor(options: WorkspaceSandboxHostOptions) {
@@ -165,14 +165,14 @@ export class WorkspaceSandboxHost implements SandboxServices {
165
165
 
166
166
  registerWorkspaceRoot(root: RegisteredWorkspaceRoot): void {
167
167
  if (!root.id.trim() || this.#workspaceRoots.some((entry) => entry.id === root.id)) {
168
- throw new Error(`Arbeitsverzeichnis ${root.id} ist leer oder bereits registriert`);
168
+ throw new Error(`Working directory ${root.id} is empty or already registered`);
169
169
  }
170
170
  if (root.alias && (!/^@[a-z][a-z0-9-]*$/.test(root.alias) || root.alias === SKILLS_ALIAS
171
171
  || this.#workspaceRoots.some((entry) => entry.alias === root.alias))) {
172
- throw new Error(`Arbeitsverzeichnis-Alias ${root.alias} ist ungültig, dem Host vorbehalten oder bereits registriert`);
172
+ throw new Error(`Working directory alias ${root.alias} is invalid, reserved for the host or already registered`);
173
173
  }
174
174
  if (root.environmentVariable && (!/^RAGENTS_[A-Z_]+_DIR$/.test(root.environmentVariable) || this.#workspaceRoots.some((entry) => entry.environmentVariable === root.environmentVariable))) {
175
- throw new Error(`Arbeitsverzeichnis-Variable ${root.environmentVariable} ist ungültig oder bereits registriert`);
175
+ throw new Error(`Working directory variable ${root.environmentVariable} is invalid or already registered`);
176
176
  }
177
177
  this.#workspaceRoots.push(root);
178
178
  }
@@ -181,7 +181,7 @@ export class WorkspaceSandboxHost implements SandboxServices {
181
181
  const roots = await Promise.all(this.#workspaceRoots.map(async (entry) => {
182
182
  const directory = await entry.directoryFor(runId);
183
183
  if (directory === undefined) return undefined;
184
- if (!path.isAbsolute(directory)) throw new Error(`Arbeitsverzeichnis ${entry.id} muss absolut sein`);
184
+ if (!path.isAbsolute(directory)) throw new Error(`Working directory ${entry.id} must be absolute`);
185
185
  if (ident) await syncWorkspaceOwnership(await entry.ownershipDirectoryFor?.(runId) ?? directory, {
186
186
  ...ident, storageRoot: this.#options.storageRootFor?.(runId),
187
187
  });
@@ -190,7 +190,7 @@ export class WorkspaceSandboxHost implements SandboxServices {
190
190
  return roots.filter((root) => root !== undefined);
191
191
  }
192
192
 
193
- /** Die Wurzeln des Servers mit Alias, die ein Run neben seinem Arbeitsbereich erreicht: die registrierten und die Skill-Ordner. */
193
+ /** The server's roots with an alias that a run reaches besides its workspace: the registered ones and the skill folders. */
194
194
  async serverRoots(): Promise<readonly ServerRootDescription[]> {
195
195
  const registered = this.#workspaceRoots.flatMap(({ alias, environmentVariable }) => alias === undefined ? [] : [{
196
196
  alias, writable: true, ...(environmentVariable === undefined ? {} : { environmentVariable }),
@@ -199,15 +199,15 @@ export class WorkspaceSandboxHost implements SandboxServices {
199
199
  return [...registered, ...skills];
200
200
  }
201
201
 
202
- /** Bei einem Run mit eigenem Executor ein Ordner des Runs auf dem Server, sonst derselbe Kontext wie für seine Werkzeuge. */
202
+ /** For a run with its own executor a folder of the run on the server, otherwise the same context as for its tools. */
203
203
  async serverProcessContextFor(runId: string): Promise<WorkspaceProcessContext> {
204
204
  if (!await this.#options.executorFor?.(runId)) return this.#contextFor(runId);
205
205
  const serverDirectoryFor = this.#options.serverDirectoryFor;
206
- if (!serverDirectoryFor) throw new Error(`Der Run ${runId} arbeitet nicht auf dem Server, und der Sandbox-Host kennt keinen Serverordner für ihn`);
206
+ if (!serverDirectoryFor) throw new Error(`The run ${runId} does not work on the server, and the sandbox host knows no server folder for it`);
207
207
  return this.#contextFor(runId, await serverDirectoryFor(runId));
208
208
  }
209
209
 
210
- /** Der Kontext des Executors dieses Servers; ohne eigenen Ordner der Arbeitsbereich selbst, der dafür auf dem Server liegen muss. */
210
+ /** The context of this server's executor; without its own folder the workspace itself, which must then lie on the server. */
211
211
  async #contextFor(runId: string, serverDirectory?: string): Promise<WorkspaceProcessContext> {
212
212
  const workspace = await this.#options.workspaceFor(runId);
213
213
  const { ident, home, readOnlyRoots, temporary } = await this.#stableParts(runId, workspace);
@@ -245,18 +245,18 @@ export class WorkspaceSandboxHost implements SandboxServices {
245
245
  });
246
246
  }
247
247
 
248
- /** Der Temp-Ordner eines Runs liegt in seiner Ablage, damit er mit dem Run verschwindet und kein anderer Run ihn sieht. */
248
+ /** A run's temp folder lies in its storage so that it vanishes with the run and no other run sees it. */
249
249
  async #temporaryFor(runId: string, ident: SessionIdent | undefined): Promise<string | undefined> {
250
250
  if (!this.#options.processSandbox) return undefined;
251
251
  const storageRoot = this.#options.storageRootFor?.(runId);
252
- if (!storageRoot) throw new Error(`Die Prozess-Sandbox braucht die Ablage des Runs ${runId} für seinen Temp-Ordner`);
252
+ if (!storageRoot) throw new Error(`The process sandbox needs the storage of the run ${runId} for its temp folder`);
253
253
  const directory = path.join(storageRoot, "tmp");
254
254
  await mkdir(directory, { recursive: true });
255
255
  if (ident) await syncWorkspaceOwnership(directory, { ...ident, storageRoot });
256
256
  return realpath(directory);
257
257
  }
258
258
 
259
- /** Kennung, Heimatordner und nur lesbare Wurzeln stehen je Run fest; nur sie werden gemerkt. */
259
+ /** Identity, home folder and read-only roots are fixed per run; only they are remembered. */
260
260
  #stableParts(runId: string, workspace: SessionWorkspace): Promise<StableRunParts> {
261
261
  const known = this.#stable.get(runId);
262
262
  if (known) return known;
@@ -301,7 +301,7 @@ export class WorkspaceSandboxHost implements SandboxServices {
301
301
  };
302
302
  }
303
303
 
304
- /** Die Laufzeit, die eine Eingabe selbst verlangt, gilt, wenn der Aufrufer keine nennt; sie verlängert nur das Warten auf einen entfernten Executor. */
304
+ /** The duration an input asks for itself applies when the caller names none; it only extends the wait for a remote executor. */
305
305
  async execute(runId: string, operation: string, input: unknown, options: WorkspaceExecuteOptions = {}): Promise<unknown> {
306
306
  try {
307
307
  const { roots, durationMs } = this.#local.footprintOf(operation, input);
@@ -313,7 +313,7 @@ export class WorkspaceSandboxHost implements SandboxServices {
313
313
  }
314
314
  }
315
315
 
316
- /** Auch ein Run mit eigenem Executor hat auf dem Server markierte Prozesse der TypeScript-Plattform; beide Executoren räumen ab. */
316
+ /** A run with its own executor also has marked TypeScript platform processes on the server; both executors clean up. */
317
317
  async shutdown(runId: string): Promise<void> {
318
318
  this.#stable.delete(runId);
319
319
  this.#seen.delete(runId);
@@ -329,7 +329,7 @@ export class WorkspaceSandboxHost implements SandboxServices {
329
329
  return this.#local.shutdown();
330
330
  }
331
331
 
332
- /** Aliasse nennen Wurzeln des Servers, jeder andere Pfad die Wurzel des Runs auf der Maschine seiner Bindung; ohne Alias entscheidet die Bindung. */
332
+ /** Aliases name roots of the server, every other path the run's root on the machine of its binding; without an alias the binding decides. */
333
333
  async #executorFor(runId: string, { aliases, runRoot }: AddressedRoots): Promise<WorkspaceExecutor> {
334
334
  const bound = await this.#options.executorFor?.(runId);
335
335
  if (!bound || aliases.length === 0) return bound ?? this.#local;
@@ -342,7 +342,7 @@ export class WorkspaceSandboxHost implements SandboxServices {
342
342
  const described = describeSandboxTool(definition);
343
343
  const proxy = {
344
344
  ...described,
345
- // Die Vorgaben des Schemas, etwa die Zeitgrenze von bash, setzt der Server ein; so gilt auf jeder Maschine, was das Modell im Schema sieht.
345
+ // The server fills in the schema defaults, such as the bash time limit; so what the model sees in the schema applies on every machine.
346
346
  execute: (toolCallId: string, params: unknown, signal: AbortSignal | undefined) =>
347
347
  this.execute(context.runId, described.name, Value.Default(described.parameters, structuredClone(params)), {
348
348
  toolCallId,
@@ -356,7 +356,7 @@ export class WorkspaceSandboxHost implements SandboxServices {
356
356
  }));
357
357
  }
358
358
 
359
- /** Ein direkter Aufruf des Modells gibt den Stand mit, den es von der Datei gesehen hat, und merkt sich den neuen; ein Aufruf aus TypeScript arbeitet ohne. */
359
+ /** A direct call of the model passes the state it has seen of the file and remembers the new one; a call from TypeScript works without it. */
360
360
  async #fileToolCall(runId: string, name: string, scope: ToolScope, toolCallId: string, input: { path: string }): Promise<string> {
361
361
  const options = { toolCallId, ...(scope.signal ? { signal: scope.signal } : {}) };
362
362
  if (scope.modelContext === undefined) return textOf(await this.execute(runId, name, input, options) as ToolOutput);
@@ -364,7 +364,7 @@ export class WorkspaceSandboxHost implements SandboxServices {
364
364
  const key = [scope.caller.actorId, scope.modelContext, path.posix.normalize(input.path)].join("\0");
365
365
  const result = await this.execute(runId, name, { ...input, seen: known.get(key) ?? null }, options) as ToolOutput & { details?: { seen?: SeenFile } };
366
366
  const seen = result.details?.seen;
367
- if (!seen) throw new Error(`Der Executor meldet nach ${name} keinen Dateistand; Server und Arbeitsplatz brauchen denselben Executor-Stand`);
367
+ if (!seen) throw new Error(`The executor reports no file state after ${name}; server and workstation need the same executor version`);
368
368
  this.#seen.set(runId, known.set(key, seen));
369
369
  return textOf(result);
370
370
  }
@@ -15,16 +15,16 @@ const endOffset = (archive: Buffer): number => {
15
15
  for (let offset = archive.byteLength - 22; offset >= first; offset -= 1) {
16
16
  if (archive.readUInt32LE(offset) === END_OF_CENTRAL_DIRECTORY) return offset;
17
17
  }
18
- throw new Error("Das Archiv hat kein Ende des Zentralverzeichnisses; es ist keine ZIP-Datei");
18
+ throw new Error("The archive has no end of central directory; it is not a ZIP file");
19
19
  };
20
20
 
21
21
  const contentOf = (archive: Buffer, localOffset: number, compression: number, compressedSize: number): Buffer => {
22
- if (archive.readUInt32LE(localOffset) !== LOCAL_FILE_HEADER) throw new Error(`Der lokale Eintrag bei ${localOffset} fehlt im Archiv`);
22
+ if (archive.readUInt32LE(localOffset) !== LOCAL_FILE_HEADER) throw new Error(`The local entry at ${localOffset} is missing from the archive`);
23
23
  const start = localOffset + 30 + archive.readUInt16LE(localOffset + 26) + archive.readUInt16LE(localOffset + 28);
24
24
  const raw = archive.subarray(start, start + compressedSize);
25
25
  if (compression === 0) return Buffer.from(raw);
26
26
  if (compression === 8) return inflateRawSync(raw);
27
- throw new Error(`Das Archiv verwendet die unbekannte Kompression ${compression}`);
27
+ throw new Error(`The archive uses the unknown compression ${compression}`);
28
28
  };
29
29
 
30
30
  interface DirectoryEntry {
@@ -34,20 +34,20 @@ interface DirectoryEntry {
34
34
  readonly localOffset: number;
35
35
  }
36
36
 
37
- /** Liest das Zentralverzeichnis; Zip64 und Verschlüsselung sind harte Fehler. */
37
+ /** Reads the central directory; Zip64 and encryption are hard errors. */
38
38
  const readDirectory = (archive: Buffer): readonly DirectoryEntry[] => {
39
39
  const end = endOffset(archive);
40
40
  const count = archive.readUInt16LE(end + 10);
41
41
  const directory = archive.readUInt32LE(end + 16);
42
- if (count === 0xffff || directory === 0xffffffff) throw new Error("Das Archiv ist Zip64; diese Form wird nicht gelesen");
42
+ if (count === 0xffff || directory === 0xffffffff) throw new Error("The archive is Zip64; this form is not read");
43
43
  const entries: DirectoryEntry[] = [];
44
44
  let offset = directory;
45
45
  for (let index = 0; index < count; index += 1) {
46
- if (archive.readUInt32LE(offset) !== CENTRAL_FILE_HEADER) throw new Error(`Der Verzeichniseintrag ${index} fehlt im Archiv`);
46
+ if (archive.readUInt32LE(offset) !== CENTRAL_FILE_HEADER) throw new Error(`The directory entry ${index} is missing from the archive`);
47
47
  const flags = archive.readUInt16LE(offset + 8);
48
48
  const nameLength = archive.readUInt16LE(offset + 28);
49
49
  const name = archive.subarray(offset + 46, offset + 46 + nameLength).toString("utf8");
50
- if ((flags & 0x1) !== 0) throw new Error(`Der Archiveintrag ${name} ist verschlüsselt`);
50
+ if ((flags & 0x1) !== 0) throw new Error(`The archive entry ${name} is encrypted`);
51
51
  if (!name.endsWith("/")) {
52
52
  entries.push({
53
53
  name,
@@ -10,7 +10,7 @@ import { isCheckout } from "../host-web.js";
10
10
  import { bundlesRoot, pluginIdOf } from "../plugin-support/plugins-root.js";
11
11
 
12
12
  export const BUNDLE_MANIFEST_FILE = "ragents-bundle.json";
13
- export const BUNDLE_FORMAT = 4;
13
+ export const BUNDLE_FORMAT = 5;
14
14
 
15
15
  /** The value names a half imports from each module of the host API. */
16
16
  export type HostNames = Readonly<Record<string, readonly string[]>>;
@@ -23,9 +23,9 @@ export interface BundleManifest {
23
23
  /** The names of the host API the bundle uses, per half; a host that lacks one refuses the bundle. */
24
24
  readonly hostNames: Readonly<Record<HostApiHalf, HostNames>>;
25
25
  /** A hash over every file of the bundle; copies and the build tool check it. */
26
- readonly stand: string;
26
+ readonly revision: string;
27
27
  /** A hash over the source folder and the host inputs of the build; a checkout compares it with its built-in plugins. */
28
- readonly sourceStand: string;
28
+ readonly sourceRevision: string;
29
29
  readonly server: string;
30
30
  readonly web?: { readonly entry: string; readonly css?: string; readonly classes: string };
31
31
  /** The contribution to every executor, a self-contained file that any Node process loads. */
@@ -35,7 +35,7 @@ export interface BundleManifest {
35
35
  readonly assets: readonly string[];
36
36
  }
37
37
 
38
- const MANIFEST_KEYS = new Set(["format", "id", "api", "hostNames", "stand", "sourceStand", "server", "web", "executor", "exports", "uses", "assets"]);
38
+ const MANIFEST_KEYS = new Set(["format", "id", "api", "hostNames", "revision", "sourceRevision", "server", "web", "executor", "exports", "uses", "assets"]);
39
39
  const SOURCE_MARKERS = ["ragents-plugin.json", "server/index.ts", "server/index.tsx"];
40
40
 
41
41
  const isRecord = (value: unknown): value is Record<string, unknown> =>
@@ -69,9 +69,9 @@ export const isFetchedBundle = (folder: string, dataRoot = ragentsDataRoot()): b
69
69
 
70
70
  /** How the author, or for a fetched bundle its user, gets a bundle that fits this host again. */
71
71
  export const rebuildHint = (folder: string): string => {
72
- if (isBuiltInBundle(folder)) return "im Checkout mit pnpm build:plugins neu bauen";
73
- if (isFetchedBundle(folder)) return "der Stand kommt von einem Server: mit ragents connect <server-url> neu holen, connect nennt die passende Host-Fassung";
74
- return "mit ragents plugin build <quellordner> neu bauen";
72
+ if (isBuiltInBundle(folder)) return "rebuild in the checkout with pnpm build:plugins";
73
+ if (isFetchedBundle(folder)) return "this state comes from a server: fetch it again with ragents connect <server-url>, connect names the matching host version";
74
+ return "rebuild with ragents plugin build <source-folder>";
75
75
  };
76
76
 
77
77
  const SKIPPED_SOURCE_ENTRIES = new Set(["node_modules", ".DS_Store"]);
@@ -98,7 +98,7 @@ const buildInputsOf = (root: string): readonly string[] => [
98
98
  ];
99
99
 
100
100
  /** A hash over every file of a plugin source folder except dependencies and the given output folders, together with the build inputs of the host. */
101
- export const sourceStandOf = (folder: string, skipped: readonly string[] = [], root = hostRoot()): string => {
101
+ export const sourceRevisionOf = (folder: string, skipped: readonly string[] = [], root = hostRoot()): string => {
102
102
  const hash = createHash("sha256");
103
103
  for (const relative of sourceFiles(folder, new Set(skipped))) hash.update(`${relative}\0${fileDigest(path.join(folder, relative))}\n`);
104
104
  for (const input of buildInputsOf(root)) hash.update(`host:${input}\0${fileDigest(path.join(root, input))}\n`);
@@ -106,7 +106,7 @@ export const sourceStandOf = (folder: string, skipped: readonly string[] = [], r
106
106
  };
107
107
 
108
108
  /** A hash over every file of the bundle except its manifest and what Finder leaves behind, stable across machines. */
109
- export const bundleStand = (folder: string): string => {
109
+ export const bundleRevision = (folder: string): string => {
110
110
  const hash = createHash("sha256");
111
111
  const files = filesBelow(folder).filter((name) => name !== BUNDLE_MANIFEST_FILE && path.posix.basename(name) !== ".DS_Store");
112
112
  for (const relative of files) hash.update(`${relative}\0${fileDigest(path.join(folder, relative))}\n`);
@@ -114,9 +114,9 @@ export const bundleStand = (folder: string): string => {
114
114
  };
115
115
 
116
116
  /** A copy of a bundle, from a package or an archive, must carry exactly the files it was built with. */
117
- export const assertBundleStand = (folder: string, manifest: Pick<BundleManifest, "id" | "stand">): void => {
118
- if (bundleStand(folder) !== manifest.stand) {
119
- throw new Error(`Das Bundle ${manifest.id} in ${folder} hat nicht mehr die Dateien, mit denen es gebaut wurde (stand); ${rebuildHint(folder)}`);
117
+ export const assertBundleRevision = (folder: string, manifest: Pick<BundleManifest, "id" | "revision">): void => {
118
+ if (bundleRevision(folder) !== manifest.revision) {
119
+ throw new Error(`The bundle ${manifest.id} in ${folder} no longer has the files it was built with (revision); ${rebuildHint(folder)}`);
120
120
  }
121
121
  };
122
122
 
@@ -133,8 +133,8 @@ const missingHostNames = (manifest: Pick<BundleManifest, "hostNames">, record: H
133
133
  export const assertHostNames = (folder: string, manifest: Pick<BundleManifest, "id" | "hostNames">, record: HostApiRecord): void => {
134
134
  const missing = missingHostNames(manifest, record);
135
135
  if (missing.length === 0) return;
136
- throw new Error(`Das Bundle ${manifest.id} braucht aus der Host-API ${record.version} Namen, die dieser Host nicht anbietet (${missing.join("; ")}); `
137
- + `es ist gegen einen neueren Host gebaut: den Host aktualisieren, sonst ${rebuildHint(folder)}`);
136
+ throw new Error(`The bundle ${manifest.id} needs names from host API ${record.version} that this host does not offer (${missing.join("; ")}); `
137
+ + `it was built against a newer host: update the host, otherwise ${rebuildHint(folder)}`);
138
138
  };
139
139
 
140
140
  /** Reads and checks the manifest; format and host API must match this host exactly. */
@@ -142,32 +142,32 @@ export const readBundleManifest = (folder: string): BundleManifest => {
142
142
  const file = path.join(folder, BUNDLE_MANIFEST_FILE);
143
143
  if (!statSync(file, { throwIfNoEntry: false })?.isFile()) {
144
144
  if (SOURCE_MARKERS.some((marker) => existsSync(path.join(folder, marker)))) {
145
- throw new Error(`${folder} ist ein Quellordner, kein Bundle: mit ragents plugin build ${folder} bauen und im Profil den Bundle-Ordner nennen`);
145
+ throw new Error(`${folder} is a source folder, not a bundle: build it with ragents plugin build ${folder} and name the bundle folder in the profile`);
146
146
  }
147
- throw new Error(`${folder} ist kein Bundle: ${BUNDLE_MANIFEST_FILE} fehlt`);
147
+ throw new Error(`${folder} is not a bundle: ${BUNDLE_MANIFEST_FILE} is missing`);
148
148
  }
149
149
  const id = pluginIdOf(folder);
150
150
  const raw = ((): unknown => {
151
151
  try {
152
152
  return JSON.parse(readFileSync(file, "utf8"));
153
153
  } catch (cause) {
154
- throw new Error(`${file} ist kein gültiges JSON: ${cause instanceof Error ? cause.message : String(cause)}`);
154
+ throw new Error(`${file} is not valid JSON: ${cause instanceof Error ? cause.message : String(cause)}`);
155
155
  }
156
156
  })();
157
- if (!isRecord(raw)) throw new Error(`${file} muss ein Objekt enthalten`);
157
+ if (!isRecord(raw)) throw new Error(`${file} must contain an object`);
158
158
  if (raw.format !== BUNDLE_FORMAT) {
159
- throw new Error(`Das Bundle ${id} hat das Format ${String(raw.format)}, dieser Host liest Format ${BUNDLE_FORMAT}; ${rebuildHint(folder)}`);
159
+ throw new Error(`The bundle ${id} has format ${String(raw.format)}, this host reads format ${BUNDLE_FORMAT}; ${rebuildHint(folder)}`);
160
160
  }
161
- if (raw.id !== id) throw new Error(`Das Bundle in ${folder} meldet die Kennung ${String(raw.id)}; die Kennung ist der Ordnername ${id}`);
161
+ if (raw.id !== id) throw new Error(`The bundle in ${folder} reports the id ${String(raw.id)}; the id is the folder name ${id}`);
162
162
  if (raw.api !== HOST_API_VERSION) {
163
- throw new Error(`Das Bundle ${id} ist für Host-API ${String(raw.api)} gebaut, dieser Host bietet ${HOST_API_VERSION}; ${rebuildHint(folder)}`);
163
+ throw new Error(`The bundle ${id} is built for host API ${String(raw.api)}, this host offers ${HOST_API_VERSION}; ${rebuildHint(folder)}`);
164
164
  }
165
165
  const unknown = Object.keys(raw).filter((key) => !MANIFEST_KEYS.has(key));
166
- if (unknown.length > 0) throw new Error(`${file}: unbekannte Felder ${unknown.join(", ")}; ${rebuildHint(folder)}`);
166
+ if (unknown.length > 0) throw new Error(`${file}: unknown fields ${unknown.join(", ")}; ${rebuildHint(folder)}`);
167
167
  const malformed = [
168
168
  ...(isHostNames(raw.hostNames) ? [] : ["hostNames"]),
169
- ...(typeof raw.stand === "string" ? [] : ["stand"]),
170
- ...(typeof raw.sourceStand === "string" ? [] : ["sourceStand"]),
169
+ ...(typeof raw.revision === "string" ? [] : ["revision"]),
170
+ ...(typeof raw.sourceRevision === "string" ? [] : ["sourceRevision"]),
171
171
  ...(typeof raw.server === "string" ? [] : ["server"]),
172
172
  ...(isWeb(raw.web) ? [] : ["web"]),
173
173
  ...(raw.executor === undefined || raw.executor === EXECUTOR_CONTRIBUTION_FILE ? [] : ["executor"]),
@@ -175,13 +175,13 @@ export const readBundleManifest = (folder: string): BundleManifest => {
175
175
  ...(isStringList(raw.uses) ? [] : ["uses"]),
176
176
  ...(isStringList(raw.assets) ? [] : ["assets"]),
177
177
  ];
178
- if (malformed.length > 0) throw new Error(`${file}: ${malformed.join(", ")} fehlt oder hat die falsche Form; ${rebuildHint(folder)}`);
178
+ if (malformed.length > 0) throw new Error(`${file}: ${malformed.join(", ")} is missing or has the wrong shape; ${rebuildHint(folder)}`);
179
179
  const web = raw.web as BundleManifest["web"];
180
180
  const webFiles = web === undefined ? [] : [web.entry, web.classes, ...(web.css === undefined ? [] : [web.css])];
181
181
  const misplaced = webFiles.filter((entry) => !entry.startsWith("web/") || entry.split("/").includes(".."));
182
- if (misplaced.length > 0) throw new Error(`${file}: ${misplaced.join(", ")} liegt nicht unter web/; ${rebuildHint(folder)}`);
182
+ if (misplaced.length > 0) throw new Error(`${file}: ${misplaced.join(", ")} is not under web/; ${rebuildHint(folder)}`);
183
183
  for (const required of [raw.server as string, ...webFiles, ...(raw.executor === undefined ? [] : [EXECUTOR_CONTRIBUTION_FILE])]) {
184
- if (!statSync(path.join(folder, required), { throwIfNoEntry: false })?.isFile()) throw new Error(`Dem Bundle ${id} fehlt ${required}; ${rebuildHint(folder)}`);
184
+ if (!statSync(path.join(folder, required), { throwIfNoEntry: false })?.isFile()) throw new Error(`The bundle ${id} is missing ${required}; ${rebuildHint(folder)}`);
185
185
  }
186
186
  return raw as unknown as BundleManifest;
187
187
  };
@@ -2,6 +2,7 @@ import { PluginHost, type PluginWebAddresses } from "@ragents/engine";
2
2
  import { pluginToolsDirectory, prepareExecutorContribution, type LoadedExecutorContribution } from "@ragents/workspace-executor";
3
3
  import { config, HOST_SECRET_ENV_NAMES } from "../config.js";
4
4
  import { SESSION_MODE, SESSIONS_MODE } from "../layout.js";
5
+ import { aliasCompletionModel, aliasCompletionModelToken } from "../plugin-support/model-completion.js";
5
6
  import { withFolderAssets } from "../plugin-support/plugin-folder.js";
6
7
  import type { PluginModule } from "../plugin-support/plugin-module.js";
7
8
  import { runManagementToken } from "../ragents/global-chat.js";
@@ -29,9 +30,9 @@ export interface ProfileComposition {
29
30
  readonly modules: ReadonlyMap<string, PluginModule>;
30
31
  /** The plugins with a web half and where the browser loads it; the web loads exactly these. */
31
32
  readonly web: ReadonlyMap<string, PluginWebAddresses>;
32
- /** Die Beiträge der Bundles zum Executor; der Server baut sie mit den Werkzeugordnern seines Datenordners. */
33
+ /** The bundles' contributions to the executor; the server builds them with the tool folders of its data folder. */
33
34
  readonly executor: readonly LoadedExecutorContribution[];
34
- /** Die Vorlage aus defaultStartEntry der Profildatei; der Host lehnt eine nicht registrierte beim Versiegeln ab. */
35
+ /** The template from defaultStartEntry of the profile file; the host rejects an unregistered one when sealing. */
35
36
  readonly defaultStartEntry?: string;
36
37
  }
37
38
 
@@ -50,23 +51,27 @@ export const composeProfile = (options: ProfileComposition, bridges: HostBridges
50
51
  host.provideHost(executorContributionsToken, options.executor.map((loaded) =>
51
52
  prepareExecutorContribution(loaded, pluginToolsDirectory(config.dataDir, loaded.plugin))));
52
53
  host.provideHost(runManagementToken, () => {
53
- if (!bridges.sessions) throw new Error("Der Host stellt keine Sitzungsverwaltung bereit");
54
+ if (!bridges.sessions) throw new Error("The host provides no session management");
54
55
  return bridges.sessions();
55
56
  });
57
+ host.provideHost(aliasCompletionModelToken, (alias) => aliasCompletionModel(() => {
58
+ if (!bridges.modelRuntime) throw new Error("The host provides no model runtime");
59
+ return bridges.modelRuntime();
60
+ }, alias));
56
61
  host.provideHost(secretEnvNamesToken, () =>
57
62
  [...new Set([...HOST_SECRET_ENV_NAMES, ...host.config.secretKeys()])]);
58
63
  for (const id of options.pluginIds) {
59
64
  const module = options.modules.get(id);
60
- if (!module) throw new Error(`Das Plugin ${id} wurde nicht geladen`);
65
+ if (!module) throw new Error(`The plugin ${id} was not loaded`);
61
66
  const plugin = module.create(host);
62
67
  if (plugin.manifest.id !== id) {
63
- throw new Error(`Der Plugin-Ordner ${id} meldet die abweichende Kennung ${plugin.manifest.id}`);
68
+ throw new Error(`The plugin folder ${id} reports the different id ${plugin.manifest.id}`);
64
69
  }
65
70
  if (plugin.manifest.requires !== undefined) {
66
- throw new Error(`Plugin ${id} deklariert requires im Manifest; es gehört in den Modulvertrag`);
71
+ throw new Error(`Plugin ${id} declares requires in the manifest; it belongs in the module contract`);
67
72
  }
68
73
  if (plugin.manifest.web !== undefined) {
69
- throw new Error(`Plugin ${id} deklariert web im Manifest; das ergibt sich aus dem Bundle`);
74
+ throw new Error(`Plugin ${id} declares web in the manifest; that follows from the bundle`);
70
75
  }
71
76
  const web = options.web.get(id);
72
77
  host.register(withFolderAssets({