memgineering 0.25.0 → 0.25.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 +105 -0
- package/assets/MEMGINEERING.md +1 -1
- package/assets/memgineering-recall/SKILL.md +3 -2
- package/assets/memgineering-rules/SKILL.md +14 -0
- package/assets/memgineering-setup/SKILL.md +14 -2
- package/dist/index.js +736 -267
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -11,6 +11,111 @@ language the reader wants. The bilingual rule the monorepo applies to
|
|
|
11
11
|
|
|
12
12
|
## [Unreleased]
|
|
13
13
|
|
|
14
|
+
## [0.25.2] — 2026-10-05
|
|
15
|
+
|
|
16
|
+
Small fixes found by an independent review of 0.25.0 and 0.25.1. Nothing here
|
|
17
|
+
changes what you type.
|
|
18
|
+
|
|
19
|
+
### Fixed
|
|
20
|
+
|
|
21
|
+
- **A refresh `setup` keeps your choices.** `memgineering setup` run again
|
|
22
|
+
without `--hook` or `--auto-update` used to turn both back on. It now keeps
|
|
23
|
+
the hook and auto-update choices recorded on this machine, including a hook
|
|
24
|
+
choice made on the `setup --web` screen. On a machine set
|
|
25
|
+
up before this release, the hook choice is read from whether the hook is
|
|
26
|
+
installed. A kept choice is no longer listed as a default nobody was asked
|
|
27
|
+
about.
|
|
28
|
+
- **A command no longer waits on the update check.** Before a background
|
|
29
|
+
install, the CLI asks npm, pnpm and bun where they keep global packages. That
|
|
30
|
+
could hold your command open for up to 15 seconds after its output, and
|
|
31
|
+
longer behind a version manager. The CLI now asks all three at once and gives
|
|
32
|
+
up after 1.5 seconds. If it cannot tell how memgineering was installed, it
|
|
33
|
+
installs nothing and prints the usual "is available — `memgineering update`"
|
|
34
|
+
line.
|
|
35
|
+
- **The before-edit hook never starts an update**, even when it is called with
|
|
36
|
+
a flag first (`memgineering --json guard`). The same holds for `resurface`.
|
|
37
|
+
- **Two commands starting together cannot both start a background install.**
|
|
38
|
+
This could happen when the previous install had been left unfinished. If the
|
|
39
|
+
lock behind this fix is ever left in place, `memgineering update` says so
|
|
40
|
+
(`update_claim_stuck`) instead of reporting another install in progress.
|
|
41
|
+
- **Both sides of a conflict appear in recall.** When a note contradicted an
|
|
42
|
+
unfilled base template, the limit of two template cards could hide one side
|
|
43
|
+
while recall said "Both sides are above". Both sides now show, even if that
|
|
44
|
+
means more than two template cards, and the line counting held-back
|
|
45
|
+
templates says so.
|
|
46
|
+
- **Hosted recall by meaning no longer drops a base note you have filled in.**
|
|
47
|
+
A `USER.md` or other `01_BASE/` note you rewrote in your own words was
|
|
48
|
+
treated as an untouched template and left out. Only an exact, untouched
|
|
49
|
+
template is held back now.
|
|
50
|
+
- **A chat-app connector cannot change a rule by other routes.** Retiring,
|
|
51
|
+
restoring or undoing a rule from a connector is now refused with
|
|
52
|
+
`rule_needs_a_person`, as editing one already was. That includes undoing the
|
|
53
|
+
`remember` that created a rule. A connector's `undo` with no id undoes only
|
|
54
|
+
that app's own changes, including those made before its sign-in was
|
|
55
|
+
refreshed. If it has made none, it is told so and nothing is undone.
|
|
56
|
+
- Hosted `retire` and `unretire` no longer say that `undo` cannot reverse
|
|
57
|
+
them. It can, and their hint now names both ways back.
|
|
58
|
+
- `setup --help` gives ChatGPT its own route: Settings → Developer mode → add
|
|
59
|
+
an MCP server. Claude.ai, Claude Desktop and Cowork use a custom connector.
|
|
60
|
+
- `setup --web` prints its terminal lines in English.
|
|
61
|
+
|
|
62
|
+
### Agent guidance
|
|
63
|
+
|
|
64
|
+
- `memgineering-setup`: turning auto-update off with
|
|
65
|
+
`setup --agent --auto-update off` no longer needs `--hook`, because the hook
|
|
66
|
+
stays as this machine recorded it. It also explains `update_claim_stuck`.
|
|
67
|
+
- `memgineering-recall`: a template card that is one side of a conflict comes
|
|
68
|
+
on top of the two-card limit.
|
|
69
|
+
|
|
70
|
+
## [0.25.1] — 2026-10-05
|
|
71
|
+
|
|
72
|
+
A security release. Upgrade if you use `setup --web`, or a hosted brain with a
|
|
73
|
+
chat-app connector.
|
|
74
|
+
|
|
75
|
+
### Security
|
|
76
|
+
|
|
77
|
+
- **`setup --web` no longer switches a machine to another account.** If the
|
|
78
|
+
setup screen is confirmed by a different account from the one this machine is
|
|
79
|
+
signed in to, nothing is written and the terminal says why. The setup screen
|
|
80
|
+
is only told "different account", never who is signed in here.
|
|
81
|
+
- **Notes chosen for upload on the setup screen wait for a check on this
|
|
82
|
+
machine.** A setup left running in the background uploads nothing. The next
|
|
83
|
+
command names the folder, the account that would receive it, and the `push`
|
|
84
|
+
that sends it. That command is quoted, so neither a folder name nor a brain
|
|
85
|
+
name can run as shell code. A setup in the foreground asks first. A `push` of
|
|
86
|
+
that folder, or `logout`, clears the notice.
|
|
87
|
+
- **The setup screen can link or upload only a folder this machine offered.**
|
|
88
|
+
It can create a new local brain only inside the home folder. A relative or
|
|
89
|
+
`~/` path is read against the home folder and created exactly where it was
|
|
90
|
+
checked, and symlinks are followed.
|
|
91
|
+
- **`setup --web --json` prints `setup_url` only when no browser opened**, with
|
|
92
|
+
a hint to use `--print-url` if the browser never appeared. A machine signing
|
|
93
|
+
in for the first time is told once which account it was connected to.
|
|
94
|
+
- **`login` tells the approval screen when and from what the sign-in came**
|
|
95
|
+
(`platform`, `client`). Its wording now says that screen asks the person to
|
|
96
|
+
type the code.
|
|
97
|
+
- **Rules first written through a chat-app connector say so.** `memgineering
|
|
98
|
+
rules` and the before-edit hook print `(written by the ChatGPT connector)`
|
|
99
|
+
next to such a rule, and `--json` carries `written_by`. A rule asked for from
|
|
100
|
+
a chat app is now held as a note until the person promotes it at a terminal.
|
|
101
|
+
The hold is enforced by the server.
|
|
102
|
+
|
|
103
|
+
### Fixed
|
|
104
|
+
|
|
105
|
+
- `revise --rule` with the claim a note already holds makes it a rule. It used
|
|
106
|
+
to be refused as "already says this", and nothing bound.
|
|
107
|
+
|
|
108
|
+
### Agent guidance
|
|
109
|
+
|
|
110
|
+
- `memgineering-setup` explains what the setup link gives whoever holds it, and
|
|
111
|
+
what happens to an upload chosen on the screen.
|
|
112
|
+
- `memgineering-rules` explains rules held from chat apps. Promoting one binds
|
|
113
|
+
the note's own text, so read it first with `memgineering open <id> --detail
|
|
114
|
+
full`; to word it differently, write a new rule with `remember --rule`. It
|
|
115
|
+
also explains the `written by` label.
|
|
116
|
+
|
|
117
|
+
Restart the agent session after upgrading so it reads the new guidance.
|
|
118
|
+
|
|
14
119
|
## [0.25.0] — 2026-10-04
|
|
15
120
|
|
|
16
121
|
### Added
|
package/assets/MEMGINEERING.md
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
name: memgineering
|
|
3
3
|
description: Use whenever the user refers to something they told you before, asks what was decided, tells you something worth keeping, or settles something that should hold next time. The memory lives in their own folder and outlives this session; check it before answering from guesswork, and write to it when you learn something durable.
|
|
4
4
|
type: skill
|
|
5
|
-
version: 0.25.
|
|
5
|
+
version: 0.25.2
|
|
6
6
|
---
|
|
7
7
|
|
|
8
8
|
# memgineering
|
|
@@ -210,8 +210,9 @@ it, so it is evidence of nothing — do not quote it back as what they think. Wh
|
|
|
210
210
|
every card carries that mark, recall says so above them (`--json`:
|
|
211
211
|
`scaffolding: true`), and that is the moment to offer to fill them in rather
|
|
212
212
|
than answer from them — see `memgineering-writing`. At most two such cards come
|
|
213
|
-
back per answer
|
|
214
|
-
|
|
213
|
+
back per answer, plus any that is one side of a conflict, so both sides of a
|
|
214
|
+
conflict always show; the rest are counted (`templates_withheld`), never
|
|
215
|
+
silently dropped, and nothing anyone wrote is ever held back.
|
|
215
216
|
|
|
216
217
|
The mark disappears once the user writes in the file. A filled-in base note is
|
|
217
218
|
often the best answer in the brain: _who am I_, _what am I not allowed to do_,
|
|
@@ -69,6 +69,20 @@ A hosted brain answers this too, and `--rule` writes to one land marked. The
|
|
|
69
69
|
marking lives in the note's own frontmatter either way, so a brain that was
|
|
70
70
|
pushed from a folder keeps every rule it had.
|
|
71
71
|
|
|
72
|
+
**A rule saved from a chat app waits for the user.** ChatGPT, Claude.ai and
|
|
73
|
+
other connectors can write notes, but not rules: a rule asked for there is
|
|
74
|
+
kept as an ordinary note, and binds only once the user promotes it at a
|
|
75
|
+
terminal. Promoting binds the note's own text as the chat wrote it — `--claim`
|
|
76
|
+
changes the summary, not the words that bind — so they read it first with
|
|
77
|
+
`memgineering open <id> --detail full` (the card alone shows only the title and
|
|
78
|
+
summary, which a chat app may have rewritten), then `memgineering revise <id> --rule --claim "<what
|
|
79
|
+
the note says>"`. Worded differently, it is a new rule: `memgineering remember
|
|
80
|
+
"<the rule>" --rule`. A connector also cannot change or unmark an existing rule. Once
|
|
81
|
+
promoted, the rule says where its words came from — `(written by the ChatGPT
|
|
82
|
+
connector)` beside it in `memgineering rules` and in the before-edit hook, and
|
|
83
|
+
`written_by` in `--json`. Treat it as their rule; the label says which surface
|
|
84
|
+
it was first said on.
|
|
85
|
+
|
|
72
86
|
**A rule also wins a tie in `recall` now.** Where an ordinary memory and a
|
|
73
87
|
standing decision matched a query equally well, the decision is ranked first —
|
|
74
88
|
the asymmetry being that a missed fact costs the reader some context, while a
|
|
@@ -66,6 +66,17 @@ Three things to do after running it:
|
|
|
66
66
|
picks it up on its own when they do. There is nothing to poll and nothing
|
|
67
67
|
to wait for.
|
|
68
68
|
|
|
69
|
+
The link is the key to that screen, not the code: whoever holds the whole link
|
|
70
|
+
can drive it. Give it only to them, never paste it anywhere else — with
|
|
71
|
+
`--json`, `setup_url` is printed only when no browser opened.
|
|
72
|
+
|
|
73
|
+
If they chose to upload existing notes on the screen, this machine does NOT
|
|
74
|
+
upload them on its own: the next `memgineering` command shows which folder and
|
|
75
|
+
which account would receive them, with the `push` that sends them. Check with
|
|
76
|
+
them that the account is theirs before running it. And a machine already
|
|
77
|
+
signed in to a different account is never switched by `setup --web` — the
|
|
78
|
+
terminal says so; `logout` first if they really mean to switch.
|
|
79
|
+
|
|
69
80
|
The screen asks everything `--agent` takes from flags — sign in, where the
|
|
70
81
|
memory lives, which brain, which tools, auto-update, the session hook — with
|
|
71
82
|
the recommended answer pre-selected. A person who is already signed in to
|
|
@@ -116,7 +127,8 @@ or npx copy is never touched — it only gets the notice; nor is anything instal
|
|
|
116
127
|
from a session hook or under CI). One install runs at a time: `memgineering
|
|
117
128
|
update` run while a background install is going answers `update_in_progress`
|
|
118
129
|
and installs nothing — wait a few minutes and run it again; it reports whether
|
|
119
|
-
that install worked.
|
|
130
|
+
that install worked. `update_claim_stuck` means a crashed install's leftover
|
|
131
|
+
could not be cleared; its hint names the folder to delete. `--hook on` means note
|
|
120
132
|
summaries and their standing rules reach an agent unasked. Recommend both, but
|
|
121
133
|
they are theirs to decide.
|
|
122
134
|
|
|
@@ -502,7 +514,7 @@ answers without changing its name and the index has to be laid down again.
|
|
|
502
514
|
## Turning things off
|
|
503
515
|
|
|
504
516
|
```
|
|
505
|
-
memgineering setup --agent --auto-update off
|
|
517
|
+
memgineering setup --agent --auto-update off # the hook stays as this machine recorded it
|
|
506
518
|
memgineering unlink # stop reading a brain; notes untouched
|
|
507
519
|
memgineering unlink --purge # also delete the local index and undo snapshots
|
|
508
520
|
```
|