@schlenkr/ragents 0.1.10 → 0.1.12

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (748) hide show
  1. package/README.md +1 -1
  2. package/apps/server/package.json +1 -1
  3. package/apps/server/src/access-projection.ts +6 -6
  4. package/apps/server/src/access-service.ts +3 -3
  5. package/apps/server/src/access-session.ts +19 -19
  6. package/apps/server/src/api/contracts.ts +29 -29
  7. package/apps/server/src/api/core-methods.ts +17 -17
  8. package/apps/server/src/api/delivery.ts +2 -2
  9. package/apps/server/src/api/reference.ts +27 -27
  10. package/apps/server/src/api/rights.ts +18 -18
  11. package/apps/server/src/chat-handler.ts +5 -5
  12. package/apps/server/src/config-definition.ts +37 -10
  13. package/apps/server/src/config-file.ts +49 -49
  14. package/apps/server/src/config.ts +2 -0
  15. package/apps/server/src/data-directory.ts +2 -2
  16. package/apps/server/src/external-access.ts +1 -1
  17. package/apps/server/src/folder-install.ts +1 -1
  18. package/apps/server/src/help-files.ts +1 -1
  19. package/apps/server/src/host-api.json +6 -1
  20. package/apps/server/src/host-api.ts +3 -2
  21. package/apps/server/src/host-record.ts +3 -3
  22. package/apps/server/src/host-resolution-hooks.mjs +4 -4
  23. package/apps/server/src/host-version.ts +17 -17
  24. package/apps/server/src/host-web.ts +5 -5
  25. package/apps/server/src/main.ts +6 -6
  26. package/apps/server/src/missing-environment.ts +6 -6
  27. package/apps/server/src/parent-watch.ts +4 -4
  28. package/apps/server/src/plugin-build/build.ts +38 -38
  29. package/apps/server/src/plugin-build/host-api-names.ts +7 -7
  30. package/apps/server/src/plugin-build/plugin-description.ts +15 -15
  31. package/apps/server/src/plugin-build/typecheck.ts +1 -1
  32. package/apps/server/src/plugin-support/actor-programs/app-project.ts +19 -19
  33. package/apps/server/src/plugin-support/actor-programs/client-compiler.ts +4 -4
  34. package/apps/server/src/plugin-support/actor-programs/client-contracts.ts +11 -11
  35. package/apps/server/src/plugin-support/actor-programs/contract.ts +17 -17
  36. package/apps/server/src/plugin-support/actor-programs/runtime-libraries.ts +1 -1
  37. package/apps/server/src/plugin-support/actor-programs/workflow/index.ts +5 -5
  38. package/apps/server/src/plugin-support/actor-programs/workflow/prompt-reader.ts +2 -2
  39. package/apps/server/src/plugin-support/chat-display-policy.ts +2 -2
  40. package/apps/server/src/plugin-support/front-matter.ts +6 -6
  41. package/apps/server/src/plugin-support/http.ts +2 -2
  42. package/apps/server/src/plugin-support/language-server/contract.ts +8 -8
  43. package/apps/server/src/plugin-support/language-server/plugin.ts +2 -2
  44. package/apps/server/src/plugin-support/language-server/snapshot-method.ts +1 -1
  45. package/apps/server/src/plugin-support/language-server/tools.ts +11 -11
  46. package/apps/server/src/plugin-support/model-aliases.ts +30 -20
  47. package/apps/server/src/plugin-support/model-choice.ts +15 -15
  48. package/apps/server/src/plugin-support/model-completion.ts +44 -23
  49. package/apps/server/src/plugin-support/model-providers.ts +170 -0
  50. package/apps/server/src/plugin-support/model-upstreams.ts +1 -1
  51. package/apps/server/src/plugin-support/native-typescript-child.ts +4 -4
  52. package/apps/server/src/plugin-support/native-typescript-executor.ts +12 -12
  53. package/apps/server/src/plugin-support/plugin-config.ts +3 -3
  54. package/apps/server/src/plugin-support/plugin-folder.ts +2 -2
  55. package/apps/server/src/plugin-support/plugins-root.ts +2 -2
  56. package/apps/server/src/plugin-support/process-sandbox.ts +39 -39
  57. package/apps/server/src/plugin-support/product-model-settings-contract.ts +3 -3
  58. package/apps/server/src/plugin-support/product-model-settings.ts +10 -10
  59. package/apps/server/src/plugin-support/product-relay.ts +9 -9
  60. package/apps/server/src/plugin-support/product-start-options.ts +4 -4
  61. package/apps/server/src/plugin-support/prompt.ts +1 -1
  62. package/apps/server/src/plugin-support/provision.ts +8 -8
  63. package/apps/server/src/plugin-support/run-scripts.ts +17 -17
  64. package/apps/server/src/plugin-support/skills.ts +18 -18
  65. package/apps/server/src/plugin-support/start-entries-contract.ts +17 -17
  66. package/apps/server/src/plugin-support/start-options-contract.ts +5 -5
  67. package/apps/server/src/plugin-support/system-prompts.ts +11 -11
  68. package/apps/server/src/plugin-support/thinking-level.ts +2 -2
  69. package/apps/server/src/plugin-support/tool-availability.ts +2 -2
  70. package/apps/server/src/plugin-support/workspace-ownership.ts +5 -5
  71. package/apps/server/src/plugin-support/workspace-sandbox-host.ts +37 -37
  72. package/apps/server/src/plugin-support/zip.ts +7 -7
  73. package/apps/server/src/profile/bundle-manifest.ts +27 -27
  74. package/apps/server/src/profile/compose.ts +12 -7
  75. package/apps/server/src/profile/plugin-discovery.ts +14 -14
  76. package/apps/server/src/profile/provisioning.ts +5 -5
  77. package/apps/server/src/profile-target.ts +10 -10
  78. package/apps/server/src/protocol.ts +2 -2
  79. package/apps/server/src/provider.ts +62 -57
  80. package/apps/server/src/ragents/actor-chat-history.ts +8 -8
  81. package/apps/server/src/ragents/chat-text-positions.ts +2 -2
  82. package/apps/server/src/ragents/coordinator.ts +2 -2
  83. package/apps/server/src/ragents/engine.ts +23 -23
  84. package/apps/server/src/ragents/global-chat.ts +8 -8
  85. package/apps/server/src/ragents/host-services.ts +6 -3
  86. package/apps/server/src/ragents/journal-chat-events.ts +1 -1
  87. package/apps/server/src/ragents/run-owner.ts +2 -2
  88. package/apps/server/src/ragents/session.ts +49 -49
  89. package/apps/server/src/ragents/typescript-tools.ts +12 -12
  90. package/apps/server/src/ragents/workspace-runtime.ts +28 -28
  91. package/apps/server/src/rpc/dispatcher.ts +19 -19
  92. package/apps/server/src/rpc/http-transport.ts +11 -11
  93. package/apps/server/src/rpc/stdio-transport.ts +3 -3
  94. package/apps/server/src/run-preparation-input.ts +5 -5
  95. package/apps/server/src/run-preparation.ts +24 -24
  96. package/apps/server/src/run-transfer.ts +39 -39
  97. package/apps/server/src/server.ts +48 -48
  98. package/apps/server/src/settings.ts +1 -1
  99. package/apps/server/src/startup.ts +3 -3
  100. package/apps/server/src/title-compactor.ts +9 -9
  101. package/apps/server/src/title-settings.ts +3 -3
  102. package/apps/server/src/web-bundles.ts +2 -2
  103. package/apps/server/src/web-stylesheet.ts +2 -2
  104. package/apps/web/dist/assets/{highlighted-body-KPVGNVTW-BO4wLQtE.js → highlighted-body-KPVGNVTW-CpPi6QLr.js} +1 -1
  105. package/apps/web/dist/assets/main-DJmCHGzM.js +11 -0
  106. package/apps/web/dist/assets/mermaid-HWGCJPDP-q-mf1kLN.js +608 -0
  107. package/apps/web/dist/assets/runPanel-nk_aMxSn.js +21 -0
  108. package/apps/web/dist/help/guide-access.html +5 -5
  109. package/apps/web/dist/help/guide-access.md +2 -2
  110. package/apps/web/dist/help/guide-clients.html +53 -54
  111. package/apps/web/dist/help/guide-clients.md +50 -51
  112. package/apps/web/dist/help/guide-distributed.html +12 -7
  113. package/apps/web/dist/help/guide-distributed.md +9 -4
  114. package/apps/web/dist/help/guide-functions.html +3 -3
  115. package/apps/web/dist/help/guide-getting-started.html +24 -15
  116. package/apps/web/dist/help/guide-getting-started.md +22 -12
  117. package/apps/web/dist/help/guide-ideas.html +3 -3
  118. package/apps/web/dist/help/guide-plugins.html +5 -4
  119. package/apps/web/dist/help/guide-plugins.md +2 -1
  120. package/apps/web/dist/help/guide-programs.html +3 -3
  121. package/apps/web/dist/help/guide-runtime.html +6 -6
  122. package/apps/web/dist/help/guide-runtime.md +3 -3
  123. package/apps/web/dist/help/guide.html +3 -3
  124. package/apps/web/dist/help/index.html +196 -144
  125. package/apps/web/dist/help/mini-app.css +6 -0
  126. package/apps/web/dist/help/mini-app.js +14 -14
  127. package/apps/web/dist/host-web.json +91 -91
  128. package/apps/web/dist/index.html +3 -3
  129. package/apps/web/dist/run-panel.html +3 -3
  130. package/apps/web/package.json +1 -1
  131. package/apps/web/src/AccessContext.tsx +15 -15
  132. package/apps/web/src/App.tsx +13 -13
  133. package/apps/web/src/DiffCode.tsx +2 -2
  134. package/apps/web/src/HelpDialog.tsx +3 -3
  135. package/apps/web/src/Overview.tsx +13 -13
  136. package/apps/web/src/PluginActivation.ts +1 -1
  137. package/apps/web/src/PluginChat.tsx +15 -15
  138. package/apps/web/src/PluginFailureNotice.tsx +1 -1
  139. package/apps/web/src/PluginRegistry.tsx +44 -44
  140. package/apps/web/src/RunPreparationChat.tsx +11 -11
  141. package/apps/web/src/RunStore.ts +1 -1
  142. package/apps/web/src/SessionList.tsx +14 -14
  143. package/apps/web/src/SettingsModal.tsx +112 -112
  144. package/apps/web/src/StartOptions.tsx +11 -11
  145. package/apps/web/src/StartSelection.tsx +11 -11
  146. package/apps/web/src/StartTiles.tsx +8 -8
  147. package/apps/web/src/SurfaceShortcuts.tsx +3 -3
  148. package/apps/web/src/ThemeSettings.tsx +8 -8
  149. package/apps/web/src/TitleModelSettings.tsx +13 -13
  150. package/apps/web/src/WorkspacePanel.tsx +9 -9
  151. package/apps/web/src/access-session.ts +4 -4
  152. package/apps/web/src/access-token.ts +5 -5
  153. package/apps/web/src/actor-conversation.ts +3 -3
  154. package/apps/web/src/actor-programs/client-ui/DataTable.tsx +8 -8
  155. package/apps/web/src/actor-programs/client-ui/FilePicker.tsx +4 -4
  156. package/apps/web/src/actor-programs/client-ui/FlowDiagram.tsx +13 -13
  157. package/apps/web/src/actor-programs/client-ui/Viewers.tsx +4 -4
  158. package/apps/web/src/actor-programs/client-ui/WorkflowDiagram.tsx +1 -1
  159. package/apps/web/src/actor-programs/client-ui/file-contracts.d.ts +4 -4
  160. package/apps/web/src/actor-programs/client-ui/file-selection.ts +1 -1
  161. package/apps/web/src/actor-programs/client-ui/viewer-contracts.d.ts +3 -3
  162. package/apps/web/src/api.ts +7 -7
  163. package/apps/web/src/chat/QuasselHost.tsx +1 -1
  164. package/apps/web/src/chat/StoppedActorNotice.tsx +5 -5
  165. package/apps/web/src/chat/chat-target.ts +3 -3
  166. package/apps/web/src/chat/requests.ts +2 -2
  167. package/apps/web/src/chat/useAttachmentCapabilities.ts +2 -2
  168. package/apps/web/src/chat-view-settings.tsx +5 -6
  169. package/apps/web/src/diff-view.css +1 -1
  170. package/apps/web/src/highlighting.css +1 -1
  171. package/apps/web/src/language-server/language-server-plugin.tsx +30 -30
  172. package/apps/web/src/lib/labels.ts +6 -6
  173. package/apps/web/src/main.tsx +4 -4
  174. package/apps/web/src/offered-machines.ts +2 -2
  175. package/apps/web/src/page-opener.tsx +1 -1
  176. package/apps/web/src/panel/ConnectionsPage.tsx +23 -23
  177. package/apps/web/src/panel/LoginForm.tsx +6 -6
  178. package/apps/web/src/panel/PanelDialogs.tsx +22 -22
  179. package/apps/web/src/panel/PanelHeader.tsx +2 -2
  180. package/apps/web/src/panel/PanelPage.tsx +1 -1
  181. package/apps/web/src/panel/RunLine.tsx +4 -4
  182. package/apps/web/src/panel/RunsPage.tsx +15 -15
  183. package/apps/web/src/panel/StartPage.tsx +26 -26
  184. package/apps/web/src/panel/connection-state.ts +9 -9
  185. package/apps/web/src/panel/contract.ts +28 -28
  186. package/apps/web/src/panel.tsx +1 -1
  187. package/apps/web/src/plugin-bootstrap.ts +5 -5
  188. package/apps/web/src/product/ModelControl.tsx +3 -3
  189. package/apps/web/src/product/ProductModelSettings.tsx +16 -16
  190. package/apps/web/src/product/SystemPromptControl.tsx +11 -11
  191. package/apps/web/src/product/model-settings.ts +2 -2
  192. package/apps/web/src/rpc/client.ts +16 -16
  193. package/apps/web/src/rpc.ts +1 -1
  194. package/apps/web/src/run-overview.ts +1 -1
  195. package/apps/web/src/run-panel/RunPanelApp.tsx +39 -39
  196. package/apps/web/src/run-panel/RunPanelHeader.tsx +6 -6
  197. package/apps/web/src/run-panel/RunPanelMenu.tsx +6 -6
  198. package/apps/web/src/run-panel/RunPanelRail.tsx +4 -4
  199. package/apps/web/src/run-panel/RunPanelWorkspace.tsx +3 -3
  200. package/apps/web/src/run-panel/clipboard.ts +3 -3
  201. package/apps/web/src/run-panel/host-contract.ts +5 -5
  202. package/apps/web/src/run-panel/host.ts +15 -15
  203. package/apps/web/src/run-panel/input-bridge.ts +1 -1
  204. package/apps/web/src/run-panel/run-panel-location.ts +5 -5
  205. package/apps/web/src/run-panel/use-session-list.ts +1 -1
  206. package/apps/web/src/run-panel/workspace-state.ts +3 -3
  207. package/apps/web/src/run-panel.tsx +4 -4
  208. package/apps/web/src/run-preparation.ts +2 -2
  209. package/apps/web/src/run-view.ts +3 -3
  210. package/apps/web/src/settings-contributions.ts +32 -32
  211. package/apps/web/src/theme.ts +9 -9
  212. package/apps/web/src/title-model-settings.ts +6 -6
  213. package/apps/web/src/ui/ListDetail.tsx +9 -9
  214. package/apps/web/src/ui/dialog.tsx +2 -2
  215. package/apps/web/src/ui/modal-controller.ts +3 -3
  216. package/apps/web/src/ui/modal.tsx +2 -2
  217. package/apps/web/src/ui/popover.tsx +1 -1
  218. package/apps/web/src/ui/relative-time.ts +8 -8
  219. package/apps/web/src/ui/startup-notice.tsx +2 -2
  220. package/apps/web/src/ui/state-icon.tsx +1 -1
  221. package/apps/web/src/ui/state-vocabulary.ts +16 -16
  222. package/apps/web/src/ui/stop-button.tsx +2 -2
  223. package/bundles/ragents.activity/ragents-bundle.json +3 -3
  224. package/bundles/ragents.activity/web/classes.json +1 -1
  225. package/bundles/ragents.activity/web/index.js +1 -1
  226. package/bundles/ragents.activity/web/index.js.map +2 -2
  227. package/bundles/ragents.actor-programs/ragents-bundle.json +3 -3
  228. package/bundles/ragents.actor-programs/server/index.js +225 -225
  229. package/bundles/ragents.actor-programs/server/index.js.map +2 -2
  230. package/bundles/ragents.actor-programs/web/classes.json +1 -1
  231. package/bundles/ragents.actor-programs/web/index.js +1 -1
  232. package/bundles/ragents.actor-programs/web/index.js.map +3 -3
  233. package/bundles/ragents.ask/ragents-bundle.json +3 -3
  234. package/bundles/ragents.ask/server/chunks/{chunk-PDJO75SQ.js → chunk-YOV27MAR.js} +2 -2
  235. package/bundles/ragents.ask/server/chunks/chunk-YOV27MAR.js.map +7 -0
  236. package/bundles/ragents.ask/server/exports/server/contract.js +1 -1
  237. package/bundles/ragents.ask/server/index.js +23 -23
  238. package/bundles/ragents.ask/server/index.js.map +2 -2
  239. package/bundles/ragents.ask/web/chunks/{chunk-WFN4374U.js → chunk-D6NNB5DS.js} +1 -1
  240. package/bundles/ragents.ask/web/chunks/chunk-D6NNB5DS.js.map +7 -0
  241. package/bundles/ragents.ask/web/chunks/{chunk-MBRPS477.js → chunk-IQBHK7MV.js} +2 -2
  242. package/bundles/ragents.ask/web/chunks/{chunk-MBRPS477.js.map → chunk-IQBHK7MV.js.map} +3 -3
  243. package/bundles/ragents.ask/web/chunks/chunk-PWFIAMX4.js +2 -0
  244. package/bundles/ragents.ask/web/chunks/chunk-PWFIAMX4.js.map +7 -0
  245. package/bundles/ragents.ask/web/chunks/chunk-QHGKEESD.js +2 -0
  246. package/bundles/ragents.ask/web/chunks/chunk-QHGKEESD.js.map +7 -0
  247. package/bundles/ragents.ask/web/classes.json +1 -1
  248. package/bundles/ragents.ask/web/exports/ask-payload.js +1 -1
  249. package/bundles/ragents.ask/web/exports/web/QuestionCard.js +1 -1
  250. package/bundles/ragents.ask/web/exports/web/api.js +1 -1
  251. package/bundles/ragents.ask/web/index.js +1 -1
  252. package/bundles/ragents.ask/web/index.js.map +2 -2
  253. package/bundles/ragents.browser/executor/index.mjs +35 -35
  254. package/bundles/ragents.browser/executor/index.mjs.map +2 -2
  255. package/bundles/ragents.browser/ragents-bundle.json +3 -3
  256. package/bundles/ragents.browser/server/chunks/{chunk-CWLX4VA5.js → chunk-PYEISBNE.js} +1 -1
  257. package/bundles/ragents.browser/server/chunks/{chunk-CWLX4VA5.js.map → chunk-PYEISBNE.js.map} +1 -1
  258. package/bundles/ragents.browser/server/exports/server/contract.js +1 -1
  259. package/bundles/ragents.browser/server/index.js +31 -31
  260. package/bundles/ragents.browser/server/index.js.map +2 -2
  261. package/bundles/ragents.browser/skills/browser-testing/SKILL.md +30 -30
  262. package/bundles/ragents.documents/prompt.hbs +1 -1
  263. package/bundles/ragents.documents/ragents-bundle.json +3 -3
  264. package/bundles/ragents.documents/server/chunks/{chunk-QIECRZ7C.js → chunk-KMZWOVTI.js} +3 -3
  265. package/bundles/ragents.documents/server/chunks/{chunk-QIECRZ7C.js.map → chunk-KMZWOVTI.js.map} +2 -2
  266. package/bundles/ragents.documents/server/exports/contract.js +1 -1
  267. package/bundles/ragents.documents/server/index.js +26 -26
  268. package/bundles/ragents.documents/server/index.js.map +2 -2
  269. package/bundles/ragents.documents/web/classes.json +1 -1
  270. package/bundles/ragents.documents/web/index.js +1 -1
  271. package/bundles/ragents.documents/web/index.js.map +3 -3
  272. package/bundles/ragents.lsp-fsharp/executor/index.mjs +4 -4
  273. package/bundles/ragents.lsp-fsharp/executor/index.mjs.map +2 -2
  274. package/bundles/ragents.lsp-fsharp/ragents-bundle.json +3 -3
  275. package/bundles/ragents.lsp-fsharp/server/index.js +5 -5
  276. package/bundles/ragents.lsp-fsharp/server/index.js.map +2 -2
  277. package/bundles/ragents.lsp-fsharp/web/index.js +1 -1
  278. package/bundles/ragents.lsp-fsharp/web/index.js.map +2 -2
  279. package/bundles/ragents.lsp-roslyn/executor/index.mjs +3 -3
  280. package/bundles/ragents.lsp-roslyn/executor/index.mjs.map +2 -2
  281. package/bundles/ragents.lsp-roslyn/ragents-bundle.json +3 -3
  282. package/bundles/ragents.lsp-roslyn/server/index.js +17 -17
  283. package/bundles/ragents.lsp-roslyn/server/index.js.map +2 -2
  284. package/bundles/ragents.lsp-roslyn/web/index.js +1 -1
  285. package/bundles/ragents.lsp-roslyn/web/index.js.map +2 -2
  286. package/bundles/ragents.lsp-typescript/executor/index.mjs +2 -2
  287. package/bundles/ragents.lsp-typescript/executor/index.mjs.map +2 -2
  288. package/bundles/ragents.lsp-typescript/ragents-bundle.json +3 -3
  289. package/bundles/ragents.lsp-typescript/server/index.js.map +1 -1
  290. package/bundles/ragents.lsp-typescript/web/index.js +1 -1
  291. package/bundles/ragents.lsp-typescript/web/index.js.map +2 -2
  292. package/bundles/ragents.model-relay/ragents-bundle.json +8 -4
  293. package/bundles/ragents.model-relay/server/index.js +25 -21
  294. package/bundles/ragents.model-relay/server/index.js.map +2 -2
  295. package/bundles/ragents.orchestration/ragents-bundle.json +3 -3
  296. package/bundles/ragents.orchestration/server/index.js +28 -28
  297. package/bundles/ragents.orchestration/server/index.js.map +2 -2
  298. package/bundles/ragents.orchestration/web/chunks/{chunk-OSKPH6SZ.js → chunk-CFMJD5ZI.js} +2 -2
  299. package/bundles/ragents.orchestration/web/chunks/chunk-HOBLI364.js +2 -0
  300. package/bundles/ragents.orchestration/web/chunks/{chunk-OQYCNYXN.js.map → chunk-HOBLI364.js.map} +2 -2
  301. package/bundles/ragents.orchestration/web/chunks/{chunk-ODMMQGX2.js → chunk-UCIMT2R4.js} +2 -2
  302. package/bundles/ragents.orchestration/web/classes.json +1 -1
  303. package/bundles/ragents.orchestration/web/exports/web/program-slot.js +1 -1
  304. package/bundles/ragents.orchestration/web/exports/web/surface-entities.js +1 -1
  305. package/bundles/ragents.orchestration/web/index.js +8 -8
  306. package/bundles/ragents.orchestration/web/index.js.map +2 -2
  307. package/bundles/ragents.overseer/ragents-bundle.json +3 -3
  308. package/bundles/ragents.overseer/server/index.js +98 -98
  309. package/bundles/ragents.overseer/server/index.js.map +2 -2
  310. package/bundles/ragents.overseer/web/classes.json +1 -1
  311. package/bundles/ragents.overseer/web/index.js +1 -1
  312. package/bundles/ragents.overseer/web/index.js.map +2 -2
  313. package/bundles/ragents.processes/ragents-bundle.json +3 -3
  314. package/bundles/ragents.processes/server/index.js +11 -11
  315. package/bundles/ragents.processes/server/index.js.map +2 -2
  316. package/bundles/ragents.processes/web/classes.json +1 -1
  317. package/bundles/ragents.processes/web/index.js +3 -3
  318. package/bundles/ragents.processes/web/index.js.map +2 -2
  319. package/bundles/ragents.product/ragents-bundle.json +3 -3
  320. package/bundles/ragents.product/server/index.js +12 -13
  321. package/bundles/ragents.product/server/index.js.map +2 -2
  322. package/bundles/ragents.product/web/classes.json +1 -1
  323. package/bundles/ragents.product/web/index.js +1 -1
  324. package/bundles/ragents.product/web/index.js.map +2 -2
  325. package/bundles/ragents.profile-distribution/ragents-bundle.json +3 -3
  326. package/bundles/ragents.profile-distribution/server/index.js +31 -31
  327. package/bundles/ragents.profile-distribution/server/index.js.map +2 -2
  328. package/bundles/ragents.reference/ragents-bundle.json +3 -3
  329. package/bundles/ragents.reference/run-scripts/balcony-wizard/RUN.md +19 -19
  330. package/bundles/ragents.reference/run-scripts/balcony-wizard/actors/balcony-app/package.json +2 -2
  331. package/bundles/ragents.reference/run-scripts/balcony-wizard/actors/balcony-app/src/client.tsx +14 -14
  332. package/bundles/ragents.reference/run-scripts/balcony-wizard/actors/balcony-app/src/conversation.ts +2 -2
  333. package/bundles/ragents.reference/run-scripts/balcony-wizard/actors/balcony-app/tests/conversation.test.ts +49 -49
  334. package/bundles/ragents.reference/run-scripts/balcony-wizard/package.json +1 -1
  335. package/bundles/ragents.reference/run-scripts/balcony-wizard/src/server.ts +9 -9
  336. package/bundles/ragents.reference/run-scripts/balcony-wizard/tests/program.test.ts +9 -9
  337. package/bundles/ragents.reference/run-scripts/conversation-circle/RUN.md +7 -7
  338. package/bundles/ragents.reference/run-scripts/conversation-circle/package.json +1 -1
  339. package/bundles/ragents.reference/run-scripts/conversation-circle/src/server.ts +13 -13
  340. package/bundles/ragents.reference/run-scripts/conversation-circle/tests/helpers.ts +1 -1
  341. package/bundles/ragents.reference/run-scripts/conversation-circle/tests/program.test.ts +8 -8
  342. package/bundles/ragents.reference/run-scripts/learning-afternoon/RUN.md +16 -16
  343. package/bundles/ragents.reference/run-scripts/learning-afternoon/package.json +1 -1
  344. package/bundles/ragents.reference/run-scripts/learning-afternoon/prompts/experiment.md +1 -1
  345. package/bundles/ragents.reference/run-scripts/learning-afternoon/prompts/helper.md +3 -3
  346. package/bundles/ragents.reference/run-scripts/learning-afternoon/prompts/quiz.md +1 -1
  347. package/bundles/ragents.reference/run-scripts/learning-afternoon/src/server.ts +9 -9
  348. package/bundles/ragents.reference/run-scripts/learning-afternoon/tests/program.test.ts +39 -39
  349. package/bundles/ragents.reference/run-scripts/moderated-round/RUN.md +7 -7
  350. package/bundles/ragents.reference/run-scripts/moderated-round/package.json +1 -1
  351. package/bundles/ragents.reference/run-scripts/moderated-round/src/server.ts +9 -9
  352. package/bundles/ragents.reference/run-scripts/moderated-round/tests/helpers.ts +1 -1
  353. package/bundles/ragents.reference/run-scripts/moderated-round/tests/program.test.ts +6 -6
  354. package/bundles/ragents.reference/run-scripts/shared-actor-list/RUN.md +12 -12
  355. package/bundles/ragents.reference/run-scripts/shared-actor-list/actors/shared-list/package.json +2 -2
  356. package/bundles/ragents.reference/run-scripts/shared-actor-list/actors/shared-list/src/contract.ts +3 -3
  357. package/bundles/ragents.reference/run-scripts/shared-actor-list/actors/shared-list/tests/program.test.ts +4 -4
  358. package/bundles/ragents.reference/run-scripts/shared-actor-list/package.json +1 -1
  359. package/bundles/ragents.reference/run-scripts/shared-actor-list/src/server.ts +11 -11
  360. package/bundles/ragents.reference/run-scripts/shared-actor-list/tests/helpers.ts +1 -1
  361. package/bundles/ragents.reference/run-scripts/shared-actor-list/tests/program.test.ts +13 -13
  362. package/bundles/ragents.reference/run-scripts/word-game/RUN.md +18 -18
  363. package/bundles/ragents.reference/run-scripts/word-game/package.json +2 -2
  364. package/bundles/ragents.reference/run-scripts/word-game/src/client.tsx +1 -1
  365. package/bundles/ragents.reference/run-scripts/word-game/src/contract.ts +2 -2
  366. package/bundles/ragents.reference/run-scripts/word-game/src/server.ts +16 -16
  367. package/bundles/ragents.reference/run-scripts/word-game/tests/program.test.ts +39 -39
  368. package/bundles/ragents.reference/skills/100-shared-actor-list/SKILL.md +5 -5
  369. package/bundles/ragents.reference/skills/110-all-card-slots/SKILL.md +5 -5
  370. package/bundles/ragents.reference/skills/150-editorial-workbench/SKILL.md +5 -5
  371. package/bundles/ragents.reference/skills/160-learning-companion/SKILL.md +5 -5
  372. package/bundles/ragents.reference/skills/170-photo-collection/SKILL.md +5 -5
  373. package/bundles/ragents.reference/skills/180-decision-workbench/SKILL.md +5 -5
  374. package/bundles/ragents.reference/skills/190-review-queue/SKILL.md +5 -5
  375. package/bundles/ragents.reference/skills/20-circle-of-four/SKILL.md +5 -5
  376. package/bundles/ragents.reference/skills/200-typescript-diagnostics/SKILL.md +5 -5
  377. package/bundles/ragents.reference/skills/210-moderator-handover/SKILL.md +5 -5
  378. package/bundles/ragents.reference/skills/220-actor-approval-list/SKILL.md +5 -5
  379. package/bundles/ragents.reference/skills/230-shared-state-views/SKILL.md +5 -5
  380. package/bundles/ragents.reference/skills/240-live-result-list/SKILL.md +5 -5
  381. package/bundles/ragents.reference/skills/250-balcony-wizard/SKILL.md +5 -5
  382. package/bundles/ragents.reference/skills/30-llm-without-runtime-knowledge/SKILL.md +5 -5
  383. package/bundles/ragents.reference/skills/35-actor-input-fifo/SKILL.md +5 -5
  384. package/bundles/ragents.reference/skills/40-subscription-matrix/SKILL.md +5 -5
  385. package/bundles/ragents.reference/skills/50-subscription-removal/SKILL.md +5 -5
  386. package/bundles/ragents.reference/skills/60-stop-in-the-circle/SKILL.md +5 -5
  387. package/bundles/ragents.reference/skills/65-artifact-least-privilege/SKILL.md +5 -5
  388. package/bundles/ragents.reference/skills/70-headless-counter/SKILL.md +5 -5
  389. package/bundles/ragents.reference/skills/75-lsp-demo/SKILL.md +5 -5
  390. package/bundles/ragents.reference/skills/80-actor-text-analysis/SKILL.md +5 -5
  391. package/bundles/ragents.reference/skills/90-actor-notes/SKILL.md +5 -5
  392. package/bundles/ragents.reference/skills/95-hello-world/SKILL.md +5 -5
  393. package/bundles/ragents.reference/skills/decision-brief/SKILL.md +24 -24
  394. package/bundles/ragents.reference/skills/learning-sprint/SKILL.md +24 -24
  395. package/bundles/ragents.reference/web/classes.json +1 -1
  396. package/bundles/ragents.reference/web/index.js +1 -1
  397. package/bundles/ragents.reference/web/index.js.map +2 -2
  398. package/bundles/ragents.todo/ragents-bundle.json +3 -3
  399. package/bundles/ragents.todo/server/index.js +5 -8
  400. package/bundles/ragents.todo/server/index.js.map +2 -2
  401. package/bundles/ragents.todo/web/classes.json +1 -1
  402. package/bundles/ragents.todo/web/index.js +1 -1
  403. package/bundles/ragents.todo/web/index.js.map +2 -2
  404. package/bundles/ragents.transcript/ragents-bundle.json +3 -3
  405. package/bundles/ragents.transcript/server/index.js +11 -11
  406. package/bundles/ragents.transcript/server/index.js.map +2 -2
  407. package/bundles/ragents.watch/ragents-bundle.json +3 -3
  408. package/bundles/ragents.watch/server/index.js +48 -48
  409. package/bundles/ragents.watch/server/index.js.map +2 -2
  410. package/bundles/ragents.workspace/ragents-bundle.json +3 -3
  411. package/bundles/ragents.workspace/server/index.js +83 -83
  412. package/bundles/ragents.workspace/server/index.js.map +2 -2
  413. package/bundles/ragents.workspace/web/classes.json +1 -1
  414. package/bundles/ragents.workspace/web/index.js +1 -1
  415. package/bundles/ragents.workspace/web/index.js.map +2 -2
  416. package/package.json +4 -4
  417. package/packages/agent/dist/core/model-runtime.d.ts +7 -2
  418. package/packages/agent/dist/index.d.ts +1 -1
  419. package/packages/agent/dist/loop/agent-loop.d.ts +2 -2
  420. package/packages/agent/src/core/compaction/utils.ts +1 -1
  421. package/packages/agent/src/core/model-runtime.ts +45 -5
  422. package/packages/agent/src/index.ts +1 -1
  423. package/packages/agent/src/loop/agent-loop.ts +2 -2
  424. package/packages/ai/dist/models.d.ts +1 -0
  425. package/packages/ai/dist/models.generated.d.ts +4544 -983
  426. package/packages/ai/dist/providers/openrouter.models.d.ts +4544 -983
  427. package/packages/ai/src/api/ai-sdk.ts +33 -7
  428. package/packages/ai/src/api-registry.ts +1 -1
  429. package/packages/ai/src/index.ts +2 -2
  430. package/packages/ai/src/models.generated.ts +1 -1
  431. package/packages/ai/src/models.ts +1 -1
  432. package/packages/ai/src/providers/openrouter.models.ts +3725 -552
  433. package/packages/ragents/src/access.ts +12 -12
  434. package/packages/ragents/src/agents/actor-input.ts +33 -33
  435. package/packages/ragents/src/agents/catalog.ts +1 -1
  436. package/packages/ragents/src/agents/delivery.ts +17 -17
  437. package/packages/ragents/src/agents/plugins.ts +1 -1
  438. package/packages/ragents/src/agents/scheduler.ts +7 -7
  439. package/packages/ragents/src/agents/schemas.ts +1 -1
  440. package/packages/ragents/src/agents/tool-orientation.ts +4 -4
  441. package/packages/ragents/src/agents/tools.ts +20 -20
  442. package/packages/ragents/src/agents/toolset.ts +5 -5
  443. package/packages/ragents/src/agents/workspaces.ts +1 -1
  444. package/packages/ragents/src/domain/events.ts +1 -1
  445. package/packages/ragents/src/domain/model.ts +5 -5
  446. package/packages/ragents/src/drivers/agent-runtime.ts +1 -1
  447. package/packages/ragents/src/drivers/agent-turn.ts +4 -4
  448. package/packages/ragents/src/drivers/agent.ts +2 -2
  449. package/packages/ragents/src/drivers/attachments.ts +4 -4
  450. package/packages/ragents/src/http/contracts.ts +14 -14
  451. package/packages/ragents/src/http/methods.ts +6 -6
  452. package/packages/ragents/src/plugin-host.ts +119 -119
  453. package/packages/ragents/src/plugin-types.ts +16 -16
  454. package/packages/ragents/src/rpc/contract.ts +5 -5
  455. package/packages/ragents/src/rpc/contribution.ts +2 -2
  456. package/packages/ragents/src/rpc/peer.ts +11 -11
  457. package/packages/ragents/src/rpc/protocol.ts +2 -2
  458. package/packages/ragents/src/runtime/decisions/turns.ts +1 -1
  459. package/packages/ragents/src/runtime/journal-storage.ts +1 -1
  460. package/packages/ragents/src/runtime/journal.ts +10 -10
  461. package/packages/ragents/src/runtime/orchestration.ts +8 -8
  462. package/packages/ragents/src/runtime/stop.ts +2 -2
  463. package/packages/ragents/src/script/mediators.ts +35 -35
  464. package/packages/ragents/src/typescript/async-compiler.ts +14 -14
  465. package/packages/ragents/src/typescript/compiler-worker.ts +2 -2
  466. package/packages/ragents/src/typescript/compiler.ts +7 -7
  467. package/packages/ragents/src/typescript/snippet.ts +5 -5
  468. package/packages/workspace-executor/src/bash-launch.ts +13 -13
  469. package/packages/workspace-executor/src/commands.ts +18 -18
  470. package/packages/workspace-executor/src/context.ts +15 -15
  471. package/packages/workspace-executor/src/contributions.ts +44 -44
  472. package/packages/workspace-executor/src/errors.ts +1 -1
  473. package/packages/workspace-executor/src/executor.ts +16 -16
  474. package/packages/workspace-executor/src/files.ts +31 -31
  475. package/packages/workspace-executor/src/index.ts +1 -1
  476. package/packages/workspace-executor/src/language-server/contract.ts +2 -2
  477. package/packages/workspace-executor/src/language-server/diagnostics.ts +4 -4
  478. package/packages/workspace-executor/src/language-server/host.ts +36 -36
  479. package/packages/workspace-executor/src/language-server/json-rpc.ts +4 -4
  480. package/packages/workspace-executor/src/language-server/module.ts +11 -11
  481. package/packages/workspace-executor/src/language-server/roots.ts +3 -3
  482. package/packages/workspace-executor/src/language-server/session.ts +15 -15
  483. package/packages/workspace-executor/src/language-server/workspace-solutions.ts +3 -3
  484. package/packages/workspace-executor/src/managed-process.ts +12 -12
  485. package/packages/workspace-executor/src/module.ts +8 -8
  486. package/packages/workspace-executor/src/modules.ts +3 -3
  487. package/packages/workspace-executor/src/paths.ts +11 -11
  488. package/packages/workspace-executor/src/process-sandbox.ts +3 -3
  489. package/packages/workspace-executor/src/processes/module.ts +3 -3
  490. package/packages/workspace-executor/src/processes/process-table.ts +20 -20
  491. package/packages/workspace-executor/src/processes/scanner.ts +3 -3
  492. package/packages/workspace-executor/src/processes/snapshot.ts +2 -2
  493. package/packages/workspace-executor/src/processes/terminator.ts +13 -13
  494. package/packages/workspace-executor/src/run-folders.ts +3 -3
  495. package/packages/workspace-executor/src/safe-environment.ts +4 -4
  496. package/packages/workspace-executor/src/sandbox-tools.ts +28 -28
  497. package/packages/workspace-executor/src/session-ident.ts +2 -2
  498. package/packages/workspace-executor/src/shell-platform.ts +2 -2
  499. package/packages/workspace-executor/src/tools.ts +5 -5
  500. package/plugins/ragents.activity/web/ActivityHeader.tsx +3 -3
  501. package/plugins/ragents.activity/web/activity.ts +2 -2
  502. package/plugins/ragents.actor-programs/server/access-projections.ts +1 -1
  503. package/plugins/ragents.actor-programs/server/agent-tools.ts +2 -2
  504. package/plugins/ragents.actor-programs/server/capability-resolver.ts +3 -3
  505. package/plugins/ragents.actor-programs/server/controls-template.ts +46 -46
  506. package/plugins/ragents.actor-programs/server/controls-tool.ts +4 -4
  507. package/plugins/ragents.actor-programs/server/limits.ts +3 -3
  508. package/plugins/ragents.actor-programs/server/methods.ts +1 -1
  509. package/plugins/ragents.actor-programs/server/project-diagnostics.ts +8 -8
  510. package/plugins/ragents.actor-programs/server/routes.ts +8 -8
  511. package/plugins/ragents.actor-programs/server/runtime.ts +90 -90
  512. package/plugins/ragents.actor-programs/server/templates.ts +59 -59
  513. package/plugins/ragents.actor-programs/server/test-report.ts +5 -5
  514. package/plugins/ragents.actor-programs/server/tool-contributor.ts +1 -1
  515. package/plugins/ragents.actor-programs/web/ActorViewFrame.tsx +17 -17
  516. package/plugins/ragents.actor-programs/web/AppsPanel.tsx +26 -26
  517. package/plugins/ragents.actor-programs/web/EmbeddedApps.tsx +3 -3
  518. package/plugins/ragents.actor-programs/web/FullscreenHost.tsx +2 -2
  519. package/plugins/ragents.actor-programs/web/FunctionForm.tsx +16 -16
  520. package/plugins/ragents.actor-programs/web/ProgramSource.tsx +5 -5
  521. package/plugins/ragents.actor-programs/web/api.ts +36 -36
  522. package/plugins/ragents.actor-programs/web/bridge.ts +8 -8
  523. package/plugins/ragents.actor-programs/web/chat-state.ts +4 -4
  524. package/plugins/ragents.actor-programs/web/context.ts +1 -1
  525. package/plugins/ragents.actor-programs/web/function-input.ts +6 -6
  526. package/plugins/ragents.actor-programs/web/index.tsx +1 -1
  527. package/plugins/ragents.actor-programs/web/program-state.ts +4 -4
  528. package/plugins/ragents.ask/ask-payload.ts +1 -1
  529. package/plugins/ragents.ask/contract.ts +5 -5
  530. package/plugins/ragents.ask/server/answer-method.ts +1 -1
  531. package/plugins/ragents.ask/server/ask-service.ts +9 -9
  532. package/plugins/ragents.ask/server/ask-tool.ts +10 -10
  533. package/plugins/ragents.ask/server/contract.ts +5 -5
  534. package/plugins/ragents.ask/web/AskActionView.tsx +1 -1
  535. package/plugins/ragents.ask/web/QuestionCard.tsx +22 -22
  536. package/plugins/ragents.ask/web/index.tsx +2 -2
  537. package/plugins/ragents.browser/executor/contract.ts +6 -6
  538. package/plugins/ragents.browser/executor/index.ts +1 -1
  539. package/plugins/ragents.browser/executor/module.ts +6 -6
  540. package/plugins/ragents.browser/executor/pages.ts +32 -32
  541. package/plugins/ragents.browser/executor/playwright.ts +8 -8
  542. package/plugins/ragents.browser/provision.ts +7 -7
  543. package/plugins/ragents.browser/server/browser.ts +14 -14
  544. package/plugins/ragents.browser/server/contract.ts +1 -1
  545. package/plugins/ragents.browser/server/index.ts +1 -1
  546. package/plugins/ragents.browser/server/tools.ts +14 -14
  547. package/plugins/ragents.browser/skills/browser-testing/SKILL.md +30 -30
  548. package/plugins/ragents.documents/contract.ts +2 -2
  549. package/plugins/ragents.documents/prompt.hbs +1 -1
  550. package/plugins/ragents.documents/server/document-write-tool.ts +12 -12
  551. package/plugins/ragents.documents/server/files-route.ts +6 -6
  552. package/plugins/ragents.documents/server/show-document-tool.ts +26 -26
  553. package/plugins/ragents.documents/server/store.ts +1 -1
  554. package/plugins/ragents.documents/web/DocumentViewer.tsx +37 -37
  555. package/plugins/ragents.documents/web/index.tsx +11 -11
  556. package/plugins/ragents.lsp-fsharp/executor.ts +7 -7
  557. package/plugins/ragents.lsp-fsharp/provision.ts +7 -7
  558. package/plugins/ragents.lsp-roslyn/executor.ts +5 -5
  559. package/plugins/ragents.lsp-roslyn/provision.ts +4 -4
  560. package/plugins/ragents.lsp-roslyn/server/index.ts +5 -5
  561. package/plugins/ragents.lsp-roslyn/server/solution-on-start.ts +13 -13
  562. package/plugins/ragents.lsp-typescript/executor.ts +3 -3
  563. package/plugins/ragents.model-relay/server/config.ts +6 -2
  564. package/plugins/ragents.model-relay/server/index.ts +2 -2
  565. package/plugins/ragents.model-relay/server/relay.ts +23 -22
  566. package/plugins/ragents.orchestration/contract.ts +8 -8
  567. package/plugins/ragents.orchestration/server/index.ts +4 -4
  568. package/plugins/ragents.orchestration/server/run-stop-tool.ts +3 -3
  569. package/plugins/ragents.orchestration/server/surface-tool.ts +5 -5
  570. package/plugins/ragents.orchestration/tiled-layout.ts +11 -11
  571. package/plugins/ragents.orchestration/web/ActorChat.tsx +3 -3
  572. package/plugins/ragents.orchestration/web/ActorChatControls.tsx +4 -5
  573. package/plugins/ragents.orchestration/web/ActorChatPreview.tsx +1 -1
  574. package/plugins/ragents.orchestration/web/ActorPopout.tsx +1 -1
  575. package/plugins/ragents.orchestration/web/ActorShortcut.tsx +6 -6
  576. package/plugins/ragents.orchestration/web/ActorSurfaceControls.tsx +15 -15
  577. package/plugins/ragents.orchestration/web/Center.tsx +5 -5
  578. package/plugins/ragents.orchestration/web/DocumentsSection.tsx +2 -2
  579. package/plugins/ragents.orchestration/web/ExecutionsPanel.tsx +15 -15
  580. package/plugins/ragents.orchestration/web/FlowInspector.tsx +103 -103
  581. package/plugins/ragents.orchestration/web/JournalStatus.tsx +11 -11
  582. package/plugins/ragents.orchestration/web/MaterialBody.tsx +2 -2
  583. package/plugins/ragents.orchestration/web/StopRunButton.tsx +6 -6
  584. package/plugins/ragents.orchestration/web/TiledSurface.tsx +9 -9
  585. package/plugins/ragents.orchestration/web/actor-header-settings.ts +5 -5
  586. package/plugins/ragents.orchestration/web/constants.ts +2 -2
  587. package/plugins/ragents.orchestration/web/executions.ts +6 -6
  588. package/plugins/ragents.orchestration/web/format.ts +1 -1
  589. package/plugins/ragents.orchestration/web/index.tsx +2 -2
  590. package/plugins/ragents.orchestration/web/run-panel/AddresseeControl.tsx +7 -7
  591. package/plugins/ragents.orchestration/web/run-panel/AddresseeTree.tsx +8 -8
  592. package/plugins/ragents.orchestration/web/run-panel/RunPanel.tsx +22 -22
  593. package/plugins/ragents.orchestration/web/run-panel/RunPanelSettings.tsx +7 -7
  594. package/plugins/ragents.orchestration/web/run-panel/addressee-tree.ts +13 -13
  595. package/plugins/ragents.orchestration/web/run-panel/run-panel-actors.ts +3 -3
  596. package/plugins/ragents.orchestration/web/run-panel/run-panel-settings.ts +2 -2
  597. package/plugins/ragents.orchestration/web/run-panel/run-panel-startup.ts +3 -3
  598. package/plugins/ragents.orchestration/web/run-panel/run-panel-state.ts +7 -7
  599. package/plugins/ragents.orchestration/web/run-panel/sheet-status.ts +9 -9
  600. package/plugins/ragents.orchestration/web/surface-startup.ts +8 -8
  601. package/plugins/ragents.orchestration/web/surface-view-settings.ts +1 -1
  602. package/plugins/ragents.orchestration/web/tiled-view-settings.ts +1 -1
  603. package/plugins/ragents.overseer/contract.ts +20 -20
  604. package/plugins/ragents.overseer/server/api.ts +6 -6
  605. package/plugins/ragents.overseer/server/coordinator-prompt.ts +10 -10
  606. package/plugins/ragents.overseer/server/coordinator.ts +4 -4
  607. package/plugins/ragents.overseer/server/index.ts +24 -24
  608. package/plugins/ragents.overseer/server/orientation.ts +8 -8
  609. package/plugins/ragents.overseer/server/quick-answer.ts +9 -9
  610. package/plugins/ragents.overseer/server/run-directory.ts +5 -5
  611. package/plugins/ragents.overseer/server/settings.ts +6 -6
  612. package/plugins/ragents.overseer/server/user-location.ts +16 -16
  613. package/plugins/ragents.overseer/web/ModelSettings.tsx +9 -9
  614. package/plugins/ragents.overseer/web/index.tsx +20 -20
  615. package/plugins/ragents.overseer/web/model-settings.ts +1 -1
  616. package/plugins/ragents.overseer/web/quick-answers.ts +2 -2
  617. package/plugins/ragents.processes/contract.ts +5 -5
  618. package/plugins/ragents.processes/server/methods.ts +4 -4
  619. package/plugins/ragents.processes/server/observer.ts +8 -8
  620. package/plugins/ragents.processes/server/run-processes.ts +2 -2
  621. package/plugins/ragents.processes/web/ProcessHeader.tsx +10 -10
  622. package/plugins/ragents.processes/web/processes.ts +10 -10
  623. package/plugins/ragents.product/server/config.ts +1 -1
  624. package/plugins/ragents.product/server/index.ts +4 -4
  625. package/plugins/ragents.product/server/runtime.ts +9 -10
  626. package/plugins/ragents.product/web/index.tsx +1 -1
  627. package/plugins/ragents.profile-distribution/contract.ts +10 -10
  628. package/plugins/ragents.profile-distribution/server/archive.ts +20 -20
  629. package/plugins/ragents.profile-distribution/server/config.ts +2 -2
  630. package/plugins/ragents.profile-distribution/server/index.ts +4 -4
  631. package/plugins/ragents.reference/examples.ts +27 -27
  632. package/plugins/ragents.reference/run-scripts/balcony-wizard/RUN.md +19 -19
  633. package/plugins/ragents.reference/run-scripts/balcony-wizard/actors/balcony-app/package.json +2 -2
  634. package/plugins/ragents.reference/run-scripts/balcony-wizard/actors/balcony-app/src/client.tsx +14 -14
  635. package/plugins/ragents.reference/run-scripts/balcony-wizard/actors/balcony-app/src/conversation.ts +2 -2
  636. package/plugins/ragents.reference/run-scripts/balcony-wizard/actors/balcony-app/tests/conversation.test.ts +49 -49
  637. package/plugins/ragents.reference/run-scripts/balcony-wizard/package.json +1 -1
  638. package/plugins/ragents.reference/run-scripts/balcony-wizard/src/server.ts +9 -9
  639. package/plugins/ragents.reference/run-scripts/balcony-wizard/tests/program.test.ts +9 -9
  640. package/plugins/ragents.reference/run-scripts/conversation-circle/RUN.md +7 -7
  641. package/plugins/ragents.reference/run-scripts/conversation-circle/package.json +1 -1
  642. package/plugins/ragents.reference/run-scripts/conversation-circle/src/server.ts +13 -13
  643. package/plugins/ragents.reference/run-scripts/conversation-circle/tests/helpers.ts +1 -1
  644. package/plugins/ragents.reference/run-scripts/conversation-circle/tests/program.test.ts +8 -8
  645. package/plugins/ragents.reference/run-scripts/learning-afternoon/RUN.md +16 -16
  646. package/plugins/ragents.reference/run-scripts/learning-afternoon/package.json +1 -1
  647. package/plugins/ragents.reference/run-scripts/learning-afternoon/prompts/experiment.md +1 -1
  648. package/plugins/ragents.reference/run-scripts/learning-afternoon/prompts/helper.md +3 -3
  649. package/plugins/ragents.reference/run-scripts/learning-afternoon/prompts/quiz.md +1 -1
  650. package/plugins/ragents.reference/run-scripts/learning-afternoon/src/server.ts +9 -9
  651. package/plugins/ragents.reference/run-scripts/learning-afternoon/tests/program.test.ts +39 -39
  652. package/plugins/ragents.reference/run-scripts/moderated-round/RUN.md +7 -7
  653. package/plugins/ragents.reference/run-scripts/moderated-round/package.json +1 -1
  654. package/plugins/ragents.reference/run-scripts/moderated-round/src/server.ts +9 -9
  655. package/plugins/ragents.reference/run-scripts/moderated-round/tests/helpers.ts +1 -1
  656. package/plugins/ragents.reference/run-scripts/moderated-round/tests/program.test.ts +6 -6
  657. package/plugins/ragents.reference/run-scripts/shared-actor-list/RUN.md +12 -12
  658. package/plugins/ragents.reference/run-scripts/shared-actor-list/actors/shared-list/package.json +2 -2
  659. package/plugins/ragents.reference/run-scripts/shared-actor-list/actors/shared-list/src/contract.ts +3 -3
  660. package/plugins/ragents.reference/run-scripts/shared-actor-list/actors/shared-list/tests/program.test.ts +4 -4
  661. package/plugins/ragents.reference/run-scripts/shared-actor-list/package.json +1 -1
  662. package/plugins/ragents.reference/run-scripts/shared-actor-list/src/server.ts +11 -11
  663. package/plugins/ragents.reference/run-scripts/shared-actor-list/tests/helpers.ts +1 -1
  664. package/plugins/ragents.reference/run-scripts/shared-actor-list/tests/program.test.ts +13 -13
  665. package/plugins/ragents.reference/run-scripts/word-game/RUN.md +18 -18
  666. package/plugins/ragents.reference/run-scripts/word-game/package.json +2 -2
  667. package/plugins/ragents.reference/run-scripts/word-game/src/client.tsx +1 -1
  668. package/plugins/ragents.reference/run-scripts/word-game/src/contract.ts +2 -2
  669. package/plugins/ragents.reference/run-scripts/word-game/src/server.ts +16 -16
  670. package/plugins/ragents.reference/run-scripts/word-game/tests/program.test.ts +39 -39
  671. package/plugins/ragents.reference/skills/100-shared-actor-list/SKILL.md +5 -5
  672. package/plugins/ragents.reference/skills/110-all-card-slots/SKILL.md +5 -5
  673. package/plugins/ragents.reference/skills/150-editorial-workbench/SKILL.md +5 -5
  674. package/plugins/ragents.reference/skills/160-learning-companion/SKILL.md +5 -5
  675. package/plugins/ragents.reference/skills/170-photo-collection/SKILL.md +5 -5
  676. package/plugins/ragents.reference/skills/180-decision-workbench/SKILL.md +5 -5
  677. package/plugins/ragents.reference/skills/190-review-queue/SKILL.md +5 -5
  678. package/plugins/ragents.reference/skills/20-circle-of-four/SKILL.md +5 -5
  679. package/plugins/ragents.reference/skills/200-typescript-diagnostics/SKILL.md +5 -5
  680. package/plugins/ragents.reference/skills/210-moderator-handover/SKILL.md +5 -5
  681. package/plugins/ragents.reference/skills/220-actor-approval-list/SKILL.md +5 -5
  682. package/plugins/ragents.reference/skills/230-shared-state-views/SKILL.md +5 -5
  683. package/plugins/ragents.reference/skills/240-live-result-list/SKILL.md +5 -5
  684. package/plugins/ragents.reference/skills/250-balcony-wizard/SKILL.md +5 -5
  685. package/plugins/ragents.reference/skills/30-llm-without-runtime-knowledge/SKILL.md +5 -5
  686. package/plugins/ragents.reference/skills/35-actor-input-fifo/SKILL.md +5 -5
  687. package/plugins/ragents.reference/skills/40-subscription-matrix/SKILL.md +5 -5
  688. package/plugins/ragents.reference/skills/50-subscription-removal/SKILL.md +5 -5
  689. package/plugins/ragents.reference/skills/60-stop-in-the-circle/SKILL.md +5 -5
  690. package/plugins/ragents.reference/skills/65-artifact-least-privilege/SKILL.md +5 -5
  691. package/plugins/ragents.reference/skills/70-headless-counter/SKILL.md +5 -5
  692. package/plugins/ragents.reference/skills/75-lsp-demo/SKILL.md +5 -5
  693. package/plugins/ragents.reference/skills/80-actor-text-analysis/SKILL.md +5 -5
  694. package/plugins/ragents.reference/skills/90-actor-notes/SKILL.md +5 -5
  695. package/plugins/ragents.reference/skills/95-hello-world/SKILL.md +5 -5
  696. package/plugins/ragents.reference/skills/decision-brief/SKILL.md +24 -24
  697. package/plugins/ragents.reference/skills/learning-sprint/SKILL.md +24 -24
  698. package/plugins/ragents.reference/walkthroughs.ts +128 -128
  699. package/plugins/ragents.reference/web/StartGuides.tsx +23 -23
  700. package/plugins/ragents.todo/contract.ts +0 -3
  701. package/plugins/ragents.todo/server/todo-tool.ts +6 -6
  702. package/plugins/ragents.todo/web/TodoSection.tsx +1 -1
  703. package/plugins/ragents.transcript/server/transcript.ts +11 -11
  704. package/plugins/ragents.watch/server/condition.ts +4 -4
  705. package/plugins/ragents.watch/server/functions.ts +27 -27
  706. package/plugins/ragents.watch/server/observation.ts +2 -2
  707. package/plugins/ragents.watch/server/service.ts +14 -14
  708. package/plugins/ragents.workspace/client/transport.ts +1 -1
  709. package/plugins/ragents.workspace/client/workspace-client.ts +63 -63
  710. package/plugins/ragents.workspace/contract.ts +46 -46
  711. package/plugins/ragents.workspace/server/binding.ts +20 -20
  712. package/plugins/ragents.workspace/server/browse-route.ts +8 -8
  713. package/plugins/ragents.workspace/server/clients.ts +50 -50
  714. package/plugins/ragents.workspace/server/config.ts +7 -7
  715. package/plugins/ragents.workspace/server/index.ts +3 -3
  716. package/plugins/ragents.workspace/server/runtime.ts +26 -26
  717. package/plugins/ragents.workspace/server/shell-platform.ts +1 -1
  718. package/plugins/ragents.workspace/web/FileBrowser.tsx +10 -10
  719. package/plugins/ragents.workspace/web/WorkspaceBinding.tsx +24 -24
  720. package/plugins/ragents.workspace/web/index.tsx +1 -1
  721. package/ragents.config.core.ts +1 -1
  722. package/ragents.config.developer.ts +3 -3
  723. package/ragents.config.showcase.ts +2 -2
  724. package/scripts/agent/agent-cli.ts +96 -96
  725. package/scripts/agent/journal.ts +5 -5
  726. package/scripts/agent/turn-control.ts +4 -4
  727. package/scripts/package/build-package.ts +31 -31
  728. package/scripts/package/host-links.mjs +3 -3
  729. package/scripts/package/publish-package.ts +29 -29
  730. package/scripts/package/ragents.mjs +19 -19
  731. package/scripts/plugin/build-builtin-plugins.ts +5 -5
  732. package/scripts/plugin/plugin-cli.ts +14 -14
  733. package/scripts/provision/run-provision.ts +14 -15
  734. package/scripts/remote/connect.ts +49 -49
  735. package/scripts/remote/start.ts +18 -18
  736. package/scripts/workspace-client/run-workspace-client.ts +23 -23
  737. package/apps/web/dist/assets/main-DnnqWHkH.js +0 -11
  738. package/apps/web/dist/assets/mermaid-HWGCJPDP-BLLeth5_.js +0 -568
  739. package/apps/web/dist/assets/runPanel-DPm7s3KM.js +0 -21
  740. package/bundles/ragents.ask/server/chunks/chunk-PDJO75SQ.js.map +0 -7
  741. package/bundles/ragents.ask/web/chunks/chunk-4VXWWEG7.js +0 -2
  742. package/bundles/ragents.ask/web/chunks/chunk-4VXWWEG7.js.map +0 -7
  743. package/bundles/ragents.ask/web/chunks/chunk-VUBJDIKQ.js +0 -2
  744. package/bundles/ragents.ask/web/chunks/chunk-VUBJDIKQ.js.map +0 -7
  745. package/bundles/ragents.ask/web/chunks/chunk-WFN4374U.js.map +0 -7
  746. package/bundles/ragents.orchestration/web/chunks/chunk-OQYCNYXN.js +0 -2
  747. /package/bundles/ragents.orchestration/web/chunks/{chunk-OSKPH6SZ.js.map → chunk-CFMJD5ZI.js.map} +0 -0
  748. /package/bundles/ragents.orchestration/web/chunks/{chunk-ODMMQGX2.js.map → chunk-UCIMT2R4.js.map} +0 -0
@@ -17,22 +17,21 @@ const PROFILE_FILE = /^ragents\.config\.([a-z0-9]+(?:-[a-z0-9]+)*)\.ts$/;
17
17
 
18
18
  const repositoryRoot = path.resolve(path.dirname(fileURLToPath(import.meta.url)), "../..");
19
19
 
20
- const usage = (): string => `Verwendung: pnpm provision [<profil>|<pfad zu ragents.config.<profil>.ts>|--workspace]
21
- Provisioniert die Werkzeuge der Plugins eines Profils nach <Datenordner>/tools/<plugin-id>/ und
22
- berichtet je Plugin bereit, installiert oder fehlt. --workspace provisioniert stattdessen die
23
- eingebauten Plugins, die zum Executor eines Arbeitsplatzes beitragen. Ein relativer Pfad gilt ab dem
24
- aufrufenden Ordner; ohne Argument gilt das Profil aus der Umgebung (PRODUCT_PROFILE_FILE oder
25
- PRODUCT_PROFILE).`;
20
+ const usage = (): string => `Usage: pnpm provision [<profile>|<path to ragents.config.<profile>.ts>|--workspace]
21
+ Provisions the tools of a profile's plugins to <data folder>/tools/<plugin-id>/ and reports per
22
+ plugin ready, installed or missing. --workspace instead provisions the built-in plugins that
23
+ contribute to a workspace's executor. A relative path is resolved from the calling folder; without
24
+ an argument the profile from the environment applies (PRODUCT_PROFILE_FILE or PRODUCT_PROFILE).`;
26
25
 
27
26
  const availableProfiles = (): readonly string[] => readdirSync(repositoryRoot)
28
27
  .map((name) => PROFILE_FILE.exec(name)?.[1])
29
28
  .filter((name): name is string => name !== undefined && name !== "example")
30
29
  .sort();
31
30
 
32
- /** Ein Name gilt neben dem Host, ein Pfad ab dem Aufrufer, wie bei ragents start. */
31
+ /** A name applies next to the host, a path from the caller, as with ragents start. */
33
32
  export const selectedProfile = (selection: string, root = repositoryRoot, caller = callerDirectory()): { profile: string; file: string } => {
34
33
  const own = localProfile(selection, root, caller);
35
- if (!own) throw new Error(`Konfiguration fehlt: ${path.join(root, profileFileName(selection))}`);
34
+ if (!own) throw new Error(`Configuration is missing: ${path.join(root, profileFileName(selection))}`);
36
35
  return { profile: own.profile, file: own.profileFile };
37
36
  };
38
37
 
@@ -42,26 +41,26 @@ const forProfile = async (selection: string): Promise<readonly PluginProvisionRe
42
41
  process.env.PRODUCT_PROFILE_FILE = file;
43
42
  await loadConfigFile();
44
43
  const { config } = await import("../../apps/server/src/config.ts");
45
- console.log(`== Provisionierung Profil ${profile} (${file})`);
46
- console.log(`== Werkzeuge unter ${path.join(config.dataDir, "tools")}`);
44
+ console.log(`== Provisioning profile ${profile} (${file})`);
45
+ console.log(`== Tools under ${path.join(config.dataDir, "tools")}`);
47
46
  return provisionPlugins(resolvePluginEntries(config.plugins), config.dataDir, (line) => console.log(line));
48
47
  };
49
48
 
50
49
  const forWorkspace = (): Promise<readonly PluginProvisionReport[]> => {
51
- console.log("== Provisionierung Arbeitsplatz");
52
- console.log(`== Werkzeuge unter ${path.join(hostDataDirectory(), "tools")}`);
50
+ console.log("== Provisioning workspace");
51
+ console.log(`== Tools under ${path.join(hostDataDirectory(), "tools")}`);
53
52
  return provisionWorkspace((line) => console.log(line));
54
53
  };
55
54
 
56
55
  const main = async (): Promise<void> => {
57
56
  const argv = process.argv.slice(2);
58
57
  if (argv.length > 1 || argv.some((argument) => argument.startsWith("-") && argument !== "--workspace")) {
59
- throw new Error(`Unerwartete Argumente: ${argv.join(" ")}\n${usage()}`);
58
+ throw new Error(`Unexpected arguments: ${argv.join(" ")}\n${usage()}`);
60
59
  }
61
60
  const selection = argv[0] ?? process.env.PRODUCT_PROFILE_FILE ?? process.env.PRODUCT_PROFILE;
62
- if (!selection) throw new Error(`Kein Profil genannt; im Repository liegen ${availableProfiles().join(", ")}.\n${usage()}`);
61
+ if (!selection) throw new Error(`No profile named; the repository contains ${availableProfiles().join(", ")}.\n${usage()}`);
63
62
  const reports = selection === "--workspace" ? await forWorkspace() : await forProfile(selection);
64
- if (reports.length === 0) console.log("Kein Plugin bringt eine Provisionierung mit.");
63
+ if (reports.length === 0) console.log("No plugin brings a provisioning.");
65
64
  if (reports.some((report) => report.outcome === "missing")) process.exitCode = 1;
66
65
  };
67
66
 
@@ -10,22 +10,22 @@ import { ragentsDataRoot } from "../../apps/server/src/data-directory.ts";
10
10
  import { filesBelow } from "../../apps/server/src/folder-install.ts";
11
11
  import { removeHostRecord, writeHostRecord } from "../../apps/server/src/host-record.ts";
12
12
  import { hostRoot, readHostApiVersion, readHostPackage } from "../../apps/server/src/host-version.ts";
13
- import { BUNDLE_MANIFEST_FILE, bundleStand } from "../../apps/server/src/profile/bundle-manifest.ts";
13
+ import { BUNDLE_MANIFEST_FILE, bundleRevision } from "../../apps/server/src/profile/bundle-manifest.ts";
14
14
  import { readProfileTarget } from "../../apps/server/src/profile-target.ts";
15
15
  import { RpcClient } from "../../apps/web/src/rpc/client.ts";
16
16
  import { profileDistributionContracts, type ClientProfileDescription } from "../../plugins/ragents.profile-distribution/contract.ts";
17
17
 
18
- const usage = (): string => `Verwendung: RAGENTS_TOKEN=<token> ragents connect <server-url> [--port <n>] [--clean] [--no-start]
19
- Holt das Client-Profil des Servers samt seinen Bundles in den lokalen Cache, prüft die Host-API
20
- gegen diesen Host und startet den lokalen Server mit dem Profil und dem Web dieses Hosts. --clean
21
- entfernt ältere Stände, --no-start endet nach dem Holen und nennt Profildatei und Datenordner. Im
22
- Checkout heißt der Befehl pnpm connect.`;
18
+ const usage = (): string => `Usage: RAGENTS_TOKEN=<token> ragents connect <server-url> [--port <n>] [--clean] [--no-start]
19
+ Fetches the server's client profile together with its bundles into the local cache, checks the host
20
+ API against this host and starts the local server with the profile and this host's web app. --clean
21
+ removes older versions, --no-start ends after fetching and names the profile file and data folder.
22
+ In the checkout the command is pnpm connect.`;
23
23
 
24
24
  export interface ConnectOptions {
25
25
  readonly serverUrl: string;
26
26
  readonly token: string;
27
27
  readonly dataRoot?: string;
28
- /** Der Host, dessen Host-API und eingebaute Bundles zum Profil passen müssen: Checkout oder Paket; Vorgabe ist dieser hier. */
28
+ /** The host whose host API and built-in bundles must fit the profile: checkout or package; defaults to this one. */
29
29
  readonly hostPath?: string;
30
30
  readonly clean?: boolean;
31
31
  readonly fetch?: typeof fetch;
@@ -39,7 +39,7 @@ export interface ConnectedProfile {
39
39
  readonly downloaded: boolean;
40
40
  }
41
41
 
42
- /** Der Stand, den ragents start ohne den Server wieder hochfährt. */
42
+ /** The version that ragents start brings up again without the server. */
43
43
  export interface CachedProfile {
44
44
  readonly serverUrl: string;
45
45
  readonly profile: string;
@@ -59,22 +59,22 @@ export const parseArguments = (argv: readonly string[]): { serverUrl: string; po
59
59
  if (argument === "--no-start") { start = false; continue; }
60
60
  if (argument === "--port") {
61
61
  const value = Number(argv[index + 1]);
62
- if (!Number.isInteger(value) || value < 0 || value > 65535) throw new Error(`--port braucht eine ganze Zahl von 0 bis 65535, nicht ${argv[index + 1]}`);
62
+ if (!Number.isInteger(value) || value < 0 || value > 65535) throw new Error(`--port needs an integer from 0 to 65535, not ${argv[index + 1]}`);
63
63
  port = value;
64
64
  index += 1;
65
65
  continue;
66
66
  }
67
- if (argument.startsWith("-") || serverUrl) throw new Error(`Unbekanntes Argument: ${argument}\n${usage()}`);
67
+ if (argument.startsWith("-") || serverUrl) throw new Error(`Unknown argument: ${argument}\n${usage()}`);
68
68
  serverUrl = argument;
69
69
  }
70
- if (!serverUrl) throw new Error(`Die Serveradresse fehlt.\n${usage()}`);
70
+ if (!serverUrl) throw new Error(`The server address is missing.\n${usage()}`);
71
71
  return { serverUrl, port, clean, start };
72
72
  };
73
73
 
74
- /** Ein Ordnername je Server: Hostname und Port, damit zwei Server nie denselben Cache teilen. */
74
+ /** One folder name per server: hostname and port, so two servers never share the same cache. */
75
75
  export const serverFolderName = (serverUrl: string): string => {
76
76
  const parsed = new URL(serverUrl);
77
- if (parsed.protocol !== "http:" && parsed.protocol !== "https:") throw new Error(`Die Serveradresse braucht http oder https: ${serverUrl}`);
77
+ if (parsed.protocol !== "http:" && parsed.protocol !== "https:") throw new Error(`The server address needs http or https: ${serverUrl}`);
78
78
  const host = parsed.hostname.toLowerCase().replace(/[^a-z0-9.-]/g, "_");
79
79
  return parsed.port ? `${host}-${parsed.port}` : host;
80
80
  };
@@ -92,15 +92,15 @@ const describeProfile = async (options: ConnectOptions): Promise<ClientProfileDe
92
92
  fetch: (input, init) => fetchImpl(input, { ...init, headers: { ...init?.headers as Record<string, string> | undefined, authorization: `Bearer ${options.token}` } }),
93
93
  });
94
94
  const description = await rpc.call(profileDistributionContracts.describe, {}).catch((error: unknown) => {
95
- throw new Error(`Der Server ${baseUrl} liefert kein Client-Profil: ${error instanceof Error ? error.message : String(error)}`);
95
+ throw new Error(`The server ${baseUrl} provides no client profile: ${error instanceof Error ? error.message : String(error)}`);
96
96
  });
97
97
  return checkedDescription(baseUrl, description);
98
98
  };
99
99
 
100
- /** Stand, Profil und Datei werden Pfade im Cache; nur, was dort nicht herausführen kann, wird angenommen. */
100
+ /** Version, profile and file become paths in the cache; only what cannot lead out of it is accepted. */
101
101
  const checkedDescription = (baseUrl: string, description: ClientProfileDescription): ClientProfileDescription => {
102
102
  const rejected = (field: string, value: string): Error =>
103
- new Error(`Der Server ${baseUrl} nennt ein ungültiges Client-Profil: ${field} ${JSON.stringify(value)}`);
103
+ new Error(`The server ${baseUrl} names an invalid client profile: ${field} ${JSON.stringify(value)}`);
104
104
  if (!/^[0-9a-f]{64}$/.test(description.version)) throw rejected("version", description.version);
105
105
  if (!/^[a-z0-9]+(?:-[a-z0-9]+)*$/.test(description.profile)) throw rejected("profile", description.profile);
106
106
  const segments = description.file.split("/");
@@ -112,15 +112,15 @@ const checkedDescription = (baseUrl: string, description: ClientProfileDescripti
112
112
  const downloadArchive = async (options: ConnectOptions, description: ClientProfileDescription): Promise<Buffer> => {
113
113
  const address = `${options.serverUrl.replace(/\/+$/, "")}${description.archivePath}`;
114
114
  const response = await (options.fetch ?? fetch)(address, { headers: { authorization: `Bearer ${options.token}` } });
115
- if (!response.ok) throw new Error(`Das Archiv ${address} kommt nicht an: ${response.status} ${(await response.text()).slice(0, 200)}`);
115
+ if (!response.ok) throw new Error(`The archive ${address} does not arrive: ${response.status} ${(await response.text()).slice(0, 200)}`);
116
116
  const archive = Buffer.from(await response.arrayBuffer());
117
117
  const digest = createHash("sha256").update(archive).digest("hex");
118
- if (digest !== description.version) throw new Error(`Das Archiv ${address} passt nicht zum angesagten Stand: erwartet ${description.version}, erhalten ${digest}`);
119
- if (archive.byteLength !== description.size) throw new Error(`Das Archiv ${address} hat ${archive.byteLength} Byte, angesagt sind ${description.size}`);
118
+ if (digest !== description.version) throw new Error(`The archive ${address} does not match the announced version: expected ${description.version}, received ${digest}`);
119
+ if (archive.byteLength !== description.size) throw new Error(`The archive ${address} has ${archive.byteLength} bytes, ${description.size} were announced`);
120
120
  return archive;
121
121
  };
122
122
 
123
- /** Die Profildatei ist ESM; ohne diese Marke liest Node sie im Cache als CommonJS. Bundles lädt der Haken des Hosts ohnehin als ESM. */
123
+ /** The profile file is ESM; without this marker Node reads it as CommonJS in the cache. The host's hook loads bundles as ESM anyway. */
124
124
  const markAsModule = async (directory: string): Promise<void> => {
125
125
  const file = path.join(directory, "package.json");
126
126
  if (!existsSync(file)) {
@@ -128,47 +128,47 @@ const markAsModule = async (directory: string): Promise<void> => {
128
128
  return;
129
129
  }
130
130
  const declared = (JSON.parse(await readFile(file, "utf8")) as { type?: unknown }).type;
131
- if (declared !== "module") throw new Error(`Das Archiv bringt eine package.json mit type ${JSON.stringify(declared)}; RAgents-Profile sind ESM`);
131
+ if (declared !== "module") throw new Error(`The archive brings a package.json with type ${JSON.stringify(declared)}; RAgents profiles are ESM`);
132
132
  };
133
133
 
134
- /** Jedes Bundle im Archiv muss genau die Dateien tragen, mit denen es gebaut wurde; ein verlustbehaftetes Packen fiele sonst erst beim Laden auf. */
134
+ /** Every bundle in the archive must carry exactly the files it was built with; lossy packing would otherwise only show up when loading. */
135
135
  const assertArchivedBundles = (staging: string): void => {
136
136
  for (const manifestFile of filesBelow(staging).filter((file) => path.posix.basename(file) === BUNDLE_MANIFEST_FILE)) {
137
137
  const folder = path.join(staging, ...path.posix.dirname(manifestFile).split("/"));
138
- const manifest = JSON.parse(readFileSync(path.join(folder, BUNDLE_MANIFEST_FILE), "utf8")) as { id?: unknown; stand?: unknown };
139
- if (bundleStand(folder) !== manifest.stand) {
140
- throw new Error(`Das Bundle ${String(manifest.id)} im Archiv des Servers hat nicht die Dateien, mit denen es gebaut wurde (stand in ${manifestFile}); auf dem Server neu bauen und ragents connect wiederholen`);
138
+ const manifest = JSON.parse(readFileSync(path.join(folder, BUNDLE_MANIFEST_FILE), "utf8")) as { id?: unknown; revision?: unknown };
139
+ if (bundleRevision(folder) !== manifest.revision) {
140
+ throw new Error(`The bundle ${String(manifest.id)} in the server's archive does not have the files it was built with (revision in ${manifestFile}); rebuild it on the server and repeat ragents connect`);
141
141
  }
142
142
  }
143
143
  };
144
144
 
145
- /** Wie ein Host zum Stand des Servers kommt, hängt daran, woher er stammt: Paket oder Checkout. */
145
+ /** How a host gets to the server's version depends on where it comes from: package or checkout. */
146
146
  const hostAdvice = (hostPath: string, description: ClientProfileDescription): string => {
147
147
  const packaged = readHostPackage(hostPath);
148
148
  return packaged
149
- ? `Hol die Fassung des Servers: npm install -g ${packaged.name}@${description.packageVersion} (installiert ist ${packaged.version}).`
150
- : `Wechsle auf den Commit des Servers: git -C ${JSON.stringify(hostPath)} fetch && git -C ${JSON.stringify(hostPath)} checkout ${description.hostVersion}, danach pnpm build:plugins und pnpm build:web.`;
149
+ ? `Get the server's version: npm install -g ${packaged.name}@${description.packageVersion} (installed is ${packaged.version}).`
150
+ : `Switch to the server's commit: git -C ${JSON.stringify(hostPath)} fetch && git -C ${JSON.stringify(hostPath)} checkout ${description.hostVersion}, then pnpm build:plugins and pnpm build:web.`;
151
151
  };
152
152
 
153
- /** Die eingebauten Plugins des Profils, für die der Host kein Bundle hat; ohne sie startet das Profil nicht. */
153
+ /** The profile's built-in plugins for which the host has no bundle; without them the profile does not start. */
154
154
  const missingBuiltIns = (hostPath: string, description: ClientProfileDescription): readonly string[] =>
155
155
  description.plugins
156
156
  .filter((plugin) => plugin.source === "host" && !existsSync(path.join(hostPath, "bundles", plugin.id, "ragents-bundle.json")))
157
157
  .map((plugin) => plugin.id);
158
158
 
159
- /** Die Bundles im Archiv sind gegen die Host-API des Servers gebaut, die eingebauten kommen vom Host des Clients; beides muss dort passen. */
159
+ /** The bundles in the archive are built against the server's host API, the built-in ones come from the client's host; both must fit there. */
160
160
  const assertHostFits = (hostPath: string, description: ClientProfileDescription): void => {
161
161
  const localApi = readHostApiVersion(hostPath);
162
162
  if (localApi !== description.hostApi) {
163
- throw new Error(`Der Server verteilt sein Profil für Host-API ${description.hostApi}, der Host ${hostPath} bietet Host-API ${localApi}.\n${hostAdvice(hostPath, description)}`);
163
+ throw new Error(`The server distributes its profile for host API ${description.hostApi}, the host ${hostPath} offers host API ${localApi}.\n${hostAdvice(hostPath, description)}`);
164
164
  }
165
165
  const missing = missingBuiltIns(hostPath, description);
166
166
  if (missing.length === 0) return;
167
- const rebuild = readHostPackage(hostPath) ? "" : "Im Checkout zuerst pnpm build:plugins; fehlt die Quelle unter plugins/: ";
168
- throw new Error(`Das Profil nennt eingebaute Plugins, für die der Host ${hostPath} kein Bundle hat: ${missing.join(", ")}.\n${rebuild}${hostAdvice(hostPath, description)}`);
167
+ const rebuild = readHostPackage(hostPath) ? "" : "In the checkout, run pnpm build:plugins first; if the source under plugins/ is missing: ";
168
+ throw new Error(`The profile names built-in plugins for which the host ${hostPath} has no bundle: ${missing.join(", ")}.\n${rebuild}${hostAdvice(hostPath, description)}`);
169
169
  };
170
170
 
171
- /** Holt Beschreibung und Archiv, prüft Host-API, eingebaute Bundles und Stand und legt den Stand im Cache ab; startet nichts. */
171
+ /** Fetches description and archive, checks host API, built-in bundles and version and stores the version in the cache; starts nothing. */
172
172
  export const prepareProfile = async (options: ConnectOptions): Promise<ConnectedProfile> => {
173
173
  const description = await describeProfile(options);
174
174
  assertHostFits(options.hostPath ?? hostRoot(), description);
@@ -190,9 +190,9 @@ export const prepareProfile = async (options: ConnectOptions): Promise<Connected
190
190
  foreign.push(`${entryPath} (${String(type)})`);
191
191
  return false;
192
192
  } });
193
- if (foreign.length > 0) throw new Error(`Das Archiv enthält Einträge, die weder Datei noch Ordner sind: ${foreign.join(", ")}; ein Client-Profil trägt nur Dateien`);
193
+ if (foreign.length > 0) throw new Error(`The archive contains entries that are neither file nor folder: ${foreign.join(", ")}; a client profile carries only files`);
194
194
  await rm(file);
195
- if (!existsSync(path.join(staging, ...description.file.split("/")))) throw new Error(`Das Archiv enthält die Profildatei ${description.file} nicht`);
195
+ if (!existsSync(path.join(staging, ...description.file.split("/")))) throw new Error(`The archive does not contain the profile file ${description.file}`);
196
196
  assertArchivedBundles(staging);
197
197
  await markAsModule(staging);
198
198
  await rm(cacheDirectory, { recursive: true, force: true });
@@ -216,7 +216,7 @@ export const prepareProfile = async (options: ConnectOptions): Promise<Connected
216
216
  return { description, profileFile, dataDirectory: layout.data, cacheDirectory, downloaded };
217
217
  };
218
218
 
219
- /** Startet ein Host-Skript wie der Checkout: Node mit dem tsx-Loader, Arbeitsverzeichnis apps/server, ohne pnpm. */
219
+ /** Starts a host script like the checkout does: Node with the tsx loader, working directory apps/server, without pnpm. */
220
220
  export const hostScript = (script: string, args: readonly string[] = []): { file: string; args: readonly string[]; cwd: string } => ({
221
221
  file: process.execPath,
222
222
  args: ["--import", "tsx", path.join(hostRoot(), script), ...args],
@@ -246,12 +246,12 @@ const run = (
246
246
  const main = async (): Promise<void> => {
247
247
  const arguments_ = parseArguments(process.argv.slice(2));
248
248
  const token = process.env.RAGENTS_TOKEN;
249
- if (!token) throw new Error(`RAGENTS_TOKEN fehlt: der persönliche Token aus dem Serverprofil.\n${usage()}`);
249
+ if (!token) throw new Error(`RAGENTS_TOKEN is missing: the personal token from the server profile.\n${usage()}`);
250
250
  const prepared = await prepareProfile({ serverUrl: arguments_.serverUrl, token, clean: arguments_.clean });
251
251
  const { description } = prepared;
252
- console.log(`== Profil ${description.profile} vom Server ${arguments_.serverUrl}, Stand ${description.version.slice(0, 12)} (${prepared.downloaded ? "geholt" : "im Cache"})`);
253
- console.log(`== Profildatei ${prepared.profileFile}`);
254
- console.log(`== Daten ${prepared.dataDirectory}`);
252
+ console.log(`== Profile ${description.profile} from server ${arguments_.serverUrl}, version ${description.version.slice(0, 12)} (${prepared.downloaded ? "fetched" : "in cache"})`);
253
+ console.log(`== Profile file ${prepared.profileFile}`);
254
+ console.log(`== Data ${prepared.dataDirectory}`);
255
255
  if (!arguments_.start) return;
256
256
  process.exitCode = await startCached({
257
257
  serverUrl: arguments_.serverUrl,
@@ -265,12 +265,12 @@ const main = async (): Promise<void> => {
265
265
  export interface StartedProfile {
266
266
  readonly profile: string;
267
267
  readonly profileFile: string;
268
- /** Nur bei einem geholten Stand gesetzt; ein Profil des Hosts nimmt die Vorgaben seiner eigenen Konfiguration. */
268
+ /** Set only for a fetched version; a host profile takes the defaults of its own configuration. */
269
269
  readonly dataDirectory?: string;
270
270
  readonly port: number | undefined;
271
271
  }
272
272
 
273
- /** ragents run und ragents start merken denselben Host im Datenordner des Profils; ein Port 0 sucht sich seinen Port selbst und lässt sich nicht merken. */
273
+ /** ragents run and ragents start record the same host in the profile's data folder; a port 0 picks its own port and cannot be recorded. */
274
274
  export const noteHost = (profile: string, dataDirectory: string, port: number): ((pid: number) => void) | undefined =>
275
275
  port > 0 ? (pid: number): void => writeHostRecord(dataDirectory, {
276
276
  profile,
@@ -280,7 +280,7 @@ export const noteHost = (profile: string, dataDirectory: string, port: number):
280
280
  startedAt: new Date().toISOString(),
281
281
  }) : undefined;
282
282
 
283
- /** Provisioniert die Werkzeuge des Profils und startet den Server damit. */
283
+ /** Provisions the profile's tools and starts the server with them. */
284
284
  export const startProfile = async (started: StartedProfile): Promise<number> => {
285
285
  const target = await readProfileTarget(started.profile, started.profileFile);
286
286
  const dataDirectory = started.dataDirectory ?? target.dataDirectory;
@@ -291,10 +291,10 @@ export const startProfile = async (started: StartedProfile): Promise<number> =>
291
291
  PRODUCT_PROFILE_FILE: started.profileFile,
292
292
  DATA_DIR: dataDirectory,
293
293
  };
294
- console.log("== Werkzeuge provisionieren");
294
+ console.log("== Provisioning tools");
295
295
  const provisioned = await run(hostScript("scripts/provision/run-provision.ts"), env);
296
- if (provisioned !== 0) throw new Error(`Die Provisionierung endete mit Code ${provisioned}`);
297
- console.log(`== Server starten (Daten ${dataDirectory})`);
296
+ if (provisioned !== 0) throw new Error(`Provisioning ended with code ${provisioned}`);
297
+ console.log(`== Starting server (data ${dataDirectory})`);
298
298
  const note = noteHost(started.profile, dataDirectory, port);
299
299
  try {
300
300
  return await run(hostScript("apps/server/src/main.ts", started.port !== undefined ? ["--port", String(started.port)] : []), env, note);
@@ -303,7 +303,7 @@ export const startProfile = async (started: StartedProfile): Promise<number> =>
303
303
  }
304
304
  };
305
305
 
306
- /** Startet einen Stand, den connect geholt hat; das Web kommt wie bei jedem Profil vom Host. */
306
+ /** Starts a version that connect has fetched; the web app comes from the host as with every profile. */
307
307
  export const startCached = (cached: CachedProfile, port: number | undefined): Promise<number> => startProfile({
308
308
  profile: cached.profile,
309
309
  profileFile: cached.profileFile,
@@ -311,7 +311,7 @@ export const startCached = (cached: CachedProfile, port: number | undefined): Pr
311
311
  port,
312
312
  });
313
313
 
314
- // Im Bundle der Erweiterung ist import.meta leer; dann gibt es keinen Kommandozeileneinstieg.
314
+ // In the extension's bundle import.meta is empty; then there is no command line entry.
315
315
  const moduleUrl: string | undefined = import.meta.url;
316
316
  if (moduleUrl && process.argv[1] && path.resolve(process.argv[1]) === fileURLToPath(moduleUrl)) {
317
317
  main().catch((error: unknown) => {
@@ -1,4 +1,4 @@
1
- // Der Hook löst @ragents/* auch für eine Profildatei außerhalb des Hosts auf; im Paket gibt es dort kein node_modules.
1
+ // The hook resolves @ragents/* also for a profile file outside the host; in the package there is no node_modules there.
2
2
  import "../../apps/server/src/host-resolution.ts";
3
3
  import { readFile, readdir } from "node:fs/promises";
4
4
  import path from "node:path";
@@ -7,10 +7,10 @@ import { ragentsDataRoot } from "../../apps/server/src/data-directory.ts";
7
7
  import { localProfile } from "../../apps/server/src/profile-target.ts";
8
8
  import { startCached, startProfile, type CachedProfile } from "./connect.ts";
9
9
 
10
- const usage = (): string => `Verwendung: ragents start <profil|pfad> [--port <n>]
11
- Startet ein Profil dieses Hosts (core, developer, showcase), eine eigene ragents.config.<profil>.ts an
12
- beliebiger Stelle oder einen Stand, den ragents connect schon geholt hat, ohne den Server zu
13
- fragen. Das Web kommt fertig mit dem Host, für jedes Profil dasselbe.`;
10
+ const usage = (): string => `Usage: ragents start <profile|path> [--port <n>]
11
+ Starts a profile of this host (core, developer, showcase), your own ragents.config.<profile>.ts at
12
+ any location or a version that ragents connect has already fetched, without asking the server.
13
+ The web app comes ready-made with the host, the same for every profile.`;
14
14
 
15
15
  export const parseArguments = (argv: readonly string[]): { selection: string; port: number | undefined } => {
16
16
  let profile: string | undefined;
@@ -19,22 +19,22 @@ export const parseArguments = (argv: readonly string[]): { selection: string; po
19
19
  const argument = argv[index]!;
20
20
  if (argument === "--port") {
21
21
  const value = Number(argv[index + 1]);
22
- if (!Number.isInteger(value) || value < 0 || value > 65535) throw new Error(`--port braucht eine ganze Zahl von 0 bis 65535, nicht ${argv[index + 1]}`);
22
+ if (!Number.isInteger(value) || value < 0 || value > 65535) throw new Error(`--port needs an integer from 0 to 65535, not ${argv[index + 1]}`);
23
23
  port = value;
24
24
  index += 1;
25
25
  continue;
26
26
  }
27
- if (argument.startsWith("-") || profile) throw new Error(`Unbekanntes Argument: ${argument}\n${usage()}`);
27
+ if (argument.startsWith("-") || profile) throw new Error(`Unknown argument: ${argument}\n${usage()}`);
28
28
  profile = argument;
29
29
  }
30
- if (!profile) throw new Error(`Der Profilname fehlt.\n${usage()}`);
30
+ if (!profile) throw new Error(`The profile name is missing.\n${usage()}`);
31
31
  return { selection: profile, port };
32
32
  };
33
33
 
34
34
  const directories = async (folder: string): Promise<readonly string[]> =>
35
35
  (await readdir(folder, { withFileTypes: true }).catch(() => [])).filter((entry) => entry.isDirectory()).map((entry) => entry.name);
36
36
 
37
- /** Alle Stände, die connect in diesem Datenordner hinterlassen hat. */
37
+ /** All versions that connect has left in this data folder. */
38
38
  export const cachedProfiles = async (dataRoot: string): Promise<readonly CachedProfile[]> => {
39
39
  const remote = path.join(dataRoot, "remote");
40
40
  const found: CachedProfile[] = [];
@@ -53,26 +53,26 @@ export const selectCachedProfile = (cached: readonly CachedProfile[], profile: s
53
53
  if (matching.length === 1) return matching[0]!;
54
54
  if (matching.length === 0) {
55
55
  const known = cached.map((entry) => `${entry.profile} (${entry.serverUrl})`);
56
- throw new Error(`Das Profil ${profile} liegt nicht im Cache. `
57
- + (known.length ? `Geholt sind: ${known.join(", ")}.` : "Es ist noch kein Profil geholt; hol es mit ragents connect <server-url>."));
56
+ throw new Error(`The profile ${profile} is not in the cache. `
57
+ + (known.length ? `Fetched are: ${known.join(", ")}.` : "No profile has been fetched yet; fetch it with ragents connect <server-url>."));
58
58
  }
59
- throw new Error(`Das Profil ${profile} kommt von mehreren Servern (${matching.map((entry) => entry.serverUrl).join(", ")}); `
60
- + "nimm ragents connect <server-url>.");
59
+ throw new Error(`The profile ${profile} comes from several servers (${matching.map((entry) => entry.serverUrl).join(", ")}); `
60
+ + "use ragents connect <server-url>.");
61
61
  };
62
62
 
63
63
  const main = async (): Promise<void> => {
64
64
  const arguments_ = parseArguments(process.argv.slice(2));
65
65
  const own = localProfile(arguments_.selection);
66
66
  if (own) {
67
- console.log(`== Profil ${own.profile}`);
68
- console.log(`== Profildatei ${own.profileFile}`);
67
+ console.log(`== Profile ${own.profile}`);
68
+ console.log(`== Profile file ${own.profileFile}`);
69
69
  process.exitCode = await startProfile({ profile: own.profile, profileFile: own.profileFile, port: arguments_.port });
70
70
  return;
71
71
  }
72
72
  const cached = selectCachedProfile(await cachedProfiles(ragentsDataRoot()), arguments_.selection);
73
- console.log(`== Profil ${cached.profile} vom Server ${cached.serverUrl}, Stand ${cached.version.slice(0, 12)} (aus dem Cache)`);
74
- console.log(`== Profildatei ${cached.profileFile}`);
75
- console.log(`== Daten ${cached.dataDirectory}`);
73
+ console.log(`== Profile ${cached.profile} from server ${cached.serverUrl}, version ${cached.version.slice(0, 12)} (from cache)`);
74
+ console.log(`== Profile file ${cached.profileFile}`);
75
+ console.log(`== Data ${cached.dataDirectory}`);
76
76
  process.exitCode = await startCached(cached, arguments_.port);
77
77
  };
78
78
 
@@ -9,17 +9,17 @@ import { provisionWorkspace } from "../../apps/server/src/profile/provisioning.t
9
9
  import { workspaceClientTransport } from "../../plugins/ragents.workspace/client/transport.ts";
10
10
  import { WorkspaceClient, workstationRunsDirectory } from "../../plugins/ragents.workspace/client/workspace-client.ts";
11
11
 
12
- const usage = (): string => `Verwendung: [RAGENTS_TOKEN=<token>] pnpm workspace-client <server-url> [ordner ...] [--id <kennung>] [--label <name>]
13
- Meldet die Ordner als Arbeitsplatz beim Server an und führt dessen Aufträge mit dem Executor
14
- dieses Rechners aus - dasselbe, was die VS-Code-Erweiterung tut, nur ohne VS Code. Ohne Ordner
15
- gilt das aktuelle Verzeichnis. Jeder Werkzeugaufruf erscheint als eine Zeile auf stdout.
16
- Was die Plugins des Servers zum Executor beitragen, etwa Sprachserver, lädt der Arbeitsplatz bei
17
- der Anmeldung aus den Bundles dieses Hosts; ihre Werkzeuge holt der Start auf diesen Rechner
18
- (dasselbe wie pnpm provision --workspace). Unter Windows nennt
19
- RAGENTS_BASH die bash.exe, die RAgents mitbringt (aus der Windows-Fassung der VS-Code-Erweiterung);
20
- ohne sie scheitert das Werkzeug bash. RAGENTS_RG nennt ein rg, dessen Ordner die Bash vorn im PATH
21
- hat, etwa das aus der Erweiterung; ohne Angabe gilt eines im PATH. Das Skript läuft, bis es mit
22
- Strg-C beendet wird.`;
12
+ const usage = (): string => `Usage: [RAGENTS_TOKEN=<token>] pnpm workspace-client <server-url> [folder ...] [--id <id>] [--label <name>]
13
+ Registers the folders as a workspace with the server and executes its tasks with the executor
14
+ of this machine - the same as the VS Code extension does, just without VS Code. Without folders
15
+ the current directory applies. Every tool call appears as one line on stdout.
16
+ What the server's plugins contribute to the executor, such as language servers, the workspace loads
17
+ at registration from this host's bundles; startup fetches their tools onto this machine
18
+ (the same as pnpm provision --workspace). On Windows
19
+ RAGENTS_BASH names the bash.exe that RAgents brings along (from the Windows build of the VS Code
20
+ extension); without it the bash tool fails. RAGENTS_RG names an rg whose folder the bash has at the
21
+ front of its PATH, such as the one from the extension; if not given, one in the PATH applies. The
22
+ script runs until it is ended with Ctrl-C.`;
23
23
 
24
24
  export interface WorkspaceClientArguments {
25
25
  readonly serverUrl: string;
@@ -37,30 +37,30 @@ export const parseArguments = (argv: readonly string[]): WorkspaceClientArgument
37
37
  const argument = argv[index]!;
38
38
  if (argument === "--id" || argument === "--label") {
39
39
  const value = argv[index + 1];
40
- if (!value || value.startsWith("-")) throw new Error(`${argument} braucht einen Wert.\n${usage()}`);
40
+ if (!value || value.startsWith("-")) throw new Error(`${argument} needs a value.\n${usage()}`);
41
41
  if (argument === "--id") id = value;
42
42
  else label = value;
43
43
  index += 1;
44
44
  continue;
45
45
  }
46
- if (argument.startsWith("-")) throw new Error(`Unbekanntes Argument: ${argument}\n${usage()}`);
46
+ if (argument.startsWith("-")) throw new Error(`Unknown argument: ${argument}\n${usage()}`);
47
47
  if (serverUrl === undefined) serverUrl = argument;
48
48
  else folders.push(argument);
49
49
  }
50
- if (!serverUrl) throw new Error(`Die Serveradresse fehlt.\n${usage()}`);
51
- if (id !== undefined && !/^[A-Za-z0-9_-]{8,64}$/.test(id)) throw new Error("--id braucht 8 bis 64 Zeichen aus A-Z, a-z, 0-9, _ und -.");
50
+ if (!serverUrl) throw new Error(`The server address is missing.\n${usage()}`);
51
+ if (id !== undefined && !/^[A-Za-z0-9_-]{8,64}$/.test(id)) throw new Error("--id needs 8 to 64 characters from A-Z, a-z, 0-9, _ and -.");
52
52
  return { serverUrl, folders, id, label };
53
53
  };
54
54
 
55
- /** Eine stabile Kennung je Rechner und Ordnersatz, damit der Server denselben Arbeitsplatz wiedererkennt. */
55
+ /** A stable id per machine and folder set, so the server recognizes the same workspace again. */
56
56
  export const workspaceClientId = (host: string, folders: readonly string[]): string =>
57
57
  `cli-${createHash("sha256").update([host, ...folders].join("\n")).digest("hex").slice(0, 32)}`;
58
58
 
59
- /** Ordner gelten ab dem Aufrufer; pnpm und der bin-Befehl starten das Skript in apps/server. */
59
+ /** Folders are resolved from the caller; pnpm and the bin command start the script in apps/server. */
60
60
  export const resolvedFolders = (folders: readonly string[], caller = callerDirectory()): string[] => {
61
61
  const resolved = (folders.length > 0 ? folders : [caller]).map((folder) => path.resolve(caller, folder));
62
62
  for (const folder of resolved) {
63
- if (!statSync(folder, { throwIfNoEntry: false })?.isDirectory()) throw new Error(`Kein Verzeichnis: ${folder}`);
63
+ if (!statSync(folder, { throwIfNoEntry: false })?.isDirectory()) throw new Error(`Not a directory: ${folder}`);
64
64
  }
65
65
  return resolved;
66
66
  };
@@ -85,14 +85,14 @@ const main = async (): Promise<void> => {
85
85
  onExecuted: ({ runId, operation, durationMs, error }) =>
86
86
  console.log(`== ${runId.slice(0, 8)} ${operation} ${durationMs} ms ${error ?? "ok"}`),
87
87
  });
88
- console.log(`== Arbeitsplatz ${identity.label} (${identity.id})`);
89
- for (const folder of folders) console.log(`== Ordner ${folder}`);
90
- console.log("== Werkzeuge provisionieren");
88
+ console.log(`== Workspace ${identity.label} (${identity.id})`);
89
+ for (const folder of folders) console.log(`== Folder ${folder}`);
90
+ console.log("== Provisioning tools");
91
91
  await provisionWorkspace((line) => console.log(line));
92
92
  console.log(`== Server ${parsed.serverUrl}`);
93
93
  client.onChange(() => {
94
94
  const status = client.status;
95
- console.log(status.kind === "failed" ? `== Anmeldung fehlgeschlagen: ${status.message}` : `== Zustand ${status.kind}`);
95
+ console.log(status.kind === "failed" ? `== Registration failed: ${status.message}` : `== State ${status.kind}`);
96
96
  });
97
97
  await client.register();
98
98
  if (client.status.kind !== "registered") {
@@ -100,7 +100,7 @@ const main = async (): Promise<void> => {
100
100
  transport.rpc.close();
101
101
  return;
102
102
  }
103
- console.log("== Angemeldet; Strg-C beendet den Arbeitsplatz");
103
+ console.log("== Registered; Ctrl-C ends the workspace");
104
104
  await new Promise<void>((finish) => {
105
105
  const stop = () => {
106
106
  process.off("SIGINT", stop);
@@ -1,11 +0,0 @@
1
- import{a as oe,r as t,j as e,D as ce,b as de,d as G,B as g,X as Le,M as Pe,C as ue,e as Oe,f as Ie,g as He,h as _e,u as Be,i as Fe,k as Ue,l as qe,m as Ke,A as Te,n as $e,o as We,U as Qe,P as Ve,W as Ge,R as Xe,p as ae,q as V,s as Je,t as Ye,v as Ze,w as et,x as tt,y as st,z as nt,Q as rt,F as at,G as it}from"./mermaid-HWGCJPDP-BLLeth5_.js";/**
2
- * @license lucide-react v1.46.0 - ISC
3
- *
4
- * This source code is licensed under the ISC license.
5
- * See the LICENSE file in the root directory of this source tree.
6
- */const fe={name:"circle-question-mark",size:24,node:[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"M9.09 9a3 3 0 0 1 5.83 1c0 2-3 3-3 3",key:"1u773s"}],["path",{d:"M12 17h.01",key:"p32p05"}]],aliases:["help-circle","circle-help"]};fe.node;const lt=oe(fe);/**
7
- * @license lucide-react v1.46.0 - ISC
8
- *
9
- * This source code is licensed under the ISC license.
10
- * See the LICENSE file in the root directory of this source tree.
11
- */const he={name:"sparkles",size:24,node:[["path",{d:"M11.017 2.814a1 1 0 0 1 1.966 0l1.051 5.558a2 2 0 0 0 1.594 1.594l5.558 1.051a1 1 0 0 1 0 1.966l-5.558 1.051a2 2 0 0 0-1.594 1.594l-1.051 5.558a1 1 0 0 1-1.966 0l-1.051-5.558a2 2 0 0 0-1.594-1.594l-5.558-1.051a1 1 0 0 1 0-1.966l5.558-1.051a2 2 0 0 0 1.594-1.594z",key:"1s2grr"}],["path",{d:"M20 2v4",key:"1rf3ol"}],["path",{d:"M22 4h-4",key:"gwowj6"}],["circle",{cx:"4",cy:"20",r:"2",key:"6kqj1y"}]],aliases:["stars"]};he.node;const ot=oe(he);function ct(n,r,a,u){if(!r||n.source!==r||n.origin!==a)return;const i=n.data;if(!(!i||typeof i!="object"||Array.isArray(i))&&"type"in i){if(i.type==="ragents:help-ready")return{type:"ready"};if(i.type==="ragents:start-sample"&&"entry"in i&&typeof i.entry=="string"&&u.includes(i.entry))return{type:"start",entry:i.entry}}}function dt({onClose:n,sampleEntries:r,onStartSample:a}){const u=t.useRef(null),i=t.useRef(null),h=t.useRef(void 0),x=t.useRef(!1);t.useEffect(()=>()=>{var l;return(l=h.current)==null?void 0:l.call(h)},[]),t.useEffect(()=>{var j;const l=(j=i.current)==null?void 0:j.contentWindow;if(!l)return;const o=()=>l.postMessage({type:"ragents:help-context",canStartSamples:r.length>0,entries:r},window.location.origin),p=C=>{const c=ct(C,l,window.location.origin,r);(c==null?void 0:c.type)==="ready"&&o(),(c==null?void 0:c.type)==="start"&&!x.current&&(x.current=!0,a(c.entry))};return window.addEventListener("message",p),o(),()=>window.removeEventListener("message",p)},[a,r]);const m=()=>{var C;(C=h.current)==null||C.call(h);const l=i.current,o=l==null?void 0:l.contentDocument,p=o==null?void 0:o.defaultView;if(!l||!o||!p)return;o.documentElement.dataset.helpEmbedded="true";for(const c of o.querySelectorAll("a[href]"))new URL(c.href).origin!==window.location.origin&&(c.target="_blank",c.rel="noopener noreferrer");const j=c=>{var v;if(!c.defaultPrevented){if(c.key==="Escape")c.preventDefault(),n();else if(c.key==="Tab"){const b=[...o.querySelectorAll("a[href], button, input, select, textarea, summary, [tabindex]")].filter(y=>y.tabIndex>=0&&!y.matches(":disabled")&&y.getClientRects().length>0),O=c.shiftKey?b[0]:b.at(-1);if(!b.length||o.activeElement===O||o.activeElement===o.body){if(!c.shiftKey&&o.activeElement===o.body&&b.length)return;c.preventDefault(),(v=u.current)==null||v.focus()}}}};p.addEventListener("keydown",j),h.current=()=>p.removeEventListener("keydown",j)};return e.jsx(ce,{open:!0,onOpenChange:l=>{l||n()},children:e.jsxs(de,{className:"gap-0 p-0",initialFocus:u,scope:"page",showCloseButton:!1,size:"full",children:[e.jsx(G,{className:"sr-only",children:"Hilfe"}),e.jsx(g,{"aria-label":"Hilfe schließen",className:"absolute top-3 right-4.5 z-1 rounded-full",onClick:n,ref:u,size:"icon",variant:"outline",children:e.jsx(Le,{})}),e.jsx("iframe",{className:"min-h-0 w-full min-w-0 flex-[1_1_0] bg-background",onLoad:m,ref:i,src:"/help/index.html",tabIndex:0,title:"RAgents: Homepage und Dokumentation"})]})})}const ut="button:not([disabled]), a[href], input:not([disabled]), textarea:not([disabled]), [tabindex]:not([tabindex='-1'])",me="pointer-events-auto shadow-pop";function ft({onBusy:n,onClose:r,onOpen:a,open:u,panels:i,registry:h,runs:x}){const m=t.useRef(null);return t.useEffect(()=>{if(!u)return;const l=requestAnimationFrame(()=>{var p;const o=m.current;!o||o.contains(document.activeElement)||(p=o.querySelector(ut))==null||p.focus({preventScroll:!0})});return()=>cancelAnimationFrame(l)},[u]),e.jsxs(Pe,{className:"pointer-events-none flex h-[min(900px,100%)] w-[min(1440px,100%)] flex-col rounded-none bg-transparent p-0 ring-0",keepMounted:!0,onClose:r,open:u,scope:"workspace",size:"full",children:[e.jsx(G,{className:"sr-only",children:"Übersicht"}),e.jsxs("div",{className:"flex min-h-0 min-w-0 flex-1 gap-4 max-[900px]:flex-col",id:"app-overview",ref:m,children:[i.map(({id:l,Panel:o})=>e.jsx(ht,{id:l,onBusy:n,onClose:r,onOpen:a,open:u,Panel:o,registry:h},l)),x&&e.jsx(mt,{...x})]})]})}function ht({id:n,onBusy:r,onClose:a,onOpen:u,open:i,Panel:h,registry:x}){const m=t.useCallback(l=>r(n,l),[n,r]);return t.useEffect(()=>()=>r(n,!1),[n,r]),e.jsx(ue,{className:`${me} min-h-0 min-w-0 flex-1 gap-0 p-0`,children:e.jsx(h,{onBusy:m,onClose:a,onOpen:u,open:i,registry:x})})}function mt({activeId:n,canCreate:r,canDelete:a,onCreate:u,onDelete:i,onOpen:h,registry:x,sessions:m,seenRevisions:l,unreachable:o}){const[p,j]=t.useState(),[C,c]=t.useState(!1),[v,b]=t.useState(()=>new Set),[O,y]=t.useState(!1),[N,_]=t.useState(!1),B=()=>{c(!1),b(new Set)},w=f=>{b(z=>{const I=new Set(z);return I.delete(f)||I.add(f),I})},E=async f=>{_(!0),j(void 0);try{await i(f)}catch(z){j(z instanceof Error?z.message:String(z))}finally{_(!1)}},k=async()=>{await E(m.filter(f=>v.has(f.id)).map(f=>f.id)),y(!1),B()};return e.jsx("section",{"aria-labelledby":"overview-runs-title",className:"flex min-h-0 min-w-0 flex-1 flex-col max-[900px]:flex-[1_1_50%]",children:e.jsxs(ue,{className:`${me} min-h-0 flex-1 gap-workspace-inset overflow-y-auto overscroll-contain pt-workspace-inset pr-6 pb-6 pl-6 max-[900px]:px-3 max-[900px]:pt-3.5 max-[900px]:pb-4`,children:[e.jsxs("header",{className:"flex flex-wrap items-center gap-x-3.5 gap-y-2.5",children:[e.jsxs("h2",{className:"text-[0.95rem] font-semibold",id:"overview-runs-title",children:["Runs ",e.jsx("span",{className:"ml-1 text-[0.8rem] font-medium tabular-nums text-muted-foreground",children:m.length})]}),o&&e.jsx("span",{className:"text-[0.72rem] font-medium text-destructive",role:"alert",children:"Server nicht erreichbar"}),a&&m.length>0&&e.jsx("div",{className:"ml-auto flex flex-wrap items-center gap-1",children:C?e.jsxs(e.Fragment,{children:[e.jsx(g,{onClick:()=>b(new Set(m.map(f=>f.id))),size:"sm",variant:"ghost",children:"Alle"}),e.jsx(g,{onClick:()=>b(new Set),size:"sm",variant:"ghost",children:"Keine"}),e.jsxs(g,{className:"ml-auto",disabled:v.size===0||N,onClick:()=>y(!0),size:"sm",variant:"destructive",children:["Löschen (",v.size,")"]}),e.jsx(g,{onClick:B,size:"sm",variant:"ghost",children:"Fertig"})]}):e.jsx(g,{onClick:()=>c(!0),size:"sm",variant:"ghost",children:"Auswählen"})})]}),p&&e.jsx("p",{className:"text-[0.72rem] font-medium text-destructive",role:"alert",children:p}),e.jsx("p",{className:"mb-5.5 text-[0.75rem] text-muted-foreground",children:"Nach letzter Aktivität im Run. Neue Aktivität ist seit Deinem letzten Ansehen hinzugekommen."}),e.jsx(Oe,{seenRevisions:l,activeId:n,onCreate:r?u:void 0,onDelete:a?f=>void E([f]):void 0,onSelect:h,onToggleSelected:w,registry:x,selectMode:C,selectedIds:v,sessions:m}),O&&e.jsx(ce,{open:!0,onOpenChange:f=>{!f&&!N&&y(!1)},children:e.jsxs(de,{scope:"page",showCloseButton:!1,size:"small",children:[e.jsxs(Ie,{children:[e.jsx(G,{children:"Runs löschen"}),e.jsx(He,{children:v.size===1?"Ein Run wird endgültig gelöscht.":`${v.size} Runs werden endgültig gelöscht.`})]}),e.jsxs(_e,{children:[e.jsx(g,{disabled:N,onClick:()=>y(!1),variant:"outline",children:"Abbrechen"}),e.jsx(g,{disabled:N,onClick:()=>void k(),children:N?"Löscht ...":`Löschen (${v.size})`})]})]})})]})})}const ie="flex min-h-0 min-w-0 flex-1 flex-col",xt="inline-flex w-header min-h-header items-center justify-center border-r border-border text-primary transition-colors duration-100 not-disabled:cursor-pointer hover:not-disabled:bg-accent focus-visible:outline-2 focus-visible:outline-ring/60 focus-visible:-outline-offset-3 aria-expanded:bg-primary aria-expanded:text-primary-foreground aria-pressed:bg-primary aria-pressed:text-primary-foreground disabled:opacity-45";function pt(){var re;const n=Be(),r=Fe((re=n.user)==null?void 0:re.id),a=n.can("runs.read"),u=a&&n.can("runs.write"),i=n.can("runs.inspect"),h=a&&n.can("runs.delete"),x=Ue(),m=t.useRef(null),l=t.useRef(null),[o,p]=t.useState(null),[j,C]=t.useState(null),[c,v]=t.useState(null),[b,O]=t.useState(null),[y,N]=t.useState(null),[_,B]=t.useState([]),[w,E]=t.useState(),[k,f]=t.useState(),[z,I]=t.useState(),[U,X]=t.useState(!1),[q,K]=t.useState(!1),[D,J]=t.useState(!1),[Y,A]=t.useState(),[pe,ve]=t.useState(!1),[ge,be]=t.useState(()=>new Set),[we,Z]=t.useState(!1),H=t.useRef(void 0),T=t.useRef(!1),L=t.useCallback(()=>{if(!a)return Promise.resolve();if(H.current)return T.current=!0,H.current;const s=async()=>{do{T.current=!1;try{B(await Ye()),Z(!1)}catch{Z(!0)}}while(T.current)};return H.current=s().finally(()=>{H.current=void 0}),H.current},[a]);t.useEffect(()=>{if(!a||w)return;L();const s=qe.subscribe(Ke.channels.runs,{},()=>void L()),d=setInterval(()=>void L(),5e3);return()=>{s(),clearInterval(d)}},[w,a,L]);const M=t.useCallback((s=!1)=>{var d;J(!1),s&&((d=m.current)==null||d.focus({preventScroll:!0}))},[]),$=t.useCallback(()=>{A(void 0),ve(!0),J(!0)},[]),W=t.useCallback(()=>{D?M(!0):$()},[M,$,D]);t.useEffect(()=>{const s=d=>{if(d.defaultPrevented||d.repeat||d.altKey||d.shiftKey||d.key.toLowerCase()!=="i"||d.metaKey===d.ctrlKey)return;const R=m.current;!R||R.closest("[inert]")||(d.preventDefault(),W())};return window.addEventListener("keydown",s),()=>window.removeEventListener("keydown",s)},[W]);const ee=t.useCallback((s,d)=>be(R=>{if(R.has(s)===d)return R;const P=new Set(R);return d?P.add(s):P.delete(s),P}),[]),te=_,je=te.find(s=>s.id===k),ye=t.useCallback(()=>{A(void 0),X(!0)},[]),ke=t.useCallback(()=>K(!1),[]),Se=t.useCallback(()=>{X(!1),requestAnimationFrame(()=>{var s;return(s=l.current)==null?void 0:s.focus()})},[]),Ce=e.jsx(g,{"aria-label":"Einstellungen öffnen",onClick:ye,ref:l,size:"icon-lg",title:"Einstellungen",variant:"ghost",children:e.jsx(Ze,{})}),Re=s=>{f(s),M(!0)},Ne=()=>{A(void 0),M(!0),E({id:crypto.randomUUID(),title:"Neuer Run",updatedAt:Date.now()})},Ee=async s=>{const d=await Promise.allSettled(s.map(F=>et(F))),R=s.filter((F,Me)=>d[Me].status==="fulfilled");k!==void 0&&R.includes(k)&&f(void 0),await L();const P=d.find(F=>F.status==="rejected");if(P)throw P.reason};if(x.status==="loading")return e.jsx("div",{className:"m-auto p-6 text-muted-foreground",children:"Profil wird geladen."});if(x.status==="failed")return e.jsx("div",{className:"flex h-full",children:e.jsx("main",{className:"relative z-1 flex min-h-0 min-w-0 flex-1 bg-[image:var(--surface-backdrop)]",children:e.jsxs("div",{className:ie,children:[e.jsx("header",{className:"flex min-h-[42px] flex-none items-center gap-3 border-b border-border-soft pr-0.5 pb-2 pl-2.5",children:e.jsx("div",{className:"flex min-w-0 flex-1 items-center gap-3 text-[0.82rem] font-semibold text-foreground",children:"Profil nicht verfügbar"})}),e.jsxs(Te,{className:"m-auto max-w-[560px] gap-3 p-6",variant:"destructive",children:[e.jsx("p",{children:x.error}),e.jsx(g,{variant:"outline",onClick:()=>window.location.reload(),children:"Neu laden"})]})]})})});const S=x.registry,se=S.overviewPanels.filter(s=>s.readRight===void 0||n.can(s.readRight)),Q=se.filter(s=>s.placement!=="toolbar"),ze=se.filter(s=>s.placement==="toolbar"),De=a||Q.length>0,ne=Q.some(s=>ge.has(s.id)),Ae=$e(a?k:void 0,D,z);return e.jsxs("div",{className:"flex h-full flex-col",children:[e.jsxs("header",{className:"relative z-[80] flex h-header flex-none items-stretch border-b border-border bg-shell shadow-bar",children:[De&&e.jsx("div",{className:"relative flex flex-none self-stretch",children:e.jsx("button",{"aria-controls":"app-overview","aria-expanded":D,"aria-haspopup":"dialog","aria-keyshortcuts":"Meta+I Control+I","aria-label":D?"Übersicht schließen":"Übersicht öffnen",className:xt,onClick:W,ref:m,title:`Übersicht (Cmd+I / Ctrl+I)${ne?": Bearbeitung läuft":""}`,type:"button",children:ne?e.jsx(We,{"aria-hidden":!0,className:"size-[18px]"}):e.jsx(ot,{size:22})})}),ze.map(({id:s,Panel:d})=>e.jsx(vt,{id:s,onBusy:ee,onClose:()=>A(void 0),onOpen:()=>{!U&&!q&&!w&&(M(),A(s))},open:Y===s,Panel:d,registry:S,userLocation:Ae},s)),e.jsx("div",{"aria-label":"Run-Titelleiste",className:"flex min-w-0 flex-1 items-stretch overflow-x-auto no-scrollbar focus-visible:outline-2 focus-visible:outline-ring/60 focus-visible:-outline-offset-3 max-md:in-[header:has([data-slot=overseer-toolbar][data-open=true])]:flex-[0_1_0]",ref:p,role:"region",tabIndex:0}),e.jsx(Qe,{}),e.jsxs("div",{className:"flex min-w-0 flex-[0_1_auto] items-stretch bg-shell has-data-[workspace-state=expanded]:w-[var(--workspace-panel-width,560px)] has-data-[workspace-state=expanded]:border-l has-data-[workspace-state=expanded]:border-border",children:[e.jsx("div",{className:"flex min-w-0 flex-1 empty:hidden",ref:C}),e.jsxs("div",{className:"flex flex-none items-center gap-1.5 px-2 max-md:gap-0.5 max-md:px-1",children:[n.can("settings.read")&&Ce,i&&e.jsx(g,{"aria-haspopup":"dialog","aria-label":"Hilfe öffnen",onClick:()=>{A(void 0),K(!0)},size:"icon-lg",title:"Hilfe",variant:"ghost",children:e.jsx(lt,{})})]})]})]}),e.jsx(Ve,{failures:x.failures}),e.jsx(Ge.Provider,{value:b,children:e.jsx("div",{className:"relative flex min-h-0 flex-1 flex-col",ref:O,children:e.jsxs(Xe.Provider,{value:y,children:[e.jsxs("div",{className:"relative flex h-auto min-h-0 flex-1",ref:N,children:[e.jsx("main",{className:"relative z-1 flex min-h-0 min-w-0 flex-1 bg-[image:var(--surface-backdrop)] @container/chat-content",children:a&&k?e.jsx(ae,{headerContainer:o,workspaceHeaderContainer:j,statusContainer:c,onLocationChange:I,onViewed:r.markViewed,viewing:!D&&!U&&!q&&!w&&!Y,registry:S,session:je??{id:k,title:"Neuer Run",updatedAt:Date.now()}},k):e.jsx("div",{className:ie,children:e.jsx("div",{className:"m-auto text-center text-muted-foreground",children:a?u?"Öffne oben links die Übersicht, um einen Run zu wählen oder einen neuen zu starten.":"Öffne oben links die Übersicht, um einen Run zu wählen. Du hast Lesezugriff.":"Für dieses Benutzerkonto sind keine Runs freigegeben."})})}),pe&&e.jsx(ft,{onOpen:$,onBusy:ee,onClose:()=>M(!0),open:D,panels:Q,registry:S,runs:a?{activeId:k,canCreate:u&&(n.can("runs.create")||S.scriptEntries.some(s=>V(n,s.id))),canDelete:h,onCreate:Ne,onDelete:Ee,onOpen:Re,registry:S,sessions:te,seenRevisions:r.revisions,unreachable:we}:void 0}),w&&e.jsx(ae,{onStarted:()=>{f(w.id),E(void 0),L()},registry:S,session:w,startDialog:{onClose:()=>E(void 0),initialEntryId:w.startEntryId}},w.id),U&&e.jsx(Je,{onClose:Se,registry:S}),i&&q&&e.jsx(dt,{onClose:ke,sampleEntries:S.scriptEntries.filter(s=>V(n,s.id)).map(s=>s.id),onStartSample:s=>{!V(n,s)||!S.scriptEntries.some(d=>d.id===s)||(K(!1),A(void 0),M(),E({id:crypto.randomUUID(),title:"Neuer Run",updatedAt:Date.now(),startEntryId:s}))}})]}),e.jsx("footer",{"aria-label":"Run-Statusleiste",className:"relative flex h-statusbar w-full flex-none items-stretch pl-3 before:pointer-events-none before:absolute before:inset-0 before:z-[2] before:border-t before:border-border before:bg-shell before:shadow-status before:backdrop-blur-[16px] before:content-['']",ref:v})]})})})]})}function vt({id:n,onBusy:r,Panel:a,...u}){const i=t.useCallback(h=>r(n,h),[n,r]);return t.useEffect(()=>()=>r(n,!1),[n,r]),e.jsx(a,{...u,onBusy:i})}tt();const xe=document.getElementById("root");if(!xe)throw new Error("Root-Element fehlt");const le=st.createRoot(xe);try{const n=nt(window);le.render(e.jsx(t.StrictMode,{children:e.jsx(rt,{children:e.jsx(at,{children:e.jsx(pt,{})})})}))}catch(n){le.render(e.jsxs(it,{children:[e.jsx("h1",{className:"my-3 text-[1.5rem]",children:"Darstellung konnte nicht geladen werden"}),e.jsx("p",{className:"mb-6 leading-normal",role:"alert",children:n instanceof Error?n.message:String(n)}),e.jsx(g,{onClick:()=>window.location.reload(),variant:"outline",children:"Erneut laden"})]}))}