nexusmem 0.10.4 → 0.10.5
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 +84 -23
- package/README.md +3 -0
- package/dist/cli/index.js +603 -78
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/recorder.js +207 -0
- package/dist/cli/recorder.js.map +1 -0
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -7,28 +7,85 @@ Tags were added retroactively on 2026-08-11 and point at the exact commits the n
|
|
|
7
7
|
built from, matched by publish timestamp: `v0.1.0` → `67a4776`, `v0.1.1` → `809e62c`,
|
|
8
8
|
`v0.1.2` → `b22a3b0`.
|
|
9
9
|
|
|
10
|
-
## [Unreleased]
|
|
11
|
-
|
|
12
|
-
No unreleased changes yet.
|
|
13
|
-
|
|
14
|
-
## [0.10.
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
10
|
+
## [Unreleased]
|
|
11
|
+
|
|
12
|
+
No unreleased changes yet.
|
|
13
|
+
|
|
14
|
+
## [0.10.5] — 2026-09-11
|
|
15
|
+
|
|
16
|
+
Security release. Existing installs need action after upgrading — see "Action required" below.
|
|
17
|
+
|
|
18
|
+
### Security
|
|
19
|
+
|
|
20
|
+
- Secret redaction missed keys whose secret word is part of a longer identifier: `DB_PASSWORD=x`,
|
|
21
|
+
`OPENAI_API_KEY=x`, `AUTH_TOKEN=x`, `CLIENT_SECRET=x` were kept verbatim (the rule's leading `\b`
|
|
22
|
+
never matches after `_`), as were values shorter than 8 characters or containing characters such
|
|
23
|
+
as `@ ! # $`. This affected `scan-shell` output, stored shell and conversation nodes, session
|
|
24
|
+
summaries, the FTS index, embeddings, and `search_memory` / `query` results.
|
|
25
|
+
- `shell_command` nodes stored the raw command in `meta.command`, so a typed secret was written to
|
|
26
|
+
`memory.db` even when the title showed it redacted, and was printed by `scan-shell --json` and
|
|
27
|
+
`precheck`. `meta.command` is now redacted; `meta.commandHash` keeps the raw command's hash so node
|
|
28
|
+
ids and project-id reconciliation are unchanged.
|
|
29
|
+
- The installed shell hooks appended every command raw to `~/.nexusmem/shell-history.jsonl`. Hooks now
|
|
30
|
+
pass each command to a NexusMem recorder over stdin; the recorder hashes and redacts it in memory
|
|
31
|
+
and writes only the redacted command. It writes no temp files and prints nothing, and it drops any
|
|
32
|
+
event it cannot process instead of writing it raw. Hooks installed by earlier versions keep writing
|
|
33
|
+
raw commands until reinstalled: `hook status` reports them as outdated, and `sync` redacts what they
|
|
34
|
+
write and warns.
|
|
35
|
+
- Redaction now also covers credentials in connection URIs (`postgres://user:pass@host`),
|
|
36
|
+
`Authorization:` headers and bearer tokens, secret-named options whose value is the next argument
|
|
37
|
+
(`--password x`), and `mysql -pX`, `sshpass -p`, `mongosh -p`, `redis-cli -a`, `curl -u user:pass`.
|
|
38
|
+
|
|
39
|
+
### Added
|
|
40
|
+
|
|
41
|
+
- `nexusmem scrub-secrets [--all-projects] [--yes] [--no-embed]` removes secrets that earlier versions
|
|
42
|
+
already stored: shell, conversation, session-summary and code-diff rows, contradiction reasons, the
|
|
43
|
+
FTS index, embeddings, and the shell hook log. Dry run by default. `--yes` takes a backup of each
|
|
44
|
+
database first and prints its path, redacts rows in place (ids unchanged), drops and re-embeds
|
|
45
|
+
affected vectors, rebuilds the FTS index, runs `VACUUM`, and truncates the WAL. Safe to run
|
|
46
|
+
repeatedly. Existing `memory.db.backup-*` files are listed, never modified or deleted.
|
|
47
|
+
|
|
48
|
+
### Action required
|
|
49
|
+
|
|
50
|
+
1. Upgrade every NexusMem install (global CLI, MCP server configs, the post-commit hook's `nexusmem`),
|
|
51
|
+
then restart MCP clients and editors so no older version keeps writing.
|
|
52
|
+
2. Run `nexusmem hook install` again in each shell you installed the hook for; `nexusmem hook status`
|
|
53
|
+
should say `installed`, not `OUTDATED`.
|
|
54
|
+
3. Rotate any credential typed at a shell prompt or pasted into a captured conversation in the
|
|
55
|
+
affected forms. Scrubbing cannot recall copies already returned to an LLM, backed up, or synced.
|
|
56
|
+
4. Run `nexusmem scrub-secrets --all-projects`, review, then re-run with `--yes`.
|
|
57
|
+
5. Delete the `memory.db.backup-*` files NexusMem lists (they predate redaction) once you have
|
|
58
|
+
verified the scrubbed database.
|
|
59
|
+
6. Do not use `nexusmem forget <secret>` for this: it stores the value itself in the database's
|
|
60
|
+
deny-list, and the shell hook captures a bare argument unredacted.
|
|
61
|
+
|
|
62
|
+
### Known limitations
|
|
63
|
+
|
|
64
|
+
- NexusMem cannot change your shell's own history files (PSReadLine `ConsoleHost_history.txt`,
|
|
65
|
+
`~/.bash_history`, `~/.zsh_history`); they still contain whatever you typed.
|
|
66
|
+
- Not yet redacted: a token used as a URL username (`https://TOKEN@host`), `openssl -passin`,
|
|
67
|
+
`keytool -storepass`, `ssh-keygen -N`, secret-bearing keys without a secret word (`STRIPE_KEY`,
|
|
68
|
+
`DB_PW`), secrets passed as plain positional arguments, and commit messages, docs and GitHub
|
|
69
|
+
threads (never redacted).
|
|
70
|
+
|
|
71
|
+
## [0.10.4] — 2026-09-07
|
|
72
|
+
|
|
73
|
+
### Added
|
|
74
|
+
|
|
75
|
+
- Fresh-project syncs classify reconstructable Git commits and diffs, timestamped shell history,
|
|
76
|
+
and already-supported opt-in coding-agent history as `backfilled` only when a trustworthy source
|
|
77
|
+
timestamp predates NexusMem initialization. Trustworthily timestamped events between initialization
|
|
78
|
+
and sync time are `observed`. Tracked Markdown, untimestamped shell history, and other records that
|
|
79
|
+
cannot be classified remain `unknown`. Retrieval exposes this origin alongside the existing evidence
|
|
80
|
+
provenance.
|
|
81
|
+
|
|
82
|
+
### Changed
|
|
83
|
+
|
|
84
|
+
- Historical shell entries no longer receive timestamps inferred from history-file mtimes.
|
|
85
|
+
Missing timestamp, cwd, exit code, and duration metadata remain null, and incomplete shell
|
|
86
|
+
evidence is excluded from failure-to-fix correlation.
|
|
87
|
+
- Schema V13 adds `nodes.capture_mode` and nullable `nodes.source_ts`. Existing approximate
|
|
88
|
+
shell timestamps and document mtimes migrate to a null `source_ts`; other existing event timestamps are retained.
|
|
32
89
|
|
|
33
90
|
## [0.10.3] — 2026-08-31
|
|
34
91
|
|
|
@@ -649,7 +706,11 @@ First public release.
|
|
|
649
706
|
there is no local-model summarization pass, and the conversation collector has never been audited
|
|
650
707
|
for the stale-node bug that was found and fixed in the docs collector.
|
|
651
708
|
|
|
652
|
-
[Unreleased]: https://github.com/yaminbkk/NexusMem/compare/v0.10.
|
|
709
|
+
[Unreleased]: https://github.com/yaminbkk/NexusMem/compare/v0.10.5...HEAD
|
|
710
|
+
[0.10.5]: https://github.com/yaminbkk/NexusMem/compare/v0.10.4...v0.10.5
|
|
711
|
+
[0.10.4]: https://github.com/yaminbkk/NexusMem/compare/v0.10.3...v0.10.4
|
|
712
|
+
[0.10.3]: https://github.com/yaminbkk/NexusMem/compare/v0.10.2...v0.10.3
|
|
713
|
+
[0.10.2]: https://github.com/yaminbkk/NexusMem/compare/v0.10.1...v0.10.2
|
|
653
714
|
[0.10.1]: https://github.com/yaminbkk/NexusMem/compare/v0.10.0...v0.10.1
|
|
654
715
|
[0.10.0]: https://github.com/yaminbkk/NexusMem/compare/v0.9.1...v0.10.0
|
|
655
716
|
[0.9.1]: https://github.com/yaminbkk/NexusMem/compare/v0.9.0...v0.9.1
|
package/README.md
CHANGED
|
@@ -425,6 +425,9 @@ node afterward. `--verify` is a label only; it does not boost ranking. Every nod
|
|
|
425
425
|
|
|
426
426
|
`init`, `sync`, `query <text>` (add `--as-of <date>` for a bi-temporal read, see below), `status` (add
|
|
427
427
|
`--share` for a plain-text summary worth pasting somewhere), `projects`, `mcp`, `forget <value>`,
|
|
428
|
+
`scrub-secrets` (re-redacts secrets that versions before 0.10.5 already stored — database rows, FTS
|
|
429
|
+
index, embeddings and the shell hook log; dry-run unless `--yes`, which backs each database up first;
|
|
430
|
+
`--all-projects` covers every registered repository),
|
|
428
431
|
`stale` (add `--check-contradictions` for a local-SLM content check, see above), `mark-stale
|
|
429
432
|
<nodeId> --supersedes <newNodeId>`, `review <nodeId> --verify|--reject` (record a human verdict on
|
|
430
433
|
one node, see above), `precheck` (advisory — warns about staged files with an unresolved past
|