@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
@@ -17,21 +17,21 @@ export type AddresseeNode = AddresseeActorNode | AddresseeGroupNode;
17
17
 
18
18
  export type AddresseeStatus = "running" | "input" | "waiting" | "stopped";
19
19
 
20
- /** Ab so vielen gleichartigen Geschwistern fasst der Baum sie zu einer Gruppe zusammen. */
20
+ /** From this many similar siblings on, the tree combines them into a group. */
21
21
  export const ADDRESSEE_GROUP_MIN = 4;
22
- /** Erst bei mehr Einträgen erscheint die Suche. */
22
+ /** The search appears only with more entries than this. */
23
23
  export const ADDRESSEE_SEARCH_ABOVE = 12;
24
24
  const SUMMARY_LENGTH = 90;
25
25
 
26
26
  const STATUS_WORDS: Readonly<Record<AddresseeStatus, readonly [one: string, many: string]>> = {
27
- running: ["arbeitet", "arbeiten"],
28
- input: ["wartet auf Eingabe", "warten auf Eingabe"],
29
- waiting: ["wartet", "warten"],
30
- stopped: ["gestoppt", "gestoppt"],
27
+ running: ["working", "working"],
28
+ input: ["waiting for input", "waiting for input"],
29
+ waiting: ["waiting", "waiting"],
30
+ stopped: ["stopped", "stopped"],
31
31
  };
32
32
  const STATUS_ORDER: readonly AddresseeStatus[] = ["running", "input", "waiting", "stopped"];
33
33
 
34
- const lower = (text: string) => text.toLocaleLowerCase("de-DE");
34
+ const lower = (text: string) => text.toLocaleLowerCase("en-US");
35
35
 
36
36
  const shortened = (text: string): string => {
37
37
  const line = text.split("\n").map((entry) => entry.replace(/\s+/g, " ").trim()).find((entry) => entry !== "") ?? "";
@@ -48,7 +48,7 @@ export const addresseeStatus = (view: RunView, actor: RunActor): AddresseeStatus
48
48
 
49
49
  export const addresseeStatusWord = (status: AddresseeStatus, count = 1): string => STATUS_WORDS[status][count === 1 ? 0 : 1];
50
50
 
51
- /** Zählt die Zustände einer Gruppe in fester Reihenfolge, etwa "3 arbeiten, 34 warten". */
51
+ /** Counts the states of a group in a fixed order, e.g. "3 working, 34 waiting". */
52
52
  export const addresseeStatusCounts = (view: RunView, actors: readonly RunActor[]): string => {
53
53
  const counts = new Map<AddresseeStatus, number>();
54
54
  for (const status of actors.map((actor) => addresseeStatus(view, actor))) counts.set(status, (counts.get(status) ?? 0) + 1);
@@ -58,7 +58,7 @@ export const addresseeStatusCounts = (view: RunView, actors: readonly RunActor[]
58
58
  }).join(", ");
59
59
  };
60
60
 
61
- /** Die Kurzbeschreibung je Actor: die beim Erzeugen gesetzte, sonst der gekürzte erste Auftrag, sonst ein abweichender Anzeigename. */
61
+ /** The short description per actor: the one set on creation, otherwise the shortened first task, otherwise a differing display name. */
62
62
  export const addresseeSummaries = (view: RunView): ((actor: RunActor) => string | undefined) => {
63
63
  const firstInputs = new Map<string, { sequence: number; content: string }>();
64
64
  for (const input of view.inputs) {
@@ -76,7 +76,7 @@ export const addresseeSummaries = (view: RunView): ((actor: RunActor) => string
76
76
  };
77
77
  };
78
78
 
79
- /** Der nächste Erzeuger nach `createdBy`, der selbst im Baum steht; ein Mensch oder ein unbekannter Erzeuger macht den Actor zur Wurzel. */
79
+ /** The nearest creator along `createdBy` that is itself in the tree; a human or an unknown creator makes the actor a root. */
80
80
  export const addresseeParentId = (byId: ReadonlyMap<string, RunActor>, included: ReadonlySet<string>, actor: RunActor): string | null => {
81
81
  const visited = new Set([actor.id]);
82
82
  let current = actor.createdBy;
@@ -105,7 +105,7 @@ const groupLabel = (handles: readonly string[]): string => {
105
105
  return `@${stem}*`;
106
106
  };
107
107
 
108
- /** Wer hat wen erzeugt: Koordinator oben, Unteragenten darunter, gleichartige Geschwister (Art und Handle-Stamm) als Gruppe. */
108
+ /** Who created whom: coordinator on top, subagents below, similar siblings (kind and handle stem) as a group. */
109
109
  export const addresseeTree = (view: RunView, actors: readonly RunActor[]): AddresseeNode[] => {
110
110
  const byId = new Map(view.actors.map((actor) => [actor.id, actor]));
111
111
  const included = new Set(actors.map((actor) => actor.id));
@@ -138,7 +138,7 @@ export const addresseeTree = (view: RunView, actors: readonly RunActor[]): Addre
138
138
  return level(null);
139
139
  };
140
140
 
141
- /** Die Actors, die zur Suche passen, samt ihren Erzeugern im Baum, damit jeder Treffer an seinem Platz steht. */
141
+ /** The actors matching the search, together with their creators in the tree, so every match stands in its place. */
142
142
  export const addresseeMatches = (view: RunView, actors: readonly RunActor[], query: string, summary: (actor: RunActor) => string | undefined): RunActor[] => {
143
143
  const words = lower(query).trim().split(/\s+/).filter(Boolean);
144
144
  if (words.length === 0) return [...actors];
@@ -158,7 +158,7 @@ export const addresseeMatches = (view: RunView, actors: readonly RunActor[], que
158
158
  return actors.filter((actor) => kept.has(actor.id));
159
159
  };
160
160
 
161
- /** Ob ein Actor in einem Zweig steckt, etwa damit eine Gruppe mit dem gewählten Actor offen startet. */
161
+ /** Whether an actor is in a branch, e.g. so a group containing the selected actor starts open. */
162
162
  export const addresseeNodeContains = (node: AddresseeNode, actorId: string): boolean =>
163
163
  node.kind === "actor"
164
164
  ? node.actor.id === actorId || node.children.some((child) => addresseeNodeContains(child, actorId))
@@ -2,7 +2,7 @@ import type { SurfaceElementDefinition } from "@ragents/web/PluginRegistry";
2
2
  import { actorVisibleInHeader, type ActorHeaderMode } from "../actor-header-settings";
3
3
  import { chatPrimaryId, type RunActor, type RunView } from "@ragents/web/run-view";
4
4
 
5
- /** Die Actors der Chip-Reihe: Koordinator zuerst, dann in Anlegereihenfolge; ohne Prüfrecht nur LLM-Agenten. */
5
+ /** The actors of the chip row: coordinator first, then in creation order; without the inspect right only LLM agents. */
6
6
  export const runPanelActors = (view: RunView, inspect: boolean): RunActor[] => {
7
7
  const candidates = view.actors.filter((actor) => actor.kind !== "human" && (inspect || actor.kind === "agent"));
8
8
  const primaryId = chatPrimaryId(view);
@@ -17,7 +17,7 @@ export interface RunPanelActorFilter {
17
17
  selectedId: string | undefined;
18
18
  }
19
19
 
20
- /** Sichtbar nach der Actor-Anzeige der Fläche; der Koordinator und der gewählte Actor bleiben immer als Chip da. */
20
+ /** Visible according to the surface's actor display; the coordinator and the selected actor always stay as a chip. */
21
21
  export const partitionRunPanelActors = (actors: readonly RunActor[], filter: RunPanelActorFilter): { shown: RunActor[]; hidden: RunActor[] } => {
22
22
  const shown: RunActor[] = [];
23
23
  const hidden: RunActor[] = [];
@@ -34,6 +34,6 @@ export const pendingInputCount = (view: RunView, actorId: string): number =>
34
34
  export const pendingActionCount = (view: RunView, askedBy: string): number =>
35
35
  view.actions.filter((action) => action.status === "pending" && action.askedBy === askedBy).length;
36
36
 
37
- /** Ein Chip trägt ein Ausrufezeichen, wenn eine Host-Bestätigung oder eine Aktion des Actors auf eine Eingabe wartet. */
37
+ /** A chip carries an exclamation mark when a host confirmation or an action of the actor waits for input. */
38
38
  export const elementNeedsAttention = (view: RunView | undefined, definition: SurfaceElementDefinition, confirmationPending: boolean): boolean =>
39
39
  confirmationPending || (view !== undefined && definition.anchorActorId !== undefined && pendingActionCount(view, definition.anchorActorId) > 0);
@@ -1,6 +1,6 @@
1
1
  import { createLocalStorageSetting } from "@ragents/web/lib/local-storage-setting";
2
2
 
3
- /** Verhalten des Run-Panels: ab welcher Breite der Chat neben der Mini-App liegt und wie das Sheet auf die Maus reagiert. */
3
+ /** Behavior of the run panel: from which width the chat sits next to the mini-app and how the sheet reacts to the mouse. */
4
4
  export interface RunPanelSettings {
5
5
  sideWidth: number;
6
6
  openDelay: number;
@@ -26,7 +26,7 @@ export function parseRunPanelSettings(raw: string | null): RunPanelSettings {
26
26
  || !("sideWidth" in value) || !inRange(value.sideWidth, RUN_PANEL_SETTINGS_LIMITS.sideWidth)
27
27
  || !("openDelay" in value) || !inRange(value.openDelay, RUN_PANEL_SETTINGS_LIMITS.openDelay)
28
28
  || !("closeDelay" in value) || !inRange(value.closeDelay, RUN_PANEL_SETTINGS_LIMITS.closeDelay)) {
29
- throw new Error("Die Einstellungen des Run-Panels sind ungültig: Breite 400 bis 4000 Pixel, Verzögerungen 0 bis 5000 beziehungsweise 10000 Millisekunden, ganze Zahlen.");
29
+ throw new Error("The run panel settings are invalid: width 400 to 4000 pixels, delays 0 to 5000 and 10000 milliseconds respectively, integers.");
30
30
  }
31
31
  return value as RunPanelSettings;
32
32
  }
@@ -2,15 +2,15 @@ import { useEffect, useState } from "react";
2
2
  import type { Message } from "quassel/events";
3
3
  import type { SurfaceStartupState } from "../surface-startup";
4
4
 
5
- /** So lange überbrückt der Ladezustand eine beendete Arbeit, bis die Run-Ansicht dem Startstatus nachgezogen hat. */
5
+ /** How long the loading state bridges finished work until the run view has caught up with the start status. */
6
6
  export const STARTUP_SETTLE_MS = 1500;
7
7
 
8
- /** Gesprächsbeiträge und Rückfragen beenden den Aufbau; Systemzeilen und Arbeitsschritte gehören noch zu ihm. */
8
+ /** Conversation messages and questions end the setup; system lines and work steps still belong to it. */
9
9
  export const chatShowsContent = (messages: readonly Message[]): boolean => messages.some((message) =>
10
10
  message.role === "user" || message.role === "action"
11
11
  || (message.role === "assistant" && (message.text.trim() !== "" || (message.attachments?.length ?? 0) > 0)));
12
12
 
13
- /** Der Ladezustand des Run-Panels bis zum ersten Inhalt; danach kommt er für diesen Run nicht wieder. */
13
+ /** The run panel's loading state until the first content; afterwards it does not return for this run. */
14
14
  export function useRunPanelStartup(state: SurfaceStartupState | undefined, connected: boolean, content: boolean): SurfaceStartupState | undefined {
15
15
  const [contentSeen, setContentSeen] = useState(content);
16
16
  const [held, setHeld] = useState<SurfaceStartupState>();
@@ -1,12 +1,12 @@
1
1
  import { createLocalStorageSetting } from "@ragents/web/lib/local-storage-setting";
2
2
 
3
- /** Die gewählte Ansicht des Run-Panels: nur Chat, Chat unten als Sheet oder Chat rechts, sofern das Run-Panel breit genug ist. */
3
+ /** The chosen view of the run panel: chat only, chat at the bottom as a sheet, or chat on the right if the run panel is wide enough. */
4
4
  export type RunPanelChatMode = "chat" | "bottom" | "side";
5
5
 
6
- /** Wie der Chat zur Mini-App liegt: allein, daneben oder als Sheet darüber. */
6
+ /** How the chat relates to the mini-app: alone, next to it, or as a sheet above it. */
7
7
  export type ChatLayout = "full" | "side" | "floating";
8
8
 
9
- /** Persönlicher Zustand je Run: Mini-App, Actor, Chat-Lage, Seitenbreite und ausgeklappte Sheet-Höhe. */
9
+ /** Personal state per run: mini-app, actor, chat position, side width and expanded sheet height. */
10
10
  export interface RunPanelState {
11
11
  element: string | null;
12
12
  actor: string | null;
@@ -17,7 +17,7 @@ export interface RunPanelState {
17
17
 
18
18
  export const CHAT_MIN_WIDTH = 280;
19
19
  export const CHAT_DEFAULT_WIDTH = 380;
20
- /** Neben dem Chat bleibt immer Platz für ein Stück Mini-App. */
20
+ /** Next to the chat there is always room for a piece of mini-app. */
21
21
  export const STAGE_MIN_WIDTH = 300;
22
22
 
23
23
  export const DEFAULT_RUN_PANEL_STATE: RunPanelState = Object.freeze({ element: null, actor: null, chat: "side", chatWidth: CHAT_DEFAULT_WIDTH, sheetExpandedHeight: null });
@@ -25,7 +25,7 @@ export const DEFAULT_RUN_PANEL_STATE: RunPanelState = Object.freeze({ element: n
25
25
  export const runPanelStorageKey = (runId: string) => `ragents.orchestration.run-panel:${runId}`;
26
26
 
27
27
  const isTextOrNull = (value: unknown): value is string | null => value === null || typeof value === "string";
28
- /** Frühere Zustände kannten `auto`, `floating` und `docked` sowie eine Bühnenhöhe; sie werden auf die heutigen Lagen abgebildet. */
28
+ /** Earlier states knew `auto`, `floating` and `docked` as well as a stage height; they are mapped to today's positions. */
29
29
  const chatModeOf = (value: unknown): RunPanelChatMode | undefined =>
30
30
  value === undefined || value === "side" || value === "auto" ? "side"
31
31
  : value === "chat" ? "chat"
@@ -42,13 +42,13 @@ export function parseRunPanelState(raw: string | null): RunPanelState {
42
42
  || ("chatWidth" in value && (typeof value.chatWidth !== "number" || !Number.isFinite(value.chatWidth) || value.chatWidth < CHAT_MIN_WIDTH))
43
43
  || ("sheetExpandedHeight" in value && value.sheetExpandedHeight !== null && (typeof value.sheetExpandedHeight !== "number" || !Number.isFinite(value.sheetExpandedHeight) || value.sheetExpandedHeight <= 0))
44
44
  || ("sheetPeekExtra" in value && (typeof value.sheetPeekExtra !== "number" || !Number.isFinite(value.sheetPeekExtra) || value.sheetPeekExtra < 0))) {
45
- throw new Error("Der gespeicherte Panelzustand ist ungültig.");
45
+ throw new Error("The stored panel state is invalid.");
46
46
  }
47
47
  const stored = value as { element: string | null; actor: string | null; chat?: unknown; chatWidth?: number; sheetExpandedHeight?: number | null };
48
48
  return { element: stored.element, actor: stored.actor, chat: chatModeOf(stored.chat) ?? "side", chatWidth: stored.chatWidth ?? CHAT_DEFAULT_WIDTH, sheetExpandedHeight: stored.sheetExpandedHeight ?? null };
49
49
  }
50
50
 
51
- /** Ohne Mini-App und in der Ansicht "Nur Chat" füllt der Chat das Run-Panel; sonst liegt er rechts, wenn Platz ist, und unten, wenn nicht. */
51
+ /** Without a mini-app and in the "Chat only" view the chat fills the run panel; otherwise it sits on the right if there is room, and at the bottom if not. */
52
52
  export const chatLayoutFor = ({ chat, hasElement, narrow }: { chat: RunPanelChatMode; hasElement: boolean; narrow: boolean }): ChatLayout =>
53
53
  !hasElement || chat === "chat" ? "full" : !narrow && chat === "side" ? "side" : "floating";
54
54
 
@@ -1,6 +1,6 @@
1
1
  import type { Message } from "quassel/events";
2
2
 
3
- /** Die eine Zeile des zugeschobenen Sheets: was der Chat gerade tut oder zuletzt gesagt hat. */
3
+ /** The single line of the collapsed sheet: what the chat is doing right now or said last; open actions themselves are in the dock below. */
4
4
  export interface SheetStatus {
5
5
  text: string;
6
6
  kind: "idle" | "working" | "waiting";
@@ -8,23 +8,23 @@ export interface SheetStatus {
8
8
 
9
9
  const firstLine = (text: string, limit = 160): string => {
10
10
  const line = text.trim().split(/\r?\n/).find((entry) => entry.trim() !== "") ?? "";
11
- return line.length > limit ? `${line.slice(0, limit - 1)}…` : line;
11
+ return line.length > limit ? `${line.slice(0, limit - 3)}...` : line;
12
12
  };
13
13
 
14
14
  const senderOf = (message: Message, handle: string): string =>
15
- message.role === "user" ? "Du" : message.sender ?? `@${handle}`;
15
+ message.role === "user" ? "You" : message.sender ?? `@${handle}`;
16
16
 
17
17
  export function sheetStatus(messages: readonly Message[], working: boolean, handle: string): SheetStatus {
18
18
  const last = messages[messages.length - 1];
19
- const waiting = [...messages].reverse().find((message) => message.role === "action" && message.action?.status === undefined);
20
- if (waiting) return { kind: "waiting", text: `Wartet auf Eingabe: ${firstLine(waiting.text) || "Antwort erwartet"}` };
19
+ const waiting = messages.filter((message) => message.role === "action" && message.action?.status === undefined).length;
20
+ if (waiting > 0) return { kind: "waiting", text: waiting === 1 ? "Waiting for input" : `Waiting for ${waiting} inputs` };
21
21
  if (working) {
22
- if (last?.role === "thinking" && !last.closed) return { kind: "working", text: `@${handle} denkt ...` };
23
- if (last?.role === "tool" && last.tool && last.tool.result === undefined) return { kind: "working", text: `@${handle} nutzt ${last.tool.name} ...` };
24
- if (last?.role === "assistant" && !last.closed && last.text.trim() !== "") return { kind: "working", text: `${senderOf(last, handle)} antwortet: ${firstLine(last.text)}` };
25
- return { kind: "working", text: `@${handle} arbeitet ...` };
22
+ if (last?.role === "thinking" && !last.closed) return { kind: "working", text: `@${handle} is thinking ...` };
23
+ if (last?.role === "tool" && last.tool && last.tool.result === undefined) return { kind: "working", text: `@${handle} is using ${last.tool.name} ...` };
24
+ if (last?.role === "assistant" && !last.closed && last.text.trim() !== "") return { kind: "working", text: `${senderOf(last, handle)} is answering: ${firstLine(last.text)}` };
25
+ return { kind: "working", text: `@${handle} is working ...` };
26
26
  }
27
27
  const spoken = [...messages].reverse().find((message) => (message.role === "user" || message.role === "assistant") && message.text.trim() !== "");
28
- if (!spoken) return { kind: "idle", text: "Noch keine Nachrichten." };
28
+ if (!spoken) return { kind: "idle", text: "No messages yet." };
29
29
  return { kind: "idle", text: `${senderOf(spoken, handle)}: ${firstLine(spoken.text)}` };
30
30
  }
@@ -11,23 +11,23 @@ export function surfaceStartupState({ view, startup, connected, running, error }
11
11
  running: boolean;
12
12
  error: string | undefined;
13
13
  }): SurfaceStartupState | undefined {
14
- if (startup?.status === "failed") return { kind: "error", title: "Der Run konnte nicht vorbereitet werden", detail: startup.message };
15
- if (error) return { kind: "error", title: "Der Run-Status ist nicht erreichbar", detail: error };
16
- if (startup?.status === "preparing") return { kind: "working", title: "Run wird vorbereitet", detail: startup.message };
14
+ if (startup?.status === "failed") return { kind: "error", title: "The run could not be prepared", detail: startup.message };
15
+ if (error) return { kind: "error", title: "The run status is unreachable", detail: error };
16
+ if (startup?.status === "preparing") return { kind: "working", title: "Preparing run", detail: startup.message };
17
17
  const actors = view?.actors.filter((actor) => actor.kind !== "human") ?? [];
18
18
  const activeActors = actors.filter((actor) => actor.lifecycle?.kind !== "stopped");
19
- if (actors.length && !activeActors.length) return { kind: "stopped", title: "Der Run wurde gestoppt", detail: "Es wird keine weitere Arbeit ausgeführt." };
19
+ if (actors.length && !activeActors.length) return { kind: "stopped", title: "The run was stopped", detail: "No further work is performed." };
20
20
  if (view?.actions.some((action) => action.status === "pending")) return {
21
- kind: "waiting", title: "Deine Eingabe wird benötigt", detail: "Im Chat wartet eine Aktion auf Deine Eingabe.",
21
+ kind: "waiting", title: "Your input is needed", detail: "An action in the chat is waiting for your input.",
22
22
  };
23
23
  const activeIds = new Set(activeActors.map((actor) => actor.id));
24
24
  const working = running || activeActors.some((actor) => actor.lifecycle?.kind === "running")
25
25
  || view?.turns.some((turn) => activeIds.has(turn.actorId) && turn.status === "running")
26
26
  || view?.inputs.some((input) => activeIds.has(input.actorId) && isPendingRunActorInput(input));
27
- if (working) return { kind: "working", title: "Der Run wird eingerichtet", detail: "Die Oberfläche wird aufgebaut. Die Elemente erscheinen automatisch." };
27
+ if (working) return { kind: "working", title: "Setting up the run", detail: "The interface is being built. The elements appear automatically." };
28
28
  const failed = activeActors.map((actor) => view?.turns.filter((turn) => turn.actorId === actor.id).at(-1))
29
29
  .find((turn) => turn?.status === "failed" || turn?.status === "interrupted");
30
- if (failed) return { kind: "error", title: "Der Aufbau wurde angehalten", detail: failed.reason || "Der letzte Arbeitsschritt konnte nicht abgeschlossen werden." };
31
- if (!connected) return { kind: "working", title: "Run wird geladen", detail: "Die Verbindung zum Run wird hergestellt." };
30
+ if (failed) return { kind: "error", title: "The setup was halted", detail: failed.reason || "The last work step could not be completed." };
31
+ if (!connected) return { kind: "working", title: "Loading run", detail: "Connecting to the run." };
32
32
  return undefined;
33
33
  }
@@ -15,7 +15,7 @@ export function parseSurfaceViewPreferences(raw: string | null): SurfaceViewPref
15
15
  || Object.keys(value).some((key) => key !== "actorVisibility")
16
16
  || !("actorVisibility" in value) || !value.actorVisibility || typeof value.actorVisibility !== "object"
17
17
  || Array.isArray(value.actorVisibility) || Object.values(value.actorVisibility).some((visible) => typeof visible !== "boolean")) {
18
- throw new Error("Die gespeicherte Actor-Sichtbarkeit ist ungültig.");
18
+ throw new Error("The stored actor visibility is invalid.");
19
19
  }
20
20
  return value as SurfaceViewPreferences;
21
21
  }
@@ -17,7 +17,7 @@ export function parseSurfacePresentation(raw: string | null): SurfacePresentatio
17
17
  if (!value || typeof value !== "object" || Array.isArray(value)
18
18
  || !("root" in value) || Object.keys(value).some((key) => !["root", "programBasis"].includes(key))
19
19
  || ("programBasis" in value && typeof value.programBasis !== "string")) {
20
- throw new Error("Die gespeicherte Kachelansicht ist ungültig.");
20
+ throw new Error("The stored tile view is invalid.");
21
21
  }
22
22
  return { root: value.root === null ? null : surfaceTileNodeOf(value.root),
23
23
  ...("programBasis" in value ? { programBasis: value.programBasis as string } : {}),
@@ -12,8 +12,8 @@ export interface QuickAnswerState {
12
12
  }
13
13
 
14
14
  export const overseerPermissions = [
15
- { id: "ragents.overseer.read", description: "Den globalen Koordinator und seine Modellauswahl ansehen." },
16
- { id: "ragents.overseer.write", description: "Dem globalen Koordinator Aufträge geben und sein Gespräch zurücksetzen." },
15
+ { id: "ragents.overseer.read", description: "View the global coordinator and its model selection." },
16
+ { id: "ragents.overseer.write", description: "Give tasks to the global coordinator and reset its conversation." },
17
17
  ] as const;
18
18
 
19
19
  export interface OverseerModelSelection {
@@ -31,7 +31,7 @@ const text = () => Type.String({ minLength: 1, pattern: "\\S" });
31
31
  const empty = object({});
32
32
  const jsonObject = Type.Record(Type.String(), Type.Any());
33
33
  const eventType = Type.Unsafe<EventType>(Type.Union(Object.keys(eventTypeMap).map((name) => Type.Literal(name))));
34
- const run = Type.String({ minLength: 1, maxLength: 512, description: "Run-ID, eindeutiger Titel oder stabile Referenz wie Run 1." });
34
+ const run = Type.String({ minLength: 1, maxLength: 512, description: "Run ID, unique title or stable reference such as Run 1." });
35
35
  const identityFields = { runId: Type.String(), title: Type.String(), reference: Type.String() };
36
36
  const runSummary = object({ ...identityFields, createdAt: Type.Optional(Type.Number()), updatedAt: Type.Number(), running: Type.Optional(Type.Boolean()), metadata: Type.Optional(jsonObject) });
37
37
  const accepted = object({ ...identityFields, accepted: Type.Literal(true) });
@@ -39,11 +39,11 @@ const commonStart = { title: text(), options: Type.Optional(jsonObject) };
39
39
  const createInput = Type.Union([
40
40
  object({ ...commonStart, message: text() }),
41
41
  object({ ...commonStart, script: text(), input: Type.Optional(Type.Any()) }),
42
- object({ ...commonStart, packageDirectory: Type.String({ minLength: 1, description: "Absoluter Pfad eines RUN.md/setup.ts/tests.json-Pakets auf dem Server. Ein lokaler Shellclient setzt seinen tatsächlich vorhandenen Paketpfad ein; dies ist kein Upload." }), input: Type.Optional(Type.Any()) }),
42
+ object({ ...commonStart, packageDirectory: Type.String({ minLength: 1, description: "Absolute path of a RUN.md/setup.ts/tests.json package on the server. A local shell client inserts its actually existing package path; this is not an upload." }), input: Type.Optional(Type.Any()) }),
43
43
  ]);
44
44
  const domainObject = (name: string, source = "packages/ragents/src/domain/model.ts") => Type.Object({}, {
45
45
  additionalProperties: true, "x-typescript-type": name, "x-source": source,
46
- description: `Ungekürzter Domänenwert ${name}; verschachtelte Felder sind hier bewusst ein offenes JSON-Schema.`,
46
+ description: `Unabridged domain value ${name}; nested fields are deliberately an open JSON schema here.`,
47
47
  });
48
48
  const eventSchema = object({
49
49
  eventId: Type.String(), runId: Type.String(), sequence: Type.Integer({ minimum: 1 }), schemaVersion: Type.Literal(3),
@@ -65,32 +65,32 @@ const settingsResult = object({
65
65
  models: Type.Array(object({ id: Type.String(), provider: Type.String(), label: Type.String(), thinking: Type.Array(Type.String()) })),
66
66
  });
67
67
 
68
- /** Die Verwaltung der Runs, die Modellauswahl und der Gesprächsreset des globalen Koordinators. */
68
+ /** Run management, model selection and conversation reset of the global coordinator. */
69
69
  export const overseerContracts = {
70
70
  listRuns: defineOperation({
71
71
  id: "ragents.overseer.listRuns",
72
- description: "Die Runs, die der Aufrufer sieht, mit stabilen Referenzen auflisten; die globalen Koordinatoren gehören nicht zu dieser Liste.",
72
+ description: "List the runs the caller sees, with stable references; the global coordinators are not part of this list.",
73
73
  rights: ["runs.read"],
74
74
  input: empty,
75
75
  result: Type.Array(runSummary),
76
76
  }),
77
77
  createRun: defineOperation({
78
78
  id: "ragents.overseer.createRun",
79
- description: "Einen Run mit serverseitiger ID und Titel anlegen. Genau eine Startform: message, installiertes script (Kennung oder eindeutiger Titel), oder packageDirectory (vorhandenes lokales Run-Script-Paket). input ist nur bei script/packageDirectory erlaubt. options wählt Startoptionen wie ragents.startOptions.select, jede nur mit ihren eigenen Rechten. Das Ergebnis wartet auf Vorbereitung, Check, Test und Installation; accepted bestätigt noch kein fertiges Modellergebnis.",
79
+ description: "Create a run with a server-side ID and title. Exactly one start form: message, installed script (id or unique title), or packageDirectory (existing local run script package). input is only allowed with script/packageDirectory. options selects start options such as ragents.startOptions.select, each only with its own rights. The result waits for preparation, check, test and installation; accepted does not yet confirm a finished model result.",
80
80
  rights: ["runs.read", "runs.write", "runs.create"],
81
81
  input: createInput,
82
82
  result: accepted,
83
83
  }),
84
84
  readRun: defineOperation({
85
85
  id: "ragents.overseer.readRun",
86
- description: "Die aktuelle ungekürzte RunView lesen; verschachtelte Domänenwerte sind als offene JSON-Objekte dokumentiert.",
86
+ description: "Read the current unabridged RunView; nested domain values are documented as open JSON objects.",
87
87
  rights: ["runs.read", "runs.inspect"],
88
88
  input: object({ run }),
89
89
  result: viewSchema,
90
90
  }),
91
91
  readEvents: defineOperation({
92
92
  id: "ragents.overseer.readEvents",
93
- description: "Das vollständige Journal seitenweise in Sequenzreihenfolge lesen. Solange hasMore wahr ist, nextAfter als after der nächsten Anfrage verwenden. type filtert einen exakten Ereignistyp.",
93
+ description: "Read the complete journal page by page in sequence order. As long as hasMore is true, use nextAfter as after of the next request. type filters an exact event type.",
94
94
  rights: ["runs.read", "runs.inspect"],
95
95
  input: object({
96
96
  run,
@@ -102,21 +102,21 @@ export const overseerContracts = {
102
102
  }),
103
103
  sendMessage: defineOperation({
104
104
  id: "ragents.overseer.sendMessage",
105
- description: "Eine Chatnachricht an den primären LLM-Actor einreihen; TypeScript als Primary wird mit actor-chat-unsupported abgewiesen. Das Ergebnis bestätigt nur das Einreihen, weder Verarbeitung noch Abschluss. Ein laufender Turn wird dadurch nicht ersetzt.",
105
+ description: "Enqueue a chat message for the primary LLM actor; TypeScript as primary is rejected with actor-chat-unsupported. The result only confirms the enqueueing, neither processing nor completion. A running turn is not replaced by it.",
106
106
  rights: ["runs.read", "runs.write"],
107
107
  input: object({ run, message: text() }),
108
108
  result: accepted,
109
109
  }),
110
110
  stopRun: defineOperation({
111
111
  id: "ragents.overseer.stopRun",
112
- description: "Den Run über seine normale Stoppgrenze stoppen und die Bereinigung abwarten; das Gespräch bleibt erhalten.",
112
+ description: "Stop the run through its normal stop boundary and wait for the cleanup; the conversation is kept.",
113
113
  rights: ["runs.read", "runs.write"],
114
114
  input: object({ run }),
115
115
  result: object({ ...identityFields, stopped: Type.Literal(true) }),
116
116
  }),
117
117
  readCatalog: defineOperation({
118
118
  id: "ragents.overseer.readCatalog",
119
- description: "Installierte Vorlagen und Startoptionen mit Eingabeschemata, Standardwerten und Wählbarkeit lesen. createRun startet Nachrichten, installierte Scripts oder lokale Pakete via packageDirectory. Skills liefern bearbeitbare Aufträge für message; dabei den Skillnamen als Arbeitsanleitung nennen.",
119
+ description: "Read installed templates and start options with input schemas, default values and selectability. createRun starts messages, installed scripts or local packages via packageDirectory. Skills provide editable tasks for message; name the skill as the work instruction.",
120
120
  rights: ["runs.read", "runs.inspect"],
121
121
  input: empty,
122
122
  result: object({
@@ -126,14 +126,14 @@ export const overseerContracts = {
126
126
  }),
127
127
  readReference: defineOperation({
128
128
  id: "ragents.overseer.readReference",
129
- description: "Lesbare Referenz aller registrierten Methoden und Kanäle direkt aus ihren Verträgen lesen.",
129
+ description: "Read a readable reference of all registered methods and channels directly from their contracts.",
130
130
  rights: ["runs.read", "runs.inspect"],
131
131
  input: empty,
132
132
  result: Type.String(),
133
133
  }),
134
134
  readOpenRpc: defineOperation({
135
135
  id: "ragents.overseer.readOpenRpc",
136
- description: "OpenRPC 1.3 direkt aus denselben Verträgen lesen.",
136
+ description: "Read OpenRPC 1.3 directly from the same contracts.",
137
137
  rights: ["runs.read", "runs.inspect"],
138
138
  input: empty,
139
139
  result: jsonObject,
@@ -141,14 +141,14 @@ export const overseerContracts = {
141
141
  settings: {
142
142
  read: defineOperation({
143
143
  id: "ragents.overseer.settings.read",
144
- description: "Die Modellauswahl des globalen Koordinators mit dem verfügbaren Modellkatalog lesen.",
144
+ description: "Read the global coordinator's model selection with the available model catalog.",
145
145
  rights: ["ragents.overseer.read"],
146
146
  input: empty,
147
147
  result: settingsResult,
148
148
  }),
149
149
  save: defineOperation({
150
150
  id: "ragents.overseer.settings.save",
151
- description: "Die Modellauswahl des globalen Koordinators setzen; sie gilt ab der nächsten Antwort.",
151
+ description: "Set the global coordinator's model selection; it applies from the next answer on.",
152
152
  rights: ["ragents.overseer.read", "ragents.overseer.write", "settings.write"],
153
153
  input: modelSelection,
154
154
  result: settingsResult,
@@ -156,16 +156,16 @@ export const overseerContracts = {
156
156
  },
157
157
  coordinator: defineOperation({
158
158
  id: "ragents.overseer.coordinator",
159
- description: "Die Run-ID des eigenen globalen Koordinators lesen: je angemeldetem Benutzer einer, ohne Anmeldung genau einer.",
159
+ description: "Read the run ID of your own global coordinator: one per signed-in user, exactly one without sign-in.",
160
160
  rights: ["ragents.overseer.read"],
161
161
  input: empty,
162
162
  result: object({ runId: Type.String() }),
163
163
  }),
164
164
  reset: defineOperation({
165
165
  id: "ragents.overseer.reset",
166
- description: "Das Gespräch des eigenen globalen Koordinators samt Modellkontext zurücksetzen; die Modellauswahl, die Koordinatoren anderer Benutzer und alle Runs bleiben erhalten.",
166
+ description: "Reset the conversation of your own global coordinator including its model context; the model selection, other users' coordinators and all runs are kept.",
167
167
  rights: ["ragents.overseer.read", "ragents.overseer.write"],
168
- input: object({ confirm: Type.Literal(true, { description: "Der Gesprächsreset muss ausdrücklich bestätigt werden." }) }),
168
+ input: object({ confirm: Type.Literal(true, { description: "The conversation reset must be confirmed explicitly." }) }),
169
169
  result: Type.Null(),
170
170
  }),
171
171
  } as const;
@@ -3,7 +3,7 @@ import type { Static } from "typebox";
3
3
  import { DomainError, implement, type AccessContext, type JsonValue, type MethodContribution, type PluginHost } from "@ragents/engine";
4
4
  import { methodReference, openRpcDocument, type ApiAuthentication } from "@ragents/host/api/reference.js";
5
5
  import type { RunManagement } from "@ragents/host/ragents/global-chat.js";
6
- import { overseerContracts } from "../contract.js";
6
+ import { OVERSEER_PLUGIN_ID, overseerContracts } from "../contract.js";
7
7
  import { coordinatorRunIdOf } from "./coordinator.js";
8
8
  import type { RunDirectory } from "./run-directory.js";
9
9
 
@@ -18,7 +18,7 @@ type CreateInput = Static<typeof overseerContracts.createRun.input>;
18
18
 
19
19
  const identity = (found: { id: string; title: string; reference: string }) => ({ runId: found.id, title: found.title, reference: found.reference });
20
20
 
21
- /** Aufgelöst wird nur über die Runs des Aufrufers; ein fremder Run ist hier so unbekannt wie ein nicht vorhandener. */
21
+ /** Resolution only covers the caller's runs; someone else's run is as unknown here as a nonexistent one. */
22
22
  const resolve = async (context: ManagementContext, access: AccessContext, reference: string) => {
23
23
  const runs = await context.management().list(access);
24
24
  const exact = runs.find((entry) => entry.id === reference);
@@ -35,21 +35,21 @@ const create = async (context: ManagementContext, body: CreateInput, access: Acc
35
35
  };
36
36
  const runId = await (async () => {
37
37
  if ("packageDirectory" in body) {
38
- if (!path.isAbsolute(body.packageDirectory)) throw new DomainError("invalid-package-directory", "packageDirectory muss ein absoluter Serverpfad sein", 400);
39
- return context.management().create({ ...common, kind: "package", directory: body.packageDirectory, input: (body.input ?? null) as JsonValue });
38
+ if (!path.isAbsolute(body.packageDirectory)) throw new DomainError("invalid-package-directory", "packageDirectory must be an absolute server path", 400);
39
+ return context.management().create({ ...common, kind: "package", directory: body.packageDirectory, input: (body.input ?? null) as JsonValue, owner: OVERSEER_PLUGIN_ID });
40
40
  }
41
41
  if ("script" in body) {
42
42
  const entries = context.root.startEntries.describe().filter((entry) => entry.action === "script");
43
- const wanted = body.script.trim().toLocaleLowerCase("de");
43
+ const wanted = body.script.trim().toLocaleLowerCase("en-US");
44
44
  const direct = entries.find((entry) => entry.id === body.script.trim());
45
- const matching = direct ? [direct] : entries.filter((entry) => entry.title.toLocaleLowerCase("de") === wanted);
46
- if (matching.length !== 1) throw new DomainError("invalid-script", `Das Run-Script ist unbekannt oder mehrdeutig. Gültige Titel und Kennungen: ${entries.map((entry) => `${entry.title} (${entry.id})`).join(", ") || "keine"}`, 400);
45
+ const matching = direct ? [direct] : entries.filter((entry) => entry.title.toLocaleLowerCase("en-US") === wanted);
46
+ if (matching.length !== 1) throw new DomainError("invalid-script", `The run script is unknown or ambiguous. Valid titles and ids: ${entries.map((entry) => `${entry.title} (${entry.id})`).join(", ") || "none"}`, 400);
47
47
  return context.management().create({ ...common, kind: "script", entryId: matching[0].id, input: (body.input ?? null) as JsonValue });
48
48
  }
49
49
  return context.management().create({ ...common, kind: "message", message: body.message.trim() });
50
50
  })();
51
51
  const found = (await context.directory.describe(await context.management().list())).find((entry) => entry.id === runId);
52
- if (!found) throw new DomainError("run-unavailable", "Der erstellte Run ist nicht mehr verfügbar", 409);
52
+ if (!found) throw new DomainError("run-unavailable", "The created run is no longer available", 409);
53
53
  return { ...identity(found), accepted: true as const };
54
54
  };
55
55
 
@@ -1,13 +1,13 @@
1
- export const coordinatorPrompt = `Du koordinierst Aufträge in RAgents.
2
- Neue Runs dürfen mit einem fachlichen Auftrag starten. Der Auftrag beschreibt das gewünschte Ergebnis; der Run-Koordinator entdeckt die Funktionen und wählt seine technische Umsetzung selbst.
3
- Prüfe bei vorhandenen Runs den Typ des Primary-Actors in der Run-Ansicht. Ein TypeScript-Actor ist ein Programm mit festem Eingabeprotokoll, kein Chatpartner. Die Nachrichtenroute akzeptiert nur LLM-Actors; verwende bei Programmen die dokumentierte Mini-App oder Funktionen. Eine erfolgreiche Nachrichtenannahme bestätigt nur das Einreihen und beweist keine Ausführung. Behaupte einen Neustart oder eine Erledigung erst bei entsprechendem Ergebnis.
4
- Die Fläche eines Runs besteht aus Kacheln. Benutzer können eine bestimmte Aufteilung verlangen, etwa Mini-App links und Chat rechts 50:50 oder eine Kachel oben und zwei unten im Verhältnis 2:1. Übernimm diese Wünsche in den Run-Auftrag; der Run setzt sie über context.functions.canvas_layout_replace mit verschachteltem root um. Bei bestehenden Runs gib den Layoutauftrag an den LLM-Koordinator weiter. Persönliche Benutzeranordnungen bleiben vorrangig, bis der Benutzer die Programmanordnung übernimmt.
5
- Antworte auf Deutsch mit echten Umlauten und den nötigen Einzelheiten. Nenne Runs mit ihren Titeln. Verwende einfache Bindestriche und normale Anführungszeichen.`;
1
+ export const coordinatorPrompt = `You coordinate tasks in RAgents.
2
+ New runs may start with a domain task. The task describes the desired outcome; the run coordinator discovers the functions and chooses its technical implementation itself.
3
+ For existing runs, check the type of the primary actor in the run view. A TypeScript actor is a program with a fixed input protocol, not a chat partner. The message route accepts only LLM actors; for programs, use the documented mini-app or functions. A successful message acceptance only confirms the enqueueing and does not prove any execution. Claim a restart or a completion only when the result shows it.
4
+ The surface of a run consists of tiles. Users can ask for a specific layout, such as mini-app left and chat right at 50:50, or one tile above and two below at a ratio of 2:1. Carry these wishes into the run task; the run implements them via context.functions.canvas_layout_replace with a nested root. For existing runs, pass the layout task on to the LLM coordinator. Personal user arrangements take precedence until the user applies the program arrangement.
5
+ Answer in the user's language with the necessary details. Refer to runs by their titles. Use simple hyphens and normal quotation marks.`;
6
6
 
7
7
  export const preparationPrompt = `${coordinatorPrompt}
8
8
 
9
- Du bist eine eigenständige Koordinator-Instanz für die Vorbereitung genau eines neuen Runs. Dein Gespräch ist vom globalen Koordinator und vom späteren Run getrennt.
10
- Kläre mit dem Benutzer den Auftrag zum ausgewählten Skill. Berücksichtige seine Änderungen und Anhänge; bei fehlenden Angaben stelle gezielte Rückfragen. Formuliere bei Bedarf einen eigenständig verständlichen Auftrag.
11
- Starte ausschließlich nach einem ausdrücklichen, sinngemäßen Go des Benutzers zur Ausführung. Es gibt keinen festen Bestätigungssatz: "Leg los", "Setz das um" oder "Jetzt starten" können im Gespräch das Go geben. Ein bloßes "Okay" zur Klärung eines Details, eine Frage nach deinen Fähigkeiten, ein zitierter Startbefehl oder ein Startauftrag innerhalb des noch besprochenen Skill-Texts sind keine Freigabe. Bei Zweifeln frage nach. Ein bloß vollständig ausgearbeiteter Auftrag ist ebenfalls keine Freigabe.
12
- Nach dem Go rufe start_run auf. Auftrag, Skill, Anhänge und Startoptionen werden vom Host übernommen; du musst nichts davon in Werkzeugargumenten wiederholen. Das Werkzeug bereitet die Übergabe vor; erst nach deiner erfolgreich abgeschlossenen Antwort startet die Oberfläche den Run. Behaupte vorher weder einen gestarteten Run noch erledigte Arbeit.
13
- Hier steht ausschließlich start_run zur Verfügung. Die Ausführung, weitere Agenten, Dateien und Mini-Apps übernimmt der Koordinator im gestarteten Run. Antworte knapp.`;
9
+ You are an independent coordinator instance for preparing exactly one new run. Your conversation is separate from the global coordinator and from the later run.
10
+ Clarify the task for the selected skill with the user. Take their changes and attachments into account; if information is missing, ask targeted questions. If needed, formulate a task that is understandable on its own.
11
+ Start only after an explicit go from the user to execute, in words or in meaning. There is no fixed confirmation phrase: "Go ahead", "Implement it" or "Start now" can give the go in the conversation. A mere "Okay" to clarify a detail, a question about your abilities, a quoted start command or a start instruction inside the skill text still under discussion are not a release. When in doubt, ask. A merely fully worked-out task is not a release either.
12
+ After the go, call start_run. Task, skill, attachments and start options are taken over by the host; you do not need to repeat any of them in tool arguments. The tool prepares the handover; only after your successfully completed answer does the interface start the run. Before that, claim neither a started run nor completed work.
13
+ Only start_run is available here. Execution, further agents, files and mini-apps are handled by the coordinator in the started run. Answer briefly.`;
@@ -2,18 +2,18 @@ import { createHash } from "node:crypto";
2
2
  import { DomainError, type AccessContext } from "@ragents/engine";
3
3
 
4
4
  const PREFIX = "overseer-";
5
- /** Die Kennung des früheren gemeinsamen Koordinators: bleibt reserviert, gehört aber keinem Zugang. */
5
+ /** The id of the former shared coordinator: stays reserved but belongs to no access. */
6
6
  export const SHARED_OVERSEER_RUN_ID = "overseer";
7
7
 
8
- /** Der Koordinator eines Benutzers; ohne Anmeldung (null) gibt es genau einen. */
8
+ /** A user's coordinator; without sign-in (null) there is exactly one. */
9
9
  export const coordinatorRunId = (userId: string | null): string =>
10
10
  userId === null ? `${PREFIX}single` : `${PREFIX}${createHash("sha256").update(userId).digest("hex").slice(0, 24)}`;
11
11
 
12
12
  export const isCoordinatorRunId = (runId: string): boolean => runId === SHARED_OVERSEER_RUN_ID || runId.startsWith(PREFIX);
13
13
 
14
- /** Der Koordinator des Aufrufers: ohne Anmeldung der eine, sonst der des angemeldeten Benutzers. */
14
+ /** The caller's coordinator: without sign-in the single one, otherwise the signed-in user's. */
15
15
  export const coordinatorRunIdOf = (access: AccessContext): string => {
16
16
  if (!access.enabled) return coordinatorRunId(null);
17
- if (!access.user) throw new DomainError("login-required", "Bitte melde dich an.", 401);
17
+ if (!access.user) throw new DomainError("login-required", "Please sign in.", 401);
18
18
  return coordinatorRunId(access.user.id);
19
19
  };