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 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
@@ -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.2
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
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "memgineering",
3
- "version": "0.7.2",
3
+ "version": "0.7.4",
4
4
  "private": false,
5
5
  "description": "One memory for the AI you connect. Recall, remember, and revise a brain your agents share — stored in your own folder.",
6
6
  "license": "Apache-2.0",