memgineering 0.7.2 → 0.7.4
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 +36 -0
- package/assets/MEMGINEERING.md +1 -1
- package/dist/index.js +14 -1
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -11,6 +11,42 @@ language the reader wants. The bilingual rule the monorepo applies to
|
|
|
11
11
|
|
|
12
12
|
## [Unreleased]
|
|
13
13
|
|
|
14
|
+
## [0.7.4] — 2026-08-19
|
|
15
|
+
|
|
16
|
+
### Changed
|
|
17
|
+
|
|
18
|
+
- **Signing in now asks the person to agree, and an account is not created until
|
|
19
|
+
they do.** The approval screen carries three required consents — the terms,
|
|
20
|
+
the handling of personal data, and being 14 or older — as three separate
|
|
21
|
+
boxes, because they are three separate statements. An agent can run every
|
|
22
|
+
other step of a setup; it cannot answer these, and `login` now says so in both
|
|
23
|
+
its human output and its `next` hint so the agent stops and hands the question
|
|
24
|
+
over.
|
|
25
|
+
|
|
26
|
+
- **The terms and the privacy policy exist**, served by the brain server at
|
|
27
|
+
`/terms` and `/privacy` and linked from the approval screen. The privacy
|
|
28
|
+
policy was written against the database schema rather than from a template:
|
|
29
|
+
it names what is stored, what is not (IP addresses, request URLs, auth
|
|
30
|
+
headers), that the embedding model runs on the server so notes reach no third
|
|
31
|
+
party, and that recall queries are kept for 90 days. A test fails if a table
|
|
32
|
+
holding something a person wrote stops being described there.
|
|
33
|
+
|
|
34
|
+
This arrives with the server, not with this package — an older CLI reaches the
|
|
35
|
+
same screen and gets the same gate.
|
|
36
|
+
|
|
37
|
+
## [0.7.3] — 2026-08-18
|
|
38
|
+
|
|
39
|
+
### Fixed
|
|
40
|
+
|
|
41
|
+
- **The "not set up yet" notice now reaches `--version`, `--help`, and a bare
|
|
42
|
+
`memgineering`.** It was on every verb and none of those, which is backwards:
|
|
43
|
+
a fresh agent session, given only "install memgineering", installed it and then
|
|
44
|
+
ran `memgineering --version` to check its own work — the first thing anybody
|
|
45
|
+
does after an install, and the one path the notice missed. It reported success
|
|
46
|
+
and stopped, having never been told setup exists. `--version` still prints
|
|
47
|
+
nothing but the version to stdout; the notice is on stderr, and it is printed
|
|
48
|
+
once per run however many paths would have said it.
|
|
49
|
+
|
|
14
50
|
## [0.7.2] — 2026-08-18
|
|
15
51
|
|
|
16
52
|
Everyone who runs this CLI is an agent, and an agent can only act on what a
|
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.7.
|
|
5
|
+
version: 0.7.4
|
|
6
6
|
---
|
|
7
7
|
|
|
8
8
|
# memgineering
|
package/dist/index.js
CHANGED
|
@@ -4864,7 +4864,7 @@ function emit(pending, ctx) {
|
|
|
4864
4864
|
browser_opened: ctx.opened,
|
|
4865
4865
|
api_url: ctx.base,
|
|
4866
4866
|
waiting: ctx.blocking,
|
|
4867
|
-
next: ctx.blocking ? "Waiting for approval in the browser." : "SHOW user_code to the user in your reply, then run any memgineering command \u2014 the token is claimed automatically once they approve."
|
|
4867
|
+
next: ctx.blocking ? "Waiting for approval in the browser." : "SHOW user_code to the user in your reply, then run any memgineering command \u2014 the token is claimed automatically once they approve. The approval screen asks THEM to agree to the terms and the privacy policy and to confirm they are 14 or older; you cannot answer that for them, and an account is not created until they do."
|
|
4868
4868
|
},
|
|
4869
4869
|
human: () => {
|
|
4870
4870
|
printHuman("Show this code to whoever is signing in:\n");
|
|
@@ -4876,6 +4876,11 @@ function emit(pending, ctx) {
|
|
|
4876
4876
|
printHuman("Open this to approve:\n");
|
|
4877
4877
|
printHuman(` ${c.cyan(stripControl(pending.verification_url))}`);
|
|
4878
4878
|
}
|
|
4879
|
+
printHuman(
|
|
4880
|
+
c.gray(
|
|
4881
|
+
"\nThey agree to the terms and the privacy policy there, and confirm they are 14 or older.\nNo account is created until they do."
|
|
4882
|
+
)
|
|
4883
|
+
);
|
|
4879
4884
|
if (ctx.opened && ctx.showUrl) {
|
|
4880
4885
|
printHuman(c.gray(` ${stripControl(pending.verification_url)}`));
|
|
4881
4886
|
}
|
|
@@ -14218,10 +14223,13 @@ function buildProgram() {
|
|
|
14218
14223
|
return program;
|
|
14219
14224
|
}
|
|
14220
14225
|
var WITHOUT_NEXT_STEP = /* @__PURE__ */ new Set(["setup", "login", "logout", "whoami", "update", "guard"]);
|
|
14226
|
+
var announced = false;
|
|
14221
14227
|
async function announceNextStep(commandName) {
|
|
14228
|
+
if (announced) return;
|
|
14222
14229
|
if (WITHOUT_NEXT_STEP.has(commandName)) return;
|
|
14223
14230
|
const step = await currentNextStep();
|
|
14224
14231
|
if (step === null) return;
|
|
14232
|
+
announced = true;
|
|
14225
14233
|
process.stderr.write(`
|
|
14226
14234
|
${step.markdown}
|
|
14227
14235
|
|
|
@@ -14247,9 +14255,14 @@ function makeParseErrorsActionable(program) {
|
|
|
14247
14255
|
};
|
|
14248
14256
|
decorate(program);
|
|
14249
14257
|
}
|
|
14258
|
+
function answersWithoutAction(argv) {
|
|
14259
|
+
const first = argv[2];
|
|
14260
|
+
return first === void 0 || first.startsWith("-");
|
|
14261
|
+
}
|
|
14250
14262
|
async function run3(argv) {
|
|
14251
14263
|
const program = buildProgram();
|
|
14252
14264
|
const cleaned = argv.filter((a, i) => !(a === "--" && i >= 2));
|
|
14265
|
+
if (answersWithoutAction(cleaned)) await announceNextStep("");
|
|
14253
14266
|
await program.parseAsync(cleaned);
|
|
14254
14267
|
if (argv[2] !== "update") await backgroundUpdateNotice();
|
|
14255
14268
|
}
|
package/package.json
CHANGED