allye-pi 2.8.0 → 2.8.1

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/README.md CHANGED
@@ -59,7 +59,7 @@ Then open `/plugin`, find the Allye MCP server, click **Connect** and sign in. U
59
59
 
60
60
  ### Codex, OpenCode
61
61
 
62
- Paste into the agent:
62
+ Paste into the agent. The install and update guides install one pinned release: the latest GitHub release unless you name a version. They check that it exists, never download from a branch, and keep a timestamped backup of any config they rewrite (`opencode.json`, `~/.codex/AGENTS.md`, `~/.codex/skills/bridge*`) under `~/.allye/backups/<harness>/`.
63
63
 
64
64
  ```
65
65
  Install Allye following: https://raw.githubusercontent.com/allye-app/allye-plugin/main/docs/install-codex.md
@@ -69,11 +69,11 @@ Install Allye following: https://raw.githubusercontent.com/allye-app/allye-plugi
69
69
  ### Pi, OMP
70
70
 
71
71
  ```bash
72
- pi install npm:allye-pi # Pi
73
- omp plugin install allye-pi # OMP
72
+ pi install npm:allye-pi@<version> # Pi
73
+ omp plugin install allye-pi@<version> # OMP
74
74
  ```
75
75
 
76
- Then add the `allye` MCP server as described in [install-pi.md](docs/install-pi.md) or [install-omp.md](docs/install-omp.md).
76
+ Use a pinned `<version>` (the guides resolve it for you). Then add the `allye` MCP server as described in [install-pi.md](docs/install-pi.md) or [install-omp.md](docs/install-omp.md).
77
77
 
78
78
  ## Your organization's skills
79
79
 
@@ -6,11 +6,39 @@ OMP is a fork of Pi and reads the same package manifest (`omp`, falling back to
6
6
 
7
7
  ## Install the package
8
8
 
9
- ```text
10
- omp plugin install allye-pi
9
+ Resolve the version first, before any change. Run the resolve block, the npm check and the install in one shell session, so `VERSION` and `TAG` carry over. Only stable `vX.Y.Z` releases are accepted (no pre-release or build suffix), and `curl` and `jq` are required. The version is the one the user named, otherwise the latest GitHub release of `allye-app/allye-plugin`.
10
+
11
+ ```bash
12
+ # Never put user text in this script unless it already matched ^v?[0-9]+\.[0-9]+\.[0-9]+$: write only the matched digits and dots (never the original text, never a value containing a quote).
13
+ RAW='' # set to the version only if you checked the user's text as a whole against ^v?[0-9]+\.[0-9]+\.[0-9]+$ (digits, dots, optional leading v); otherwise leave empty
14
+ [ -n "$RAW" ] || RAW=$(curl -fsSL https://api.github.com/repos/allye-app/allye-plugin/releases/latest | jq -r '.tag_name // empty')
15
+ RAW="${RAW#v}"
16
+ if ! [[ "$RAW" =~ ^[0-9]+\.[0-9]+\.[0-9]+$ ]]; then echo "No valid release version: $RAW" >&2; return 1 2>/dev/null || exit 1; fi
17
+ VERSION="$RAW"; TAG="v$VERSION"
18
+ echo "Installing Allye $VERSION"
19
+ ```
20
+
21
+ Tell the user the version. If no valid version resolves, stop and change nothing.
22
+
23
+ Check that this version exists on npm. The release tag can appear before the npm publish: if the command fails, report it and stop; never fall back to an unpinned install. Show the user the printed version and `dist.integrity`. The Git release tag is trusted as published.
24
+
25
+ ```bash
26
+ : "${VERSION:?}" "${TAG:?}"
27
+ [[ "$VERSION" =~ ^[0-9]+\.[0-9]+\.[0-9]+$ ]] || { echo "Invalid VERSION" >&2; return 1 2>/dev/null || exit 1; }
28
+ (cd "$HOME" && npm view allye-pi@"$VERSION" version dist.integrity)
29
+ ```
30
+
31
+ Before installing, list the installed plugins with `omp plugin list` and note any `allye-pi` entry. If an older unpinned or different-version `allye-pi` is present, follow the update rules below (confirm with the user, then `--force` or uninstall first) so the pinned install replaces it instead of adding a second copy. After the install, run `omp plugin list` again and confirm exactly one `allye-pi` entry, at the pinned version.
32
+
33
+ Install the pinned version:
34
+
35
+ ```bash
36
+ : "${VERSION:?}" "${TAG:?}"
37
+ [[ "$VERSION" =~ ^[0-9]+\.[0-9]+\.[0-9]+$ ]] || { echo "Invalid VERSION" >&2; return 1 2>/dev/null || exit 1; }
38
+ omp plugin install allye-pi@"$VERSION"
11
39
  ```
12
40
 
13
- Update with `omp plugin upgrade allye-pi`; remove with `omp plugin uninstall allye-pi`.
41
+ To update, resolve the newer version as above (same shell, same checks) and re-run the install with it. If OMP says the plugin is already installed, first confirm the installed plugin is `allye-pi` (`omp plugin list`) and that the user agrees, then confirm `omp plugin install --help` lists `--force` and re-run with `--force`; if the flag is not listed, run `omp plugin uninstall allye-pi` and install the pinned version again. If the install fails after the uninstall, tell the user to reinstall the previous version and report the failure. Do not use `omp plugin upgrade`. Remove with `omp plugin uninstall allye-pi`.
14
42
 
15
43
  ## Configure the MCP server
16
44
 
@@ -10,13 +10,49 @@ It never edits Pi's MCP configuration or reads credentials.
10
10
 
11
11
  ## Install the package
12
12
 
13
- ```text
14
- pi install npm:allye-pi
13
+ Resolve the version first, before any change. Run the resolve block, the npm check and the install in one shell session, so `VERSION` and `TAG` carry over. Only stable `vX.Y.Z` releases are accepted (no pre-release or build suffix), and `curl` and `jq` are required. The version is the one the user named, otherwise the latest GitHub release of `allye-app/allye-plugin`.
14
+
15
+ ```bash
16
+ # Never put user text in this script unless it already matched ^v?[0-9]+\.[0-9]+\.[0-9]+$: write only the matched digits and dots (never the original text, never a value containing a quote).
17
+ RAW='' # set to the version only if you checked the user's text as a whole against ^v?[0-9]+\.[0-9]+\.[0-9]+$ (digits, dots, optional leading v); otherwise leave empty
18
+ [ -n "$RAW" ] || RAW=$(curl -fsSL https://api.github.com/repos/allye-app/allye-plugin/releases/latest | jq -r '.tag_name // empty')
19
+ RAW="${RAW#v}"
20
+ if ! [[ "$RAW" =~ ^[0-9]+\.[0-9]+\.[0-9]+$ ]]; then echo "No valid release version: $RAW" >&2; return 1 2>/dev/null || exit 1; fi
21
+ VERSION="$RAW"; TAG="v$VERSION"
22
+ echo "Installing Allye $VERSION"
23
+ ```
24
+
25
+ Tell the user the version. If no valid version resolves, stop and change nothing.
26
+
27
+ Check that this version exists on npm. The release tag can appear before the npm publish: if the command fails, report it and stop; never fall back to an unpinned install. Show the user the printed version and `dist.integrity`. The Git release tag is trusted as published.
28
+
29
+ ```bash
30
+ : "${VERSION:?}" "${TAG:?}"
31
+ [[ "$VERSION" =~ ^[0-9]+\.[0-9]+\.[0-9]+$ ]] || { echo "Invalid VERSION" >&2; return 1 2>/dev/null || exit 1; }
32
+ (cd "$HOME" && npm view allye-pi@"$VERSION" version dist.integrity)
33
+ ```
34
+
35
+ The npm check above must already have passed before anything is removed. Then list the installed packages with `pi list`. If it shows another `allye-pi` source (unpinned npm, an older pinned npm, or the git source `git:github.com/allye-app/allye-plugin@vX.Y.Z`), confirm with the user and remove that exact source string as shown by `pi list` with `pi remove <source>`, so the pinned install replaces it instead of adding a second source. Do the removal just before the install. If the install then fails, tell the user to reinstall the previous version (the source string you removed) and report the failure. After the install, run `pi list` again and confirm exactly one `allye-pi` source (npm or git), at the pinned version.
36
+
37
+ Install the pinned version:
38
+
39
+ ```bash
40
+ : "${VERSION:?}" "${TAG:?}"
41
+ [[ "$VERSION" =~ ^[0-9]+\.[0-9]+\.[0-9]+$ ]] || { echo "Invalid VERSION" >&2; return 1 2>/dev/null || exit 1; }
42
+ pi install npm:allye-pi@"$VERSION"
43
+ ```
44
+
45
+ From Git, at the release tag:
46
+
47
+ ```bash
48
+ : "${VERSION:?}" "${TAG:?}"
49
+ [[ "$VERSION" =~ ^[0-9]+\.[0-9]+\.[0-9]+$ ]] || { echo "Invalid VERSION" >&2; return 1 2>/dev/null || exit 1; }
50
+ pi install git:github.com/allye-app/allye-plugin@"$TAG"
15
51
  ```
16
52
 
17
- From Git (preferably at a tag): `pi install git:github.com/allye-app/allye-plugin`. From a local checkout, for development: `pi install /absolute/path/to/allye-plugin`.
53
+ From a local checkout, for development: `pi install /absolute/path/to/allye-plugin`.
18
54
 
19
- Update with `pi update npm:allye-pi`; remove with `pi remove npm:allye-pi`. Removing the package does not remove MCP configuration or OAuth credentials.
55
+ To update, resolve the newer version as above (same shell, same checks) and re-run `pi install npm:allye-pi@"$VERSION"` with it (no `pi update`, which would not move a pinned version), then repeat the `pi list` check: exactly one `allye-pi` source. Remove with `pi remove <source>` using the source string shown by `pi list` (`npm:allye-pi@<version>` or the git source `git:github.com/allye-app/allye-plugin@<tag>`). Removing the package does not remove MCP configuration or OAuth credentials.
20
56
 
21
57
  ## Configure the MCP server
22
58
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "allye-pi",
3
- "version": "2.8.0",
3
+ "version": "2.8.1",
4
4
  "description": "Allye extension for Pi and OMP: the Allye bootstrap, the Bridge skill and the repository-to-project link",
5
5
  "type": "module",
6
6
  "keywords": [
@@ -49,9 +49,10 @@
49
49
  "test:installer": "bash install/test-validation.sh && bash install/test-installer.sh && npm run test:docs-gate",
50
50
  "test:bootstrap": "bash test/test-bootstrap.sh && bash hooks/test-session-start.sh",
51
51
  "test:agents": "node test/test-agents.mjs",
52
+ "test:guides": "node test/test-install-guides.mjs",
52
53
  "test:docs-gate": "bash install/test-docs-gate.sh",
53
54
  "test:skills": "node test/test-skills-text.mjs && node test/test-ci-proof.mjs && node test/test-ci-workflows.mjs",
54
- "test": "npm run test:bootstrap && npm run test:agents && npm run test:skills && npm run test:installer && npm run test:pi && npm run test:opencode"
55
+ "test": "npm run test:bootstrap && npm run test:agents && npm run test:guides && npm run test:skills && npm run test:installer && npm run test:pi && npm run test:opencode"
55
56
  },
56
57
  "repository": {
57
58
  "type": "git",