@rho-workspace/rho 0.5.5 → 0.5.7
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.
- package/dist/agent-connect.d.ts +42 -0
- package/dist/agent-connect.js +68 -0
- package/dist/answer-board.js +3 -3
- package/dist/bridge.js +6 -1
- package/dist/browser-access.d.ts +1 -0
- package/dist/browser-access.js +5 -3
- package/dist/capabilities.d.ts +21 -5
- package/dist/capabilities.js +6 -4
- package/dist/cli.js +113 -18
- package/dist/composition.d.ts +1 -1
- package/dist/composition.js +13 -3
- package/dist/connect-cli.d.ts +50 -0
- package/dist/connect-cli.js +128 -0
- package/dist/contract.generated.d.ts +1437 -381
- package/dist/contract.generated.js +1 -1
- package/dist/contracts/owners.generated.js +1160 -267
- package/dist/conversation-presentation.d.ts +9 -2
- package/dist/conversation-presentation.js +3 -1
- package/dist/conversations.d.ts +306 -7
- package/dist/conversations.js +208 -22
- package/dist/discovery.js +3 -3
- package/dist/extension-contract.d.ts +19 -0
- package/dist/extension-contract.js +15 -6
- package/dist/extension-markets.d.ts +74 -0
- package/dist/extension-markets.js +166 -0
- package/dist/extensions.d.ts +29 -1
- package/dist/extensions.js +13 -4
- package/dist/external-work.d.ts +22 -0
- package/dist/external-work.js +91 -0
- package/dist/plugin-cli.js +75 -3
- package/dist/plugin-inventory.d.ts +56 -0
- package/dist/plugin-inventory.js +41 -0
- package/dist/plugin-inventory.json +1581 -102
- package/dist/plugin-presentation.d.ts +105 -2
- package/dist/plugin-presentation.js +59 -5
- package/dist/plugins.d.ts +14 -3
- package/dist/plugins.js +12 -6
- package/dist/project-notes.js +1 -1
- package/dist/protocol.d.ts +7 -0
- package/dist/protocol.js +40 -15
- package/dist/replay.js +4 -0
- package/dist/response-contracts.js +26 -11
- package/dist/running.d.ts +10 -0
- package/dist/running.js +45 -0
- package/dist/server.d.ts +4 -10
- package/dist/server.js +140 -14
- package/dist/state.d.ts +8 -0
- package/dist/state.js +8 -0
- package/dist/studio-layout.js +3 -3
- package/dist/task-frame.d.ts +1 -1
- package/dist/timeline-events.d.ts +1 -0
- package/dist/timeline-events.js +8 -1
- package/dist/ui-context.d.ts +73 -0
- package/dist/ui-context.js +98 -0
- package/dist/ui-contract.d.ts +23 -0
- package/dist/web/.vite/manifest.json +135 -76
- package/dist/web/assets/answer-board-CeYS8k8y.js +1 -0
- package/dist/web/assets/choices-D8vGwsl2.js +1 -0
- package/dist/web/assets/{console-BSjLGe0T.js → console-Dyuo1q4N.js} +4 -4
- package/dist/web/assets/{dist-Tzoe_zm-.js → dist-CSiCyBml.js} +1 -1
- package/dist/web/assets/{dist-Cw8hRIlT.js → dist-D9FLb9Hm.js} +1 -1
- package/dist/web/assets/{dist-foH9IKc6.js → dist-FXbTBwML.js} +1 -1
- package/dist/web/assets/{dist-Buk0lwzI.js → dist-l3DUhbw5.js} +1 -1
- package/dist/web/assets/{explore-in-BVUy3ZW_.js → explore-in-BfSFGRh2.js} +1 -1
- package/dist/web/assets/graph-BU2_o5uA.js +2 -0
- package/dist/web/assets/index-C16mXVvk.css +1 -0
- package/dist/web/assets/index-CWg9XYXx.js +952 -0
- package/dist/web/assets/markdown.reader-Ct2-e2Zt.png +0 -0
- package/dist/web/assets/{notes-meaning-pVbbQUGP.js → notes-meaning-T2m5zQfv.js} +1 -1
- package/dist/web/assets/overview-PzfLJCo-.js +6 -0
- package/dist/web/assets/preview-BguEdsza.js +1 -0
- package/dist/web/assets/previews-pWNik-2g.js +3 -0
- package/dist/web/assets/{review-CMxQlQ-C.js → review-Dy_85lcH.js} +1 -1
- package/dist/web/assets/rho.editor-CCJeyHma.png +0 -0
- package/dist/web/assets/rho.flow-WkMj6fRS.png +0 -0
- package/dist/web/assets/rho.media-Cc6amodO.png +0 -0
- package/dist/web/assets/rho.notebook-6vsZKGDq.png +0 -0
- package/dist/web/assets/rho.object-BGoeXjte.png +0 -0
- package/dist/web/assets/rho.plots-yIiISCkb.png +0 -0
- package/dist/web/assets/rho.scatter-DwHxesCs.png +0 -0
- package/dist/web/assets/rho.servers-DKf_mnNq.png +0 -0
- package/dist/web/assets/rho.table-DWOGaWDa.png +0 -0
- package/dist/web/assets/rho.variables-CKcWczhQ.png +0 -0
- package/dist/web/assets/{skills-BFNSyrnD.js → skills-Dyz7mBlc.js} +1 -1
- package/dist/web/assets/{skills-work-BGPSnF_I.js → skills-work-BEGqlCkx.js} +1 -1
- package/dist/web/assets/studio-process-D-ykbC4D.js +2 -0
- package/dist/web/assets/timeline-events-DKTho9fU.js +1 -0
- package/dist/web/assets/work-turns-DSabCogR.js +1 -0
- package/dist/web/assets/{workspace-CWlkjLNx.js → workspace-DfjBL--r.js} +2 -2
- package/dist/web/composition.json +135 -80
- package/dist/web/index.html +3 -3
- package/dist/web/renderer.json +1 -1
- package/dist/web-assets.js +2 -2
- package/dist/work-graph.d.ts +11 -1
- package/dist/work-graph.js +16 -5
- package/dist/workspace.d.ts +2 -2
- package/dist/workspace.js +8 -7
- package/docs/FRONTEND.md +71 -21
- package/docs/HEADLESS.md +127 -24
- package/docs/THIRD-PARTY-PLUGINS.md +75 -3
- package/node_modules/@rho-workspace/plugin-agent/README.md +34 -0
- package/node_modules/@rho-workspace/plugin-agent/dist/acp-command.d.ts +32 -0
- package/node_modules/@rho-workspace/plugin-agent/dist/acp-command.js +54 -11
- package/node_modules/@rho-workspace/plugin-agent/dist/acp-conversation.d.ts +1 -0
- package/node_modules/@rho-workspace/plugin-agent/dist/acp-conversation.js +29 -3
- package/node_modules/@rho-workspace/plugin-agent/dist/external-session-contract.js +11 -5
- package/node_modules/@rho-workspace/plugin-agent/dist/external-session.d.ts +12 -1
- package/node_modules/@rho-workspace/plugin-agent/dist/index.d.ts +8 -0
- package/node_modules/@rho-workspace/plugin-agent/dist/index.js +3 -2
- package/node_modules/@rho-workspace/plugin-agent/dist/mcp-entry.d.ts +13 -0
- package/node_modules/@rho-workspace/plugin-agent/dist/mcp-entry.js +13 -0
- package/node_modules/@rho-workspace/plugin-agent/dist/mcp.js +16 -8
- package/node_modules/@rho-workspace/plugin-agent/dist/native-sessions.d.ts +70 -0
- package/node_modules/@rho-workspace/plugin-agent/dist/native-sessions.js +538 -0
- package/node_modules/@rho-workspace/plugin-agent/package.json +2 -1
- package/node_modules/@rho-workspace/plugin-figures/LICENSE +661 -0
- package/node_modules/@rho-workspace/plugin-figures/README.md +191 -0
- package/node_modules/@rho-workspace/plugin-figures/dist/index.d.ts +236 -0
- package/node_modules/@rho-workspace/plugin-figures/dist/index.js +165 -0
- package/node_modules/@rho-workspace/plugin-figures/dist/operations.d.ts +44 -0
- package/node_modules/@rho-workspace/plugin-figures/dist/operations.js +39 -0
- package/node_modules/@rho-workspace/plugin-figures/dist/presentation.d.ts +19 -0
- package/node_modules/@rho-workspace/plugin-figures/dist/presentation.js +26 -0
- package/node_modules/@rho-workspace/plugin-figures/dist/record.d.ts +188 -0
- package/node_modules/@rho-workspace/plugin-figures/dist/record.js +143 -0
- package/node_modules/@rho-workspace/plugin-figures/dist/ui-styles.d.ts +1 -0
- package/node_modules/@rho-workspace/plugin-figures/dist/ui-styles.js +68 -0
- package/node_modules/@rho-workspace/plugin-figures/dist/ui.d.ts +56 -0
- package/node_modules/@rho-workspace/plugin-figures/dist/ui.js +363 -0
- package/node_modules/@rho-workspace/plugin-figures/package.json +41 -0
- package/node_modules/@rho-workspace/plugin-figures/py/figures.py +856 -0
- package/node_modules/@rho-workspace/plugin-figures/r/figures.R +775 -0
- package/node_modules/@rho-workspace/plugin-kernel/README.md +27 -3
- package/node_modules/@rho-workspace/plugin-kernel/dist/contract.d.ts +12 -0
- package/node_modules/@rho-workspace/plugin-kernel/dist/contract.js +8 -1
- package/node_modules/@rho-workspace/plugin-kernel/dist/index.d.ts +61 -0
- package/node_modules/@rho-workspace/plugin-kernel/dist/index.js +125 -9
- package/node_modules/@rho-workspace/plugin-kernel/dist/session-scope.d.ts +14 -0
- package/node_modules/@rho-workspace/plugin-kernel/dist/session-scope.js +9 -0
- package/node_modules/@rho-workspace/plugin-kernel/dist/ui-base.d.ts +23 -5
- package/node_modules/@rho-workspace/plugin-kernel/dist/ui-notebook-work.js +1 -1
- package/node_modules/@rho-workspace/plugin-kernel/dist/ui-notebook.d.ts +6 -4
- package/node_modules/@rho-workspace/plugin-kernel/dist/ui-notebook.js +44 -17
- package/node_modules/@rho-workspace/plugin-kernel/dist/ui-styles.js +6 -0
- package/node_modules/@rho-workspace/plugin-kernel/package.json +1 -1
- package/node_modules/@rho-workspace/plugin-kernel/runners/runner.R +144 -4
- package/node_modules/@rho-workspace/plugin-kernel/runners/runner.py +106 -1
- package/node_modules/@rho-workspace/plugin-tables/README.md +5 -0
- package/node_modules/@rho-workspace/plugin-tables/dist/index.d.ts +1 -0
- package/node_modules/@rho-workspace/plugin-tables/dist/index.js +19 -3
- package/node_modules/@rho-workspace/plugin-tables/dist/ui.js +1 -1
- package/node_modules/@rho-workspace/plugin-tables/package.json +1 -1
- package/node_modules/hono/dist/adapter/aws-lambda/handler.js +1 -1
- package/node_modules/hono/dist/cjs/adapter/aws-lambda/handler.js +1 -1
- package/node_modules/hono/dist/cjs/adapter/bun/serve-static.js +1 -1
- package/node_modules/hono/dist/cjs/adapter/bun/websocket.js +1 -1
- package/node_modules/hono/dist/cjs/client/fetch-result-please.js +1 -1
- package/node_modules/hono/dist/cjs/helper/accepts/accepts.js +2 -1
- package/node_modules/hono/dist/cjs/helper/ssg/ssg.js +5 -3
- package/node_modules/hono/dist/cjs/jsx/base.js +49 -30
- package/node_modules/hono/dist/cjs/jsx/components.js +2 -2
- package/node_modules/hono/dist/cjs/jsx/constants.js +2 -0
- package/node_modules/hono/dist/cjs/jsx/jsx-runtime.js +13 -17
- package/node_modules/hono/dist/cjs/middleware/etag/index.js +3 -1
- package/node_modules/hono/dist/cjs/middleware/pretty-json/index.js +1 -0
- package/node_modules/hono/dist/cjs/middleware/timing/timing.js +4 -3
- package/node_modules/hono/dist/cjs/utils/cookie.js +2 -2
- package/node_modules/hono/dist/cjs/utils/mime.js +1 -1
- package/node_modules/hono/dist/cjs/utils/url.js +1 -1
- package/node_modules/hono/dist/client/fetch-result-please.js +1 -1
- package/node_modules/hono/dist/helper/accepts/accepts.js +2 -1
- package/node_modules/hono/dist/helper/ssg/ssg.js +5 -3
- package/node_modules/hono/dist/jsx/base.js +49 -32
- package/node_modules/hono/dist/jsx/components.js +2 -2
- package/node_modules/hono/dist/jsx/constants.js +2 -1
- package/node_modules/hono/dist/jsx/jsx-runtime.js +15 -19
- package/node_modules/hono/dist/middleware/etag/index.js +3 -1
- package/node_modules/hono/dist/middleware/language/language.js +1 -1
- package/node_modules/hono/dist/middleware/pretty-json/index.js +1 -0
- package/node_modules/hono/dist/middleware/timing/timing.js +4 -3
- package/node_modules/hono/dist/utils/cookie.js +2 -2
- package/node_modules/hono/dist/utils/mime.js +1 -1
- package/node_modules/hono/dist/utils/url.js +1 -1
- package/node_modules/hono/package.json +1 -1
- package/node_modules/jose/dist/webapi/jwe/general/decrypt.js +3 -2
- package/node_modules/jose/dist/webapi/jwks/remote.js +1 -1
- package/node_modules/jose/dist/webapi/jws/general/verify.js +2 -8
- package/node_modules/jose/dist/webapi/lib/jwe_decrypt.js +11 -8
- package/node_modules/jose/dist/webapi/lib/key_management.js +0 -1
- package/node_modules/jose/package.json +1 -1
- package/package.json +6 -4
- package/protocol/index.json +106 -64
- package/protocol/operations/agent.sessions.list.json +57 -3
- package/protocol/operations/agent.sessions.read.json +61 -4
- package/protocol/operations/capability.list.json +382 -6
- package/protocol/operations/composition.apply.json +10 -2
- package/protocol/operations/composition.delete.json +845 -0
- package/protocol/operations/composition.read.json +10 -2
- package/protocol/operations/composition.undo.json +10 -2
- package/protocol/operations/conversation.agents.add.json +346 -0
- package/protocol/operations/conversation.agents.remove.json +340 -0
- package/protocol/operations/conversation.configure.json +29 -0
- package/protocol/operations/conversation.decide.json +225 -0
- package/protocol/operations/conversation.list.json +29 -0
- package/protocol/operations/conversation.permission.json +225 -0
- package/protocol/operations/conversation.read.json +225 -0
- package/protocol/operations/conversation.restore.json +29 -0
- package/protocol/operations/conversation.send.json +294 -0
- package/protocol/operations/conversation.settings.check.json +226 -416
- package/protocol/operations/conversation.settings.read.json +224 -411
- package/protocol/operations/conversation.settings.update.json +248 -475
- package/protocol/operations/conversation.start.json +313 -6
- package/protocol/operations/conversation.stop.json +225 -0
- package/protocol/operations/conversation.trash.json +29 -0
- package/protocol/operations/extension.describe.json +39 -0
- package/protocol/operations/extension.install.json +62 -0
- package/protocol/operations/extension.list.json +164 -1
- package/protocol/operations/extension.market.change.json +210 -0
- package/protocol/operations/figure.read.json +265 -0
- package/protocol/operations/figure.select.json +157 -0
- package/protocol/operations/kernel.interrupt.json +119 -0
- package/protocol/operations/kernel.read.json +119 -0
- package/protocol/operations/kernel.run.json +119 -0
- package/protocol/operations/observation.snapshot.json +445 -8
- package/protocol/operations/project.openFile.json +10 -2
- package/protocol/operations/session.grant.json +4 -0
- package/protocol/operations/session.instructions.json +43 -0
- package/protocol/operations/shared.json +1 -0
- package/protocol/operations/view.close.json +10 -2
- package/protocol/operations/view.protection.set.json +10 -2
- package/vendor/composition.json +174 -109
- package/vendor/rho-workspace-plugin-agent-0.4.33.tgz +0 -0
- package/vendor/rho-workspace-plugin-figures-0.5.1.tgz +0 -0
- package/vendor/rho-workspace-plugin-kernel-0.5.13.tgz +0 -0
- package/vendor/rho-workspace-plugin-tables-0.5.2.tgz +0 -0
- package/web/theme.css +17 -0
- package/dist/web/assets/answer-board-CBkGbSLD.js +0 -1
- package/dist/web/assets/canvas-D8rDdfDz.js +0 -1
- package/dist/web/assets/choices-b0XhrGQV.js +0 -1
- package/dist/web/assets/graph-1OdIJ9l7.js +0 -2
- package/dist/web/assets/index-CsC3sTRq.css +0 -1
- package/dist/web/assets/index-CxmItXqa.js +0 -891
- package/dist/web/assets/overview-B9UtVJ32.js +0 -6
- package/dist/web/assets/preview-CksD_5KS.js +0 -1
- package/dist/web/assets/studio-process-CsRoTHOh.js +0 -2
- package/dist/web/assets/timeline-events-BbuuFWHV.js +0 -1
- package/dist/web/assets/work-turns-BvJlIMmA.js +0 -1
- package/vendor/rho-workspace-plugin-agent-0.4.29.tgz +0 -0
- package/vendor/rho-workspace-plugin-kernel-0.5.5.tgz +0 -0
- package/vendor/rho-workspace-plugin-tables-0.5.0.tgz +0 -0
|
@@ -5,6 +5,7 @@
|
|
|
5
5
|
"id": "documents",
|
|
6
6
|
"package": "@rho-workspace/plugin-documents",
|
|
7
7
|
"version": "0.4.7",
|
|
8
|
+
"packageVersion": "0.4.11",
|
|
8
9
|
"requires": [],
|
|
9
10
|
"presentation": {
|
|
10
11
|
"categoryOrder": 10,
|
|
@@ -42,8 +43,12 @@
|
|
|
42
43
|
"runsCode": false
|
|
43
44
|
},
|
|
44
45
|
"listing": {
|
|
45
|
-
"
|
|
46
|
+
"operations": [
|
|
46
47
|
{
|
|
48
|
+
"method": "document.open",
|
|
49
|
+
"version": "2.0",
|
|
50
|
+
"effect": "document",
|
|
51
|
+
"requires": [],
|
|
47
52
|
"presentation": {
|
|
48
53
|
"order": 10,
|
|
49
54
|
"displayName": "Open",
|
|
@@ -53,6 +58,10 @@
|
|
|
53
58
|
}
|
|
54
59
|
},
|
|
55
60
|
{
|
|
61
|
+
"method": "document.read",
|
|
62
|
+
"version": "2.0",
|
|
63
|
+
"effect": "read",
|
|
64
|
+
"requires": [],
|
|
56
65
|
"presentation": {
|
|
57
66
|
"order": 20,
|
|
58
67
|
"displayName": "Read",
|
|
@@ -62,6 +71,10 @@
|
|
|
62
71
|
}
|
|
63
72
|
},
|
|
64
73
|
{
|
|
74
|
+
"method": "document.edit",
|
|
75
|
+
"version": "2.0",
|
|
76
|
+
"effect": "document",
|
|
77
|
+
"requires": [],
|
|
65
78
|
"presentation": {
|
|
66
79
|
"order": 30,
|
|
67
80
|
"displayName": "Edit",
|
|
@@ -71,6 +84,10 @@
|
|
|
71
84
|
}
|
|
72
85
|
},
|
|
73
86
|
{
|
|
87
|
+
"method": "document.undo",
|
|
88
|
+
"version": "2.0",
|
|
89
|
+
"effect": "document",
|
|
90
|
+
"requires": [],
|
|
74
91
|
"presentation": {
|
|
75
92
|
"order": 40,
|
|
76
93
|
"displayName": "Undo",
|
|
@@ -80,6 +97,10 @@
|
|
|
80
97
|
}
|
|
81
98
|
},
|
|
82
99
|
{
|
|
100
|
+
"method": "document.undoOwn",
|
|
101
|
+
"version": "2.0",
|
|
102
|
+
"effect": "document",
|
|
103
|
+
"requires": [],
|
|
83
104
|
"presentation": {
|
|
84
105
|
"order": 41,
|
|
85
106
|
"displayName": "Undo my edits",
|
|
@@ -89,6 +110,10 @@
|
|
|
89
110
|
}
|
|
90
111
|
},
|
|
91
112
|
{
|
|
113
|
+
"method": "document.revert",
|
|
114
|
+
"version": "2.0",
|
|
115
|
+
"effect": "document",
|
|
116
|
+
"requires": [],
|
|
92
117
|
"presentation": {
|
|
93
118
|
"order": 42,
|
|
94
119
|
"displayName": "Revert one change",
|
|
@@ -98,6 +123,10 @@
|
|
|
98
123
|
}
|
|
99
124
|
},
|
|
100
125
|
{
|
|
126
|
+
"method": "document.history",
|
|
127
|
+
"version": "2.0",
|
|
128
|
+
"effect": "read",
|
|
129
|
+
"requires": [],
|
|
101
130
|
"presentation": {
|
|
102
131
|
"order": 21,
|
|
103
132
|
"displayName": "Read change history",
|
|
@@ -107,6 +136,10 @@
|
|
|
107
136
|
}
|
|
108
137
|
},
|
|
109
138
|
{
|
|
139
|
+
"method": "document.change.read",
|
|
140
|
+
"version": "2.0",
|
|
141
|
+
"effect": "read",
|
|
142
|
+
"requires": [],
|
|
110
143
|
"presentation": {
|
|
111
144
|
"order": 22,
|
|
112
145
|
"displayName": "Read a change",
|
|
@@ -116,6 +149,10 @@
|
|
|
116
149
|
}
|
|
117
150
|
},
|
|
118
151
|
{
|
|
152
|
+
"method": "document.save",
|
|
153
|
+
"version": "2.0",
|
|
154
|
+
"effect": "document",
|
|
155
|
+
"requires": [],
|
|
119
156
|
"presentation": {
|
|
120
157
|
"order": 50,
|
|
121
158
|
"displayName": "Save",
|
|
@@ -125,6 +162,10 @@
|
|
|
125
162
|
}
|
|
126
163
|
},
|
|
127
164
|
{
|
|
165
|
+
"method": "document.abandonSave",
|
|
166
|
+
"version": "2.0",
|
|
167
|
+
"effect": "document",
|
|
168
|
+
"requires": [],
|
|
128
169
|
"presentation": {
|
|
129
170
|
"order": 60,
|
|
130
171
|
"displayName": "Give up an interrupted save",
|
|
@@ -134,11 +175,15 @@
|
|
|
134
175
|
}
|
|
135
176
|
}
|
|
136
177
|
],
|
|
178
|
+
"actions": [],
|
|
137
179
|
"views": [
|
|
138
180
|
{
|
|
139
181
|
"id": "rho.editor",
|
|
140
182
|
"version": "0.2.0",
|
|
141
183
|
"ui": "./ui",
|
|
184
|
+
"bindings": {
|
|
185
|
+
"document": "document"
|
|
186
|
+
},
|
|
142
187
|
"presentation": {
|
|
143
188
|
"description": "Shows the shared code or note buffer in a layout.",
|
|
144
189
|
"displayName": "Editor",
|
|
@@ -152,18 +197,94 @@
|
|
|
152
197
|
"id": "documents.workspace",
|
|
153
198
|
"version": "1.4",
|
|
154
199
|
"digest": "e93fa01d13fc8dbd920a11d8944c3fc1e2e4b7760ed9f713c45bdc6d3f8f27dd",
|
|
200
|
+
"intent": "Edit a document buffer conditionally, with explicit undo and save conditions.",
|
|
201
|
+
"requires": [
|
|
202
|
+
"document.open",
|
|
203
|
+
"document.read",
|
|
204
|
+
"document.edit",
|
|
205
|
+
"document.save",
|
|
206
|
+
"document.undoOwn",
|
|
207
|
+
"document.revert"
|
|
208
|
+
],
|
|
209
|
+
"example": {
|
|
210
|
+
"method": "document.edit",
|
|
211
|
+
"input": {
|
|
212
|
+
"documentId": "5df1e6280c70fa8475dfd6bb1a6165b302443640224c893510eed728058adac0",
|
|
213
|
+
"expectedVersion": 1,
|
|
214
|
+
"expectedRevision": 0,
|
|
215
|
+
"changeId": "edit-intro-1",
|
|
216
|
+
"undoGroup": "agent-edit",
|
|
217
|
+
"edits": [
|
|
218
|
+
{
|
|
219
|
+
"from": 0,
|
|
220
|
+
"to": 0,
|
|
221
|
+
"insert": "# Draft\n"
|
|
222
|
+
}
|
|
223
|
+
]
|
|
224
|
+
}
|
|
225
|
+
},
|
|
226
|
+
"failureRecipes": [
|
|
227
|
+
{
|
|
228
|
+
"kind": "invalid",
|
|
229
|
+
"message": "must have property expectedRevision when property changeId is present",
|
|
230
|
+
"next": "Send changeId and expectedRevision together; read the buffer for its current revision."
|
|
231
|
+
},
|
|
232
|
+
{
|
|
233
|
+
"kind": "stale",
|
|
234
|
+
"message": "Document version or revision changed.",
|
|
235
|
+
"next": "Re-read the document and retry with its current version and revision; keep the original changeId only for the same request."
|
|
236
|
+
},
|
|
237
|
+
{
|
|
238
|
+
"kind": "scope",
|
|
239
|
+
"message": "Internal state is not an editable document.",
|
|
240
|
+
"next": "Edit a project file, not anything under .rho or .git."
|
|
241
|
+
},
|
|
242
|
+
{
|
|
243
|
+
"kind": "condition",
|
|
244
|
+
"message": "Resume the original pending save before changing this buffer.",
|
|
245
|
+
"next": "Read the buffer, then resume that exact save or abandon it with document.abandonSave."
|
|
246
|
+
},
|
|
247
|
+
{
|
|
248
|
+
"kind": "unauthorized",
|
|
249
|
+
"message": "Only the Agent or operator saves to disk.",
|
|
250
|
+
"next": "A tab edits the buffer; ask the Agent to save the document."
|
|
251
|
+
}
|
|
252
|
+
],
|
|
253
|
+
"verify": {
|
|
254
|
+
"command": "npm run test:documents",
|
|
255
|
+
"description": "Author-scoped undo, one-change revert, shared buffers and conditional saves over HTTP."
|
|
256
|
+
},
|
|
155
257
|
"presentation": {
|
|
156
258
|
"displayName": "Document workspace",
|
|
157
259
|
"description": "Teaches Claude Code to use the shared buffer, preserve undo and check for changes before saving."
|
|
158
260
|
}
|
|
159
261
|
}
|
|
160
|
-
]
|
|
262
|
+
],
|
|
263
|
+
"claudeCode": {
|
|
264
|
+
"skills": [
|
|
265
|
+
{
|
|
266
|
+
"skill": "documents.workspace",
|
|
267
|
+
"name": "documents",
|
|
268
|
+
"description": "Change a project file that is open in Rho through its shared buffer (document.read, document.edit, document.save), so a person's unsaved text, undo and saves stay intact."
|
|
269
|
+
}
|
|
270
|
+
],
|
|
271
|
+
"hooks": [
|
|
272
|
+
{
|
|
273
|
+
"id": "documents.unsaved-text",
|
|
274
|
+
"event": "PreToolUse",
|
|
275
|
+
"matcher": "Edit|Write|MultiEdit",
|
|
276
|
+
"entry": "./claude-hook",
|
|
277
|
+
"timeoutSeconds": 10
|
|
278
|
+
}
|
|
279
|
+
]
|
|
280
|
+
}
|
|
161
281
|
}
|
|
162
282
|
},
|
|
163
283
|
{
|
|
164
284
|
"id": "files",
|
|
165
285
|
"package": "@rho-workspace/plugin-files",
|
|
166
286
|
"version": "0.5.0",
|
|
287
|
+
"packageVersion": "0.5.1",
|
|
167
288
|
"requires": [],
|
|
168
289
|
"presentation": {
|
|
169
290
|
"categoryOrder": 40,
|
|
@@ -201,8 +322,12 @@
|
|
|
201
322
|
"runsCode": false
|
|
202
323
|
},
|
|
203
324
|
"listing": {
|
|
204
|
-
"
|
|
325
|
+
"operations": [
|
|
205
326
|
{
|
|
327
|
+
"method": "resource.list",
|
|
328
|
+
"version": "2.0",
|
|
329
|
+
"effect": "read",
|
|
330
|
+
"requires": [],
|
|
206
331
|
"presentation": {
|
|
207
332
|
"order": 10,
|
|
208
333
|
"displayName": "List",
|
|
@@ -212,6 +337,10 @@
|
|
|
212
337
|
}
|
|
213
338
|
},
|
|
214
339
|
{
|
|
340
|
+
"method": "resource.read",
|
|
341
|
+
"version": "2.0",
|
|
342
|
+
"effect": "read",
|
|
343
|
+
"requires": [],
|
|
215
344
|
"presentation": {
|
|
216
345
|
"order": 20,
|
|
217
346
|
"displayName": "Read",
|
|
@@ -221,6 +350,10 @@
|
|
|
221
350
|
}
|
|
222
351
|
},
|
|
223
352
|
{
|
|
353
|
+
"method": "resource.register",
|
|
354
|
+
"version": "2.0",
|
|
355
|
+
"effect": "metadata",
|
|
356
|
+
"requires": [],
|
|
224
357
|
"presentation": {
|
|
225
358
|
"order": 30,
|
|
226
359
|
"displayName": "Register",
|
|
@@ -230,6 +363,10 @@
|
|
|
230
363
|
}
|
|
231
364
|
},
|
|
232
365
|
{
|
|
366
|
+
"method": "artifact.check",
|
|
367
|
+
"version": "2.0",
|
|
368
|
+
"effect": "metadata",
|
|
369
|
+
"requires": [],
|
|
233
370
|
"presentation": {
|
|
234
371
|
"order": 40,
|
|
235
372
|
"displayName": "Check outputs",
|
|
@@ -239,6 +376,10 @@
|
|
|
239
376
|
}
|
|
240
377
|
},
|
|
241
378
|
{
|
|
379
|
+
"method": "resource.capture",
|
|
380
|
+
"version": "2.0",
|
|
381
|
+
"effect": "metadata",
|
|
382
|
+
"requires": [],
|
|
242
383
|
"presentation": {
|
|
243
384
|
"order": 15,
|
|
244
385
|
"displayName": "Capture a version",
|
|
@@ -248,12 +389,78 @@
|
|
|
248
389
|
}
|
|
249
390
|
}
|
|
250
391
|
],
|
|
392
|
+
"actions": [],
|
|
251
393
|
"views": [],
|
|
252
394
|
"skills": [
|
|
253
395
|
{
|
|
254
396
|
"id": "files.workspace",
|
|
255
397
|
"version": "1.1",
|
|
256
398
|
"digest": "e285f2c5fd9dab58732726ee4fe71006e49d2c2ebea1a9e95b511077ae136fba",
|
|
399
|
+
"intent": "Register existing bytes with explicit identity, read them bounded, and verify produced artifacts.",
|
|
400
|
+
"requires": [
|
|
401
|
+
"resource.register",
|
|
402
|
+
"resource.read",
|
|
403
|
+
"resource.list",
|
|
404
|
+
"artifact.check"
|
|
405
|
+
],
|
|
406
|
+
"example": {
|
|
407
|
+
"method": "resource.register",
|
|
408
|
+
"input": {
|
|
409
|
+
"expectedDigest": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
|
|
410
|
+
"declaration": {
|
|
411
|
+
"path": "data/points.csv",
|
|
412
|
+
"kind": "table",
|
|
413
|
+
"format": {
|
|
414
|
+
"encoding": "csv",
|
|
415
|
+
"columns": [
|
|
416
|
+
{
|
|
417
|
+
"name": "id",
|
|
418
|
+
"type": "string",
|
|
419
|
+
"nullValues": []
|
|
420
|
+
},
|
|
421
|
+
{
|
|
422
|
+
"name": "value",
|
|
423
|
+
"type": "number",
|
|
424
|
+
"nullValues": [
|
|
425
|
+
"",
|
|
426
|
+
"NA"
|
|
427
|
+
]
|
|
428
|
+
}
|
|
429
|
+
],
|
|
430
|
+
"key": {
|
|
431
|
+
"column": "id",
|
|
432
|
+
"namespace": "samples"
|
|
433
|
+
}
|
|
434
|
+
}
|
|
435
|
+
}
|
|
436
|
+
}
|
|
437
|
+
},
|
|
438
|
+
"failureRecipes": [
|
|
439
|
+
{
|
|
440
|
+
"kind": "stale",
|
|
441
|
+
"message": "Registered bytes no longer match the declaration digest.",
|
|
442
|
+
"next": "Re-read the file and register the current digest as a new version; keep the old one for what already cited it."
|
|
443
|
+
},
|
|
444
|
+
{
|
|
445
|
+
"kind": "scope",
|
|
446
|
+
"message": "Register a project file outside internal state.",
|
|
447
|
+
"next": "Register project files only; an artifact under .rho is checked with artifact.check."
|
|
448
|
+
},
|
|
449
|
+
{
|
|
450
|
+
"kind": "invalid",
|
|
451
|
+
"message": "Declared columns do not match the file.",
|
|
452
|
+
"next": "Declare every column with its type and the null values that mean missing."
|
|
453
|
+
},
|
|
454
|
+
{
|
|
455
|
+
"kind": "condition",
|
|
456
|
+
"message": "No complete artifact inventory has been declared.",
|
|
457
|
+
"next": "Have the producer write the completion inventory, then call artifact.check."
|
|
458
|
+
}
|
|
459
|
+
],
|
|
460
|
+
"verify": {
|
|
461
|
+
"command": "npm run test:files",
|
|
462
|
+
"description": "A completion sidecar verifies immutable producer bytes, escaping output declarations are refused, and declared output directories exist before the producer runs."
|
|
463
|
+
},
|
|
257
464
|
"presentation": {
|
|
258
465
|
"displayName": "File workspace",
|
|
259
466
|
"description": "Teaches Claude Code to register versioned files, read bounded bytes and check declared outputs."
|
|
@@ -266,6 +473,7 @@
|
|
|
266
473
|
"id": "r",
|
|
267
474
|
"package": "@rho-workspace/plugin-r",
|
|
268
475
|
"version": "0.4.1",
|
|
476
|
+
"packageVersion": "0.4.2",
|
|
269
477
|
"requires": [
|
|
270
478
|
"files"
|
|
271
479
|
],
|
|
@@ -313,8 +521,14 @@
|
|
|
313
521
|
"runsCode": true
|
|
314
522
|
},
|
|
315
523
|
"listing": {
|
|
316
|
-
"
|
|
524
|
+
"operations": [
|
|
317
525
|
{
|
|
526
|
+
"method": "object.read",
|
|
527
|
+
"version": "2.0",
|
|
528
|
+
"effect": "read",
|
|
529
|
+
"requires": [
|
|
530
|
+
"files"
|
|
531
|
+
],
|
|
318
532
|
"presentation": {
|
|
319
533
|
"order": 10,
|
|
320
534
|
"displayName": "Read an exported object",
|
|
@@ -324,6 +538,29 @@
|
|
|
324
538
|
}
|
|
325
539
|
},
|
|
326
540
|
{
|
|
541
|
+
"method": "action.submit",
|
|
542
|
+
"version": "2.0",
|
|
543
|
+
"effect": "native",
|
|
544
|
+
"requires": [
|
|
545
|
+
"files",
|
|
546
|
+
"requirements"
|
|
547
|
+
],
|
|
548
|
+
"presentation": {
|
|
549
|
+
"order": 20,
|
|
550
|
+
"displayName": "Run a script",
|
|
551
|
+
"description": "Runs a saved script or your unsaved edits, with the inputs it names.",
|
|
552
|
+
"readOnly": false,
|
|
553
|
+
"runsCode": true
|
|
554
|
+
}
|
|
555
|
+
}
|
|
556
|
+
],
|
|
557
|
+
"actions": [
|
|
558
|
+
{
|
|
559
|
+
"id": "r.execute",
|
|
560
|
+
"version": "0.2.0",
|
|
561
|
+
"requires": [
|
|
562
|
+
"requirements"
|
|
563
|
+
],
|
|
327
564
|
"presentation": {
|
|
328
565
|
"order": 20,
|
|
329
566
|
"displayName": "Run a script",
|
|
@@ -338,6 +575,9 @@
|
|
|
338
575
|
"id": "rho.object",
|
|
339
576
|
"version": "0.2.0",
|
|
340
577
|
"ui": "unavailable",
|
|
578
|
+
"bindings": {
|
|
579
|
+
"data": "object"
|
|
580
|
+
},
|
|
341
581
|
"presentation": {
|
|
342
582
|
"description": "Shows an exported object in a layout, next to the code and data.",
|
|
343
583
|
"displayName": "Object",
|
|
@@ -351,6 +591,70 @@
|
|
|
351
591
|
"id": "r.workspace",
|
|
352
592
|
"version": "1.1",
|
|
353
593
|
"digest": "199a9517030682b6568b6139e1d535f59806d0efd96daa5f40c918a8310d6d8e",
|
|
594
|
+
"intent": "Run an R script in this project and keep its produced artifacts.",
|
|
595
|
+
"requires": [
|
|
596
|
+
"action.submit",
|
|
597
|
+
"action.lookup",
|
|
598
|
+
"artifact.check"
|
|
599
|
+
],
|
|
600
|
+
"example": {
|
|
601
|
+
"method": "action.submit",
|
|
602
|
+
"input": {
|
|
603
|
+
"operationId": "analysis-1",
|
|
604
|
+
"action": "r.execute",
|
|
605
|
+
"actionVersion": "0.2.0",
|
|
606
|
+
"input": {
|
|
607
|
+
"script": {
|
|
608
|
+
"kind": "disk",
|
|
609
|
+
"path": "R/plot.R",
|
|
610
|
+
"digest": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"
|
|
611
|
+
},
|
|
612
|
+
"args": [],
|
|
613
|
+
"requirements": [],
|
|
614
|
+
"artifacts": [
|
|
615
|
+
{
|
|
616
|
+
"path": "cars.png",
|
|
617
|
+
"kind": "file",
|
|
618
|
+
"format": {
|
|
619
|
+
"mimeType": "image/png"
|
|
620
|
+
}
|
|
621
|
+
}
|
|
622
|
+
],
|
|
623
|
+
"completion": "inventory.json"
|
|
624
|
+
}
|
|
625
|
+
}
|
|
626
|
+
},
|
|
627
|
+
"failureRecipes": [
|
|
628
|
+
{
|
|
629
|
+
"kind": "scope",
|
|
630
|
+
"message": "Use a project-relative path without parent traversal.",
|
|
631
|
+
"next": "Address the script and every artifact inside the project; the run output directory is the only writable output location."
|
|
632
|
+
},
|
|
633
|
+
{
|
|
634
|
+
"kind": "stale",
|
|
635
|
+
"message": "Saved script bytes changed before submission.",
|
|
636
|
+
"next": "Re-read the script, take its current digest, and submit once with that digest."
|
|
637
|
+
},
|
|
638
|
+
{
|
|
639
|
+
"kind": "not_found",
|
|
640
|
+
"message": "Requested owner record or file is missing.",
|
|
641
|
+
"next": "Look the operation up from the session that submitted it; facts are keyed by principal."
|
|
642
|
+
},
|
|
643
|
+
{
|
|
644
|
+
"kind": "condition",
|
|
645
|
+
"message": "No complete artifact inventory has been declared.",
|
|
646
|
+
"next": "Declare completion and write that inventory from the producer before calling artifact.check."
|
|
647
|
+
},
|
|
648
|
+
{
|
|
649
|
+
"kind": "unavailable",
|
|
650
|
+
"message": "Requested executable is unavailable.",
|
|
651
|
+
"next": "Select the Core binary and Rscript explicitly, then retry the same operation identity."
|
|
652
|
+
}
|
|
653
|
+
],
|
|
654
|
+
"verify": {
|
|
655
|
+
"command": "npm run acceptance:execution",
|
|
656
|
+
"description": "Submits r.execute for a script that writes an artifact into the directory it is handed, then asserts one Host start, the artifact, its completion inventory and artifact.check."
|
|
657
|
+
},
|
|
354
658
|
"presentation": {
|
|
355
659
|
"displayName": "R workspace",
|
|
356
660
|
"description": "Teaches Claude Code to read exported objects and to start runs it can find again later."
|
|
@@ -363,6 +667,7 @@
|
|
|
363
667
|
"id": "requirements",
|
|
364
668
|
"package": "@rho-workspace/plugin-requirements",
|
|
365
669
|
"version": "0.4.0",
|
|
670
|
+
"packageVersion": "0.4.2",
|
|
366
671
|
"requires": [],
|
|
367
672
|
"presentation": {
|
|
368
673
|
"categoryOrder": 10,
|
|
@@ -402,8 +707,12 @@
|
|
|
402
707
|
"runsCode": true
|
|
403
708
|
},
|
|
404
709
|
"listing": {
|
|
405
|
-
"
|
|
710
|
+
"operations": [
|
|
406
711
|
{
|
|
712
|
+
"method": "requirements.check",
|
|
713
|
+
"version": "2.0",
|
|
714
|
+
"effect": "read",
|
|
715
|
+
"requires": [],
|
|
407
716
|
"presentation": {
|
|
408
717
|
"order": 10,
|
|
409
718
|
"displayName": "Check",
|
|
@@ -413,6 +722,10 @@
|
|
|
413
722
|
}
|
|
414
723
|
},
|
|
415
724
|
{
|
|
725
|
+
"method": "requirements.prepare",
|
|
726
|
+
"version": "2.0",
|
|
727
|
+
"effect": "native",
|
|
728
|
+
"requires": [],
|
|
416
729
|
"presentation": {
|
|
417
730
|
"order": 20,
|
|
418
731
|
"displayName": "Install into the project",
|
|
@@ -422,12 +735,50 @@
|
|
|
422
735
|
}
|
|
423
736
|
}
|
|
424
737
|
],
|
|
738
|
+
"actions": [],
|
|
425
739
|
"views": [],
|
|
426
740
|
"skills": [
|
|
427
741
|
{
|
|
428
742
|
"id": "requirements.workspace",
|
|
429
743
|
"version": "1.1",
|
|
430
744
|
"digest": "3dcdc17236c087068750a8da7061c57d9737a7f8ff1db775a63deb36a2155045",
|
|
745
|
+
"intent": "Know whether an R script can run here before submitting it.",
|
|
746
|
+
"requires": [
|
|
747
|
+
"requirements.check",
|
|
748
|
+
"requirements.prepare"
|
|
749
|
+
],
|
|
750
|
+
"example": {
|
|
751
|
+
"method": "requirements.check",
|
|
752
|
+
"input": {
|
|
753
|
+
"requirements": [
|
|
754
|
+
{
|
|
755
|
+
"package": "digest",
|
|
756
|
+
"source": "cran"
|
|
757
|
+
}
|
|
758
|
+
]
|
|
759
|
+
}
|
|
760
|
+
},
|
|
761
|
+
"failureRecipes": [
|
|
762
|
+
{
|
|
763
|
+
"kind": "unavailable",
|
|
764
|
+
"message": "R is unavailable.",
|
|
765
|
+
"next": "Select an existing Rscript with --rscript or RHO_RSCRIPT; the check reports unknown rather than failing the service."
|
|
766
|
+
},
|
|
767
|
+
{
|
|
768
|
+
"kind": "invalid",
|
|
769
|
+
"message": "Package declaration is malformed.",
|
|
770
|
+
"next": "Declare each package by name with source cran or bioconductor."
|
|
771
|
+
},
|
|
772
|
+
{
|
|
773
|
+
"kind": "limit",
|
|
774
|
+
"message": "Too many declared packages.",
|
|
775
|
+
"next": "Declare the packages the script truly needs; the limit is explicit in the reply."
|
|
776
|
+
}
|
|
777
|
+
],
|
|
778
|
+
"verify": {
|
|
779
|
+
"command": "npm run test:requirements",
|
|
780
|
+
"description": "Empty and base-R requirements need no add-on package, and script and argument references are checked before dispatch."
|
|
781
|
+
},
|
|
431
782
|
"presentation": {
|
|
432
783
|
"displayName": "Requirements workspace",
|
|
433
784
|
"description": "Teaches Claude Code to check declared dependencies and prepare missing packages explicitly."
|
|
@@ -439,7 +790,8 @@
|
|
|
439
790
|
{
|
|
440
791
|
"id": "tables",
|
|
441
792
|
"package": "@rho-workspace/plugin-tables",
|
|
442
|
-
"version": "0.5.
|
|
793
|
+
"version": "0.5.2",
|
|
794
|
+
"packageVersion": "0.5.2",
|
|
443
795
|
"requires": [
|
|
444
796
|
"files"
|
|
445
797
|
],
|
|
@@ -485,8 +837,14 @@
|
|
|
485
837
|
"runsCode": false
|
|
486
838
|
},
|
|
487
839
|
"listing": {
|
|
488
|
-
"
|
|
840
|
+
"operations": [
|
|
489
841
|
{
|
|
842
|
+
"method": "data.page",
|
|
843
|
+
"version": "2.0",
|
|
844
|
+
"effect": "read",
|
|
845
|
+
"requires": [
|
|
846
|
+
"files"
|
|
847
|
+
],
|
|
490
848
|
"presentation": {
|
|
491
849
|
"order": 10,
|
|
492
850
|
"displayName": "Page, sort and filter",
|
|
@@ -496,6 +854,12 @@
|
|
|
496
854
|
}
|
|
497
855
|
},
|
|
498
856
|
{
|
|
857
|
+
"method": "data.compare",
|
|
858
|
+
"version": "2.0",
|
|
859
|
+
"effect": "metadata",
|
|
860
|
+
"requires": [
|
|
861
|
+
"files"
|
|
862
|
+
],
|
|
499
863
|
"presentation": {
|
|
500
864
|
"order": 20,
|
|
501
865
|
"displayName": "Compare two tables",
|
|
@@ -505,11 +869,15 @@
|
|
|
505
869
|
}
|
|
506
870
|
}
|
|
507
871
|
],
|
|
872
|
+
"actions": [],
|
|
508
873
|
"views": [
|
|
509
874
|
{
|
|
510
875
|
"id": "rho.table",
|
|
511
876
|
"version": "0.2.0",
|
|
512
877
|
"ui": "./ui",
|
|
878
|
+
"bindings": {
|
|
879
|
+
"data": "table"
|
|
880
|
+
},
|
|
513
881
|
"presentation": {
|
|
514
882
|
"description": "Shows table rows with their declared types and stable keys.",
|
|
515
883
|
"displayName": "Table",
|
|
@@ -523,6 +891,53 @@
|
|
|
523
891
|
"id": "tables.workspace",
|
|
524
892
|
"version": "1.1",
|
|
525
893
|
"digest": "c5da9fda0f6fb8db603de57d9f0132ac5620193ba4d72af1c635d6087dd7b3b9",
|
|
894
|
+
"intent": "Page and compare a typed table without inventing identity from row order.",
|
|
895
|
+
"requires": [
|
|
896
|
+
"resource.register",
|
|
897
|
+
"data.page",
|
|
898
|
+
"data.compare"
|
|
899
|
+
],
|
|
900
|
+
"example": {
|
|
901
|
+
"method": "data.page",
|
|
902
|
+
"input": {
|
|
903
|
+
"resource": {
|
|
904
|
+
"id": "4702434457c0465d6dfbb54793b62d327c9aa4f419be2f5fc6cf92c6918eeaf1",
|
|
905
|
+
"version": "3f9d2b0e1a4c5f6d7e8f90a1b2c3d4e5f60718293a4b5c6d7e8f90a1b2c3d4e5"
|
|
906
|
+
},
|
|
907
|
+
"offset": 0,
|
|
908
|
+
"limit": 50,
|
|
909
|
+
"sort": {
|
|
910
|
+
"column": "score",
|
|
911
|
+
"direction": "desc"
|
|
912
|
+
}
|
|
913
|
+
}
|
|
914
|
+
},
|
|
915
|
+
"failureRecipes": [
|
|
916
|
+
{
|
|
917
|
+
"kind": "stale",
|
|
918
|
+
"message": "Resource version changed.",
|
|
919
|
+
"next": "Register or re-read the current version; save the new {id, version} before paging again."
|
|
920
|
+
},
|
|
921
|
+
{
|
|
922
|
+
"kind": "limit",
|
|
923
|
+
"message": "Page size exceeds the configured limit.",
|
|
924
|
+
"next": "Ask for fewer rows; the earlier rows stay readable."
|
|
925
|
+
},
|
|
926
|
+
{
|
|
927
|
+
"kind": "invalid",
|
|
928
|
+
"message": "Filter or sort names an unknown column.",
|
|
929
|
+
"next": "Use a declared column name from the registration, not a positional index."
|
|
930
|
+
},
|
|
931
|
+
{
|
|
932
|
+
"kind": "condition",
|
|
933
|
+
"message": "Compare needs two keyed tables in declared namespaces.",
|
|
934
|
+
"next": "Declare a key column and namespace at registration before comparing."
|
|
935
|
+
}
|
|
936
|
+
],
|
|
937
|
+
"verify": {
|
|
938
|
+
"command": "npm run test:tables",
|
|
939
|
+
"description": "Declared types keep leading zeros and literal NA, joins retain nulls, namespaces and both input versions, and unkeyed tables never fabricate keys."
|
|
940
|
+
},
|
|
526
941
|
"presentation": {
|
|
527
942
|
"displayName": "Table workspace",
|
|
528
943
|
"description": "Teaches Claude Code to use declared types, stable keys and exact table versions."
|
|
@@ -535,6 +950,7 @@
|
|
|
535
950
|
"id": "media",
|
|
536
951
|
"package": "@rho-workspace/plugin-media",
|
|
537
952
|
"version": "0.4.0",
|
|
953
|
+
"packageVersion": "0.4.0",
|
|
538
954
|
"requires": [
|
|
539
955
|
"files"
|
|
540
956
|
],
|
|
@@ -580,8 +996,14 @@
|
|
|
580
996
|
"runsCode": false
|
|
581
997
|
},
|
|
582
998
|
"listing": {
|
|
583
|
-
"
|
|
999
|
+
"operations": [
|
|
584
1000
|
{
|
|
1001
|
+
"method": "media.describe",
|
|
1002
|
+
"version": "2.0",
|
|
1003
|
+
"effect": "read",
|
|
1004
|
+
"requires": [
|
|
1005
|
+
"files"
|
|
1006
|
+
],
|
|
585
1007
|
"presentation": {
|
|
586
1008
|
"order": 10,
|
|
587
1009
|
"displayName": "Describe an image or PDF and check regions",
|
|
@@ -591,11 +1013,15 @@
|
|
|
591
1013
|
}
|
|
592
1014
|
}
|
|
593
1015
|
],
|
|
1016
|
+
"actions": [],
|
|
594
1017
|
"views": [
|
|
595
1018
|
{
|
|
596
1019
|
"id": "rho.media",
|
|
597
1020
|
"version": "0.2.0",
|
|
598
1021
|
"ui": "./ui",
|
|
1022
|
+
"bindings": {
|
|
1023
|
+
"data": "media"
|
|
1024
|
+
},
|
|
599
1025
|
"presentation": {
|
|
600
1026
|
"description": "Shows an image or PDF with its original source reference.",
|
|
601
1027
|
"displayName": "Media",
|
|
@@ -609,6 +1035,42 @@
|
|
|
609
1035
|
"id": "media.workspace",
|
|
610
1036
|
"version": "1.1",
|
|
611
1037
|
"digest": "0a0f6bfd15daef696a399e855a23fb53d25a6ad8b964e02ac5029e23ac8ebaeb",
|
|
1038
|
+
"intent": "Describe media and select a region in original coordinates.",
|
|
1039
|
+
"requires": [
|
|
1040
|
+
"media.describe",
|
|
1041
|
+
"resource.register",
|
|
1042
|
+
"object.read"
|
|
1043
|
+
],
|
|
1044
|
+
"example": {
|
|
1045
|
+
"method": "media.describe",
|
|
1046
|
+
"input": {
|
|
1047
|
+
"resource": {
|
|
1048
|
+
"id": "9f1c2d3e4b5a69788796a5b4c3d2e1f00112233445566778899aabbccddeeff0",
|
|
1049
|
+
"version": "3f9d2b0e1a4c5f6d7e8f90a1b2c3d4e5f60718293a4b5c6d7e8f90a1b2c3d4e5"
|
|
1050
|
+
}
|
|
1051
|
+
}
|
|
1052
|
+
},
|
|
1053
|
+
"failureRecipes": [
|
|
1054
|
+
{
|
|
1055
|
+
"kind": "invalid",
|
|
1056
|
+
"message": "Region lies outside the declared media bounds.",
|
|
1057
|
+
"next": "Use coordinates inside width and height from the registration; a region is never clamped."
|
|
1058
|
+
},
|
|
1059
|
+
{
|
|
1060
|
+
"kind": "stale",
|
|
1061
|
+
"message": "Resource version changed.",
|
|
1062
|
+
"next": "Re-register the current bytes and describe the new version."
|
|
1063
|
+
},
|
|
1064
|
+
{
|
|
1065
|
+
"kind": "unavailable",
|
|
1066
|
+
"message": "This build selects no renderer.",
|
|
1067
|
+
"next": "Describe and select stay available; only rendering is missing."
|
|
1068
|
+
}
|
|
1069
|
+
],
|
|
1070
|
+
"verify": {
|
|
1071
|
+
"command": "npm run test:media",
|
|
1072
|
+
"description": "Registers media, maps a selection to original coordinates, and refuses a region outside the declared bounds."
|
|
1073
|
+
},
|
|
612
1074
|
"presentation": {
|
|
613
1075
|
"displayName": "Media workspace",
|
|
614
1076
|
"description": "Teaches Claude Code to inspect original media metadata and validate coordinate regions."
|
|
@@ -621,6 +1083,7 @@
|
|
|
621
1083
|
"id": "charts",
|
|
622
1084
|
"package": "@rho-workspace/plugin-charts",
|
|
623
1085
|
"version": "0.4.0",
|
|
1086
|
+
"packageVersion": "0.4.0",
|
|
624
1087
|
"requires": [
|
|
625
1088
|
"tables"
|
|
626
1089
|
],
|
|
@@ -679,8 +1142,14 @@
|
|
|
679
1142
|
"runsCode": false
|
|
680
1143
|
},
|
|
681
1144
|
"listing": {
|
|
682
|
-
"
|
|
1145
|
+
"operations": [
|
|
683
1146
|
{
|
|
1147
|
+
"method": "data.plot",
|
|
1148
|
+
"version": "2.0",
|
|
1149
|
+
"effect": "read",
|
|
1150
|
+
"requires": [
|
|
1151
|
+
"tables"
|
|
1152
|
+
],
|
|
684
1153
|
"presentation": {
|
|
685
1154
|
"order": 10,
|
|
686
1155
|
"displayName": "Plot two numeric columns",
|
|
@@ -690,11 +1159,15 @@
|
|
|
690
1159
|
}
|
|
691
1160
|
}
|
|
692
1161
|
],
|
|
1162
|
+
"actions": [],
|
|
693
1163
|
"views": [
|
|
694
1164
|
{
|
|
695
1165
|
"id": "rho.scatter",
|
|
696
1166
|
"version": "0.2.0",
|
|
697
1167
|
"ui": "./ui",
|
|
1168
|
+
"bindings": {
|
|
1169
|
+
"data": "table"
|
|
1170
|
+
},
|
|
698
1171
|
"presentation": {
|
|
699
1172
|
"description": "Shows a scatter plot whose points trace to their source rows.",
|
|
700
1173
|
"displayName": "Scatter",
|
|
@@ -708,6 +1181,50 @@
|
|
|
708
1181
|
"id": "charts.workspace",
|
|
709
1182
|
"version": "1.1",
|
|
710
1183
|
"digest": "44077df075458acf1b04464fc8fdf5fce9e5528a5f1cee4b73d68fa71b34a867",
|
|
1184
|
+
"intent": "Plot two numeric columns of one table version, bounded and reproducible.",
|
|
1185
|
+
"requires": [
|
|
1186
|
+
"data.plot",
|
|
1187
|
+
"data.page",
|
|
1188
|
+
"resource.register"
|
|
1189
|
+
],
|
|
1190
|
+
"example": {
|
|
1191
|
+
"method": "data.plot",
|
|
1192
|
+
"input": {
|
|
1193
|
+
"resource": {
|
|
1194
|
+
"id": "4702434457c0465d6dfbb54793b62d327c9aa4f419be2f5fc6cf92c6918eeaf1",
|
|
1195
|
+
"version": "3f9d2b0e1a4c5f6d7e8f90a1b2c3d4e5f60718293a4b5c6d7e8f90a1b2c3d4e5"
|
|
1196
|
+
},
|
|
1197
|
+
"x": "value",
|
|
1198
|
+
"y": "value",
|
|
1199
|
+
"maxPoints": 1000
|
|
1200
|
+
}
|
|
1201
|
+
},
|
|
1202
|
+
"failureRecipes": [
|
|
1203
|
+
{
|
|
1204
|
+
"kind": "condition",
|
|
1205
|
+
"message": "Entity interaction requires an explicit unique key and namespace.",
|
|
1206
|
+
"next": "Register the table with a key column and namespace before plotting it."
|
|
1207
|
+
},
|
|
1208
|
+
{
|
|
1209
|
+
"kind": "invalid",
|
|
1210
|
+
"message": "Declare numeric scatter coordinate fields.",
|
|
1211
|
+
"next": "Name two columns declared as number; a string column cannot be a coordinate."
|
|
1212
|
+
},
|
|
1213
|
+
{
|
|
1214
|
+
"kind": "stale",
|
|
1215
|
+
"message": "Resource version changed.",
|
|
1216
|
+
"next": "Re-register the current bytes and plot the new version."
|
|
1217
|
+
},
|
|
1218
|
+
{
|
|
1219
|
+
"kind": "limit",
|
|
1220
|
+
"message": "Plot request exceeds the point budget.",
|
|
1221
|
+
"next": "Lower maxPoints or accept the deterministic downsample the reply reports."
|
|
1222
|
+
}
|
|
1223
|
+
],
|
|
1224
|
+
"verify": {
|
|
1225
|
+
"command": "npm run test:charts",
|
|
1226
|
+
"description": "A plot names the exact table version it read, downsamples to the point budget, and a changed file makes the version stale."
|
|
1227
|
+
},
|
|
711
1228
|
"presentation": {
|
|
712
1229
|
"displayName": "Chart workspace",
|
|
713
1230
|
"description": "Teaches Claude Code to bind chart columns and keep point selections tied to stable rows."
|
|
@@ -716,10 +1233,203 @@
|
|
|
716
1233
|
]
|
|
717
1234
|
}
|
|
718
1235
|
},
|
|
1236
|
+
{
|
|
1237
|
+
"id": "annotations",
|
|
1238
|
+
"package": "@rho-workspace/plugin-annotations",
|
|
1239
|
+
"version": "0.5.2",
|
|
1240
|
+
"packageVersion": "0.5.2",
|
|
1241
|
+
"requires": [
|
|
1242
|
+
"documents"
|
|
1243
|
+
],
|
|
1244
|
+
"presentation": {
|
|
1245
|
+
"categoryOrder": 30,
|
|
1246
|
+
"order": 20,
|
|
1247
|
+
"description": "Comments attach to an exact code range or table entity and preserve the source version they refer to. Claude Code can read them and explicitly link a reply; making a comment available does not claim the Agent has read it.",
|
|
1248
|
+
"icon": {
|
|
1249
|
+
"background": "#FBF2D8",
|
|
1250
|
+
"color": "#8A6A10",
|
|
1251
|
+
"paths": [
|
|
1252
|
+
"M5 5h14a1 1 0 0 1 1 1v9a1 1 0 0 1-1 1h-8l-4 3v-3H5a1 1 0 0 1-1-1V6a1 1 0 0 1 1-1z"
|
|
1253
|
+
]
|
|
1254
|
+
},
|
|
1255
|
+
"dependencies": [
|
|
1256
|
+
{
|
|
1257
|
+
"pluginId": "documents",
|
|
1258
|
+
"purpose": "to freeze comment and reply messages"
|
|
1259
|
+
}
|
|
1260
|
+
],
|
|
1261
|
+
"developer": "Rho",
|
|
1262
|
+
"license": "AGPL-3.0-only",
|
|
1263
|
+
"links": [
|
|
1264
|
+
{
|
|
1265
|
+
"label": "Source",
|
|
1266
|
+
"url": "https://github.com/YuLab-SMU/Rho-plugins/tree/main/plugins/annotations"
|
|
1267
|
+
},
|
|
1268
|
+
{
|
|
1269
|
+
"label": "Privacy",
|
|
1270
|
+
"url": "https://github.com/YuLab-SMU/Rho-plugins/blob/main/PRIVACY.md"
|
|
1271
|
+
}
|
|
1272
|
+
],
|
|
1273
|
+
"displayName": "Annotations",
|
|
1274
|
+
"tagline": "Comments the Agent can read and answer",
|
|
1275
|
+
"category": "Working with your Agent",
|
|
1276
|
+
"examplePrompts": [
|
|
1277
|
+
"“Read my comments on clean.R and reply to each one.”",
|
|
1278
|
+
"“List the comments in this project that have no reply yet.”",
|
|
1279
|
+
"“Leave a note on line 42 of fit.R explaining the change.”"
|
|
1280
|
+
],
|
|
1281
|
+
"viewNote": "Inside other views",
|
|
1282
|
+
"readOnly": false,
|
|
1283
|
+
"runsCode": false
|
|
1284
|
+
},
|
|
1285
|
+
"listing": {
|
|
1286
|
+
"operations": [
|
|
1287
|
+
{
|
|
1288
|
+
"method": "annotation.create",
|
|
1289
|
+
"version": "2.0",
|
|
1290
|
+
"effect": "metadata",
|
|
1291
|
+
"requires": [
|
|
1292
|
+
"documents"
|
|
1293
|
+
],
|
|
1294
|
+
"presentation": {
|
|
1295
|
+
"order": 10,
|
|
1296
|
+
"displayName": "Create",
|
|
1297
|
+
"description": "Submits a comment with its exact source anchor and message.",
|
|
1298
|
+
"readOnly": false,
|
|
1299
|
+
"runsCode": false
|
|
1300
|
+
}
|
|
1301
|
+
},
|
|
1302
|
+
{
|
|
1303
|
+
"method": "annotation.reply",
|
|
1304
|
+
"version": "2.0",
|
|
1305
|
+
"effect": "metadata",
|
|
1306
|
+
"requires": [
|
|
1307
|
+
"documents"
|
|
1308
|
+
],
|
|
1309
|
+
"presentation": {
|
|
1310
|
+
"order": 40,
|
|
1311
|
+
"displayName": "Reply",
|
|
1312
|
+
"description": "Links an explicit reply to a submitted comment.",
|
|
1313
|
+
"readOnly": false,
|
|
1314
|
+
"runsCode": false
|
|
1315
|
+
}
|
|
1316
|
+
},
|
|
1317
|
+
{
|
|
1318
|
+
"method": "annotation.decide",
|
|
1319
|
+
"version": "2.0",
|
|
1320
|
+
"effect": "metadata",
|
|
1321
|
+
"requires": [
|
|
1322
|
+
"documents"
|
|
1323
|
+
],
|
|
1324
|
+
"presentation": {
|
|
1325
|
+
"displayName": "Record decision",
|
|
1326
|
+
"description": "Records the person’s decision about exact result versions.",
|
|
1327
|
+
"readOnly": false,
|
|
1328
|
+
"runsCode": false
|
|
1329
|
+
}
|
|
1330
|
+
},
|
|
1331
|
+
{
|
|
1332
|
+
"method": "annotation.read",
|
|
1333
|
+
"version": "2.0",
|
|
1334
|
+
"effect": "read",
|
|
1335
|
+
"requires": [
|
|
1336
|
+
"documents"
|
|
1337
|
+
],
|
|
1338
|
+
"presentation": {
|
|
1339
|
+
"order": 30,
|
|
1340
|
+
"displayName": "Read",
|
|
1341
|
+
"description": "Reads a comment and its retained source context.",
|
|
1342
|
+
"readOnly": true,
|
|
1343
|
+
"runsCode": false
|
|
1344
|
+
}
|
|
1345
|
+
},
|
|
1346
|
+
{
|
|
1347
|
+
"method": "annotation.list",
|
|
1348
|
+
"version": "2.0",
|
|
1349
|
+
"effect": "read",
|
|
1350
|
+
"requires": [
|
|
1351
|
+
"documents"
|
|
1352
|
+
],
|
|
1353
|
+
"presentation": {
|
|
1354
|
+
"order": 20,
|
|
1355
|
+
"displayName": "List",
|
|
1356
|
+
"description": "Lists comments and their reply state.",
|
|
1357
|
+
"readOnly": true,
|
|
1358
|
+
"runsCode": false
|
|
1359
|
+
}
|
|
1360
|
+
}
|
|
1361
|
+
],
|
|
1362
|
+
"actions": [],
|
|
1363
|
+
"views": [
|
|
1364
|
+
{
|
|
1365
|
+
"id": "rho.feedback",
|
|
1366
|
+
"version": "0.2.0",
|
|
1367
|
+
"ui": "./ui",
|
|
1368
|
+
"bindings": {
|
|
1369
|
+
"draft": "document"
|
|
1370
|
+
},
|
|
1371
|
+
"presentation": {
|
|
1372
|
+
"displayName": "Feedback",
|
|
1373
|
+
"description": "Asks about selected objects and follows original delivery and linked replies.",
|
|
1374
|
+
"readOnly": false,
|
|
1375
|
+
"runsCode": false
|
|
1376
|
+
}
|
|
1377
|
+
}
|
|
1378
|
+
],
|
|
1379
|
+
"skills": [
|
|
1380
|
+
{
|
|
1381
|
+
"id": "annotations.workspace",
|
|
1382
|
+
"version": "1.1",
|
|
1383
|
+
"digest": "e4bcb4b32ff641e040f2ebda2259f75bdb2765afae49273325f63852c5a1bef7",
|
|
1384
|
+
"presentation": {
|
|
1385
|
+
"displayName": "Annotation workspace",
|
|
1386
|
+
"description": "Teaches Claude Code to preserve versioned anchors and link replies to submitted comments."
|
|
1387
|
+
},
|
|
1388
|
+
"intent": "Submit and follow anchored feedback without rebasing the original message.",
|
|
1389
|
+
"requires": [
|
|
1390
|
+
"annotation.create",
|
|
1391
|
+
"annotation.read",
|
|
1392
|
+
"annotation.list",
|
|
1393
|
+
"annotation.reply",
|
|
1394
|
+
"context.create",
|
|
1395
|
+
"context.read"
|
|
1396
|
+
],
|
|
1397
|
+
"example": {
|
|
1398
|
+
"method": "annotation.list",
|
|
1399
|
+
"input": {
|
|
1400
|
+
"projectId": "the-open-project"
|
|
1401
|
+
}
|
|
1402
|
+
},
|
|
1403
|
+
"failureRecipes": [
|
|
1404
|
+
{
|
|
1405
|
+
"kind": "stale",
|
|
1406
|
+
"message": "Anchor or thread advanced past the submitted version.",
|
|
1407
|
+
"next": "Read the thread, then reply with an explicit replyTo instead of moving the original anchor."
|
|
1408
|
+
},
|
|
1409
|
+
{
|
|
1410
|
+
"kind": "scope",
|
|
1411
|
+
"message": "Selection or anchor is outside this binding.",
|
|
1412
|
+
"next": "Anchor inside the document or table the binding owns."
|
|
1413
|
+
},
|
|
1414
|
+
{
|
|
1415
|
+
"kind": "invalid",
|
|
1416
|
+
"message": "Anchor range or entity key is malformed.",
|
|
1417
|
+
"next": "Use UTF-16 offsets for documents and a declared entity key for tables."
|
|
1418
|
+
}
|
|
1419
|
+
],
|
|
1420
|
+
"verify": {
|
|
1421
|
+
"command": "npm run test:annotations",
|
|
1422
|
+
"description": "Submits anchored messages over versioned drafts, advances threads conditionally and keeps original snapshots."
|
|
1423
|
+
}
|
|
1424
|
+
}
|
|
1425
|
+
]
|
|
1426
|
+
}
|
|
1427
|
+
},
|
|
719
1428
|
{
|
|
720
1429
|
"id": "agent",
|
|
721
1430
|
"package": "@rho-workspace/plugin-agent",
|
|
722
|
-
"version": "0.4.
|
|
1431
|
+
"version": "0.4.33",
|
|
1432
|
+
"packageVersion": "0.4.33",
|
|
723
1433
|
"requires": [],
|
|
724
1434
|
"presentation": {
|
|
725
1435
|
"categoryOrder": 30,
|
|
@@ -767,8 +1477,12 @@
|
|
|
767
1477
|
"runsCode": false
|
|
768
1478
|
},
|
|
769
1479
|
"listing": {
|
|
770
|
-
"
|
|
1480
|
+
"operations": [
|
|
771
1481
|
{
|
|
1482
|
+
"method": "agent.sessions.list",
|
|
1483
|
+
"version": "2.0",
|
|
1484
|
+
"effect": "read",
|
|
1485
|
+
"requires": [],
|
|
772
1486
|
"presentation": {
|
|
773
1487
|
"order": 58,
|
|
774
1488
|
"displayName": "External conversations",
|
|
@@ -778,6 +1492,10 @@
|
|
|
778
1492
|
}
|
|
779
1493
|
},
|
|
780
1494
|
{
|
|
1495
|
+
"method": "agent.sessions.read",
|
|
1496
|
+
"version": "2.0",
|
|
1497
|
+
"effect": "read",
|
|
1498
|
+
"requires": [],
|
|
781
1499
|
"presentation": {
|
|
782
1500
|
"order": 59,
|
|
783
1501
|
"displayName": "External conversation",
|
|
@@ -787,6 +1505,10 @@
|
|
|
787
1505
|
}
|
|
788
1506
|
},
|
|
789
1507
|
{
|
|
1508
|
+
"method": "agent.activity.read",
|
|
1509
|
+
"version": "2.0",
|
|
1510
|
+
"effect": "read",
|
|
1511
|
+
"requires": [],
|
|
790
1512
|
"presentation": {
|
|
791
1513
|
"order": 62,
|
|
792
1514
|
"displayName": "Agent activity",
|
|
@@ -796,6 +1518,10 @@
|
|
|
796
1518
|
}
|
|
797
1519
|
},
|
|
798
1520
|
{
|
|
1521
|
+
"method": "agent.activity.outputs",
|
|
1522
|
+
"version": "2.0",
|
|
1523
|
+
"effect": "read",
|
|
1524
|
+
"requires": [],
|
|
799
1525
|
"presentation": {
|
|
800
1526
|
"order": 63,
|
|
801
1527
|
"displayName": "Observed outputs",
|
|
@@ -805,6 +1531,12 @@
|
|
|
805
1531
|
}
|
|
806
1532
|
},
|
|
807
1533
|
{
|
|
1534
|
+
"method": "agent.activity.capture",
|
|
1535
|
+
"version": "2.0",
|
|
1536
|
+
"effect": "metadata",
|
|
1537
|
+
"requires": [
|
|
1538
|
+
"files"
|
|
1539
|
+
],
|
|
808
1540
|
"presentation": {
|
|
809
1541
|
"order": 64,
|
|
810
1542
|
"displayName": "Open observed output",
|
|
@@ -814,6 +1546,10 @@
|
|
|
814
1546
|
}
|
|
815
1547
|
},
|
|
816
1548
|
{
|
|
1549
|
+
"method": "context.create",
|
|
1550
|
+
"version": "2.0",
|
|
1551
|
+
"effect": "metadata",
|
|
1552
|
+
"requires": [],
|
|
817
1553
|
"presentation": {
|
|
818
1554
|
"order": 10,
|
|
819
1555
|
"displayName": "Share and read context",
|
|
@@ -823,6 +1559,10 @@
|
|
|
823
1559
|
}
|
|
824
1560
|
},
|
|
825
1561
|
{
|
|
1562
|
+
"method": "context.read",
|
|
1563
|
+
"version": "2.0",
|
|
1564
|
+
"effect": "read",
|
|
1565
|
+
"requires": [],
|
|
826
1566
|
"presentation": {
|
|
827
1567
|
"order": 20,
|
|
828
1568
|
"displayName": "Share and read context",
|
|
@@ -832,6 +1572,10 @@
|
|
|
832
1572
|
}
|
|
833
1573
|
},
|
|
834
1574
|
{
|
|
1575
|
+
"method": "binding.list",
|
|
1576
|
+
"version": "2.0",
|
|
1577
|
+
"effect": "read",
|
|
1578
|
+
"requires": [],
|
|
835
1579
|
"presentation": {
|
|
836
1580
|
"order": 30,
|
|
837
1581
|
"displayName": "Open and close views",
|
|
@@ -841,6 +1585,10 @@
|
|
|
841
1585
|
}
|
|
842
1586
|
},
|
|
843
1587
|
{
|
|
1588
|
+
"method": "binding.activity",
|
|
1589
|
+
"version": "2.0",
|
|
1590
|
+
"effect": "read",
|
|
1591
|
+
"requires": [],
|
|
844
1592
|
"presentation": {
|
|
845
1593
|
"order": 60,
|
|
846
1594
|
"displayName": "Activity",
|
|
@@ -850,6 +1598,10 @@
|
|
|
850
1598
|
}
|
|
851
1599
|
},
|
|
852
1600
|
{
|
|
1601
|
+
"method": "binding.open",
|
|
1602
|
+
"version": "2.0",
|
|
1603
|
+
"effect": "metadata",
|
|
1604
|
+
"requires": [],
|
|
853
1605
|
"presentation": {
|
|
854
1606
|
"order": 40,
|
|
855
1607
|
"displayName": "Open and close views",
|
|
@@ -859,6 +1611,10 @@
|
|
|
859
1611
|
}
|
|
860
1612
|
},
|
|
861
1613
|
{
|
|
1614
|
+
"method": "binding.close",
|
|
1615
|
+
"version": "2.0",
|
|
1616
|
+
"effect": "metadata",
|
|
1617
|
+
"requires": [],
|
|
862
1618
|
"presentation": {
|
|
863
1619
|
"order": 50,
|
|
864
1620
|
"displayName": "Open and close views",
|
|
@@ -868,6 +1624,13 @@
|
|
|
868
1624
|
}
|
|
869
1625
|
},
|
|
870
1626
|
{
|
|
1627
|
+
"method": "feedback.submit",
|
|
1628
|
+
"version": "2.0",
|
|
1629
|
+
"effect": "metadata",
|
|
1630
|
+
"requires": [
|
|
1631
|
+
"documents",
|
|
1632
|
+
"annotations"
|
|
1633
|
+
],
|
|
871
1634
|
"presentation": {
|
|
872
1635
|
"order": 70,
|
|
873
1636
|
"displayName": "Feedback",
|
|
@@ -877,6 +1640,12 @@
|
|
|
877
1640
|
}
|
|
878
1641
|
},
|
|
879
1642
|
{
|
|
1643
|
+
"method": "feedback.read",
|
|
1644
|
+
"version": "2.0",
|
|
1645
|
+
"effect": "metadata",
|
|
1646
|
+
"requires": [
|
|
1647
|
+
"annotations"
|
|
1648
|
+
],
|
|
880
1649
|
"presentation": {
|
|
881
1650
|
"order": 71,
|
|
882
1651
|
"displayName": "Feedback",
|
|
@@ -886,6 +1655,10 @@
|
|
|
886
1655
|
}
|
|
887
1656
|
},
|
|
888
1657
|
{
|
|
1658
|
+
"method": "feedback.status",
|
|
1659
|
+
"version": "2.0",
|
|
1660
|
+
"effect": "read",
|
|
1661
|
+
"requires": [],
|
|
889
1662
|
"presentation": {
|
|
890
1663
|
"order": 72,
|
|
891
1664
|
"displayName": "Feedback",
|
|
@@ -895,6 +1668,10 @@
|
|
|
895
1668
|
}
|
|
896
1669
|
},
|
|
897
1670
|
{
|
|
1671
|
+
"method": "binding.activity.append",
|
|
1672
|
+
"version": "2.0",
|
|
1673
|
+
"effect": "metadata",
|
|
1674
|
+
"requires": [],
|
|
898
1675
|
"presentation": {
|
|
899
1676
|
"order": 61,
|
|
900
1677
|
"displayName": "Activity",
|
|
@@ -904,11 +1681,13 @@
|
|
|
904
1681
|
}
|
|
905
1682
|
}
|
|
906
1683
|
],
|
|
1684
|
+
"actions": [],
|
|
907
1685
|
"views": [
|
|
908
1686
|
{
|
|
909
1687
|
"id": "rho.agent-note",
|
|
910
1688
|
"version": "0.2.0",
|
|
911
1689
|
"ui": "./ui",
|
|
1690
|
+
"bindings": {},
|
|
912
1691
|
"presentation": {
|
|
913
1692
|
"displayName": "Agent note",
|
|
914
1693
|
"description": "A plain presentation explanation with authenticated author and binding basis.",
|
|
@@ -922,6 +1701,46 @@
|
|
|
922
1701
|
"id": "agent.workspace",
|
|
923
1702
|
"version": "1.2",
|
|
924
1703
|
"digest": "0228d41b186fd5fd622156b6f7f30ff524c66573006bb822b72cb1060746730a",
|
|
1704
|
+
"intent": "Give a native session exact prepared context and keep its binding identity.",
|
|
1705
|
+
"requires": [
|
|
1706
|
+
"context.create",
|
|
1707
|
+
"context.read",
|
|
1708
|
+
"binding.open",
|
|
1709
|
+
"binding.list",
|
|
1710
|
+
"binding.activity"
|
|
1711
|
+
],
|
|
1712
|
+
"example": {
|
|
1713
|
+
"method": "context.create",
|
|
1714
|
+
"input": {
|
|
1715
|
+
"document": {
|
|
1716
|
+
"documentId": "5df1e6280c70fa8475dfd6bb1a6165b302443640224c893510eed728058adac0",
|
|
1717
|
+
"version": 1,
|
|
1718
|
+
"from": 0,
|
|
1719
|
+
"to": 12
|
|
1720
|
+
}
|
|
1721
|
+
}
|
|
1722
|
+
},
|
|
1723
|
+
"failureRecipes": [
|
|
1724
|
+
{
|
|
1725
|
+
"kind": "stale",
|
|
1726
|
+
"message": "Context source version changed.",
|
|
1727
|
+
"next": "Build a new context from the current version; do not edit through an old snapshot."
|
|
1728
|
+
},
|
|
1729
|
+
{
|
|
1730
|
+
"kind": "scope",
|
|
1731
|
+
"message": "Binding belongs to a different task or principal.",
|
|
1732
|
+
"next": "Use the binding issued for this task and role; a forged attachment is refused."
|
|
1733
|
+
},
|
|
1734
|
+
{
|
|
1735
|
+
"kind": "unavailable",
|
|
1736
|
+
"message": "No native adapter is registered.",
|
|
1737
|
+
"next": "Ask the operator to register the adapter for this project before opening a binding."
|
|
1738
|
+
}
|
|
1739
|
+
],
|
|
1740
|
+
"verify": {
|
|
1741
|
+
"command": "npm run test:native",
|
|
1742
|
+
"description": "Registers a native adapter, opens a business binding, refuses a forged one, and records artifact-ready observations without a model call."
|
|
1743
|
+
},
|
|
925
1744
|
"presentation": {
|
|
926
1745
|
"displayName": "Agent workspace",
|
|
927
1746
|
"description": "Teaches Claude Code to fetch explicit context and preserve the original identity of changes."
|
|
@@ -931,6 +1750,50 @@
|
|
|
931
1750
|
"id": "agent.feedback",
|
|
932
1751
|
"version": "1.1",
|
|
933
1752
|
"digest": "9b38022bd4d6566f3112ace0f756b3e56855740f9de6afbe14d5851550d5ee2f",
|
|
1753
|
+
"intent": "Read one original feedback delivery and answer it explicitly.",
|
|
1754
|
+
"requires": [
|
|
1755
|
+
"feedback.read",
|
|
1756
|
+
"feedback.status",
|
|
1757
|
+
"document.read",
|
|
1758
|
+
"document.edit",
|
|
1759
|
+
"annotation.reply"
|
|
1760
|
+
],
|
|
1761
|
+
"example": {
|
|
1762
|
+
"method": "feedback.read",
|
|
1763
|
+
"input": {
|
|
1764
|
+
"taskId": "grades",
|
|
1765
|
+
"deliveryId": "delivery-1",
|
|
1766
|
+
"contextId": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
|
|
1767
|
+
"fetchId": "fetch-1",
|
|
1768
|
+
"query": {
|
|
1769
|
+
"after": 0,
|
|
1770
|
+
"cursor": null,
|
|
1771
|
+
"limit": 50,
|
|
1772
|
+
"maxBytes": 65536
|
|
1773
|
+
}
|
|
1774
|
+
}
|
|
1775
|
+
},
|
|
1776
|
+
"failureRecipes": [
|
|
1777
|
+
{
|
|
1778
|
+
"kind": "limit",
|
|
1779
|
+
"message": "Feedback object exceeds maxBytes.",
|
|
1780
|
+
"next": "Increase maxBytes and read the whole object; never use a partial message."
|
|
1781
|
+
},
|
|
1782
|
+
{
|
|
1783
|
+
"kind": "stale",
|
|
1784
|
+
"message": "Related document changed since the feedback.",
|
|
1785
|
+
"next": "Read the current document version and edit conditionally, keeping human changes."
|
|
1786
|
+
},
|
|
1787
|
+
{
|
|
1788
|
+
"kind": "unauthorized",
|
|
1789
|
+
"message": "Only the original business binding may read this delivery.",
|
|
1790
|
+
"next": "Read it from the binding that received the delivery."
|
|
1791
|
+
}
|
|
1792
|
+
],
|
|
1793
|
+
"verify": {
|
|
1794
|
+
"command": "npm run test:feedback",
|
|
1795
|
+
"description": "Drives the real feedback worker and hook entries without a model: original delivery, whole-object fetch and explicit reply."
|
|
1796
|
+
},
|
|
934
1797
|
"presentation": {
|
|
935
1798
|
"displayName": "Business feedback",
|
|
936
1799
|
"description": "Reads original feedback, preserves current human edits and links an explicit reply."
|
|
@@ -940,151 +1803,248 @@
|
|
|
940
1803
|
"id": "agent.presentation",
|
|
941
1804
|
"version": "1.1",
|
|
942
1805
|
"digest": "89cf29d839abc32d8730465e8c635b0c24d14dee4b624a881db68f48d4e79920",
|
|
1806
|
+
"intent": "Enhance the visible layout for the assigned presenter, display only.",
|
|
1807
|
+
"requires": [
|
|
1808
|
+
"workspace.observe",
|
|
1809
|
+
"workspace.enhance"
|
|
1810
|
+
],
|
|
1811
|
+
"example": {
|
|
1812
|
+
"method": "workspace.observe",
|
|
1813
|
+
"input": {
|
|
1814
|
+
"taskId": "grades",
|
|
1815
|
+
"compositionId": "workspace",
|
|
1816
|
+
"query": {
|
|
1817
|
+
"after": 0,
|
|
1818
|
+
"cursor": null,
|
|
1819
|
+
"limit": 20,
|
|
1820
|
+
"maxBytes": 65536
|
|
1821
|
+
}
|
|
1822
|
+
}
|
|
1823
|
+
},
|
|
1824
|
+
"failureRecipes": [
|
|
1825
|
+
{
|
|
1826
|
+
"kind": "stale",
|
|
1827
|
+
"message": "Witness, generation or layout changed.",
|
|
1828
|
+
"next": "Observe again and form an explicit new intent; never rebase silently."
|
|
1829
|
+
},
|
|
1830
|
+
{
|
|
1831
|
+
"kind": "scope",
|
|
1832
|
+
"message": "Presentation role cannot reach business feedback or documents.",
|
|
1833
|
+
"next": "Stay within workspace.observe and workspace.enhance."
|
|
1834
|
+
},
|
|
1835
|
+
{
|
|
1836
|
+
"kind": "limit",
|
|
1837
|
+
"message": "Note exceeds 600 characters.",
|
|
1838
|
+
"next": "Shorten the note; emphasis and title carry the rest."
|
|
1839
|
+
}
|
|
1840
|
+
],
|
|
1841
|
+
"verify": {
|
|
1842
|
+
"command": "npm run test:presenter",
|
|
1843
|
+
"description": "Presentation enhances display within its witness and role, and refuses business feedback or document access."
|
|
1844
|
+
},
|
|
943
1845
|
"presentation": {
|
|
944
1846
|
"displayName": "Presentation",
|
|
945
1847
|
"description": "Enhances the assigned visible layout without business feedback or document access."
|
|
946
1848
|
}
|
|
947
1849
|
}
|
|
948
|
-
]
|
|
1850
|
+
],
|
|
1851
|
+
"cli": [
|
|
1852
|
+
"rho-agent-observe",
|
|
1853
|
+
"rho-agent-mcp",
|
|
1854
|
+
"rho-agent-acp"
|
|
1855
|
+
],
|
|
1856
|
+
"mcp": {
|
|
1857
|
+
"entry": "./mcp",
|
|
1858
|
+
"transport": "stdio",
|
|
1859
|
+
"tools": [
|
|
1860
|
+
{
|
|
1861
|
+
"name": "rho_index",
|
|
1862
|
+
"description": "Discover optional Rho workspace capabilities alongside your native tools. Core managed execution is chosen only when needed. Select owner or search to page authorized operations. No full schemas are loaded."
|
|
1863
|
+
},
|
|
1864
|
+
{
|
|
1865
|
+
"name": "rho_resolve",
|
|
1866
|
+
"description": "Fetch complete guidance and contracts only for selected operations. Follow whole-object pages; knownRefs reuse bodies you still hold."
|
|
1867
|
+
},
|
|
1868
|
+
{
|
|
1869
|
+
"name": "rho_call",
|
|
1870
|
+
"description": "Call one resolved authorized operation. Large replies return an immutable result reference for rho_read; never repeat a write to retrieve its output."
|
|
1871
|
+
},
|
|
1872
|
+
{
|
|
1873
|
+
"name": "rho_read",
|
|
1874
|
+
"description": "Inspect a retained result by JSON pointer, page containers or text, or explicitly release it. Text offsets count UTF-16 units. Reading never invokes the original operation."
|
|
1875
|
+
}
|
|
1876
|
+
]
|
|
1877
|
+
}
|
|
949
1878
|
}
|
|
950
1879
|
},
|
|
951
1880
|
{
|
|
952
|
-
"id": "
|
|
953
|
-
"package": "@rho-workspace/plugin-
|
|
954
|
-
"version": "0.
|
|
955
|
-
"
|
|
956
|
-
|
|
957
|
-
],
|
|
1881
|
+
"id": "console",
|
|
1882
|
+
"package": "@rho-workspace/plugin-console",
|
|
1883
|
+
"version": "0.3.0",
|
|
1884
|
+
"packageVersion": "0.3.1",
|
|
1885
|
+
"requires": [],
|
|
958
1886
|
"presentation": {
|
|
959
1887
|
"categoryOrder": 30,
|
|
960
|
-
"order":
|
|
961
|
-
"description": "
|
|
1888
|
+
"order": 30,
|
|
1889
|
+
"description": "The Console lists the commands run in a project — the Agent's, from its own reports, and yours — with how each ended, how long it took and what it printed. You can run a command in the project folder yourself, run one again or stop it. It runs only for the person at this machine.",
|
|
962
1890
|
"icon": {
|
|
963
|
-
"background": "#
|
|
964
|
-
"color": "#
|
|
1891
|
+
"background": "#E8ECEF",
|
|
1892
|
+
"color": "#3E4C57",
|
|
965
1893
|
"paths": [
|
|
966
|
-
"
|
|
1894
|
+
"M4.5 5.5h15a1 1 0 0 1 1 1v11a1 1 0 0 1-1 1h-15a1 1 0 0 1-1-1v-11a1 1 0 0 1 1-1z",
|
|
1895
|
+
"m7.5 9.5 2.5 2.5-2.5 2.5",
|
|
1896
|
+
"M12 14.5h4.5"
|
|
967
1897
|
]
|
|
968
1898
|
},
|
|
969
|
-
"dependencies": [
|
|
970
|
-
{
|
|
971
|
-
"pluginId": "documents",
|
|
972
|
-
"purpose": "to freeze comment and reply messages"
|
|
973
|
-
}
|
|
974
|
-
],
|
|
1899
|
+
"dependencies": [],
|
|
975
1900
|
"developer": "Rho",
|
|
976
1901
|
"license": "AGPL-3.0-only",
|
|
977
1902
|
"links": [
|
|
978
1903
|
{
|
|
979
1904
|
"label": "Source",
|
|
980
|
-
"url": "https://github.com/YuLab-SMU/Rho-plugins/tree/main/plugins/
|
|
1905
|
+
"url": "https://github.com/YuLab-SMU/Rho-plugins/tree/main/plugins/console"
|
|
981
1906
|
},
|
|
982
1907
|
{
|
|
983
1908
|
"label": "Privacy",
|
|
984
1909
|
"url": "https://github.com/YuLab-SMU/Rho-plugins/blob/main/PRIVACY.md"
|
|
985
1910
|
}
|
|
986
1911
|
],
|
|
987
|
-
"displayName": "
|
|
988
|
-
"tagline": "
|
|
1912
|
+
"displayName": "Console",
|
|
1913
|
+
"tagline": "Every command run in the project, and yours",
|
|
989
1914
|
"category": "Working with your Agent",
|
|
990
1915
|
"examplePrompts": [
|
|
991
|
-
"“
|
|
992
|
-
"“
|
|
993
|
-
"“
|
|
1916
|
+
"“Run the analysis script again and show me what it printed.”",
|
|
1917
|
+
"“Which command wrote results/summary.csv?”",
|
|
1918
|
+
"“Why did the last command fail?”"
|
|
994
1919
|
],
|
|
995
|
-
"viewNote": "
|
|
1920
|
+
"viewNote": "Its own page in each project",
|
|
996
1921
|
"readOnly": false,
|
|
997
|
-
"runsCode":
|
|
1922
|
+
"runsCode": true
|
|
998
1923
|
},
|
|
999
1924
|
"listing": {
|
|
1000
|
-
"
|
|
1925
|
+
"operations": [
|
|
1001
1926
|
{
|
|
1927
|
+
"method": "console.run",
|
|
1928
|
+
"version": "2.0",
|
|
1929
|
+
"effect": "native",
|
|
1930
|
+
"requires": [],
|
|
1002
1931
|
"presentation": {
|
|
1003
1932
|
"order": 10,
|
|
1004
|
-
"displayName": "
|
|
1005
|
-
"description": "
|
|
1933
|
+
"displayName": "Run a command",
|
|
1934
|
+
"description": "Runs a command you typed in the project folder and keeps what it prints.",
|
|
1006
1935
|
"readOnly": false,
|
|
1007
|
-
"runsCode":
|
|
1936
|
+
"runsCode": true
|
|
1008
1937
|
}
|
|
1009
1938
|
},
|
|
1010
1939
|
{
|
|
1940
|
+
"method": "console.list",
|
|
1941
|
+
"version": "2.0",
|
|
1942
|
+
"effect": "read",
|
|
1943
|
+
"requires": [],
|
|
1011
1944
|
"presentation": {
|
|
1012
|
-
"order":
|
|
1013
|
-
"displayName": "
|
|
1014
|
-
"description": "
|
|
1015
|
-
"readOnly":
|
|
1945
|
+
"order": 20,
|
|
1946
|
+
"displayName": "List commands",
|
|
1947
|
+
"description": "Lists the commands run here, newest first, with how each ended.",
|
|
1948
|
+
"readOnly": true,
|
|
1016
1949
|
"runsCode": false
|
|
1017
1950
|
}
|
|
1018
1951
|
},
|
|
1019
1952
|
{
|
|
1953
|
+
"method": "console.events",
|
|
1954
|
+
"version": "2.0",
|
|
1955
|
+
"effect": "read",
|
|
1956
|
+
"requires": [],
|
|
1020
1957
|
"presentation": {
|
|
1021
|
-
"
|
|
1022
|
-
"
|
|
1023
|
-
"
|
|
1024
|
-
"runsCode": false
|
|
1025
|
-
}
|
|
1026
|
-
},
|
|
1027
|
-
{
|
|
1028
|
-
"presentation": {
|
|
1029
|
-
"order": 30,
|
|
1030
|
-
"displayName": "Read",
|
|
1031
|
-
"description": "Reads a comment and its retained source context.",
|
|
1958
|
+
"order": 25,
|
|
1959
|
+
"displayName": "Read who ran what",
|
|
1960
|
+
"description": "Lists the commands run here, newest first: who ran each, when, in which folder and how it ended.",
|
|
1032
1961
|
"readOnly": true,
|
|
1033
1962
|
"runsCode": false
|
|
1034
1963
|
}
|
|
1035
1964
|
},
|
|
1036
1965
|
{
|
|
1966
|
+
"method": "console.output",
|
|
1967
|
+
"version": "2.0",
|
|
1968
|
+
"effect": "read",
|
|
1969
|
+
"requires": [],
|
|
1037
1970
|
"presentation": {
|
|
1038
|
-
"order":
|
|
1039
|
-
"displayName": "
|
|
1040
|
-
"description": "
|
|
1971
|
+
"order": 30,
|
|
1972
|
+
"displayName": "Read output",
|
|
1973
|
+
"description": "Reads what a command printed, page by page.",
|
|
1041
1974
|
"readOnly": true,
|
|
1042
1975
|
"runsCode": false
|
|
1043
1976
|
}
|
|
1044
|
-
}
|
|
1045
|
-
],
|
|
1046
|
-
"views": [
|
|
1977
|
+
},
|
|
1047
1978
|
{
|
|
1048
|
-
"
|
|
1049
|
-
"version": "
|
|
1050
|
-
"
|
|
1979
|
+
"method": "console.stop",
|
|
1980
|
+
"version": "2.0",
|
|
1981
|
+
"effect": "native",
|
|
1982
|
+
"requires": [],
|
|
1051
1983
|
"presentation": {
|
|
1052
|
-
"
|
|
1053
|
-
"
|
|
1984
|
+
"order": 40,
|
|
1985
|
+
"displayName": "Stop a command",
|
|
1986
|
+
"description": "Asks a running command and the processes it started to stop.",
|
|
1054
1987
|
"readOnly": false,
|
|
1055
1988
|
"runsCode": false
|
|
1056
1989
|
}
|
|
1057
1990
|
}
|
|
1058
1991
|
],
|
|
1992
|
+
"actions": [],
|
|
1993
|
+
"views": [],
|
|
1059
1994
|
"skills": [
|
|
1060
1995
|
{
|
|
1061
|
-
"id": "
|
|
1062
|
-
"version": "1.
|
|
1063
|
-
"digest": "
|
|
1996
|
+
"id": "console.workspace",
|
|
1997
|
+
"version": "1.0",
|
|
1998
|
+
"digest": "519f869fbf9a1384f0d592ecf5db93c16516f96b90b95304646dd6d9b8798b59",
|
|
1064
1999
|
"presentation": {
|
|
1065
|
-
"displayName": "
|
|
1066
|
-
"description": "
|
|
2000
|
+
"displayName": "Console",
|
|
2001
|
+
"description": "Explains what the console records and that it runs commands only for the person."
|
|
2002
|
+
},
|
|
2003
|
+
"intent": "Read the commands the person ran and how they ended.",
|
|
2004
|
+
"requires": [
|
|
2005
|
+
"console.list",
|
|
2006
|
+
"console.output"
|
|
2007
|
+
],
|
|
2008
|
+
"example": {
|
|
2009
|
+
"method": "console.list",
|
|
2010
|
+
"input": {
|
|
2011
|
+
"limit": 20
|
|
2012
|
+
}
|
|
2013
|
+
},
|
|
2014
|
+
"failureRecipes": [
|
|
2015
|
+
{
|
|
2016
|
+
"kind": "limit",
|
|
2017
|
+
"message": "Too many commands are running.",
|
|
2018
|
+
"next": "Stop one or wait for it to end, then run again with a new changeId."
|
|
2019
|
+
}
|
|
2020
|
+
],
|
|
2021
|
+
"verify": {
|
|
2022
|
+
"command": "npm run test:console",
|
|
2023
|
+
"description": "Runs, reads and stops commands and keeps their identity across a lost response and a restart."
|
|
1067
2024
|
}
|
|
1068
2025
|
}
|
|
1069
2026
|
]
|
|
1070
2027
|
}
|
|
1071
2028
|
},
|
|
1072
2029
|
{
|
|
1073
|
-
"id": "
|
|
1074
|
-
"package": "@rho-workspace/plugin-
|
|
1075
|
-
"version": "0.
|
|
2030
|
+
"id": "kernel",
|
|
2031
|
+
"package": "@rho-workspace/plugin-kernel",
|
|
2032
|
+
"version": "0.5.1",
|
|
2033
|
+
"packageVersion": "0.5.13",
|
|
1076
2034
|
"requires": [],
|
|
1077
2035
|
"presentation": {
|
|
1078
2036
|
"categoryOrder": 30,
|
|
1079
|
-
"order":
|
|
1080
|
-
"description": "
|
|
2037
|
+
"order": 25,
|
|
2038
|
+
"description": "A live R session and a live Python session for each project, on this machine or on one of your servers. The Agent runs code in them to look at data and try things, and so can you: each cell keeps its code, what it printed, its plots and who ran it, and the session's variables stay between cells. You can interrupt a cell or stop a session; the next cell starts a new one.",
|
|
1081
2039
|
"icon": {
|
|
1082
|
-
"background": "#
|
|
1083
|
-
"color": "#
|
|
2040
|
+
"background": "#E9EEF6",
|
|
2041
|
+
"color": "#33507A",
|
|
1084
2042
|
"paths": [
|
|
1085
|
-
"
|
|
1086
|
-
"
|
|
1087
|
-
"
|
|
2043
|
+
"M5 5.5h14a1 1 0 0 1 1 1v11a1 1 0 0 1-1 1H5a1 1 0 0 1-1-1v-11a1 1 0 0 1 1-1z",
|
|
2044
|
+
"M8 9.5h3",
|
|
2045
|
+
"M8 12h6",
|
|
2046
|
+
"M8 14.5h4.5",
|
|
2047
|
+
"M16.5 9.25v1.5"
|
|
1088
2048
|
]
|
|
1089
2049
|
},
|
|
1090
2050
|
"dependencies": [],
|
|
@@ -1093,82 +2053,601 @@
|
|
|
1093
2053
|
"links": [
|
|
1094
2054
|
{
|
|
1095
2055
|
"label": "Source",
|
|
1096
|
-
"url": "https://github.com/YuLab-SMU/Rho-plugins/tree/main/plugins/
|
|
2056
|
+
"url": "https://github.com/YuLab-SMU/Rho-plugins/tree/main/plugins/kernel"
|
|
1097
2057
|
},
|
|
1098
2058
|
{
|
|
1099
2059
|
"label": "Privacy",
|
|
1100
2060
|
"url": "https://github.com/YuLab-SMU/Rho-plugins/blob/main/PRIVACY.md"
|
|
1101
2061
|
}
|
|
1102
2062
|
],
|
|
1103
|
-
"displayName": "
|
|
1104
|
-
"tagline": "
|
|
2063
|
+
"displayName": "Notebook",
|
|
2064
|
+
"tagline": "Live R and Python the Agent and you share",
|
|
1105
2065
|
"category": "Working with your Agent",
|
|
1106
2066
|
"examplePrompts": [
|
|
1107
|
-
"“
|
|
1108
|
-
"“
|
|
1109
|
-
"“
|
|
2067
|
+
"“Load the table in the R session and show me its columns.”",
|
|
2068
|
+
"“Fit the model in the session and keep it, so I can look at it.”",
|
|
2069
|
+
"“Which variables are in the Python session now?”",
|
|
2070
|
+
"“Run R on the lab server, in ~/projects/rnaseq, and load the counts there.”"
|
|
1110
2071
|
],
|
|
1111
2072
|
"viewNote": "Its own page in each project",
|
|
1112
2073
|
"readOnly": false,
|
|
1113
2074
|
"runsCode": true
|
|
1114
2075
|
},
|
|
1115
2076
|
"listing": {
|
|
1116
|
-
"
|
|
2077
|
+
"operations": [
|
|
1117
2078
|
{
|
|
2079
|
+
"method": "kernel.run",
|
|
2080
|
+
"version": "2.0",
|
|
2081
|
+
"effect": "native",
|
|
2082
|
+
"requires": [],
|
|
1118
2083
|
"presentation": {
|
|
1119
2084
|
"order": 10,
|
|
1120
|
-
"displayName": "Run a
|
|
1121
|
-
"description": "Runs
|
|
2085
|
+
"displayName": "Run a cell",
|
|
2086
|
+
"description": "Runs code in the project's live R or Python session and keeps what it prints, its plots and the session's variables.",
|
|
1122
2087
|
"readOnly": false,
|
|
1123
2088
|
"runsCode": true
|
|
1124
2089
|
}
|
|
1125
2090
|
},
|
|
1126
2091
|
{
|
|
2092
|
+
"method": "kernel.read",
|
|
2093
|
+
"version": "2.0",
|
|
2094
|
+
"effect": "read",
|
|
2095
|
+
"requires": [],
|
|
1127
2096
|
"presentation": {
|
|
1128
2097
|
"order": 20,
|
|
1129
|
-
"displayName": "
|
|
1130
|
-
"description": "
|
|
2098
|
+
"displayName": "Read the session",
|
|
2099
|
+
"description": "Reads the sessions, their variables and the cells run in them.",
|
|
1131
2100
|
"readOnly": true,
|
|
1132
2101
|
"runsCode": false
|
|
1133
2102
|
}
|
|
1134
2103
|
},
|
|
1135
2104
|
{
|
|
2105
|
+
"method": "kernel.events",
|
|
2106
|
+
"version": "2.0",
|
|
2107
|
+
"effect": "read",
|
|
2108
|
+
"requires": [],
|
|
1136
2109
|
"presentation": {
|
|
1137
2110
|
"order": 25,
|
|
1138
2111
|
"displayName": "Read who ran what",
|
|
1139
|
-
"description": "Lists the
|
|
2112
|
+
"description": "Lists the cells run in the sessions, newest first: who ran each, when, where and how it ended.",
|
|
1140
2113
|
"readOnly": true,
|
|
1141
2114
|
"runsCode": false
|
|
1142
2115
|
}
|
|
1143
2116
|
},
|
|
1144
2117
|
{
|
|
2118
|
+
"method": "kernel.plot",
|
|
2119
|
+
"version": "2.0",
|
|
2120
|
+
"effect": "read",
|
|
2121
|
+
"requires": [],
|
|
1145
2122
|
"presentation": {
|
|
1146
2123
|
"order": 30,
|
|
1147
|
-
"displayName": "Read
|
|
1148
|
-
"description": "Reads
|
|
2124
|
+
"displayName": "Read a plot",
|
|
2125
|
+
"description": "Reads one plot a cell drew, as a PNG image.",
|
|
2126
|
+
"readOnly": true,
|
|
2127
|
+
"runsCode": false
|
|
2128
|
+
}
|
|
2129
|
+
},
|
|
2130
|
+
{
|
|
2131
|
+
"method": "kernel.inspect",
|
|
2132
|
+
"version": "2.0",
|
|
2133
|
+
"effect": "read",
|
|
2134
|
+
"requires": [],
|
|
2135
|
+
"presentation": {
|
|
2136
|
+
"order": 35,
|
|
2137
|
+
"displayName": "Look at a value",
|
|
2138
|
+
"description": "Describes one value of a live session: a table's rows and columns, a model's fit and coefficients, a list's parts, a vector's values, a function's code.",
|
|
1149
2139
|
"readOnly": true,
|
|
1150
2140
|
"runsCode": false
|
|
1151
2141
|
}
|
|
1152
2142
|
},
|
|
1153
2143
|
{
|
|
2144
|
+
"method": "kernel.interrupt",
|
|
2145
|
+
"version": "2.0",
|
|
2146
|
+
"effect": "native",
|
|
2147
|
+
"requires": [],
|
|
1154
2148
|
"presentation": {
|
|
1155
2149
|
"order": 40,
|
|
1156
|
-
"displayName": "
|
|
1157
|
-
"description": "
|
|
2150
|
+
"displayName": "Interrupt a cell",
|
|
2151
|
+
"description": "Stops the cell that is running; the session and its variables stay.",
|
|
2152
|
+
"readOnly": false,
|
|
2153
|
+
"runsCode": false
|
|
2154
|
+
}
|
|
2155
|
+
},
|
|
2156
|
+
{
|
|
2157
|
+
"method": "kernel.stop",
|
|
2158
|
+
"version": "2.0",
|
|
2159
|
+
"effect": "native",
|
|
2160
|
+
"requires": [],
|
|
2161
|
+
"presentation": {
|
|
2162
|
+
"order": 50,
|
|
2163
|
+
"displayName": "Stop a session",
|
|
2164
|
+
"description": "Ends a session; its variables are gone.",
|
|
2165
|
+
"readOnly": false,
|
|
2166
|
+
"runsCode": false
|
|
2167
|
+
}
|
|
2168
|
+
},
|
|
2169
|
+
{
|
|
2170
|
+
"method": "kernel.places",
|
|
2171
|
+
"version": "2.0",
|
|
2172
|
+
"effect": "read",
|
|
2173
|
+
"requires": [],
|
|
2174
|
+
"presentation": {
|
|
2175
|
+
"order": 60,
|
|
2176
|
+
"displayName": "Read the places",
|
|
2177
|
+
"description": "Reads the servers sessions can run on, where each language's next session starts, and the files copied from them.",
|
|
2178
|
+
"readOnly": true,
|
|
2179
|
+
"runsCode": false
|
|
2180
|
+
}
|
|
2181
|
+
},
|
|
2182
|
+
{
|
|
2183
|
+
"method": "kernel.place.set",
|
|
2184
|
+
"version": "2.0",
|
|
2185
|
+
"effect": "metadata",
|
|
2186
|
+
"requires": [],
|
|
2187
|
+
"presentation": {
|
|
2188
|
+
"order": 62,
|
|
2189
|
+
"displayName": "Name a place",
|
|
2190
|
+
"description": "Names a folder on a server as a place sessions can run in, removes one, or chooses where R or Python runs next.",
|
|
2191
|
+
"readOnly": false,
|
|
2192
|
+
"runsCode": false
|
|
2193
|
+
}
|
|
2194
|
+
},
|
|
2195
|
+
{
|
|
2196
|
+
"method": "kernel.place.check",
|
|
2197
|
+
"version": "2.0",
|
|
2198
|
+
"effect": "native",
|
|
2199
|
+
"requires": [],
|
|
2200
|
+
"presentation": {
|
|
2201
|
+
"order": 64,
|
|
2202
|
+
"displayName": "Check a place",
|
|
2203
|
+
"description": "Connects to a place and reports its system, its folder, and R and Python there.",
|
|
2204
|
+
"readOnly": true,
|
|
2205
|
+
"runsCode": false
|
|
2206
|
+
}
|
|
2207
|
+
},
|
|
2208
|
+
{
|
|
2209
|
+
"method": "kernel.place.list",
|
|
2210
|
+
"version": "2.0",
|
|
2211
|
+
"effect": "read",
|
|
2212
|
+
"requires": [],
|
|
2213
|
+
"presentation": {
|
|
2214
|
+
"order": 66,
|
|
2215
|
+
"displayName": "List files on a server",
|
|
2216
|
+
"description": "Lists a folder within a place's folder on its server.",
|
|
2217
|
+
"readOnly": true,
|
|
2218
|
+
"runsCode": false
|
|
2219
|
+
}
|
|
2220
|
+
},
|
|
2221
|
+
{
|
|
2222
|
+
"method": "kernel.place.copy",
|
|
2223
|
+
"version": "2.0",
|
|
2224
|
+
"effect": "file",
|
|
2225
|
+
"requires": [],
|
|
2226
|
+
"presentation": {
|
|
2227
|
+
"order": 68,
|
|
2228
|
+
"displayName": "Copy a file from a server",
|
|
2229
|
+
"description": "Copies one file from a place's folder into the project, under remote/<place>/, with its size, time and digest.",
|
|
1158
2230
|
"readOnly": false,
|
|
1159
2231
|
"runsCode": false
|
|
1160
2232
|
}
|
|
2233
|
+
},
|
|
2234
|
+
{
|
|
2235
|
+
"method": "kernel.servers",
|
|
2236
|
+
"version": "2.0",
|
|
2237
|
+
"effect": "read",
|
|
2238
|
+
"requires": [],
|
|
2239
|
+
"presentation": {
|
|
2240
|
+
"order": 70,
|
|
2241
|
+
"displayName": "Read your servers",
|
|
2242
|
+
"description": "Reads the servers you manage with serverctl and the skills bound to each.",
|
|
2243
|
+
"readOnly": true,
|
|
2244
|
+
"runsCode": false
|
|
2245
|
+
}
|
|
2246
|
+
},
|
|
2247
|
+
{
|
|
2248
|
+
"method": "kernel.server.skill",
|
|
2249
|
+
"version": "2.0",
|
|
2250
|
+
"effect": "read",
|
|
2251
|
+
"requires": [],
|
|
2252
|
+
"presentation": {
|
|
2253
|
+
"order": 72,
|
|
2254
|
+
"displayName": "Read a server's skill",
|
|
2255
|
+
"description": "Reads one skill bound to a server: how that server is used.",
|
|
2256
|
+
"readOnly": true,
|
|
2257
|
+
"runsCode": false
|
|
2258
|
+
}
|
|
1161
2259
|
}
|
|
1162
2260
|
],
|
|
2261
|
+
"actions": [],
|
|
2262
|
+
"views": [
|
|
2263
|
+
{
|
|
2264
|
+
"id": "rho.notebook",
|
|
2265
|
+
"version": "1",
|
|
2266
|
+
"ui": "./ui",
|
|
2267
|
+
"bindings": {},
|
|
2268
|
+
"presentation": {
|
|
2269
|
+
"displayName": "Notebook",
|
|
2270
|
+
"description": "The cells run in the live R and Python sessions, with who ran each and why, what it printed and its plots, and a line to run your own.",
|
|
2271
|
+
"readOnly": false,
|
|
2272
|
+
"runsCode": true
|
|
2273
|
+
}
|
|
2274
|
+
},
|
|
2275
|
+
{
|
|
2276
|
+
"id": "rho.variables",
|
|
2277
|
+
"version": "1",
|
|
2278
|
+
"ui": "./ui",
|
|
2279
|
+
"bindings": {},
|
|
2280
|
+
"presentation": {
|
|
2281
|
+
"displayName": "Variables",
|
|
2282
|
+
"description": "The values each live session holds now.",
|
|
2283
|
+
"readOnly": true,
|
|
2284
|
+
"runsCode": false
|
|
2285
|
+
}
|
|
2286
|
+
},
|
|
2287
|
+
{
|
|
2288
|
+
"id": "rho.plots",
|
|
2289
|
+
"version": "1",
|
|
2290
|
+
"ui": "./ui",
|
|
2291
|
+
"bindings": {},
|
|
2292
|
+
"presentation": {
|
|
2293
|
+
"displayName": "Plots",
|
|
2294
|
+
"description": "The plots cells drew, newest first.",
|
|
2295
|
+
"readOnly": true,
|
|
2296
|
+
"runsCode": false
|
|
2297
|
+
}
|
|
2298
|
+
},
|
|
2299
|
+
{
|
|
2300
|
+
"id": "rho.flow",
|
|
2301
|
+
"version": "1",
|
|
2302
|
+
"ui": "./ui",
|
|
2303
|
+
"bindings": {},
|
|
2304
|
+
"presentation": {
|
|
2305
|
+
"displayName": "Data flow",
|
|
2306
|
+
"description": "How the values of the sessions were made: which cells read and defined each, and the files they named.",
|
|
2307
|
+
"readOnly": true,
|
|
2308
|
+
"runsCode": false
|
|
2309
|
+
}
|
|
2310
|
+
},
|
|
2311
|
+
{
|
|
2312
|
+
"id": "rho.servers",
|
|
2313
|
+
"version": "1",
|
|
2314
|
+
"ui": "./ui",
|
|
2315
|
+
"bindings": {},
|
|
2316
|
+
"presentation": {
|
|
2317
|
+
"displayName": "Servers",
|
|
2318
|
+
"description": "The servers sessions can run on, where each language runs, their files and the skills bound to them.",
|
|
2319
|
+
"readOnly": false,
|
|
2320
|
+
"runsCode": false
|
|
2321
|
+
}
|
|
2322
|
+
},
|
|
2323
|
+
{
|
|
2324
|
+
"id": "rho.object",
|
|
2325
|
+
"version": "1",
|
|
2326
|
+
"ui": "./ui",
|
|
2327
|
+
"bindings": {},
|
|
2328
|
+
"presentation": {
|
|
2329
|
+
"displayName": "Value",
|
|
2330
|
+
"description": "One value of a live session: a table's rows and columns, a model's fit, a list's parts.",
|
|
2331
|
+
"readOnly": true,
|
|
2332
|
+
"runsCode": false
|
|
2333
|
+
}
|
|
2334
|
+
}
|
|
2335
|
+
],
|
|
2336
|
+
"skills": [
|
|
2337
|
+
{
|
|
2338
|
+
"id": "kernel.session",
|
|
2339
|
+
"version": "1.0",
|
|
2340
|
+
"digest": "981c37eb09b5b31c091820c29e31d62d5b4303b5aa6fceaf407eb04fec5e8dff",
|
|
2341
|
+
"presentation": {
|
|
2342
|
+
"displayName": "Live session",
|
|
2343
|
+
"description": "Explains how to run code in the project's live R and Python sessions."
|
|
2344
|
+
},
|
|
2345
|
+
"intent": "Run code in the live session and read what it printed.",
|
|
2346
|
+
"requires": [
|
|
2347
|
+
"kernel.run",
|
|
2348
|
+
"kernel.read"
|
|
2349
|
+
],
|
|
2350
|
+
"example": {
|
|
2351
|
+
"method": "kernel.run",
|
|
2352
|
+
"input": {
|
|
2353
|
+
"language": "r",
|
|
2354
|
+
"code": "summary(cars)",
|
|
2355
|
+
"purpose": "Summarise the cars data",
|
|
2356
|
+
"changeId": "cell-1",
|
|
2357
|
+
"waitMs": 30000
|
|
2358
|
+
}
|
|
2359
|
+
},
|
|
2360
|
+
"failureRecipes": [
|
|
2361
|
+
{
|
|
2362
|
+
"kind": "limit",
|
|
2363
|
+
"message": "Too many cells are waiting.",
|
|
2364
|
+
"next": "Wait for the running cell, or interrupt it, then run again with a new changeId."
|
|
2365
|
+
}
|
|
2366
|
+
],
|
|
2367
|
+
"verify": {
|
|
2368
|
+
"command": "npm run test:notebook",
|
|
2369
|
+
"description": "Runs R and Python cells, keeps their output, plots and variables, interrupts and stops sessions, and keeps identity across a restart."
|
|
2370
|
+
}
|
|
2371
|
+
}
|
|
2372
|
+
]
|
|
2373
|
+
}
|
|
2374
|
+
},
|
|
2375
|
+
{
|
|
2376
|
+
"id": "figures",
|
|
2377
|
+
"package": "@rho-workspace/plugin-figures",
|
|
2378
|
+
"version": "0.5.1",
|
|
2379
|
+
"packageVersion": "0.5.1",
|
|
2380
|
+
"requires": [
|
|
2381
|
+
"kernel"
|
|
2382
|
+
],
|
|
2383
|
+
"presentation": {
|
|
2384
|
+
"categoryOrder": 20,
|
|
2385
|
+
"order": 15,
|
|
2386
|
+
"description": "A ggplot drawn in the project's live R session, by you or the Agent, is kept with every point, bar, box, line and label bound to the row of data it was drawn from. It works for any plot built on ggplot2 (ggtree, enrichplot, Seurat, patchwork and the rest) with no setup. Point at a mark to read its row, select marks by clicking or dragging, and ask the Agent about them: your message carries the exact rows. The Agent reads what a plot actually drew and can mark points for you with a note.",
|
|
2387
|
+
"icon": {
|
|
2388
|
+
"background": "#E8F2EE",
|
|
2389
|
+
"color": "#2F6B57",
|
|
2390
|
+
"paths": [
|
|
2391
|
+
"M4.5 19.5h15",
|
|
2392
|
+
"M4.5 19.5v-15",
|
|
2393
|
+
"M8 15.5a1.25 1.25 0 1 0 0-.01",
|
|
2394
|
+
"M12 10.5a1.25 1.25 0 1 0 0-.01",
|
|
2395
|
+
"M16.5 13a1.25 1.25 0 1 0 0-.01",
|
|
2396
|
+
"M14.5 6.5h5v5h-5z"
|
|
2397
|
+
]
|
|
2398
|
+
},
|
|
2399
|
+
"dependencies": [
|
|
2400
|
+
{
|
|
2401
|
+
"pluginId": "kernel",
|
|
2402
|
+
"purpose": "to describe the plots its live R session draws"
|
|
2403
|
+
}
|
|
2404
|
+
],
|
|
2405
|
+
"developer": "Rho",
|
|
2406
|
+
"license": "AGPL-3.0-only",
|
|
2407
|
+
"links": [
|
|
2408
|
+
{
|
|
2409
|
+
"label": "Source",
|
|
2410
|
+
"url": "https://github.com/YuLab-SMU/Rho-plugins/tree/main/plugins/figures"
|
|
2411
|
+
},
|
|
2412
|
+
{
|
|
2413
|
+
"label": "Privacy",
|
|
2414
|
+
"url": "https://github.com/YuLab-SMU/Rho-plugins/blob/main/PRIVACY.md"
|
|
2415
|
+
}
|
|
2416
|
+
],
|
|
2417
|
+
"displayName": "Figures",
|
|
2418
|
+
"tagline": "Plots whose marks know their data",
|
|
2419
|
+
"category": "Figures & media",
|
|
2420
|
+
"examplePrompts": [
|
|
2421
|
+
"“Draw the volcano plot in the notebook; I will select the genes I care about.”",
|
|
2422
|
+
"“What do the points I selected have in common?”",
|
|
2423
|
+
"“Mark the genes in this plot with padj below 0.01 and say why they stand out.”",
|
|
2424
|
+
"“Did the last plot drop any rows? Check what it actually drew.”"
|
|
2425
|
+
],
|
|
2426
|
+
"viewNote": "In the Notebook and Plots, on every ggplot",
|
|
2427
|
+
"readOnly": false,
|
|
2428
|
+
"runsCode": false
|
|
2429
|
+
},
|
|
2430
|
+
"listing": {
|
|
2431
|
+
"operations": [
|
|
2432
|
+
{
|
|
2433
|
+
"method": "figure.read",
|
|
2434
|
+
"version": "2.0",
|
|
2435
|
+
"effect": "read",
|
|
2436
|
+
"requires": [],
|
|
2437
|
+
"presentation": {
|
|
2438
|
+
"order": 10,
|
|
2439
|
+
"displayName": "Read a figure",
|
|
2440
|
+
"description": "Reads what a plot drew: its layers, mappings, panels and data, the rows behind marks, and the marks people selected.",
|
|
2441
|
+
"readOnly": true,
|
|
2442
|
+
"runsCode": false
|
|
2443
|
+
}
|
|
2444
|
+
},
|
|
2445
|
+
{
|
|
2446
|
+
"method": "figure.select",
|
|
2447
|
+
"version": "2.0",
|
|
2448
|
+
"effect": "metadata",
|
|
2449
|
+
"requires": [],
|
|
2450
|
+
"presentation": {
|
|
2451
|
+
"order": 20,
|
|
2452
|
+
"displayName": "Mark points in a figure",
|
|
2453
|
+
"description": "Keeps a set of marks with a note, shown highlighted in the plot. It changes neither the plot nor its data.",
|
|
2454
|
+
"readOnly": false,
|
|
2455
|
+
"runsCode": false
|
|
2456
|
+
}
|
|
2457
|
+
}
|
|
2458
|
+
],
|
|
2459
|
+
"actions": [],
|
|
1163
2460
|
"views": [],
|
|
1164
2461
|
"skills": [
|
|
1165
2462
|
{
|
|
1166
|
-
"id": "
|
|
2463
|
+
"id": "figures.read",
|
|
1167
2464
|
"version": "1.0",
|
|
1168
|
-
"digest": "
|
|
2465
|
+
"digest": "63ce221852d48a6a7567710e37d18c18ffcad929ada2fc764d92b0b02bda1ad7",
|
|
2466
|
+
"presentation": {
|
|
2467
|
+
"displayName": "Figures",
|
|
2468
|
+
"description": "Teaches the Agent to read what a plot drew, the rows behind its marks and the person's selections, and to point at marks."
|
|
2469
|
+
},
|
|
2470
|
+
"intent": "Read what a plot drew and the rows behind its marks, and point the person at marks.",
|
|
2471
|
+
"requires": [
|
|
2472
|
+
"figure.read",
|
|
2473
|
+
"figure.select"
|
|
2474
|
+
],
|
|
2475
|
+
"example": {
|
|
2476
|
+
"method": "figure.read",
|
|
2477
|
+
"input": {
|
|
2478
|
+
"cellId": "k-0123456789abcdef",
|
|
2479
|
+
"plot": 1,
|
|
2480
|
+
"where": [
|
|
2481
|
+
{
|
|
2482
|
+
"column": "padj",
|
|
2483
|
+
"op": "lt",
|
|
2484
|
+
"value": 0.01
|
|
2485
|
+
}
|
|
2486
|
+
],
|
|
2487
|
+
"limit": 20
|
|
2488
|
+
}
|
|
2489
|
+
},
|
|
2490
|
+
"failureRecipes": [
|
|
2491
|
+
{
|
|
2492
|
+
"kind": "not_found",
|
|
2493
|
+
"message": "This plot is a picture only: nothing described what it draws.",
|
|
2494
|
+
"next": "Only ggplot2, base graphics and ComplexHeatmap pages, and matplotlib figures, drawn in a Notebook cell are described. Draw it with one of them to make its marks selectable, or read the picture with kernel.plot."
|
|
2495
|
+
},
|
|
2496
|
+
{
|
|
2497
|
+
"kind": "not_found",
|
|
2498
|
+
"message": "No Notebook cell saved a figure as this file with these bytes: it is a picture only.",
|
|
2499
|
+
"next": "Save the plot in a Notebook cell (kernel.run): ggsave(), png() or pdf() and dev.off() in R, savefig() in Python. A file written by a script outside the live session is not described, nor a PDF of several pages."
|
|
2500
|
+
},
|
|
2501
|
+
{
|
|
2502
|
+
"kind": "invalid",
|
|
2503
|
+
"message": "A mark names no layer or row of this figure.",
|
|
2504
|
+
"next": "Read the summary first; marks are \"layer.row\" counted from 0 within this figure."
|
|
2505
|
+
}
|
|
2506
|
+
],
|
|
2507
|
+
"verify": {
|
|
2508
|
+
"command": "npm run test:figures",
|
|
2509
|
+
"description": "Describes real ggplot2, ggtree, Seurat-style and patchwork plots in R, and matplotlib and seaborn figures in Python, and reads, matches and selects their marks."
|
|
2510
|
+
}
|
|
2511
|
+
}
|
|
2512
|
+
]
|
|
2513
|
+
}
|
|
2514
|
+
},
|
|
2515
|
+
{
|
|
2516
|
+
"id": "skills",
|
|
2517
|
+
"package": "@rho-workspace/plugin-skills",
|
|
2518
|
+
"version": "0.1.0",
|
|
2519
|
+
"packageVersion": "0.1.0",
|
|
2520
|
+
"requires": [],
|
|
2521
|
+
"presentation": {
|
|
2522
|
+
"categoryOrder": 30,
|
|
2523
|
+
"order": 28,
|
|
2524
|
+
"description": "Skills are how work is done in this project: the methods you chose, the conventions you keep and the traps its work ran into, kept as SKILL.md files that every Agent here reads. Your Agent records what you decide and what it learns; each change says who made it, why and from what, and you can undo it.",
|
|
2525
|
+
"icon": {
|
|
2526
|
+
"background": "#EEF0E4",
|
|
2527
|
+
"color": "#4F5A2E",
|
|
2528
|
+
"paths": [
|
|
2529
|
+
"M6.5 4.5h10a1.5 1.5 0 0 1 1.5 1.5v13.5h-10A1.5 1.5 0 0 1 6.5 18z",
|
|
2530
|
+
"M6.5 18a1.5 1.5 0 0 1 1.5-1.5h10",
|
|
2531
|
+
"M10 8.5h4.5",
|
|
2532
|
+
"M10 11.5h3"
|
|
2533
|
+
]
|
|
2534
|
+
},
|
|
2535
|
+
"dependencies": [],
|
|
2536
|
+
"developer": "Rho",
|
|
2537
|
+
"license": "AGPL-3.0-only",
|
|
2538
|
+
"links": [
|
|
2539
|
+
{
|
|
2540
|
+
"label": "Source",
|
|
2541
|
+
"url": "https://github.com/YuLab-SMU/Rho-plugins/tree/main/plugins/skills"
|
|
2542
|
+
},
|
|
2543
|
+
{
|
|
2544
|
+
"label": "Privacy",
|
|
2545
|
+
"url": "https://github.com/YuLab-SMU/Rho-plugins/blob/main/PRIVACY.md"
|
|
2546
|
+
}
|
|
2547
|
+
],
|
|
2548
|
+
"displayName": "Skills",
|
|
2549
|
+
"tagline": "How work is done here, kept by your Agent and you",
|
|
2550
|
+
"category": "Working with your Agent",
|
|
2551
|
+
"examplePrompts": [
|
|
2552
|
+
"“For this project we report proportions as percentages.”",
|
|
2553
|
+
"“What have you learned about how this project is done?”",
|
|
2554
|
+
"“Undo what you recorded about the frequency fits.”"
|
|
2555
|
+
],
|
|
2556
|
+
"viewNote": "Its own page in each project",
|
|
2557
|
+
"readOnly": false,
|
|
2558
|
+
"runsCode": false
|
|
2559
|
+
},
|
|
2560
|
+
"listing": {
|
|
2561
|
+
"operations": [
|
|
2562
|
+
{
|
|
2563
|
+
"method": "skills.list",
|
|
2564
|
+
"version": "2.0",
|
|
2565
|
+
"effect": "read",
|
|
2566
|
+
"requires": [],
|
|
1169
2567
|
"presentation": {
|
|
1170
|
-
"
|
|
1171
|
-
"
|
|
2568
|
+
"order": 10,
|
|
2569
|
+
"displayName": "List skills",
|
|
2570
|
+
"description": "Lists the project's skills, what each is for and its newest change.",
|
|
2571
|
+
"readOnly": true,
|
|
2572
|
+
"runsCode": false
|
|
2573
|
+
}
|
|
2574
|
+
},
|
|
2575
|
+
{
|
|
2576
|
+
"method": "skills.read",
|
|
2577
|
+
"version": "2.0",
|
|
2578
|
+
"effect": "read",
|
|
2579
|
+
"requires": [],
|
|
2580
|
+
"presentation": {
|
|
2581
|
+
"order": 20,
|
|
2582
|
+
"displayName": "Read a skill",
|
|
2583
|
+
"description": "Reads one skill and its changes, each with who made it, why and from what.",
|
|
2584
|
+
"readOnly": true,
|
|
2585
|
+
"runsCode": false
|
|
2586
|
+
}
|
|
2587
|
+
},
|
|
2588
|
+
{
|
|
2589
|
+
"method": "skills.change",
|
|
2590
|
+
"version": "2.0",
|
|
2591
|
+
"effect": "file",
|
|
2592
|
+
"requires": [],
|
|
2593
|
+
"presentation": {
|
|
2594
|
+
"order": 30,
|
|
2595
|
+
"displayName": "Record in a skill",
|
|
2596
|
+
"description": "Writes a skill in the project: a new one, a change with its reason and evidence, or its removal.",
|
|
2597
|
+
"readOnly": false,
|
|
2598
|
+
"runsCode": false
|
|
2599
|
+
}
|
|
2600
|
+
},
|
|
2601
|
+
{
|
|
2602
|
+
"method": "skills.undo",
|
|
2603
|
+
"version": "2.0",
|
|
2604
|
+
"effect": "file",
|
|
2605
|
+
"requires": [],
|
|
2606
|
+
"presentation": {
|
|
2607
|
+
"order": 40,
|
|
2608
|
+
"displayName": "Undo a change",
|
|
2609
|
+
"description": "Puts a skill back as it was before its newest change.",
|
|
2610
|
+
"readOnly": false,
|
|
2611
|
+
"runsCode": false
|
|
2612
|
+
}
|
|
2613
|
+
}
|
|
2614
|
+
],
|
|
2615
|
+
"actions": [],
|
|
2616
|
+
"views": [],
|
|
2617
|
+
"skills": [
|
|
2618
|
+
{
|
|
2619
|
+
"id": "skills.project",
|
|
2620
|
+
"version": "1.0",
|
|
2621
|
+
"digest": "114a4c98e98625c98385da800112f9533fc7d43a078fa0e40d6a4a3641fb27e5",
|
|
2622
|
+
"presentation": {
|
|
2623
|
+
"displayName": "Project skills",
|
|
2624
|
+
"description": "How to read the project's skills before working and record what the person decides and what the work teaches."
|
|
2625
|
+
},
|
|
2626
|
+
"intent": "Follow how this project is done, and keep it as the person decides and the work teaches.",
|
|
2627
|
+
"requires": [
|
|
2628
|
+
"skills.list",
|
|
2629
|
+
"skills.read",
|
|
2630
|
+
"skills.change"
|
|
2631
|
+
],
|
|
2632
|
+
"example": {
|
|
2633
|
+
"method": "skills.list",
|
|
2634
|
+
"input": {}
|
|
2635
|
+
},
|
|
2636
|
+
"failureRecipes": [
|
|
2637
|
+
{
|
|
2638
|
+
"kind": "conflict",
|
|
2639
|
+
"message": "The skill changed since that version.",
|
|
2640
|
+
"next": "Read it again with skills.read and make the change on its current version."
|
|
2641
|
+
},
|
|
2642
|
+
{
|
|
2643
|
+
"kind": "limit",
|
|
2644
|
+
"message": "The skill would be larger than a project skill holds.",
|
|
2645
|
+
"next": "Shorten it: merge entries and drop those that no longer apply, then change it again."
|
|
2646
|
+
}
|
|
2647
|
+
],
|
|
2648
|
+
"verify": {
|
|
2649
|
+
"command": "npm run test:skills",
|
|
2650
|
+
"description": "Creates, changes, undoes and removes project skills, sees a change made outside Rho, and keeps each change's author, reason and evidence."
|
|
1172
2651
|
}
|
|
1173
2652
|
}
|
|
1174
2653
|
]
|