@rho-workspace/rho 0.5.3 → 0.5.4

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 (216) hide show
  1. package/README.md +24 -5
  2. package/dist/capabilities.d.ts +27 -0
  3. package/dist/capabilities.js +73 -1
  4. package/dist/cli.js +150 -25
  5. package/dist/contract.generated.d.ts +112 -12
  6. package/dist/contracts/owners.generated.js +103 -8
  7. package/dist/conversation-presentation.d.ts +3 -1
  8. package/dist/conversation-presentation.js +16 -6
  9. package/dist/conversations.d.ts +10 -6
  10. package/dist/conversations.js +17 -13
  11. package/dist/installs.d.ts +11 -0
  12. package/dist/installs.js +179 -0
  13. package/dist/project-notes.js +2 -0
  14. package/dist/protocol.js +7 -5
  15. package/dist/screen-check-skill.d.ts +2 -0
  16. package/dist/screen-check-skill.js +39 -0
  17. package/dist/server.d.ts +2 -0
  18. package/dist/server.js +50 -7
  19. package/dist/web/.vite/manifest.json +51 -51
  20. package/dist/web/assets/{choices-B-y2OYvE.js → choices-DU9kHlyQ.js} +1 -1
  21. package/dist/web/assets/{console-e1P5qYQ5.js → console-Dbdo-5oO.js} +1 -1
  22. package/dist/web/assets/{dist-Dd3iAGFy.js → dist-B2V0VDO0.js} +1 -1
  23. package/dist/web/assets/{dist-CH56yNDn.js → dist-BV3hWfn_.js} +1 -1
  24. package/dist/web/assets/{dist-CBM2oq6g.js → dist-CLNF2g-E.js} +1 -1
  25. package/dist/web/assets/{dist-DEorbOW0.js → dist-D25Vn17i.js} +1 -1
  26. package/dist/web/assets/{explore-in-muWXOGOY.js → explore-in-8Q5ftt-E.js} +1 -1
  27. package/dist/web/assets/{graph-CK-df5lh.js → graph-hS2kvHTI.js} +1 -1
  28. package/dist/web/assets/{index-BYuKpyoi.js → index-BHQIaDsx.js} +220 -121
  29. package/dist/web/assets/index-Cj1_iqyK.css +1 -0
  30. package/dist/web/assets/{notes-meaning-B3HFbh84.js → notes-meaning-DdPbtNzJ.js} +1 -1
  31. package/dist/web/assets/{overview-D1Ev2OC_.js → overview-BV6ZO5TO.js} +3 -3
  32. package/dist/web/assets/{preview-HbmQKUGY.js → preview-n5lOOdjN.js} +1 -1
  33. package/dist/web/assets/{review-BVh9jWMB.js → review-CmWou4Iv.js} +1 -1
  34. package/dist/web/assets/{skills-DPaEYkln.js → skills-Dy7n3L9d.js} +1 -1
  35. package/dist/web/assets/{skills-work-dvjfy_tu.js → skills-work-Cj0W6b-I.js} +1 -1
  36. package/dist/web/assets/{studio-process-BYm8mjRJ.js → studio-process-QOY_n2_8.js} +1 -1
  37. package/dist/web/assets/{timeline-events-CDZ7wiJX.js → timeline-events-DmX1BCh3.js} +1 -1
  38. package/dist/web/assets/{work-turns-BeCt303c.js → work-turns-Co0C71rJ.js} +1 -1
  39. package/dist/web/assets/{workspace-d5Hw_ClZ.js → workspace-BKFefRfJ.js} +2 -2
  40. package/dist/web/composition.json +73 -73
  41. package/dist/web/index.html +2 -2
  42. package/dist/web/renderer.json +1 -1
  43. package/docs/FRONTEND.md +30 -14
  44. package/docs/HEADLESS.md +59 -13
  45. package/example/pa14-qs/.rho/rho/conversations/c-67f77cfebaba2cea.json +1 -1
  46. package/example/pa14-qs/.rho/rho/conversations/c-91aa2e46b1ac1a6c.json +1 -1
  47. package/example/pa14-qs/.rho/rho/conversations/c-fa24dfd80dfe4bcb.json +1 -1
  48. package/node_modules/@hono/node-server/dist/index.js +11 -0
  49. package/node_modules/@hono/node-server/dist/index.mjs +11 -0
  50. package/node_modules/@hono/node-server/dist/listener.js +11 -0
  51. package/node_modules/@hono/node-server/dist/listener.mjs +11 -0
  52. package/node_modules/@hono/node-server/dist/request.js +11 -0
  53. package/node_modules/@hono/node-server/dist/request.mjs +11 -0
  54. package/node_modules/@hono/node-server/dist/server.js +11 -0
  55. package/node_modules/@hono/node-server/dist/server.mjs +11 -0
  56. package/node_modules/@hono/node-server/dist/vercel.js +11 -0
  57. package/node_modules/@hono/node-server/dist/vercel.mjs +11 -0
  58. package/node_modules/@hono/node-server/package.json +1 -1
  59. package/node_modules/@rho-workspace/plugin-agent/README.md +3 -1
  60. package/node_modules/@rho-workspace/plugin-agent/dist/acp-conversation.js +14 -3
  61. package/node_modules/@rho-workspace/plugin-agent/dist/conversation.d.ts +1 -0
  62. package/node_modules/@rho-workspace/plugin-agent/dist/conversation.js +1 -0
  63. package/node_modules/@rho-workspace/plugin-agent/dist/generic-acp.d.ts +11 -0
  64. package/node_modules/@rho-workspace/plugin-agent/dist/generic-acp.js +7 -0
  65. package/node_modules/@rho-workspace/plugin-agent/dist/mcp.js +5 -1
  66. package/node_modules/@rho-workspace/plugin-agent/package.json +1 -1
  67. package/node_modules/@rho-workspace/plugin-annotations/package.json +1 -1
  68. package/node_modules/@rho-workspace/plugin-documents/README.md +4 -0
  69. package/node_modules/@rho-workspace/plugin-documents/dist/index.d.ts +3 -0
  70. package/node_modules/@rho-workspace/plugin-documents/dist/index.js +1 -1
  71. package/node_modules/@rho-workspace/plugin-documents/package.json +1 -1
  72. package/node_modules/@rho-workspace/plugin-kernel/README.md +71 -10
  73. package/node_modules/@rho-workspace/plugin-kernel/dist/code.d.ts +2 -0
  74. package/node_modules/@rho-workspace/plugin-kernel/dist/code.js +4 -1
  75. package/node_modules/@rho-workspace/plugin-kernel/dist/contract.js +5 -0
  76. package/node_modules/@rho-workspace/plugin-kernel/dist/index.d.ts +7 -0
  77. package/node_modules/@rho-workspace/plugin-kernel/dist/index.js +55 -8
  78. package/node_modules/@rho-workspace/plugin-kernel/dist/lineage.d.ts +9 -6
  79. package/node_modules/@rho-workspace/plugin-kernel/dist/lineage.js +18 -41
  80. package/node_modules/@rho-workspace/plugin-kernel/dist/operations.js +5 -2
  81. package/node_modules/@rho-workspace/plugin-kernel/dist/script-flow.d.ts +39 -0
  82. package/node_modules/@rho-workspace/plugin-kernel/dist/script-flow.js +661 -0
  83. package/node_modules/@rho-workspace/plugin-kernel/dist/ui-base.d.ts +3 -0
  84. package/node_modules/@rho-workspace/plugin-kernel/dist/ui-base.js +10 -0
  85. package/node_modules/@rho-workspace/plugin-kernel/dist/ui-flow.d.ts +38 -4
  86. package/node_modules/@rho-workspace/plugin-kernel/dist/ui-flow.js +194 -97
  87. package/node_modules/@rho-workspace/plugin-kernel/dist/ui-notebook-work.js +1 -2
  88. package/node_modules/@rho-workspace/plugin-kernel/dist/ui-notebook.d.ts +10 -2
  89. package/node_modules/@rho-workspace/plugin-kernel/dist/ui-notebook.js +79 -18
  90. package/node_modules/@rho-workspace/plugin-kernel/dist/ui-styles.js +115 -45
  91. package/node_modules/@rho-workspace/plugin-kernel/dist/ui.d.ts +1 -1
  92. package/node_modules/@rho-workspace/plugin-kernel/dist/ui.js +1 -1
  93. package/node_modules/@rho-workspace/plugin-kernel/dist/value-graph.d.ts +63 -0
  94. package/node_modules/@rho-workspace/plugin-kernel/dist/value-graph.js +344 -0
  95. package/node_modules/@rho-workspace/plugin-kernel/package.json +1 -1
  96. package/node_modules/@rho-workspace/plugin-kernel/runners/runner.R +6 -3
  97. package/node_modules/@rho-workspace/plugin-kernel/runners/runner.py +6 -3
  98. package/node_modules/express-rate-limit/dist/index.cjs +1 -1
  99. package/node_modules/express-rate-limit/dist/index.mjs +1 -1
  100. package/node_modules/express-rate-limit/package.json +1 -1
  101. package/node_modules/ip-address/dist/ipv6.js +1 -1
  102. package/node_modules/ip-address/package.json +1 -1
  103. package/node_modules/playwright-core/LICENSE +202 -0
  104. package/node_modules/playwright-core/NOTICE +5 -0
  105. package/node_modules/playwright-core/ThirdPartyNotices.txt +13 -0
  106. package/node_modules/playwright-core/bin/install_media_pack.ps1 +5 -0
  107. package/node_modules/playwright-core/bin/install_webkit_wsl.ps1 +33 -0
  108. package/node_modules/playwright-core/bin/reinstall_chrome_beta_linux.sh +42 -0
  109. package/node_modules/playwright-core/bin/reinstall_chrome_beta_mac.sh +13 -0
  110. package/node_modules/playwright-core/bin/reinstall_chrome_beta_win.ps1 +24 -0
  111. package/node_modules/playwright-core/bin/reinstall_chrome_stable_linux.sh +42 -0
  112. package/node_modules/playwright-core/bin/reinstall_chrome_stable_mac.sh +12 -0
  113. package/node_modules/playwright-core/bin/reinstall_chrome_stable_win.ps1 +24 -0
  114. package/node_modules/playwright-core/bin/reinstall_msedge_beta_linux.sh +48 -0
  115. package/node_modules/playwright-core/bin/reinstall_msedge_beta_mac.sh +11 -0
  116. package/node_modules/playwright-core/bin/reinstall_msedge_beta_win.ps1 +23 -0
  117. package/node_modules/playwright-core/bin/reinstall_msedge_dev_linux.sh +48 -0
  118. package/node_modules/playwright-core/bin/reinstall_msedge_dev_mac.sh +11 -0
  119. package/node_modules/playwright-core/bin/reinstall_msedge_dev_win.ps1 +23 -0
  120. package/node_modules/playwright-core/bin/reinstall_msedge_stable_linux.sh +48 -0
  121. package/node_modules/playwright-core/bin/reinstall_msedge_stable_mac.sh +11 -0
  122. package/node_modules/playwright-core/bin/reinstall_msedge_stable_win.ps1 +24 -0
  123. package/node_modules/playwright-core/browsers.json +52 -0
  124. package/node_modules/playwright-core/cli.js +22 -0
  125. package/node_modules/playwright-core/index.js +17 -0
  126. package/node_modules/playwright-core/index.mjs +28 -0
  127. package/node_modules/playwright-core/lib/bootstrap.js +149 -0
  128. package/node_modules/playwright-core/lib/coreBundle.js +78041 -0
  129. package/node_modules/playwright-core/lib/entry/cliDaemon.js +5 -0
  130. package/node_modules/playwright-core/lib/entry/dashboardApp.js +3 -0
  131. package/node_modules/playwright-core/lib/entry/mcp.js +10 -0
  132. package/node_modules/playwright-core/lib/entry/oopBrowserDownload.js +3 -0
  133. package/node_modules/playwright-core/lib/package.js +50 -0
  134. package/node_modules/playwright-core/lib/server/chromium/appIcon.png +0 -0
  135. package/node_modules/playwright-core/lib/server/electron/loader.js +123 -0
  136. package/node_modules/playwright-core/lib/serverRegistry.js +1939 -0
  137. package/node_modules/playwright-core/lib/serverRegistry.js.LICENSE +65 -0
  138. package/node_modules/playwright-core/lib/tools/cli-client/channelSessions.js +141 -0
  139. package/node_modules/playwright-core/lib/tools/cli-client/cli.js +7 -0
  140. package/node_modules/playwright-core/lib/tools/cli-client/help.json +808 -0
  141. package/node_modules/playwright-core/lib/tools/cli-client/minimist.js +128 -0
  142. package/node_modules/playwright-core/lib/tools/cli-client/output.js +352 -0
  143. package/node_modules/playwright-core/lib/tools/cli-client/program.js +422 -0
  144. package/node_modules/playwright-core/lib/tools/cli-client/registry.js +180 -0
  145. package/node_modules/playwright-core/lib/tools/cli-client/session.js +261 -0
  146. package/node_modules/playwright-core/lib/tools/dashboard/appIcon.png +0 -0
  147. package/node_modules/playwright-core/lib/tools/utils/extension.js +112 -0
  148. package/node_modules/playwright-core/lib/tools/utils/socketConnection.js +108 -0
  149. package/node_modules/playwright-core/lib/utilsBundle.js +86078 -0
  150. package/node_modules/playwright-core/lib/utilsBundle.js.LICENSE +1890 -0
  151. package/node_modules/playwright-core/lib/vite/dashboard/assets/codeMirrorModule--QdMvsKi.css +1 -0
  152. package/node_modules/playwright-core/lib/vite/dashboard/assets/codeMirrorModule-CQ8RZGBm.js +32 -0
  153. package/node_modules/playwright-core/lib/vite/dashboard/assets/codicon-DCmgc-ay.ttf +0 -0
  154. package/node_modules/playwright-core/lib/vite/dashboard/assets/firefox-1bWoP6pv.svg +1 -0
  155. package/node_modules/playwright-core/lib/vite/dashboard/assets/firefox-beta-k3eOH_eK.svg +1 -0
  156. package/node_modules/playwright-core/lib/vite/dashboard/assets/firefox-nightly-Cp5nfeDT.svg +1 -0
  157. package/node_modules/playwright-core/lib/vite/dashboard/assets/index-AwgwcYie.css +1 -0
  158. package/node_modules/playwright-core/lib/vite/dashboard/assets/index-hRvO4yU2.js +12 -0
  159. package/node_modules/playwright-core/lib/vite/dashboard/assets/safari-na3_-uQk.svg +1 -0
  160. package/node_modules/playwright-core/lib/vite/dashboard/index.html +29 -0
  161. package/node_modules/playwright-core/lib/vite/dashboard/playwright-logo.svg +24 -0
  162. package/node_modules/playwright-core/lib/vite/htmlReport/index.html +16 -0
  163. package/node_modules/playwright-core/lib/vite/htmlReport/report.css +2 -0
  164. package/node_modules/playwright-core/lib/vite/htmlReport/report.js +32 -0
  165. package/node_modules/playwright-core/lib/vite/recorder/assets/codeMirrorModule--QdMvsKi.css +1 -0
  166. package/node_modules/playwright-core/lib/vite/recorder/assets/codeMirrorModule-DK72OMRi.js +32 -0
  167. package/node_modules/playwright-core/lib/vite/recorder/assets/codicon-DCmgc-ay.ttf +0 -0
  168. package/node_modules/playwright-core/lib/vite/recorder/assets/index-BZpYJZ-P.css +1 -0
  169. package/node_modules/playwright-core/lib/vite/recorder/assets/index-Cn0mmDuv.js +129 -0
  170. package/node_modules/playwright-core/lib/vite/recorder/index.html +29 -0
  171. package/node_modules/playwright-core/lib/vite/recorder/playwright-logo.svg +9 -0
  172. package/node_modules/playwright-core/lib/vite/traceViewer/assets/codeMirrorModule-BEB2e8M3.js +32 -0
  173. package/node_modules/playwright-core/lib/vite/traceViewer/assets/defaultSettingsView-D-g2vrvf.js +184 -0
  174. package/node_modules/playwright-core/lib/vite/traceViewer/assets/urlMatch-L3liM589.js +1 -0
  175. package/node_modules/playwright-core/lib/vite/traceViewer/assets/xtermModule-B794rD2Z.js +7 -0
  176. package/node_modules/playwright-core/lib/vite/traceViewer/codeMirrorModule.-QdMvsKi.css +1 -0
  177. package/node_modules/playwright-core/lib/vite/traceViewer/codicon.DCmgc-ay.ttf +0 -0
  178. package/node_modules/playwright-core/lib/vite/traceViewer/defaultSettingsView.C8BeHuxd.css +1 -0
  179. package/node_modules/playwright-core/lib/vite/traceViewer/index.B_TqY17P.css +1 -0
  180. package/node_modules/playwright-core/lib/vite/traceViewer/index.html +44 -0
  181. package/node_modules/playwright-core/lib/vite/traceViewer/index.oNry3Hjv.js +1 -0
  182. package/node_modules/playwright-core/lib/vite/traceViewer/manifest.webmanifest +16 -0
  183. package/node_modules/playwright-core/lib/vite/traceViewer/playwright-logo.svg +9 -0
  184. package/node_modules/playwright-core/lib/vite/traceViewer/snapshot.B_Jk1wbt.js +1 -0
  185. package/node_modules/playwright-core/lib/vite/traceViewer/snapshot.html +10 -0
  186. package/node_modules/playwright-core/lib/vite/traceViewer/sw.bundle.js +4 -0
  187. package/node_modules/playwright-core/lib/vite/traceViewer/uiMode.CYwC_gH1.js +5 -0
  188. package/node_modules/playwright-core/lib/vite/traceViewer/uiMode.CyMfwkXJ.css +1 -0
  189. package/node_modules/playwright-core/lib/vite/traceViewer/uiMode.html +18 -0
  190. package/node_modules/playwright-core/lib/vite/traceViewer/xtermModule.kHJ-D0s7.css +1 -0
  191. package/node_modules/playwright-core/lib/webp_codec.LICENSE +173 -0
  192. package/node_modules/playwright-core/lib/webp_codec.wasm +0 -0
  193. package/node_modules/playwright-core/lib/xdg-open +1267 -0
  194. package/node_modules/playwright-core/package.json +34 -0
  195. package/package.json +10 -6
  196. package/protocol/index.json +17 -17
  197. package/protocol/operations/conversation.settings.check.json +147 -4
  198. package/protocol/operations/conversation.settings.read.json +145 -3
  199. package/protocol/operations/conversation.settings.update.json +166 -4
  200. package/protocol/operations/conversation.start.json +2 -1
  201. package/protocol/operations/kernel.interrupt.json +20 -0
  202. package/protocol/operations/kernel.read.json +30 -0
  203. package/protocol/operations/kernel.run.json +36 -1
  204. package/protocol/operations/kernel.stop.json +10 -0
  205. package/scripts/browser-checks.mjs +53 -0
  206. package/scripts/screen-check.mjs +193 -0
  207. package/vendor/composition.json +102 -102
  208. package/vendor/rho-workspace-plugin-agent-0.4.28.tgz +0 -0
  209. package/vendor/rho-workspace-plugin-annotations-0.5.2.tgz +0 -0
  210. package/vendor/rho-workspace-plugin-documents-0.4.11.tgz +0 -0
  211. package/vendor/rho-workspace-plugin-kernel-0.5.5.tgz +0 -0
  212. package/web/theme.css +17 -2
  213. package/dist/web/assets/index-DBd77u4a.css +0 -1
  214. package/vendor/rho-workspace-plugin-agent-0.4.27.tgz +0 -0
  215. package/vendor/rho-workspace-plugin-documents-0.4.10.tgz +0 -0
  216. package/vendor/rho-workspace-plugin-kernel-0.5.2.tgz +0 -0
@@ -5690,13 +5690,13 @@ export interface ConversationSendOutput {
5690
5690
  }
5691
5691
  export interface ConversationSettingsCheckInput {
5692
5692
  projectId: string;
5693
- backend: 'claude-acp' | 'codex-acp';
5693
+ backend: 'claude-acp' | 'codex-acp' | 'acp';
5694
5694
  }
5695
5695
  export interface ConversationSettingsCheckOutput {
5696
5696
  version: number;
5697
5697
  updatedAt: string | null;
5698
- backend: ('claude-acp' | 'codex-acp') | null;
5699
- serviceBackend: 'claude-acp' | 'codex-acp' | 'claude-cli';
5698
+ backend: ('claude-acp' | 'codex-acp' | 'acp') | null;
5699
+ serviceBackend: 'claude-acp' | 'codex-acp' | 'claude-cli' | 'acp';
5700
5700
  choices: {
5701
5701
  'claude-acp'?: {
5702
5702
  [k: string]: string | boolean;
@@ -5704,6 +5704,9 @@ export interface ConversationSettingsCheckOutput {
5704
5704
  'codex-acp'?: {
5705
5705
  [k: string]: string | boolean;
5706
5706
  };
5707
+ acp?: {
5708
+ [k: string]: string | boolean;
5709
+ };
5707
5710
  };
5708
5711
  offered: {
5709
5712
  'claude-acp'?: {
@@ -5758,8 +5761,34 @@ export interface ConversationSettingsCheckOutput {
5758
5761
  }[];
5759
5762
  omitted: number;
5760
5763
  };
5764
+ acp?: {
5765
+ at: string;
5766
+ source: 'check' | 'conversation';
5767
+ adapter: {
5768
+ name: string;
5769
+ version?: string;
5770
+ } | null;
5771
+ options: {
5772
+ category?: string;
5773
+ current: string | boolean;
5774
+ description?: string;
5775
+ id: string;
5776
+ name: string;
5777
+ type: 'select' | 'boolean';
5778
+ /**
5779
+ * @maxItems 256
5780
+ */
5781
+ values?: {
5782
+ description?: string;
5783
+ group?: string;
5784
+ name: string;
5785
+ value: string;
5786
+ }[];
5787
+ }[];
5788
+ omitted: number;
5789
+ };
5761
5790
  };
5762
- checking: ('claude-acp' | 'codex-acp')[];
5791
+ checking: ('claude-acp' | 'codex-acp' | 'acp')[];
5763
5792
  describe?: {
5764
5793
  enabled: boolean;
5765
5794
  };
@@ -5770,8 +5799,8 @@ export interface ConversationSettingsReadInput {
5770
5799
  export interface ConversationSettingsReadOutput {
5771
5800
  version: number;
5772
5801
  updatedAt: string | null;
5773
- backend: ('claude-acp' | 'codex-acp') | null;
5774
- serviceBackend: 'claude-acp' | 'codex-acp' | 'claude-cli';
5802
+ backend: ('claude-acp' | 'codex-acp' | 'acp') | null;
5803
+ serviceBackend: 'claude-acp' | 'codex-acp' | 'claude-cli' | 'acp';
5775
5804
  choices: {
5776
5805
  'claude-acp'?: {
5777
5806
  [k: string]: string | boolean;
@@ -5779,6 +5808,9 @@ export interface ConversationSettingsReadOutput {
5779
5808
  'codex-acp'?: {
5780
5809
  [k: string]: string | boolean;
5781
5810
  };
5811
+ acp?: {
5812
+ [k: string]: string | boolean;
5813
+ };
5782
5814
  };
5783
5815
  offered: {
5784
5816
  'claude-acp'?: {
@@ -5833,8 +5865,34 @@ export interface ConversationSettingsReadOutput {
5833
5865
  }[];
5834
5866
  omitted: number;
5835
5867
  };
5868
+ acp?: {
5869
+ at: string;
5870
+ source: 'check' | 'conversation';
5871
+ adapter: {
5872
+ name: string;
5873
+ version?: string;
5874
+ } | null;
5875
+ options: {
5876
+ category?: string;
5877
+ current: string | boolean;
5878
+ description?: string;
5879
+ id: string;
5880
+ name: string;
5881
+ type: 'select' | 'boolean';
5882
+ /**
5883
+ * @maxItems 256
5884
+ */
5885
+ values?: {
5886
+ description?: string;
5887
+ group?: string;
5888
+ name: string;
5889
+ value: string;
5890
+ }[];
5891
+ }[];
5892
+ omitted: number;
5893
+ };
5836
5894
  };
5837
- checking: ('claude-acp' | 'codex-acp')[];
5895
+ checking: ('claude-acp' | 'codex-acp' | 'acp')[];
5838
5896
  describe?: {
5839
5897
  enabled: boolean;
5840
5898
  };
@@ -5842,7 +5900,7 @@ export interface ConversationSettingsReadOutput {
5842
5900
  export interface ConversationSettingsUpdateInput {
5843
5901
  projectId: string;
5844
5902
  expectedVersion: number;
5845
- backend?: ('claude-acp' | 'codex-acp') | null;
5903
+ backend?: ('claude-acp' | 'codex-acp' | 'acp') | null;
5846
5904
  choices?: {
5847
5905
  'claude-acp'?: {
5848
5906
  [k: string]: string | boolean;
@@ -5850,6 +5908,9 @@ export interface ConversationSettingsUpdateInput {
5850
5908
  'codex-acp'?: {
5851
5909
  [k: string]: string | boolean;
5852
5910
  };
5911
+ acp?: {
5912
+ [k: string]: string | boolean;
5913
+ };
5853
5914
  };
5854
5915
  describe?: {
5855
5916
  enabled: boolean;
@@ -5858,8 +5919,8 @@ export interface ConversationSettingsUpdateInput {
5858
5919
  export interface ConversationSettingsUpdateOutput {
5859
5920
  version: number;
5860
5921
  updatedAt: string | null;
5861
- backend: ('claude-acp' | 'codex-acp') | null;
5862
- serviceBackend: 'claude-acp' | 'codex-acp' | 'claude-cli';
5922
+ backend: ('claude-acp' | 'codex-acp' | 'acp') | null;
5923
+ serviceBackend: 'claude-acp' | 'codex-acp' | 'claude-cli' | 'acp';
5863
5924
  choices: {
5864
5925
  'claude-acp'?: {
5865
5926
  [k: string]: string | boolean;
@@ -5867,6 +5928,9 @@ export interface ConversationSettingsUpdateOutput {
5867
5928
  'codex-acp'?: {
5868
5929
  [k: string]: string | boolean;
5869
5930
  };
5931
+ acp?: {
5932
+ [k: string]: string | boolean;
5933
+ };
5870
5934
  };
5871
5935
  offered: {
5872
5936
  'claude-acp'?: {
@@ -5921,8 +5985,34 @@ export interface ConversationSettingsUpdateOutput {
5921
5985
  }[];
5922
5986
  omitted: number;
5923
5987
  };
5988
+ acp?: {
5989
+ at: string;
5990
+ source: 'check' | 'conversation';
5991
+ adapter: {
5992
+ name: string;
5993
+ version?: string;
5994
+ } | null;
5995
+ options: {
5996
+ category?: string;
5997
+ current: string | boolean;
5998
+ description?: string;
5999
+ id: string;
6000
+ name: string;
6001
+ type: 'select' | 'boolean';
6002
+ /**
6003
+ * @maxItems 256
6004
+ */
6005
+ values?: {
6006
+ description?: string;
6007
+ group?: string;
6008
+ name: string;
6009
+ value: string;
6010
+ }[];
6011
+ }[];
6012
+ omitted: number;
6013
+ };
5924
6014
  };
5925
- checking: ('claude-acp' | 'codex-acp')[];
6015
+ checking: ('claude-acp' | 'codex-acp' | 'acp')[];
5926
6016
  describe?: {
5927
6017
  enabled: boolean;
5928
6018
  };
@@ -5931,7 +6021,7 @@ export interface ConversationStartInput {
5931
6021
  projectId: string;
5932
6022
  changeId: string;
5933
6023
  text: string;
5934
- backend?: 'claude-acp' | 'codex-acp';
6024
+ backend?: 'claude-acp' | 'codex-acp' | 'acp';
5935
6025
  config?: {
5936
6026
  [k: string]: string | boolean;
5937
6027
  };
@@ -7742,6 +7832,7 @@ export interface KernelInterruptOutput {
7742
7832
  width?: number;
7743
7833
  }[];
7744
7834
  problem: string | null;
7835
+ program?: string | null;
7745
7836
  purpose: string | null;
7746
7837
  queuedAt: string;
7747
7838
  removed?: string[];
@@ -7749,6 +7840,7 @@ export interface KernelInterruptOutput {
7749
7840
  startedAt: string | null;
7750
7841
  state: 'queued' | 'running' | 'done' | 'error' | 'interrupted' | 'not-run' | 'unknown';
7751
7842
  used?: string[];
7843
+ version?: string | null;
7752
7844
  };
7753
7845
  }
7754
7846
  export interface KernelPlaceCheckInput {
@@ -7952,6 +8044,7 @@ export interface KernelReadOutput {
7952
8044
  width?: number;
7953
8045
  }[];
7954
8046
  problem: string | null;
8047
+ program?: string | null;
7955
8048
  purpose: string | null;
7956
8049
  queuedAt: string;
7957
8050
  removed?: string[];
@@ -7959,6 +8052,7 @@ export interface KernelReadOutput {
7959
8052
  startedAt: string | null;
7960
8053
  state: 'queued' | 'running' | 'done' | 'error' | 'interrupted' | 'not-run' | 'unknown';
7961
8054
  used?: string[];
8055
+ version?: string | null;
7962
8056
  }[];
7963
8057
  omitted: number;
7964
8058
  sessions: {
@@ -7975,6 +8069,7 @@ export interface KernelReadOutput {
7975
8069
  placeId: string;
7976
8070
  } | null;
7977
8071
  problem: string | null;
8072
+ program?: string | null;
7978
8073
  sessionId: string;
7979
8074
  startedAt: string;
7980
8075
  startedBy: string;
@@ -7999,6 +8094,7 @@ export interface KernelRunInput {
7999
8094
  projectId: string;
8000
8095
  changeId: string;
8001
8096
  code: string;
8097
+ interpreter?: string;
8002
8098
  language: 'r' | 'python';
8003
8099
  place?: string;
8004
8100
  purpose?: string;
@@ -8033,6 +8129,7 @@ export interface KernelRunOutput {
8033
8129
  width?: number;
8034
8130
  }[];
8035
8131
  problem: string | null;
8132
+ program?: string | null;
8036
8133
  purpose: string | null;
8037
8134
  queuedAt: string;
8038
8135
  removed?: string[];
@@ -8040,6 +8137,7 @@ export interface KernelRunOutput {
8040
8137
  startedAt: string | null;
8041
8138
  state: 'queued' | 'running' | 'done' | 'error' | 'interrupted' | 'not-run' | 'unknown';
8042
8139
  used?: string[];
8140
+ version?: string | null;
8043
8141
  };
8044
8142
  session: {
8045
8143
  cells: number;
@@ -8055,6 +8153,7 @@ export interface KernelRunOutput {
8055
8153
  placeId: string;
8056
8154
  } | null;
8057
8155
  problem: string | null;
8156
+ program?: string | null;
8058
8157
  sessionId: string;
8059
8158
  startedAt: string;
8060
8159
  startedBy: string;
@@ -8131,6 +8230,7 @@ export interface KernelStopOutput {
8131
8230
  placeId: string;
8132
8231
  } | null;
8133
8232
  problem: string | null;
8233
+ program?: string | null;
8134
8234
  sessionId: string;
8135
8235
  startedAt: string;
8136
8236
  startedBy: string;
@@ -19944,6 +19944,16 @@ export const ownerContracts = {
19944
19944
  }
19945
19945
  ]
19946
19946
  },
19947
+ "program": {
19948
+ "anyOf": [
19949
+ {
19950
+ "type": "string"
19951
+ },
19952
+ {
19953
+ "type": "null"
19954
+ }
19955
+ ]
19956
+ },
19947
19957
  "purpose": {
19948
19958
  "anyOf": [
19949
19959
  {
@@ -19997,6 +20007,16 @@ export const ownerContracts = {
19997
20007
  "type": "string"
19998
20008
  },
19999
20009
  "type": "array"
20010
+ },
20011
+ "version": {
20012
+ "anyOf": [
20013
+ {
20014
+ "type": "string"
20015
+ },
20016
+ {
20017
+ "type": "null"
20018
+ }
20019
+ ]
20000
20020
  }
20001
20021
  },
20002
20022
  "required": [
@@ -21186,6 +21206,16 @@ export const ownerContracts = {
21186
21206
  }
21187
21207
  ]
21188
21208
  },
21209
+ "program": {
21210
+ "anyOf": [
21211
+ {
21212
+ "type": "string"
21213
+ },
21214
+ {
21215
+ "type": "null"
21216
+ }
21217
+ ]
21218
+ },
21189
21219
  "purpose": {
21190
21220
  "anyOf": [
21191
21221
  {
@@ -21239,6 +21269,16 @@ export const ownerContracts = {
21239
21269
  "type": "string"
21240
21270
  },
21241
21271
  "type": "array"
21272
+ },
21273
+ "version": {
21274
+ "anyOf": [
21275
+ {
21276
+ "type": "string"
21277
+ },
21278
+ {
21279
+ "type": "null"
21280
+ }
21281
+ ]
21242
21282
  }
21243
21283
  },
21244
21284
  "required": [
@@ -21375,6 +21415,16 @@ export const ownerContracts = {
21375
21415
  }
21376
21416
  ]
21377
21417
  },
21418
+ "program": {
21419
+ "anyOf": [
21420
+ {
21421
+ "type": "string"
21422
+ },
21423
+ {
21424
+ "type": "null"
21425
+ }
21426
+ ]
21427
+ },
21378
21428
  "sessionId": {
21379
21429
  "pattern": "^s-[a-f0-9]{16}$",
21380
21430
  "type": "string"
@@ -21524,6 +21574,11 @@ export const ownerContracts = {
21524
21574
  "minLength": 1,
21525
21575
  "type": "string"
21526
21576
  },
21577
+ "interpreter": {
21578
+ "maxLength": 1024,
21579
+ "minLength": 1,
21580
+ "type": "string"
21581
+ },
21527
21582
  "language": {
21528
21583
  "enum": [
21529
21584
  "r",
@@ -21703,6 +21758,16 @@ export const ownerContracts = {
21703
21758
  }
21704
21759
  ]
21705
21760
  },
21761
+ "program": {
21762
+ "anyOf": [
21763
+ {
21764
+ "type": "string"
21765
+ },
21766
+ {
21767
+ "type": "null"
21768
+ }
21769
+ ]
21770
+ },
21706
21771
  "purpose": {
21707
21772
  "anyOf": [
21708
21773
  {
@@ -21756,6 +21821,16 @@ export const ownerContracts = {
21756
21821
  "type": "string"
21757
21822
  },
21758
21823
  "type": "array"
21824
+ },
21825
+ "version": {
21826
+ "anyOf": [
21827
+ {
21828
+ "type": "string"
21829
+ },
21830
+ {
21831
+ "type": "null"
21832
+ }
21833
+ ]
21759
21834
  }
21760
21835
  },
21761
21836
  "required": [
@@ -21885,6 +21960,16 @@ export const ownerContracts = {
21885
21960
  }
21886
21961
  ]
21887
21962
  },
21963
+ "program": {
21964
+ "anyOf": [
21965
+ {
21966
+ "type": "string"
21967
+ },
21968
+ {
21969
+ "type": "null"
21970
+ }
21971
+ ]
21972
+ },
21888
21973
  "sessionId": {
21889
21974
  "pattern": "^s-[a-f0-9]{16}$",
21890
21975
  "type": "string"
@@ -22333,6 +22418,16 @@ export const ownerContracts = {
22333
22418
  }
22334
22419
  ]
22335
22420
  },
22421
+ "program": {
22422
+ "anyOf": [
22423
+ {
22424
+ "type": "string"
22425
+ },
22426
+ {
22427
+ "type": "null"
22428
+ }
22429
+ ]
22430
+ },
22336
22431
  "sessionId": {
22337
22432
  "pattern": "^s-[a-f0-9]{16}$",
22338
22433
  "type": "string"
@@ -24679,7 +24774,7 @@ export const ownerContracts = {
24679
24774
  "provenance": {
24680
24775
  "documents": {
24681
24776
  "package": "@rho-workspace/plugin-documents",
24682
- "packageVersion": "0.4.10",
24777
+ "packageVersion": "0.4.11",
24683
24778
  "entry": "./operations",
24684
24779
  "entryPath": "@rho-workspace/plugin-documents/dist/operations.js",
24685
24780
  "entrySha256": "a9b90047c1684ebd8369d899f86604c40a9cbe1beae37759042d22c090dae449",
@@ -24754,7 +24849,7 @@ export const ownerContracts = {
24754
24849
  },
24755
24850
  "agent": {
24756
24851
  "package": "@rho-workspace/plugin-agent",
24757
- "packageVersion": "0.4.27",
24852
+ "packageVersion": "0.4.28",
24758
24853
  "entry": "./operations",
24759
24854
  "entryPath": "@rho-workspace/plugin-agent/dist/operations.js",
24760
24855
  "entrySha256": "08bb1c852cb89a17a2e307831ed2df5d6d16cbccaaf2971ec251bb9a1a34261f",
@@ -24764,7 +24859,7 @@ export const ownerContracts = {
24764
24859
  },
24765
24860
  "agent-feedback": {
24766
24861
  "package": "@rho-workspace/plugin-agent",
24767
- "packageVersion": "0.4.27",
24862
+ "packageVersion": "0.4.28",
24768
24863
  "entry": "./feedback-contract",
24769
24864
  "entryPath": "@rho-workspace/plugin-agent/dist/feedback-contract.js",
24770
24865
  "entrySha256": "ecb1561d92b5953d2b786d29cfb57f6f8085d214dc1dec76f6e7bd7a5257cb75",
@@ -24774,7 +24869,7 @@ export const ownerContracts = {
24774
24869
  },
24775
24870
  "agent-native": {
24776
24871
  "package": "@rho-workspace/plugin-agent",
24777
- "packageVersion": "0.4.27",
24872
+ "packageVersion": "0.4.28",
24778
24873
  "entry": "./contract",
24779
24874
  "entryPath": "@rho-workspace/plugin-agent/dist/contract.js",
24780
24875
  "entrySha256": "9e926081cb755a98d2b00d2a8488d8f4c6d25b3d5f1ec526d334ade633fe8a65",
@@ -24784,7 +24879,7 @@ export const ownerContracts = {
24784
24879
  },
24785
24880
  "agent-session": {
24786
24881
  "package": "@rho-workspace/plugin-agent",
24787
- "packageVersion": "0.4.27",
24882
+ "packageVersion": "0.4.28",
24788
24883
  "entry": "./session-contract",
24789
24884
  "entryPath": "@rho-workspace/plugin-agent/dist/session-contract.js",
24790
24885
  "entrySha256": "bb5b118f965e208617781af3e8ad6b6739869bcc19f0092eab14468824693123",
@@ -24816,12 +24911,12 @@ export const ownerContracts = {
24816
24911
  },
24817
24912
  "kernel": {
24818
24913
  "package": "@rho-workspace/plugin-kernel",
24819
- "packageVersion": "0.5.2",
24914
+ "packageVersion": "0.5.5",
24820
24915
  "entry": "./operations",
24821
24916
  "entryPath": "@rho-workspace/plugin-kernel/dist/operations.js",
24822
- "entrySha256": "112433cedbbea15d69b2547690c790902e41d3fc95020e73714de90207fdf9e1",
24917
+ "entrySha256": "d984240d0953961897503d15419347712e5f80e23a3386074ff461e8655e7a46",
24823
24918
  "exports": {
24824
- "operationContracts": "fa78820498bf291d0e59a0aa1d0d0ef997add03c5cfec9f7288e737d1ed086f4"
24919
+ "operationContracts": "738c966d85f5bcf6d65e313dad3221bac8974f430c86f46e119d67777ef7c788"
24825
24920
  }
24826
24921
  },
24827
24922
  "skills": {
@@ -1,4 +1,5 @@
1
1
  import type { RhoOutput } from './contract.generated.js';
2
+ import { type Installed } from './installs.js';
2
3
  export declare function agentTurnLimit(turn: {
3
4
  state: string;
4
5
  problem?: string | null;
@@ -13,7 +14,7 @@ export type ConversationStep = ConversationTurn['steps'][number];
13
14
  export type SessionObservation = NonNullable<ConversationRead['observation']>;
14
15
  export type ActivityOutcome = NonNullable<ConversationStep['outcome']> | 'failed';
15
16
  export type AgentAction = 'read' | 'edit' | 'write' | 'delete' | 'move' | 'search' | 'execute' | 'fetch' | 'project' | 'agents' | 'plan' | 'other';
16
- export type TargetKind = 'path' | 'command' | 'query' | 'operation' | 'text' | null;
17
+ export type TargetKind = 'path' | 'command' | 'query' | 'operation' | 'packages' | 'text' | null;
17
18
  export interface Activity {
18
19
  key: string;
19
20
  step: ConversationStep;
@@ -24,6 +25,7 @@ export interface Activity {
24
25
  title: string | null;
25
26
  location: string | null;
26
27
  outcome: ActivityOutcome;
28
+ installed?: Installed;
27
29
  }
28
30
  export type Block = {
29
31
  kind: 'text';
@@ -1,3 +1,4 @@
1
+ import { installText, readInstall } from './installs.js';
1
2
  // Only an explicit Agent limit report qualifies; an unknown outcome never does.
2
3
  export function agentTurnLimit(turn) {
3
4
  return turn.state === 'failed' && (turn.result?.kind === 'error_max_turns' || turn.result?.reason === 'max_turn_requests' || /^(?:Internal error: )?Reached maximum number of turns \(\d+\)\.?$/i.test(turn.problem ?? ''));
@@ -181,6 +182,10 @@ export function toolActivity(step, location, root, key) {
181
182
  targetKind = detail || location ? 'path' : 'text';
182
183
  }
183
184
  else if (action === 'execute') {
185
+ // A command that installs packages reads as what it installed; its command stays in the details.
186
+ const installed = detail ? readInstall(detail, step.output?.text) : null;
187
+ if (installed)
188
+ return { key: key ?? step.id ?? tool + '-' + step.at, step, action, verb: outcome === 'returned' ? 'Installed' : outcome === 'requested' ? 'Installing' : 'Tried to install', target: installText(installed), targetKind: 'packages', installed, title, location, outcome };
184
189
  target = detail ? displayCommand(detail) : (title && title.toLowerCase() !== tool.toLowerCase() ? title : null);
185
190
  targetKind = detail ? 'command' : 'text';
186
191
  }
@@ -199,17 +204,22 @@ export function toolActivity(step, location, root, key) {
199
204
  return { key: key ?? step.id ?? tool + '-' + step.at, step, action, verb, target, targetKind, title, location, outcome };
200
205
  }
201
206
  // Files are counted once however often the Agent touched them: nine edits of one script
202
- // are "Edited 1 file". Other actions count each time they happened.
207
+ // are "Edited 1 file". Other actions count each time they happened. Installs are named by
208
+ // their packages, "Installed pandas, statsmodels", and are not counted as commands.
203
209
  const onFiles = new Set(['read', 'edit', 'write', 'delete', 'move']);
204
210
  export function activitySummary(activities) {
205
211
  const seen = new Map();
206
212
  activities.forEach((activity, i) => {
207
- const file = onFiles.has(activity.action) ? activity.location ?? activity.step.detail ?? activity.target : null;
208
- const named = seen.get(activity.action) ?? new Set();
209
- named.add(file ?? '#' + i);
210
- seen.set(activity.action, named);
213
+ const group = activity.installed ? activity.verb : activity.action;
214
+ const file = activity.installed ? activity.installed.packages.map(p => p.name).join('\n') || 'packages from ' + activity.installed.from
215
+ : onFiles.has(activity.action) ? activity.location ?? activity.step.detail ?? activity.target : null;
216
+ const named = seen.get(group) ?? new Set();
217
+ for (const name of activity.installed ? file.split('\n') : [file ?? '#' + i])
218
+ named.add(name);
219
+ seen.set(group, named);
211
220
  });
212
- const parts = [...seen].map(([action, named]) => summaries[action][named.size === 1 ? 0 : 1].replace('{n}', String(named.size)));
221
+ const listed = (names) => names.length > 3 ? names.slice(0, 3).join(', ') + ` and ${names.length - 3} more` : names.join(', ');
222
+ const parts = [...seen].map(([group, named]) => group in summaries ? summaries[group][named.size === 1 ? 0 : 1].replace('{n}', String(named.size)) : group + ' ' + listed([...named]));
213
223
  const count = (outcome) => activities.filter(a => a.outcome === outcome).length;
214
224
  const failed = count('failed'), refused = count('rejected'), unknown = count('unknown');
215
225
  if (failed)
@@ -41,7 +41,11 @@ interface Permission extends AgentPermission {
41
41
  }
42
42
  export interface ConversationConfig {
43
43
  settingsFile?: string;
44
- backend?: 'claude-acp' | 'codex-acp' | 'claude-cli';
44
+ backend?: 'claude-acp' | 'codex-acp' | 'claude-cli' | 'acp';
45
+ acpCommand?: {
46
+ file: string;
47
+ args: string[];
48
+ };
45
49
  codex?: string;
46
50
  codexAcp?: Omit<CodexAcpOptions, 'cwd' | 'mcpServers' | 'limits' | 'sessionId' | 'codex' | 'observation' | 'observe'>;
47
51
  claudeAcp?: Omit<ClaudeAcpOptions, 'cwd' | 'mcpServers' | 'limits' | 'sessionId' | 'claude' | 'observation' | 'observe'>;
@@ -125,7 +129,7 @@ interface FileChange {
125
129
  modifiedAt: string | null;
126
130
  bytes: number | null;
127
131
  }
128
- type Backend = 'claude-acp' | 'codex-acp';
132
+ type Backend = 'claude-acp' | 'codex-acp' | 'acp';
129
133
  type Choices = Record<string, string | boolean>;
130
134
  interface Offered {
131
135
  at: string;
@@ -406,7 +410,7 @@ export declare class Conversations {
406
410
  private sessionObservation;
407
411
  work(project: Project, limit?: number): Promise<{
408
412
  sessions: {
409
- backend: "claude-acp" | "codex-acp" | "claude-cli";
413
+ backend: "acp" | "claude-acp" | "codex-acp" | "claude-cli";
410
414
  sessionId: string | null;
411
415
  observation: SessionObservation | null;
412
416
  state: string;
@@ -574,7 +578,7 @@ export declare class Conversations {
574
578
  version: number;
575
579
  updatedAt: string | null;
576
580
  backend: Backend | null;
577
- serviceBackend: "claude-acp" | "codex-acp" | "claude-cli";
581
+ serviceBackend: "acp" | "claude-acp" | "codex-acp" | "claude-cli";
578
582
  choices: Partial<Record<Backend, Choices>>;
579
583
  offered: Partial<Record<Backend, Offered>>;
580
584
  checking: Backend[];
@@ -593,7 +597,7 @@ export declare class Conversations {
593
597
  version: number;
594
598
  updatedAt: string | null;
595
599
  backend: Backend | null;
596
- serviceBackend: "claude-acp" | "codex-acp" | "claude-cli";
600
+ serviceBackend: "acp" | "claude-acp" | "codex-acp" | "claude-cli";
597
601
  choices: Partial<Record<Backend, Choices>>;
598
602
  offered: Partial<Record<Backend, Offered>>;
599
603
  checking: Backend[];
@@ -607,7 +611,7 @@ export declare class Conversations {
607
611
  version: number;
608
612
  updatedAt: string | null;
609
613
  backend: Backend | null;
610
- serviceBackend: "claude-acp" | "codex-acp" | "claude-cli";
614
+ serviceBackend: "acp" | "claude-acp" | "codex-acp" | "claude-cli";
611
615
  choices: Partial<Record<Backend, Choices>>;
612
616
  offered: Partial<Record<Backend, Offered>>;
613
617
  checking: Backend[];