@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
@@ -10,23 +10,23 @@ const contract = {
10
10
  type Start = { input: unknown };
11
11
 
12
12
  const settingsFrom = (value: unknown): { topic: string; rounds: number } => {
13
- if (value === null) return { topic: "Sollten Innenstädte autofrei werden?", rounds: 2 };
13
+ if (value === null) return { topic: "Should city centers become car-free?", rounds: 2 };
14
14
  if (typeof value !== "object" || Array.isArray(value)) {
15
- throw new Error("Startwert braucht topic (1 bis 160 Zeichen) und rounds (ganze Zahl von 1 bis 5).");
15
+ throw new Error("The start value needs topic (1 to 160 characters) and rounds (an integer from 1 to 5).");
16
16
  }
17
17
  const settings = value as Record<string, unknown>;
18
18
  if (Object.keys(settings).some((key) => key !== "topic" && key !== "rounds")
19
19
  || typeof settings.topic !== "string" || !settings.topic.trim() || settings.topic.trim().length > 160
20
20
  || typeof settings.rounds !== "number" || !Number.isInteger(settings.rounds) || settings.rounds < 1 || settings.rounds > 5) {
21
- throw new Error("Startwert braucht topic (1 bis 160 Zeichen) und rounds (ganze Zahl von 1 bis 5).");
21
+ throw new Error("The start value needs topic (1 to 160 characters) and rounds (an integer from 1 to 5).");
22
22
  }
23
23
  return { topic: settings.topic.trim(), rounds: settings.rounds };
24
24
  };
25
25
 
26
26
  const roleOf = (name: string): string => {
27
- if (name === "mira") return "Du bist Mira und fragst neugierig nach.";
28
- if (name === "jon") return "Du bist Jon und widersprichst höflich.";
29
- return "Du bist Ada und suchst den gemeinsamen Nenner.";
27
+ if (name === "mira") return "You are Mira and you ask curious questions.";
28
+ if (name === "jon") return "You are Jon and you politely disagree.";
29
+ return "You are Ada and you look for common ground.";
30
30
  };
31
31
 
32
32
  export default defineActor(contract, {
@@ -42,15 +42,15 @@ export default defineActor(contract, {
42
42
  const catalog = await context.functions.model_list({});
43
43
  const profiles = catalog.profiles.filter((profile) => profile.driver === "agent" && profile.name !== "coordinator");
44
44
  const first = profiles[0];
45
- if (!first) throw new Error("Keine Rolle außer coordinator; agent_spawn braucht eine.");
45
+ if (!first) throw new Error("No role other than coordinator; agent_spawn needs one.");
46
46
 
47
- await context.functions.run_configure({ title: `Gesprächsrunde: ${topic}` });
47
+ await context.functions.run_configure({ title: `Conversation circle: ${topic}` });
48
48
 
49
49
  const participants: string[] = [];
50
50
  for (const name of ["mira", "jon", "ada"]) {
51
51
  const participant = await context.functions.agent_spawn({
52
52
  handle: name,
53
- prompt: `${roleOf(name)} Antworte ausschließlich mit einem kurzen Satz als nächstem Gesprächsbeitrag.`,
53
+ prompt: `${roleOf(name)} Reply only with one short sentence as the next contribution to the conversation.`,
54
54
  profile: first.name,
55
55
  tools: [],
56
56
  });
@@ -70,10 +70,10 @@ export default defineActor(contract, {
70
70
 
71
71
  await context.functions.actor_input({
72
72
  actor: "@coordinator",
73
- content: `Die Runde steht: ${participants.join(", ")} sind aufgestellt, die Fläche ist aufgeteilt. Thema: "${topic}". `
74
- + `Führe genau ${rounds} Gesprächsrunden durch: in jeder Runde ${participants.join(", ")} in dieser Reihenfolge. `
75
- + "Jeder erhält die bisherigen Beiträge. Ändere die Fläche nicht. "
76
- + "Fasse das Gespräch am Ende in drei Sätzen zusammen.",
73
+ content: `The circle is ready: ${participants.join(", ")} are set up, the surface is split. Topic: "${topic}". `
74
+ + `Run exactly ${rounds} conversation rounds: in each round ${participants.join(", ")} in this order. `
75
+ + "Each one receives the previous contributions. Do not change the surface. "
76
+ + "At the end, summarize the conversation in three sentences.",
77
77
  });
78
78
 
79
79
  context.state.replace({ built: true });
@@ -13,7 +13,7 @@ export const setupContext = (profiles = [{ name: "coordinator", driver: "agent"
13
13
  return { name: value.name, actor: value.actor, views: 1, active: true };
14
14
  }
15
15
  return name === "model_list" ? {
16
- profiles: profiles.map((profile) => ({ ...profile, description: "Testprofil", turnTimeoutMs: null,
16
+ profiles: profiles.map((profile) => ({ ...profile, description: "Test profile", turnTimeoutMs: null,
17
17
  isolateWorkspace: false, provider: "test", model: "test" })), models: [],
18
18
  } : name === "actor_input" ? [] : null;
19
19
  }]));
@@ -3,31 +3,31 @@ import test from "node:test";
3
3
  import program from "../src/server.ts";
4
4
  import { setupContext, startInput } from "./helpers.ts";
5
5
 
6
- test("Thema und Rundenzahl steuern Teilnehmer, Fläche und Auftrag", async () => {
6
+ test("topic and number of rounds control participants, surface, and task", async () => {
7
7
  const { calls, context } = setupContext();
8
- await program.onInput!(startInput({ topic: "Teamfrühstück", rounds: 3 }), context);
8
+ await program.onInput!(startInput({ topic: "Team breakfast", rounds: 3 }), context);
9
9
  assert.deepEqual(calls.filter((call) => call.name === "agent_spawn").map((call) => (call.input as { handle: string }).handle), ["mira", "jon", "ada"]);
10
- assert.deepEqual(calls.find((call) => call.name === "run_configure")?.input, { title: "Gesprächsrunde: Teamfrühstück" });
10
+ assert.deepEqual(calls.find((call) => call.name === "run_configure")?.input, { title: "Conversation circle: Team breakfast" });
11
11
  const layout = calls.find((call) => call.name === "canvas_layout_replace")?.input as { root: unknown };
12
12
  assert.deepEqual(layout.root, { direction: "vertical", weights: [1, 1], children: [
13
13
  { entity: "@mira" },
14
14
  { direction: "horizontal", weights: [1, 1], children: [{ entity: "@jon" }, { entity: "@ada" }] },
15
15
  ] });
16
- assert.match(JSON.stringify(calls.at(-1)), /genau 3 Gesprächsrunden/);
16
+ assert.match(JSON.stringify(calls.at(-1)), /exactly 3 conversation rounds/);
17
17
  assert.deepEqual(context.state.read(), { built: true });
18
18
  const completedCalls = calls.length;
19
19
  await program.onInput!(startInput(null), context);
20
20
  assert.equal(calls.length, completedCalls);
21
21
  });
22
22
 
23
- test("null hat einen ausdrücklichen Standard, ungültige Werte lösen keine Wirkung aus", async () => {
23
+ test("null has an explicit default, invalid values have no effect", async () => {
24
24
  const initial = setupContext();
25
25
  await program.onInput!(startInput(null), initial.context);
26
- assert.match(JSON.stringify(initial.calls), /Sollten Innenstädte autofrei werden/);
27
- assert.match(JSON.stringify(initial.calls.at(-1)), /genau 2 Gesprächsrunden/);
26
+ assert.match(JSON.stringify(initial.calls), /Should city centers become car-free/);
27
+ assert.match(JSON.stringify(initial.calls.at(-1)), /exactly 2 conversation rounds/);
28
28
  for (const input of [{ topic: "Plan" }, { topic: "", rounds: 2 }, { topic: "Plan", rounds: 6 }, { topic: "Plan", rounds: 1.5 }, { topic: "Plan", rounds: 2, extra: true }, "Plan"]) {
29
29
  const { calls, context } = setupContext();
30
- await assert.rejects(async () => program.onInput!(startInput(input), context), /Startwert braucht topic/);
30
+ await assert.rejects(async () => program.onInput!(startInput(input), context), /start value needs topic/);
31
31
  assert.deepEqual(calls, []);
32
32
  assert.deepEqual(context.state.read(), {});
33
33
  }
@@ -1,24 +1,24 @@
1
1
  ---
2
- title: Lernnachmittag
3
- description: "Eine vorbereitete Parallelrunde zeigt zwei unabhängig arbeitende KI-Helfer und einen TypeScript-Sammler. Die Mini-App übernimmt einmalig je eine Antwort."
2
+ title: Learning afternoon
3
+ description: "A prepared parallel round shows two independently working AI helpers and a TypeScript collector. The mini-app takes over one answer from each exactly once."
4
4
  order: 150
5
5
  coordinator: false
6
- tags: Run-Scripts, Anwendungsfall, Konzeptdemo, Mini-Apps, TypeScript-Actors, Agententeams, Subscriptions, Primary-Actor
6
+ tags: Run scripts, Use case, Concept demo, Mini-apps, TypeScript actors, Agent teams, Subscriptions, Primary actor
7
7
  ---
8
8
 
9
- Das vorbereitete TypeScript-Programm richtet zwei KI-Helfer ohne Werkzeuge ein und zeigt seine
10
- eigene Mini-App. Beide verwenden die Rolle `standard`. Ein Koordinator ist nicht nötig;
11
- der TypeScript-Actor steuert den Ablauf und ist der Primary-Actor.
9
+ The prepared TypeScript program sets up two AI helpers without tools and shows its
10
+ own mini-app. Both use the role `standard`. A coordinator is not needed;
11
+ the TypeScript actor controls the flow and is the primary actor.
12
12
 
13
- Erst "Ideen sammeln" beauftragt die beiden Helfer: Helfer A schlägt ein einfaches Experiment
14
- vor, Helfer B ein kleines Lernquiz. Jeder liefert genau eine Idee für einen Lernnachmittag mit
15
- Grundschulkindern. Die Aufträge sind unabhängig und werden gleichzeitig abgeschickt. Die App
16
- zeigt den Stand jedes Helfers und übernimmt seine abgeschlossene Antwort in die gemeinsame
17
- Ergebnisliste. Die Ideen sind echte Modellantworten und werden nicht fachlich geprüft.
13
+ Only "Collect ideas" assigns the two helpers: Helper A suggests a simple experiment,
14
+ Helper B a small learning quiz. Each delivers exactly one idea for a learning afternoon with
15
+ primary school children. The tasks are independent and are sent at the same time. The app
16
+ shows the status of each helper and takes its completed answer into the shared
17
+ result list. The ideas are real model answers and are not checked for subject-matter accuracy.
18
18
 
19
- Ein Fehler bei einem Helfer lässt das Ergebnis des anderen stehen. Leere Antworten und
20
- unterbrochene Modell-Turns erscheinen als Fehler. Der Ablauf startet einmal und wiederholt
21
- weder Aufträge noch fehlgeschlagene Antworten automatisch. Für neue Ideen beginnt ein neuer Run.
22
- Die Vorlage benötigt keine Startwerte und löst vor dem Button keinen Modellaufruf aus.
19
+ An error in one helper leaves the result of the other in place. Empty answers and
20
+ interrupted model turns appear as errors. The flow starts once and repeats
21
+ neither tasks nor failed answers automatically. For new ideas, start a new run.
22
+ The template needs no start values and triggers no model call before the button.
23
23
 
24
- Die Homepage verwendet dieselbe React-Ansicht mit ausdrücklich markierten Vorschaudaten.
24
+ The homepage uses the same React view with explicitly marked preview data.
@@ -3,7 +3,7 @@
3
3
  "private": true,
4
4
  "type": "module",
5
5
  "ragents": {
6
- "title": "Lernnachmittag",
6
+ "title": "Learning afternoon",
7
7
  "backend": "src/server.ts",
8
8
  "views": [{ "id": "main", "client": "src/client.tsx" }]
9
9
  }
@@ -1 +1 @@
1
- Wenn Du die Experimentaufgabe erhältst, schlage eine Beobachtung vor, die Kinder mit einfachen Alltagsmaterialien gemeinsam machen können. Beschreibe das benötigte Material, die Durchführung und was die Kinder dabei entdecken können. Vermeide Feuer, gefährliche Stoffe und aufwendige Geräte.
1
+ When you receive the experiment task, suggest an observation that children can make together with simple everyday materials. Describe the materials needed, the procedure, and what the children can discover. Avoid fire, dangerous substances, and elaborate equipment.
@@ -1,5 +1,5 @@
1
- Du lieferst genau eine konkrete Idee für einen Lernnachmittag mit Grundschulkindern. Zwei Helfer arbeiten unabhängig voneinander; die Anwendung sammelt ihre Antworten automatisch.
1
+ You deliver exactly one concrete idea for a learning afternoon with primary school children. Two helpers work independently of each other; the application collects their answers automatically.
2
2
 
3
- Deine nächste Nachricht nennt Deine konkrete Aufgabe. Bearbeite ausschließlich diese Aufgabe, auch wenn der gemeinsame Ablauf weitere Schritte beschreibt. Übernimm weder die Aufgabe des anderen Helfers noch die Sammlung.
3
+ Your next message names your concrete task. Work only on this task, even if the shared flow describes further steps. Take over neither the other helper's task nor the collection.
4
4
 
5
- Antworte auf Deutsch als kurzer normaler Text: ein Titel und zwei bis drei Sätze zu Material und Ablauf. Keine Rückfragen, keine Werkzeuge, keine weiteren Aufgaben. Wähle bei offenen Einzelheiten selbst eine einfache, altersgerechte Lösung. Halte den Vorschlag mit einfachen Materialien und ohne gefährliche Experimente umsetzbar.
5
+ Answer in English as a short normal text: a title and two to three sentences on materials and procedure. No questions, no tools, no further tasks. For open details, choose a simple, age-appropriate solution yourself. Keep the suggestion feasible with simple materials and without dangerous experiments.
@@ -1 +1 @@
1
- Wenn Du die Quizaufgabe erhältst, schlage ein kurzes gemeinsames Wissensspiel vor. Nenne ein kindgerechtes Thema, erkläre die Spielweise und gib eine kleine Beispielfrage. Das Spiel soll mit einfachen Materialien auskommen und alle Kinder beteiligen.
1
+ When you receive the quiz task, suggest a short knowledge game to play together. Name a child-friendly topic, explain how the game is played, and give a small sample question. The game should need only simple materials and involve all children.
@@ -26,7 +26,7 @@ const contract = {
26
26
  }, { additionalProperties: false }),
27
27
  functions: {
28
28
  start: {
29
- label: "Ideen sammeln",
29
+ label: "Collect ideas",
30
30
  input: Type.Object({}, { additionalProperties: false }),
31
31
  output: Type.Object({}, { additionalProperties: false }),
32
32
  capabilities: ["actor_input"],
@@ -61,12 +61,12 @@ export default defineActor(contract, {
61
61
  onInput: async (input, context) => {
62
62
  const state = context.state.read();
63
63
  if (state.board && !input.event && input.content !== startMarker) {
64
- throw new Error("Der Lernnachmittag versteht keine freien Chatnachrichten. Verwende den Startknopf der Mini-App; für neue Ideen ist ein neuer Run nötig.");
64
+ throw new Error("The learning afternoon does not understand free chat messages. Use the start button of the mini-app; new ideas need a new run.");
65
65
  }
66
66
  if (!state.board) {
67
67
  const catalog = await context.functions.model_list({});
68
68
  const profile = catalog.profiles.find((entry) => entry.driver === "agent" && entry.name === "standard");
69
- if (!profile) throw new Error("Die Rolle standard fehlt.");
69
+ if (!profile) throw new Error("The role standard is missing.");
70
70
  const prompt = await workflowInstructions(learningWorkflow, "helper", readPrompt);
71
71
  const helpers = await Promise.all(initialState.helpers.map(async (helper) => {
72
72
  const actor = await context.functions.agent_spawn({ handle: `learning-${helper.id}`, displayName: helper.label, profile: profile.name, prompt, tools: [] });
@@ -92,11 +92,11 @@ export default defineActor(contract, {
92
92
  });
93
93
  const results = await Promise.allSettled(state.board.helpers.map(async (helper): Promise<HelperState> => {
94
94
  const step = helperSteps.find((entry) => entry.id === helper.id);
95
- if (!step) throw new Error(`Unbekannter Helfer: ${helper.id}`);
95
+ if (!step) throw new Error(`Unknown helper: ${helper.id}`);
96
96
  const content = step.goal;
97
97
  const events = await context.functions.actor_input({ actor: `@learning-${helper.id}`, content });
98
98
  const queued = events.find((event) => event.type === "actor.input.enqueued");
99
- if (!queued || queued.type !== "actor.input.enqueued") throw new Error("Der Auftrag wurde nicht bestätigt.");
99
+ if (!queued || queued.type !== "actor.input.enqueued") throw new Error("The task was not confirmed.");
100
100
  return { ...helper, inputId: queued.payload.inputId, status: "working" };
101
101
  }));
102
102
  const helpers = state.board.helpers.map((helper, index): HelperState => {
@@ -104,7 +104,7 @@ export default defineActor(contract, {
104
104
  return result.status === "fulfilled" ? result.value : { ...helper, status: "error", error: result.reason instanceof Error ? result.reason.message : String(result.reason) };
105
105
  });
106
106
  const board = boardWith(helpers);
107
- if (board.phase !== "working") await context.functions.event_unsubscribe({ subscriptionId: subscription.subscriptionId, reason: "Beide Aufträge sind beendet." });
107
+ if (board.phase !== "working") await context.functions.event_unsubscribe({ subscriptionId: subscription.subscriptionId, reason: "Both tasks have ended." });
108
108
  context.state.replace({ board, subscriptionId: subscription.subscriptionId });
109
109
  return;
110
110
  }
@@ -114,7 +114,7 @@ export default defineActor(contract, {
114
114
  const helper = state.board.helpers.find((entry) => entry.actorId === event.sourceActorId && entry.status === "working");
115
115
  if (!helper) return;
116
116
  const next = await (async (): Promise<HelperState | undefined> => {
117
- if (event.type === "actor.stopped") return { ...helper, status: "error", error: "Der Helfer wurde gestoppt." };
117
+ if (event.type === "actor.stopped") return { ...helper, status: "error", error: "The helper was stopped." };
118
118
  if (event.type !== "turn.finished" && event.type !== "turn.interrupted") return;
119
119
  const payload = event.payload;
120
120
  const turnId = payload.turnId;
@@ -126,12 +126,12 @@ export default defineActor(contract, {
126
126
  const text = events.filter((entry) => entry.type === "model.output.completed" && entry.payload.turnId === turnId)
127
127
  .map((entry) => typeof entry.payload.text === "string" ? entry.payload.text.trim() : "").filter(Boolean).join("\n\n");
128
128
  if (event.type === "turn.finished" && payload.outcome === "completed" && text) return { ...helper, text, status: "complete" };
129
- const error = typeof payload.reason === "string" && payload.reason.trim() ? payload.reason : "Der Helfer hat keine Idee geliefert.";
129
+ const error = typeof payload.reason === "string" && payload.reason.trim() ? payload.reason : "The helper delivered no idea.";
130
130
  return { ...helper, status: "error", error };
131
131
  })();
132
132
  if (!next) return;
133
133
  const board = boardWith(state.board.helpers.map((entry) => entry.id === next.id ? next : entry));
134
- if (board.phase !== "working") await context.functions.event_unsubscribe({ subscriptionId: state.subscriptionId!, reason: "Beide Aufträge sind beendet." });
134
+ if (board.phase !== "working") await context.functions.event_unsubscribe({ subscriptionId: state.subscriptionId!, reason: "Both tasks have ended." });
135
135
  context.state.replace({ ...state, board });
136
136
  },
137
137
  });
@@ -22,7 +22,7 @@ function setup(options: { missingProfile?: boolean; failDispatch?: string; befor
22
22
  "model_list", "agent_spawn", "canvas_layout_replace", "run_configure", "actor_input", "event_subscribe", "event_unsubscribe", "event_query",
23
23
  ].map((name) => [name, async (input: unknown) => {
24
24
  calls.push({ name, input });
25
- if (name === "model_list") return { profiles: options.missingProfile ? [] : [{ name: "standard", driver: "agent", description: "Testprofil", turnTimeoutMs: null, isolateWorkspace: false, provider: "test", model: "test" }], models: [] };
25
+ if (name === "model_list") return { profiles: options.missingProfile ? [] : [{ name: "standard", driver: "agent", description: "Test profile", turnTimeoutMs: null, isolateWorkspace: false, provider: "test", model: "test" }], models: [] };
26
26
  if (name === "agent_spawn") {
27
27
  const handle = (input as { handle: string }).handle;
28
28
  return { id: `actor-${handle}`, handle };
@@ -32,7 +32,7 @@ function setup(options: { missingProfile?: boolean; failDispatch?: string; befor
32
32
  if (name === "actor_input") {
33
33
  const actor = (input as { actor: string }).actor;
34
34
  await options.beforeDispatch?.(actor);
35
- if (actor === options.failDispatch) throw new Error("Auftrag konnte nicht gesendet werden.");
35
+ if (actor === options.failDispatch) throw new Error("Task could not be sent.");
36
36
  return [{ type: "actor.input.enqueued", payload: { actorId: `actor-${actor.slice(1)}`, inputId: `input-${actor.slice(1)}` } }];
37
37
  }
38
38
  return null;
@@ -56,7 +56,7 @@ async function complete(context: ReturnType<typeof setup>["context"], helper: st
56
56
  await program.onInput(eventOf(helper, "turn.finished", { outcome: "completed" }), context);
57
57
  }
58
58
 
59
- test("Start richtet nur zwei reine Helfer und die eigene App ein; erst der Button stellt einen Auftrag an den Besitzer", async () => {
59
+ test("start sets up only two plain helpers and its own app; only the button sends a task to the owner", async () => {
60
60
  const { context, calls } = setup();
61
61
  await program.onInput(setupInput, context);
62
62
  assert.equal(context.state.read().board?.phase, "ready");
@@ -68,7 +68,7 @@ test("Start richtet nur zwei reine Helfer und die eigene App ein; erst der Butto
68
68
  assert.equal(calls.some((call) => call.name === "actor_input" || call.name === "event_subscribe"), false);
69
69
  const before = structuredClone(context.state.read());
70
70
  const callCount = calls.length;
71
- await assert.rejects(async () => program.onInput(setupInput, context), /keine freien Chatnachrichten/);
71
+ await assert.rejects(async () => program.onInput(setupInput, context), /does not understand free chat messages/);
72
72
  assert.deepEqual(context.state.read(), before);
73
73
  assert.equal(calls.length, callCount);
74
74
  await program.functions.start({}, context);
@@ -76,13 +76,13 @@ test("Start richtet nur zwei reine Helfer und die eigene App ein; erst der Butto
76
76
  assert.equal(context.state.read().board?.phase, "ready");
77
77
  });
78
78
 
79
- test("der Input-Handler abonniert zuerst und sendet beide unabhängigen Aufträge parallel genau einmal", async () => {
79
+ test("the input handler subscribes first and sends both independent tasks in parallel exactly once", async () => {
80
80
  const pending: (() => void)[] = [];
81
81
  const { context, calls } = setup({ beforeDispatch: () => new Promise<void>((resolve) => pending.push(resolve)) });
82
82
  await program.onInput(setupInput, context);
83
83
  const starting = program.onInput(startInput, context);
84
84
  for (let attempt = 0; attempt < 20 && pending.length < 2; attempt++) await Promise.resolve();
85
- assert.equal(pending.length, 2, "Beide Inputs beginnen, bevor einer fertig ist.");
85
+ assert.equal(pending.length, 2, "Both inputs begin before one finishes.");
86
86
  assert.equal(calls.filter((call) => call.name === "event_subscribe").length, 1);
87
87
  for (const resolve of pending) resolve();
88
88
  await starting;
@@ -93,104 +93,104 @@ test("der Input-Handler abonniert zuerst und sendet beide unabhängigen Aufträg
93
93
  });
94
94
 
95
95
  for (const phase of ["ready", "working", "complete"]) {
96
- test(`freie Chatnachrichten werden bei ${phase} abgelehnt und erhalten die Ideen`, async () => {
96
+ test(`free chat messages are rejected when ${phase} and keep the ideas`, async () => {
97
97
  const { context, calls } = setup();
98
98
  if (phase === "ready") {
99
99
  await program.onInput(setupInput, context);
100
100
  } else {
101
101
  await begin(context);
102
- await complete(context, "experiment", "Die Experimentidee ist fertig.");
103
- if (phase === "complete") await complete(context, "quiz", "Die Quizidee ist fertig.");
102
+ await complete(context, "experiment", "The experiment idea is ready.");
103
+ if (phase === "complete") await complete(context, "quiz", "The quiz idea is ready.");
104
104
  }
105
105
  assert.equal(context.state.read().board?.phase, phase);
106
106
  const before = structuredClone(context.state.read());
107
107
  const callCount = calls.length;
108
- const content = "Sammle bitte noch einmal neue Ideen für den Lernnachmittag.";
109
- await assert.rejects(async () => program.onInput(inputOf(content), context), /keine freien Chatnachrichten.*Startknopf.*neuer Run/);
108
+ const content = "Please collect new ideas for the learning afternoon again.";
109
+ await assert.rejects(async () => program.onInput(inputOf(content), context), /does not understand free chat messages.*start button.*new run/);
110
110
  assert.deepEqual(context.state.read(), before);
111
111
  assert.equal(calls.length, callCount);
112
112
  if (phase === "ready") {
113
113
  await program.onInput(startInput, context);
114
114
  assert.equal(context.state.read().board?.phase, "working");
115
115
  } else if (phase === "working") {
116
- await complete(context, "quiz", "Die Quizidee ist fertig.");
116
+ await complete(context, "quiz", "The quiz idea is ready.");
117
117
  assert.equal(context.state.read().board?.phase, "complete");
118
- assert.equal(context.state.read().board?.helpers[0]?.text, "Die Experimentidee ist fertig.");
118
+ assert.equal(context.state.read().board?.helpers[0]?.text, "The experiment idea is ready.");
119
119
  }
120
120
  });
121
121
  }
122
122
 
123
123
  for (const order of [["experiment", "quiz"], ["quiz", "experiment"]]) {
124
- test(`sammelt Antworten in beliebiger Reihenfolge: ${order.join(", ")}`, async () => {
124
+ test(`collects answers in any order: ${order.join(", ")}`, async () => {
125
125
  const { context, calls } = setup();
126
126
  await begin(context);
127
- await complete(context, order[0]!, "Erste echte Antwort");
127
+ await complete(context, order[0]!, "First real answer");
128
128
  assert.equal(context.state.read().board?.phase, "working");
129
- await complete(context, order[1]!, "Zweite echte Antwort");
129
+ await complete(context, order[1]!, "Second real answer");
130
130
  const board = context.state.read().board!;
131
131
  assert.equal(board.phase, "complete");
132
- assert.equal(board.helpers.find((helper) => helper.id === order[0])?.text, "Erste echte Antwort");
133
- assert.equal(board.helpers.find((helper) => helper.id === order[1])?.text, "Zweite echte Antwort");
132
+ assert.equal(board.helpers.find((helper) => helper.id === order[0])?.text, "First real answer");
133
+ assert.equal(board.helpers.find((helper) => helper.id === order[1])?.text, "Second real answer");
134
134
  assert.equal(calls.filter((call) => call.name === "event_unsubscribe").length, 1);
135
- for (let count = 0; count < 10; count++) await complete(context, order[0]!, "Späte Antwort");
135
+ for (let count = 0; count < 10; count++) await complete(context, order[0]!, "Late answer");
136
136
  assert.deepEqual(context.state.read().board, board);
137
137
  assert.equal(calls.filter((call) => call.name === "actor_input").length, 2);
138
138
  });
139
139
  }
140
140
 
141
- test("ignoriert falsche Actors, Inputs, Turns, Abos und doppelte Antworten", async () => {
141
+ test("ignores wrong actors, inputs, turns, subscriptions, and duplicate answers", async () => {
142
142
  const { context } = setup();
143
143
  await program.onInput(setupInput, context);
144
144
  await program.onInput(startInput, context);
145
- record(context, "experiment", "turn.started", { inputId: "fremd", turnId: "fremd" });
146
- record(context, "experiment", "model.output.completed", { text: "Fremd", turnId: "fremd" });
145
+ record(context, "experiment", "turn.started", { inputId: "foreign", turnId: "foreign" });
146
+ record(context, "experiment", "model.output.completed", { text: "Foreign", turnId: "foreign" });
147
147
  record(context, "experiment", "turn.started", { inputId: "input-learning-experiment" });
148
- record(context, "experiment", "model.output.completed", { text: "Meine Idee" });
148
+ record(context, "experiment", "model.output.completed", { text: "My idea" });
149
149
  const before = context.state.read();
150
150
  await program.onInput(eventOf("foreign", "turn.finished", { outcome: "completed" }), context);
151
- await program.onInput(eventOf("experiment", "turn.finished", { outcome: "completed", turnId: "fremd" }), context);
152
- await program.onInput({ ...eventOf("experiment", "turn.finished", { outcome: "completed" }), subscriptionId: "fremd" }, context);
151
+ await program.onInput(eventOf("experiment", "turn.finished", { outcome: "completed", turnId: "foreign" }), context);
152
+ await program.onInput({ ...eventOf("experiment", "turn.finished", { outcome: "completed" }), subscriptionId: "foreign" }, context);
153
153
  assert.deepEqual(context.state.read(), before);
154
154
  const answer = eventOf("experiment", "turn.finished", { outcome: "completed" });
155
155
  await program.onInput(answer, context);
156
156
  await program.onInput(answer, context);
157
- assert.equal(context.state.read().board?.helpers[0]?.text, "Meine Idee");
157
+ assert.equal(context.state.read().board?.helpers[0]?.text, "My idea");
158
158
  assert.equal(context.state.read().board?.helpers[0]?.status, "complete");
159
159
  });
160
160
 
161
161
  for (const ending of ["failed", "interrupted", "empty", "stopped"]) {
162
- test(`ein ${ending}-Ergebnis erhält die erfolgreiche Idee des anderen Helfers`, async () => {
162
+ test(`a ${ending} result keeps the successful idea of the other helper`, async () => {
163
163
  const { context, calls } = setup();
164
164
  await begin(context);
165
- await complete(context, "quiz", "Das Quiz ist fertig.");
166
- await program.onInput(eventOf("experiment", ending === "stopped" ? "actor.stopped" : ending === "interrupted" ? "turn.interrupted" : "turn.finished", { outcome: ending === "empty" ? "completed" : "failed", ...(ending === "empty" ? {} : { reason: "Modellfehler" }) }), context);
165
+ await complete(context, "quiz", "The quiz is ready.");
166
+ await program.onInput(eventOf("experiment", ending === "stopped" ? "actor.stopped" : ending === "interrupted" ? "turn.interrupted" : "turn.finished", { outcome: ending === "empty" ? "completed" : "failed", ...(ending === "empty" ? {} : { reason: "Model error" }) }), context);
167
167
  assert.equal(context.state.read().board?.phase, "error");
168
168
  assert.equal(context.state.read().board?.helpers[0]?.status, "error");
169
169
  assert.ok(context.state.read().board?.helpers[0]?.error);
170
- assert.equal(context.state.read().board?.helpers[1]?.text, "Das Quiz ist fertig.");
170
+ assert.equal(context.state.read().board?.helpers[1]?.text, "The quiz is ready.");
171
171
  assert.equal(calls.filter((call) => call.name === "actor_input").length, 2);
172
172
  assert.equal(calls.filter((call) => call.name === "event_unsubscribe").length, 1);
173
173
  });
174
174
  }
175
175
 
176
- test("ein gescheiterter Input verhindert den Auftrag des anderen Helfers nicht", async () => {
176
+ test("a failed input does not prevent the other helper's task", async () => {
177
177
  const { context } = setup({ failDispatch: "@learning-experiment" });
178
178
  await begin(context);
179
179
  assert.equal(context.state.read().board?.helpers[0]?.status, "error");
180
180
  assert.equal(context.state.read().board?.phase, "working");
181
- await complete(context, "quiz", "Eine Quizidee.");
181
+ await complete(context, "quiz", "A quiz idea.");
182
182
  assert.equal(context.state.read().board?.phase, "error");
183
183
  assert.equal(context.state.read().board?.helpers[1]?.status, "complete");
184
184
  });
185
185
 
186
- test("ohne Standardprofil wird kein Helfer angelegt", async () => {
186
+ test("without a standard profile no helper is created", async () => {
187
187
  const { context, calls } = setup({ missingProfile: true });
188
- await assert.rejects(async () => program.onInput(setupInput, context), /Rolle standard fehlt/);
188
+ await assert.rejects(async () => program.onInput(setupInput, context), /role standard is missing/);
189
189
  assert.deepEqual(calls.map((call) => call.name), ["model_list"]);
190
190
  assert.deepEqual(context.state.read(), {});
191
191
  });
192
192
 
193
- test("der gemeinsame Ablauf liefert Helferaufträge, Prompt und parallele Graphzweige", async () => {
193
+ test("the shared flow provides helper tasks, prompt, and parallel graph branches", async () => {
194
194
  const { learningWorkflow, helperSteps } = await import("../src/workflow.ts");
195
195
  const { learningWorkflowState, initialState } = await import("../src/state.ts");
196
196
  const { workflowGraph } = await import("@ragents/workflow");
@@ -200,15 +200,15 @@ test("der gemeinsame Ablauf liefert Helferaufträge, Prompt und parallele Graphz
200
200
  assert.equal(spawns.length, helperSteps.length);
201
201
  for (const spawn of spawns) {
202
202
  const prompt = (spawn.input as { prompt: string }).prompt;
203
- assert.match(prompt, /Bearbeite ausschließlich diese Aufgabe/);
204
- assert.match(prompt, /Beispielfrage/);
205
- assert.match(prompt, /gefährliche Stoffe/);
203
+ assert.match(prompt, /Work only on this task/);
204
+ assert.match(prompt, /sample question/);
205
+ assert.match(prompt, /dangerous substances/);
206
206
  }
207
207
  assert.deepEqual(calls.filter((call) => call.name === "actor_input").map((call) => (call.input as { content: string }).content), helperSteps.map((step) => step.goal));
208
208
  const initial = workflowGraph(learningWorkflow, learningWorkflowState(initialState));
209
209
  assert.ok(initial.nodes.every((node) => node.status === "pending"));
210
210
  assert.deepEqual(initial.edges.map((edge) => [edge.source, edge.target]), [["experiment", "collect"], ["quiz", "collect"]]);
211
- await complete(context, "quiz", "Eine Quizidee.");
211
+ await complete(context, "quiz", "A quiz idea.");
212
212
  const partial = workflowGraph(learningWorkflow, learningWorkflowState(context.state.read().board!));
213
213
  assert.deepEqual(partial.nodes.map((node) => [node.id, node.status]), [["experiment", "active"], ["quiz", "done"], ["collect", "active"]]);
214
214
  await program.onInput(eventOf("experiment", "actor.stopped", {}), context);
@@ -1,12 +1,12 @@
1
1
  ---
2
- title: Moderierte Runde ohne Koordinator
3
- description: "Ein vorbereiteter Aufbau zeigt einen Run, der von Anfang an ohne Koordinator arbeitet. Der Moderator wird Primary-Actor und direkter Ansprechpartner im Chat."
2
+ title: Moderated round without coordinator
3
+ description: "A prepared setup shows a run that works without a coordinator from the start. The moderator becomes the primary actor and your direct contact in the chat."
4
4
  order: 130
5
5
  coordinator: false
6
- tags: Run-Scripts, Anwendungsfall, Konzeptdemo, Primary-Actor, Agententeams
6
+ tags: Run scripts, Use case, Concept demo, Primary actor, Agent teams
7
7
  ---
8
8
 
9
- Referenzfall für `coordinator: false`: der Host spawnt keinen Koordinator, das Script wählt mit
10
- `run_configure` den Moderator als Primary-Actor und setzt den Run-Titel. Der Chat bindet sich, sobald
11
- der Primary-Actor feststeht. Der Moderator behält seinen eigenen Actor-Prompt auch als Primary-Actor; den konkreten Auftrag
12
- erhält er über den ersten ActorInput. Ein Startwert `{ "topic": "..." }` setzt das Thema.
9
+ Reference case for `coordinator: false`: the host spawns no coordinator, the script uses
10
+ `run_configure` to choose the moderator as primary actor and sets the run title. The chat binds as soon as
11
+ the primary actor is determined. The moderator keeps its own actor prompt even as primary actor; it receives the concrete task
12
+ through the first ActorInput. A start value `{ "topic": "..." }` sets the topic.
@@ -3,7 +3,7 @@
3
3
  "private": true,
4
4
  "type": "module",
5
5
  "ragents": {
6
- "title": "Moderierte Runde ohne Koordinator",
6
+ "title": "Moderated round without coordinator",
7
7
  "backend": "src/server.ts"
8
8
  }
9
9
  }
@@ -10,7 +10,7 @@ const contract = {
10
10
  type Start = { input: { topic?: string } | null };
11
11
 
12
12
  const guestOf = (name: string): string =>
13
- name === "kai" ? "Du bist Kai, pragmatisch und knapp." : "Du bist Lena, gründlich und abwägend.";
13
+ name === "kai" ? "You are Kai, pragmatic and brief." : "You are Lena, thorough and deliberate.";
14
14
 
15
15
  export default defineActor(contract, {
16
16
  functions: {},
@@ -18,17 +18,17 @@ export default defineActor(contract, {
18
18
  const state = context.state.read();
19
19
  if (state && state.built) return;
20
20
  const start = JSON.parse(input.content) as Start;
21
- const topic = start.input && start.input.topic ? start.input.topic : "Was macht ein gutes Team aus?";
21
+ const topic = start.input && start.input.topic ? start.input.topic : "What makes a good team?";
22
22
 
23
23
  const catalog = await context.functions.model_list({});
24
24
  const profiles = catalog.profiles.filter((profile) => profile.driver === "agent" && profile.name !== "coordinator");
25
25
  const first = profiles[0];
26
- if (!first) throw new Error("Keine Rolle außer coordinator; agent_spawn braucht eine.");
26
+ if (!first) throw new Error("No role other than coordinator; agent_spawn needs one.");
27
27
 
28
28
  const moderator = await context.functions.agent_spawn({
29
29
  handle: "moderator",
30
30
  displayName: "Moderator",
31
- prompt: "Du moderierst eine Gesprächsrunde zwischen dem Benutzer und zwei Gästen.",
31
+ prompt: "You moderate a conversation circle between the user and two guests.",
32
32
  profile: first.name,
33
33
  tools: ["actor_input", "event_subscribe", "event_unsubscribe", "event_subscription_list"],
34
34
  });
@@ -36,7 +36,7 @@ export default defineActor(contract, {
36
36
  for (const name of ["kai", "lena"]) {
37
37
  const guest = await context.functions.agent_spawn({
38
38
  handle: name,
39
- prompt: `${guestOf(name)} Antworte mit höchstens zwei Sätzen.`,
39
+ prompt: `${guestOf(name)} Reply with at most two sentences.`,
40
40
  profile: first.name,
41
41
  tools: [],
42
42
  });
@@ -44,15 +44,15 @@ export default defineActor(contract, {
44
44
  }
45
45
 
46
46
  await context.functions.run_configure({
47
- title: `Moderierte Runde: ${topic}`,
47
+ title: `Moderated round: ${topic}`,
48
48
  primaryActor: `@${moderator.handle}`,
49
49
  });
50
50
 
51
51
  await context.functions.actor_input({
52
52
  actor: `@${moderator.handle}`,
53
- content: "Du bist der Moderator dieses Runs und sprichst direkt mit dem Benutzer im Chat; einen Koordinator gibt es nicht. "
54
- + `Deine Gäste sind ${guests.join(" und ")}. Hole ihre Beiträge ein und beziehe sie in die Gesprächsrunde ein. `
55
- + `Thema: "${topic}". Begrüße den Benutzer mit zwei Sätzen, nenne das Thema und frage, ob er die erste Frage stellt oder du beginnen sollst.`,
53
+ content: "You are the moderator of this run and talk directly with the user in the chat; there is no coordinator. "
54
+ + `Your guests are ${guests.join(" and ")}. Gather their contributions and include them in the conversation circle. `
55
+ + `Topic: "${topic}". Greet the user with two sentences, name the topic, and ask whether they want to ask the first question or whether you should begin.`,
56
56
  });
57
57
 
58
58
  context.state.replace({ built: true });
@@ -13,7 +13,7 @@ export const setupContext = (profiles = [{ name: "coordinator", driver: "agent"
13
13
  return { name: value.name, actor: value.actor, views: 1, active: true };
14
14
  }
15
15
  return name === "model_list" ? {
16
- profiles: profiles.map((profile) => ({ ...profile, description: "Testprofil", turnTimeoutMs: null,
16
+ profiles: profiles.map((profile) => ({ ...profile, description: "Test profile", turnTimeoutMs: null,
17
17
  isolateWorkspace: false, provider: "test", model: "test" })), models: [],
18
18
  } : name === "actor_input" ? [] : null;
19
19
  }]));