@schlenkr/ragents 0.1.7 → 0.1.9

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 (187) hide show
  1. package/apps/server/src/config-definition.ts +24 -2
  2. package/apps/server/src/config.ts +0 -6
  3. package/apps/server/src/host-api.json +3 -10
  4. package/apps/server/src/host-api.ts +6 -7
  5. package/apps/server/src/plugin-build/build.ts +28 -5
  6. package/apps/server/src/plugin-build/plugin-description.ts +1 -1
  7. package/apps/server/src/plugin-build/typecheck.ts +2 -2
  8. package/apps/server/src/plugin-support/language-server/plugin.ts +8 -7
  9. package/apps/server/src/plugin-support/language-server/tools.ts +7 -6
  10. package/apps/server/src/plugin-support/model-aliases.ts +55 -25
  11. package/apps/server/src/plugin-support/plugin-folder.ts +2 -1
  12. package/apps/server/src/plugin-support/product-relay.ts +10 -2
  13. package/apps/server/src/plugin-support/workspace-sandbox-host.ts +18 -9
  14. package/apps/server/src/profile/bundle-manifest.ts +7 -3
  15. package/apps/server/src/profile/compose.ts +6 -0
  16. package/apps/server/src/profile/plugin-discovery.ts +6 -1
  17. package/apps/server/src/profile/provisioning.ts +6 -5
  18. package/apps/server/src/ragents/engine.ts +18 -12
  19. package/apps/server/src/ragents/host-services.ts +4 -0
  20. package/apps/server/src/ragents/session.ts +1 -1
  21. package/apps/server/src/server.ts +1 -0
  22. package/apps/server/tsconfig.json +2 -0
  23. package/apps/web/dist/assets/{highlighted-body-KPVGNVTW-CFhTJEmH.js → highlighted-body-KPVGNVTW-xXXhTDbh.js} +1 -1
  24. package/apps/web/dist/assets/{main-DlzW4t4c.js → main-C7JeZFjs.js} +1 -1
  25. package/apps/web/dist/assets/{mermaid-HWGCJPDP-kxkB991i.js → mermaid-HWGCJPDP-DfsU5ofC.js} +2 -2
  26. package/apps/web/dist/assets/{runPanel-BJEFQ__w.js → runPanel-ZT6TPDLM.js} +1 -1
  27. package/apps/web/dist/help/guide-clients.html +14 -6
  28. package/apps/web/dist/help/guide-clients.md +14 -6
  29. package/apps/web/dist/help/guide-distributed.html +12 -4
  30. package/apps/web/dist/help/guide-distributed.md +12 -4
  31. package/apps/web/dist/help/guide-getting-started.html +12 -8
  32. package/apps/web/dist/help/guide-getting-started.md +12 -8
  33. package/apps/web/dist/help/guide-plugins.html +6 -2
  34. package/apps/web/dist/help/guide-plugins.md +6 -2
  35. package/apps/web/dist/help/guide-runtime.html +2 -1
  36. package/apps/web/dist/help/guide-runtime.md +2 -1
  37. package/apps/web/dist/help/index.html +3328 -1135
  38. package/apps/web/dist/host-web.json +4 -4
  39. package/apps/web/dist/index.html +2 -2
  40. package/apps/web/dist/run-panel.html +2 -2
  41. package/apps/web/src/StartTiles.tsx +1 -1
  42. package/bundles/ragents.activity/ragents-bundle.json +3 -3
  43. package/bundles/ragents.actor-programs/ragents-bundle.json +3 -3
  44. package/bundles/ragents.ask/ragents-bundle.json +4 -4
  45. package/bundles/ragents.ask/server/index.js +42 -11
  46. package/bundles/ragents.ask/server/index.js.map +3 -3
  47. package/bundles/ragents.ask/web/chunks/chunk-WFN4374U.js +2 -0
  48. package/bundles/ragents.ask/web/chunks/chunk-WFN4374U.js.map +7 -0
  49. package/bundles/ragents.ask/web/classes.json +1 -1
  50. package/bundles/ragents.ask/web/exports/ask-payload.js +1 -1
  51. package/bundles/ragents.ask/web/index.js +1 -1
  52. package/bundles/ragents.ask/web/index.js.map +3 -3
  53. package/bundles/ragents.browser/executor/index.mjs +357 -0
  54. package/bundles/ragents.browser/executor/index.mjs.map +7 -0
  55. package/bundles/ragents.browser/ragents-bundle.json +5 -8
  56. package/bundles/ragents.browser/server/chunks/{chunk-2GKLLCBE.js → chunk-CWLX4VA5.js} +1 -1
  57. package/bundles/ragents.browser/server/chunks/chunk-CWLX4VA5.js.map +7 -0
  58. package/bundles/ragents.browser/server/exports/server/contract.js +1 -1
  59. package/bundles/ragents.browser/server/index.js +20 -9
  60. package/bundles/ragents.browser/server/index.js.map +4 -4
  61. package/bundles/ragents.documents/ragents-bundle.json +3 -3
  62. package/bundles/ragents.lsp-fsharp/executor/index.mjs +68 -0
  63. package/bundles/ragents.lsp-fsharp/executor/index.mjs.map +7 -0
  64. package/bundles/ragents.lsp-fsharp/ragents-bundle.json +5 -9
  65. package/bundles/ragents.lsp-fsharp/server/index.js +21 -6
  66. package/bundles/ragents.lsp-fsharp/server/index.js.map +4 -4
  67. package/bundles/ragents.lsp-roslyn/executor/index.mjs +68 -0
  68. package/bundles/ragents.lsp-roslyn/executor/index.mjs.map +7 -0
  69. package/bundles/ragents.lsp-roslyn/ragents-bundle.json +6 -8
  70. package/bundles/ragents.lsp-roslyn/server/index.js +54 -15
  71. package/bundles/ragents.lsp-roslyn/server/index.js.map +4 -4
  72. package/bundles/ragents.lsp-typescript/executor/index.mjs +49 -0
  73. package/bundles/ragents.lsp-typescript/executor/index.mjs.map +7 -0
  74. package/bundles/ragents.lsp-typescript/ragents-bundle.json +5 -7
  75. package/bundles/ragents.lsp-typescript/server/index.js +22 -2
  76. package/bundles/ragents.lsp-typescript/server/index.js.map +3 -3
  77. package/bundles/ragents.model-relay/ragents-bundle.json +4 -4
  78. package/bundles/ragents.model-relay/server/index.js +3 -2
  79. package/bundles/ragents.model-relay/server/index.js.map +2 -2
  80. package/bundles/ragents.orchestration/ragents-bundle.json +3 -3
  81. package/bundles/ragents.overseer/ragents-bundle.json +3 -3
  82. package/bundles/ragents.processes/ragents-bundle.json +3 -3
  83. package/bundles/ragents.product/ragents-bundle.json +3 -3
  84. package/bundles/ragents.profile-distribution/ragents-bundle.json +4 -4
  85. package/bundles/ragents.profile-distribution/server/index.js +1 -1
  86. package/bundles/ragents.profile-distribution/server/index.js.map +2 -2
  87. package/bundles/ragents.reference/ragents-bundle.json +3 -3
  88. package/bundles/ragents.todo/ragents-bundle.json +3 -3
  89. package/bundles/ragents.transcript/ragents-bundle.json +3 -3
  90. package/bundles/ragents.watch/ragents-bundle.json +3 -3
  91. package/bundles/ragents.workspace/ragents-bundle.json +11 -5
  92. package/bundles/ragents.workspace/server/index.js +101 -28
  93. package/bundles/ragents.workspace/server/index.js.map +3 -3
  94. package/bundles/ragents.workspace/web/classes.json +1 -1
  95. package/bundles/ragents.workspace/web/index.js +1 -1
  96. package/bundles/ragents.workspace/web/index.js.map +3 -3
  97. package/package.json +2 -2
  98. package/packages/agent/dist/core/agent-settings.d.ts +1 -7
  99. package/packages/agent/dist/core/compaction/compaction.d.ts +17 -13
  100. package/packages/agent/dist/core/model-runtime.d.ts +5 -4
  101. package/packages/agent/dist/core/provider-composer.d.ts +2 -1
  102. package/packages/agent/dist/core/tools/bash.d.ts +9 -3
  103. package/packages/agent/dist/index.d.ts +1 -1
  104. package/packages/agent/src/core/agent-settings.ts +1 -4
  105. package/packages/agent/src/core/compaction/compaction.ts +68 -30
  106. package/packages/agent/src/core/model-runtime.ts +12 -5
  107. package/packages/agent/src/core/provider-composer.ts +5 -0
  108. package/packages/agent/src/core/tools/bash.ts +36 -30
  109. package/packages/agent/src/index.ts +3 -0
  110. package/packages/ai/dist/types.d.ts +11 -0
  111. package/packages/ai/src/types.ts +12 -0
  112. package/packages/ragents/src/agents/plugins.ts +5 -0
  113. package/packages/ragents/src/domain/event-semantics.ts +3 -0
  114. package/packages/ragents/src/domain/event-validation.ts +15 -2
  115. package/packages/ragents/src/domain/events.ts +3 -0
  116. package/packages/ragents/src/domain/model.ts +2 -0
  117. package/packages/ragents/src/domain/projection.ts +1 -0
  118. package/packages/ragents/src/drivers/agent-runtime.ts +1 -1
  119. package/packages/ragents/src/drivers/agent-turn.ts +8 -6
  120. package/packages/ragents/src/index.ts +1 -0
  121. package/packages/ragents/src/plugin-host.ts +58 -10
  122. package/packages/ragents/src/plugin-types.ts +7 -2
  123. package/packages/ragents/src/runtime/decisions/inputs.ts +6 -2
  124. package/packages/ragents/src/runtime/journal-storage.ts +5 -4
  125. package/packages/workspace-executor/package.json +0 -1
  126. package/packages/workspace-executor/src/bash-launch.ts +56 -10
  127. package/packages/workspace-executor/src/context.ts +4 -0
  128. package/packages/workspace-executor/src/contributions.ts +150 -0
  129. package/packages/workspace-executor/src/executor.ts +1 -1
  130. package/packages/workspace-executor/src/index.ts +16 -19
  131. package/packages/workspace-executor/src/language-server/host.ts +3 -0
  132. package/packages/workspace-executor/src/language-server/module.ts +12 -2
  133. package/packages/workspace-executor/src/language-server/roots.ts +0 -5
  134. package/packages/workspace-executor/src/modules.ts +7 -6
  135. package/packages/workspace-executor/src/sandbox-tools.ts +3 -9
  136. package/packages/workspace-executor/src/shell-platform.ts +14 -3
  137. package/packages/workspace-executor/src/tools.ts +0 -3
  138. package/plugins/ragents.ask/ask-payload.ts +9 -0
  139. package/plugins/ragents.ask/server/ask-service.ts +53 -13
  140. package/plugins/ragents.ask/web/AskActionView.tsx +3 -2
  141. package/plugins/ragents.browser/executor/index.ts +5 -0
  142. package/{packages/workspace-executor/src/browser → plugins/ragents.browser/executor}/module.ts +25 -31
  143. package/{packages/workspace-executor/src/browser → plugins/ragents.browser/executor}/playwright.ts +9 -23
  144. package/plugins/ragents.browser/provision.ts +1 -1
  145. package/plugins/ragents.browser/server/browser.ts +3 -3
  146. package/plugins/ragents.browser/server/contract.ts +2 -2
  147. package/plugins/ragents.browser/server/index.ts +1 -1
  148. package/plugins/ragents.lsp-fsharp/executor.ts +80 -0
  149. package/plugins/ragents.lsp-fsharp/provision.ts +1 -1
  150. package/plugins/ragents.lsp-fsharp/server/index.ts +2 -2
  151. package/plugins/ragents.lsp-roslyn/executor.ts +64 -0
  152. package/plugins/ragents.lsp-roslyn/provision.ts +1 -1
  153. package/plugins/ragents.lsp-roslyn/server/index.ts +28 -5
  154. package/plugins/ragents.lsp-roslyn/server/solution-on-start.ts +18 -6
  155. package/plugins/ragents.lsp-typescript/executor.ts +50 -0
  156. package/plugins/ragents.lsp-typescript/server/index.ts +2 -2
  157. package/plugins/ragents.model-relay/server/config.ts +1 -1
  158. package/plugins/ragents.model-relay/server/relay.ts +4 -2
  159. package/plugins/ragents.profile-distribution/server/archive.ts +2 -1
  160. package/plugins/ragents.workspace/client/workspace-client.ts +111 -28
  161. package/plugins/ragents.workspace/contract.ts +33 -2
  162. package/plugins/ragents.workspace/server/binding.ts +10 -4
  163. package/plugins/ragents.workspace/server/clients.ts +56 -9
  164. package/plugins/ragents.workspace/server/config.ts +9 -0
  165. package/plugins/ragents.workspace/server/index.ts +13 -4
  166. package/plugins/ragents.workspace/server/runtime.ts +10 -0
  167. package/plugins/ragents.workspace/server/shell-platform.ts +6 -5
  168. package/plugins/ragents.workspace/web/WorkspaceBinding.tsx +1 -1
  169. package/ragents.config.core.ts +4 -1
  170. package/ragents.config.showcase.ts +4 -1
  171. package/scripts/agent/journal.ts +3 -1
  172. package/scripts/package/build-package.ts +3 -1
  173. package/scripts/package/publish-package.ts +4 -3
  174. package/scripts/provision/run-provision.ts +2 -2
  175. package/scripts/workspace-client/run-workspace-client.ts +7 -4
  176. package/apps/web/dist/help/screenshots/release-checklist-vscode.png +0 -0
  177. package/apps/web/dist/help/screenshots/release-checklist-web.png +0 -0
  178. package/bundles/ragents.ask/web/chunks/chunk-HGFDGTNC.js +0 -2
  179. package/bundles/ragents.ask/web/chunks/chunk-HGFDGTNC.js.map +0 -7
  180. package/bundles/ragents.browser/server/chunks/chunk-2GKLLCBE.js.map +0 -7
  181. package/packages/workspace-executor/src/language-server/adapters/fsharp.ts +0 -60
  182. package/packages/workspace-executor/src/language-server/adapters/index.ts +0 -7
  183. package/packages/workspace-executor/src/language-server/adapters/roslyn.ts +0 -56
  184. package/packages/workspace-executor/src/language-server/adapters/typescript.ts +0 -74
  185. package/packages/workspace-executor/src/language-server/solution.ts +0 -13
  186. /package/{packages/workspace-executor/src/browser → plugins/ragents.browser/executor}/contract.ts +0 -0
  187. /package/{packages/workspace-executor/src/browser → plugins/ragents.browser/executor}/pages.ts +0 -0
@@ -1,4 +1,4 @@
1
- import{a as M,I as H,u as Z,r as i,j as e,B as y,J as De,K as Ae,w as ze,l as Fe,m as Te,v as _e,k as Me,P as He,H as ce,L as Ue,q as K,s as de,i as Be,N as ue,O as re,T as Ve,V as $e,A as ie,Y as qe,Z as Ke,_ as Ze,$ as Ge,t as Je,a0 as We,e as Qe,a1 as Ye,a2 as Xe,y as et,z as tt,a3 as nt,a4 as st,a5 as rt,F as it,Q as ot,a6 as at,a7 as lt,G as ct}from"./mermaid-HWGCJPDP-kxkB991i.js";/**
1
+ import{a as M,I as H,u as Z,r as i,j as e,B as y,J as De,K as Ae,w as ze,l as Fe,m as Te,v as _e,k as Me,P as He,H as ce,L as Ue,q as K,s as de,i as Be,N as ue,O as re,T as Ve,V as $e,A as ie,Y as qe,Z as Ke,_ as Ze,$ as Ge,t as Je,a0 as We,e as Qe,a1 as Ye,a2 as Xe,y as et,z as tt,a3 as nt,a4 as st,a5 as rt,F as it,Q as ot,a6 as at,a7 as lt,G as ct}from"./mermaid-HWGCJPDP-DfsU5ofC.js";/**
2
2
  * @license lucide-react v1.46.0 - ISC
3
3
  *
4
4
  * This source code is licensed under the ISC license.
@@ -204,11 +204,14 @@ a checkout. <code>ragents.hostPath</code> remains an override pointing to a chec
204
204
  The status bar shows the number of connected servers and opens the start page when clicked. See
205
205
  the root <code>README.md</code> for details.</p>
206
206
  <p>Install the extension from the Marketplace as <code>purestate.ragents-vscode</code> using &quot;Extensions:
207
- Install Extension&quot; or <code>code --install-extension purestate.ragents-vscode</code>. To install a locally
208
- packaged file, run <code>pnpm package:vscode</code>, which builds
209
- <code>dist/ragents-vscode-&lt;version&gt;.vsix</code>, then use &quot;Extensions: Install from VSIX&quot; or
210
- <code>code --install-extension dist/ragents-vscode-&lt;version&gt;.vsix --force</code>. <code>scripts/vscode/install-local.sh</code>
211
- performs both steps, rebuilds the built-in plugins, and
207
+ Install Extension&quot; or <code>code --install-extension purestate.ragents-vscode</code>. The Marketplace
208
+ delivers the build for your platform, which carries ripgrep for the <code>bash</code> tool (see
209
+ <a href="guide-distributed.html#work-on-windows">Work on Windows</a> for the Windows bash). To install a locally
210
+ packaged file, run <code>pnpm package:vscode</code>, which builds the universal
211
+ <code>dist/ragents-vscode-&lt;version&gt;.vsix</code> and one <code>dist/ragents-vscode-&lt;platform&gt;-&lt;version&gt;.vsix</code> per
212
+ platform, such as <code>darwin-arm64</code>, then use &quot;Extensions: Install from VSIX&quot; or
213
+ <code>code --install-extension dist/ragents-vscode-darwin-arm64-&lt;version&gt;.vsix --force</code>. <code>scripts/vscode/install-local.sh</code>
214
+ performs both steps with the file for this machine, rebuilds the built-in plugins, and
212
215
  rebuilds the web interface if it no longer matches its sources, so that hosts from this checkout
213
216
  start again. The script then restarts manually launched
214
217
  servers (<code>scripts/start.sh</code>, identified by <code>RAGENTS_LAUNCH=start.sh</code> in their environment, with logs under
@@ -263,7 +266,12 @@ server has locked, for example because its journal uses an older format, shows a
263
266
  tooltip names the cause; it does not open, but the selection mode deletes it.</p>
264
267
  <p><strong>Server</strong> is the configuration page. You can add, edit, sign in, sign out, connect,
265
268
  disconnect, and remove servers with confirmation, then open <code>settings.json</code> from the link
266
- at the bottom.</p>
269
+ at the bottom. If a connected server does not accept this window&#39;s folders as a workstation, its
270
+ entry says &quot;Arbeitsplatz nicht angemeldet&quot; (workstation not registered) with the cause. When the
271
+ extension and the server carry different workspace executor versions, the cause names both and
272
+ what to update: the extension if it is older, the server if it is newer. The same applies when the
273
+ host the extension uses lacks a plugin bundle the server&#39;s executor carries, such as a language
274
+ server, or carries it in another version: the cause names the plugin and the host to update.</p>
267
275
  <p>Every status uses a colored icon and a tooltip with the same vocabulary everywhere. A run is
268
276
  &quot;läuft&quot; (running), &quot;wartet auf Eingabe&quot; (waiting for input, with the number of open inputs),
269
277
  &quot;ruht&quot; (idle), &quot;beendet&quot; (ended), &quot;fehlgeschlagen&quot; (failed), or &quot;abgebrochen&quot; (cancelled). A
@@ -84,11 +84,14 @@ The status bar shows the number of connected servers and opens the start page wh
84
84
  the root `README.md` for details.
85
85
 
86
86
  Install the extension from the Marketplace as `purestate.ragents-vscode` using "Extensions:
87
- Install Extension" or `code --install-extension purestate.ragents-vscode`. To install a locally
88
- packaged file, run `pnpm package:vscode`, which builds
89
- `dist/ragents-vscode-<version>.vsix`, then use "Extensions: Install from VSIX" or
90
- `code --install-extension dist/ragents-vscode-<version>.vsix --force`. `scripts/vscode/install-local.sh`
91
- performs both steps, rebuilds the built-in plugins, and
87
+ Install Extension" or `code --install-extension purestate.ragents-vscode`. The Marketplace
88
+ delivers the build for your platform, which carries ripgrep for the `bash` tool (see
89
+ [Work on Windows](guide-distributed.html#work-on-windows) for the Windows bash). To install a locally
90
+ packaged file, run `pnpm package:vscode`, which builds the universal
91
+ `dist/ragents-vscode-<version>.vsix` and one `dist/ragents-vscode-<platform>-<version>.vsix` per
92
+ platform, such as `darwin-arm64`, then use "Extensions: Install from VSIX" or
93
+ `code --install-extension dist/ragents-vscode-darwin-arm64-<version>.vsix --force`. `scripts/vscode/install-local.sh`
94
+ performs both steps with the file for this machine, rebuilds the built-in plugins, and
92
95
  rebuilds the web interface if it no longer matches its sources, so that hosts from this checkout
93
96
  start again. The script then restarts manually launched
94
97
  servers (`scripts/start.sh`, identified by `RAGENTS_LAUNCH=start.sh` in their environment, with logs under
@@ -150,7 +153,12 @@ tooltip names the cause; it does not open, but the selection mode deletes it.
150
153
 
151
154
  **Server** is the configuration page. You can add, edit, sign in, sign out, connect,
152
155
  disconnect, and remove servers with confirmation, then open `settings.json` from the link
153
- at the bottom.
156
+ at the bottom. If a connected server does not accept this window's folders as a workstation, its
157
+ entry says "Arbeitsplatz nicht angemeldet" (workstation not registered) with the cause. When the
158
+ extension and the server carry different workspace executor versions, the cause names both and
159
+ what to update: the extension if it is older, the server if it is newer. The same applies when the
160
+ host the extension uses lacks a plugin bundle the server's executor carries, such as a language
161
+ server, or carries it in another version: the cause names the plugin and the host to update.
154
162
 
155
163
  Every status uses a colored icon and a tooltip with the same vocabulary everywhere. A run is
156
164
  "läuft" (running), "wartet auf Eingabe" (waiting for input, with the number of open inputs),
@@ -287,9 +287,14 @@ After transfer, inspect the journal with <code>pnpm driver journal &lt;runId&gt;
287
287
  <li><strong>The VS Code extension for Windows</strong> brings its own bash. The Marketplace delivers a
288
288
  <code>win32-x64</code> or <code>win32-arm64</code> build that contains a slim bash with the GNU tools (coreutils,
289
289
  <code>grep</code>, <code>sed</code>, <code>awk</code>, <code>find</code>, <code>diff</code>, <code>patch</code>, <code>tar</code>, <code>unzip</code>, <code>cygpath</code> and more), taken from
290
- a fixed Git for Windows release. The <code>bash</code> tool uses only this bash, for the workspace and for
291
- the local host; an installed Git Bash or a <code>bash.exe</code> on <code>PATH</code> is never used. PowerShell and
292
- <code>cmd.exe</code> are not used either.</li>
290
+ a fixed Git for Windows release, plus <code>rg.exe</code> (ripgrep) from a fixed ripgrep release. The
291
+ <code>bash</code> tool uses only this bash, for the workspace and for the local host; an installed Git
292
+ Bash or a <code>bash.exe</code> on <code>PATH</code> is never used. PowerShell and <code>cmd.exe</code> are not used either.</li>
293
+ <li><strong>Code search</strong> runs through <code>rg</code>, which skips <code>node_modules</code>, <code>bin</code>, <code>obj</code> and everything else
294
+ <code>.gitignore</code> excludes. The extension builds for macOS and Linux carry <code>rg</code> as well and put it at
295
+ the front of the <code>bash</code> tool&#39;s <code>PATH</code>, on the workstation and for the local host. The system
296
+ prompt tells the model to search with <code>rg</code> only when the machine running <code>bash</code> has one;
297
+ otherwise it tells the model to exclude dependency and build folders from <code>grep -r</code>.</li>
293
298
  <li><strong>Git</strong> is your own <code>git.exe</code> on <code>PATH</code>, for example from Git for Windows. The bundled bash
294
299
  contains no git, so your login works as usual: Git Credential Manager, <code>~/.gitconfig</code> and
295
300
  <code>~/.ssh</code>. On your own machine the bash inherits your whole environment, except the variables of
@@ -297,7 +302,10 @@ VS Code itself and <code>BASH_ENV</code>/<code>ENV</code>.</li>
297
302
  <li><strong>Without the extension</strong> (<code>ragents start</code> or <code>ragents workspace-client</code> from the npm package)
298
303
  set <code>RAGENTS_BASH</code> to the <code>bash.exe</code> of such a bundle, for example
299
304
  <code>&lt;extension folder&gt;\dist\bash\win32-x64\usr\bin\bash.exe</code>. Without it every <code>bash</code> call fails
300
- and names what is missing.</li>
305
+ and names what is missing. <code>RAGENTS_RG</code> names an <code>rg</code> in the same way, for example
306
+ <code>&lt;extension folder&gt;\dist\rg\win32-x64\rg.exe</code>, on every platform; without it, an <code>rg</code> on
307
+ <code>PATH</code> is used if there is one. A <code>RAGENTS_RG</code> that points to a missing file stops the server
308
+ start or the workstation&#39;s registration.</li>
301
309
  <li><strong>Node.js</strong> is enough with <code>@schlenkr/ragents</code>. A checkout additionally needs <strong>pnpm</strong>, and
302
310
  <code>pnpm install</code>, <code>pnpm build:agent</code>, and <code>scripts/start.sh</code> need a bash of your own, such as
303
311
  Git Bash.</li>
@@ -191,9 +191,14 @@ The local host and workspace also run on Windows. Requirements are:
191
191
  - **The VS Code extension for Windows** brings its own bash. The Marketplace delivers a
192
192
  `win32-x64` or `win32-arm64` build that contains a slim bash with the GNU tools (coreutils,
193
193
  `grep`, `sed`, `awk`, `find`, `diff`, `patch`, `tar`, `unzip`, `cygpath` and more), taken from
194
- a fixed Git for Windows release. The `bash` tool uses only this bash, for the workspace and for
195
- the local host; an installed Git Bash or a `bash.exe` on `PATH` is never used. PowerShell and
196
- `cmd.exe` are not used either.
194
+ a fixed Git for Windows release, plus `rg.exe` (ripgrep) from a fixed ripgrep release. The
195
+ `bash` tool uses only this bash, for the workspace and for the local host; an installed Git
196
+ Bash or a `bash.exe` on `PATH` is never used. PowerShell and `cmd.exe` are not used either.
197
+ - **Code search** runs through `rg`, which skips `node_modules`, `bin`, `obj` and everything else
198
+ `.gitignore` excludes. The extension builds for macOS and Linux carry `rg` as well and put it at
199
+ the front of the `bash` tool's `PATH`, on the workstation and for the local host. The system
200
+ prompt tells the model to search with `rg` only when the machine running `bash` has one;
201
+ otherwise it tells the model to exclude dependency and build folders from `grep -r`.
197
202
  - **Git** is your own `git.exe` on `PATH`, for example from Git for Windows. The bundled bash
198
203
  contains no git, so your login works as usual: Git Credential Manager, `~/.gitconfig` and
199
204
  `~/.ssh`. On your own machine the bash inherits your whole environment, except the variables of
@@ -201,7 +206,10 @@ The local host and workspace also run on Windows. Requirements are:
201
206
  - **Without the extension** (`ragents start` or `ragents workspace-client` from the npm package)
202
207
  set `RAGENTS_BASH` to the `bash.exe` of such a bundle, for example
203
208
  `<extension folder>\dist\bash\win32-x64\usr\bin\bash.exe`. Without it every `bash` call fails
204
- and names what is missing.
209
+ and names what is missing. `RAGENTS_RG` names an `rg` in the same way, for example
210
+ `<extension folder>\dist\rg\win32-x64\rg.exe`, on every platform; without it, an `rg` on
211
+ `PATH` is used if there is one. A `RAGENTS_RG` that points to a missing file stops the server
212
+ start or the workstation's registration.
205
213
  - **Node.js** is enough with `@schlenkr/ragents`. A checkout additionally needs **pnpm**, and
206
214
  `pnpm install`, `pnpm build:agent`, and `scripts/start.sh` need a bash of your own, such as
207
215
  Git Bash.
@@ -156,15 +156,19 @@ that exact environment variable. Startup fails if it is missing. Existing enviro
156
156
  take precedence over profile values; no <code>.env</code> file is loaded. Startup reports a missing
157
157
  referenced variable as an error. Configured models and reasoning levels must be valid in the
158
158
  available model catalog.</p>
159
- <p>A profile can also name its models by alias: <code>MODEL_ALIASES</code> in the <code>host</code> section lists
160
- <code>alias=provider/model</code> or <code>alias=provider/model@thinking</code>, and <code>AGENT_PROVIDER: &quot;alias&quot;</code> makes the
161
- product use them. The interface, the chat, and the journal then show only the alias names.</p>
159
+ <p>A profile can also name its models by alias: <code>MODEL_ALIASES</code> in the <code>host</code> section lists objects
160
+ with <code>alias</code>, <code>model</code> as <code>provider/model</code>, an optional default <code>thinking</code> level, and the model&#39;s
161
+ <code>compaction</code> values: the context size in tokens at which an agent compacts (<code>threshold</code>), how much
162
+ recent context stays verbatim (<code>keepRecentTokens</code>), and the summary budget (<code>summaryTokens</code>).
163
+ <code>AGENT_PROVIDER: &quot;alias&quot;</code> makes the product use them. The interface, the chat, and the journal then
164
+ show only the alias names.</p>
162
165
  <p>Alternatively, a profile can obtain its models from another RAgents server running the
163
- <code>ragents.model-relay</code> plugin, which offers that server&#39;s <code>MODEL_ALIASES</code>: set
164
- <code>AGENT_PROVIDER: &quot;relay&quot;</code>, point <code>RELAY_URL</code> to that server, use <code>RELAY_TOKEN: env(&quot;...&quot;)</code> with a
165
- user&#39;s personal token there, and use relay aliases for every model key. Only the relay server can
166
- see which model is behind an alias. Its log at <code>plugins/ragents.model-relay/relay.log</code> records the
167
- user, alias, target, and token count for each request.</p>
166
+ <code>ragents.model-relay</code> plugin, which offers that server&#39;s <code>MODEL_ALIASES</code> with their compaction
167
+ values: set <code>AGENT_PROVIDER: &quot;relay&quot;</code>, point <code>RELAY_URL</code> to that server, use
168
+ <code>RELAY_TOKEN: env(&quot;...&quot;)</code> with a user&#39;s personal token there, and use relay aliases for every model
169
+ key. Only the relay server can see which model is behind an alias. Its log at
170
+ <code>plugins/ragents.model-relay/relay.log</code> records the user, alias, target, and token count for each
171
+ request.</p>
168
172
  <p>Then start the neutral profile:</p>
169
173
  <pre><code class="language-sh">scripts/start.sh core
170
174
  </code></pre>
@@ -35,16 +35,20 @@ take precedence over profile values; no `.env` file is loaded. Startup reports a
35
35
  referenced variable as an error. Configured models and reasoning levels must be valid in the
36
36
  available model catalog.
37
37
 
38
- A profile can also name its models by alias: `MODEL_ALIASES` in the `host` section lists
39
- `alias=provider/model` or `alias=provider/model@thinking`, and `AGENT_PROVIDER: "alias"` makes the
40
- product use them. The interface, the chat, and the journal then show only the alias names.
38
+ A profile can also name its models by alias: `MODEL_ALIASES` in the `host` section lists objects
39
+ with `alias`, `model` as `provider/model`, an optional default `thinking` level, and the model's
40
+ `compaction` values: the context size in tokens at which an agent compacts (`threshold`), how much
41
+ recent context stays verbatim (`keepRecentTokens`), and the summary budget (`summaryTokens`).
42
+ `AGENT_PROVIDER: "alias"` makes the product use them. The interface, the chat, and the journal then
43
+ show only the alias names.
41
44
 
42
45
  Alternatively, a profile can obtain its models from another RAgents server running the
43
- `ragents.model-relay` plugin, which offers that server's `MODEL_ALIASES`: set
44
- `AGENT_PROVIDER: "relay"`, point `RELAY_URL` to that server, use `RELAY_TOKEN: env("...")` with a
45
- user's personal token there, and use relay aliases for every model key. Only the relay server can
46
- see which model is behind an alias. Its log at `plugins/ragents.model-relay/relay.log` records the
47
- user, alias, target, and token count for each request.
46
+ `ragents.model-relay` plugin, which offers that server's `MODEL_ALIASES` with their compaction
47
+ values: set `AGENT_PROVIDER: "relay"`, point `RELAY_URL` to that server, use
48
+ `RELAY_TOKEN: env("...")` with a user's personal token there, and use relay aliases for every model
49
+ key. Only the relay server can see which model is behind an alias. Its log at
50
+ `plugins/ragents.model-relay/relay.log` records the user, alias, target, and token count for each
51
+ request.
48
52
 
49
53
  Then start the neutral profile:
50
54
 
@@ -312,6 +312,7 @@ the built-in plugins live under <code>plugins/&lt;id&gt;/</code>:</p>
312
312
  contract.ts import-free contract shared by both halves, when present
313
313
  prompt.hbs assets at the plugin root, alongside prompts/, skills/,
314
314
  run-scripts/, provision.ts
315
+ executor.ts contribution to the workspace executor, when present
315
316
  </code></pre>
316
317
  <p><code>server/index.ts</code> exports exactly one entry point:</p>
317
318
  <pre><code class="language-ts">export const plugin: PluginModule = {
@@ -379,7 +380,8 @@ loads plugin sources; it loads finished bundles, and the author builds them. The
379
380
  <code>@schlenkr/ragents</code> carries everything this needs, so an empty folder and the package are enough.</p>
380
381
  <p><strong>Source folder.</strong> One folder per plugin, named after its ID, such as <code>acme.tickets</code>. It holds
381
382
  <code>ragents-plugin.json</code>, <code>server/index.ts</code> exporting <code>plugin</code>, optionally <code>provision.ts</code> for tools the
382
- plugin installs, <code>web/index.tsx</code> exporting <code>webPlugin</code> when there is an interface, and assets such
383
+ plugin installs and <code>executor.ts</code> for work that runs on the machine of a workspace, such as a
384
+ language server, <code>web/index.tsx</code> exporting <code>webPlugin</code> when there is an interface, and assets such
383
385
  as <code>prompt.hbs</code>, <code>prompts/</code>, <code>skills/</code>, and <code>run-scripts/</code> at the root. <code>ragents-plugin.json</code>
384
386
  names the ID, the files other plugins may import (per half, as paths without extension), and
385
387
  additional assets that go into the bundle:</p>
@@ -422,7 +424,9 @@ so does a host with the same number that lacks one of the names, as an older hos
422
424
  changes only when the host API changes incompatibly, not with every host release.</p>
423
425
  <p><strong>Ship.</strong> A bundle is a plain folder without <code>node_modules</code> or native binaries and runs wherever a
424
426
  host offers the same host API with the names it uses. Native tools such as language servers come through the plugin&#39;s
425
- provisioning. To hand a profile together with its bundles to other machines, a server adds
427
+ provisioning. The contribution to the workspace executor becomes one self-contained file that
428
+ imports only Node modules, so every machine can load it, the VS Code extension included; a
429
+ workstation loads it from the bundles of its own host, in exactly the version the server uses. To hand a profile together with its bundles to other machines, a server adds
426
430
  <code>ragents.profile-distribution</code>; <code>ragents connect</code> fetches the profile and its bundles and starts
427
431
  them with the local host (<a href="guide-distributed.html">Distributed work</a>). The client
428
432
  profile names such bundles relative to itself (<code>./</code> or <code>../</code>); the client resolves an absolute or
@@ -174,6 +174,7 @@ plugins/ragents.actor-programs/
174
174
  contract.ts import-free contract shared by both halves, when present
175
175
  prompt.hbs assets at the plugin root, alongside prompts/, skills/,
176
176
  run-scripts/, provision.ts
177
+ executor.ts contribution to the workspace executor, when present
177
178
  ```
178
179
 
179
180
  `server/index.ts` exports exactly one entry point:
@@ -257,7 +258,8 @@ loads plugin sources; it loads finished bundles, and the author builds them. The
257
258
 
258
259
  **Source folder.** One folder per plugin, named after its ID, such as `acme.tickets`. It holds
259
260
  `ragents-plugin.json`, `server/index.ts` exporting `plugin`, optionally `provision.ts` for tools the
260
- plugin installs, `web/index.tsx` exporting `webPlugin` when there is an interface, and assets such
261
+ plugin installs and `executor.ts` for work that runs on the machine of a workspace, such as a
262
+ language server, `web/index.tsx` exporting `webPlugin` when there is an interface, and assets such
261
263
  as `prompt.hbs`, `prompts/`, `skills/`, and `run-scripts/` at the root. `ragents-plugin.json`
262
264
  names the ID, the files other plugins may import (per half, as paths without extension), and
263
265
  additional assets that go into the bundle:
@@ -310,7 +312,9 @@ changes only when the host API changes incompatibly, not with every host release
310
312
 
311
313
  **Ship.** A bundle is a plain folder without `node_modules` or native binaries and runs wherever a
312
314
  host offers the same host API with the names it uses. Native tools such as language servers come through the plugin's
313
- provisioning. To hand a profile together with its bundles to other machines, a server adds
315
+ provisioning. The contribution to the workspace executor becomes one self-contained file that
316
+ imports only Node modules, so every machine can load it, the VS Code extension included; a
317
+ workstation loads it from the bundles of its own host, in exactly the version the server uses. To hand a profile together with its bundles to other machines, a server adds
314
318
  `ragents.profile-distribution`; `ragents connect` fetches the profile and its bundles and starts
315
319
  them with the local host ([Distributed work](guide-distributed.html)). The client
316
320
  profile names such bundles relative to itself (`./` or `../`); the client resolves an absolute or
@@ -200,7 +200,8 @@ copy of the current model context, and a new turn does not mean the model starts
200
200
  conversation memory.</p>
201
201
  <p>When the context grows too large, the agent compacts it: older parts are replaced by a summary
202
202
  written by the model, and recent parts are kept. A compaction is recorded in the journal as well,
203
- and the chat shows a short system note.</p>
203
+ and the chat shows a short system note. When it starts, how much recent context stays verbatim,
204
+ and how long the summary may be are values of the model; a profile sets them for each model alias.</p>
204
205
  <h2 id="interrupting-a-turn-stopping-an-actor-stopping-a-run-and-shutting-down-the-server">Interrupting a turn, stopping an actor, stopping a run, and shutting down the server</h2>
205
206
  <p>All stop paths follow the same principle: block new work first, then cancel, wait for running
206
207
  work, and only then release resources. The exact boundary differs:</p>
@@ -84,7 +84,8 @@ conversation memory.
84
84
 
85
85
  When the context grows too large, the agent compacts it: older parts are replaced by a summary
86
86
  written by the model, and recent parts are kept. A compaction is recorded in the journal as well,
87
- and the chat shows a short system note.
87
+ and the chat shows a short system note. When it starts, how much recent context stays verbatim,
88
+ and how long the summary may be are values of the model; a profile sets them for each model alias.
88
89
 
89
90
  ## Interrupting a turn, stopping an actor, stopping a run, and shutting down the server
90
91