@rho-workspace/rho 0.5.3 → 0.5.5

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 (277) hide show
  1. package/README.md +24 -5
  2. package/dist/browser-access.js +3 -2
  3. package/dist/capabilities.d.ts +29 -2
  4. package/dist/capabilities.js +79 -2
  5. package/dist/cli.js +237 -99
  6. package/dist/contract.generated.d.ts +441 -16
  7. package/dist/contract.generated.js +1 -1
  8. package/dist/contracts/owners.generated.js +459 -10
  9. package/dist/conversation-presentation.d.ts +3 -1
  10. package/dist/conversation-presentation.js +16 -6
  11. package/dist/conversations.d.ts +10 -6
  12. package/dist/conversations.js +17 -13
  13. package/dist/discovery.d.ts +1 -0
  14. package/dist/discovery.js +3 -3
  15. package/dist/extension-contract.d.ts +99 -0
  16. package/dist/extension-contract.js +52 -0
  17. package/dist/extension-directory.d.ts +9 -0
  18. package/dist/extension-directory.js +11 -0
  19. package/dist/extension-worker.d.ts +1 -0
  20. package/dist/extension-worker.js +36 -0
  21. package/dist/extensions.d.ts +157 -0
  22. package/dist/extensions.js +349 -0
  23. package/dist/installs.d.ts +11 -0
  24. package/dist/installs.js +179 -0
  25. package/dist/plugin-cli.d.ts +1 -0
  26. package/dist/plugin-cli.js +139 -0
  27. package/dist/plugin-inventory.json +18 -0
  28. package/dist/plugins.d.ts +3 -3
  29. package/dist/project-notes.js +2 -0
  30. package/dist/project-work.d.ts +3 -1
  31. package/dist/project-work.js +15 -2
  32. package/dist/protocol.d.ts +7 -0
  33. package/dist/protocol.js +11 -7
  34. package/dist/screen-check-skill.d.ts +2 -0
  35. package/dist/screen-check-skill.js +39 -0
  36. package/dist/server.d.ts +6 -1
  37. package/dist/server.js +105 -15
  38. package/dist/web/.vite/manifest.json +65 -65
  39. package/dist/web/assets/{canvas-BXhC8RDZ.js → canvas-D8rDdfDz.js} +1 -1
  40. package/dist/web/assets/choices-b0XhrGQV.js +1 -0
  41. package/dist/web/assets/{console-e1P5qYQ5.js → console-BSjLGe0T.js} +1 -1
  42. package/dist/web/assets/{dist-Dd3iAGFy.js → dist-Buk0lwzI.js} +2 -2
  43. package/dist/web/assets/dist-Cw8hRIlT.js +1 -0
  44. package/dist/web/assets/dist-Tzoe_zm-.js +3 -0
  45. package/dist/web/assets/{dist-DEorbOW0.js → dist-foH9IKc6.js} +1 -1
  46. package/dist/web/assets/explore-in-BVUy3ZW_.js +1 -0
  47. package/dist/web/assets/graph-1OdIJ9l7.js +2 -0
  48. package/dist/web/assets/index-CsC3sTRq.css +1 -0
  49. package/dist/web/assets/{index-BYuKpyoi.js → index-CxmItXqa.js} +220 -121
  50. package/dist/web/assets/{notes-meaning-B3HFbh84.js → notes-meaning-pVbbQUGP.js} +1 -1
  51. package/dist/web/assets/overview-B9UtVJ32.js +6 -0
  52. package/dist/web/assets/preview-CksD_5KS.js +1 -0
  53. package/dist/web/assets/{review-BVh9jWMB.js → review-CMxQlQ-C.js} +1 -1
  54. package/dist/web/assets/{skills-DPaEYkln.js → skills-BFNSyrnD.js} +1 -1
  55. package/dist/web/assets/{skills-work-dvjfy_tu.js → skills-work-BGPSnF_I.js} +1 -1
  56. package/dist/web/assets/{studio-process-BYm8mjRJ.js → studio-process-CsRoTHOh.js} +2 -2
  57. package/dist/web/assets/{timeline-events-CDZ7wiJX.js → timeline-events-BbuuFWHV.js} +1 -1
  58. package/dist/web/assets/{work-turns-BeCt303c.js → work-turns-BvJlIMmA.js} +1 -1
  59. package/dist/web/assets/workspace-CWlkjLNx.js +5 -0
  60. package/dist/web/composition.json +80 -80
  61. package/dist/web/index.html +3 -3
  62. package/dist/web/renderer.json +1 -1
  63. package/dist/web-assets.d.ts +2 -1
  64. package/dist/web-assets.js +3 -2
  65. package/dist/work-contract.js +2 -2
  66. package/docs/FRONTEND.md +30 -14
  67. package/docs/HEADLESS.md +60 -14
  68. package/docs/PLUGIN-AUTHORING.md +4 -0
  69. package/docs/THIRD-PARTY-PLUGINS.md +190 -0
  70. package/example/pa14-qs/.rho/rho/conversations/c-67f77cfebaba2cea.json +1 -1
  71. package/example/pa14-qs/.rho/rho/conversations/c-91aa2e46b1ac1a6c.json +1 -1
  72. package/example/pa14-qs/.rho/rho/conversations/c-fa24dfd80dfe4bcb.json +1 -1
  73. package/node_modules/@hono/node-server/dist/index.js +11 -0
  74. package/node_modules/@hono/node-server/dist/index.mjs +11 -0
  75. package/node_modules/@hono/node-server/dist/listener.js +11 -0
  76. package/node_modules/@hono/node-server/dist/listener.mjs +11 -0
  77. package/node_modules/@hono/node-server/dist/request.js +11 -0
  78. package/node_modules/@hono/node-server/dist/request.mjs +11 -0
  79. package/node_modules/@hono/node-server/dist/server.js +11 -0
  80. package/node_modules/@hono/node-server/dist/server.mjs +11 -0
  81. package/node_modules/@hono/node-server/dist/vercel.js +11 -0
  82. package/node_modules/@hono/node-server/dist/vercel.mjs +11 -0
  83. package/node_modules/@hono/node-server/package.json +1 -1
  84. package/node_modules/@rho-workspace/plugin-agent/README.md +42 -1
  85. package/node_modules/@rho-workspace/plugin-agent/dist/acp-conversation.js +14 -3
  86. package/node_modules/@rho-workspace/plugin-agent/dist/activity-normalize.d.ts +1 -0
  87. package/node_modules/@rho-workspace/plugin-agent/dist/activity-normalize.js +2 -2
  88. package/node_modules/@rho-workspace/plugin-agent/dist/conversation.d.ts +1 -0
  89. package/node_modules/@rho-workspace/plugin-agent/dist/conversation.js +1 -0
  90. package/node_modules/@rho-workspace/plugin-agent/dist/dsh-session.d.ts +6 -0
  91. package/node_modules/@rho-workspace/plugin-agent/dist/dsh-session.js +174 -0
  92. package/node_modules/@rho-workspace/plugin-agent/dist/external-session-contract.d.ts +82 -0
  93. package/node_modules/@rho-workspace/plugin-agent/dist/external-session-contract.js +15 -0
  94. package/node_modules/@rho-workspace/plugin-agent/dist/external-session.d.ts +73 -0
  95. package/node_modules/@rho-workspace/plugin-agent/dist/external-session.js +190 -0
  96. package/node_modules/@rho-workspace/plugin-agent/dist/generic-acp.d.ts +11 -0
  97. package/node_modules/@rho-workspace/plugin-agent/dist/generic-acp.js +7 -0
  98. package/node_modules/@rho-workspace/plugin-agent/dist/index.d.ts +373 -0
  99. package/node_modules/@rho-workspace/plugin-agent/dist/index.js +1 -0
  100. package/node_modules/@rho-workspace/plugin-agent/dist/mcp.js +5 -1
  101. package/node_modules/@rho-workspace/plugin-agent/dist/operations.d.ts +33 -0
  102. package/node_modules/@rho-workspace/plugin-agent/dist/operations.js +3 -0
  103. package/node_modules/@rho-workspace/plugin-agent/dist/presentation.d.ts +14 -0
  104. package/node_modules/@rho-workspace/plugin-agent/dist/presentation.js +2 -0
  105. package/node_modules/@rho-workspace/plugin-agent/dist/ui-external-session.d.ts +15 -0
  106. package/node_modules/@rho-workspace/plugin-agent/dist/ui-external-session.js +37 -0
  107. package/node_modules/@rho-workspace/plugin-agent/package.json +5 -1
  108. package/node_modules/@rho-workspace/plugin-annotations/package.json +1 -1
  109. package/node_modules/@rho-workspace/plugin-documents/README.md +4 -0
  110. package/node_modules/@rho-workspace/plugin-documents/dist/index.d.ts +3 -0
  111. package/node_modules/@rho-workspace/plugin-documents/dist/index.js +1 -1
  112. package/node_modules/@rho-workspace/plugin-documents/package.json +1 -1
  113. package/node_modules/@rho-workspace/plugin-kernel/README.md +71 -10
  114. package/node_modules/@rho-workspace/plugin-kernel/dist/code.d.ts +2 -0
  115. package/node_modules/@rho-workspace/plugin-kernel/dist/code.js +4 -1
  116. package/node_modules/@rho-workspace/plugin-kernel/dist/contract.js +5 -0
  117. package/node_modules/@rho-workspace/plugin-kernel/dist/index.d.ts +7 -0
  118. package/node_modules/@rho-workspace/plugin-kernel/dist/index.js +55 -8
  119. package/node_modules/@rho-workspace/plugin-kernel/dist/lineage.d.ts +9 -6
  120. package/node_modules/@rho-workspace/plugin-kernel/dist/lineage.js +18 -41
  121. package/node_modules/@rho-workspace/plugin-kernel/dist/operations.js +5 -2
  122. package/node_modules/@rho-workspace/plugin-kernel/dist/script-flow.d.ts +39 -0
  123. package/node_modules/@rho-workspace/plugin-kernel/dist/script-flow.js +661 -0
  124. package/node_modules/@rho-workspace/plugin-kernel/dist/ui-base.d.ts +3 -0
  125. package/node_modules/@rho-workspace/plugin-kernel/dist/ui-base.js +10 -0
  126. package/node_modules/@rho-workspace/plugin-kernel/dist/ui-flow.d.ts +38 -4
  127. package/node_modules/@rho-workspace/plugin-kernel/dist/ui-flow.js +194 -97
  128. package/node_modules/@rho-workspace/plugin-kernel/dist/ui-notebook-work.js +1 -2
  129. package/node_modules/@rho-workspace/plugin-kernel/dist/ui-notebook.d.ts +10 -2
  130. package/node_modules/@rho-workspace/plugin-kernel/dist/ui-notebook.js +79 -18
  131. package/node_modules/@rho-workspace/plugin-kernel/dist/ui-styles.js +115 -45
  132. package/node_modules/@rho-workspace/plugin-kernel/dist/ui.d.ts +1 -1
  133. package/node_modules/@rho-workspace/plugin-kernel/dist/ui.js +1 -1
  134. package/node_modules/@rho-workspace/plugin-kernel/dist/value-graph.d.ts +63 -0
  135. package/node_modules/@rho-workspace/plugin-kernel/dist/value-graph.js +344 -0
  136. package/node_modules/@rho-workspace/plugin-kernel/package.json +1 -1
  137. package/node_modules/@rho-workspace/plugin-kernel/runners/runner.R +6 -3
  138. package/node_modules/@rho-workspace/plugin-kernel/runners/runner.py +6 -3
  139. package/node_modules/express-rate-limit/dist/index.cjs +1 -1
  140. package/node_modules/express-rate-limit/dist/index.mjs +1 -1
  141. package/node_modules/express-rate-limit/package.json +1 -1
  142. package/node_modules/ip-address/dist/ipv6.js +1 -1
  143. package/node_modules/ip-address/package.json +1 -1
  144. package/node_modules/playwright-core/LICENSE +202 -0
  145. package/node_modules/playwright-core/NOTICE +5 -0
  146. package/node_modules/playwright-core/ThirdPartyNotices.txt +13 -0
  147. package/node_modules/playwright-core/bin/install_media_pack.ps1 +5 -0
  148. package/node_modules/playwright-core/bin/install_webkit_wsl.ps1 +33 -0
  149. package/node_modules/playwright-core/bin/reinstall_chrome_beta_linux.sh +42 -0
  150. package/node_modules/playwright-core/bin/reinstall_chrome_beta_mac.sh +13 -0
  151. package/node_modules/playwright-core/bin/reinstall_chrome_beta_win.ps1 +24 -0
  152. package/node_modules/playwright-core/bin/reinstall_chrome_stable_linux.sh +42 -0
  153. package/node_modules/playwright-core/bin/reinstall_chrome_stable_mac.sh +12 -0
  154. package/node_modules/playwright-core/bin/reinstall_chrome_stable_win.ps1 +24 -0
  155. package/node_modules/playwright-core/bin/reinstall_msedge_beta_linux.sh +48 -0
  156. package/node_modules/playwright-core/bin/reinstall_msedge_beta_mac.sh +11 -0
  157. package/node_modules/playwright-core/bin/reinstall_msedge_beta_win.ps1 +23 -0
  158. package/node_modules/playwright-core/bin/reinstall_msedge_dev_linux.sh +48 -0
  159. package/node_modules/playwright-core/bin/reinstall_msedge_dev_mac.sh +11 -0
  160. package/node_modules/playwright-core/bin/reinstall_msedge_dev_win.ps1 +23 -0
  161. package/node_modules/playwright-core/bin/reinstall_msedge_stable_linux.sh +48 -0
  162. package/node_modules/playwright-core/bin/reinstall_msedge_stable_mac.sh +11 -0
  163. package/node_modules/playwright-core/bin/reinstall_msedge_stable_win.ps1 +24 -0
  164. package/node_modules/playwright-core/browsers.json +52 -0
  165. package/node_modules/playwright-core/cli.js +22 -0
  166. package/node_modules/playwright-core/index.js +17 -0
  167. package/node_modules/playwright-core/index.mjs +28 -0
  168. package/node_modules/playwright-core/lib/bootstrap.js +149 -0
  169. package/node_modules/playwright-core/lib/coreBundle.js +78041 -0
  170. package/node_modules/playwright-core/lib/entry/cliDaemon.js +5 -0
  171. package/node_modules/playwright-core/lib/entry/dashboardApp.js +3 -0
  172. package/node_modules/playwright-core/lib/entry/mcp.js +10 -0
  173. package/node_modules/playwright-core/lib/entry/oopBrowserDownload.js +3 -0
  174. package/node_modules/playwright-core/lib/package.js +50 -0
  175. package/node_modules/playwright-core/lib/server/chromium/appIcon.png +0 -0
  176. package/node_modules/playwright-core/lib/server/electron/loader.js +123 -0
  177. package/node_modules/playwright-core/lib/serverRegistry.js +1939 -0
  178. package/node_modules/playwright-core/lib/serverRegistry.js.LICENSE +65 -0
  179. package/node_modules/playwright-core/lib/tools/cli-client/channelSessions.js +141 -0
  180. package/node_modules/playwright-core/lib/tools/cli-client/cli.js +7 -0
  181. package/node_modules/playwright-core/lib/tools/cli-client/help.json +808 -0
  182. package/node_modules/playwright-core/lib/tools/cli-client/minimist.js +128 -0
  183. package/node_modules/playwright-core/lib/tools/cli-client/output.js +352 -0
  184. package/node_modules/playwright-core/lib/tools/cli-client/program.js +422 -0
  185. package/node_modules/playwright-core/lib/tools/cli-client/registry.js +180 -0
  186. package/node_modules/playwright-core/lib/tools/cli-client/session.js +261 -0
  187. package/node_modules/playwright-core/lib/tools/dashboard/appIcon.png +0 -0
  188. package/node_modules/playwright-core/lib/tools/utils/extension.js +112 -0
  189. package/node_modules/playwright-core/lib/tools/utils/socketConnection.js +108 -0
  190. package/node_modules/playwright-core/lib/utilsBundle.js +86078 -0
  191. package/node_modules/playwright-core/lib/utilsBundle.js.LICENSE +1890 -0
  192. package/node_modules/playwright-core/lib/vite/dashboard/assets/codeMirrorModule--QdMvsKi.css +1 -0
  193. package/node_modules/playwright-core/lib/vite/dashboard/assets/codeMirrorModule-CQ8RZGBm.js +32 -0
  194. package/node_modules/playwright-core/lib/vite/dashboard/assets/codicon-DCmgc-ay.ttf +0 -0
  195. package/node_modules/playwright-core/lib/vite/dashboard/assets/firefox-1bWoP6pv.svg +1 -0
  196. package/node_modules/playwright-core/lib/vite/dashboard/assets/firefox-beta-k3eOH_eK.svg +1 -0
  197. package/node_modules/playwright-core/lib/vite/dashboard/assets/firefox-nightly-Cp5nfeDT.svg +1 -0
  198. package/node_modules/playwright-core/lib/vite/dashboard/assets/index-AwgwcYie.css +1 -0
  199. package/node_modules/playwright-core/lib/vite/dashboard/assets/index-hRvO4yU2.js +12 -0
  200. package/node_modules/playwright-core/lib/vite/dashboard/assets/safari-na3_-uQk.svg +1 -0
  201. package/node_modules/playwright-core/lib/vite/dashboard/index.html +29 -0
  202. package/node_modules/playwright-core/lib/vite/dashboard/playwright-logo.svg +24 -0
  203. package/node_modules/playwright-core/lib/vite/htmlReport/index.html +16 -0
  204. package/node_modules/playwright-core/lib/vite/htmlReport/report.css +2 -0
  205. package/node_modules/playwright-core/lib/vite/htmlReport/report.js +32 -0
  206. package/node_modules/playwright-core/lib/vite/recorder/assets/codeMirrorModule--QdMvsKi.css +1 -0
  207. package/node_modules/playwright-core/lib/vite/recorder/assets/codeMirrorModule-DK72OMRi.js +32 -0
  208. package/node_modules/playwright-core/lib/vite/recorder/assets/codicon-DCmgc-ay.ttf +0 -0
  209. package/node_modules/playwright-core/lib/vite/recorder/assets/index-BZpYJZ-P.css +1 -0
  210. package/node_modules/playwright-core/lib/vite/recorder/assets/index-Cn0mmDuv.js +129 -0
  211. package/node_modules/playwright-core/lib/vite/recorder/index.html +29 -0
  212. package/node_modules/playwright-core/lib/vite/recorder/playwright-logo.svg +9 -0
  213. package/node_modules/playwright-core/lib/vite/traceViewer/assets/codeMirrorModule-BEB2e8M3.js +32 -0
  214. package/node_modules/playwright-core/lib/vite/traceViewer/assets/defaultSettingsView-D-g2vrvf.js +184 -0
  215. package/node_modules/playwright-core/lib/vite/traceViewer/assets/urlMatch-L3liM589.js +1 -0
  216. package/node_modules/playwright-core/lib/vite/traceViewer/assets/xtermModule-B794rD2Z.js +7 -0
  217. package/node_modules/playwright-core/lib/vite/traceViewer/codeMirrorModule.-QdMvsKi.css +1 -0
  218. package/node_modules/playwright-core/lib/vite/traceViewer/codicon.DCmgc-ay.ttf +0 -0
  219. package/node_modules/playwright-core/lib/vite/traceViewer/defaultSettingsView.C8BeHuxd.css +1 -0
  220. package/node_modules/playwright-core/lib/vite/traceViewer/index.B_TqY17P.css +1 -0
  221. package/node_modules/playwright-core/lib/vite/traceViewer/index.html +44 -0
  222. package/node_modules/playwright-core/lib/vite/traceViewer/index.oNry3Hjv.js +1 -0
  223. package/node_modules/playwright-core/lib/vite/traceViewer/manifest.webmanifest +16 -0
  224. package/node_modules/playwright-core/lib/vite/traceViewer/playwright-logo.svg +9 -0
  225. package/node_modules/playwright-core/lib/vite/traceViewer/snapshot.B_Jk1wbt.js +1 -0
  226. package/node_modules/playwright-core/lib/vite/traceViewer/snapshot.html +10 -0
  227. package/node_modules/playwright-core/lib/vite/traceViewer/sw.bundle.js +4 -0
  228. package/node_modules/playwright-core/lib/vite/traceViewer/uiMode.CYwC_gH1.js +5 -0
  229. package/node_modules/playwright-core/lib/vite/traceViewer/uiMode.CyMfwkXJ.css +1 -0
  230. package/node_modules/playwright-core/lib/vite/traceViewer/uiMode.html +18 -0
  231. package/node_modules/playwright-core/lib/vite/traceViewer/xtermModule.kHJ-D0s7.css +1 -0
  232. package/node_modules/playwright-core/lib/webp_codec.LICENSE +173 -0
  233. package/node_modules/playwright-core/lib/webp_codec.wasm +0 -0
  234. package/node_modules/playwright-core/lib/xdg-open +1267 -0
  235. package/node_modules/playwright-core/package.json +34 -0
  236. package/package.json +13 -7
  237. package/protocol/index.json +75 -21
  238. package/protocol/operations/agent.sessions.list.json +100 -0
  239. package/protocol/operations/agent.sessions.read.json +266 -0
  240. package/protocol/operations/conversation.settings.check.json +147 -4
  241. package/protocol/operations/conversation.settings.read.json +145 -3
  242. package/protocol/operations/conversation.settings.update.json +166 -4
  243. package/protocol/operations/conversation.start.json +2 -1
  244. package/protocol/operations/extension.call.json +132 -0
  245. package/protocol/operations/extension.content.json +78 -0
  246. package/protocol/operations/extension.describe.json +195 -0
  247. package/protocol/operations/extension.install.json +198 -0
  248. package/protocol/operations/extension.list.json +123 -0
  249. package/protocol/operations/extension.manage.json +55 -0
  250. package/protocol/operations/extension.read.json +112 -0
  251. package/protocol/operations/kernel.interrupt.json +20 -0
  252. package/protocol/operations/kernel.read.json +30 -0
  253. package/protocol/operations/kernel.run.json +36 -1
  254. package/protocol/operations/kernel.stop.json +10 -0
  255. package/protocol/operations/project.work.read.json +3 -2
  256. package/protocol/operations/session.grant.json +9 -0
  257. package/scripts/browser-checks.mjs +53 -0
  258. package/scripts/screen-check.mjs +193 -0
  259. package/scripts/third-party-acceptance.mjs +77 -0
  260. package/vendor/composition.json +111 -111
  261. package/vendor/rho-workspace-plugin-agent-0.4.29.tgz +0 -0
  262. package/vendor/rho-workspace-plugin-annotations-0.5.2.tgz +0 -0
  263. package/vendor/rho-workspace-plugin-documents-0.4.11.tgz +0 -0
  264. package/vendor/rho-workspace-plugin-kernel-0.5.5.tgz +0 -0
  265. package/web/theme.css +17 -2
  266. package/dist/web/assets/choices-B-y2OYvE.js +0 -1
  267. package/dist/web/assets/dist-CBM2oq6g.js +0 -1
  268. package/dist/web/assets/dist-CH56yNDn.js +0 -3
  269. package/dist/web/assets/explore-in-muWXOGOY.js +0 -1
  270. package/dist/web/assets/graph-CK-df5lh.js +0 -2
  271. package/dist/web/assets/index-DBd77u4a.css +0 -1
  272. package/dist/web/assets/overview-D1Ev2OC_.js +0 -6
  273. package/dist/web/assets/preview-HbmQKUGY.js +0 -1
  274. package/dist/web/assets/workspace-d5Hw_ClZ.js +0 -5
  275. package/vendor/rho-workspace-plugin-agent-0.4.27.tgz +0 -0
  276. package/vendor/rho-workspace-plugin-documents-0.4.10.tgz +0 -0
  277. package/vendor/rho-workspace-plugin-kernel-0.5.2.tgz +0 -0
@@ -0,0 +1,123 @@
1
+ {
2
+ "method": "extension.list",
3
+ "inputSchema": {
4
+ "type": "object",
5
+ "properties": {
6
+ "projectId": {
7
+ "type": "string",
8
+ "minLength": 1,
9
+ "maxLength": 1024
10
+ }
11
+ },
12
+ "required": [],
13
+ "additionalProperties": false
14
+ },
15
+ "outputSchema": {
16
+ "type": "object",
17
+ "properties": {
18
+ "plugins": {
19
+ "type": "array",
20
+ "items": {
21
+ "type": "object",
22
+ "properties": {
23
+ "id": {
24
+ "type": "string",
25
+ "pattern": "^[a-z0-9][a-z0-9._-]{0,95}$"
26
+ },
27
+ "name": {
28
+ "type": "string"
29
+ },
30
+ "version": {
31
+ "type": "string"
32
+ },
33
+ "title": {
34
+ "type": "string"
35
+ },
36
+ "description": {
37
+ "type": "string"
38
+ },
39
+ "digest": {
40
+ "type": "string",
41
+ "pattern": "^[a-f0-9]{64}$"
42
+ },
43
+ "source": {
44
+ "type": "string"
45
+ },
46
+ "sourceCommit": {
47
+ "type": "string"
48
+ },
49
+ "enabled": {
50
+ "type": "boolean"
51
+ },
52
+ "installedAt": {
53
+ "type": "string"
54
+ }
55
+ },
56
+ "required": [
57
+ "id",
58
+ "name",
59
+ "version",
60
+ "title",
61
+ "description",
62
+ "digest",
63
+ "source",
64
+ "enabled",
65
+ "installedAt"
66
+ ],
67
+ "additionalProperties": false
68
+ }
69
+ },
70
+ "directory": {
71
+ "type": "array",
72
+ "items": {
73
+ "type": "object",
74
+ "properties": {
75
+ "id": {
76
+ "type": "string",
77
+ "pattern": "^[a-z0-9][a-z0-9._-]{0,95}$"
78
+ },
79
+ "title": {
80
+ "type": "string"
81
+ },
82
+ "version": {
83
+ "type": "string"
84
+ },
85
+ "description": {
86
+ "type": "string"
87
+ },
88
+ "source": {
89
+ "type": "string"
90
+ },
91
+ "repository": {
92
+ "type": "string"
93
+ },
94
+ "needs": {
95
+ "type": "string"
96
+ }
97
+ },
98
+ "required": [
99
+ "id",
100
+ "title",
101
+ "version",
102
+ "description",
103
+ "source",
104
+ "repository",
105
+ "needs"
106
+ ],
107
+ "additionalProperties": false
108
+ }
109
+ },
110
+ "limits": {
111
+ "type": "object",
112
+ "additionalProperties": true
113
+ }
114
+ },
115
+ "required": [
116
+ "plugins",
117
+ "directory",
118
+ "limits"
119
+ ],
120
+ "additionalProperties": false
121
+ },
122
+ "description": "List independently installed third-party packages and their enabled state, source and immutable digest. Reads start no plugin or runtime. Use extension.describe to discover operation schemas and Skills."
123
+ }
@@ -0,0 +1,55 @@
1
+ {
2
+ "method": "extension.manage",
3
+ "inputSchema": {
4
+ "type": "object",
5
+ "properties": {
6
+ "pluginId": {
7
+ "type": "string",
8
+ "pattern": "^[a-z0-9][a-z0-9._-]{0,95}$"
9
+ },
10
+ "expectedDigest": {
11
+ "type": "string",
12
+ "pattern": "^[a-f0-9]{64}$"
13
+ },
14
+ "action": {
15
+ "enum": [
16
+ "enable",
17
+ "disable",
18
+ "remove"
19
+ ]
20
+ }
21
+ },
22
+ "required": [
23
+ "pluginId",
24
+ "expectedDigest",
25
+ "action"
26
+ ],
27
+ "additionalProperties": false
28
+ },
29
+ "outputSchema": {
30
+ "type": "object",
31
+ "properties": {
32
+ "pluginId": {
33
+ "type": "string",
34
+ "pattern": "^[a-z0-9][a-z0-9._-]{0,95}$"
35
+ },
36
+ "action": {
37
+ "enum": [
38
+ "enable",
39
+ "disable",
40
+ "remove"
41
+ ]
42
+ },
43
+ "retained": {
44
+ "type": "string"
45
+ }
46
+ },
47
+ "required": [
48
+ "pluginId",
49
+ "action",
50
+ "retained"
51
+ ],
52
+ "additionalProperties": false
53
+ },
54
+ "description": "Local person/operator: enable, disable or remove an installed third-party package at the expected digest. Existing native tasks, R sessions, project files and retained receipts are preserved."
55
+ }
@@ -0,0 +1,112 @@
1
+ {
2
+ "method": "extension.read",
3
+ "inputSchema": {
4
+ "type": "object",
5
+ "properties": {
6
+ "projectId": {
7
+ "type": "string",
8
+ "minLength": 1,
9
+ "maxLength": 1024
10
+ },
11
+ "invocationId": {
12
+ "type": "string",
13
+ "pattern": "^[a-f0-9]{64}$"
14
+ }
15
+ },
16
+ "required": [
17
+ "projectId",
18
+ "invocationId"
19
+ ],
20
+ "additionalProperties": false
21
+ },
22
+ "outputSchema": {
23
+ "type": "object",
24
+ "properties": {
25
+ "invocationId": {
26
+ "type": "string",
27
+ "pattern": "^[a-f0-9]{64}$"
28
+ },
29
+ "caller": {
30
+ "type": "string"
31
+ },
32
+ "projectId": {
33
+ "type": "string"
34
+ },
35
+ "pluginId": {
36
+ "type": "string",
37
+ "pattern": "^[a-z0-9][a-z0-9._-]{0,95}$"
38
+ },
39
+ "packageDigest": {
40
+ "type": "string",
41
+ "pattern": "^[a-f0-9]{64}$"
42
+ },
43
+ "operation": {
44
+ "type": "string",
45
+ "pattern": "^[a-z0-9][a-z0-9._-]{0,95}$"
46
+ },
47
+ "requestDigest": {
48
+ "type": "string",
49
+ "pattern": "^[a-f0-9]{64}$"
50
+ },
51
+ "state": {
52
+ "enum": [
53
+ "pending",
54
+ "completed",
55
+ "unknown"
56
+ ]
57
+ },
58
+ "startedAt": {
59
+ "type": "string"
60
+ },
61
+ "endedAt": {
62
+ "type": "string"
63
+ },
64
+ "value": {},
65
+ "error": {
66
+ "type": "string"
67
+ },
68
+ "delegations": {
69
+ "type": "array",
70
+ "items": {
71
+ "type": "object",
72
+ "properties": {
73
+ "method": {
74
+ "type": "string"
75
+ },
76
+ "request": {},
77
+ "state": {
78
+ "enum": [
79
+ "pending",
80
+ "completed",
81
+ "unknown"
82
+ ]
83
+ },
84
+ "value": {},
85
+ "error": {
86
+ "type": "string"
87
+ }
88
+ },
89
+ "required": [
90
+ "method",
91
+ "request",
92
+ "state"
93
+ ],
94
+ "additionalProperties": false
95
+ }
96
+ }
97
+ },
98
+ "required": [
99
+ "invocationId",
100
+ "caller",
101
+ "projectId",
102
+ "pluginId",
103
+ "packageDigest",
104
+ "operation",
105
+ "requestDigest",
106
+ "state",
107
+ "startedAt"
108
+ ],
109
+ "additionalProperties": false
110
+ },
111
+ "description": "Observe an original plugin invocation, including pending or unknown outcomes. Never reruns code. Only its original caller can read it."
112
+ }
@@ -170,6 +170,16 @@
170
170
  }
171
171
  ]
172
172
  },
173
+ "program": {
174
+ "anyOf": [
175
+ {
176
+ "type": "string"
177
+ },
178
+ {
179
+ "type": "null"
180
+ }
181
+ ]
182
+ },
173
183
  "purpose": {
174
184
  "anyOf": [
175
185
  {
@@ -223,6 +233,16 @@
223
233
  "type": "string"
224
234
  },
225
235
  "type": "array"
236
+ },
237
+ "version": {
238
+ "anyOf": [
239
+ {
240
+ "type": "string"
241
+ },
242
+ {
243
+ "type": "null"
244
+ }
245
+ ]
226
246
  }
227
247
  },
228
248
  "required": [
@@ -175,6 +175,16 @@
175
175
  }
176
176
  ]
177
177
  },
178
+ "program": {
179
+ "anyOf": [
180
+ {
181
+ "type": "string"
182
+ },
183
+ {
184
+ "type": "null"
185
+ }
186
+ ]
187
+ },
178
188
  "purpose": {
179
189
  "anyOf": [
180
190
  {
@@ -228,6 +238,16 @@
228
238
  "type": "string"
229
239
  },
230
240
  "type": "array"
241
+ },
242
+ "version": {
243
+ "anyOf": [
244
+ {
245
+ "type": "string"
246
+ },
247
+ {
248
+ "type": "null"
249
+ }
250
+ ]
231
251
  }
232
252
  },
233
253
  "required": [
@@ -364,6 +384,16 @@
364
384
  }
365
385
  ]
366
386
  },
387
+ "program": {
388
+ "anyOf": [
389
+ {
390
+ "type": "string"
391
+ },
392
+ {
393
+ "type": "null"
394
+ }
395
+ ]
396
+ },
367
397
  "sessionId": {
368
398
  "pattern": "^s-[a-f0-9]{16}$",
369
399
  "type": "string"
@@ -16,6 +16,11 @@
16
16
  "minLength": 1,
17
17
  "type": "string"
18
18
  },
19
+ "interpreter": {
20
+ "maxLength": 1024,
21
+ "minLength": 1,
22
+ "type": "string"
23
+ },
19
24
  "language": {
20
25
  "enum": [
21
26
  "r",
@@ -196,6 +201,16 @@
196
201
  }
197
202
  ]
198
203
  },
204
+ "program": {
205
+ "anyOf": [
206
+ {
207
+ "type": "string"
208
+ },
209
+ {
210
+ "type": "null"
211
+ }
212
+ ]
213
+ },
199
214
  "purpose": {
200
215
  "anyOf": [
201
216
  {
@@ -249,6 +264,16 @@
249
264
  "type": "string"
250
265
  },
251
266
  "type": "array"
267
+ },
268
+ "version": {
269
+ "anyOf": [
270
+ {
271
+ "type": "string"
272
+ },
273
+ {
274
+ "type": "null"
275
+ }
276
+ ]
252
277
  }
253
278
  },
254
279
  "required": [
@@ -378,6 +403,16 @@
378
403
  }
379
404
  ]
380
405
  },
406
+ "program": {
407
+ "anyOf": [
408
+ {
409
+ "type": "string"
410
+ },
411
+ {
412
+ "type": "null"
413
+ }
414
+ ]
415
+ },
381
416
  "sessionId": {
382
417
  "pattern": "^s-[a-f0-9]{16}$",
383
418
  "type": "string"
@@ -508,5 +543,5 @@
508
543
  ],
509
544
  "type": "object"
510
545
  },
511
- "description": "Run a cell of R or Python in the project's live session of that language, which the Agent and the person share: what one cell defines stays for the next. Starts the session when none is live, on this machine or at a place on one of the person's servers (place, or where kernel.places says that language runs next). The same changeId from the same caller returns the same cell and never runs it twice. waitMs waits for the cell to end."
546
+ "description": "Run a cell of R or Python in the project's live session of that language, which the Agent and the person share: what one cell defines stays for the next. Starts the session when none is live, on this machine or at a place on one of the person's servers (place, or where kernel.places says that language runs next). interpreter names the program a session on this machine starts with, in a folder of the project such as .venv/bin/python; the project keeps it for that language's later sessions, and each cell records the program and version that ran it. The same changeId from the same caller returns the same cell and never runs it twice. waitMs waits for the cell to end."
512
547
  }
@@ -126,6 +126,16 @@
126
126
  }
127
127
  ]
128
128
  },
129
+ "program": {
130
+ "anyOf": [
131
+ {
132
+ "type": "string"
133
+ },
134
+ {
135
+ "type": "null"
136
+ }
137
+ ]
138
+ },
129
139
  "sessionId": {
130
140
  "pattern": "^s-[a-f0-9]{16}$",
131
141
  "type": "string"
@@ -68,7 +68,8 @@
68
68
  "acp",
69
69
  "claude-cli",
70
70
  "native-transcript",
71
- "external-acp"
71
+ "external-acp",
72
+ "external-session"
72
73
  ]
73
74
  },
74
75
  "sessionId": {
@@ -573,7 +574,7 @@
573
574
  "resourceRefs"
574
575
  ]
575
576
  },
576
- "maxItems": 80
577
+ "maxItems": 88
577
578
  },
578
579
  "files": {
579
580
  "type": "array",
@@ -27,6 +27,8 @@
27
27
  "agent.activity.capture",
28
28
  "agent.activity.outputs",
29
29
  "agent.activity.read",
30
+ "agent.sessions.list",
31
+ "agent.sessions.read",
30
32
  "annotation.create",
31
33
  "annotation.decide",
32
34
  "annotation.list",
@@ -68,6 +70,13 @@
68
70
  "document.undoOwn",
69
71
  "evidence.export",
70
72
  "evidence.preview",
73
+ "extension.call",
74
+ "extension.content",
75
+ "extension.describe",
76
+ "extension.install",
77
+ "extension.list",
78
+ "extension.manage",
79
+ "extension.read",
71
80
  "feedback.read",
72
81
  "feedback.status",
73
82
  "feedback.submit",
@@ -38,3 +38,56 @@ export async function facts(page) {
38
38
  return { kinds: [...new Set(elements.map(el => el.dataset.fact))], agentInVerified: elements.some(el => el.dataset.fact === 'agent' && el.closest('[data-fact="verified"]')) };
39
39
  });
40
40
  }
41
+ // What one page shows at its current width, read without changing it: whether it scrolls sideways,
42
+ // the elements that cross the right edge (`clippedBy` names a box that scrolls or hides what is beyond
43
+ // its own width; the ones no box keeps in are counted in `elementsPastEdgeUnclipped` and listed first),
44
+ // unnamed buttons, the visible boxes of `selector` that overlap one another (a box inside another is not
45
+ // an overlap), and how many fonts loaded.
46
+ export async function pageFindings(page, { selector = null } = {}) {
47
+ const base = await inspectPage(page);
48
+ const measured = await page.evaluate(selector => {
49
+ const shown = el => { const r = el.getBoundingClientRect(); return r.width > 0 && r.height > 0 && getComputedStyle(el).visibility !== 'hidden'; };
50
+ const describe = el => {
51
+ const text = (el.textContent || '').replace(/\s+/g, ' ').trim().slice(0, 40);
52
+ const classes = [...el.classList].slice(0, 2).map(c => '.' + c).join('');
53
+ return el.tagName.toLowerCase() + (el.id ? '#' + el.id : '') + classes + (text ? ` "${text}"` : '');
54
+ };
55
+ const width = document.documentElement.clientWidth;
56
+ const clipper = el => {
57
+ for (let p = el.parentElement; p && p !== document.body; p = p.parentElement) {
58
+ if (/hidden|auto|scroll|clip/.test(getComputedStyle(p).overflowX) && p.getBoundingClientRect().right <= width + 1) return p;
59
+ }
60
+ return null;
61
+ };
62
+ const past = [...document.querySelectorAll('body *')].filter(el => shown(el) && el.getBoundingClientRect().right > width + 1).map(el => ({ el, clip: clipper(el) }));
63
+ const unclipped = past.filter(item => !item.clip).length;
64
+ past.sort((a, b) => (a.clip ? 1 : 0) - (b.clip ? 1 : 0));
65
+ const elementsPastEdge = past.slice(0, 50).map(({ el, clip }) => {
66
+ const r = el.getBoundingClientRect();
67
+ return { element: describe(el), right: Math.round(r.right), width: Math.round(r.width), clippedBy: clip ? describe(clip) : null };
68
+ });
69
+ let overlaps = null;
70
+ if (selector) {
71
+ const matched = [...document.querySelectorAll(selector)];
72
+ const boxes = matched.filter(shown).slice(0, 400);
73
+ const pairs = [];
74
+ for (let i = 0; i < boxes.length; i++) {
75
+ for (let j = i + 1; j < boxes.length; j++) {
76
+ const a = boxes[i], b = boxes[j];
77
+ if (a.contains(b) || b.contains(a)) continue;
78
+ const ra = a.getBoundingClientRect(), rb = b.getBoundingClientRect();
79
+ if (Math.min(ra.right, rb.right) - Math.max(ra.left, rb.left) > 1 && Math.min(ra.bottom, rb.bottom) - Math.max(ra.top, rb.top) > 1) pairs.push([describe(a), describe(b)]);
80
+ }
81
+ }
82
+ overlaps = { selector, matched: matched.length, considered: boxes.length, total: pairs.length, pairs: pairs.slice(0, 50) };
83
+ }
84
+ return { scrollWidth: document.documentElement.scrollWidth, clientWidth: width, pastTotal: past.length, unclipped, elementsPastEdge, overlaps };
85
+ }, selector);
86
+ const fontsLoaded = await page.evaluate(async () => { await document.fonts.ready; return [...document.fonts].filter(f => f.status === 'loaded').length; });
87
+ return {
88
+ width: base.width, height: base.height, horizontalOverflow: base.overflow,
89
+ scrollWidth: measured.scrollWidth, clientWidth: measured.clientWidth,
90
+ elementsPastEdge: measured.elementsPastEdge, elementsPastEdgeTotal: measured.pastTotal, elementsPastEdgeUnclipped: measured.unclipped,
91
+ unnamedButtons: base.unnamed, overlaps: measured.overlaps, fontsLoaded,
92
+ };
93
+ }