memgineering 0.0.0 → 0.2.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/CHANGELOG.md +147 -0
- package/LICENSE +202 -0
- package/NOTICE +41 -0
- package/README.md +156 -5
- package/assets/MEMGINEERING.md +135 -0
- package/assets/memgineering-memory/SKILL.md +227 -0
- package/assets/memgineering-setup/SKILL.md +141 -0
- package/bin/memgineering.js +1 -6
- package/dist/index.js +6150 -0
- package/package.json +58 -16
- package/scripts/copy-skills.mjs +40 -0
- package/scripts/postinstall.mjs +16 -0
package/CHANGELOG.md
ADDED
|
@@ -0,0 +1,147 @@
|
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
All notable changes to `memgineering` are documented here, in the
|
|
4
|
+
[Keep a Changelog](https://keepachangelog.com/en/1.1.0/) style. This project
|
|
5
|
+
follows [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
6
|
+
|
|
7
|
+
English only, deliberately: this file is read by people deciding whether to
|
|
8
|
+
upgrade and by agents summarising a release, and both re-render it in whatever
|
|
9
|
+
language the reader wants. The bilingual rule the monorepo applies to
|
|
10
|
+
`@rayul/kordis` does not extend here.
|
|
11
|
+
|
|
12
|
+
## [Unreleased]
|
|
13
|
+
|
|
14
|
+
## [0.2.0] — 2026-08-09
|
|
15
|
+
|
|
16
|
+
The record can say why, and you can see what a memory is actually worth.
|
|
17
|
+
|
|
18
|
+
### Added
|
|
19
|
+
|
|
20
|
+
- **`evidence <ref>`** — how much a memory has been used, and why it last
|
|
21
|
+
changed: how often recall surfaced it, how often anyone opened it, when it
|
|
22
|
+
was last read, how many times it has been revised, and the reason attached to
|
|
23
|
+
the most recent change. Every number comes from records that already existed;
|
|
24
|
+
nothing new is collected, and running it records nothing of its own — so
|
|
25
|
+
measuring a memory cannot change where `resurface` ranks it.
|
|
26
|
+
- **A standing for each memory** — `well-used`, `surfaced, never opened`, or
|
|
27
|
+
`never recalled` — computed from usage rather than declared. It is withheld
|
|
28
|
+
entirely when this machine has no recall history yet, since that log is local
|
|
29
|
+
state and a brain copied to a new machine starts empty.
|
|
30
|
+
- **`--reason` on every write verb.** `remember`, `exclude`, `unexclude` and
|
|
31
|
+
`undo` accept one for the first time; `revise`, `retire` and `unretire`
|
|
32
|
+
already did. The reason on an `undo` is usually the most valuable of the set.
|
|
33
|
+
- **`log` shows the reason** without needing `--verbose`.
|
|
34
|
+
|
|
35
|
+
### Fixed
|
|
36
|
+
|
|
37
|
+
- **`revise --reason` and `retire --reason` were silently discarded.** Both
|
|
38
|
+
flags shipped in 0.1.0, and `retire --help` described the reason as "kept in
|
|
39
|
+
the record". It was not kept anywhere: only creating a brand-new note ever
|
|
40
|
+
read the field, so on the ordinary path — changing a note that already exists
|
|
41
|
+
— the text went nowhere. Reasons given to those commands are now recorded in
|
|
42
|
+
the operation ledger, where `log` and `evidence` can show them.
|
|
43
|
+
|
|
44
|
+
- **`recall` now names the language barrier** when a query cannot reach the
|
|
45
|
+
brain. Search matches text, so an English query never reaches Korean notes
|
|
46
|
+
however it is worded — and the old zero-result footer suggested broader
|
|
47
|
+
wording, the one remedy that cannot work. Four testers hit this and came
|
|
48
|
+
within one command of telling their user the brain held nothing on a subject
|
|
49
|
+
it had notes about. The warning also appears above results, because the
|
|
50
|
+
failure is rarely a clean zero: a couple of English scaffolding notes match
|
|
51
|
+
and look like an answer.
|
|
52
|
+
- **`use` with no argument now says which brain you are on**, and how it
|
|
53
|
+
resolved — by pointer, by containment, or by being the only one linked. Its
|
|
54
|
+
own help had always promised this; it reported only whether a pointer file
|
|
55
|
+
existed, and three testers went and read the config file by hand instead.
|
|
56
|
+
- **`open` no longer tells you to hand-edit frontmatter** when a note states no
|
|
57
|
+
conclusion. It points at `memgineering revise --claim`, which is the
|
|
58
|
+
sanctioned path — the previous hint contradicted the bolded rule against
|
|
59
|
+
editing brain files directly, and a hand edit is invisible to `undo`.
|
|
60
|
+
- **`evidence` no longer implies a well-used memory is a correct one.** A note
|
|
61
|
+
the repository flatly contradicted was described as backed by the record.
|
|
62
|
+
Usage is attendance, and where a memory contradicts another the output now
|
|
63
|
+
says plainly that usage cannot settle which is right.
|
|
64
|
+
- **`evidence` sees a contradiction declared by either note.** The `contradicts`
|
|
65
|
+
edge lives on whichever note a revise happened to touch, so the warning above
|
|
66
|
+
fired on only one of the two — and stayed silent on the other, which is the
|
|
67
|
+
side a reader is more likely to be trusting by mistake.
|
|
68
|
+
- **`evidence` divides the open rate by the number printed beside it.** It used
|
|
69
|
+
to divide by recalls while `surfaced` also counted resurfacings, so the two
|
|
70
|
+
figures and the percentage reconciled with none of each other.
|
|
71
|
+
- **`remember --reason` help disambiguated** — it records why you are writing
|
|
72
|
+
something down, not why the fact is true. One tester nearly filed the
|
|
73
|
+
substance of a note there, where recall would never show it.
|
|
74
|
+
|
|
75
|
+
### Changed
|
|
76
|
+
|
|
77
|
+
- A reason that looks like it contains credential material is refused, with the
|
|
78
|
+
pattern named and the value never echoed. The ledger travels with the brain,
|
|
79
|
+
so an unscreened reason would become a permanent synced copy of a secret —
|
|
80
|
+
and the deny layer that screens notes does not look at the ledger. The write
|
|
81
|
+
itself is unaffected: rephrase, or drop the flag.
|
|
82
|
+
- Operation records carry a `rationale` field and `rule_version` is now 2.
|
|
83
|
+
Ledgers written by 0.1.x still read correctly; an older line simply reports
|
|
84
|
+
no reason given, which is what happened.
|
|
85
|
+
|
|
86
|
+
### Agent guidance
|
|
87
|
+
|
|
88
|
+
The bundled hub and the `memgineering-memory` skill now cover `evidence` and
|
|
89
|
+
ask for `--reason` on every write, including the rule that a newer memory does
|
|
90
|
+
not automatically win. **Restart your agent session after upgrading** so the
|
|
91
|
+
new guidance is loaded.
|
|
92
|
+
|
|
93
|
+
## [0.1.0] — 2026-08-09
|
|
94
|
+
|
|
95
|
+
First release. A brain is a folder of your own notes; every agent you use
|
|
96
|
+
reads and writes it through this one CLI.
|
|
97
|
+
|
|
98
|
+
### Added
|
|
99
|
+
|
|
100
|
+
- **Recall and open.** `recall <query>` returns memory cards — title, summary,
|
|
101
|
+
and a handle — rather than documents, so an agent can afford to ask on every
|
|
102
|
+
turn. `open <ref>` expands one, and takes a handle, an id, a path inside the
|
|
103
|
+
brain, or a note's exact title, so you do not have to search for something
|
|
104
|
+
you can already name.
|
|
105
|
+
- **Progressive reading.** `--detail title | card | summary | chunks | full`
|
|
106
|
+
on both verbs, plus `open --section <name>`. Every stage is computed from
|
|
107
|
+
the note itself — the summary is the author's own, the chunks are their own
|
|
108
|
+
headings. Nothing is generated.
|
|
109
|
+
- **Writing without an approval queue.** `remember <text>` records an
|
|
110
|
+
observation immediately, as its own note, recallable at once. `revise <ref>`
|
|
111
|
+
changes a memory's conclusion. Both are reversible with `undo`, and `log`
|
|
112
|
+
shows what changed and what can still be taken back.
|
|
113
|
+
- **An operation ledger** inside the brain, so corrections travel with the
|
|
114
|
+
notes they describe. It records hashes and the changed region, never note
|
|
115
|
+
text.
|
|
116
|
+
- **`resurface`** — what is worth having in view at the start of a session,
|
|
117
|
+
with no query: ranked by what has been recalled in this folder before, how
|
|
118
|
+
recently, and which base notes have gone unread.
|
|
119
|
+
- **`init`** lays out a new brain — eleven folders and five base files, ready
|
|
120
|
+
to write into. **`link`** reads notes you already keep, showing the actual
|
|
121
|
+
lines that would be stored before anything is indexed.
|
|
122
|
+
- **Several brains at once.** Resolution goes `--vault`, then a
|
|
123
|
+
`.memgineering` pointer found by walking up, then the brain the current
|
|
124
|
+
directory is inside, then the only one linked — and refuses rather than
|
|
125
|
+
guessing when none of those settle it. `use <brain>` writes the pointer, as
|
|
126
|
+
a relative path where it can, so it can be committed.
|
|
127
|
+
- **`retire` / `unretire`** mark a memory no longer current while it stays
|
|
128
|
+
visible; **`exclude` / `unexclude`** stop reading a note entirely without
|
|
129
|
+
touching it. They are separate because "delete" means both, and guessing
|
|
130
|
+
picks one.
|
|
131
|
+
- **`setup`** installs into Claude Code, Codex and Gemini CLI — `--agent` for
|
|
132
|
+
a non-interactive run, `--human` for a checkbox screen. Optionally registers
|
|
133
|
+
`resurface` to run when a Claude Code session starts.
|
|
134
|
+
- **Self-update.** `update` upgrades this install, or explains why it will
|
|
135
|
+
not: when the package manager on PATH does not own the directory this copy
|
|
136
|
+
lives in — the usual case under nvm, asdf, Volta and mise — it prints the
|
|
137
|
+
command instead of running it, because updating a copy nobody runs while
|
|
138
|
+
reporting success is worse than not updating at all.
|
|
139
|
+
|
|
140
|
+
### Agent guidance
|
|
141
|
+
|
|
142
|
+
Ships a hub block and two sub-skills (`memgineering-memory`,
|
|
143
|
+
`memgineering-setup`) installed into each detected tool's home.
|
|
144
|
+
**Restart your agent session after `setup` for them to load.**
|
|
145
|
+
|
|
146
|
+
[Unreleased]: https://github.com/memgineering/memgineering/compare/v0.1.0...HEAD
|
|
147
|
+
[0.1.0]: https://github.com/memgineering/memgineering/releases/tag/v0.1.0
|
package/LICENSE
ADDED
|
@@ -0,0 +1,202 @@
|
|
|
1
|
+
|
|
2
|
+
Apache License
|
|
3
|
+
Version 2.0, January 2004
|
|
4
|
+
http://www.apache.org/licenses/
|
|
5
|
+
|
|
6
|
+
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
|
|
7
|
+
|
|
8
|
+
1. Definitions.
|
|
9
|
+
|
|
10
|
+
"License" shall mean the terms and conditions for use, reproduction,
|
|
11
|
+
and distribution as defined by Sections 1 through 9 of this document.
|
|
12
|
+
|
|
13
|
+
"Licensor" shall mean the copyright owner or entity authorized by
|
|
14
|
+
the copyright owner that is granting the License.
|
|
15
|
+
|
|
16
|
+
"Legal Entity" shall mean the union of the acting entity and all
|
|
17
|
+
other entities that control, are controlled by, or are under common
|
|
18
|
+
control with that entity. For the purposes of this definition,
|
|
19
|
+
"control" means (i) the power, direct or indirect, to cause the
|
|
20
|
+
direction or management of such entity, whether by contract or
|
|
21
|
+
otherwise, or (ii) ownership of fifty percent (50%) or more of the
|
|
22
|
+
outstanding shares, or (iii) beneficial ownership of such entity.
|
|
23
|
+
|
|
24
|
+
"You" (or "Your") shall mean an individual or Legal Entity
|
|
25
|
+
exercising permissions granted by this License.
|
|
26
|
+
|
|
27
|
+
"Source" form shall mean the preferred form for making modifications,
|
|
28
|
+
including but not limited to software source code, documentation
|
|
29
|
+
source, and configuration files.
|
|
30
|
+
|
|
31
|
+
"Object" form shall mean any form resulting from mechanical
|
|
32
|
+
transformation or translation of a Source form, including but
|
|
33
|
+
not limited to compiled object code, generated documentation,
|
|
34
|
+
and conversions to other media types.
|
|
35
|
+
|
|
36
|
+
"Work" shall mean the work of authorship, whether in Source or
|
|
37
|
+
Object form, made available under the License, as indicated by a
|
|
38
|
+
copyright notice that is included in or attached to the work
|
|
39
|
+
(an example is provided in the Appendix below).
|
|
40
|
+
|
|
41
|
+
"Derivative Works" shall mean any work, whether in Source or Object
|
|
42
|
+
form, that is based on (or derived from) the Work and for which the
|
|
43
|
+
editorial revisions, annotations, elaborations, or other modifications
|
|
44
|
+
represent, as a whole, an original work of authorship. For the purposes
|
|
45
|
+
of this License, Derivative Works shall not include works that remain
|
|
46
|
+
separable from, or merely link (or bind by name) to the interfaces of,
|
|
47
|
+
the Work and Derivative Works thereof.
|
|
48
|
+
|
|
49
|
+
"Contribution" shall mean any work of authorship, including
|
|
50
|
+
the original version of the Work and any modifications or additions
|
|
51
|
+
to that Work or Derivative Works thereof, that is intentionally
|
|
52
|
+
submitted to Licensor for inclusion in the Work by the copyright owner
|
|
53
|
+
or by an individual or Legal Entity authorized to submit on behalf of
|
|
54
|
+
the copyright owner. For the purposes of this definition, "submitted"
|
|
55
|
+
means any form of electronic, verbal, or written communication sent
|
|
56
|
+
to the Licensor or its representatives, including but not limited to
|
|
57
|
+
communication on electronic mailing lists, source code control systems,
|
|
58
|
+
and issue tracking systems that are managed by, or on behalf of, the
|
|
59
|
+
Licensor for the purpose of discussing and improving the Work, but
|
|
60
|
+
excluding communication that is conspicuously marked or otherwise
|
|
61
|
+
designated in writing by the copyright owner as "Not a Contribution."
|
|
62
|
+
|
|
63
|
+
"Contributor" shall mean Licensor and any individual or Legal Entity
|
|
64
|
+
on behalf of whom a Contribution has been received by Licensor and
|
|
65
|
+
subsequently incorporated within the Work.
|
|
66
|
+
|
|
67
|
+
2. Grant of Copyright License. Subject to the terms and conditions of
|
|
68
|
+
this License, each Contributor hereby grants to You a perpetual,
|
|
69
|
+
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
|
70
|
+
copyright license to reproduce, prepare Derivative Works of,
|
|
71
|
+
publicly display, publicly perform, sublicense, and distribute the
|
|
72
|
+
Work and such Derivative Works in Source or Object form.
|
|
73
|
+
|
|
74
|
+
3. Grant of Patent License. Subject to the terms and conditions of
|
|
75
|
+
this License, each Contributor hereby grants to You a perpetual,
|
|
76
|
+
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
|
77
|
+
(except as stated in this section) patent license to make, have made,
|
|
78
|
+
use, offer to sell, sell, import, and otherwise transfer the Work,
|
|
79
|
+
where such license applies only to those patent claims licensable
|
|
80
|
+
by such Contributor that are necessarily infringed by their
|
|
81
|
+
Contribution(s) alone or by combination of their Contribution(s)
|
|
82
|
+
with the Work to which such Contribution(s) was submitted. If You
|
|
83
|
+
institute patent litigation against any entity (including a
|
|
84
|
+
cross-claim or counterclaim in a lawsuit) alleging that the Work
|
|
85
|
+
or a Contribution incorporated within the Work constitutes direct
|
|
86
|
+
or contributory patent infringement, then any patent licenses
|
|
87
|
+
granted to You under this License for that Work shall terminate
|
|
88
|
+
as of the date such litigation is filed.
|
|
89
|
+
|
|
90
|
+
4. Redistribution. You may reproduce and distribute copies of the
|
|
91
|
+
Work or Derivative Works thereof in any medium, with or without
|
|
92
|
+
modifications, and in Source or Object form, provided that You
|
|
93
|
+
meet the following conditions:
|
|
94
|
+
|
|
95
|
+
(a) You must give any other recipients of the Work or
|
|
96
|
+
Derivative Works a copy of this License; and
|
|
97
|
+
|
|
98
|
+
(b) You must cause any modified files to carry prominent notices
|
|
99
|
+
stating that You changed the files; and
|
|
100
|
+
|
|
101
|
+
(c) You must retain, in the Source form of any Derivative Works
|
|
102
|
+
that You distribute, all copyright, patent, trademark, and
|
|
103
|
+
attribution notices from the Source form of the Work,
|
|
104
|
+
excluding those notices that do not pertain to any part of
|
|
105
|
+
the Derivative Works; and
|
|
106
|
+
|
|
107
|
+
(d) If the Work includes a "NOTICE" text file as part of its
|
|
108
|
+
distribution, then any Derivative Works that You distribute must
|
|
109
|
+
include a readable copy of the attribution notices contained
|
|
110
|
+
within such NOTICE file, excluding those notices that do not
|
|
111
|
+
pertain to any part of the Derivative Works, in at least one
|
|
112
|
+
of the following places: within a NOTICE text file distributed
|
|
113
|
+
as part of the Derivative Works; within the Source form or
|
|
114
|
+
documentation, if provided along with the Derivative Works; or,
|
|
115
|
+
within a display generated by the Derivative Works, if and
|
|
116
|
+
wherever such third-party notices normally appear. The contents
|
|
117
|
+
of the NOTICE file are for informational purposes only and
|
|
118
|
+
do not modify the License. You may add Your own attribution
|
|
119
|
+
notices within Derivative Works that You distribute, alongside
|
|
120
|
+
or as an addendum to the NOTICE text from the Work, provided
|
|
121
|
+
that such additional attribution notices cannot be construed
|
|
122
|
+
as modifying the License.
|
|
123
|
+
|
|
124
|
+
You may add Your own copyright statement to Your modifications and
|
|
125
|
+
may provide additional or different license terms and conditions
|
|
126
|
+
for use, reproduction, or distribution of Your modifications, or
|
|
127
|
+
for any such Derivative Works as a whole, provided Your use,
|
|
128
|
+
reproduction, and distribution of the Work otherwise complies with
|
|
129
|
+
the conditions stated in this License.
|
|
130
|
+
|
|
131
|
+
5. Submission of Contributions. Unless You explicitly state otherwise,
|
|
132
|
+
any Contribution intentionally submitted for inclusion in the Work
|
|
133
|
+
by You to the Licensor shall be under the terms and conditions of
|
|
134
|
+
this License, without any additional terms or conditions.
|
|
135
|
+
Notwithstanding the above, nothing herein shall supersede or modify
|
|
136
|
+
the terms of any separate license agreement you may have executed
|
|
137
|
+
with Licensor regarding such Contributions.
|
|
138
|
+
|
|
139
|
+
6. Trademarks. This License does not grant permission to use the trade
|
|
140
|
+
names, trademarks, service marks, or product names of the Licensor,
|
|
141
|
+
except as required for reasonable and customary use in describing the
|
|
142
|
+
origin of the Work and reproducing the content of the NOTICE file.
|
|
143
|
+
|
|
144
|
+
7. Disclaimer of Warranty. Unless required by applicable law or
|
|
145
|
+
agreed to in writing, Licensor provides the Work (and each
|
|
146
|
+
Contributor provides its Contributions) on an "AS IS" BASIS,
|
|
147
|
+
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
|
|
148
|
+
implied, including, without limitation, any warranties or conditions
|
|
149
|
+
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
|
|
150
|
+
PARTICULAR PURPOSE. You are solely responsible for determining the
|
|
151
|
+
appropriateness of using or redistributing the Work and assume any
|
|
152
|
+
risks associated with Your exercise of permissions under this License.
|
|
153
|
+
|
|
154
|
+
8. Limitation of Liability. In no event and under no legal theory,
|
|
155
|
+
whether in tort (including negligence), contract, or otherwise,
|
|
156
|
+
unless required by applicable law (such as deliberate and grossly
|
|
157
|
+
negligent acts) or agreed to in writing, shall any Contributor be
|
|
158
|
+
liable to You for damages, including any direct, indirect, special,
|
|
159
|
+
incidental, or consequential damages of any character arising as a
|
|
160
|
+
result of this License or out of the use or inability to use the
|
|
161
|
+
Work (including but not limited to damages for loss of goodwill,
|
|
162
|
+
work stoppage, computer failure or malfunction, or any and all
|
|
163
|
+
other commercial damages or losses), even if such Contributor
|
|
164
|
+
has been advised of the possibility of such damages.
|
|
165
|
+
|
|
166
|
+
9. Accepting Warranty or Additional Liability. While redistributing
|
|
167
|
+
the Work or Derivative Works thereof, You may choose to offer,
|
|
168
|
+
and charge a fee for, acceptance of support, warranty, indemnity,
|
|
169
|
+
or other liability obligations and/or rights consistent with this
|
|
170
|
+
License. However, in accepting such obligations, You may act only
|
|
171
|
+
on Your own behalf and on Your sole responsibility, not on behalf
|
|
172
|
+
of any other Contributor, and only if You agree to indemnify,
|
|
173
|
+
defend, and hold each Contributor harmless for any liability
|
|
174
|
+
incurred by, or claims asserted against, such Contributor by reason
|
|
175
|
+
of your accepting any such warranty or additional liability.
|
|
176
|
+
|
|
177
|
+
END OF TERMS AND CONDITIONS
|
|
178
|
+
|
|
179
|
+
APPENDIX: How to apply the Apache License to your work.
|
|
180
|
+
|
|
181
|
+
To apply the Apache License to your work, attach the following
|
|
182
|
+
boilerplate notice, with the fields enclosed by brackets "[]"
|
|
183
|
+
replaced with your own identifying information. (Don't include
|
|
184
|
+
the brackets!) The text should be enclosed in the appropriate
|
|
185
|
+
comment syntax for the file format. We also recommend that a
|
|
186
|
+
file or class name and description of purpose be included on the
|
|
187
|
+
same "printed page" as the copyright notice for easier
|
|
188
|
+
identification within third-party archives.
|
|
189
|
+
|
|
190
|
+
Copyright [yyyy] [name of copyright owner]
|
|
191
|
+
|
|
192
|
+
Licensed under the Apache License, Version 2.0 (the "License");
|
|
193
|
+
you may not use this file except in compliance with the License.
|
|
194
|
+
You may obtain a copy of the License at
|
|
195
|
+
|
|
196
|
+
http://www.apache.org/licenses/LICENSE-2.0
|
|
197
|
+
|
|
198
|
+
Unless required by applicable law or agreed to in writing, software
|
|
199
|
+
distributed under the License is distributed on an "AS IS" BASIS,
|
|
200
|
+
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
201
|
+
See the License for the specific language governing permissions and
|
|
202
|
+
limitations under the License.
|
package/NOTICE
ADDED
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
memgineering
|
|
2
|
+
Copyright 2026 memgineering
|
|
3
|
+
|
|
4
|
+
This product includes software developed by memgineering
|
|
5
|
+
(https://memgineering.com).
|
|
6
|
+
|
|
7
|
+
Licensed under the Apache License, Version 2.0. See LICENSE for the full
|
|
8
|
+
terms. This NOTICE file must be included in redistributions and derivative
|
|
9
|
+
works, per section 4(d) of that license.
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
UPDATES AND SUPPORT
|
|
13
|
+
-------------------
|
|
14
|
+
|
|
15
|
+
memgineering checks for a newer version at most once a day and, when
|
|
16
|
+
auto-update is on, can install one. Both are stated here rather than only in
|
|
17
|
+
the README because they involve the network and the user's install directory.
|
|
18
|
+
|
|
19
|
+
* The check contacts the npm registry, and optionally
|
|
20
|
+
https://memgineering.com/version-policy.json. Neither request carries
|
|
21
|
+
identifying information beyond what any HTTP client sends.
|
|
22
|
+
* `MEMGINEERING_NO_UPDATE=1` skips the check for a single run.
|
|
23
|
+
`memgineering setup --auto-update off` turns installation off for good.
|
|
24
|
+
* Installation only ever targets the version npm publishes as `latest`.
|
|
25
|
+
The policy document is advisory and can never select a version.
|
|
26
|
+
|
|
27
|
+
Older versions are not disabled remotely, and nothing in this software will
|
|
28
|
+
stop working locally because a newer release exists. Every published version
|
|
29
|
+
remains installable from npm indefinitely. What a future release may withdraw
|
|
30
|
+
is support for older clients on *hosted* services operated by memgineering —
|
|
31
|
+
if that happens, the version policy will say so ahead of time and the CLI will
|
|
32
|
+
print it. Upgrading restores access; nothing you have stored is affected
|
|
33
|
+
either way, because your notes are files on your own disk and remain yours.
|
|
34
|
+
|
|
35
|
+
|
|
36
|
+
YOUR DATA
|
|
37
|
+
---------
|
|
38
|
+
|
|
39
|
+
This software reads a folder of notes you point it at and keeps a derived
|
|
40
|
+
index outside that folder. It does not upload your notes. Deleting the index
|
|
41
|
+
costs a rebuild and nothing else. See the README for what is stored and where.
|
package/README.md
CHANGED
|
@@ -1,11 +1,162 @@
|
|
|
1
1
|
# memgineering
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
One memory for the AI you connect.
|
|
4
4
|
|
|
5
|
-
|
|
6
|
-
|
|
5
|
+
Your notes stay in a folder you own. Every agent you use — Claude Code, Codex,
|
|
6
|
+
Gemini — reads and writes the same brain through one CLI, so what you told one
|
|
7
|
+
of them is there for the next one, tomorrow, and in whatever tool you move to
|
|
8
|
+
after that.
|
|
7
9
|
|
|
8
|
-
|
|
10
|
+
```bash
|
|
11
|
+
npm i -g memgineering
|
|
12
|
+
memgineering setup
|
|
13
|
+
memgineering link ~/Documents/Notes # or: memgineering init ~/brain
|
|
14
|
+
```
|
|
9
15
|
|
|
10
|
-
|
|
16
|
+
## What it does
|
|
11
17
|
|
|
18
|
+
```bash
|
|
19
|
+
memgineering recall "how do we deploy"
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
```
|
|
23
|
+
## recall: how do we deploy (2 cards)
|
|
24
|
+
|
|
25
|
+
### 1. Deploy is manual
|
|
26
|
+
stated
|
|
27
|
+
|
|
28
|
+
> launchctl kickstart on the Mac Studio, no CD pipeline
|
|
29
|
+
|
|
30
|
+
`open: deploy-manual`
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
Cards first, not documents. Your agent gets the shape of what you know and a
|
|
34
|
+
handle for the one that matters, then opens only that:
|
|
35
|
+
|
|
36
|
+
```bash
|
|
37
|
+
memgineering open deploy-manual # the claims behind the card
|
|
38
|
+
memgineering open deploy-manual --detail full # the whole note
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
And it writes, without stopping to ask:
|
|
42
|
+
|
|
43
|
+
```bash
|
|
44
|
+
memgineering remember "deploys are manual — launchctl by hand, no CD"
|
|
45
|
+
memgineering undo # if that was wrong
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
## Why there is no approval step
|
|
49
|
+
|
|
50
|
+
Most memory tools queue what an agent learned and wait for you to approve it.
|
|
51
|
+
That tax lands on every true observation in order to catch the rare wrong one,
|
|
52
|
+
and what it produces in practice is a backlog nobody reads.
|
|
53
|
+
|
|
54
|
+
memgineering trades permission-before for correction-after. Every write records
|
|
55
|
+
what changed, against which bytes, and how to reverse it — in a ledger that
|
|
56
|
+
lives inside your brain and travels with it.
|
|
57
|
+
|
|
58
|
+
```bash
|
|
59
|
+
memgineering log # what has changed, and what can still be undone
|
|
60
|
+
memgineering undo <op>
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
The one thing it refuses to do is undo on top of an edit you made yourself. If
|
|
64
|
+
the note moved on since, it stops and says so rather than throwing your work
|
|
65
|
+
away.
|
|
66
|
+
|
|
67
|
+
## Your notes stay yours
|
|
68
|
+
|
|
69
|
+
- **Nothing is uploaded.** The index is derived and lives outside your notes
|
|
70
|
+
folder; deleting it costs a rebuild and nothing else.
|
|
71
|
+
- **Prose is never rewritten.** `revise` only touches the memory block in a
|
|
72
|
+
note's frontmatter. Your paragraphs are yours.
|
|
73
|
+
- **You decide what is read.** `link` shows the actual lines that would be
|
|
74
|
+
stored — not a description of them — before anything is indexed. Notes whose
|
|
75
|
+
content looks like a credential are refused automatically; anything else you
|
|
76
|
+
want left alone goes in `.memgdeny`.
|
|
77
|
+
- **`memgineering unlink --purge`** removes every trace this tool kept locally.
|
|
78
|
+
|
|
79
|
+
## Progressive reading
|
|
80
|
+
|
|
81
|
+
Depth is a parameter, because context costs money.
|
|
82
|
+
|
|
83
|
+
| `--detail` | what you get |
|
|
84
|
+
| ---------- | ----------------------------------------------- |
|
|
85
|
+
| `title` | just the titles |
|
|
86
|
+
| `card` | title + summary (default) |
|
|
87
|
+
| `summary` | + the note's headings |
|
|
88
|
+
| `chunks` | + every section, or one with `--section <name>` |
|
|
89
|
+
| `full` | the whole note |
|
|
90
|
+
|
|
91
|
+
`memgineering recall "deploy" --limit 1 --detail full` is "find the best match
|
|
92
|
+
and read it" in a single call.
|
|
93
|
+
|
|
94
|
+
## Several brains
|
|
95
|
+
|
|
96
|
+
A personal one, a team folder that syncs, one per repository. Which one answers
|
|
97
|
+
is decided by where you are:
|
|
98
|
+
|
|
99
|
+
1. `--vault <path>`
|
|
100
|
+
2. a `.memgineering` pointer, found by walking up from the current directory
|
|
101
|
+
3. the brain the current directory is inside
|
|
102
|
+
4. the only one linked
|
|
103
|
+
|
|
104
|
+
If nothing settles it, memgineering refuses and lists the candidates rather
|
|
105
|
+
than guessing. To bind a directory once — a repository root, say:
|
|
106
|
+
|
|
107
|
+
```bash
|
|
108
|
+
memgineering use ~/brains/work # writes a relative path when it can, so it commits
|
|
109
|
+
```
|
|
110
|
+
|
|
111
|
+
## Starting a session
|
|
112
|
+
|
|
113
|
+
```bash
|
|
114
|
+
memgineering resurface
|
|
115
|
+
```
|
|
116
|
+
|
|
117
|
+
No query. It ranks by what has been recalled in this folder before, how
|
|
118
|
+
recently, and which of your base notes have gone unread. `memgineering setup`
|
|
119
|
+
can register it to run automatically when a Claude Code session starts.
|
|
120
|
+
|
|
121
|
+
## Commands
|
|
122
|
+
|
|
123
|
+
| | |
|
|
124
|
+
| ----------------------------------- | ----------------------------------------------------- |
|
|
125
|
+
| `recall <query>` | recall memory cards for a question |
|
|
126
|
+
| `open <ref>` | open one memory — by handle, id, path, or exact title |
|
|
127
|
+
| `remember <text>` | write something down now |
|
|
128
|
+
| `revise <ref>` | change a memory's conclusion |
|
|
129
|
+
| `undo [op]` | take back the last change, or a named one |
|
|
130
|
+
| `resurface` | what is worth having in view, unasked |
|
|
131
|
+
| `init <path>` | create a brain, laid out and ready |
|
|
132
|
+
| `link <path>` | read notes you already keep |
|
|
133
|
+
| `use [brain]` | bind this folder to one brain |
|
|
134
|
+
| `unlink` · `reindex` · `sync-rules` | brain housekeeping |
|
|
135
|
+
| `log` | what changed, and what can still be undone |
|
|
136
|
+
| `retire` · `unretire` | mark a memory no longer current, or current again |
|
|
137
|
+
| `exclude` · `unexclude` | stop reading a note entirely, or resume |
|
|
138
|
+
| `setup` | install into your agents |
|
|
139
|
+
| `update` | update memgineering itself |
|
|
140
|
+
|
|
141
|
+
Every command takes `--json`.
|
|
142
|
+
|
|
143
|
+
## Environment
|
|
144
|
+
|
|
145
|
+
| | |
|
|
146
|
+
| -------------------------- | --------------------------------------------------- |
|
|
147
|
+
| `MEMGINEERING_HOME` | state and derived index (default `~/.memgineering`) |
|
|
148
|
+
| `MEMGINEERING_JSON=1` | force JSON output without the flag |
|
|
149
|
+
| `MEMGINEERING_NO_UPDATE=1` | skip the version check for one run |
|
|
150
|
+
|
|
151
|
+
## What is coming
|
|
152
|
+
|
|
153
|
+
**0.2.0 — cloud brains.** Today a brain is a folder on this machine. Next it
|
|
154
|
+
can also live in a memgineering account, so the same memory reaches ChatGPT,
|
|
155
|
+
Claude on the web, and anywhere a browser goes. The local path is not going
|
|
156
|
+
away: what syncs is your originals, your ledger and your rules — never a
|
|
157
|
+
vendor's copy of your notes.
|
|
158
|
+
|
|
159
|
+
## Licence
|
|
160
|
+
|
|
161
|
+
Apache-2.0. See [LICENSE](./LICENSE) and [NOTICE](./NOTICE), which also states
|
|
162
|
+
the update and support policy.
|