pi-memory-evolution 0.2.1 → 0.2.2

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/CHANGELOG.md CHANGED
@@ -2,6 +2,19 @@
2
2
 
3
3
  All notable changes to pi-memory-evolution are documented here.
4
4
 
5
+ ## [0.2.2](https://github.com/btnalit/pi-memory-evolution/compare/v0.2.1...v0.2.2) (2026-09-08)
6
+
7
+
8
+ ### Bug Fixes
9
+
10
+ * support npm 12 pack output and gate CLI compatibility ([#7](https://github.com/btnalit/pi-memory-evolution/issues/7)) ([4fde298](https://github.com/btnalit/pi-memory-evolution/commit/4fde29844b6d2c9e9497a656f75d8655e812d4c6))
11
+
12
+
13
+ ### Maintenance
14
+
15
+ * **deps-dev:** bump the development-minor-patch group across 1 directory with 3 updates ([#9](https://github.com/btnalit/pi-memory-evolution/issues/9)) ([03ef2be](https://github.com/btnalit/pi-memory-evolution/commit/03ef2beed637cfaa5c9dae22b26060c6f330d754))
16
+ * **deps-dev:** bump typescript from 5.9.3 to 7.0.2 ([#5](https://github.com/btnalit/pi-memory-evolution/issues/5)) ([dc97e2c](https://github.com/btnalit/pi-memory-evolution/commit/dc97e2c3306a0c1b07c34675d1eebaa7c73aaa8d))
17
+
5
18
  ## [0.2.1](https://github.com/btnalit/pi-memory-evolution/compare/v0.2.0...v0.2.1) (2026-09-08)
6
19
 
7
20
 
package/docs/releasing.md CHANGED
@@ -9,6 +9,8 @@ Use Conventional Commit PR titles, such as `fix: retain work evidence` or
9
9
 
10
10
  - Node 22.19.0 and Node 24: typecheck, regression/release-policy tests, package and
11
11
  automation assertions, and an npm audit that fails on high/critical findings.
12
+ - Node 24 with explicit npm 10 and 12: checks, native installation and package builds;
13
+ both npm compatibility lanes are mandatory parts of the gate.
12
14
  - Node 24: native Pi installation tests and real-host/fake-model integration.
13
15
  - Workflow syntax checks with a checksum-pinned actionlint binary.
14
16
  - Build an npm tarball, `SHA256SUMS` and a source-commit/integrity manifest. Pi loads
@@ -45,6 +47,11 @@ Release Please uses the built-in `GITHUB_TOKEN`, not a personal GitHub credentia
45
47
  Because events generated by that token do not start normal push/PR workflows,
46
48
  it explicitly dispatches CI for its same-repository release PRs. Publication is a
47
49
  job in the same workflow, not a separate listener waiting for a suppressed event.
50
+ GitHub can additionally create a bot-PR run with `action_required`. If that run blocks
51
+ PR checks, a maintainer must review the changes and approve that run in Actions;
52
+ a successful dispatch alone does not override GitHub's platform approval policy.
53
+ The initial rollout required this approval. The workflow does not self-approve or
54
+ delete blocked checks to bypass it.
48
55
 
49
56
  Version behavior follows Conventional Commits. `fix` normally bumps patch, `feat`
50
57
  bumps minor, and breaking changes before 1.0 bump minor. Visible maintenance/docs/CI
package/docs/testing.md CHANGED
@@ -17,6 +17,41 @@ helper scripts and memory state must not ship in the package.
17
17
 
18
18
  `check:package` inspects `npm pack --dry-run --json`; it does not publish to npm.
19
19
 
20
+ ## npm CLI compatibility
21
+
22
+ All consumers of `npm pack --json` share `scripts/lib/npm-pack.mjs`. npm 10/11
23
+ return an array; npm 12 returns a package-name map. The helper accepts both and
24
+ rejects invalid, empty, multi-package or mismatched results rather than picking an
25
+ arbitrary package. It is development tooling, not part of the runtime tarball.
26
+
27
+ CI explicitly installs and verifies npm majors **10 and 12** on Node 24, and runs
28
+ checks, installation and packaging in both lanes. The ordinary Node 22/24 jobs
29
+ also exercise their bundled npm. Node version alone does not define coverage of an
30
+ npm major. The pinned setup-node action has no `npm-version` input, so selecting
31
+ npm uses an explicit `npm install --global --ignore-scripts` step instead.
32
+
33
+ For local reproduction without changing the global npm installation:
34
+
35
+ ```bash
36
+ npx --yes npm@12 run check
37
+ npx --yes npm@12 run test:install
38
+ npx --yes npm@10 run check
39
+ npx --yes npm@10 run test:install
40
+ ```
41
+
42
+ For an older checkout whose pack parser still fails under npm 12, the npm 10
43
+ commands are a temporary workaround until you update. `npm run` retains the npx
44
+ npm shim on PATH, so nested `execFileSync('npm', ...)` calls use the selected CLI;
45
+ the installation test prints the actual Node/Pi/npm versions. Declaring npm in
46
+ `engines` can document a requirement, but does not replace compatible parsing or
47
+ explicit version testing.
48
+
49
+ npm 12 also gates dependency lifecycle scripts through its script-allow policy.
50
+ This repository installs with `--ignore-scripts`; do not turn on all scripts merely
51
+ to make an installation pass. If a future dependency requires postinstall compilation,
52
+ review that dependency and update the isolated tests/policy explicitly. Pi's bundled
53
+ runtime and currently tested dependencies work with scripts disabled.
54
+
20
55
  ## Installation smoke test
21
56
 
22
57
  ```bash
@@ -44,6 +79,10 @@ host explicitly. The script prints the tested host version. The test:
44
79
  6. Serves the actual tarball through a loopback npm registry, with a fresh cache,
45
80
  then checks native `pi install npm:pi-memory-evolution`, repeat installation,
46
81
  normal loading and removal. No host peer packages are served or installed.
82
+ 7. Intentionally installs local and npm copies together, reproduces the host's
83
+ duplicate `memory_recall` failure, removes the unwanted source through the CLI,
84
+ and verifies startup and unchanged memory/history. This is configuration recovery,
85
+ not silently choosing which installed version should win.
47
86
 
48
87
  The test whitelists child environment variables, gives Pi a fresh agent directory
49
88
  and HOME, disables startup network operations, and uses private npm caches/config with
package/docs/usage.md CHANGED
@@ -57,6 +57,31 @@ the old source before switching between npm/Git/local forms, which Pi treats as
57
57
  different package identities. `pi remove <source>` does not erase memory state.
58
58
  Restart or `/reload` all sessions using the extension after changing versions.
59
59
 
60
+ ### Recovering from duplicate installation sources
61
+
62
+ Pi treats npm, Git and local paths as different package identities. Installing the
63
+ same source twice is idempotent, but keeping both a dev checkout and an npm copy can
64
+ register `memory_recall` twice and prevent Pi from starting. Updating either copy
65
+ does not remove the other. This is not a failure of a single-source upgrade.
66
+
67
+ Use terminal commands, not commands inside the broken Pi session:
68
+
69
+ ```bash
70
+ pi list
71
+ # Keep npm; remove the local source shown by pi list:
72
+ pi remove /absolute/path/to/pi-memory-evolution
73
+ # Or keep the checkout; remove npm instead:
74
+ # pi remove npm:pi-memory-evolution
75
+ ```
76
+
77
+ Choose only the removal matching your intended source. If installed project-locally,
78
+ run `pi list --approve` and `pi remove <source> -l --approve` from that trusted project.
79
+ A manually configured `extensions` entry is not a package entry: remove that explicit
80
+ entry from the appropriate settings file as well. Then restart Pi and run
81
+ `/memory status`. Package CLI operations work without loading the conflicting
82
+ extensions, and removal leaves memory data intact. Do not delete the database or
83
+ rename the tool to hide the conflict; an old installation would still run its hooks.
84
+
60
85
  ## What happens automatically
61
86
 
62
87
  - A successful `session_compact` saves a sanitized source and extracts up to 16
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "pi-memory-evolution",
3
- "version": "0.2.1",
3
+ "version": "0.2.2",
4
4
  "description": "Automatic cross-session memory using Pi's active model, transactional local storage, and topic-based recall across directories.",
5
5
  "license": "MIT",
6
6
  "publishConfig": {
@@ -58,10 +58,10 @@
58
58
  "check:package": "node scripts/check-package.mjs"
59
59
  },
60
60
  "devDependencies": {
61
- "@earendil-works/pi-coding-agent": "0.85.0",
62
- "@types/node": "22.18.0",
63
- "typebox": "1.3.7",
64
- "typescript": "5.9.3",
61
+ "@earendil-works/pi-coding-agent": "0.85.1",
62
+ "@types/node": "22.20.1",
63
+ "typebox": "1.3.27",
64
+ "typescript": "7.0.2",
65
65
  "yaml": "2.9.0"
66
66
  }
67
67
  }