@evref-bl/pharo-agent 0.14.0 → 0.15.0
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/.claude-plugin/plugin.json +1 -1
- package/README.md +6 -0
- package/package.json +3 -3
- package/plugin.json +1 -1
- package/skills/pharo-feedback/SKILL.md +96 -0
- package/skills/pharo-setup/SKILL.md +1 -1
- package/src/live.js +1 -1
- package/src/runtime.js +14 -1
package/README.md
CHANGED
|
@@ -87,6 +87,12 @@ Pharo work only, so Pharo instructions stay out of unrelated chats. The guide
|
|
|
87
87
|
and what it refers to are maintained by the MCP project and copied from the
|
|
88
88
|
release this plugin pins. [Hosts](docs/hosts.md) lists the paths it owns.
|
|
89
89
|
|
|
90
|
+
**A way to report what got in its way.** The plugin's feedback skill has the
|
|
91
|
+
agent look back over the conversation for tool calls that failed, misled it or
|
|
92
|
+
needed a workaround, and draft issues for the tools' maintainers. It offers
|
|
93
|
+
itself at the end of Pharo work where that happened, searches for existing
|
|
94
|
+
issues first, and files only the drafts you approve.
|
|
95
|
+
|
|
90
96
|
## Refreshing after an upgrade
|
|
91
97
|
|
|
92
98
|
Upgrade the plugin the way you installed it, then run the setup command again
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@evref-bl/pharo-agent",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.15.0",
|
|
4
4
|
"private": false,
|
|
5
5
|
"description": "Terminal-first Pharo integration for coding agents.",
|
|
6
6
|
"license": "Apache-2.0",
|
|
@@ -32,8 +32,8 @@
|
|
|
32
32
|
"test": "node --test"
|
|
33
33
|
},
|
|
34
34
|
"dependencies": {
|
|
35
|
-
"@evref-bl/pharo-mcp": "3.4.
|
|
36
|
-
"@evref-bl/plexus": "0.
|
|
35
|
+
"@evref-bl/pharo-mcp": "3.4.1",
|
|
36
|
+
"@evref-bl/plexus": "0.14.1",
|
|
37
37
|
"@modelcontextprotocol/sdk": "1.32.2"
|
|
38
38
|
},
|
|
39
39
|
"devDependencies": {
|
package/plugin.json
CHANGED
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: pharo-feedback
|
|
3
|
+
description: Look back on how the Pharo tools served this conversation and propose GitHub issues for what failed, misled you or was missing. Use when the user asks for feedback on the Pharo tools or wants to report a problem with them. At the end of Pharo work in which a tool failed, misled you or needed a workaround, offer it once; never file anything unasked.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Pharo tool feedback
|
|
7
|
+
|
|
8
|
+
The Pharo tools improve from what their users run into, and you saw this
|
|
9
|
+
conversation's tool calls more closely than anyone. Turn what got in your way
|
|
10
|
+
into issues the maintainers can act on. Issues are public: file only what the
|
|
11
|
+
user approves.
|
|
12
|
+
|
|
13
|
+
## Look back
|
|
14
|
+
|
|
15
|
+
Go over this conversation's calls to the Pharo tools, whether through this
|
|
16
|
+
plugin's MCP tools or the `pharo-agent` command, and keep what the tools did
|
|
17
|
+
wrong:
|
|
18
|
+
|
|
19
|
+
- a call failed with an error you could not have avoided: an internal error, a
|
|
20
|
+
Smalltalk exception, a timeout;
|
|
21
|
+
- a call failed on your input, and its description, schema or error message
|
|
22
|
+
led you there or did not say what was wrong;
|
|
23
|
+
- a search missed a tool that existed, or found it only after several tries;
|
|
24
|
+
- an answer was wrong, partial, too large to use, or said less than you needed;
|
|
25
|
+
- a warning or the Pharo guidance sent you the wrong way;
|
|
26
|
+
- you fell back to `image_evaluate`, a shell or the files because no tool did
|
|
27
|
+
what you needed;
|
|
28
|
+
- one step took several attempts.
|
|
29
|
+
|
|
30
|
+
Leave out your own slips that a clear error caught, bugs in the user's project,
|
|
31
|
+
and passing trouble such as a network outage, unless the tool handled it badly.
|
|
32
|
+
If the conversation was summarized, say what you can no longer see rather than
|
|
33
|
+
reconstruct it.
|
|
34
|
+
|
|
35
|
+
Then ask the user whether a tool got in their way in a way you did not notice.
|
|
36
|
+
|
|
37
|
+
## Where each one goes
|
|
38
|
+
|
|
39
|
+
- The image's own tools, from classes, methods and tests to repositories,
|
|
40
|
+
search and evaluation, and the Pharo guidance copied into the project
|
|
41
|
+
(`pharo.AGENTS.md`, the `pharo-*` skills and references): `Evref-BL/MCP`.
|
|
42
|
+
- Everything else this plugin brings, such as the `image_*` tools, the source
|
|
43
|
+
projection, setup, the `pharo-agent` command and the passing of calls between
|
|
44
|
+
the host and an image: `Evref-BL/pharo-agent-plugin`. Its maintainers move an
|
|
45
|
+
issue to the component that owns it.
|
|
46
|
+
|
|
47
|
+
When the project loads an MCP of its own into the image, that project answers
|
|
48
|
+
for the image's tools.
|
|
49
|
+
|
|
50
|
+
## Before proposing
|
|
51
|
+
|
|
52
|
+
Look for the same problem among each repository's issues, open and closed:
|
|
53
|
+
|
|
54
|
+
```sh
|
|
55
|
+
gh issue list --repo Evref-BL/MCP --state all --search "<words>"
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
Where one exists, propose a comment adding what this conversation showed
|
|
59
|
+
instead of a new issue.
|
|
60
|
+
|
|
61
|
+
## Drafting
|
|
62
|
+
|
|
63
|
+
One issue per problem; findings that share a cause make one issue. Title it
|
|
64
|
+
with what goes wrong, in the tool's own terms. Keep the body short:
|
|
65
|
+
|
|
66
|
+
- **Tool:** its name; `pharo-agent 0.15.0`; the image's Pharo version, which
|
|
67
|
+
`image_list` gives; the host you run in.
|
|
68
|
+
- **What happened:** what you asked for and what came back, the error quoted
|
|
69
|
+
and trimmed.
|
|
70
|
+
- **Expected:** what would have served.
|
|
71
|
+
- **Workaround:** what worked instead, or none.
|
|
72
|
+
- **To reproduce:** the smallest call that shows it.
|
|
73
|
+
|
|
74
|
+
End with: "Reported through the pharo-agent feedback skill."
|
|
75
|
+
|
|
76
|
+
Issues are public. Leave out the project's code, class and package names,
|
|
77
|
+
paths, URLs, and anything that identifies the user or their organization.
|
|
78
|
+
Reproduce on Pharo's own classes, such as `Object` or `OrderedCollection`, or
|
|
79
|
+
describe the shape of what you had. When a problem cannot be shown without the
|
|
80
|
+
project's material, say so and let the user decide.
|
|
81
|
+
|
|
82
|
+
## Propose, then file
|
|
83
|
+
|
|
84
|
+
Show every draft in full, with its repository, and ask which to file. File only
|
|
85
|
+
those the user names:
|
|
86
|
+
|
|
87
|
+
```sh
|
|
88
|
+
gh issue create --repo Evref-BL/MCP --title "<title>" --body-file <draft>
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
Without `gh` or its login, give each draft as a link that opens the form
|
|
92
|
+
already filled, `https://github.com/<owner>/<repo>/issues/new?title=…&body=…`
|
|
93
|
+
with both values URL-encoded, and let the user submit it. A comment on an
|
|
94
|
+
existing issue goes the same way.
|
|
95
|
+
|
|
96
|
+
Report what was filed, with its link.
|
|
@@ -8,7 +8,7 @@ Run this only when the user asks to enable or refresh Pharo tooling in this proj
|
|
|
8
8
|
From the project root, run the released CLI that matches this plugin:
|
|
9
9
|
|
|
10
10
|
```sh
|
|
11
|
-
npx --yes @evref-bl/pharo-agent@0.
|
|
11
|
+
npx --yes @evref-bl/pharo-agent@0.15.0 init --host claude
|
|
12
12
|
```
|
|
13
13
|
|
|
14
14
|
Name the host this chat runs in: `--host claude` in Claude Code,
|
package/src/live.js
CHANGED
|
@@ -22,7 +22,7 @@ import {
|
|
|
22
22
|
writeRunningImages,
|
|
23
23
|
} from "./runtime.js";
|
|
24
24
|
|
|
25
|
-
export const pifsRelease = "v0.10.
|
|
25
|
+
export const pifsRelease = "v0.10.2";
|
|
26
26
|
|
|
27
27
|
// fuse-t ships as a macOS installer package, so it lands in /usr/local
|
|
28
28
|
// whatever Homebrew's prefix is. The unversioned symlink is what the daemon
|
package/src/runtime.js
CHANGED
|
@@ -166,8 +166,21 @@ export function selectRunningImage(state, imageId) {
|
|
|
166
166
|
// is a supported way to run — it is what the policy is for — but nothing said
|
|
167
167
|
// so, and the image's tools then quietly differ from the ones the project was
|
|
168
168
|
// written against. PLexus records it; this says it.
|
|
169
|
+
//
|
|
170
|
+
// An image copied from a home image cache base is another matter: PLexus keys
|
|
171
|
+
// a base on what preparing it loaded and says whether that is still what the
|
|
172
|
+
// project loads. A `current` base holds the project's own MCP, and warning
|
|
173
|
+
// about it told every new image the opposite of what happened; an `outdated`
|
|
174
|
+
// one certainly holds another. Only an image nobody can vouch for gets the
|
|
175
|
+
// hedged warning.
|
|
169
176
|
export function unappliedPharoMcpPin(image) {
|
|
170
|
-
|
|
177
|
+
const load = image?.pharoMcpLoad;
|
|
178
|
+
if (load?.state !== "provided" || load.preparedBase === "current") return undefined;
|
|
179
|
+
if (load.preparedBase === "outdated") {
|
|
180
|
+
return `Image ${image.id} kept the Pharo MCP it was prepared with, which is not the one this project`
|
|
181
|
+
+ " loads now, so its tools may differ from the ones this project expects."
|
|
182
|
+
+ " Recreate the image, or set mcp.loadPolicy to always.";
|
|
183
|
+
}
|
|
171
184
|
return `Image ${image.id} started with the Pharo MCP it already had, so the version this project pins`
|
|
172
185
|
+ " was not loaded and its tools may differ from the ones this project expects."
|
|
173
186
|
+ " Recreate the image, or set mcp.loadPolicy to always.";
|