@vib795/agent-memory 0.5.1 → 0.6.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/README.md +84 -15
- package/package.json +1 -1
- package/src/cli.js +1 -1
- package/src/promptfile.js +1 -1
- package/src/store.js +0 -0
package/README.md
CHANGED
|
@@ -1,17 +1,45 @@
|
|
|
1
1
|
# agent-memory
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
3
|
+
**Durable memory for Claude Code and GitHub Copilot — that survives an IT security review.**
|
|
4
|
+
|
|
5
|
+
Your agent forgets everything between windows. Most tools that fix that cannot be
|
|
6
|
+
installed where you actually work.
|
|
7
|
+
|
|
8
|
+
This one has **zero runtime dependencies, zero dev dependencies, and no install
|
|
9
|
+
script**. Nothing runs when you install it; granting it your agents is a second,
|
|
10
|
+
separate command. It has been [independently scanned](#independently-scanned) and
|
|
11
|
+
passed. `npm ls -g --depth 0` shows nothing underneath it, because there is nothing
|
|
12
|
+
underneath it.
|
|
13
|
+
|
|
14
|
+
## Install
|
|
15
|
+
|
|
16
|
+
Two commands, and the second one is not optional — it creates the store and installs
|
|
17
|
+
into every agent on the machine, in whatever format that tool reads:
|
|
18
|
+
|
|
19
|
+
```bash
|
|
20
|
+
npm install -g @vib795/agent-memory
|
|
21
|
+
agent-memory setup
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
Node >= 22.5, and nothing else.
|
|
10
25
|
|
|
11
|
-
|
|
12
|
-
|
|
26
|
+
In Claude Code you can take the three skills as a plugin instead of letting `setup`
|
|
27
|
+
link them:
|
|
13
28
|
|
|
14
|
-
|
|
29
|
+
```
|
|
30
|
+
/plugin marketplace add vib795/agent-memory
|
|
31
|
+
/plugin install agent-memory@vib795
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
The plugin carries the skills; `npm` carries the store. You want both — the skills
|
|
35
|
+
will tell you so if you only have one.
|
|
36
|
+
|
|
37
|
+
Behind a proxy that quarantines npm, or want the GitHub Packages mirror?
|
|
38
|
+
[Every install path is here](#install-1).
|
|
39
|
+
|
|
40
|
+
## What you get
|
|
41
|
+
|
|
42
|
+
Three user-level Agent Skills over one local markdown store:
|
|
15
43
|
|
|
16
44
|
| Skill | What it does |
|
|
17
45
|
|---|---|
|
|
@@ -19,9 +47,23 @@ Three user-level Agent Skills over one local store:
|
|
|
19
47
|
| `/remember` | Captures durable knowledge into a cross-repo graph — and fires on its own when a juncture passes |
|
|
20
48
|
| `/recall` | Answers from that graph before deriving anything again |
|
|
21
49
|
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
50
|
+
The store is plain markdown in `~/.agents/memory/`, outside every repository — which
|
|
51
|
+
is what lets a note written in one project be read from another. Nothing leaves the
|
|
52
|
+
machine: no daemon, no scheduled task, no telemetry.
|
|
53
|
+
|
|
54
|
+
**New here?** [HOWTO.md](HOWTO.md) — install, first five minutes, and the per-tool
|
|
55
|
+
notes for Claude Code, Codex and Copilot.
|
|
56
|
+
|
|
57
|
+
**How does it work?** [ARCHITECTURE.md](ARCHITECTURE.md) — the source-of-truth split,
|
|
58
|
+
the write and read paths, the tiered context cost, and the invariants underneath.
|
|
59
|
+
|
|
60
|
+
[](https://www.npmjs.com/package/@vib795/agent-memory)
|
|
61
|
+
[](https://github.com/vib795/agent-memory/actions/workflows/test.yml)
|
|
62
|
+
[](https://github.com/vib795/agent-memory/actions/workflows/release.yml)
|
|
63
|
+
[](https://www.npmjs.com/package/@vib795/agent-memory)
|
|
64
|
+
[](https://nodejs.org)
|
|
65
|
+
[](package.json)
|
|
66
|
+
[](LICENSE)
|
|
25
67
|
|
|
26
68
|
## Why this exists
|
|
27
69
|
|
|
@@ -207,6 +249,33 @@ name on it. What this is not: it is not encryption, access control, or a DLP pro
|
|
|
207
249
|
It is one command that refuses to hand over identifiers, and it says exactly what it
|
|
208
250
|
checked.
|
|
209
251
|
|
|
252
|
+
### Independently scanned
|
|
253
|
+
|
|
254
|
+
Public supply-chain scanners index every package published to npm, so this one is
|
|
255
|
+
reviewed by people who owe it nothing. That is worth more than a clean claim from its
|
|
256
|
+
author.
|
|
257
|
+
|
|
258
|
+
[LPM Firewall](https://firewall.lpm.dev/npm/@vib795/agent-memory) currently reports
|
|
259
|
+
**Passed — safe to install**, with no policy match and no flagged code. Its reading of
|
|
260
|
+
the artefact — signed, provenance attached, zero dependencies, no install hooks — is a
|
|
261
|
+
third-party check on what this README says about itself. Four low-signal patterns
|
|
262
|
+
remain, and they are descriptive rather than policy: environment variables, scripts
|
|
263
|
+
present, filesystem, high-entropy strings. That is what a CLI which reads
|
|
264
|
+
`AGENT_MEMORY_HOME` and writes files in your home directory looks like from outside.
|
|
265
|
+
|
|
266
|
+
**It did not start there.** Version 0.3.1 was flagged **Critical — AI Agent Control
|
|
267
|
+
Hijack**, because `postinstall` wrote skill files into `~/.claude`, `~/.codex` and your
|
|
268
|
+
editor's prompt folder. The finding was correct. An install script that grants an AI
|
|
269
|
+
agent new instructions without the user asking is indistinguishable from an attack
|
|
270
|
+
that does exactly that, and good intent is not observable to a scanner. The hook was
|
|
271
|
+
removed in 0.4.0 rather than argued with, which is why `agent-memory setup` is a
|
|
272
|
+
command you type.
|
|
273
|
+
|
|
274
|
+
The 0.3.1 report is still public and still says Critical. Old version pages do not
|
|
275
|
+
come down, and they should not: a supply-chain record that could be edited after the
|
|
276
|
+
fact would be worth nothing. What a project can offer is the next version and the
|
|
277
|
+
reason for it.
|
|
278
|
+
|
|
210
279
|
## Engagements
|
|
211
280
|
|
|
212
281
|
If you work for more than one client on one machine, knowledge from one of them is
|
|
@@ -445,7 +514,7 @@ Claude Code can take the same three as a plugin:
|
|
|
445
514
|
|
|
446
515
|
```
|
|
447
516
|
/plugin marketplace add vib795/agent-memory
|
|
448
|
-
/plugin install agent-memory@
|
|
517
|
+
/plugin install agent-memory@vib795
|
|
449
518
|
```
|
|
450
519
|
|
|
451
520
|
The same caveat applies: the plugin carries the skills, `npm` carries the store.
|
|
@@ -472,7 +541,7 @@ is generated state, and the committed value is only a placeholder.
|
|
|
472
541
|
|
|
473
542
|
Needs Node 22.5 or newer; `doctor` says so plainly if the version is too old.
|
|
474
543
|
|
|
475
|
-
Run `npm test` for the suite (
|
|
544
|
+
Run `npm test` for the suite (91 tests, no dependencies). CI runs it on Linux,
|
|
476
545
|
macOS and Windows across Node 22 and 24, and separately installs the packed tarball
|
|
477
546
|
and exercises it end to end on all three.
|
|
478
547
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@vib795/agent-memory",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.6.0",
|
|
4
4
|
"description": "Durable cross-repo knowledge graph for GitHub Copilot and Claude Code. Markdown source of truth, disposable SQLite index, zero runtime dependencies.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"github-copilot",
|
package/src/cli.js
CHANGED
|
@@ -75,7 +75,7 @@ function git(args, cwd = process.cwd()) {
|
|
|
75
75
|
const USAGE = `agent-memory — durable cross-repo knowledge for coding agents
|
|
76
76
|
|
|
77
77
|
setup link all three skills, build the store
|
|
78
|
-
(
|
|
78
|
+
(run this once, by hand, after install)
|
|
79
79
|
uninstall remove the skill links; keeps every note
|
|
80
80
|
init [--skills "<p1>,<p2>"] create the store; register skill files
|
|
81
81
|
index rebuild index.db from notes/
|
package/src/promptfile.js
CHANGED
|
@@ -15,7 +15,7 @@ export const GENERATED_MARKER =
|
|
|
15
15
|
|
|
16
16
|
/** Split a leading `---` frontmatter block from the body. */
|
|
17
17
|
function splitFrontmatter(text) {
|
|
18
|
-
const src = String(text).replace(
|
|
18
|
+
const src = String(text).replace(/^\uFEFF/, '').replace(/\r\n/g, '\n');
|
|
19
19
|
if (!src.startsWith('---')) return { head: '', body: src.trim() };
|
|
20
20
|
const end = src.indexOf('\n---', 3);
|
|
21
21
|
if (end === -1) return { head: '', body: src.trim() };
|
package/src/store.js
CHANGED
|
Binary file
|