@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.
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "pharo-agent",
3
3
  "displayName": "Pharo Agent",
4
- "version": "0.14.0",
4
+ "version": "0.15.0",
5
5
  "description": "Terminal-first Pharo image setup for coding agents.",
6
6
  "author": {
7
7
  "name": "Evref-BL",
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.14.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.0",
36
- "@evref-bl/plexus": "0.13.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
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "$schema": "https://agent-plugins.org/schemas/1.0.0/plugin.schema.json",
3
3
  "name": "pharo-agent",
4
- "version": "0.14.0",
4
+ "version": "0.15.0",
5
5
  "description": "Terminal-first Pharo image setup for coding agents.",
6
6
  "author": {
7
7
  "name": "Evref-BL",
@@ -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.14.0 init --host claude
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.1";
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
- if (image?.pharoMcpLoad?.state !== "provided") return undefined;
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.";