@schlenkr/ragents 0.1.10 → 0.1.11

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (743) hide show
  1. package/apps/server/package.json +1 -1
  2. package/apps/server/src/access-projection.ts +4 -4
  3. package/apps/server/src/access-service.ts +3 -3
  4. package/apps/server/src/access-session.ts +19 -19
  5. package/apps/server/src/api/contracts.ts +29 -29
  6. package/apps/server/src/api/core-methods.ts +17 -17
  7. package/apps/server/src/api/delivery.ts +2 -2
  8. package/apps/server/src/api/reference.ts +27 -27
  9. package/apps/server/src/api/rights.ts +18 -18
  10. package/apps/server/src/chat-handler.ts +5 -5
  11. package/apps/server/src/config-definition.ts +37 -10
  12. package/apps/server/src/config-file.ts +49 -49
  13. package/apps/server/src/config.ts +2 -0
  14. package/apps/server/src/data-directory.ts +2 -2
  15. package/apps/server/src/external-access.ts +1 -1
  16. package/apps/server/src/folder-install.ts +1 -1
  17. package/apps/server/src/help-files.ts +1 -1
  18. package/apps/server/src/host-api.json +6 -1
  19. package/apps/server/src/host-api.ts +3 -2
  20. package/apps/server/src/host-record.ts +3 -3
  21. package/apps/server/src/host-resolution-hooks.mjs +4 -4
  22. package/apps/server/src/host-version.ts +17 -17
  23. package/apps/server/src/host-web.ts +5 -5
  24. package/apps/server/src/main.ts +6 -6
  25. package/apps/server/src/missing-environment.ts +6 -6
  26. package/apps/server/src/parent-watch.ts +4 -4
  27. package/apps/server/src/plugin-build/build.ts +31 -31
  28. package/apps/server/src/plugin-build/host-api-names.ts +7 -7
  29. package/apps/server/src/plugin-build/plugin-description.ts +15 -15
  30. package/apps/server/src/plugin-build/typecheck.ts +1 -1
  31. package/apps/server/src/plugin-support/actor-programs/app-project.ts +19 -19
  32. package/apps/server/src/plugin-support/actor-programs/client-compiler.ts +4 -4
  33. package/apps/server/src/plugin-support/actor-programs/client-contracts.ts +11 -11
  34. package/apps/server/src/plugin-support/actor-programs/contract.ts +17 -17
  35. package/apps/server/src/plugin-support/actor-programs/runtime-libraries.ts +1 -1
  36. package/apps/server/src/plugin-support/actor-programs/workflow/index.ts +5 -5
  37. package/apps/server/src/plugin-support/actor-programs/workflow/prompt-reader.ts +2 -2
  38. package/apps/server/src/plugin-support/chat-display-policy.ts +2 -2
  39. package/apps/server/src/plugin-support/front-matter.ts +6 -6
  40. package/apps/server/src/plugin-support/http.ts +2 -2
  41. package/apps/server/src/plugin-support/language-server/contract.ts +8 -8
  42. package/apps/server/src/plugin-support/language-server/plugin.ts +2 -2
  43. package/apps/server/src/plugin-support/language-server/snapshot-method.ts +1 -1
  44. package/apps/server/src/plugin-support/language-server/tools.ts +11 -11
  45. package/apps/server/src/plugin-support/model-aliases.ts +30 -20
  46. package/apps/server/src/plugin-support/model-choice.ts +15 -15
  47. package/apps/server/src/plugin-support/model-completion.ts +44 -23
  48. package/apps/server/src/plugin-support/model-providers.ts +170 -0
  49. package/apps/server/src/plugin-support/model-upstreams.ts +1 -1
  50. package/apps/server/src/plugin-support/native-typescript-child.ts +4 -4
  51. package/apps/server/src/plugin-support/native-typescript-executor.ts +12 -12
  52. package/apps/server/src/plugin-support/plugin-config.ts +3 -3
  53. package/apps/server/src/plugin-support/plugin-folder.ts +2 -2
  54. package/apps/server/src/plugin-support/plugins-root.ts +2 -2
  55. package/apps/server/src/plugin-support/process-sandbox.ts +39 -39
  56. package/apps/server/src/plugin-support/product-model-settings-contract.ts +3 -3
  57. package/apps/server/src/plugin-support/product-model-settings.ts +10 -10
  58. package/apps/server/src/plugin-support/product-relay.ts +9 -9
  59. package/apps/server/src/plugin-support/product-start-options.ts +4 -4
  60. package/apps/server/src/plugin-support/prompt.ts +1 -1
  61. package/apps/server/src/plugin-support/provision.ts +8 -8
  62. package/apps/server/src/plugin-support/run-scripts.ts +17 -17
  63. package/apps/server/src/plugin-support/skills.ts +18 -18
  64. package/apps/server/src/plugin-support/start-entries-contract.ts +17 -17
  65. package/apps/server/src/plugin-support/start-options-contract.ts +5 -5
  66. package/apps/server/src/plugin-support/system-prompts.ts +11 -11
  67. package/apps/server/src/plugin-support/thinking-level.ts +2 -2
  68. package/apps/server/src/plugin-support/tool-availability.ts +2 -2
  69. package/apps/server/src/plugin-support/workspace-ownership.ts +5 -5
  70. package/apps/server/src/plugin-support/workspace-sandbox-host.ts +37 -37
  71. package/apps/server/src/plugin-support/zip.ts +7 -7
  72. package/apps/server/src/profile/bundle-manifest.ts +17 -17
  73. package/apps/server/src/profile/compose.ts +12 -7
  74. package/apps/server/src/profile/plugin-discovery.ts +12 -12
  75. package/apps/server/src/profile/provisioning.ts +5 -5
  76. package/apps/server/src/profile-target.ts +10 -10
  77. package/apps/server/src/protocol.ts +2 -2
  78. package/apps/server/src/provider.ts +61 -56
  79. package/apps/server/src/ragents/actor-chat-history.ts +8 -8
  80. package/apps/server/src/ragents/chat-text-positions.ts +2 -2
  81. package/apps/server/src/ragents/coordinator.ts +2 -2
  82. package/apps/server/src/ragents/engine.ts +23 -23
  83. package/apps/server/src/ragents/global-chat.ts +8 -8
  84. package/apps/server/src/ragents/host-services.ts +6 -3
  85. package/apps/server/src/ragents/journal-chat-events.ts +1 -1
  86. package/apps/server/src/ragents/run-owner.ts +2 -2
  87. package/apps/server/src/ragents/session.ts +49 -49
  88. package/apps/server/src/ragents/typescript-tools.ts +12 -12
  89. package/apps/server/src/ragents/workspace-runtime.ts +28 -28
  90. package/apps/server/src/rpc/dispatcher.ts +19 -19
  91. package/apps/server/src/rpc/http-transport.ts +11 -11
  92. package/apps/server/src/rpc/stdio-transport.ts +3 -3
  93. package/apps/server/src/run-preparation-input.ts +5 -5
  94. package/apps/server/src/run-preparation.ts +24 -24
  95. package/apps/server/src/run-transfer.ts +39 -39
  96. package/apps/server/src/server.ts +48 -48
  97. package/apps/server/src/settings.ts +1 -1
  98. package/apps/server/src/startup.ts +3 -3
  99. package/apps/server/src/title-compactor.ts +9 -9
  100. package/apps/server/src/title-settings.ts +3 -3
  101. package/apps/server/src/web-bundles.ts +2 -2
  102. package/apps/server/src/web-stylesheet.ts +2 -2
  103. package/apps/web/dist/assets/{highlighted-body-KPVGNVTW-BO4wLQtE.js → highlighted-body-KPVGNVTW-BfNSGxjB.js} +1 -1
  104. package/apps/web/dist/assets/main-D6bsKcIK.js +11 -0
  105. package/apps/web/dist/assets/mermaid-HWGCJPDP-DROEqEeg.js +608 -0
  106. package/apps/web/dist/assets/runPanel-Dumuuqry.js +21 -0
  107. package/apps/web/dist/help/guide-access.html +5 -5
  108. package/apps/web/dist/help/guide-access.md +2 -2
  109. package/apps/web/dist/help/guide-clients.html +53 -54
  110. package/apps/web/dist/help/guide-clients.md +50 -51
  111. package/apps/web/dist/help/guide-distributed.html +12 -7
  112. package/apps/web/dist/help/guide-distributed.md +9 -4
  113. package/apps/web/dist/help/guide-functions.html +3 -3
  114. package/apps/web/dist/help/guide-getting-started.html +24 -15
  115. package/apps/web/dist/help/guide-getting-started.md +22 -12
  116. package/apps/web/dist/help/guide-ideas.html +3 -3
  117. package/apps/web/dist/help/guide-plugins.html +5 -4
  118. package/apps/web/dist/help/guide-plugins.md +2 -1
  119. package/apps/web/dist/help/guide-programs.html +3 -3
  120. package/apps/web/dist/help/guide-runtime.html +6 -6
  121. package/apps/web/dist/help/guide-runtime.md +3 -3
  122. package/apps/web/dist/help/guide.html +3 -3
  123. package/apps/web/dist/help/index.html +196 -144
  124. package/apps/web/dist/help/mini-app.css +6 -0
  125. package/apps/web/dist/help/mini-app.js +14 -14
  126. package/apps/web/dist/host-web.json +90 -90
  127. package/apps/web/dist/index.html +3 -3
  128. package/apps/web/dist/run-panel.html +3 -3
  129. package/apps/web/package.json +1 -1
  130. package/apps/web/src/AccessContext.tsx +15 -15
  131. package/apps/web/src/App.tsx +13 -13
  132. package/apps/web/src/DiffCode.tsx +2 -2
  133. package/apps/web/src/HelpDialog.tsx +3 -3
  134. package/apps/web/src/Overview.tsx +13 -13
  135. package/apps/web/src/PluginActivation.ts +1 -1
  136. package/apps/web/src/PluginChat.tsx +15 -15
  137. package/apps/web/src/PluginFailureNotice.tsx +1 -1
  138. package/apps/web/src/PluginRegistry.tsx +44 -44
  139. package/apps/web/src/RunPreparationChat.tsx +11 -11
  140. package/apps/web/src/RunStore.ts +1 -1
  141. package/apps/web/src/SessionList.tsx +14 -14
  142. package/apps/web/src/SettingsModal.tsx +112 -112
  143. package/apps/web/src/StartOptions.tsx +11 -11
  144. package/apps/web/src/StartSelection.tsx +11 -11
  145. package/apps/web/src/StartTiles.tsx +8 -8
  146. package/apps/web/src/SurfaceShortcuts.tsx +3 -3
  147. package/apps/web/src/ThemeSettings.tsx +8 -8
  148. package/apps/web/src/TitleModelSettings.tsx +13 -13
  149. package/apps/web/src/WorkspacePanel.tsx +9 -9
  150. package/apps/web/src/access-session.ts +4 -4
  151. package/apps/web/src/access-token.ts +5 -5
  152. package/apps/web/src/actor-conversation.ts +3 -3
  153. package/apps/web/src/actor-programs/client-ui/DataTable.tsx +8 -8
  154. package/apps/web/src/actor-programs/client-ui/FilePicker.tsx +4 -4
  155. package/apps/web/src/actor-programs/client-ui/FlowDiagram.tsx +13 -13
  156. package/apps/web/src/actor-programs/client-ui/Viewers.tsx +4 -4
  157. package/apps/web/src/actor-programs/client-ui/WorkflowDiagram.tsx +1 -1
  158. package/apps/web/src/actor-programs/client-ui/file-contracts.d.ts +4 -4
  159. package/apps/web/src/actor-programs/client-ui/file-selection.ts +1 -1
  160. package/apps/web/src/actor-programs/client-ui/viewer-contracts.d.ts +3 -3
  161. package/apps/web/src/api.ts +7 -7
  162. package/apps/web/src/chat/StoppedActorNotice.tsx +5 -5
  163. package/apps/web/src/chat/chat-target.ts +3 -3
  164. package/apps/web/src/chat/requests.ts +2 -2
  165. package/apps/web/src/chat/useAttachmentCapabilities.ts +2 -2
  166. package/apps/web/src/chat-view-settings.tsx +5 -6
  167. package/apps/web/src/diff-view.css +1 -1
  168. package/apps/web/src/highlighting.css +1 -1
  169. package/apps/web/src/language-server/language-server-plugin.tsx +30 -30
  170. package/apps/web/src/lib/labels.ts +6 -6
  171. package/apps/web/src/main.tsx +4 -4
  172. package/apps/web/src/offered-machines.ts +2 -2
  173. package/apps/web/src/page-opener.tsx +1 -1
  174. package/apps/web/src/panel/ConnectionsPage.tsx +23 -23
  175. package/apps/web/src/panel/LoginForm.tsx +6 -6
  176. package/apps/web/src/panel/PanelDialogs.tsx +22 -22
  177. package/apps/web/src/panel/PanelHeader.tsx +2 -2
  178. package/apps/web/src/panel/PanelPage.tsx +1 -1
  179. package/apps/web/src/panel/RunLine.tsx +4 -4
  180. package/apps/web/src/panel/RunsPage.tsx +15 -15
  181. package/apps/web/src/panel/StartPage.tsx +26 -26
  182. package/apps/web/src/panel/connection-state.ts +9 -9
  183. package/apps/web/src/panel/contract.ts +28 -28
  184. package/apps/web/src/panel.tsx +1 -1
  185. package/apps/web/src/plugin-bootstrap.ts +5 -5
  186. package/apps/web/src/product/ModelControl.tsx +3 -3
  187. package/apps/web/src/product/ProductModelSettings.tsx +16 -16
  188. package/apps/web/src/product/SystemPromptControl.tsx +11 -11
  189. package/apps/web/src/product/model-settings.ts +2 -2
  190. package/apps/web/src/rpc/client.ts +16 -16
  191. package/apps/web/src/rpc.ts +1 -1
  192. package/apps/web/src/run-overview.ts +1 -1
  193. package/apps/web/src/run-panel/RunPanelApp.tsx +39 -39
  194. package/apps/web/src/run-panel/RunPanelHeader.tsx +6 -6
  195. package/apps/web/src/run-panel/RunPanelMenu.tsx +6 -6
  196. package/apps/web/src/run-panel/RunPanelRail.tsx +4 -4
  197. package/apps/web/src/run-panel/RunPanelWorkspace.tsx +3 -3
  198. package/apps/web/src/run-panel/clipboard.ts +3 -3
  199. package/apps/web/src/run-panel/host-contract.ts +5 -5
  200. package/apps/web/src/run-panel/host.ts +15 -15
  201. package/apps/web/src/run-panel/input-bridge.ts +1 -1
  202. package/apps/web/src/run-panel/run-panel-location.ts +5 -5
  203. package/apps/web/src/run-panel/use-session-list.ts +1 -1
  204. package/apps/web/src/run-panel/workspace-state.ts +3 -3
  205. package/apps/web/src/run-panel.tsx +4 -4
  206. package/apps/web/src/run-preparation.ts +2 -2
  207. package/apps/web/src/run-view.ts +3 -3
  208. package/apps/web/src/settings-contributions.ts +32 -32
  209. package/apps/web/src/theme.ts +9 -9
  210. package/apps/web/src/title-model-settings.ts +6 -6
  211. package/apps/web/src/ui/ListDetail.tsx +9 -9
  212. package/apps/web/src/ui/dialog.tsx +2 -2
  213. package/apps/web/src/ui/modal-controller.ts +3 -3
  214. package/apps/web/src/ui/modal.tsx +2 -2
  215. package/apps/web/src/ui/popover.tsx +1 -1
  216. package/apps/web/src/ui/relative-time.ts +8 -8
  217. package/apps/web/src/ui/startup-notice.tsx +2 -2
  218. package/apps/web/src/ui/state-icon.tsx +1 -1
  219. package/apps/web/src/ui/state-vocabulary.ts +16 -16
  220. package/apps/web/src/ui/stop-button.tsx +2 -2
  221. package/bundles/ragents.activity/ragents-bundle.json +2 -2
  222. package/bundles/ragents.activity/web/classes.json +1 -1
  223. package/bundles/ragents.activity/web/index.js +1 -1
  224. package/bundles/ragents.activity/web/index.js.map +2 -2
  225. package/bundles/ragents.actor-programs/ragents-bundle.json +2 -2
  226. package/bundles/ragents.actor-programs/server/index.js +225 -225
  227. package/bundles/ragents.actor-programs/server/index.js.map +2 -2
  228. package/bundles/ragents.actor-programs/web/classes.json +1 -1
  229. package/bundles/ragents.actor-programs/web/index.js +1 -1
  230. package/bundles/ragents.actor-programs/web/index.js.map +3 -3
  231. package/bundles/ragents.ask/ragents-bundle.json +2 -2
  232. package/bundles/ragents.ask/server/chunks/{chunk-PDJO75SQ.js → chunk-YOV27MAR.js} +2 -2
  233. package/bundles/ragents.ask/server/chunks/chunk-YOV27MAR.js.map +7 -0
  234. package/bundles/ragents.ask/server/exports/server/contract.js +1 -1
  235. package/bundles/ragents.ask/server/index.js +23 -23
  236. package/bundles/ragents.ask/server/index.js.map +2 -2
  237. package/bundles/ragents.ask/web/chunks/{chunk-WFN4374U.js → chunk-D6NNB5DS.js} +1 -1
  238. package/bundles/ragents.ask/web/chunks/chunk-D6NNB5DS.js.map +7 -0
  239. package/bundles/ragents.ask/web/chunks/{chunk-MBRPS477.js → chunk-IQBHK7MV.js} +2 -2
  240. package/bundles/ragents.ask/web/chunks/{chunk-MBRPS477.js.map → chunk-IQBHK7MV.js.map} +3 -3
  241. package/bundles/ragents.ask/web/chunks/chunk-PWFIAMX4.js +2 -0
  242. package/bundles/ragents.ask/web/chunks/chunk-PWFIAMX4.js.map +7 -0
  243. package/bundles/ragents.ask/web/chunks/chunk-QHGKEESD.js +2 -0
  244. package/bundles/ragents.ask/web/chunks/chunk-QHGKEESD.js.map +7 -0
  245. package/bundles/ragents.ask/web/classes.json +1 -1
  246. package/bundles/ragents.ask/web/exports/ask-payload.js +1 -1
  247. package/bundles/ragents.ask/web/exports/web/QuestionCard.js +1 -1
  248. package/bundles/ragents.ask/web/exports/web/api.js +1 -1
  249. package/bundles/ragents.ask/web/index.js +1 -1
  250. package/bundles/ragents.ask/web/index.js.map +2 -2
  251. package/bundles/ragents.browser/executor/index.mjs +35 -35
  252. package/bundles/ragents.browser/executor/index.mjs.map +2 -2
  253. package/bundles/ragents.browser/ragents-bundle.json +2 -2
  254. package/bundles/ragents.browser/server/chunks/{chunk-CWLX4VA5.js → chunk-PYEISBNE.js} +1 -1
  255. package/bundles/ragents.browser/server/chunks/{chunk-CWLX4VA5.js.map → chunk-PYEISBNE.js.map} +1 -1
  256. package/bundles/ragents.browser/server/exports/server/contract.js +1 -1
  257. package/bundles/ragents.browser/server/index.js +31 -31
  258. package/bundles/ragents.browser/server/index.js.map +2 -2
  259. package/bundles/ragents.browser/skills/browser-testing/SKILL.md +30 -30
  260. package/bundles/ragents.documents/prompt.hbs +1 -1
  261. package/bundles/ragents.documents/ragents-bundle.json +2 -2
  262. package/bundles/ragents.documents/server/chunks/{chunk-QIECRZ7C.js → chunk-KMZWOVTI.js} +3 -3
  263. package/bundles/ragents.documents/server/chunks/{chunk-QIECRZ7C.js.map → chunk-KMZWOVTI.js.map} +2 -2
  264. package/bundles/ragents.documents/server/exports/contract.js +1 -1
  265. package/bundles/ragents.documents/server/index.js +26 -26
  266. package/bundles/ragents.documents/server/index.js.map +2 -2
  267. package/bundles/ragents.documents/web/classes.json +1 -1
  268. package/bundles/ragents.documents/web/index.js +1 -1
  269. package/bundles/ragents.documents/web/index.js.map +3 -3
  270. package/bundles/ragents.lsp-fsharp/executor/index.mjs +4 -4
  271. package/bundles/ragents.lsp-fsharp/executor/index.mjs.map +2 -2
  272. package/bundles/ragents.lsp-fsharp/ragents-bundle.json +2 -2
  273. package/bundles/ragents.lsp-fsharp/server/index.js +5 -5
  274. package/bundles/ragents.lsp-fsharp/server/index.js.map +2 -2
  275. package/bundles/ragents.lsp-fsharp/web/index.js +1 -1
  276. package/bundles/ragents.lsp-fsharp/web/index.js.map +2 -2
  277. package/bundles/ragents.lsp-roslyn/executor/index.mjs +3 -3
  278. package/bundles/ragents.lsp-roslyn/executor/index.mjs.map +2 -2
  279. package/bundles/ragents.lsp-roslyn/ragents-bundle.json +2 -2
  280. package/bundles/ragents.lsp-roslyn/server/index.js +17 -17
  281. package/bundles/ragents.lsp-roslyn/server/index.js.map +2 -2
  282. package/bundles/ragents.lsp-roslyn/web/index.js +1 -1
  283. package/bundles/ragents.lsp-roslyn/web/index.js.map +2 -2
  284. package/bundles/ragents.lsp-typescript/executor/index.mjs +2 -2
  285. package/bundles/ragents.lsp-typescript/executor/index.mjs.map +2 -2
  286. package/bundles/ragents.lsp-typescript/ragents-bundle.json +2 -2
  287. package/bundles/ragents.lsp-typescript/server/index.js.map +1 -1
  288. package/bundles/ragents.lsp-typescript/web/index.js +1 -1
  289. package/bundles/ragents.lsp-typescript/web/index.js.map +2 -2
  290. package/bundles/ragents.model-relay/ragents-bundle.json +7 -3
  291. package/bundles/ragents.model-relay/server/index.js +25 -21
  292. package/bundles/ragents.model-relay/server/index.js.map +2 -2
  293. package/bundles/ragents.orchestration/ragents-bundle.json +2 -2
  294. package/bundles/ragents.orchestration/server/index.js +28 -28
  295. package/bundles/ragents.orchestration/server/index.js.map +2 -2
  296. package/bundles/ragents.orchestration/web/chunks/{chunk-OSKPH6SZ.js → chunk-CFMJD5ZI.js} +2 -2
  297. package/bundles/ragents.orchestration/web/chunks/chunk-HOBLI364.js +2 -0
  298. package/bundles/ragents.orchestration/web/chunks/{chunk-OQYCNYXN.js.map → chunk-HOBLI364.js.map} +2 -2
  299. package/bundles/ragents.orchestration/web/chunks/{chunk-ODMMQGX2.js → chunk-UCIMT2R4.js} +2 -2
  300. package/bundles/ragents.orchestration/web/classes.json +1 -1
  301. package/bundles/ragents.orchestration/web/exports/web/program-slot.js +1 -1
  302. package/bundles/ragents.orchestration/web/exports/web/surface-entities.js +1 -1
  303. package/bundles/ragents.orchestration/web/index.js +8 -8
  304. package/bundles/ragents.orchestration/web/index.js.map +2 -2
  305. package/bundles/ragents.overseer/ragents-bundle.json +2 -2
  306. package/bundles/ragents.overseer/server/index.js +98 -98
  307. package/bundles/ragents.overseer/server/index.js.map +2 -2
  308. package/bundles/ragents.overseer/web/classes.json +1 -1
  309. package/bundles/ragents.overseer/web/index.js +1 -1
  310. package/bundles/ragents.overseer/web/index.js.map +2 -2
  311. package/bundles/ragents.processes/ragents-bundle.json +2 -2
  312. package/bundles/ragents.processes/server/index.js +11 -11
  313. package/bundles/ragents.processes/server/index.js.map +2 -2
  314. package/bundles/ragents.processes/web/classes.json +1 -1
  315. package/bundles/ragents.processes/web/index.js +3 -3
  316. package/bundles/ragents.processes/web/index.js.map +2 -2
  317. package/bundles/ragents.product/ragents-bundle.json +2 -2
  318. package/bundles/ragents.product/server/index.js +12 -13
  319. package/bundles/ragents.product/server/index.js.map +2 -2
  320. package/bundles/ragents.product/web/classes.json +1 -1
  321. package/bundles/ragents.product/web/index.js +1 -1
  322. package/bundles/ragents.product/web/index.js.map +2 -2
  323. package/bundles/ragents.profile-distribution/ragents-bundle.json +2 -2
  324. package/bundles/ragents.profile-distribution/server/index.js +31 -31
  325. package/bundles/ragents.profile-distribution/server/index.js.map +2 -2
  326. package/bundles/ragents.reference/ragents-bundle.json +2 -2
  327. package/bundles/ragents.reference/run-scripts/balcony-wizard/RUN.md +19 -19
  328. package/bundles/ragents.reference/run-scripts/balcony-wizard/actors/balcony-app/package.json +2 -2
  329. package/bundles/ragents.reference/run-scripts/balcony-wizard/actors/balcony-app/src/client.tsx +14 -14
  330. package/bundles/ragents.reference/run-scripts/balcony-wizard/actors/balcony-app/src/conversation.ts +2 -2
  331. package/bundles/ragents.reference/run-scripts/balcony-wizard/actors/balcony-app/tests/conversation.test.ts +49 -49
  332. package/bundles/ragents.reference/run-scripts/balcony-wizard/package.json +1 -1
  333. package/bundles/ragents.reference/run-scripts/balcony-wizard/src/server.ts +9 -9
  334. package/bundles/ragents.reference/run-scripts/balcony-wizard/tests/program.test.ts +9 -9
  335. package/bundles/ragents.reference/run-scripts/conversation-circle/RUN.md +7 -7
  336. package/bundles/ragents.reference/run-scripts/conversation-circle/package.json +1 -1
  337. package/bundles/ragents.reference/run-scripts/conversation-circle/src/server.ts +13 -13
  338. package/bundles/ragents.reference/run-scripts/conversation-circle/tests/helpers.ts +1 -1
  339. package/bundles/ragents.reference/run-scripts/conversation-circle/tests/program.test.ts +8 -8
  340. package/bundles/ragents.reference/run-scripts/learning-afternoon/RUN.md +16 -16
  341. package/bundles/ragents.reference/run-scripts/learning-afternoon/package.json +1 -1
  342. package/bundles/ragents.reference/run-scripts/learning-afternoon/prompts/experiment.md +1 -1
  343. package/bundles/ragents.reference/run-scripts/learning-afternoon/prompts/helper.md +3 -3
  344. package/bundles/ragents.reference/run-scripts/learning-afternoon/prompts/quiz.md +1 -1
  345. package/bundles/ragents.reference/run-scripts/learning-afternoon/src/server.ts +9 -9
  346. package/bundles/ragents.reference/run-scripts/learning-afternoon/tests/program.test.ts +39 -39
  347. package/bundles/ragents.reference/run-scripts/moderated-round/RUN.md +7 -7
  348. package/bundles/ragents.reference/run-scripts/moderated-round/package.json +1 -1
  349. package/bundles/ragents.reference/run-scripts/moderated-round/src/server.ts +9 -9
  350. package/bundles/ragents.reference/run-scripts/moderated-round/tests/helpers.ts +1 -1
  351. package/bundles/ragents.reference/run-scripts/moderated-round/tests/program.test.ts +6 -6
  352. package/bundles/ragents.reference/run-scripts/shared-actor-list/RUN.md +12 -12
  353. package/bundles/ragents.reference/run-scripts/shared-actor-list/actors/shared-list/package.json +2 -2
  354. package/bundles/ragents.reference/run-scripts/shared-actor-list/actors/shared-list/src/contract.ts +3 -3
  355. package/bundles/ragents.reference/run-scripts/shared-actor-list/actors/shared-list/tests/program.test.ts +4 -4
  356. package/bundles/ragents.reference/run-scripts/shared-actor-list/package.json +1 -1
  357. package/bundles/ragents.reference/run-scripts/shared-actor-list/src/server.ts +11 -11
  358. package/bundles/ragents.reference/run-scripts/shared-actor-list/tests/helpers.ts +1 -1
  359. package/bundles/ragents.reference/run-scripts/shared-actor-list/tests/program.test.ts +13 -13
  360. package/bundles/ragents.reference/run-scripts/word-game/RUN.md +18 -18
  361. package/bundles/ragents.reference/run-scripts/word-game/package.json +2 -2
  362. package/bundles/ragents.reference/run-scripts/word-game/src/client.tsx +1 -1
  363. package/bundles/ragents.reference/run-scripts/word-game/src/contract.ts +2 -2
  364. package/bundles/ragents.reference/run-scripts/word-game/src/server.ts +16 -16
  365. package/bundles/ragents.reference/run-scripts/word-game/tests/program.test.ts +39 -39
  366. package/bundles/ragents.reference/skills/100-shared-actor-list/SKILL.md +5 -5
  367. package/bundles/ragents.reference/skills/110-all-card-slots/SKILL.md +5 -5
  368. package/bundles/ragents.reference/skills/150-editorial-workbench/SKILL.md +5 -5
  369. package/bundles/ragents.reference/skills/160-learning-companion/SKILL.md +5 -5
  370. package/bundles/ragents.reference/skills/170-photo-collection/SKILL.md +5 -5
  371. package/bundles/ragents.reference/skills/180-decision-workbench/SKILL.md +5 -5
  372. package/bundles/ragents.reference/skills/190-review-queue/SKILL.md +5 -5
  373. package/bundles/ragents.reference/skills/20-circle-of-four/SKILL.md +5 -5
  374. package/bundles/ragents.reference/skills/200-typescript-diagnostics/SKILL.md +5 -5
  375. package/bundles/ragents.reference/skills/210-moderator-handover/SKILL.md +5 -5
  376. package/bundles/ragents.reference/skills/220-actor-approval-list/SKILL.md +5 -5
  377. package/bundles/ragents.reference/skills/230-shared-state-views/SKILL.md +5 -5
  378. package/bundles/ragents.reference/skills/240-live-result-list/SKILL.md +5 -5
  379. package/bundles/ragents.reference/skills/250-balcony-wizard/SKILL.md +5 -5
  380. package/bundles/ragents.reference/skills/30-llm-without-runtime-knowledge/SKILL.md +5 -5
  381. package/bundles/ragents.reference/skills/35-actor-input-fifo/SKILL.md +5 -5
  382. package/bundles/ragents.reference/skills/40-subscription-matrix/SKILL.md +5 -5
  383. package/bundles/ragents.reference/skills/50-subscription-removal/SKILL.md +5 -5
  384. package/bundles/ragents.reference/skills/60-stop-in-the-circle/SKILL.md +5 -5
  385. package/bundles/ragents.reference/skills/65-artifact-least-privilege/SKILL.md +5 -5
  386. package/bundles/ragents.reference/skills/70-headless-counter/SKILL.md +5 -5
  387. package/bundles/ragents.reference/skills/75-lsp-demo/SKILL.md +5 -5
  388. package/bundles/ragents.reference/skills/80-actor-text-analysis/SKILL.md +5 -5
  389. package/bundles/ragents.reference/skills/90-actor-notes/SKILL.md +5 -5
  390. package/bundles/ragents.reference/skills/95-hello-world/SKILL.md +5 -5
  391. package/bundles/ragents.reference/skills/decision-brief/SKILL.md +24 -24
  392. package/bundles/ragents.reference/skills/learning-sprint/SKILL.md +24 -24
  393. package/bundles/ragents.reference/web/classes.json +1 -1
  394. package/bundles/ragents.reference/web/index.js +1 -1
  395. package/bundles/ragents.reference/web/index.js.map +2 -2
  396. package/bundles/ragents.todo/ragents-bundle.json +2 -2
  397. package/bundles/ragents.todo/server/index.js +5 -5
  398. package/bundles/ragents.todo/server/index.js.map +2 -2
  399. package/bundles/ragents.todo/web/classes.json +1 -1
  400. package/bundles/ragents.todo/web/index.js +1 -1
  401. package/bundles/ragents.todo/web/index.js.map +2 -2
  402. package/bundles/ragents.transcript/ragents-bundle.json +2 -2
  403. package/bundles/ragents.transcript/server/index.js +11 -11
  404. package/bundles/ragents.transcript/server/index.js.map +2 -2
  405. package/bundles/ragents.watch/ragents-bundle.json +2 -2
  406. package/bundles/ragents.watch/server/index.js +48 -48
  407. package/bundles/ragents.watch/server/index.js.map +2 -2
  408. package/bundles/ragents.workspace/ragents-bundle.json +2 -2
  409. package/bundles/ragents.workspace/server/index.js +81 -81
  410. package/bundles/ragents.workspace/server/index.js.map +2 -2
  411. package/bundles/ragents.workspace/web/classes.json +1 -1
  412. package/bundles/ragents.workspace/web/index.js +1 -1
  413. package/bundles/ragents.workspace/web/index.js.map +2 -2
  414. package/package.json +4 -4
  415. package/packages/agent/dist/core/model-runtime.d.ts +7 -2
  416. package/packages/agent/dist/index.d.ts +1 -1
  417. package/packages/agent/dist/loop/agent-loop.d.ts +2 -2
  418. package/packages/agent/src/core/compaction/utils.ts +1 -1
  419. package/packages/agent/src/core/model-runtime.ts +45 -5
  420. package/packages/agent/src/index.ts +1 -1
  421. package/packages/agent/src/loop/agent-loop.ts +2 -2
  422. package/packages/ai/dist/models.d.ts +1 -0
  423. package/packages/ai/dist/models.generated.d.ts +4544 -983
  424. package/packages/ai/dist/providers/openrouter.models.d.ts +4544 -983
  425. package/packages/ai/src/api/ai-sdk.ts +33 -7
  426. package/packages/ai/src/api-registry.ts +1 -1
  427. package/packages/ai/src/index.ts +2 -2
  428. package/packages/ai/src/models.generated.ts +1 -1
  429. package/packages/ai/src/models.ts +1 -1
  430. package/packages/ai/src/providers/openrouter.models.ts +3723 -550
  431. package/packages/ragents/src/access.ts +12 -12
  432. package/packages/ragents/src/agents/actor-input.ts +33 -33
  433. package/packages/ragents/src/agents/catalog.ts +1 -1
  434. package/packages/ragents/src/agents/delivery.ts +17 -17
  435. package/packages/ragents/src/agents/plugins.ts +1 -1
  436. package/packages/ragents/src/agents/scheduler.ts +7 -7
  437. package/packages/ragents/src/agents/schemas.ts +1 -1
  438. package/packages/ragents/src/agents/tool-orientation.ts +4 -4
  439. package/packages/ragents/src/agents/tools.ts +20 -20
  440. package/packages/ragents/src/agents/toolset.ts +5 -5
  441. package/packages/ragents/src/agents/workspaces.ts +1 -1
  442. package/packages/ragents/src/domain/events.ts +1 -1
  443. package/packages/ragents/src/domain/model.ts +5 -5
  444. package/packages/ragents/src/drivers/agent-runtime.ts +1 -1
  445. package/packages/ragents/src/drivers/agent-turn.ts +4 -4
  446. package/packages/ragents/src/drivers/agent.ts +2 -2
  447. package/packages/ragents/src/drivers/attachments.ts +4 -4
  448. package/packages/ragents/src/http/contracts.ts +14 -14
  449. package/packages/ragents/src/http/methods.ts +6 -6
  450. package/packages/ragents/src/plugin-host.ts +119 -119
  451. package/packages/ragents/src/plugin-types.ts +16 -16
  452. package/packages/ragents/src/rpc/contract.ts +5 -5
  453. package/packages/ragents/src/rpc/contribution.ts +2 -2
  454. package/packages/ragents/src/rpc/peer.ts +11 -11
  455. package/packages/ragents/src/rpc/protocol.ts +2 -2
  456. package/packages/ragents/src/runtime/decisions/turns.ts +1 -1
  457. package/packages/ragents/src/runtime/journal.ts +10 -10
  458. package/packages/ragents/src/runtime/orchestration.ts +8 -8
  459. package/packages/ragents/src/runtime/stop.ts +2 -2
  460. package/packages/ragents/src/script/mediators.ts +35 -35
  461. package/packages/ragents/src/typescript/async-compiler.ts +14 -14
  462. package/packages/ragents/src/typescript/compiler-worker.ts +2 -2
  463. package/packages/ragents/src/typescript/compiler.ts +7 -7
  464. package/packages/ragents/src/typescript/snippet.ts +5 -5
  465. package/packages/workspace-executor/src/bash-launch.ts +13 -13
  466. package/packages/workspace-executor/src/commands.ts +18 -18
  467. package/packages/workspace-executor/src/context.ts +15 -15
  468. package/packages/workspace-executor/src/contributions.ts +35 -35
  469. package/packages/workspace-executor/src/errors.ts +1 -1
  470. package/packages/workspace-executor/src/executor.ts +15 -15
  471. package/packages/workspace-executor/src/files.ts +30 -30
  472. package/packages/workspace-executor/src/language-server/contract.ts +2 -2
  473. package/packages/workspace-executor/src/language-server/diagnostics.ts +4 -4
  474. package/packages/workspace-executor/src/language-server/host.ts +35 -35
  475. package/packages/workspace-executor/src/language-server/json-rpc.ts +4 -4
  476. package/packages/workspace-executor/src/language-server/module.ts +11 -11
  477. package/packages/workspace-executor/src/language-server/roots.ts +3 -3
  478. package/packages/workspace-executor/src/language-server/session.ts +15 -15
  479. package/packages/workspace-executor/src/language-server/workspace-solutions.ts +2 -2
  480. package/packages/workspace-executor/src/managed-process.ts +12 -12
  481. package/packages/workspace-executor/src/module.ts +8 -8
  482. package/packages/workspace-executor/src/modules.ts +3 -3
  483. package/packages/workspace-executor/src/paths.ts +11 -11
  484. package/packages/workspace-executor/src/process-sandbox.ts +3 -3
  485. package/packages/workspace-executor/src/processes/module.ts +3 -3
  486. package/packages/workspace-executor/src/processes/process-table.ts +20 -20
  487. package/packages/workspace-executor/src/processes/scanner.ts +3 -3
  488. package/packages/workspace-executor/src/processes/snapshot.ts +2 -2
  489. package/packages/workspace-executor/src/processes/terminator.ts +13 -13
  490. package/packages/workspace-executor/src/run-folders.ts +3 -3
  491. package/packages/workspace-executor/src/safe-environment.ts +4 -4
  492. package/packages/workspace-executor/src/sandbox-tools.ts +28 -28
  493. package/packages/workspace-executor/src/session-ident.ts +2 -2
  494. package/packages/workspace-executor/src/shell-platform.ts +2 -2
  495. package/packages/workspace-executor/src/tools.ts +5 -5
  496. package/plugins/ragents.activity/web/ActivityHeader.tsx +3 -3
  497. package/plugins/ragents.activity/web/activity.ts +2 -2
  498. package/plugins/ragents.actor-programs/server/access-projections.ts +1 -1
  499. package/plugins/ragents.actor-programs/server/agent-tools.ts +2 -2
  500. package/plugins/ragents.actor-programs/server/capability-resolver.ts +3 -3
  501. package/plugins/ragents.actor-programs/server/controls-template.ts +46 -46
  502. package/plugins/ragents.actor-programs/server/controls-tool.ts +4 -4
  503. package/plugins/ragents.actor-programs/server/limits.ts +3 -3
  504. package/plugins/ragents.actor-programs/server/methods.ts +1 -1
  505. package/plugins/ragents.actor-programs/server/project-diagnostics.ts +8 -8
  506. package/plugins/ragents.actor-programs/server/routes.ts +8 -8
  507. package/plugins/ragents.actor-programs/server/runtime.ts +90 -90
  508. package/plugins/ragents.actor-programs/server/templates.ts +59 -59
  509. package/plugins/ragents.actor-programs/server/test-report.ts +5 -5
  510. package/plugins/ragents.actor-programs/server/tool-contributor.ts +1 -1
  511. package/plugins/ragents.actor-programs/web/ActorViewFrame.tsx +17 -17
  512. package/plugins/ragents.actor-programs/web/AppsPanel.tsx +26 -26
  513. package/plugins/ragents.actor-programs/web/EmbeddedApps.tsx +3 -3
  514. package/plugins/ragents.actor-programs/web/FullscreenHost.tsx +2 -2
  515. package/plugins/ragents.actor-programs/web/FunctionForm.tsx +16 -16
  516. package/plugins/ragents.actor-programs/web/ProgramSource.tsx +5 -5
  517. package/plugins/ragents.actor-programs/web/api.ts +36 -36
  518. package/plugins/ragents.actor-programs/web/bridge.ts +8 -8
  519. package/plugins/ragents.actor-programs/web/chat-state.ts +4 -4
  520. package/plugins/ragents.actor-programs/web/context.ts +1 -1
  521. package/plugins/ragents.actor-programs/web/function-input.ts +6 -6
  522. package/plugins/ragents.actor-programs/web/index.tsx +1 -1
  523. package/plugins/ragents.actor-programs/web/program-state.ts +4 -4
  524. package/plugins/ragents.ask/ask-payload.ts +1 -1
  525. package/plugins/ragents.ask/contract.ts +5 -5
  526. package/plugins/ragents.ask/server/answer-method.ts +1 -1
  527. package/plugins/ragents.ask/server/ask-service.ts +9 -9
  528. package/plugins/ragents.ask/server/ask-tool.ts +10 -10
  529. package/plugins/ragents.ask/server/contract.ts +5 -5
  530. package/plugins/ragents.ask/web/AskActionView.tsx +1 -1
  531. package/plugins/ragents.ask/web/QuestionCard.tsx +22 -22
  532. package/plugins/ragents.ask/web/index.tsx +2 -2
  533. package/plugins/ragents.browser/executor/contract.ts +6 -6
  534. package/plugins/ragents.browser/executor/index.ts +1 -1
  535. package/plugins/ragents.browser/executor/module.ts +6 -6
  536. package/plugins/ragents.browser/executor/pages.ts +32 -32
  537. package/plugins/ragents.browser/executor/playwright.ts +8 -8
  538. package/plugins/ragents.browser/provision.ts +7 -7
  539. package/plugins/ragents.browser/server/browser.ts +14 -14
  540. package/plugins/ragents.browser/server/contract.ts +1 -1
  541. package/plugins/ragents.browser/server/index.ts +1 -1
  542. package/plugins/ragents.browser/server/tools.ts +14 -14
  543. package/plugins/ragents.browser/skills/browser-testing/SKILL.md +30 -30
  544. package/plugins/ragents.documents/contract.ts +2 -2
  545. package/plugins/ragents.documents/prompt.hbs +1 -1
  546. package/plugins/ragents.documents/server/document-write-tool.ts +12 -12
  547. package/plugins/ragents.documents/server/files-route.ts +6 -6
  548. package/plugins/ragents.documents/server/show-document-tool.ts +26 -26
  549. package/plugins/ragents.documents/server/store.ts +1 -1
  550. package/plugins/ragents.documents/web/DocumentViewer.tsx +37 -37
  551. package/plugins/ragents.documents/web/index.tsx +11 -11
  552. package/plugins/ragents.lsp-fsharp/executor.ts +7 -7
  553. package/plugins/ragents.lsp-fsharp/provision.ts +7 -7
  554. package/plugins/ragents.lsp-roslyn/executor.ts +5 -5
  555. package/plugins/ragents.lsp-roslyn/provision.ts +4 -4
  556. package/plugins/ragents.lsp-roslyn/server/index.ts +5 -5
  557. package/plugins/ragents.lsp-roslyn/server/solution-on-start.ts +13 -13
  558. package/plugins/ragents.lsp-typescript/executor.ts +3 -3
  559. package/plugins/ragents.model-relay/server/config.ts +6 -2
  560. package/plugins/ragents.model-relay/server/index.ts +2 -2
  561. package/plugins/ragents.model-relay/server/relay.ts +23 -22
  562. package/plugins/ragents.orchestration/contract.ts +8 -8
  563. package/plugins/ragents.orchestration/server/index.ts +4 -4
  564. package/plugins/ragents.orchestration/server/run-stop-tool.ts +3 -3
  565. package/plugins/ragents.orchestration/server/surface-tool.ts +5 -5
  566. package/plugins/ragents.orchestration/tiled-layout.ts +11 -11
  567. package/plugins/ragents.orchestration/web/ActorChat.tsx +2 -2
  568. package/plugins/ragents.orchestration/web/ActorChatControls.tsx +4 -4
  569. package/plugins/ragents.orchestration/web/ActorChatPreview.tsx +1 -1
  570. package/plugins/ragents.orchestration/web/ActorPopout.tsx +1 -1
  571. package/plugins/ragents.orchestration/web/ActorShortcut.tsx +6 -6
  572. package/plugins/ragents.orchestration/web/ActorSurfaceControls.tsx +15 -15
  573. package/plugins/ragents.orchestration/web/Center.tsx +5 -5
  574. package/plugins/ragents.orchestration/web/DocumentsSection.tsx +2 -2
  575. package/plugins/ragents.orchestration/web/ExecutionsPanel.tsx +15 -15
  576. package/plugins/ragents.orchestration/web/FlowInspector.tsx +103 -103
  577. package/plugins/ragents.orchestration/web/JournalStatus.tsx +11 -11
  578. package/plugins/ragents.orchestration/web/MaterialBody.tsx +2 -2
  579. package/plugins/ragents.orchestration/web/StopRunButton.tsx +6 -6
  580. package/plugins/ragents.orchestration/web/TiledSurface.tsx +9 -9
  581. package/plugins/ragents.orchestration/web/actor-header-settings.ts +5 -5
  582. package/plugins/ragents.orchestration/web/constants.ts +2 -2
  583. package/plugins/ragents.orchestration/web/executions.ts +6 -6
  584. package/plugins/ragents.orchestration/web/format.ts +1 -1
  585. package/plugins/ragents.orchestration/web/index.tsx +2 -2
  586. package/plugins/ragents.orchestration/web/run-panel/AddresseeControl.tsx +7 -7
  587. package/plugins/ragents.orchestration/web/run-panel/AddresseeTree.tsx +8 -8
  588. package/plugins/ragents.orchestration/web/run-panel/RunPanel.tsx +22 -22
  589. package/plugins/ragents.orchestration/web/run-panel/RunPanelSettings.tsx +7 -7
  590. package/plugins/ragents.orchestration/web/run-panel/addressee-tree.ts +13 -13
  591. package/plugins/ragents.orchestration/web/run-panel/run-panel-actors.ts +3 -3
  592. package/plugins/ragents.orchestration/web/run-panel/run-panel-settings.ts +2 -2
  593. package/plugins/ragents.orchestration/web/run-panel/run-panel-startup.ts +3 -3
  594. package/plugins/ragents.orchestration/web/run-panel/run-panel-state.ts +7 -7
  595. package/plugins/ragents.orchestration/web/run-panel/sheet-status.ts +9 -9
  596. package/plugins/ragents.orchestration/web/surface-startup.ts +8 -8
  597. package/plugins/ragents.orchestration/web/surface-view-settings.ts +1 -1
  598. package/plugins/ragents.orchestration/web/tiled-view-settings.ts +1 -1
  599. package/plugins/ragents.overseer/contract.ts +20 -20
  600. package/plugins/ragents.overseer/server/api.ts +6 -6
  601. package/plugins/ragents.overseer/server/coordinator-prompt.ts +10 -10
  602. package/plugins/ragents.overseer/server/coordinator.ts +4 -4
  603. package/plugins/ragents.overseer/server/index.ts +24 -24
  604. package/plugins/ragents.overseer/server/orientation.ts +8 -8
  605. package/plugins/ragents.overseer/server/quick-answer.ts +9 -9
  606. package/plugins/ragents.overseer/server/run-directory.ts +5 -5
  607. package/plugins/ragents.overseer/server/settings.ts +6 -6
  608. package/plugins/ragents.overseer/server/user-location.ts +16 -16
  609. package/plugins/ragents.overseer/web/ModelSettings.tsx +9 -9
  610. package/plugins/ragents.overseer/web/index.tsx +20 -20
  611. package/plugins/ragents.overseer/web/model-settings.ts +1 -1
  612. package/plugins/ragents.overseer/web/quick-answers.ts +2 -2
  613. package/plugins/ragents.processes/contract.ts +5 -5
  614. package/plugins/ragents.processes/server/methods.ts +4 -4
  615. package/plugins/ragents.processes/server/observer.ts +8 -8
  616. package/plugins/ragents.processes/server/run-processes.ts +2 -2
  617. package/plugins/ragents.processes/web/ProcessHeader.tsx +10 -10
  618. package/plugins/ragents.processes/web/processes.ts +10 -10
  619. package/plugins/ragents.product/server/config.ts +1 -1
  620. package/plugins/ragents.product/server/index.ts +4 -4
  621. package/plugins/ragents.product/server/runtime.ts +9 -10
  622. package/plugins/ragents.product/web/index.tsx +1 -1
  623. package/plugins/ragents.profile-distribution/contract.ts +10 -10
  624. package/plugins/ragents.profile-distribution/server/archive.ts +20 -20
  625. package/plugins/ragents.profile-distribution/server/config.ts +2 -2
  626. package/plugins/ragents.profile-distribution/server/index.ts +4 -4
  627. package/plugins/ragents.reference/examples.ts +27 -27
  628. package/plugins/ragents.reference/run-scripts/balcony-wizard/RUN.md +19 -19
  629. package/plugins/ragents.reference/run-scripts/balcony-wizard/actors/balcony-app/package.json +2 -2
  630. package/plugins/ragents.reference/run-scripts/balcony-wizard/actors/balcony-app/src/client.tsx +14 -14
  631. package/plugins/ragents.reference/run-scripts/balcony-wizard/actors/balcony-app/src/conversation.ts +2 -2
  632. package/plugins/ragents.reference/run-scripts/balcony-wizard/actors/balcony-app/tests/conversation.test.ts +49 -49
  633. package/plugins/ragents.reference/run-scripts/balcony-wizard/package.json +1 -1
  634. package/plugins/ragents.reference/run-scripts/balcony-wizard/src/server.ts +9 -9
  635. package/plugins/ragents.reference/run-scripts/balcony-wizard/tests/program.test.ts +9 -9
  636. package/plugins/ragents.reference/run-scripts/conversation-circle/RUN.md +7 -7
  637. package/plugins/ragents.reference/run-scripts/conversation-circle/package.json +1 -1
  638. package/plugins/ragents.reference/run-scripts/conversation-circle/src/server.ts +13 -13
  639. package/plugins/ragents.reference/run-scripts/conversation-circle/tests/helpers.ts +1 -1
  640. package/plugins/ragents.reference/run-scripts/conversation-circle/tests/program.test.ts +8 -8
  641. package/plugins/ragents.reference/run-scripts/learning-afternoon/RUN.md +16 -16
  642. package/plugins/ragents.reference/run-scripts/learning-afternoon/package.json +1 -1
  643. package/plugins/ragents.reference/run-scripts/learning-afternoon/prompts/experiment.md +1 -1
  644. package/plugins/ragents.reference/run-scripts/learning-afternoon/prompts/helper.md +3 -3
  645. package/plugins/ragents.reference/run-scripts/learning-afternoon/prompts/quiz.md +1 -1
  646. package/plugins/ragents.reference/run-scripts/learning-afternoon/src/server.ts +9 -9
  647. package/plugins/ragents.reference/run-scripts/learning-afternoon/tests/program.test.ts +39 -39
  648. package/plugins/ragents.reference/run-scripts/moderated-round/RUN.md +7 -7
  649. package/plugins/ragents.reference/run-scripts/moderated-round/package.json +1 -1
  650. package/plugins/ragents.reference/run-scripts/moderated-round/src/server.ts +9 -9
  651. package/plugins/ragents.reference/run-scripts/moderated-round/tests/helpers.ts +1 -1
  652. package/plugins/ragents.reference/run-scripts/moderated-round/tests/program.test.ts +6 -6
  653. package/plugins/ragents.reference/run-scripts/shared-actor-list/RUN.md +12 -12
  654. package/plugins/ragents.reference/run-scripts/shared-actor-list/actors/shared-list/package.json +2 -2
  655. package/plugins/ragents.reference/run-scripts/shared-actor-list/actors/shared-list/src/contract.ts +3 -3
  656. package/plugins/ragents.reference/run-scripts/shared-actor-list/actors/shared-list/tests/program.test.ts +4 -4
  657. package/plugins/ragents.reference/run-scripts/shared-actor-list/package.json +1 -1
  658. package/plugins/ragents.reference/run-scripts/shared-actor-list/src/server.ts +11 -11
  659. package/plugins/ragents.reference/run-scripts/shared-actor-list/tests/helpers.ts +1 -1
  660. package/plugins/ragents.reference/run-scripts/shared-actor-list/tests/program.test.ts +13 -13
  661. package/plugins/ragents.reference/run-scripts/word-game/RUN.md +18 -18
  662. package/plugins/ragents.reference/run-scripts/word-game/package.json +2 -2
  663. package/plugins/ragents.reference/run-scripts/word-game/src/client.tsx +1 -1
  664. package/plugins/ragents.reference/run-scripts/word-game/src/contract.ts +2 -2
  665. package/plugins/ragents.reference/run-scripts/word-game/src/server.ts +16 -16
  666. package/plugins/ragents.reference/run-scripts/word-game/tests/program.test.ts +39 -39
  667. package/plugins/ragents.reference/skills/100-shared-actor-list/SKILL.md +5 -5
  668. package/plugins/ragents.reference/skills/110-all-card-slots/SKILL.md +5 -5
  669. package/plugins/ragents.reference/skills/150-editorial-workbench/SKILL.md +5 -5
  670. package/plugins/ragents.reference/skills/160-learning-companion/SKILL.md +5 -5
  671. package/plugins/ragents.reference/skills/170-photo-collection/SKILL.md +5 -5
  672. package/plugins/ragents.reference/skills/180-decision-workbench/SKILL.md +5 -5
  673. package/plugins/ragents.reference/skills/190-review-queue/SKILL.md +5 -5
  674. package/plugins/ragents.reference/skills/20-circle-of-four/SKILL.md +5 -5
  675. package/plugins/ragents.reference/skills/200-typescript-diagnostics/SKILL.md +5 -5
  676. package/plugins/ragents.reference/skills/210-moderator-handover/SKILL.md +5 -5
  677. package/plugins/ragents.reference/skills/220-actor-approval-list/SKILL.md +5 -5
  678. package/plugins/ragents.reference/skills/230-shared-state-views/SKILL.md +5 -5
  679. package/plugins/ragents.reference/skills/240-live-result-list/SKILL.md +5 -5
  680. package/plugins/ragents.reference/skills/250-balcony-wizard/SKILL.md +5 -5
  681. package/plugins/ragents.reference/skills/30-llm-without-runtime-knowledge/SKILL.md +5 -5
  682. package/plugins/ragents.reference/skills/35-actor-input-fifo/SKILL.md +5 -5
  683. package/plugins/ragents.reference/skills/40-subscription-matrix/SKILL.md +5 -5
  684. package/plugins/ragents.reference/skills/50-subscription-removal/SKILL.md +5 -5
  685. package/plugins/ragents.reference/skills/60-stop-in-the-circle/SKILL.md +5 -5
  686. package/plugins/ragents.reference/skills/65-artifact-least-privilege/SKILL.md +5 -5
  687. package/plugins/ragents.reference/skills/70-headless-counter/SKILL.md +5 -5
  688. package/plugins/ragents.reference/skills/75-lsp-demo/SKILL.md +5 -5
  689. package/plugins/ragents.reference/skills/80-actor-text-analysis/SKILL.md +5 -5
  690. package/plugins/ragents.reference/skills/90-actor-notes/SKILL.md +5 -5
  691. package/plugins/ragents.reference/skills/95-hello-world/SKILL.md +5 -5
  692. package/plugins/ragents.reference/skills/decision-brief/SKILL.md +24 -24
  693. package/plugins/ragents.reference/skills/learning-sprint/SKILL.md +24 -24
  694. package/plugins/ragents.reference/walkthroughs.ts +128 -128
  695. package/plugins/ragents.reference/web/StartGuides.tsx +23 -23
  696. package/plugins/ragents.todo/server/todo-tool.ts +6 -6
  697. package/plugins/ragents.todo/web/TodoSection.tsx +1 -1
  698. package/plugins/ragents.transcript/server/transcript.ts +11 -11
  699. package/plugins/ragents.watch/server/condition.ts +4 -4
  700. package/plugins/ragents.watch/server/functions.ts +27 -27
  701. package/plugins/ragents.watch/server/observation.ts +2 -2
  702. package/plugins/ragents.watch/server/service.ts +14 -14
  703. package/plugins/ragents.workspace/client/transport.ts +1 -1
  704. package/plugins/ragents.workspace/client/workspace-client.ts +54 -54
  705. package/plugins/ragents.workspace/contract.ts +46 -46
  706. package/plugins/ragents.workspace/server/binding.ts +20 -20
  707. package/plugins/ragents.workspace/server/browse-route.ts +8 -8
  708. package/plugins/ragents.workspace/server/clients.ts +42 -42
  709. package/plugins/ragents.workspace/server/config.ts +7 -7
  710. package/plugins/ragents.workspace/server/index.ts +3 -3
  711. package/plugins/ragents.workspace/server/runtime.ts +26 -26
  712. package/plugins/ragents.workspace/server/shell-platform.ts +1 -1
  713. package/plugins/ragents.workspace/web/FileBrowser.tsx +10 -10
  714. package/plugins/ragents.workspace/web/WorkspaceBinding.tsx +24 -24
  715. package/plugins/ragents.workspace/web/index.tsx +1 -1
  716. package/ragents.config.core.ts +1 -1
  717. package/ragents.config.developer.ts +3 -3
  718. package/ragents.config.showcase.ts +2 -2
  719. package/scripts/agent/agent-cli.ts +96 -96
  720. package/scripts/agent/journal.ts +5 -5
  721. package/scripts/agent/turn-control.ts +4 -4
  722. package/scripts/package/build-package.ts +29 -29
  723. package/scripts/package/host-links.mjs +3 -3
  724. package/scripts/package/publish-package.ts +29 -29
  725. package/scripts/package/ragents.mjs +19 -19
  726. package/scripts/plugin/build-builtin-plugins.ts +5 -5
  727. package/scripts/plugin/plugin-cli.ts +14 -14
  728. package/scripts/provision/run-provision.ts +14 -15
  729. package/scripts/remote/connect.ts +46 -46
  730. package/scripts/remote/start.ts +18 -18
  731. package/scripts/workspace-client/run-workspace-client.ts +23 -23
  732. package/apps/web/dist/assets/main-DnnqWHkH.js +0 -11
  733. package/apps/web/dist/assets/mermaid-HWGCJPDP-BLLeth5_.js +0 -568
  734. package/apps/web/dist/assets/runPanel-DPm7s3KM.js +0 -21
  735. package/bundles/ragents.ask/server/chunks/chunk-PDJO75SQ.js.map +0 -7
  736. package/bundles/ragents.ask/web/chunks/chunk-4VXWWEG7.js +0 -2
  737. package/bundles/ragents.ask/web/chunks/chunk-4VXWWEG7.js.map +0 -7
  738. package/bundles/ragents.ask/web/chunks/chunk-VUBJDIKQ.js +0 -2
  739. package/bundles/ragents.ask/web/chunks/chunk-VUBJDIKQ.js.map +0 -7
  740. package/bundles/ragents.ask/web/chunks/chunk-WFN4374U.js.map +0 -7
  741. package/bundles/ragents.orchestration/web/chunks/chunk-OQYCNYXN.js +0 -2
  742. /package/bundles/ragents.orchestration/web/chunks/{chunk-OSKPH6SZ.js.map → chunk-CFMJD5ZI.js.map} +0 -0
  743. /package/bundles/ragents.orchestration/web/chunks/{chunk-ODMMQGX2.js.map → chunk-UCIMT2R4.js.map} +0 -0
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../plugins/ragents.lsp-fsharp/server/index.ts", "../../../plugins/ragents.lsp-fsharp/executor.ts", "../../../plugins/ragents.lsp-fsharp/provision.ts"],
4
- "sourcesContent": ["import { createLanguageServerPlugin } from \"@ragents/host/plugin-support/language-server/plugin.js\";\nimport type { PluginModule } from \"@ragents/host/plugin-support/plugin-module.js\";\nimport { fsharpLanguageServer, FSHARP_SERVER_VARIABLE } from \"../executor.js\";\n\nexport const fsharpConfigDescriptors = [\n { key: FSHARP_SERVER_VARIABLE, source: \"environment\" },\n] as const;\n\nexport const plugin: PluginModule = {\n create: () => createLanguageServerPlugin({\n id: \"ragents.lsp-fsharp\",\n languageServer: fsharpLanguageServer,\n tabLabel: \"F#\",\n configDescriptors: fsharpConfigDescriptors,\n }),\n};\n", "import { existsSync } from \"node:fs\";\nimport { readFile } from \"node:fs/promises\";\nimport path from \"node:path\";\nimport { pathToFileURL } from \"node:url\";\nimport type { LanguageServerDescription, WorkspaceExecutorContribution } from \"@ragents/workspace-executor\";\n\nexport const FSHARP_SERVER_VARIABLE = \"FSHARP_LANGUAGE_SERVER\";\nexport const FSHARP_SERVER_FILE = \"fsautocomplete/fsautocomplete.dll\";\n\nconst languages = { \".fs\": \"fsharp\", \".fsi\": \"fsharp\", \".fsx\": \"fsharp\" } as const;\n\nexport const fsharpLanguageServer: LanguageServerDescription = {\n id: \"fsharp\",\n label: \"FSAC\",\n languages,\n rootDescription: \"the .sln file (or a single .fsproj)\",\n};\n\nconst PROJECT_LINE = /^Project\\(\"\\{[^}]+\\}\"\\)\\s*=\\s*\"[^\"]*\",\\s*\"([^\"]+)\"/gm;\n\n/** Die Projekte einer .sln, aufgel\u00F6st neben ihr; Ordnereintr\u00E4ge der Solution z\u00E4hlen nicht. */\nexport const solutionProjects = async (solutionFile: string): Promise<string[]> => {\n const text = await readFile(solutionFile, \"utf8\");\n const directory = path.dirname(solutionFile);\n return [...text.matchAll(PROJECT_LINE)]\n .map((match) => match[1].replaceAll(\"\\\\\", \"/\"))\n .filter((relative) => /\\.[a-z]+proj$/i.test(relative))\n .map((relative) => path.resolve(directory, relative));\n};\n\nconst dotnetCommand = (server: string, args: readonly string[]): { command: string; args: string[] } =>\n server.toLowerCase().endsWith(\".dll\")\n ? { command: \"dotnet\", args: [server, ...args] }\n : { command: server, args: [...args] };\n\nconst serverPath = (toolsDirectory: string): string => {\n const configured = process.env[FSHARP_SERVER_VARIABLE];\n if (configured) return configured;\n const provisioned = path.join(toolsDirectory, ...FSHARP_SERVER_FILE.split(\"/\"));\n if (existsSync(provisioned)) return provisioned;\n throw new Error(\"fsautocomplete gibt es auf diesem Rechner nicht: weder \"\n + `${FSHARP_SERVER_VARIABLE} gesetzt noch ${provisioned} vorhanden. Ein Arbeitsplatz holt es mit `\n + `pnpm provision --workspace, ein Server \u00FCber pnpm provision <profil>; ${FSHARP_SERVER_VARIABLE} \u00FCbersteuert beides`);\n};\n\nconst contentOf = (params: unknown): string => (params as { content?: string } | undefined)?.content ?? \"\";\n\nexport const executor: WorkspaceExecutorContribution = (machine) => ({\n languageServers: [{\n ...fsharpLanguageServer,\n resolveRoot: (workspaceRoot, root) => machine.resolveRootFile(workspaceRoot, root, [\".sln\", \".fsproj\"]),\n rootDirectory: (root) => path.dirname(root),\n launch: async (context, root) => ({\n label: \"FSAC\",\n ...dotnetCommand(serverPath(machine.toolsDirectory), [\"--state-directory\", path.join(context.logDirectory, \"fsautocomplete\")]),\n cwd: path.dirname(root),\n env: context.env,\n uid: context.uid,\n gid: context.gid,\n rootUri: pathToFileURL(path.dirname(root)).href,\n initializationOptions: { AutomaticWorkspaceInit: false },\n languages,\n }),\n open: async (session, root, timeoutMs) => {\n const projects = root.toLowerCase().endsWith(\".sln\")\n ? (await solutionProjects(root)).filter((project) => project.toLowerCase().endsWith(\".fsproj\"))\n : [root];\n if (projects.length === 0) throw new Error(`${path.basename(root)} enth\u00E4lt keine F#-Projekte`);\n const finished = session.waitForNotification(timeoutMs, \"Projekte geladen\", (method, params) =>\n method === \"fsharp/notifyWorkspace\"\n && contentOf(params).includes(\"\\\"workspaceLoad\\\"\")\n && contentOf(params).includes(\"\\\"finished\\\"\"));\n await session.request(\"fsharp/workspaceLoad\", {\n textDocuments: projects.map((project) => ({ uri: pathToFileURL(project).href })),\n });\n await finished;\n return `${projects.length} F#-Projekt${projects.length === 1 ? \"\" : \"e\"} aus ${path.basename(root)} geladen`;\n },\n }],\n});\n", "import { stat } from \"node:fs/promises\";\nimport path from \"node:path\";\nimport {\n DOTNET_INSTRUCTION,\n downloadArchive,\n dotnetRuntimeMajors,\n provisionGap,\n provisionReady,\n readProvisionStamp,\n readZipNames,\n unpackArchive,\n writeProvisionStamp,\n type ArchiveDownload,\n type PluginProvision,\n type ProvisionState,\n} from \"@ragents/host/plugin-support/provision.js\";\nimport { FSHARP_SERVER_FILE } from \"./executor.js\";\n\nexport const FSAUTOCOMPLETE_VERSION = \"0.83.0\";\n\nconst FEED = \"https://api.nuget.org/v3/flatcontainer\";\nconst PACKAGE = \"fsautocomplete\";\nconst TOOL_FOLDER = /^tools\\/net(\\d+)\\.0\\/any\\//;\n\nexport const fsautocompleteArchiveUrl = `${FEED}/${PACKAGE}/${FSAUTOCOMPLETE_VERSION}/${PACKAGE}.${FSAUTOCOMPLETE_VERSION}.nupkg`;\n\n/** Das Werkzeugpaket bringt je Zielplattform einen Ordner mit; genommen wird die h\u00F6chste Laufzeit, die es hier gibt. */\nconst toolPrefix = (names: readonly string[], majors: readonly number[]): string => {\n const offered = names\n .map((name) => TOOL_FOLDER.exec(name))\n .filter((match): match is RegExpExecArray => match !== null)\n .map((match) => ({ prefix: match[0], major: Number(match[1]) }));\n const usable = offered.filter((entry) => majors.includes(entry.major)).sort((left, right) => right.major - left.major);\n const chosen = usable[0];\n if (!chosen) {\n throw new Error(`${PACKAGE} ${FSAUTOCOMPLETE_VERSION} bringt nur ${[...new Set(offered.map((entry) => `net${entry.major}.0`))].join(\", \")} mit; `\n + `installiert sind die .NET-Laufzeiten ${majors.join(\", \")}`);\n }\n return chosen.prefix;\n};\n\nexport const createFsharpProvision = (\n download: ArchiveDownload = downloadArchive,\n runtimes: () => Promise<readonly number[] | undefined> = dotnetRuntimeMajors,\n): PluginProvision => {\n const serverFile = (target: string): string => path.join(target, ...FSHARP_SERVER_FILE.split(\"/\"));\n const check = async (target: string): Promise<ProvisionState> => {\n if (await runtimes() === undefined) return provisionGap(\"dotnet\", DOTNET_INSTRUCTION, false);\n const installed = await stat(serverFile(target)).catch(() => undefined);\n if (installed?.isFile() && await readProvisionStamp(target) === FSAUTOCOMPLETE_VERSION) return provisionReady;\n return provisionGap(\"fsautocomplete\", `fsautocomplete ${FSAUTOCOMPLETE_VERSION} fehlt unter ${serverFile(target)}`, true);\n };\n return {\n check,\n apply: async (target, log) => {\n const state = await check(target);\n if (state.kind === \"ready\") return;\n if (!state.installable) throw new Error(state.instruction);\n const majors = await runtimes();\n if (!majors) throw new Error(DOTNET_INSTRUCTION);\n log(`fsautocomplete ${FSAUTOCOMPLETE_VERSION} laden`);\n const archive = await download(fsautocompleteArchiveUrl);\n const prefix = toolPrefix(readZipNames(archive), majors);\n const files = await unpackArchive(archive, prefix, target, \"fsautocomplete\");\n if (!(await stat(serverFile(target)).catch(() => undefined))?.isFile()) {\n throw new Error(`Das Paket ${PACKAGE} ${FSAUTOCOMPLETE_VERSION} enth\u00E4lt ${prefix}fsautocomplete.dll nicht`);\n }\n await writeProvisionStamp(target, FSAUTOCOMPLETE_VERSION);\n log(`${files} Dateien aus ${prefix} nach ${path.join(target, \"fsautocomplete\")}`);\n },\n };\n};\n\nexport const provision = createFsharpProvision();\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["import { createLanguageServerPlugin } from \"@ragents/host/plugin-support/language-server/plugin.js\";\nimport type { PluginModule } from \"@ragents/host/plugin-support/plugin-module.js\";\nimport { fsharpLanguageServer, FSHARP_SERVER_VARIABLE } from \"../executor.js\";\n\nexport const fsharpConfigDescriptors = [\n { key: FSHARP_SERVER_VARIABLE, source: \"environment\" },\n] as const;\n\nexport const plugin: PluginModule = {\n create: () => createLanguageServerPlugin({\n id: \"ragents.lsp-fsharp\",\n languageServer: fsharpLanguageServer,\n tabLabel: \"F#\",\n configDescriptors: fsharpConfigDescriptors,\n }),\n};\n", "import { existsSync } from \"node:fs\";\nimport { readFile } from \"node:fs/promises\";\nimport path from \"node:path\";\nimport { pathToFileURL } from \"node:url\";\nimport type { LanguageServerDescription, WorkspaceExecutorContribution } from \"@ragents/workspace-executor\";\n\nexport const FSHARP_SERVER_VARIABLE = \"FSHARP_LANGUAGE_SERVER\";\nexport const FSHARP_SERVER_FILE = \"fsautocomplete/fsautocomplete.dll\";\n\nconst languages = { \".fs\": \"fsharp\", \".fsi\": \"fsharp\", \".fsx\": \"fsharp\" } as const;\n\nexport const fsharpLanguageServer: LanguageServerDescription = {\n id: \"fsharp\",\n label: \"FSAC\",\n languages,\n rootDescription: \"the .sln file (or a single .fsproj)\",\n};\n\nconst PROJECT_LINE = /^Project\\(\"\\{[^}]+\\}\"\\)\\s*=\\s*\"[^\"]*\",\\s*\"([^\"]+)\"/gm;\n\n/** The projects of a .sln, resolved next to it; solution folder entries do not count. */\nexport const solutionProjects = async (solutionFile: string): Promise<string[]> => {\n const text = await readFile(solutionFile, \"utf8\");\n const directory = path.dirname(solutionFile);\n return [...text.matchAll(PROJECT_LINE)]\n .map((match) => match[1].replaceAll(\"\\\\\", \"/\"))\n .filter((relative) => /\\.[a-z]+proj$/i.test(relative))\n .map((relative) => path.resolve(directory, relative));\n};\n\nconst dotnetCommand = (server: string, args: readonly string[]): { command: string; args: string[] } =>\n server.toLowerCase().endsWith(\".dll\")\n ? { command: \"dotnet\", args: [server, ...args] }\n : { command: server, args: [...args] };\n\nconst serverPath = (toolsDirectory: string): string => {\n const configured = process.env[FSHARP_SERVER_VARIABLE];\n if (configured) return configured;\n const provisioned = path.join(toolsDirectory, ...FSHARP_SERVER_FILE.split(\"/\"));\n if (existsSync(provisioned)) return provisioned;\n throw new Error(\"fsautocomplete does not exist on this machine: neither is \"\n + `${FSHARP_SERVER_VARIABLE} set nor does ${provisioned} exist. A workspace fetches it with `\n + `pnpm provision --workspace, a server via pnpm provision <profile>; ${FSHARP_SERVER_VARIABLE} overrides both`);\n};\n\nconst contentOf = (params: unknown): string => (params as { content?: string } | undefined)?.content ?? \"\";\n\nexport const executor: WorkspaceExecutorContribution = (machine) => ({\n languageServers: [{\n ...fsharpLanguageServer,\n resolveRoot: (workspaceRoot, root) => machine.resolveRootFile(workspaceRoot, root, [\".sln\", \".fsproj\"]),\n rootDirectory: (root) => path.dirname(root),\n launch: async (context, root) => ({\n label: \"FSAC\",\n ...dotnetCommand(serverPath(machine.toolsDirectory), [\"--state-directory\", path.join(context.logDirectory, \"fsautocomplete\")]),\n cwd: path.dirname(root),\n env: context.env,\n uid: context.uid,\n gid: context.gid,\n rootUri: pathToFileURL(path.dirname(root)).href,\n initializationOptions: { AutomaticWorkspaceInit: false },\n languages,\n }),\n open: async (session, root, timeoutMs) => {\n const projects = root.toLowerCase().endsWith(\".sln\")\n ? (await solutionProjects(root)).filter((project) => project.toLowerCase().endsWith(\".fsproj\"))\n : [root];\n if (projects.length === 0) throw new Error(`${path.basename(root)} contains no F# projects`);\n const finished = session.waitForNotification(timeoutMs, \"projects loaded\", (method, params) =>\n method === \"fsharp/notifyWorkspace\"\n && contentOf(params).includes(\"\\\"workspaceLoad\\\"\")\n && contentOf(params).includes(\"\\\"finished\\\"\"));\n await session.request(\"fsharp/workspaceLoad\", {\n textDocuments: projects.map((project) => ({ uri: pathToFileURL(project).href })),\n });\n await finished;\n return `Loaded ${projects.length} F# project${projects.length === 1 ? \"\" : \"s\"} from ${path.basename(root)}`;\n },\n }],\n});\n", "import { stat } from \"node:fs/promises\";\nimport path from \"node:path\";\nimport {\n DOTNET_INSTRUCTION,\n downloadArchive,\n dotnetRuntimeMajors,\n provisionGap,\n provisionReady,\n readProvisionStamp,\n readZipNames,\n unpackArchive,\n writeProvisionStamp,\n type ArchiveDownload,\n type PluginProvision,\n type ProvisionState,\n} from \"@ragents/host/plugin-support/provision.js\";\nimport { FSHARP_SERVER_FILE } from \"./executor.js\";\n\nexport const FSAUTOCOMPLETE_VERSION = \"0.83.0\";\n\nconst FEED = \"https://api.nuget.org/v3/flatcontainer\";\nconst PACKAGE = \"fsautocomplete\";\nconst TOOL_FOLDER = /^tools\\/net(\\d+)\\.0\\/any\\//;\n\nexport const fsautocompleteArchiveUrl = `${FEED}/${PACKAGE}/${FSAUTOCOMPLETE_VERSION}/${PACKAGE}.${FSAUTOCOMPLETE_VERSION}.nupkg`;\n\n/** The tool package ships one folder per target platform; the highest runtime available here is taken. */\nconst toolPrefix = (names: readonly string[], majors: readonly number[]): string => {\n const offered = names\n .map((name) => TOOL_FOLDER.exec(name))\n .filter((match): match is RegExpExecArray => match !== null)\n .map((match) => ({ prefix: match[0], major: Number(match[1]) }));\n const usable = offered.filter((entry) => majors.includes(entry.major)).sort((left, right) => right.major - left.major);\n const chosen = usable[0];\n if (!chosen) {\n throw new Error(`${PACKAGE} ${FSAUTOCOMPLETE_VERSION} only ships ${[...new Set(offered.map((entry) => `net${entry.major}.0`))].join(\", \")}; `\n + `the installed .NET runtimes are ${majors.join(\", \")}`);\n }\n return chosen.prefix;\n};\n\nexport const createFsharpProvision = (\n download: ArchiveDownload = downloadArchive,\n runtimes: () => Promise<readonly number[] | undefined> = dotnetRuntimeMajors,\n): PluginProvision => {\n const serverFile = (target: string): string => path.join(target, ...FSHARP_SERVER_FILE.split(\"/\"));\n const check = async (target: string): Promise<ProvisionState> => {\n if (await runtimes() === undefined) return provisionGap(\"dotnet\", DOTNET_INSTRUCTION, false);\n const installed = await stat(serverFile(target)).catch(() => undefined);\n if (installed?.isFile() && await readProvisionStamp(target) === FSAUTOCOMPLETE_VERSION) return provisionReady;\n return provisionGap(\"fsautocomplete\", `fsautocomplete ${FSAUTOCOMPLETE_VERSION} is missing at ${serverFile(target)}`, true);\n };\n return {\n check,\n apply: async (target, log) => {\n const state = await check(target);\n if (state.kind === \"ready\") return;\n if (!state.installable) throw new Error(state.instruction);\n const majors = await runtimes();\n if (!majors) throw new Error(DOTNET_INSTRUCTION);\n log(`Downloading fsautocomplete ${FSAUTOCOMPLETE_VERSION}`);\n const archive = await download(fsautocompleteArchiveUrl);\n const prefix = toolPrefix(readZipNames(archive), majors);\n const files = await unpackArchive(archive, prefix, target, \"fsautocomplete\");\n if (!(await stat(serverFile(target)).catch(() => undefined))?.isFile()) {\n throw new Error(`The package ${PACKAGE} ${FSAUTOCOMPLETE_VERSION} does not contain ${prefix}fsautocomplete.dll`);\n }\n await writeProvisionStamp(target, FSAUTOCOMPLETE_VERSION);\n log(`${files} files from ${prefix} to ${path.join(target, \"fsautocomplete\")}`);\n },\n };\n};\n\nexport const provision = createFsharpProvision();\n"],
5
+ "mappings": "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",
6
6
  "names": ["path", "path"]
7
7
  }
@@ -1,2 +1,2 @@
1
- var e=(r,t)=>{let n=globalThis.__ragentsHostModules?.[r];if(n===void 0)throw new Error(`Der Host stellt ${r} nicht bereit`);if(!(t in n))throw new Error(`Der Host stellt ${t} aus ${r} nicht bereit; das Bundle ist gegen einen neueren Host gebaut`);return n[t]};var o=e("@ragents/web/language-server/language-server-plugin","languageServerWebPlugin");var a=e("react/jsx-runtime","jsx");var h=o("ragents.lsp-fsharp",s);function s(){return a("span",{"aria-hidden":"true",className:"font-mono text-[12px] font-bold",children:"F#"})}export{h as webPlugin};
1
+ var e=(r,o)=>{let t=globalThis.__ragentsHostModules?.[r];if(t===void 0)throw new Error(`The host does not provide ${r}`);if(!(o in t))throw new Error(`The host does not provide ${o} from ${r}; the bundle was built against a newer host`);return t[o]};var a=e("@ragents/web/language-server/language-server-plugin","languageServerWebPlugin");var n=e("react/jsx-runtime","jsx");var b=a("ragents.lsp-fsharp",s);function s(){return n("span",{"aria-hidden":"true",className:"font-mono text-[12px] font-bold",children:"F#"})}export{b as webPlugin};
2
2
  //# sourceMappingURL=/plugins/ragents.lsp-fsharp/web/index.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["ragents-host-read:read", "ragents-host-value:@ragents/web/language-server/language-server-plugin#languageServerWebPlugin", "ragents-host-value:react/jsx-runtime#jsx", "../../../plugins/ragents.lsp-fsharp/web/index.tsx"],
4
- "sourcesContent": ["export const read = (specifier, name) => {\n const module = globalThis[\"__ragentsHostModules\"]?.[specifier];\n if (module === undefined) throw new Error(`Der Host stellt ${specifier} nicht bereit`);\n if (!(name in module)) throw new Error(`Der Host stellt ${name} aus ${specifier} nicht bereit; das Bundle ist gegen einen neueren Host gebaut`);\n return module[name];\n};", "import { read } from \"ragents-host-read:read\";\nexport default read(\"@ragents/web/language-server/language-server-plugin\", \"languageServerWebPlugin\");\n", "import { read } from \"ragents-host-read:read\";\nexport default read(\"react/jsx-runtime\", \"jsx\");\n", "import { languageServerWebPlugin } from \"@ragents/web/language-server/language-server-plugin\";\n\nexport const webPlugin = languageServerWebPlugin(\"ragents.lsp-fsharp\", LanguageIcon);\n\nfunction LanguageIcon() {\n return <span aria-hidden=\"true\" className=\"font-mono text-[12px] font-bold\">F#</span>;\n}\n"],
5
- "mappings": "AAAO,IAAMA,EAAO,CAACC,EAAWC,IAAS,CACvC,IAAMC,EAAS,WAAW,uBAA0BF,CAAS,EAC7D,GAAIE,IAAW,OAAW,MAAM,IAAI,MAAM,mBAAmBF,CAAS,eAAe,EACrF,GAAI,EAAEC,KAAQC,GAAS,MAAM,IAAI,MAAM,mBAAmBD,CAAI,QAAQD,CAAS,+DAA+D,EAC9I,OAAOE,EAAOD,CAAI,CACpB,ECJA,IAAOE,EAAQC,EAAK,sDAAuD,yBAAyB,ECApG,IAAOC,EAAQC,EAAK,oBAAqB,KAAK,ECCvC,IAAMC,EAAYC,EAAwB,qBAAsBC,CAAY,EAEnF,SAASA,GAAe,CACtB,OAAOC,EAAC,QAAK,cAAY,OAAO,UAAU,kCAAkC,cAAE,CAChF",
4
+ "sourcesContent": ["export const read = (specifier, name) => {\n const module = globalThis[\"__ragentsHostModules\"]?.[specifier];\n if (module === undefined) throw new Error(`The host does not provide ${specifier}`);\n if (!(name in module)) throw new Error(`The host does not provide ${name} from ${specifier}; the bundle was built against a newer host`);\n return module[name];\n};", "import { read } from \"ragents-host-read:read\";\nexport default read(\"@ragents/web/language-server/language-server-plugin\", \"languageServerWebPlugin\");\n", "import { read } from \"ragents-host-read:read\";\nexport default read(\"react/jsx-runtime\", \"jsx\");\n", "import { languageServerWebPlugin } from \"@ragents/web/language-server/language-server-plugin\";\n\nexport const webPlugin = languageServerWebPlugin(\"ragents.lsp-fsharp\", LanguageIcon);\n\nfunction LanguageIcon() {\n return <span aria-hidden=\"true\" className=\"font-mono text-[12px] font-bold\">F#</span>;\n}\n"],
5
+ "mappings": "AAAO,IAAMA,EAAO,CAACC,EAAWC,IAAS,CACvC,IAAMC,EAAS,WAAW,uBAA0BF,CAAS,EAC7D,GAAIE,IAAW,OAAW,MAAM,IAAI,MAAM,6BAA6BF,CAAS,EAAE,EAClF,GAAI,EAAEC,KAAQC,GAAS,MAAM,IAAI,MAAM,6BAA6BD,CAAI,SAASD,CAAS,6CAA6C,EACvI,OAAOE,EAAOD,CAAI,CACpB,ECJA,IAAOE,EAAQC,EAAK,sDAAuD,yBAAyB,ECApG,IAAOC,EAAQC,EAAK,oBAAqB,KAAK,ECCvC,IAAMC,EAAYC,EAAwB,qBAAsBC,CAAY,EAEnF,SAASA,GAAe,CACtB,OAAOC,EAAC,QAAK,cAAY,OAAO,UAAU,kCAAkC,cAAE,CAChF",
6
6
  "names": ["read", "specifier", "name", "module", "language_server_plugin_languageServerWebPlugin_default", "read", "jsx_runtime_jsx_default", "read", "webPlugin", "language_server_plugin_languageServerWebPlugin_default", "LanguageIcon", "jsx_runtime_jsx_default"]
7
7
  }
@@ -21,7 +21,7 @@ var serverPath = (toolsDirectory) => {
21
21
  if (configured) return configured;
22
22
  const provisioned = path.join(toolsDirectory, ...ROSLYN_SERVER_FILE.split("/"));
23
23
  if (existsSync(provisioned)) return provisioned;
24
- throw new Error(`Microsoft.CodeAnalysis.LanguageServer gibt es auf diesem Rechner nicht: weder ${ROSLYN_SERVER_VARIABLE} gesetzt noch ${provisioned} vorhanden. Ein Arbeitsplatz holt ihn mit pnpm provision --workspace, ein Server \xFCber pnpm provision <profil>; ${ROSLYN_SERVER_VARIABLE} \xFCbersteuert beides`);
24
+ throw new Error(`Microsoft.CodeAnalysis.LanguageServer does not exist on this machine: neither is ${ROSLYN_SERVER_VARIABLE} set nor does ${provisioned} exist. A workspace fetches it with pnpm provision --workspace, a server via pnpm provision <profile>; ${ROSLYN_SERVER_VARIABLE} overrides both`);
25
25
  };
26
26
  var executor = (machine) => ({
27
27
  languageServers: [{
@@ -49,13 +49,13 @@ var executor = (machine) => ({
49
49
  const uri = pathToFileURL(root).href;
50
50
  const loaded = session.waitForNotification(
51
51
  timeoutMs,
52
- "Projekte geladen",
52
+ "projects loaded",
53
53
  (method) => method === "workspace/projectInitializationComplete"
54
54
  );
55
55
  if (root.toLowerCase().endsWith(".csproj")) session.notify("project/open", { projects: [uri] });
56
56
  else session.notify("solution/open", { solution: uri });
57
57
  await loaded;
58
- return `${path.basename(root)} geladen`;
58
+ return `Loaded ${path.basename(root)}`;
59
59
  }
60
60
  }]
61
61
  });
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../plugins/ragents.lsp-roslyn/executor.ts"],
4
- "sourcesContent": ["import { existsSync } from \"node:fs\";\nimport path from \"node:path\";\nimport { pathToFileURL } from \"node:url\";\nimport type { LanguageServerDescription, WorkspaceExecutorContribution } from \"@ragents/workspace-executor\";\n\nexport const ROSLYN_SERVER_VARIABLE = \"ROSLYN_LANGUAGE_SERVER\";\nexport const ROSLYN_SERVER_FILE = \"roslyn/Microsoft.CodeAnalysis.LanguageServer.dll\";\n\nconst languages = { \".cs\": \"csharp\" } as const;\n\nexport const roslynLanguageServer: LanguageServerDescription = {\n id: \"roslyn\",\n label: \"Roslyn\",\n languages,\n rootDescription: \"the .sln file (or a single .csproj)\",\n solutionExtensions: [\".sln\", \".slnx\"],\n};\n\nconst dotnetCommand = (server: string, args: readonly string[]): { command: string; args: string[] } =>\n server.toLowerCase().endsWith(\".dll\")\n ? { command: \"dotnet\", args: [server, ...args] }\n : { command: server, args: [...args] };\n\nconst serverPath = (toolsDirectory: string): string => {\n const configured = process.env[ROSLYN_SERVER_VARIABLE];\n if (configured) return configured;\n const provisioned = path.join(toolsDirectory, ...ROSLYN_SERVER_FILE.split(\"/\"));\n if (existsSync(provisioned)) return provisioned;\n throw new Error(\"Microsoft.CodeAnalysis.LanguageServer gibt es auf diesem Rechner nicht: weder \"\n + `${ROSLYN_SERVER_VARIABLE} gesetzt noch ${provisioned} vorhanden. Ein Arbeitsplatz holt ihn mit `\n + `pnpm provision --workspace, ein Server \u00FCber pnpm provision <profil>; ${ROSLYN_SERVER_VARIABLE} \u00FCbersteuert beides`);\n};\n\nexport const executor: WorkspaceExecutorContribution = (machine) => ({\n languageServers: [{\n ...roslynLanguageServer,\n resolveRoot: (workspaceRoot, root) => machine.resolveRootFile(workspaceRoot, root, [\".sln\", \".slnx\", \".csproj\"]),\n rootDirectory: (root) => path.dirname(root),\n launch: async (context, root) => ({\n label: \"Roslyn\",\n ...dotnetCommand(serverPath(machine.toolsDirectory), [\n \"--stdio\",\n \"--logLevel\", \"Warning\",\n \"--extensionLogDirectory\", path.join(context.logDirectory, \"roslyn-logs\"),\n ]),\n cwd: path.dirname(root),\n env: context.env,\n uid: context.uid,\n gid: context.gid,\n rootUri: pathToFileURL(path.dirname(root)).href,\n languages,\n newFileSettleMs: 2_000,\n }),\n open: async (session, root, timeoutMs) => {\n const uri = pathToFileURL(root).href;\n const loaded = session.waitForNotification(timeoutMs, \"Projekte geladen\",\n (method) => method === \"workspace/projectInitializationComplete\");\n if (root.toLowerCase().endsWith(\".csproj\")) session.notify(\"project/open\", { projects: [uri] });\n else session.notify(\"solution/open\", { solution: uri });\n await loaded;\n return `${path.basename(root)} geladen`;\n },\n }],\n});\n"],
5
- "mappings": ";;;;AAAA,SAAS,kBAAkB;AAC3B,OAAO,UAAU;AACjB,SAAS,qBAAqB;AAGvB,IAAM,yBAAyB;AAC/B,IAAM,qBAAqB;AAElC,IAAM,YAAY,EAAE,OAAO,SAAS;AAE7B,IAAM,uBAAkD;AAAA,EAC7D,IAAI;AAAA,EACJ,OAAO;AAAA,EACP;AAAA,EACA,iBAAiB;AAAA,EACjB,oBAAoB,CAAC,QAAQ,OAAO;AACtC;AAEA,IAAM,gBAAgB,CAAC,QAAgB,SACrC,OAAO,YAAY,EAAE,SAAS,MAAM,IAChC,EAAE,SAAS,UAAU,MAAM,CAAC,QAAQ,GAAG,IAAI,EAAE,IAC7C,EAAE,SAAS,QAAQ,MAAM,CAAC,GAAG,IAAI,EAAE;AAEzC,IAAM,aAAa,CAAC,mBAAmC;AACrD,QAAM,aAAa,QAAQ,IAAI,sBAAsB;AACrD,MAAI,WAAY,QAAO;AACvB,QAAM,cAAc,KAAK,KAAK,gBAAgB,GAAG,mBAAmB,MAAM,GAAG,CAAC;AAC9E,MAAI,WAAW,WAAW,EAAG,QAAO;AACpC,QAAM,IAAI,MAAM,iFACT,sBAAsB,iBAAiB,WAAW,qHACmB,sBAAsB,wBAAqB;AACzH;AAEO,IAAM,WAA0C,CAAC,aAAa;AAAA,EACnE,iBAAiB,CAAC;AAAA,IAChB,GAAG;AAAA,IACH,aAAa,CAAC,eAAe,SAAS,QAAQ,gBAAgB,eAAe,MAAM,CAAC,QAAQ,SAAS,SAAS,CAAC;AAAA,IAC/G,eAAe,CAAC,SAAS,KAAK,QAAQ,IAAI;AAAA,IAC1C,QAAQ,OAAO,SAAS,UAAU;AAAA,MAChC,OAAO;AAAA,MACP,GAAG,cAAc,WAAW,QAAQ,cAAc,GAAG;AAAA,QACnD;AAAA,QACA;AAAA,QAAc;AAAA,QACd;AAAA,QAA2B,KAAK,KAAK,QAAQ,cAAc,aAAa;AAAA,MAC1E,CAAC;AAAA,MACD,KAAK,KAAK,QAAQ,IAAI;AAAA,MACtB,KAAK,QAAQ;AAAA,MACb,KAAK,QAAQ;AAAA,MACb,KAAK,QAAQ;AAAA,MACb,SAAS,cAAc,KAAK,QAAQ,IAAI,CAAC,EAAE;AAAA,MAC3C;AAAA,MACA,iBAAiB;AAAA,IACnB;AAAA,IACA,MAAM,OAAO,SAAS,MAAM,cAAc;AACxC,YAAM,MAAM,cAAc,IAAI,EAAE;AAChC,YAAM,SAAS,QAAQ;AAAA,QAAoB;AAAA,QAAW;AAAA,QACpD,CAAC,WAAW,WAAW;AAAA,MAAyC;AAClE,UAAI,KAAK,YAAY,EAAE,SAAS,SAAS,EAAG,SAAQ,OAAO,gBAAgB,EAAE,UAAU,CAAC,GAAG,EAAE,CAAC;AAAA,UACzF,SAAQ,OAAO,iBAAiB,EAAE,UAAU,IAAI,CAAC;AACtD,YAAM;AACN,aAAO,GAAG,KAAK,SAAS,IAAI,CAAC;AAAA,IAC/B;AAAA,EACF,CAAC;AACH;",
4
+ "sourcesContent": ["import { existsSync } from \"node:fs\";\nimport path from \"node:path\";\nimport { pathToFileURL } from \"node:url\";\nimport type { LanguageServerDescription, WorkspaceExecutorContribution } from \"@ragents/workspace-executor\";\n\nexport const ROSLYN_SERVER_VARIABLE = \"ROSLYN_LANGUAGE_SERVER\";\nexport const ROSLYN_SERVER_FILE = \"roslyn/Microsoft.CodeAnalysis.LanguageServer.dll\";\n\nconst languages = { \".cs\": \"csharp\" } as const;\n\nexport const roslynLanguageServer: LanguageServerDescription = {\n id: \"roslyn\",\n label: \"Roslyn\",\n languages,\n rootDescription: \"the .sln file (or a single .csproj)\",\n solutionExtensions: [\".sln\", \".slnx\"],\n};\n\nconst dotnetCommand = (server: string, args: readonly string[]): { command: string; args: string[] } =>\n server.toLowerCase().endsWith(\".dll\")\n ? { command: \"dotnet\", args: [server, ...args] }\n : { command: server, args: [...args] };\n\nconst serverPath = (toolsDirectory: string): string => {\n const configured = process.env[ROSLYN_SERVER_VARIABLE];\n if (configured) return configured;\n const provisioned = path.join(toolsDirectory, ...ROSLYN_SERVER_FILE.split(\"/\"));\n if (existsSync(provisioned)) return provisioned;\n throw new Error(\"Microsoft.CodeAnalysis.LanguageServer does not exist on this machine: neither is \"\n + `${ROSLYN_SERVER_VARIABLE} set nor does ${provisioned} exist. A workspace fetches it with `\n + `pnpm provision --workspace, a server via pnpm provision <profile>; ${ROSLYN_SERVER_VARIABLE} overrides both`);\n};\n\nexport const executor: WorkspaceExecutorContribution = (machine) => ({\n languageServers: [{\n ...roslynLanguageServer,\n resolveRoot: (workspaceRoot, root) => machine.resolveRootFile(workspaceRoot, root, [\".sln\", \".slnx\", \".csproj\"]),\n rootDirectory: (root) => path.dirname(root),\n launch: async (context, root) => ({\n label: \"Roslyn\",\n ...dotnetCommand(serverPath(machine.toolsDirectory), [\n \"--stdio\",\n \"--logLevel\", \"Warning\",\n \"--extensionLogDirectory\", path.join(context.logDirectory, \"roslyn-logs\"),\n ]),\n cwd: path.dirname(root),\n env: context.env,\n uid: context.uid,\n gid: context.gid,\n rootUri: pathToFileURL(path.dirname(root)).href,\n languages,\n newFileSettleMs: 2_000,\n }),\n open: async (session, root, timeoutMs) => {\n const uri = pathToFileURL(root).href;\n const loaded = session.waitForNotification(timeoutMs, \"projects loaded\",\n (method) => method === \"workspace/projectInitializationComplete\");\n if (root.toLowerCase().endsWith(\".csproj\")) session.notify(\"project/open\", { projects: [uri] });\n else session.notify(\"solution/open\", { solution: uri });\n await loaded;\n return `Loaded ${path.basename(root)}`;\n },\n }],\n});\n"],
5
+ "mappings": ";;;;AAAA,SAAS,kBAAkB;AAC3B,OAAO,UAAU;AACjB,SAAS,qBAAqB;AAGvB,IAAM,yBAAyB;AAC/B,IAAM,qBAAqB;AAElC,IAAM,YAAY,EAAE,OAAO,SAAS;AAE7B,IAAM,uBAAkD;AAAA,EAC7D,IAAI;AAAA,EACJ,OAAO;AAAA,EACP;AAAA,EACA,iBAAiB;AAAA,EACjB,oBAAoB,CAAC,QAAQ,OAAO;AACtC;AAEA,IAAM,gBAAgB,CAAC,QAAgB,SACrC,OAAO,YAAY,EAAE,SAAS,MAAM,IAChC,EAAE,SAAS,UAAU,MAAM,CAAC,QAAQ,GAAG,IAAI,EAAE,IAC7C,EAAE,SAAS,QAAQ,MAAM,CAAC,GAAG,IAAI,EAAE;AAEzC,IAAM,aAAa,CAAC,mBAAmC;AACrD,QAAM,aAAa,QAAQ,IAAI,sBAAsB;AACrD,MAAI,WAAY,QAAO;AACvB,QAAM,cAAc,KAAK,KAAK,gBAAgB,GAAG,mBAAmB,MAAM,GAAG,CAAC;AAC9E,MAAI,WAAW,WAAW,EAAG,QAAO;AACpC,QAAM,IAAI,MAAM,oFACT,sBAAsB,iBAAiB,WAAW,0GACiB,sBAAsB,iBAAiB;AACnH;AAEO,IAAM,WAA0C,CAAC,aAAa;AAAA,EACnE,iBAAiB,CAAC;AAAA,IAChB,GAAG;AAAA,IACH,aAAa,CAAC,eAAe,SAAS,QAAQ,gBAAgB,eAAe,MAAM,CAAC,QAAQ,SAAS,SAAS,CAAC;AAAA,IAC/G,eAAe,CAAC,SAAS,KAAK,QAAQ,IAAI;AAAA,IAC1C,QAAQ,OAAO,SAAS,UAAU;AAAA,MAChC,OAAO;AAAA,MACP,GAAG,cAAc,WAAW,QAAQ,cAAc,GAAG;AAAA,QACnD;AAAA,QACA;AAAA,QAAc;AAAA,QACd;AAAA,QAA2B,KAAK,KAAK,QAAQ,cAAc,aAAa;AAAA,MAC1E,CAAC;AAAA,MACD,KAAK,KAAK,QAAQ,IAAI;AAAA,MACtB,KAAK,QAAQ;AAAA,MACb,KAAK,QAAQ;AAAA,MACb,KAAK,QAAQ;AAAA,MACb,SAAS,cAAc,KAAK,QAAQ,IAAI,CAAC,EAAE;AAAA,MAC3C;AAAA,MACA,iBAAiB;AAAA,IACnB;AAAA,IACA,MAAM,OAAO,SAAS,MAAM,cAAc;AACxC,YAAM,MAAM,cAAc,IAAI,EAAE;AAChC,YAAM,SAAS,QAAQ;AAAA,QAAoB;AAAA,QAAW;AAAA,QACpD,CAAC,WAAW,WAAW;AAAA,MAAyC;AAClE,UAAI,KAAK,YAAY,EAAE,SAAS,SAAS,EAAG,SAAQ,OAAO,gBAAgB,EAAE,UAAU,CAAC,GAAG,EAAE,CAAC;AAAA,UACzF,SAAQ,OAAO,iBAAiB,EAAE,UAAU,IAAI,CAAC;AACtD,YAAM;AACN,aAAO,UAAU,KAAK,SAAS,IAAI,CAAC;AAAA,IACtC;AAAA,EACF,CAAC;AACH;",
6
6
  "names": []
7
7
  }
@@ -40,8 +40,8 @@
40
40
  ]
41
41
  }
42
42
  },
43
- "stand": "552bc2063377364860e8366cb35071b33d3de3cc618bf813772cfa8cda157d20",
44
- "sourceStand": "6e5ff77a56d86c61d2a1bbeb52db7cf6d35c70a8fb4db58cb4e212f345c75dc9",
43
+ "stand": "cbe81aa88a4ea56476537fabbbb0995d09ccbfa269dd6a003df50a57c8286b02",
44
+ "sourceStand": "d59f04b1bc34fb9e7a535ec8067a1e7b5c2d89937c3267eabe6a4e2b54a2b55e",
45
45
  "server": "server/index.js",
46
46
  "web": {
47
47
  "entry": "web/index.js",
@@ -32,8 +32,8 @@ import {
32
32
  import { DISMISSED_ANSWER } from "@ragents/plugins/ragents.ask/server/contract";
33
33
  var SOLUTION_ON_START_VARIABLE = "ROSLYN_SOLUTION_ON_START";
34
34
  var SOLUTION_PREFERRED_VARIABLE = "ROSLYN_SOLUTION_PREFERRED";
35
- var NO_SOLUTION = "Keine laden";
36
- var SOLUTION_QUESTION = "Welche Solution soll Roslyn f\xFCr die Diagnostik laden?";
35
+ var NO_SOLUTION = "Load none";
36
+ var SOLUTION_QUESTION = "Which solution should Roslyn load for diagnostics?";
37
37
  var matchesPreferred = (solution, preferred) => {
38
38
  const path4 = solution.toLowerCase();
39
39
  const expected = preferred.toLowerCase();
@@ -69,9 +69,9 @@ var createSolutionOnStart = (options) => {
69
69
  runtime.enqueueInput(
70
70
  { actorId: runtime.state(runId).ownerId, commandId: `${options.pluginId}.solution-answer:${runId}` },
71
71
  runId,
72
- { actorId: coordinatorId, content: `Antwort auf die Frage: ${SOLUTION_QUESTION}
73
- Antwort: ${answer}
74
- ${openTool} l\xE4dt eine Solution.` }
72
+ { actorId: coordinatorId, content: `Answer to the question: ${SOLUTION_QUESTION}
73
+ Answer: ${answer}
74
+ ${openTool} loads a solution.` }
75
75
  );
76
76
  };
77
77
  const begin = async (runId, ownerId, coordinatorId, signal) => {
@@ -83,7 +83,7 @@ ${openTool} l\xE4dt eine Solution.` }
83
83
  { runId, agentId: ownerId, turnId: null, commandId: questionCommand(runId) },
84
84
  {
85
85
  question: SOLUTION_QUESTION,
86
- description: "Im Arbeitsbereich liegen mehrere Solutions; die gew\xE4hlte l\xE4dt Roslyn f\xFCr die Diagnostik ohne Build.",
86
+ description: "The workspace contains several solutions; Roslyn loads the chosen one for diagnostics without a build.",
87
87
  options: [...step.options],
88
88
  recipient: coordinatorId
89
89
  },
@@ -93,12 +93,12 @@ ${openTool} l\xE4dt eine Solution.` }
93
93
  };
94
94
  const finish = (runId, controller, error) => {
95
95
  if (error !== void 0 && !controller.signal.aborted) {
96
- console.error(`${options.pluginId}: Solution beim Start von ${runId} nicht geladen: ${messageOf(error)}`);
96
+ console.error(`${options.pluginId}: solution not loaded on start of ${runId}: ${messageOf(error)}`);
97
97
  }
98
98
  if (running.get(runId) === controller) running.delete(runId);
99
99
  };
100
100
  const stop = ({ runId }) => {
101
- running.get(runId)?.abort(new Error("Der Run wurde gestoppt"));
101
+ running.get(runId)?.abort(new Error("The run was stopped"));
102
102
  running.delete(runId);
103
103
  };
104
104
  const opened = (runId) => {
@@ -106,7 +106,7 @@ ${openTool} l\xE4dt eine Solution.` }
106
106
  const proposed = options.runtime().events(runId).find((event) => event.type === "action.proposed" && event.commandId === questionCommand(runId));
107
107
  if (proposed?.type === "action.proposed") options.ask().withdraw(runId, proposed.payload.actionId);
108
108
  } catch (error) {
109
- console.error(`${options.pluginId}: Startfrage von ${runId} nicht verworfen: ${messageOf(error)}`);
109
+ console.error(`${options.pluginId}: start question of ${runId} not dismissed: ${messageOf(error)}`);
110
110
  }
111
111
  };
112
112
  const lifecycle = {
@@ -121,7 +121,7 @@ ${openTool} l\xE4dt eine Solution.` }
121
121
  { pluginId: options.pluginId, scope: { kind: "run" }, state: { version: 1, startEntry: startEntry?.id ?? null } }
122
122
  );
123
123
  if (startEntry?.action === "script") return;
124
- if (!primaryActorId) throw new Error(`Der Run ${runId} hat beim Start keinen Koordinator, dem eine Antwort zugehen k\xF6nnte`);
124
+ if (!primaryActorId) throw new Error(`The run ${runId} has no coordinator on start that could receive an answer`);
125
125
  const controller = new AbortController();
126
126
  running.set(runId, controller);
127
127
  try {
@@ -148,7 +148,7 @@ var env = declaredEnvironment(roslynConfigDescriptors);
148
148
  var solutionOnStart = () => {
149
149
  const mode = env.optional(SOLUTION_ON_START_VARIABLE) ?? "off";
150
150
  if (mode !== "on" && mode !== "off") {
151
- throw new Error(`${SOLUTION_ON_START_VARIABLE} in der Sektion ragents.lsp-roslyn ist "on" oder "off", nicht "${mode}"`);
151
+ throw new Error(`${SOLUTION_ON_START_VARIABLE} in the section ragents.lsp-roslyn is "on" or "off", not "${mode}"`);
152
152
  }
153
153
  return mode === "on";
154
154
  };
@@ -156,10 +156,10 @@ var preferredSolution = (loadOnStart) => {
156
156
  const preferred = env.optional(SOLUTION_PREFERRED_VARIABLE);
157
157
  if (preferred === void 0) return void 0;
158
158
  if (!loadOnStart) {
159
- throw new Error(`${SOLUTION_PREFERRED_VARIABLE} in der Sektion ragents.lsp-roslyn verlangt ${SOLUTION_ON_START_VARIABLE}: "on"`);
159
+ throw new Error(`${SOLUTION_PREFERRED_VARIABLE} in the section ragents.lsp-roslyn requires ${SOLUTION_ON_START_VARIABLE}: "on"`);
160
160
  }
161
161
  if (preferred === "" || preferred.includes("\\") || path2.win32.isAbsolute(preferred)) {
162
- throw new Error(`${SOLUTION_PREFERRED_VARIABLE} in der Sektion ragents.lsp-roslyn ist ein Pfad relativ zum Arbeitsbereich mit Schr\xE4gstrichen, nicht "${preferred}"`);
162
+ throw new Error(`${SOLUTION_PREFERRED_VARIABLE} in the section ragents.lsp-roslyn is a path relative to the workspace with forward slashes, not "${preferred}"`);
163
163
  }
164
164
  return preferred;
165
165
  };
@@ -218,7 +218,7 @@ var createRoslynProvision = (download = downloadArchive, runtimes = dotnetRuntim
218
218
  if (await runtimes() === void 0) return provisionGap("dotnet", DOTNET_INSTRUCTION, false);
219
219
  const installed = await stat(serverFile(target)).catch(() => void 0);
220
220
  if (installed?.isFile() && await readProvisionStamp(target) === ROSLYN_VERSION) return provisionReady;
221
- return provisionGap("roslyn", `Microsoft.CodeAnalysis.LanguageServer ${ROSLYN_VERSION} fehlt unter ${serverFile(target)}`, true);
221
+ return provisionGap("roslyn", `Microsoft.CodeAnalysis.LanguageServer ${ROSLYN_VERSION} is missing at ${serverFile(target)}`, true);
222
222
  };
223
223
  return {
224
224
  check,
@@ -226,13 +226,13 @@ var createRoslynProvision = (download = downloadArchive, runtimes = dotnetRuntim
226
226
  const state = await check(target);
227
227
  if (state.kind === "ready") return;
228
228
  if (!state.installable) throw new Error(state.instruction);
229
- log(`Roslyn ${ROSLYN_VERSION} laden`);
229
+ log(`Downloading Roslyn ${ROSLYN_VERSION}`);
230
230
  const files = await unpackArchive(await download(roslynArchiveUrl), PREFIX, target, "roslyn");
231
231
  if (!(await stat(serverFile(target)).catch(() => void 0))?.isFile()) {
232
- throw new Error(`Das Paket ${PACKAGE} ${ROSLYN_VERSION} enth\xE4lt ${ROSLYN_SERVER_FILE} nicht`);
232
+ throw new Error(`The package ${PACKAGE} ${ROSLYN_VERSION} does not contain ${ROSLYN_SERVER_FILE}`);
233
233
  }
234
234
  await writeProvisionStamp(target, ROSLYN_VERSION);
235
- log(`${files} Dateien nach ${path3.join(target, "roslyn")}`);
235
+ log(`${files} files to ${path3.join(target, "roslyn")}`);
236
236
  }
237
237
  };
238
238
  };
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../plugins/ragents.lsp-roslyn/server/index.ts", "../../../plugins/ragents.lsp-roslyn/executor.ts", "../../../plugins/ragents.lsp-roslyn/server/solution-on-start.ts", "../../../plugins/ragents.lsp-roslyn/provision.ts"],
4
- "sourcesContent": ["import path from \"node:path\";\nimport { declaredEnvironment } from \"@ragents/host/plugin-support/plugin-config.js\";\nimport { createLanguageServerPlugin } from \"@ragents/host/plugin-support/language-server/plugin.js\";\nimport type { PluginModule } from \"@ragents/host/plugin-support/plugin-module.js\";\nimport { sandboxServicesToken } from \"@ragents/host/plugin-support/workspace-sandbox-host.js\";\nimport { runtimeProviderToken } from \"@ragents/host/ragents/host-services.js\";\nimport { askServiceToken } from \"@ragents/plugins/ragents.ask/server/contract.js\";\nimport { roslynLanguageServer, ROSLYN_SERVER_VARIABLE } from \"../executor.js\";\nimport {\n createSolutionOnStart,\n SOLUTION_ON_START_VARIABLE,\n SOLUTION_PREFERRED_VARIABLE,\n type SolutionOnStart,\n} from \"./solution-on-start.js\";\n\nexport const roslynConfigDescriptors = [\n { key: ROSLYN_SERVER_VARIABLE, source: \"environment\" },\n { key: SOLUTION_ON_START_VARIABLE, source: \"environment\" },\n { key: SOLUTION_PREFERRED_VARIABLE, source: \"environment\" },\n] as const;\n\nconst PLUGIN_ID = \"ragents.lsp-roslyn\";\n\nconst env = declaredEnvironment(roslynConfigDescriptors);\n\n/** Ohne Angabe l\u00E4dt ein neuer Run nichts von selbst; einschalten geht nur ausdr\u00FCcklich mit \"on\". */\nexport const solutionOnStart = (): boolean => {\n const mode = env.optional(SOLUTION_ON_START_VARIABLE) ?? \"off\";\n if (mode !== \"on\" && mode !== \"off\") {\n throw new Error(`${SOLUTION_ON_START_VARIABLE} in der Sektion ragents.lsp-roslyn ist \"on\" oder \"off\", nicht \"${mode}\"`);\n }\n return mode === \"on\";\n};\n\n/** Ein Pfad relativ zur Wurzel des Arbeitsbereichs, wie ihn `roslyn_solutions` nennt; ohne Laden beim Start h\u00E4tte er keine Wirkung. */\nexport const preferredSolution = (loadOnStart: boolean): string | undefined => {\n const preferred = env.optional(SOLUTION_PREFERRED_VARIABLE);\n if (preferred === undefined) return undefined;\n if (!loadOnStart) {\n throw new Error(`${SOLUTION_PREFERRED_VARIABLE} in der Sektion ragents.lsp-roslyn verlangt ${SOLUTION_ON_START_VARIABLE}: \"on\"`);\n }\n if (preferred === \"\" || preferred.includes(\"\\\\\") || path.win32.isAbsolute(preferred)) {\n throw new Error(`${SOLUTION_PREFERRED_VARIABLE} in der Sektion ragents.lsp-roslyn ist ein Pfad relativ zum Arbeitsbereich mit Schr\u00E4gstrichen, nicht \"${preferred}\"`);\n }\n return preferred;\n};\n\nexport const plugin: PluginModule = {\n requires: [\"ragents.ask\"],\n create: () => {\n let startup: SolutionOnStart | undefined;\n const languageServer = createLanguageServerPlugin({\n id: PLUGIN_ID,\n languageServer: roslynLanguageServer,\n configDescriptors: roslynConfigDescriptors,\n onOpened: (runId) => startup?.opened(runId),\n });\n return {\n manifest: languageServer.manifest,\n register: (host) => {\n languageServer.register(host);\n const loadOnStart = solutionOnStart();\n const preferred = preferredSolution(loadOnStart);\n if (!loadOnStart) return;\n startup = createSolutionOnStart({\n pluginId: PLUGIN_ID,\n adapterId: roslynLanguageServer.id,\n preferred,\n sandbox: () => host.service(sandboxServicesToken),\n runtime: () => host.service(runtimeProviderToken)(),\n ask: () => host.service(askServiceToken),\n });\n host.lifecycle(startup.lifecycle);\n },\n };\n },\n};\n", "import { existsSync } from \"node:fs\";\nimport path from \"node:path\";\nimport { pathToFileURL } from \"node:url\";\nimport type { LanguageServerDescription, WorkspaceExecutorContribution } from \"@ragents/workspace-executor\";\n\nexport const ROSLYN_SERVER_VARIABLE = \"ROSLYN_LANGUAGE_SERVER\";\nexport const ROSLYN_SERVER_FILE = \"roslyn/Microsoft.CodeAnalysis.LanguageServer.dll\";\n\nconst languages = { \".cs\": \"csharp\" } as const;\n\nexport const roslynLanguageServer: LanguageServerDescription = {\n id: \"roslyn\",\n label: \"Roslyn\",\n languages,\n rootDescription: \"the .sln file (or a single .csproj)\",\n solutionExtensions: [\".sln\", \".slnx\"],\n};\n\nconst dotnetCommand = (server: string, args: readonly string[]): { command: string; args: string[] } =>\n server.toLowerCase().endsWith(\".dll\")\n ? { command: \"dotnet\", args: [server, ...args] }\n : { command: server, args: [...args] };\n\nconst serverPath = (toolsDirectory: string): string => {\n const configured = process.env[ROSLYN_SERVER_VARIABLE];\n if (configured) return configured;\n const provisioned = path.join(toolsDirectory, ...ROSLYN_SERVER_FILE.split(\"/\"));\n if (existsSync(provisioned)) return provisioned;\n throw new Error(\"Microsoft.CodeAnalysis.LanguageServer gibt es auf diesem Rechner nicht: weder \"\n + `${ROSLYN_SERVER_VARIABLE} gesetzt noch ${provisioned} vorhanden. Ein Arbeitsplatz holt ihn mit `\n + `pnpm provision --workspace, ein Server \u00FCber pnpm provision <profil>; ${ROSLYN_SERVER_VARIABLE} \u00FCbersteuert beides`);\n};\n\nexport const executor: WorkspaceExecutorContribution = (machine) => ({\n languageServers: [{\n ...roslynLanguageServer,\n resolveRoot: (workspaceRoot, root) => machine.resolveRootFile(workspaceRoot, root, [\".sln\", \".slnx\", \".csproj\"]),\n rootDirectory: (root) => path.dirname(root),\n launch: async (context, root) => ({\n label: \"Roslyn\",\n ...dotnetCommand(serverPath(machine.toolsDirectory), [\n \"--stdio\",\n \"--logLevel\", \"Warning\",\n \"--extensionLogDirectory\", path.join(context.logDirectory, \"roslyn-logs\"),\n ]),\n cwd: path.dirname(root),\n env: context.env,\n uid: context.uid,\n gid: context.gid,\n rootUri: pathToFileURL(path.dirname(root)).href,\n languages,\n newFileSettleMs: 2_000,\n }),\n open: async (session, root, timeoutMs) => {\n const uri = pathToFileURL(root).href;\n const loaded = session.waitForNotification(timeoutMs, \"Projekte geladen\",\n (method) => method === \"workspace/projectInitializationComplete\");\n if (root.toLowerCase().endsWith(\".csproj\")) session.notify(\"project/open\", { projects: [uri] });\n else session.notify(\"solution/open\", { solution: uri });\n await loaded;\n return `${path.basename(root)} geladen`;\n },\n }],\n});\n", "import type { Orchestration, SessionLifecycleContribution } from \"@ragents/engine\";\nimport {\n languageServerOpenOperation,\n languageServerSolutionsOperation,\n type LanguageServerSolutions,\n} from \"@ragents/workspace-executor\";\nimport type { SandboxServices } from \"@ragents/host/plugin-support/workspace-sandbox-host.js\";\nimport { DISMISSED_ANSWER, type AskService } from \"@ragents/plugins/ragents.ask/server/contract.js\";\n\nexport const SOLUTION_ON_START_VARIABLE = \"ROSLYN_SOLUTION_ON_START\";\nexport const SOLUTION_PREFERRED_VARIABLE = \"ROSLYN_SOLUTION_PREFERRED\";\nexport const NO_SOLUTION = \"Keine laden\";\nexport const SOLUTION_QUESTION = \"Welche Solution soll Roslyn f\u00FCr die Diagnostik laden?\";\n\nexport type SolutionStartStep =\n | { kind: \"none\" }\n | { kind: \"open\"; path: string }\n | { kind: \"ask\"; options: readonly string[] };\n\nexport type SolutionAnswer =\n | { kind: \"none\" }\n | { kind: \"open\"; path: string }\n | { kind: \"forward\" };\n\n/** Die Vorgabe passt auch in einem Unterordner, etwa wenn der Arbeitsbereich der Ordner \u00FCber dem Checkout ist. */\nconst matchesPreferred = (solution: string, preferred: string): boolean => {\n const path = solution.toLowerCase();\n const expected = preferred.toLowerCase();\n return path === expected || path.endsWith(`/${expected}`);\n};\n\n/** Was jemand schon ge\u00F6ffnet hat oder gerade \u00F6ffnet, bleibt ohne Frage und ohne zweites Laden; passt die Vorgabe, z\u00E4hlen nur die passenden Solutions. */\nexport const solutionStartStep = (listing: LanguageServerSolutions, preferred?: string): SolutionStartStep => {\n if (listing.opened || listing.solutions.length === 0) return { kind: \"none\" };\n const paths = listing.solutions.map((solution) => solution.path);\n const matching = preferred === undefined ? [] : paths.filter((path) => matchesPreferred(path, preferred));\n const candidates = matching.length > 0 ? matching : paths;\n if (candidates.length === 1) return { kind: \"open\", path: candidates[0] };\n return { kind: \"ask\", options: [...candidates, NO_SOLUTION] };\n};\n\n/** Eine frei formulierte Antwort bekommt der Koordinator, damit sie nicht verloren geht. */\nexport const solutionAnswer = (options: readonly string[], answer: string): SolutionAnswer => {\n const chosen = answer.trim().replaceAll(\"\\\\\", \"/\");\n if (chosen === NO_SOLUTION || answer === DISMISSED_ANSWER) return { kind: \"none\" };\n return options.includes(chosen) ? { kind: \"open\", path: chosen } : { kind: \"forward\" };\n};\n\nexport interface SolutionOnStartOptions {\n pluginId: string;\n adapterId: string;\n preferred?: string;\n sandbox: () => SandboxServices;\n runtime: () => Orchestration;\n ask: () => AskService;\n}\n\nconst messageOf = (error: unknown): string => error instanceof Error ? error.message : String(error);\n\n/** L\u00E4dt beim Start ohne Run-Script die Vorgabe oder die einzige Solution oder fragt bei mehreren; der Merker im Journal l\u00E4sst das je Run h\u00F6chstens einmal zu. */\nexport interface SolutionOnStart {\n lifecycle: SessionLifecycleContribution;\n /** Jemand hat eine Instanz ge\u00F6ffnet; eine noch offene Startfrage erledigt sich damit ohne Laden und ohne Input. */\n opened: (runId: string) => void;\n}\n\nexport const createSolutionOnStart = (options: SolutionOnStartOptions): SolutionOnStart => {\n const running = new Map<string, AbortController>();\n const openTool = languageServerOpenOperation(options.adapterId);\n const questionCommand = (runId: string): string => `${options.pluginId}.solution-question:${runId}`;\n\n const marked = (runId: string): boolean => options.runtime().view(runId).pluginStates\n .some((entry) => entry.pluginId === options.pluginId && entry.scope.kind === \"run\");\n\n const load = async (runId: string, path: string, ifNoneOpen: boolean, signal: AbortSignal): Promise<void> => {\n await options.sandbox().execute(runId, openTool, { root: path, ifNoneOpen }, { signal });\n };\n\n const answered = async (runId: string, coordinatorId: string, choices: readonly string[], answer: string, signal: AbortSignal) => {\n const outcome = solutionAnswer(choices, answer);\n if (outcome.kind === \"open\") return load(runId, outcome.path, false, signal);\n if (outcome.kind === \"none\") return;\n const runtime = options.runtime();\n runtime.enqueueInput(\n { actorId: runtime.state(runId).ownerId, commandId: `${options.pluginId}.solution-answer:${runId}` },\n runId,\n { actorId: coordinatorId, content: `Antwort auf die Frage: ${SOLUTION_QUESTION}\\nAntwort: ${answer}\\n${openTool} l\u00E4dt eine Solution.` },\n );\n };\n\n const begin = async (runId: string, ownerId: string, coordinatorId: string, signal: AbortSignal): Promise<{ rest: Promise<void> }> => {\n const listing = await options.sandbox().execute(runId, languageServerSolutionsOperation(options.adapterId), null, { signal }) as LanguageServerSolutions;\n const step = solutionStartStep(listing, options.preferred);\n if (step.kind === \"none\") return { rest: Promise.resolve() };\n if (step.kind === \"open\") return { rest: load(runId, step.path, true, signal) };\n const answer = options.ask().ask(\n { runId, agentId: ownerId, turnId: null, commandId: questionCommand(runId) },\n {\n question: SOLUTION_QUESTION,\n description: \"Im Arbeitsbereich liegen mehrere Solutions; die gew\u00E4hlte l\u00E4dt Roslyn f\u00FCr die Diagnostik ohne Build.\",\n options: [...step.options],\n recipient: coordinatorId,\n },\n signal,\n );\n return { rest: answer.then((text) => answered(runId, coordinatorId, step.options, text, signal)) };\n };\n\n const finish = (runId: string, controller: AbortController, error?: unknown): void => {\n if (error !== undefined && !controller.signal.aborted) {\n console.error(`${options.pluginId}: Solution beim Start von ${runId} nicht geladen: ${messageOf(error)}`);\n }\n if (running.get(runId) === controller) running.delete(runId);\n };\n\n const stop = ({ runId }: { runId: string }): void => {\n running.get(runId)?.abort(new Error(\"Der Run wurde gestoppt\"));\n running.delete(runId);\n };\n\n const opened = (runId: string): void => {\n try {\n const proposed = options.runtime().events(runId).find((event) =>\n event.type === \"action.proposed\" && event.commandId === questionCommand(runId));\n if (proposed?.type === \"action.proposed\") options.ask().withdraw(runId, proposed.payload.actionId);\n } catch (error) {\n console.error(`${options.pluginId}: Startfrage von ${runId} nicht verworfen: ${messageOf(error)}`);\n }\n };\n\n const lifecycle: SessionLifecycleContribution = {\n id: `${options.pluginId}.solution-on-start`,\n sessionStarted: async ({ runId, startEntry }) => {\n if (marked(runId)) return;\n const runtime = options.runtime();\n const { ownerId, primaryActorId } = runtime.state(runId);\n runtime.replacePluginState(\n { actorId: ownerId, commandId: `${options.pluginId}.solution-on-start:${runId}` },\n runId,\n { pluginId: options.pluginId, scope: { kind: \"run\" }, state: { version: 1, startEntry: startEntry?.id ?? null } },\n );\n if (startEntry?.action === \"script\") return;\n if (!primaryActorId) throw new Error(`Der Run ${runId} hat beim Start keinen Koordinator, dem eine Antwort zugehen k\u00F6nnte`);\n const controller = new AbortController();\n running.set(runId, controller);\n try {\n const { rest } = await begin(runId, ownerId, primaryActorId, controller.signal);\n void rest.then(() => finish(runId, controller), (error: unknown) => finish(runId, controller, error));\n } catch (error) {\n finish(runId, controller, error);\n }\n },\n stopSession: stop,\n deleteSession: stop,\n };\n return { lifecycle, opened };\n};\n", "import { stat } from \"node:fs/promises\";\nimport path from \"node:path\";\nimport {\n DOTNET_INSTRUCTION,\n downloadArchive,\n dotnetRuntimeMajors,\n provisionGap,\n provisionReady,\n readProvisionStamp,\n unpackArchive,\n writeProvisionStamp,\n type ArchiveDownload,\n type PluginProvision,\n type ProvisionState,\n} from \"@ragents/host/plugin-support/provision.js\";\nimport { ROSLYN_SERVER_FILE } from \"./executor.js\";\n\nexport const ROSLYN_VERSION = \"5.4.0-2.26179.14\";\n\nconst FEED = \"https://pkgs.dev.azure.com/azure-public/vside/_packaging/vs-impl/nuget/v3/flat2\";\nconst PACKAGE = \"microsoft.codeanalysis.languageserver.neutral\";\nconst PREFIX = \"content/LanguageServer/neutral/\";\n\nexport const roslynArchiveUrl = `${FEED}/${PACKAGE}/${ROSLYN_VERSION}/${PACKAGE}.${ROSLYN_VERSION}.nupkg`;\n\nexport const createRoslynProvision = (\n download: ArchiveDownload = downloadArchive,\n runtimes: () => Promise<readonly number[] | undefined> = dotnetRuntimeMajors,\n): PluginProvision => {\n const serverFile = (target: string): string => path.join(target, ...ROSLYN_SERVER_FILE.split(\"/\"));\n const check = async (target: string): Promise<ProvisionState> => {\n if (await runtimes() === undefined) return provisionGap(\"dotnet\", DOTNET_INSTRUCTION, false);\n const installed = await stat(serverFile(target)).catch(() => undefined);\n if (installed?.isFile() && await readProvisionStamp(target) === ROSLYN_VERSION) return provisionReady;\n return provisionGap(\"roslyn\", `Microsoft.CodeAnalysis.LanguageServer ${ROSLYN_VERSION} fehlt unter ${serverFile(target)}`, true);\n };\n return {\n check,\n apply: async (target, log) => {\n const state = await check(target);\n if (state.kind === \"ready\") return;\n if (!state.installable) throw new Error(state.instruction);\n log(`Roslyn ${ROSLYN_VERSION} laden`);\n const files = await unpackArchive(await download(roslynArchiveUrl), PREFIX, target, \"roslyn\");\n if (!(await stat(serverFile(target)).catch(() => undefined))?.isFile()) {\n throw new Error(`Das Paket ${PACKAGE} ${ROSLYN_VERSION} enth\u00E4lt ${ROSLYN_SERVER_FILE} nicht`);\n }\n await writeProvisionStamp(target, ROSLYN_VERSION);\n log(`${files} Dateien nach ${path.join(target, \"roslyn\")}`);\n },\n };\n};\n\nexport const provision = createRoslynProvision();\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["import path from \"node:path\";\nimport { declaredEnvironment } from \"@ragents/host/plugin-support/plugin-config.js\";\nimport { createLanguageServerPlugin } from \"@ragents/host/plugin-support/language-server/plugin.js\";\nimport type { PluginModule } from \"@ragents/host/plugin-support/plugin-module.js\";\nimport { sandboxServicesToken } from \"@ragents/host/plugin-support/workspace-sandbox-host.js\";\nimport { runtimeProviderToken } from \"@ragents/host/ragents/host-services.js\";\nimport { askServiceToken } from \"@ragents/plugins/ragents.ask/server/contract.js\";\nimport { roslynLanguageServer, ROSLYN_SERVER_VARIABLE } from \"../executor.js\";\nimport {\n createSolutionOnStart,\n SOLUTION_ON_START_VARIABLE,\n SOLUTION_PREFERRED_VARIABLE,\n type SolutionOnStart,\n} from \"./solution-on-start.js\";\n\nexport const roslynConfigDescriptors = [\n { key: ROSLYN_SERVER_VARIABLE, source: \"environment\" },\n { key: SOLUTION_ON_START_VARIABLE, source: \"environment\" },\n { key: SOLUTION_PREFERRED_VARIABLE, source: \"environment\" },\n] as const;\n\nconst PLUGIN_ID = \"ragents.lsp-roslyn\";\n\nconst env = declaredEnvironment(roslynConfigDescriptors);\n\n/** If unset, a new run loads nothing by itself; it can only be switched on explicitly with \"on\". */\nexport const solutionOnStart = (): boolean => {\n const mode = env.optional(SOLUTION_ON_START_VARIABLE) ?? \"off\";\n if (mode !== \"on\" && mode !== \"off\") {\n throw new Error(`${SOLUTION_ON_START_VARIABLE} in the section ragents.lsp-roslyn is \"on\" or \"off\", not \"${mode}\"`);\n }\n return mode === \"on\";\n};\n\n/** A path relative to the workspace root, as `roslyn_solutions` names it; without loading on start it would have no effect. */\nexport const preferredSolution = (loadOnStart: boolean): string | undefined => {\n const preferred = env.optional(SOLUTION_PREFERRED_VARIABLE);\n if (preferred === undefined) return undefined;\n if (!loadOnStart) {\n throw new Error(`${SOLUTION_PREFERRED_VARIABLE} in the section ragents.lsp-roslyn requires ${SOLUTION_ON_START_VARIABLE}: \"on\"`);\n }\n if (preferred === \"\" || preferred.includes(\"\\\\\") || path.win32.isAbsolute(preferred)) {\n throw new Error(`${SOLUTION_PREFERRED_VARIABLE} in the section ragents.lsp-roslyn is a path relative to the workspace with forward slashes, not \"${preferred}\"`);\n }\n return preferred;\n};\n\nexport const plugin: PluginModule = {\n requires: [\"ragents.ask\"],\n create: () => {\n let startup: SolutionOnStart | undefined;\n const languageServer = createLanguageServerPlugin({\n id: PLUGIN_ID,\n languageServer: roslynLanguageServer,\n configDescriptors: roslynConfigDescriptors,\n onOpened: (runId) => startup?.opened(runId),\n });\n return {\n manifest: languageServer.manifest,\n register: (host) => {\n languageServer.register(host);\n const loadOnStart = solutionOnStart();\n const preferred = preferredSolution(loadOnStart);\n if (!loadOnStart) return;\n startup = createSolutionOnStart({\n pluginId: PLUGIN_ID,\n adapterId: roslynLanguageServer.id,\n preferred,\n sandbox: () => host.service(sandboxServicesToken),\n runtime: () => host.service(runtimeProviderToken)(),\n ask: () => host.service(askServiceToken),\n });\n host.lifecycle(startup.lifecycle);\n },\n };\n },\n};\n", "import { existsSync } from \"node:fs\";\nimport path from \"node:path\";\nimport { pathToFileURL } from \"node:url\";\nimport type { LanguageServerDescription, WorkspaceExecutorContribution } from \"@ragents/workspace-executor\";\n\nexport const ROSLYN_SERVER_VARIABLE = \"ROSLYN_LANGUAGE_SERVER\";\nexport const ROSLYN_SERVER_FILE = \"roslyn/Microsoft.CodeAnalysis.LanguageServer.dll\";\n\nconst languages = { \".cs\": \"csharp\" } as const;\n\nexport const roslynLanguageServer: LanguageServerDescription = {\n id: \"roslyn\",\n label: \"Roslyn\",\n languages,\n rootDescription: \"the .sln file (or a single .csproj)\",\n solutionExtensions: [\".sln\", \".slnx\"],\n};\n\nconst dotnetCommand = (server: string, args: readonly string[]): { command: string; args: string[] } =>\n server.toLowerCase().endsWith(\".dll\")\n ? { command: \"dotnet\", args: [server, ...args] }\n : { command: server, args: [...args] };\n\nconst serverPath = (toolsDirectory: string): string => {\n const configured = process.env[ROSLYN_SERVER_VARIABLE];\n if (configured) return configured;\n const provisioned = path.join(toolsDirectory, ...ROSLYN_SERVER_FILE.split(\"/\"));\n if (existsSync(provisioned)) return provisioned;\n throw new Error(\"Microsoft.CodeAnalysis.LanguageServer does not exist on this machine: neither is \"\n + `${ROSLYN_SERVER_VARIABLE} set nor does ${provisioned} exist. A workspace fetches it with `\n + `pnpm provision --workspace, a server via pnpm provision <profile>; ${ROSLYN_SERVER_VARIABLE} overrides both`);\n};\n\nexport const executor: WorkspaceExecutorContribution = (machine) => ({\n languageServers: [{\n ...roslynLanguageServer,\n resolveRoot: (workspaceRoot, root) => machine.resolveRootFile(workspaceRoot, root, [\".sln\", \".slnx\", \".csproj\"]),\n rootDirectory: (root) => path.dirname(root),\n launch: async (context, root) => ({\n label: \"Roslyn\",\n ...dotnetCommand(serverPath(machine.toolsDirectory), [\n \"--stdio\",\n \"--logLevel\", \"Warning\",\n \"--extensionLogDirectory\", path.join(context.logDirectory, \"roslyn-logs\"),\n ]),\n cwd: path.dirname(root),\n env: context.env,\n uid: context.uid,\n gid: context.gid,\n rootUri: pathToFileURL(path.dirname(root)).href,\n languages,\n newFileSettleMs: 2_000,\n }),\n open: async (session, root, timeoutMs) => {\n const uri = pathToFileURL(root).href;\n const loaded = session.waitForNotification(timeoutMs, \"projects loaded\",\n (method) => method === \"workspace/projectInitializationComplete\");\n if (root.toLowerCase().endsWith(\".csproj\")) session.notify(\"project/open\", { projects: [uri] });\n else session.notify(\"solution/open\", { solution: uri });\n await loaded;\n return `Loaded ${path.basename(root)}`;\n },\n }],\n});\n", "import type { Orchestration, SessionLifecycleContribution } from \"@ragents/engine\";\nimport {\n languageServerOpenOperation,\n languageServerSolutionsOperation,\n type LanguageServerSolutions,\n} from \"@ragents/workspace-executor\";\nimport type { SandboxServices } from \"@ragents/host/plugin-support/workspace-sandbox-host.js\";\nimport { DISMISSED_ANSWER, type AskService } from \"@ragents/plugins/ragents.ask/server/contract.js\";\n\nexport const SOLUTION_ON_START_VARIABLE = \"ROSLYN_SOLUTION_ON_START\";\nexport const SOLUTION_PREFERRED_VARIABLE = \"ROSLYN_SOLUTION_PREFERRED\";\nexport const NO_SOLUTION = \"Load none\";\nexport const SOLUTION_QUESTION = \"Which solution should Roslyn load for diagnostics?\";\n\nexport type SolutionStartStep =\n | { kind: \"none\" }\n | { kind: \"open\"; path: string }\n | { kind: \"ask\"; options: readonly string[] };\n\nexport type SolutionAnswer =\n | { kind: \"none\" }\n | { kind: \"open\"; path: string }\n | { kind: \"forward\" };\n\n/** The preference also matches in a subdirectory, e.g. when the workspace is the folder above the checkout. */\nconst matchesPreferred = (solution: string, preferred: string): boolean => {\n const path = solution.toLowerCase();\n const expected = preferred.toLowerCase();\n return path === expected || path.endsWith(`/${expected}`);\n};\n\n/** What someone has already opened or is opening stays without a question and without a second load; if the preference matches, only the matching solutions count. */\nexport const solutionStartStep = (listing: LanguageServerSolutions, preferred?: string): SolutionStartStep => {\n if (listing.opened || listing.solutions.length === 0) return { kind: \"none\" };\n const paths = listing.solutions.map((solution) => solution.path);\n const matching = preferred === undefined ? [] : paths.filter((path) => matchesPreferred(path, preferred));\n const candidates = matching.length > 0 ? matching : paths;\n if (candidates.length === 1) return { kind: \"open\", path: candidates[0] };\n return { kind: \"ask\", options: [...candidates, NO_SOLUTION] };\n};\n\n/** A freely worded answer goes to the coordinator so it does not get lost. */\nexport const solutionAnswer = (options: readonly string[], answer: string): SolutionAnswer => {\n const chosen = answer.trim().replaceAll(\"\\\\\", \"/\");\n if (chosen === NO_SOLUTION || answer === DISMISSED_ANSWER) return { kind: \"none\" };\n return options.includes(chosen) ? { kind: \"open\", path: chosen } : { kind: \"forward\" };\n};\n\nexport interface SolutionOnStartOptions {\n pluginId: string;\n adapterId: string;\n preferred?: string;\n sandbox: () => SandboxServices;\n runtime: () => Orchestration;\n ask: () => AskService;\n}\n\nconst messageOf = (error: unknown): string => error instanceof Error ? error.message : String(error);\n\n/** On a start without a run script, loads the preference or the only solution, or asks if there are several; the marker in the journal allows this at most once per run. */\nexport interface SolutionOnStart {\n lifecycle: SessionLifecycleContribution;\n /** Someone opened an instance; a still open start question is thereby settled without loading and without input. */\n opened: (runId: string) => void;\n}\n\nexport const createSolutionOnStart = (options: SolutionOnStartOptions): SolutionOnStart => {\n const running = new Map<string, AbortController>();\n const openTool = languageServerOpenOperation(options.adapterId);\n const questionCommand = (runId: string): string => `${options.pluginId}.solution-question:${runId}`;\n\n const marked = (runId: string): boolean => options.runtime().view(runId).pluginStates\n .some((entry) => entry.pluginId === options.pluginId && entry.scope.kind === \"run\");\n\n const load = async (runId: string, path: string, ifNoneOpen: boolean, signal: AbortSignal): Promise<void> => {\n await options.sandbox().execute(runId, openTool, { root: path, ifNoneOpen }, { signal });\n };\n\n const answered = async (runId: string, coordinatorId: string, choices: readonly string[], answer: string, signal: AbortSignal) => {\n const outcome = solutionAnswer(choices, answer);\n if (outcome.kind === \"open\") return load(runId, outcome.path, false, signal);\n if (outcome.kind === \"none\") return;\n const runtime = options.runtime();\n runtime.enqueueInput(\n { actorId: runtime.state(runId).ownerId, commandId: `${options.pluginId}.solution-answer:${runId}` },\n runId,\n { actorId: coordinatorId, content: `Answer to the question: ${SOLUTION_QUESTION}\\nAnswer: ${answer}\\n${openTool} loads a solution.` },\n );\n };\n\n const begin = async (runId: string, ownerId: string, coordinatorId: string, signal: AbortSignal): Promise<{ rest: Promise<void> }> => {\n const listing = await options.sandbox().execute(runId, languageServerSolutionsOperation(options.adapterId), null, { signal }) as LanguageServerSolutions;\n const step = solutionStartStep(listing, options.preferred);\n if (step.kind === \"none\") return { rest: Promise.resolve() };\n if (step.kind === \"open\") return { rest: load(runId, step.path, true, signal) };\n const answer = options.ask().ask(\n { runId, agentId: ownerId, turnId: null, commandId: questionCommand(runId) },\n {\n question: SOLUTION_QUESTION,\n description: \"The workspace contains several solutions; Roslyn loads the chosen one for diagnostics without a build.\",\n options: [...step.options],\n recipient: coordinatorId,\n },\n signal,\n );\n return { rest: answer.then((text) => answered(runId, coordinatorId, step.options, text, signal)) };\n };\n\n const finish = (runId: string, controller: AbortController, error?: unknown): void => {\n if (error !== undefined && !controller.signal.aborted) {\n console.error(`${options.pluginId}: solution not loaded on start of ${runId}: ${messageOf(error)}`);\n }\n if (running.get(runId) === controller) running.delete(runId);\n };\n\n const stop = ({ runId }: { runId: string }): void => {\n running.get(runId)?.abort(new Error(\"The run was stopped\"));\n running.delete(runId);\n };\n\n const opened = (runId: string): void => {\n try {\n const proposed = options.runtime().events(runId).find((event) =>\n event.type === \"action.proposed\" && event.commandId === questionCommand(runId));\n if (proposed?.type === \"action.proposed\") options.ask().withdraw(runId, proposed.payload.actionId);\n } catch (error) {\n console.error(`${options.pluginId}: start question of ${runId} not dismissed: ${messageOf(error)}`);\n }\n };\n\n const lifecycle: SessionLifecycleContribution = {\n id: `${options.pluginId}.solution-on-start`,\n sessionStarted: async ({ runId, startEntry }) => {\n if (marked(runId)) return;\n const runtime = options.runtime();\n const { ownerId, primaryActorId } = runtime.state(runId);\n runtime.replacePluginState(\n { actorId: ownerId, commandId: `${options.pluginId}.solution-on-start:${runId}` },\n runId,\n { pluginId: options.pluginId, scope: { kind: \"run\" }, state: { version: 1, startEntry: startEntry?.id ?? null } },\n );\n if (startEntry?.action === \"script\") return;\n if (!primaryActorId) throw new Error(`The run ${runId} has no coordinator on start that could receive an answer`);\n const controller = new AbortController();\n running.set(runId, controller);\n try {\n const { rest } = await begin(runId, ownerId, primaryActorId, controller.signal);\n void rest.then(() => finish(runId, controller), (error: unknown) => finish(runId, controller, error));\n } catch (error) {\n finish(runId, controller, error);\n }\n },\n stopSession: stop,\n deleteSession: stop,\n };\n return { lifecycle, opened };\n};\n", "import { stat } from \"node:fs/promises\";\nimport path from \"node:path\";\nimport {\n DOTNET_INSTRUCTION,\n downloadArchive,\n dotnetRuntimeMajors,\n provisionGap,\n provisionReady,\n readProvisionStamp,\n unpackArchive,\n writeProvisionStamp,\n type ArchiveDownload,\n type PluginProvision,\n type ProvisionState,\n} from \"@ragents/host/plugin-support/provision.js\";\nimport { ROSLYN_SERVER_FILE } from \"./executor.js\";\n\nexport const ROSLYN_VERSION = \"5.4.0-2.26179.14\";\n\nconst FEED = \"https://pkgs.dev.azure.com/azure-public/vside/_packaging/vs-impl/nuget/v3/flat2\";\nconst PACKAGE = \"microsoft.codeanalysis.languageserver.neutral\";\nconst PREFIX = \"content/LanguageServer/neutral/\";\n\nexport const roslynArchiveUrl = `${FEED}/${PACKAGE}/${ROSLYN_VERSION}/${PACKAGE}.${ROSLYN_VERSION}.nupkg`;\n\nexport const createRoslynProvision = (\n download: ArchiveDownload = downloadArchive,\n runtimes: () => Promise<readonly number[] | undefined> = dotnetRuntimeMajors,\n): PluginProvision => {\n const serverFile = (target: string): string => path.join(target, ...ROSLYN_SERVER_FILE.split(\"/\"));\n const check = async (target: string): Promise<ProvisionState> => {\n if (await runtimes() === undefined) return provisionGap(\"dotnet\", DOTNET_INSTRUCTION, false);\n const installed = await stat(serverFile(target)).catch(() => undefined);\n if (installed?.isFile() && await readProvisionStamp(target) === ROSLYN_VERSION) return provisionReady;\n return provisionGap(\"roslyn\", `Microsoft.CodeAnalysis.LanguageServer ${ROSLYN_VERSION} is missing at ${serverFile(target)}`, true);\n };\n return {\n check,\n apply: async (target, log) => {\n const state = await check(target);\n if (state.kind === \"ready\") return;\n if (!state.installable) throw new Error(state.instruction);\n log(`Downloading Roslyn ${ROSLYN_VERSION}`);\n const files = await unpackArchive(await download(roslynArchiveUrl), PREFIX, target, \"roslyn\");\n if (!(await stat(serverFile(target)).catch(() => undefined))?.isFile()) {\n throw new Error(`The package ${PACKAGE} ${ROSLYN_VERSION} does not contain ${ROSLYN_SERVER_FILE}`);\n }\n await writeProvisionStamp(target, ROSLYN_VERSION);\n log(`${files} files to ${path.join(target, \"roslyn\")}`);\n },\n };\n};\n\nexport const provision = createRoslynProvision();\n"],
5
+ "mappings": "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",
6
6
  "names": ["path", "path", "path", "path", "path"]
7
7
  }
@@ -1,2 +1,2 @@
1
- var e=(r,t)=>{let n=globalThis.__ragentsHostModules?.[r];if(n===void 0)throw new Error(`Der Host stellt ${r} nicht bereit`);if(!(t in n))throw new Error(`Der Host stellt ${t} aus ${r} nicht bereit; das Bundle ist gegen einen neueren Host gebaut`);return n[t]};var o=e("@ragents/web/language-server/language-server-plugin","languageServerWebPlugin");var a=e("react/jsx-runtime","jsx");var c=o("ragents.lsp-roslyn",s);function s(){return a("span",{"aria-hidden":"true",className:"font-mono text-[12px] font-bold",children:"C#"})}export{c as webPlugin};
1
+ var e=(r,o)=>{let t=globalThis.__ragentsHostModules?.[r];if(t===void 0)throw new Error(`The host does not provide ${r}`);if(!(o in t))throw new Error(`The host does not provide ${o} from ${r}; the bundle was built against a newer host`);return t[o]};var a=e("@ragents/web/language-server/language-server-plugin","languageServerWebPlugin");var n=e("react/jsx-runtime","jsx");var b=a("ragents.lsp-roslyn",s);function s(){return n("span",{"aria-hidden":"true",className:"font-mono text-[12px] font-bold",children:"C#"})}export{b as webPlugin};
2
2
  //# sourceMappingURL=/plugins/ragents.lsp-roslyn/web/index.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["ragents-host-read:read", "ragents-host-value:@ragents/web/language-server/language-server-plugin#languageServerWebPlugin", "ragents-host-value:react/jsx-runtime#jsx", "../../../plugins/ragents.lsp-roslyn/web/index.tsx"],
4
- "sourcesContent": ["export const read = (specifier, name) => {\n const module = globalThis[\"__ragentsHostModules\"]?.[specifier];\n if (module === undefined) throw new Error(`Der Host stellt ${specifier} nicht bereit`);\n if (!(name in module)) throw new Error(`Der Host stellt ${name} aus ${specifier} nicht bereit; das Bundle ist gegen einen neueren Host gebaut`);\n return module[name];\n};", "import { read } from \"ragents-host-read:read\";\nexport default read(\"@ragents/web/language-server/language-server-plugin\", \"languageServerWebPlugin\");\n", "import { read } from \"ragents-host-read:read\";\nexport default read(\"react/jsx-runtime\", \"jsx\");\n", "import { languageServerWebPlugin } from \"@ragents/web/language-server/language-server-plugin\";\n\nexport const webPlugin = languageServerWebPlugin(\"ragents.lsp-roslyn\", LanguageIcon);\n\nfunction LanguageIcon() {\n return <span aria-hidden=\"true\" className=\"font-mono text-[12px] font-bold\">C#</span>;\n}\n"],
5
- "mappings": "AAAO,IAAMA,EAAO,CAACC,EAAWC,IAAS,CACvC,IAAMC,EAAS,WAAW,uBAA0BF,CAAS,EAC7D,GAAIE,IAAW,OAAW,MAAM,IAAI,MAAM,mBAAmBF,CAAS,eAAe,EACrF,GAAI,EAAEC,KAAQC,GAAS,MAAM,IAAI,MAAM,mBAAmBD,CAAI,QAAQD,CAAS,+DAA+D,EAC9I,OAAOE,EAAOD,CAAI,CACpB,ECJA,IAAOE,EAAQC,EAAK,sDAAuD,yBAAyB,ECApG,IAAOC,EAAQC,EAAK,oBAAqB,KAAK,ECCvC,IAAMC,EAAYC,EAAwB,qBAAsBC,CAAY,EAEnF,SAASA,GAAe,CACtB,OAAOC,EAAC,QAAK,cAAY,OAAO,UAAU,kCAAkC,cAAE,CAChF",
4
+ "sourcesContent": ["export const read = (specifier, name) => {\n const module = globalThis[\"__ragentsHostModules\"]?.[specifier];\n if (module === undefined) throw new Error(`The host does not provide ${specifier}`);\n if (!(name in module)) throw new Error(`The host does not provide ${name} from ${specifier}; the bundle was built against a newer host`);\n return module[name];\n};", "import { read } from \"ragents-host-read:read\";\nexport default read(\"@ragents/web/language-server/language-server-plugin\", \"languageServerWebPlugin\");\n", "import { read } from \"ragents-host-read:read\";\nexport default read(\"react/jsx-runtime\", \"jsx\");\n", "import { languageServerWebPlugin } from \"@ragents/web/language-server/language-server-plugin\";\n\nexport const webPlugin = languageServerWebPlugin(\"ragents.lsp-roslyn\", LanguageIcon);\n\nfunction LanguageIcon() {\n return <span aria-hidden=\"true\" className=\"font-mono text-[12px] font-bold\">C#</span>;\n}\n"],
5
+ "mappings": "AAAO,IAAMA,EAAO,CAACC,EAAWC,IAAS,CACvC,IAAMC,EAAS,WAAW,uBAA0BF,CAAS,EAC7D,GAAIE,IAAW,OAAW,MAAM,IAAI,MAAM,6BAA6BF,CAAS,EAAE,EAClF,GAAI,EAAEC,KAAQC,GAAS,MAAM,IAAI,MAAM,6BAA6BD,CAAI,SAASD,CAAS,6CAA6C,EACvI,OAAOE,EAAOD,CAAI,CACpB,ECJA,IAAOE,EAAQC,EAAK,sDAAuD,yBAAyB,ECApG,IAAOC,EAAQC,EAAK,oBAAqB,KAAK,ECCvC,IAAMC,EAAYC,EAAwB,qBAAsBC,CAAY,EAEnF,SAASA,GAAe,CACtB,OAAOC,EAAC,QAAK,cAAY,OAAO,UAAU,kCAAkC,cAAE,CAChF",
6
6
  "names": ["read", "specifier", "name", "module", "language_server_plugin_languageServerWebPlugin_default", "read", "jsx_runtime_jsx_default", "read", "webPlugin", "language_server_plugin_languageServerWebPlugin_default", "LanguageIcon", "jsx_runtime_jsx_default"]
7
7
  }
@@ -30,7 +30,7 @@ var executor = (machine) => ({
30
30
  command: process.execPath,
31
31
  args: [machine.hostPackageFile(context.hostRoot, "typescript-language-server/lib/cli.mjs"), "--stdio"],
32
32
  cwd: root,
33
- // Im Extension-Host ist process.execPath Electron; ohne diese Variable startet es die Anwendung statt des Skripts.
33
+ // In the extension host process.execPath is Electron; without this variable it starts the application instead of the script.
34
34
  env: { ...context.env, ELECTRON_RUN_AS_NODE: "1" },
35
35
  uid: context.uid,
36
36
  gid: context.gid,
@@ -39,7 +39,7 @@ var executor = (machine) => ({
39
39
  languages,
40
40
  publishesOnlyChangedDiagnostics: true
41
41
  }),
42
- open: async (_session, root) => `TypeScript-Server auf ${path.basename(root)} bereit; Projekte werden je Datei aus der n\xE4chsten tsconfig.json geladen`
42
+ open: async (_session, root) => `TypeScript server ready on ${path.basename(root)}; projects are loaded per file from the nearest tsconfig.json`
43
43
  }]
44
44
  });
45
45
  export {
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../plugins/ragents.lsp-typescript/executor.ts"],
4
- "sourcesContent": ["import { stat } from \"node:fs/promises\";\nimport path from \"node:path\";\nimport { pathToFileURL } from \"node:url\";\nimport type { LanguageServerDescription, WorkspaceExecutorContribution } from \"@ragents/workspace-executor\";\n\nconst languages = {\n \".ts\": \"typescript\",\n \".tsx\": \"typescriptreact\",\n \".mts\": \"typescript\",\n \".cts\": \"typescript\",\n \".js\": \"javascript\",\n \".jsx\": \"javascriptreact\",\n} as const;\n\nexport const typescriptLanguageServer: LanguageServerDescription = {\n id: \"typescript\",\n label: \"TypeScript\",\n languages,\n rootDescription: \"the directory whose tsconfig.json projects should be served (e.g. src)\",\n};\n\nconst hasWorkspaceTypeScript = (root: string): Promise<boolean> =>\n stat(path.join(root, \"node_modules\", \"typescript\", \"lib\", \"tsserver.js\")).then((info) => info.isFile(), () => false);\n\n/** Sprachserver und Compiler liegen in den node_modules des Hosts dieser Maschine; ohne Host gibt es sie hier nicht. */\nexport const executor: WorkspaceExecutorContribution = (machine) => ({\n languageServers: [{\n ...typescriptLanguageServer,\n resolveRoot: machine.resolveRootDirectory,\n rootDirectory: (root) => root,\n launch: async (context, root) => ({\n label: \"TypeScript\",\n command: process.execPath,\n args: [machine.hostPackageFile(context.hostRoot, \"typescript-language-server/lib/cli.mjs\"), \"--stdio\"],\n cwd: root,\n // Im Extension-Host ist process.execPath Electron; ohne diese Variable startet es die Anwendung statt des Skripts.\n env: { ...context.env, ELECTRON_RUN_AS_NODE: \"1\" },\n uid: context.uid,\n gid: context.gid,\n rootUri: pathToFileURL(root).href,\n initializationOptions: await hasWorkspaceTypeScript(root)\n ? {}\n : { tsserver: { path: path.dirname(machine.hostPackageFile(context.hostRoot, \"typescript\")) } },\n languages,\n publishesOnlyChangedDiagnostics: true,\n }),\n open: async (_session, root) =>\n `TypeScript-Server auf ${path.basename(root)} bereit; Projekte werden je Datei aus der n\u00E4chsten tsconfig.json geladen`,\n }],\n});\n"],
5
- "mappings": ";;;;AAAA,SAAS,YAAY;AACrB,OAAO,UAAU;AACjB,SAAS,qBAAqB;AAG9B,IAAM,YAAY;AAAA,EAChB,OAAO;AAAA,EACP,QAAQ;AAAA,EACR,QAAQ;AAAA,EACR,QAAQ;AAAA,EACR,OAAO;AAAA,EACP,QAAQ;AACV;AAEO,IAAM,2BAAsD;AAAA,EACjE,IAAI;AAAA,EACJ,OAAO;AAAA,EACP;AAAA,EACA,iBAAiB;AACnB;AAEA,IAAM,yBAAyB,CAAC,SAC9B,KAAK,KAAK,KAAK,MAAM,gBAAgB,cAAc,OAAO,aAAa,CAAC,EAAE,KAAK,CAAC,SAAS,KAAK,OAAO,GAAG,MAAM,KAAK;AAG9G,IAAM,WAA0C,CAAC,aAAa;AAAA,EACnE,iBAAiB,CAAC;AAAA,IAChB,GAAG;AAAA,IACH,aAAa,QAAQ;AAAA,IACrB,eAAe,CAAC,SAAS;AAAA,IACzB,QAAQ,OAAO,SAAS,UAAU;AAAA,MAChC,OAAO;AAAA,MACP,SAAS,QAAQ;AAAA,MACjB,MAAM,CAAC,QAAQ,gBAAgB,QAAQ,UAAU,wCAAwC,GAAG,SAAS;AAAA,MACrG,KAAK;AAAA;AAAA,MAEL,KAAK,EAAE,GAAG,QAAQ,KAAK,sBAAsB,IAAI;AAAA,MACjD,KAAK,QAAQ;AAAA,MACb,KAAK,QAAQ;AAAA,MACb,SAAS,cAAc,IAAI,EAAE;AAAA,MAC7B,uBAAuB,MAAM,uBAAuB,IAAI,IACpD,CAAC,IACD,EAAE,UAAU,EAAE,MAAM,KAAK,QAAQ,QAAQ,gBAAgB,QAAQ,UAAU,YAAY,CAAC,EAAE,EAAE;AAAA,MAChG;AAAA,MACA,iCAAiC;AAAA,IACnC;AAAA,IACA,MAAM,OAAO,UAAU,SACrB,yBAAyB,KAAK,SAAS,IAAI,CAAC;AAAA,EAChD,CAAC;AACH;",
4
+ "sourcesContent": ["import { stat } from \"node:fs/promises\";\nimport path from \"node:path\";\nimport { pathToFileURL } from \"node:url\";\nimport type { LanguageServerDescription, WorkspaceExecutorContribution } from \"@ragents/workspace-executor\";\n\nconst languages = {\n \".ts\": \"typescript\",\n \".tsx\": \"typescriptreact\",\n \".mts\": \"typescript\",\n \".cts\": \"typescript\",\n \".js\": \"javascript\",\n \".jsx\": \"javascriptreact\",\n} as const;\n\nexport const typescriptLanguageServer: LanguageServerDescription = {\n id: \"typescript\",\n label: \"TypeScript\",\n languages,\n rootDescription: \"the directory whose tsconfig.json projects should be served (e.g. src)\",\n};\n\nconst hasWorkspaceTypeScript = (root: string): Promise<boolean> =>\n stat(path.join(root, \"node_modules\", \"typescript\", \"lib\", \"tsserver.js\")).then((info) => info.isFile(), () => false);\n\n/** Language server and compiler live in the node_modules of this machine's host; without a host they do not exist here. */\nexport const executor: WorkspaceExecutorContribution = (machine) => ({\n languageServers: [{\n ...typescriptLanguageServer,\n resolveRoot: machine.resolveRootDirectory,\n rootDirectory: (root) => root,\n launch: async (context, root) => ({\n label: \"TypeScript\",\n command: process.execPath,\n args: [machine.hostPackageFile(context.hostRoot, \"typescript-language-server/lib/cli.mjs\"), \"--stdio\"],\n cwd: root,\n // In the extension host process.execPath is Electron; without this variable it starts the application instead of the script.\n env: { ...context.env, ELECTRON_RUN_AS_NODE: \"1\" },\n uid: context.uid,\n gid: context.gid,\n rootUri: pathToFileURL(root).href,\n initializationOptions: await hasWorkspaceTypeScript(root)\n ? {}\n : { tsserver: { path: path.dirname(machine.hostPackageFile(context.hostRoot, \"typescript\")) } },\n languages,\n publishesOnlyChangedDiagnostics: true,\n }),\n open: async (_session, root) =>\n `TypeScript server ready on ${path.basename(root)}; projects are loaded per file from the nearest tsconfig.json`,\n }],\n});\n"],
5
+ "mappings": ";;;;AAAA,SAAS,YAAY;AACrB,OAAO,UAAU;AACjB,SAAS,qBAAqB;AAG9B,IAAM,YAAY;AAAA,EAChB,OAAO;AAAA,EACP,QAAQ;AAAA,EACR,QAAQ;AAAA,EACR,QAAQ;AAAA,EACR,OAAO;AAAA,EACP,QAAQ;AACV;AAEO,IAAM,2BAAsD;AAAA,EACjE,IAAI;AAAA,EACJ,OAAO;AAAA,EACP;AAAA,EACA,iBAAiB;AACnB;AAEA,IAAM,yBAAyB,CAAC,SAC9B,KAAK,KAAK,KAAK,MAAM,gBAAgB,cAAc,OAAO,aAAa,CAAC,EAAE,KAAK,CAAC,SAAS,KAAK,OAAO,GAAG,MAAM,KAAK;AAG9G,IAAM,WAA0C,CAAC,aAAa;AAAA,EACnE,iBAAiB,CAAC;AAAA,IAChB,GAAG;AAAA,IACH,aAAa,QAAQ;AAAA,IACrB,eAAe,CAAC,SAAS;AAAA,IACzB,QAAQ,OAAO,SAAS,UAAU;AAAA,MAChC,OAAO;AAAA,MACP,SAAS,QAAQ;AAAA,MACjB,MAAM,CAAC,QAAQ,gBAAgB,QAAQ,UAAU,wCAAwC,GAAG,SAAS;AAAA,MACrG,KAAK;AAAA;AAAA,MAEL,KAAK,EAAE,GAAG,QAAQ,KAAK,sBAAsB,IAAI;AAAA,MACjD,KAAK,QAAQ;AAAA,MACb,KAAK,QAAQ;AAAA,MACb,SAAS,cAAc,IAAI,EAAE;AAAA,MAC7B,uBAAuB,MAAM,uBAAuB,IAAI,IACpD,CAAC,IACD,EAAE,UAAU,EAAE,MAAM,KAAK,QAAQ,QAAQ,gBAAgB,QAAQ,UAAU,YAAY,CAAC,EAAE,EAAE;AAAA,MAChG;AAAA,MACA,iCAAiC;AAAA,IACnC;AAAA,IACA,MAAM,OAAO,UAAU,SACrB,8BAA8B,KAAK,SAAS,IAAI,CAAC;AAAA,EACrD,CAAC;AACH;",
6
6
  "names": []
7
7
  }
@@ -17,8 +17,8 @@
17
17
  ]
18
18
  }
19
19
  },
20
- "stand": "dd53ba53f6e472fce212ed551f10909efd9350762ad6a319a0a1e1fdf1366633",
21
- "sourceStand": "28ea0cecdb9caa4fb173831798ae34e6a8d08b73b1f4b8b0b909da0225314d84",
20
+ "stand": "8387de707a4fe8fdb8c67315346522b331728f8adf51a7fadda8db662681f0c4",
21
+ "sourceStand": "45a23160cdcf94927628bb838817bef85c424507d20c4241ba97e9f33d9be156",
22
22
  "server": "server/index.js",
23
23
  "web": {
24
24
  "entry": "web/index.js",
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../plugins/ragents.lsp-typescript/server/index.ts", "../../../plugins/ragents.lsp-typescript/executor.ts"],
4
- "sourcesContent": ["import { createLanguageServerPlugin } from \"@ragents/host/plugin-support/language-server/plugin.js\";\nimport type { PluginModule } from \"@ragents/host/plugin-support/plugin-module.js\";\nimport { typescriptLanguageServer } from \"../executor.js\";\n\nexport const plugin: PluginModule = {\n create: () => createLanguageServerPlugin({ id: \"ragents.lsp-typescript\", languageServer: typescriptLanguageServer }),\n};\n", "import { stat } from \"node:fs/promises\";\nimport path from \"node:path\";\nimport { pathToFileURL } from \"node:url\";\nimport type { LanguageServerDescription, WorkspaceExecutorContribution } from \"@ragents/workspace-executor\";\n\nconst languages = {\n \".ts\": \"typescript\",\n \".tsx\": \"typescriptreact\",\n \".mts\": \"typescript\",\n \".cts\": \"typescript\",\n \".js\": \"javascript\",\n \".jsx\": \"javascriptreact\",\n} as const;\n\nexport const typescriptLanguageServer: LanguageServerDescription = {\n id: \"typescript\",\n label: \"TypeScript\",\n languages,\n rootDescription: \"the directory whose tsconfig.json projects should be served (e.g. src)\",\n};\n\nconst hasWorkspaceTypeScript = (root: string): Promise<boolean> =>\n stat(path.join(root, \"node_modules\", \"typescript\", \"lib\", \"tsserver.js\")).then((info) => info.isFile(), () => false);\n\n/** Sprachserver und Compiler liegen in den node_modules des Hosts dieser Maschine; ohne Host gibt es sie hier nicht. */\nexport const executor: WorkspaceExecutorContribution = (machine) => ({\n languageServers: [{\n ...typescriptLanguageServer,\n resolveRoot: machine.resolveRootDirectory,\n rootDirectory: (root) => root,\n launch: async (context, root) => ({\n label: \"TypeScript\",\n command: process.execPath,\n args: [machine.hostPackageFile(context.hostRoot, \"typescript-language-server/lib/cli.mjs\"), \"--stdio\"],\n cwd: root,\n // Im Extension-Host ist process.execPath Electron; ohne diese Variable startet es die Anwendung statt des Skripts.\n env: { ...context.env, ELECTRON_RUN_AS_NODE: \"1\" },\n uid: context.uid,\n gid: context.gid,\n rootUri: pathToFileURL(root).href,\n initializationOptions: await hasWorkspaceTypeScript(root)\n ? {}\n : { tsserver: { path: path.dirname(machine.hostPackageFile(context.hostRoot, \"typescript\")) } },\n languages,\n publishesOnlyChangedDiagnostics: true,\n }),\n open: async (_session, root) =>\n `TypeScript-Server auf ${path.basename(root)} bereit; Projekte werden je Datei aus der n\u00E4chsten tsconfig.json geladen`,\n }],\n});\n"],
4
+ "sourcesContent": ["import { createLanguageServerPlugin } from \"@ragents/host/plugin-support/language-server/plugin.js\";\nimport type { PluginModule } from \"@ragents/host/plugin-support/plugin-module.js\";\nimport { typescriptLanguageServer } from \"../executor.js\";\n\nexport const plugin: PluginModule = {\n create: () => createLanguageServerPlugin({ id: \"ragents.lsp-typescript\", languageServer: typescriptLanguageServer }),\n};\n", "import { stat } from \"node:fs/promises\";\nimport path from \"node:path\";\nimport { pathToFileURL } from \"node:url\";\nimport type { LanguageServerDescription, WorkspaceExecutorContribution } from \"@ragents/workspace-executor\";\n\nconst languages = {\n \".ts\": \"typescript\",\n \".tsx\": \"typescriptreact\",\n \".mts\": \"typescript\",\n \".cts\": \"typescript\",\n \".js\": \"javascript\",\n \".jsx\": \"javascriptreact\",\n} as const;\n\nexport const typescriptLanguageServer: LanguageServerDescription = {\n id: \"typescript\",\n label: \"TypeScript\",\n languages,\n rootDescription: \"the directory whose tsconfig.json projects should be served (e.g. src)\",\n};\n\nconst hasWorkspaceTypeScript = (root: string): Promise<boolean> =>\n stat(path.join(root, \"node_modules\", \"typescript\", \"lib\", \"tsserver.js\")).then((info) => info.isFile(), () => false);\n\n/** Language server and compiler live in the node_modules of this machine's host; without a host they do not exist here. */\nexport const executor: WorkspaceExecutorContribution = (machine) => ({\n languageServers: [{\n ...typescriptLanguageServer,\n resolveRoot: machine.resolveRootDirectory,\n rootDirectory: (root) => root,\n launch: async (context, root) => ({\n label: \"TypeScript\",\n command: process.execPath,\n args: [machine.hostPackageFile(context.hostRoot, \"typescript-language-server/lib/cli.mjs\"), \"--stdio\"],\n cwd: root,\n // In the extension host process.execPath is Electron; without this variable it starts the application instead of the script.\n env: { ...context.env, ELECTRON_RUN_AS_NODE: \"1\" },\n uid: context.uid,\n gid: context.gid,\n rootUri: pathToFileURL(root).href,\n initializationOptions: await hasWorkspaceTypeScript(root)\n ? {}\n : { tsserver: { path: path.dirname(machine.hostPackageFile(context.hostRoot, \"typescript\")) } },\n languages,\n publishesOnlyChangedDiagnostics: true,\n }),\n open: async (_session, root) =>\n `TypeScript server ready on ${path.basename(root)}; projects are loaded per file from the nearest tsconfig.json`,\n }],\n});\n"],
5
5
  "mappings": ";;;;AAAA,SAAS,kCAAkC;;;ACA3C,SAAS,YAAY;AACrB,OAAO,UAAU;AACjB,SAAS,qBAAqB;AAG9B,IAAM,YAAY;AAAA,EAChB,OAAO;AAAA,EACP,QAAQ;AAAA,EACR,QAAQ;AAAA,EACR,QAAQ;AAAA,EACR,OAAO;AAAA,EACP,QAAQ;AACV;AAEO,IAAM,2BAAsD;AAAA,EACjE,IAAI;AAAA,EACJ,OAAO;AAAA,EACP;AAAA,EACA,iBAAiB;AACnB;;;ADfO,IAAM,SAAuB;AAAA,EAClC,QAAQ,MAAM,2BAA2B,EAAE,IAAI,0BAA0B,gBAAgB,yBAAyB,CAAC;AACrH;",
6
6
  "names": []
7
7
  }
@@ -1,2 +1,2 @@
1
- var e=(r,t)=>{let n=globalThis.__ragentsHostModules?.[r];if(n===void 0)throw new Error(`Der Host stellt ${r} nicht bereit`);if(!(t in n))throw new Error(`Der Host stellt ${t} aus ${r} nicht bereit; das Bundle ist gegen einen neueren Host gebaut`);return n[t]};var o=e("@ragents/web/language-server/language-server-plugin","languageServerWebPlugin");var a=e("react/jsx-runtime","jsx");var c=o("ragents.lsp-typescript",s);function s(){return a("span",{"aria-hidden":"true",className:"font-mono text-[12px] font-bold",children:"TS"})}export{c as webPlugin};
1
+ var e=(r,o)=>{let t=globalThis.__ragentsHostModules?.[r];if(t===void 0)throw new Error(`The host does not provide ${r}`);if(!(o in t))throw new Error(`The host does not provide ${o} from ${r}; the bundle was built against a newer host`);return t[o]};var a=e("@ragents/web/language-server/language-server-plugin","languageServerWebPlugin");var n=e("react/jsx-runtime","jsx");var b=a("ragents.lsp-typescript",s);function s(){return n("span",{"aria-hidden":"true",className:"font-mono text-[12px] font-bold",children:"TS"})}export{b as webPlugin};
2
2
  //# sourceMappingURL=/plugins/ragents.lsp-typescript/web/index.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["ragents-host-read:read", "ragents-host-value:@ragents/web/language-server/language-server-plugin#languageServerWebPlugin", "ragents-host-value:react/jsx-runtime#jsx", "../../../plugins/ragents.lsp-typescript/web/index.tsx"],
4
- "sourcesContent": ["export const read = (specifier, name) => {\n const module = globalThis[\"__ragentsHostModules\"]?.[specifier];\n if (module === undefined) throw new Error(`Der Host stellt ${specifier} nicht bereit`);\n if (!(name in module)) throw new Error(`Der Host stellt ${name} aus ${specifier} nicht bereit; das Bundle ist gegen einen neueren Host gebaut`);\n return module[name];\n};", "import { read } from \"ragents-host-read:read\";\nexport default read(\"@ragents/web/language-server/language-server-plugin\", \"languageServerWebPlugin\");\n", "import { read } from \"ragents-host-read:read\";\nexport default read(\"react/jsx-runtime\", \"jsx\");\n", "import { languageServerWebPlugin } from \"@ragents/web/language-server/language-server-plugin\";\n\nexport const webPlugin = languageServerWebPlugin(\"ragents.lsp-typescript\", LanguageIcon);\n\nfunction LanguageIcon() {\n return <span aria-hidden=\"true\" className=\"font-mono text-[12px] font-bold\">TS</span>;\n}\n"],
5
- "mappings": "AAAO,IAAMA,EAAO,CAACC,EAAWC,IAAS,CACvC,IAAMC,EAAS,WAAW,uBAA0BF,CAAS,EAC7D,GAAIE,IAAW,OAAW,MAAM,IAAI,MAAM,mBAAmBF,CAAS,eAAe,EACrF,GAAI,EAAEC,KAAQC,GAAS,MAAM,IAAI,MAAM,mBAAmBD,CAAI,QAAQD,CAAS,+DAA+D,EAC9I,OAAOE,EAAOD,CAAI,CACpB,ECJA,IAAOE,EAAQC,EAAK,sDAAuD,yBAAyB,ECApG,IAAOC,EAAQC,EAAK,oBAAqB,KAAK,ECCvC,IAAMC,EAAYC,EAAwB,yBAA0BC,CAAY,EAEvF,SAASA,GAAe,CACtB,OAAOC,EAAC,QAAK,cAAY,OAAO,UAAU,kCAAkC,cAAE,CAChF",
4
+ "sourcesContent": ["export const read = (specifier, name) => {\n const module = globalThis[\"__ragentsHostModules\"]?.[specifier];\n if (module === undefined) throw new Error(`The host does not provide ${specifier}`);\n if (!(name in module)) throw new Error(`The host does not provide ${name} from ${specifier}; the bundle was built against a newer host`);\n return module[name];\n};", "import { read } from \"ragents-host-read:read\";\nexport default read(\"@ragents/web/language-server/language-server-plugin\", \"languageServerWebPlugin\");\n", "import { read } from \"ragents-host-read:read\";\nexport default read(\"react/jsx-runtime\", \"jsx\");\n", "import { languageServerWebPlugin } from \"@ragents/web/language-server/language-server-plugin\";\n\nexport const webPlugin = languageServerWebPlugin(\"ragents.lsp-typescript\", LanguageIcon);\n\nfunction LanguageIcon() {\n return <span aria-hidden=\"true\" className=\"font-mono text-[12px] font-bold\">TS</span>;\n}\n"],
5
+ "mappings": "AAAO,IAAMA,EAAO,CAACC,EAAWC,IAAS,CACvC,IAAMC,EAAS,WAAW,uBAA0BF,CAAS,EAC7D,GAAIE,IAAW,OAAW,MAAM,IAAI,MAAM,6BAA6BF,CAAS,EAAE,EAClF,GAAI,EAAEC,KAAQC,GAAS,MAAM,IAAI,MAAM,6BAA6BD,CAAI,SAASD,CAAS,6CAA6C,EACvI,OAAOE,EAAOD,CAAI,CACpB,ECJA,IAAOE,EAAQC,EAAK,sDAAuD,yBAAyB,ECApG,IAAOC,EAAQC,EAAK,oBAAqB,KAAK,ECCvC,IAAMC,EAAYC,EAAwB,yBAA0BC,CAAY,EAEvF,SAASA,GAAe,CACtB,OAAOC,EAAC,QAAK,cAAY,OAAO,UAAU,kCAAkC,cAAE,CAChF",
6
6
  "names": ["read", "specifier", "name", "module", "language_server_plugin_languageServerWebPlugin_default", "read", "jsx_runtime_jsx_default", "read", "webPlugin", "language_server_plugin_languageServerWebPlugin_default", "LanguageIcon", "jsx_runtime_jsx_default"]
7
7
  }
@@ -10,7 +10,11 @@
10
10
  "writeJson"
11
11
  ],
12
12
  "@ragents/host/plugin-support/model-aliases": [
13
- "configuredModelAliases"
13
+ "configuredModelAliases",
14
+ "validatedAliasModel"
15
+ ],
16
+ "@ragents/host/plugin-support/model-providers": [
17
+ "configuredModelProviders"
14
18
  ],
15
19
  "@ragents/host/plugin-support/model-upstreams": [
16
20
  "modelUpstreamsToken"
@@ -21,8 +25,8 @@
21
25
  },
22
26
  "web": {}
23
27
  },
24
- "stand": "d9b2bb73d0a0ce28e3dc6ba8ebb3e4468c622acbfd36252cd0107e78001aa155",
25
- "sourceStand": "b41d54a650ea23a1fbf999adabd997fc1f9091c7b7643a826f0a652891fb7364",
28
+ "stand": "9090692eca49235944f149b25dccdc986a3c638007d8da2fb35f74d942454379",
29
+ "sourceStand": "03bfb335b5c9b61cad1fe16058d6f68391607b4026a28d20b67711972051ea83",
26
30
  "server": "server/index.js",
27
31
  "exports": {
28
32
  "server": {},