open-memex 0.6.0-alpha.4 → 0.6.0-alpha.5
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/AGENTS.md +4 -0
- package/dist/cli.js +14 -0
- package/docs/V2-DESIGN.md +17 -1
- package/package.json +1 -1
- package/src/cli.ts +17 -0
package/AGENTS.md
CHANGED
|
@@ -66,6 +66,10 @@ previews keyword capture without writing, `open-memex doctor` runs health checks
|
|
|
66
66
|
(`--yes` skips, scripts never prompt); `open-memex config set <key> <value>` edits settings after install.
|
|
67
67
|
`npm install -g` prints a pointer to `open-memex init` via a postinstall script
|
|
68
68
|
(print-only — postinstall must never prompt, it runs in CI/Docker; D50).
|
|
69
|
+
Note: npm swallows lifecycle-script stdout (background run unless
|
|
70
|
+
`--foreground-scripts`), so the postinstall pointer is best-effort only —
|
|
71
|
+
every CLI entry point also prints a one-line stderr nudge until init has run
|
|
72
|
+
or been declined (F28; stderr keeps the MCP stdio protocol intact).
|
|
69
73
|
Bare `open-memex` on a machine where init never completed offers to run it on a
|
|
70
74
|
TTY (usage as before when non-interactive); init/uninstall maintain a
|
|
71
75
|
`.init.json` first-run marker at the data root so the offer is asked once (D50);
|
package/dist/cli.js
CHANGED
|
@@ -526,6 +526,20 @@ async function main() {
|
|
|
526
526
|
console.log(`open-memex ${pkg.version}`);
|
|
527
527
|
return;
|
|
528
528
|
}
|
|
529
|
+
// F28: npm runs lifecycle scripts in the background and swallows their
|
|
530
|
+
// stdout (unless --foreground-scripts), so the D50 postinstall pointer
|
|
531
|
+
// never reaches the user. Every CLI entry point therefore carries a
|
|
532
|
+
// one-line nudge on stderr until init has run or been declined — stderr
|
|
533
|
+
// keeps the MCP stdio protocol (stdout) intact, and the .init.json marker
|
|
534
|
+
// makes it once-ever. `init`/`uninstall` are excluded (already there /
|
|
535
|
+
// nothing to wire).
|
|
536
|
+
if (cmd !== "init" && cmd !== "uninstall") {
|
|
537
|
+
const { isFirstRun } = await import("./first-run.js");
|
|
538
|
+
if (isFirstRun()) {
|
|
539
|
+
console.error("open-memex: first run? `open-memex init` wires it into your editors " +
|
|
540
|
+
"(auto-detects VS Code, Cursor, opencode).");
|
|
541
|
+
}
|
|
542
|
+
}
|
|
529
543
|
// Per-command help: `open-memex <command> --help`. Checked before loadConfig()
|
|
530
544
|
// so it works even when the environment is broken.
|
|
531
545
|
if (rest.includes("--help") || rest.includes("-h")) {
|
package/docs/V2-DESIGN.md
CHANGED
|
@@ -554,7 +554,9 @@ requirement: personal data never touches third-party services). Benchmarks to tr
|
|
|
554
554
|
(D52): rewrite both agent-facing prompts (MCP handshake + init template) so
|
|
555
555
|
agents execute them correctly. Push-not-poll outbox (D53): the checkpoint
|
|
556
556
|
mechanism is retired — the server reports the outbox draft count at session
|
|
557
|
-
start and appends it to mutating tool results when non-zero.
|
|
557
|
+
start and appends it to mutating tool results when non-zero. Install→init
|
|
558
|
+
reminder fix (F28): one-line stderr nudge on every CLI entry point until
|
|
559
|
+
init runs (npm swallows postinstall stdout).
|
|
558
560
|
- **Phase 4 — Future, signal-gated.** Cloud `RemoteProvider` customization only on: multi-private-repo
|
|
559
561
|
sharing needs, fine-grained ACL, audit/compliance mandates · optional API-backed exporters/providers
|
|
560
562
|
for enterprise knowledge systems.
|
|
@@ -1057,6 +1059,20 @@ requirement: personal data never touches third-party services). Benchmarks to tr
|
|
|
1057
1059
|
`memory_submit` drains the outbox, so its own note is naturally silent.
|
|
1058
1060
|
Approved 2026-10-01.*
|
|
1059
1061
|
|
|
1062
|
+
- **F28** — install→init reminder was invisible (0.6.0-alpha.5). The D50
|
|
1063
|
+
postinstall pointer never reaches the user: npm runs lifecycle scripts in
|
|
1064
|
+
the background and swallows their stdout unless `--foreground-scripts` is
|
|
1065
|
+
passed (reproduced on npm 10.9.4 — the script ran with code 0, its output
|
|
1066
|
+
never displayed). The install-time channel is therefore best-effort only.
|
|
1067
|
+
Fix: every CLI entry point now prints a one-line nudge on stderr until init
|
|
1068
|
+
has run or been declined (`open-memex init` wires editors), gated by the
|
|
1069
|
+
existing `.init.json` first-run marker — stderr keeps the MCP stdio protocol
|
|
1070
|
+
(stdout) intact, so even `open-memex mcp` spawned by an editor carries it
|
|
1071
|
+
safely. `init`/`uninstall` are excluded. The bare-`open-memex` interactive
|
|
1072
|
+
offer on a TTY (D50) is unchanged. *Rationale: the reminder must live in a
|
|
1073
|
+
channel the project controls — the CLI — not in npm script output.
|
|
1074
|
+
Reported 2026-10-01.*
|
|
1075
|
+
|
|
1060
1076
|
## Open Questions
|
|
1061
1077
|
|
|
1062
1078
|
_All resolved — see D10 (rename), D11 (type/role split), D12 (explicit pull)._
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "open-memex",
|
|
3
|
-
"version": "0.6.0-alpha.
|
|
3
|
+
"version": "0.6.0-alpha.5",
|
|
4
4
|
"description": "Local-first memory layer and protocol for AI coding agents. Markdown source of truth, SQLite FTS5 index, zero cloud.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"license": "Apache-2.0",
|
package/src/cli.ts
CHANGED
|
@@ -588,6 +588,23 @@ async function main() {
|
|
|
588
588
|
return;
|
|
589
589
|
}
|
|
590
590
|
|
|
591
|
+
// F28: npm runs lifecycle scripts in the background and swallows their
|
|
592
|
+
// stdout (unless --foreground-scripts), so the D50 postinstall pointer
|
|
593
|
+
// never reaches the user. Every CLI entry point therefore carries a
|
|
594
|
+
// one-line nudge on stderr until init has run or been declined — stderr
|
|
595
|
+
// keeps the MCP stdio protocol (stdout) intact, and the .init.json marker
|
|
596
|
+
// makes it once-ever. `init`/`uninstall` are excluded (already there /
|
|
597
|
+
// nothing to wire).
|
|
598
|
+
if (cmd !== "init" && cmd !== "uninstall") {
|
|
599
|
+
const { isFirstRun } = await import("./first-run.ts");
|
|
600
|
+
if (isFirstRun()) {
|
|
601
|
+
console.error(
|
|
602
|
+
"open-memex: first run? `open-memex init` wires it into your editors " +
|
|
603
|
+
"(auto-detects VS Code, Cursor, opencode).",
|
|
604
|
+
);
|
|
605
|
+
}
|
|
606
|
+
}
|
|
607
|
+
|
|
591
608
|
// Per-command help: `open-memex <command> --help`. Checked before loadConfig()
|
|
592
609
|
// so it works even when the environment is broken.
|
|
593
610
|
if (rest.includes("--help") || rest.includes("-h")) {
|