nlm-memory 0.5.18 → 0.5.20

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.
Files changed (74) hide show
  1. package/README.md +39 -17
  2. package/dist/cli/nlm.js +147 -80
  3. package/dist/cli/nlm.js.map +1 -1
  4. package/dist/cli/supersede.js +5 -2
  5. package/dist/cli/supersede.js.map +1 -1
  6. package/dist/core/actions/actions-log.d.ts +9 -0
  7. package/dist/core/actions/actions-log.js +86 -0
  8. package/dist/core/actions/actions-log.js.map +1 -1
  9. package/dist/core/digest/compose.d.ts +0 -1
  10. package/dist/core/digest/compose.js +0 -4
  11. package/dist/core/digest/compose.js.map +1 -1
  12. package/dist/core/providers/provider-registry.d.ts +15 -0
  13. package/dist/core/providers/provider-registry.js +85 -0
  14. package/dist/core/providers/provider-registry.js.map +1 -1
  15. package/dist/core/recall/query-log.d.ts +1 -2
  16. package/dist/core/recall/query-log.js +1 -5
  17. package/dist/core/recall/query-log.js.map +1 -1
  18. package/dist/core/scheduler/scan-once.d.ts +4 -0
  19. package/dist/core/scheduler/scan-once.js +64 -0
  20. package/dist/core/scheduler/scan-once.js.map +1 -1
  21. package/dist/core/scheduler/scheduler.js +25 -9
  22. package/dist/core/scheduler/scheduler.js.map +1 -1
  23. package/dist/core/sources/source-registry.d.ts +16 -0
  24. package/dist/core/sources/source-registry.js +123 -0
  25. package/dist/core/sources/source-registry.js.map +1 -1
  26. package/dist/core/storage/pg-fact-store.d.ts +24 -0
  27. package/dist/core/storage/pg-fact-store.js +233 -0
  28. package/dist/core/storage/pg-fact-store.js.map +1 -0
  29. package/dist/core/storage/pg-session-store.d.ts +29 -0
  30. package/dist/core/storage/pg-session-store.js +315 -0
  31. package/dist/core/storage/pg-session-store.js.map +1 -0
  32. package/dist/core/storage/pg-storage.d.ts +36 -0
  33. package/dist/core/storage/pg-storage.js +87 -0
  34. package/dist/core/storage/pg-storage.js.map +1 -0
  35. package/dist/core/storage/pg-tx-context.d.ts +44 -0
  36. package/dist/core/storage/pg-tx-context.js +133 -0
  37. package/dist/core/storage/pg-tx-context.js.map +1 -0
  38. package/dist/core/storage/sqlite-fact-store.d.ts +13 -7
  39. package/dist/core/storage/sqlite-fact-store.js +38 -12
  40. package/dist/core/storage/sqlite-fact-store.js.map +1 -1
  41. package/dist/core/storage/sqlite-session-store.d.ts +6 -16
  42. package/dist/core/storage/sqlite-session-store.js +51 -42
  43. package/dist/core/storage/sqlite-session-store.js.map +1 -1
  44. package/dist/core/storage/sqlite-storage.d.ts +38 -0
  45. package/dist/core/storage/sqlite-storage.js +66 -0
  46. package/dist/core/storage/sqlite-storage.js.map +1 -0
  47. package/dist/hook/pi-extension.d.ts +43 -0
  48. package/dist/hook/pi-extension.js +50 -0
  49. package/dist/hook/pi-extension.js.map +1 -0
  50. package/dist/hook/prompt-recall-hook.js +1 -36
  51. package/dist/hook/prompt-recall-hook.js.map +1 -1
  52. package/dist/hook/recall-over-http.d.ts +10 -0
  53. package/dist/hook/recall-over-http.js +41 -0
  54. package/dist/hook/recall-over-http.js.map +1 -0
  55. package/dist/hook/stop-hook.d.ts +1 -3
  56. package/dist/hook/stop-hook.js +1 -3
  57. package/dist/hook/stop-hook.js.map +1 -1
  58. package/dist/http/app.d.ts +6 -5
  59. package/dist/http/app.js +15 -4
  60. package/dist/http/app.js.map +1 -1
  61. package/dist/install/pi.d.ts +45 -0
  62. package/dist/install/pi.js +107 -0
  63. package/dist/install/pi.js.map +1 -0
  64. package/dist/install/setup.js +26 -10
  65. package/dist/install/setup.js.map +1 -1
  66. package/dist/ports/fact-store.d.ts +26 -0
  67. package/dist/ports/storage.d.ts +45 -0
  68. package/dist/ports/storage.js +14 -0
  69. package/dist/ports/storage.js.map +1 -0
  70. package/nlm/README.md +73 -0
  71. package/nlm/index.js +280 -0
  72. package/nlm/package.json +8 -0
  73. package/package.json +9 -2
  74. package/plugin/scripts/prompt-recall-hook.mjs +31 -29
@@ -1 +1 @@
1
- {"version":3,"file":"setup.js","sourceRoot":"","sources":["../../src/install/setup.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"setup.js","sourceRoot":"","sources":["../../src/install/setup.ts"],"names":[],"mappings":"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"}
@@ -59,6 +59,32 @@ export interface FactStore {
59
59
  * by passing null as newId (Phase C operator-undo affordance).
60
60
  */
61
61
  markSuperseded(oldId: string, newId: string | null): Promise<void>;
62
+ /**
63
+ * Insert or replace the embedding vector for a fact. Vector dimension is
64
+ * fixed by the embedding model (nomic-embed-text → 768) and validated by
65
+ * the adapter. Best-effort at the call site: ingest traps errors so an
66
+ * unreachable embedder doesn't roll back the surrounding transaction.
67
+ */
68
+ upsertEmbedding(factId: string, vector: Float32Array): Promise<void>;
69
+ /**
70
+ * Atomic session-scoped fact write: delete prior facts for this session,
71
+ * insert the new set, then apply deterministic supersedence on any
72
+ * (subject, predicate) collision against existing non-superseded facts
73
+ * from other sessions. Must run inside a transaction (the caller wraps
74
+ * with Storage.withTransaction). See Section 2 of factstore-design.md
75
+ * for the ordering rationale: inserts must complete before supersedence
76
+ * UPDATEs run, since superseded_by is an FK to facts(id).
77
+ *
78
+ * The SQLite adapter additionally inlines this logic inside its own
79
+ * session-store ingest path (because better-sqlite3 txn callbacks must
80
+ * be sync); other backends call this method via Storage.withTransaction.
81
+ *
82
+ * Batch-internal duplicates (two facts in the same call with the same
83
+ * (subject, predicate)) produce implementation-defined behavior: which
84
+ * sibling ends up current is not part of the contract. Callers must
85
+ * dedupe within a batch if they need deterministic results.
86
+ */
87
+ ingestSessionFacts(sessionId: string, facts: ReadonlyArray<Fact>): Promise<void>;
62
88
  /**
63
89
  * Pre-filtered fact list used by FactRecallService. Applies subject /
64
90
  * predicate / kind / confidence / superseded filters at the SQL layer
@@ -0,0 +1,45 @@
1
+ /**
2
+ * Storage — top-level handle for NLM's fact + session corpus. Owns lifecycle
3
+ * (init/close) and the atomic unit-of-work primitive (withTransaction).
4
+ *
5
+ * Read paths use the bare .facts / .sessions handles. Writes that must
6
+ * commit together — session+facts+embeddings on ingest, supersedence chain
7
+ * edits — go through withTransaction so the adapter chooses its own
8
+ * atomicity mechanism (single SQLite connection, PG transaction, etc.)
9
+ * without core/ knowing which backend it's talking to.
10
+ *
11
+ * See docs/plans/2026-05-30-factstore-storage-port.md.
12
+ */
13
+ import type { FactStore } from "./fact-store.js";
14
+ import type { SessionStore } from "./session-store.js";
15
+ export interface StorageContext {
16
+ readonly facts: FactStore;
17
+ readonly sessions: SessionStore;
18
+ }
19
+ export interface Storage {
20
+ readonly facts: FactStore;
21
+ readonly sessions: SessionStore;
22
+ /**
23
+ * Run `fn` inside an adapter-defined transaction. The handles on the
24
+ * provided StorageContext are bound to that transaction; reads and writes
25
+ * through them see one another, and either all commit or all roll back.
26
+ * Outer handles (storage.facts, storage.sessions) MUST NOT be used inside
27
+ * `fn`; adapters may enforce this with a runtime check.
28
+ *
29
+ * Callbacks MUST be synchronous. Async work (embedder calls, network I/O)
30
+ * runs BEFORE or AFTER withTransaction, not inside. The SQLite adapter
31
+ * enforces this constraint structurally (better-sqlite3 transactions are
32
+ * synchronous); the Postgres adapter will honor the same shape by
33
+ * batching sync operations into a single async txn. This keeps the
34
+ * port honest across backends and matches the established pattern in
35
+ * SqliteSessionStore.insertSession where embedding work lives outside
36
+ * the transaction.
37
+ *
38
+ * Nested calls are not supported. Adapters throw on nested invocation.
39
+ */
40
+ withTransaction<T>(fn: (ctx: StorageContext) => T): Promise<T>;
41
+ /** Apply migrations / install extensions. Idempotent. */
42
+ init(): Promise<void>;
43
+ /** Release the underlying connection or pool. */
44
+ close(): Promise<void>;
45
+ }
@@ -0,0 +1,14 @@
1
+ /**
2
+ * Storage — top-level handle for NLM's fact + session corpus. Owns lifecycle
3
+ * (init/close) and the atomic unit-of-work primitive (withTransaction).
4
+ *
5
+ * Read paths use the bare .facts / .sessions handles. Writes that must
6
+ * commit together — session+facts+embeddings on ingest, supersedence chain
7
+ * edits — go through withTransaction so the adapter chooses its own
8
+ * atomicity mechanism (single SQLite connection, PG transaction, etc.)
9
+ * without core/ knowing which backend it's talking to.
10
+ *
11
+ * See docs/plans/2026-05-30-factstore-storage-port.md.
12
+ */
13
+ export {};
14
+ //# sourceMappingURL=storage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"storage.js","sourceRoot":"","sources":["../../src/ports/storage.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG"}
package/nlm/README.md ADDED
@@ -0,0 +1,73 @@
1
+ # nlm-memory pi.dev extension
2
+
3
+ This directory is the pi.dev distribution surface for nlm-memory. Pi loads
4
+ TypeScript extensions declared in `~/.pi/agent/settings.json`'s `packages`
5
+ array; pointing pi at this directory auto-discovers `index.js` and registers
6
+ the prompt-recall hook.
7
+
8
+ Pi's interactive UI strips `index.{ts,js}` from the load path, so this
9
+ extension surfaces in pi's `[Extensions]` list as `nlm` — matching the
10
+ naming convention used by `pi-mcp-adapter`, `whtnxt-tasks`, etc.
11
+
12
+ ## Install
13
+
14
+ Prerequisite: `npm install -g nlm-memory` (puts `nlm` on PATH; the daemon
15
+ must be running on `localhost:3940`).
16
+
17
+ ```bash
18
+ nlm connect pi
19
+ ```
20
+
21
+ That appends this directory's absolute path to `packages` in
22
+ `~/.pi/agent/settings.json`. Pi auto-loads `index.js` on next start. No
23
+ `-e` flag required at the prompt.
24
+
25
+ Reverse with `nlm disconnect pi`. The disconnect filter also strips the
26
+ legacy `plugin-pi` basename used by nlm-memory <= 0.5.19, so users
27
+ upgrading from that release get a clean migration.
28
+
29
+ Manual fallback if you'd rather not edit settings.json:
30
+
31
+ ```bash
32
+ pi -e "$(npm root -g)/nlm-memory/nlm/index.js"
33
+ ```
34
+
35
+ ## What ships
36
+
37
+ - **Input hook** — on every user prompt, calls the local daemon's
38
+ `/api/recall?mode=keyword` endpoint, runs the same generative/evaluate
39
+ gate as the Claude Code hook, and prepends a "Possibly-relevant prior
40
+ sessions" pointer block to the prompt via pi's `{ action: "transform" }`
41
+ result. Capped at 3 hits per fire and 10 per conversation; per-conversation
42
+ memo lives in `~/.nlm/hook-state/<sessionId>.json` (shared with Claude
43
+ Code). Fail-open: any error returns `{ action: "continue" }` so a recall
44
+ failure can never block or alter your prompt.
45
+
46
+ ## What doesn't
47
+
48
+ - **No stop-hook equivalent.** The passive pi adapter
49
+ (`src/core/adapters/pi.ts`) already polls `~/.pi/agent/sessions/**/*.jsonl`
50
+ and ingests completed sessions on its own schedule — what Claude's
51
+ stop-hook does inline.
52
+
53
+ ## Modes
54
+
55
+ Same env vars as the Claude Code hook:
56
+
57
+ - `NLM_HOOK_MODE=shadow` (default) — log what would be injected to
58
+ `~/.nlm/hook-log.jsonl` but return `continue`. Use this to validate
59
+ recall quality on real prompts before flipping live.
60
+ - `NLM_HOOK_MODE=live` — actually prepend the pointer block to your
61
+ prompt.
62
+ - `NLM_PORT=3940` — daemon port override.
63
+ - `NLM_MCP_TOKEN` — bearer token if your daemon enforces it (auto-loaded
64
+ from `~/.nlm/.env` on first input event).
65
+
66
+ ## Building
67
+
68
+ ```bash
69
+ npm run build:codex-plugin
70
+ ```
71
+
72
+ Bundles `src/hook/pi-extension.ts` to `nlm/index.js` via the same esbuild
73
+ pipeline that builds the Claude Code hook scripts.
package/nlm/index.js ADDED
@@ -0,0 +1,280 @@
1
+ // src/llm/env-autoload.ts
2
+ import { readFileSync, existsSync } from "node:fs";
3
+ import { homedir } from "node:os";
4
+ import { resolve } from "node:path";
5
+ var DEFAULT_SEARCH_PATHS = [
6
+ "~/.nlm/.env",
7
+ "./.env",
8
+ "../.env",
9
+ "../../.env"
10
+ ];
11
+ function expandHome(p) {
12
+ if (p.startsWith("~/")) return resolve(homedir(), p.slice(2));
13
+ return p;
14
+ }
15
+ function autoloadEnv(extraPaths = []) {
16
+ const loaded = [];
17
+ const paths = [...DEFAULT_SEARCH_PATHS, ...extraPaths];
18
+ for (const raw of paths) {
19
+ const path = expandHome(raw);
20
+ if (!existsSync(path)) continue;
21
+ try {
22
+ const content = readFileSync(path, "utf8");
23
+ for (const line of content.split("\n")) {
24
+ const trimmed = line.trim();
25
+ if (!trimmed || trimmed.startsWith("#") || !trimmed.includes("=")) continue;
26
+ const eq = trimmed.indexOf("=");
27
+ const key = trimmed.slice(0, eq).trim();
28
+ let value = trimmed.slice(eq + 1).trim();
29
+ if (value.startsWith('"') && value.endsWith('"') || value.startsWith("'") && value.endsWith("'")) {
30
+ value = value.slice(1, -1);
31
+ }
32
+ if (key && process.env[key] === void 0) {
33
+ process.env[key] = value;
34
+ }
35
+ }
36
+ loaded.push(path);
37
+ } catch {
38
+ continue;
39
+ }
40
+ }
41
+ return loaded;
42
+ }
43
+
44
+ // src/hook/hook-auth.ts
45
+ function hookAuthHeaders(extra = {}) {
46
+ const token = process.env["NLM_MCP_TOKEN"];
47
+ if (!token) return { ...extra };
48
+ return { ...extra, authorization: `Bearer ${token}` };
49
+ }
50
+
51
+ // src/hook/recall-over-http.ts
52
+ var RECALL_LIMIT = 5;
53
+ var RECALL_TIMEOUT_MS = 2e3;
54
+ async function recallOverHttp(prompt) {
55
+ const portValue = process.env["NLM_PORT"] ?? "3940";
56
+ const url = `http://localhost:${portValue}/api/recall?q=${encodeURIComponent(prompt)}&mode=keyword&limit=${RECALL_LIMIT}`;
57
+ const controller = new AbortController();
58
+ const timer = setTimeout(() => controller.abort(), RECALL_TIMEOUT_MS);
59
+ try {
60
+ const res = await fetch(url, {
61
+ headers: hookAuthHeaders({ "x-recall-source": "hook" }),
62
+ signal: controller.signal
63
+ });
64
+ if (!res.ok) return [];
65
+ let body;
66
+ try {
67
+ body = await res.json();
68
+ } catch {
69
+ return [];
70
+ }
71
+ return (body.results ?? []).map((r) => ({
72
+ id: r.id,
73
+ label: r.label,
74
+ startedAt: r.startedAt,
75
+ matchScore: r.matchScore
76
+ }));
77
+ } finally {
78
+ clearTimeout(timer);
79
+ }
80
+ }
81
+
82
+ // src/hook/prompt-recall-hook.ts
83
+ import { pathToFileURL } from "node:url";
84
+
85
+ // src/core/hook/gate.ts
86
+ var LEADING_FILLER = /^(please|can you|could you|would you|will you|i need you to|i'd like you to|i want you to|i would like you to|help me|let's|lets|hey|ok|okay)\b[\s,]*/i;
87
+ var GENERATIVE_OPENER = /^(write|draft|create|compose|generate|brainstorm|design|outline|sketch|invent|rename|come up with)\b/i;
88
+ function classifyPrompt(prompt) {
89
+ let p = prompt.trim();
90
+ for (let i = 0; i < 3 && LEADING_FILLER.test(p); i++) {
91
+ p = p.replace(LEADING_FILLER, "");
92
+ }
93
+ return GENERATIVE_OPENER.test(p) ? "generative" : "evaluate";
94
+ }
95
+
96
+ // src/core/hook/hook-log.ts
97
+ import { appendFileSync, mkdirSync } from "node:fs";
98
+ import { homedir as homedir2 } from "node:os";
99
+ import { dirname, join } from "node:path";
100
+ function logPath() {
101
+ return process.env["NLM_HOOK_LOG"] ?? join(homedir2(), ".nlm", "hook-log.jsonl");
102
+ }
103
+ function appendHookLog(entry) {
104
+ try {
105
+ const path = logPath();
106
+ mkdirSync(dirname(path), { recursive: true });
107
+ appendFileSync(path, `${JSON.stringify(entry)}
108
+ `, "utf8");
109
+ } catch {
110
+ }
111
+ }
112
+
113
+ // src/core/hook/memo.ts
114
+ import { existsSync as existsSync2, mkdirSync as mkdirSync2, readFileSync as readFileSync2, rmSync, writeFileSync } from "node:fs";
115
+ import { homedir as homedir3 } from "node:os";
116
+ import { join as join2 } from "node:path";
117
+ function stateDir() {
118
+ return process.env["NLM_HOOK_STATE_DIR"] ?? join2(homedir3(), ".nlm", "hook-state");
119
+ }
120
+ function memoPath(conversationId) {
121
+ const safe = conversationId.replace(/[^A-Za-z0-9_-]/g, "_") || "unknown";
122
+ return join2(stateDir(), `${safe}.json`);
123
+ }
124
+ function loadSurfaced(conversationId) {
125
+ try {
126
+ const path = memoPath(conversationId);
127
+ if (!existsSync2(path)) return /* @__PURE__ */ new Set();
128
+ const parsed = JSON.parse(readFileSync2(path, "utf8"));
129
+ if (!Array.isArray(parsed)) return /* @__PURE__ */ new Set();
130
+ return new Set(parsed.filter((x) => typeof x === "string"));
131
+ } catch {
132
+ return /* @__PURE__ */ new Set();
133
+ }
134
+ }
135
+ function recordSurfaced(conversationId, ids) {
136
+ try {
137
+ const merged = loadSurfaced(conversationId);
138
+ for (const id of ids) merged.add(id);
139
+ mkdirSync2(stateDir(), { recursive: true });
140
+ writeFileSync(memoPath(conversationId), JSON.stringify([...merged]), "utf8");
141
+ } catch {
142
+ }
143
+ }
144
+
145
+ // src/core/hook/pointer-block.ts
146
+ function formatPointerBlock(hits) {
147
+ if (hits.length === 0) return "";
148
+ const lines = hits.map(
149
+ (h) => `- ${h.id} \xB7 ${h.label} (${h.startedAt.slice(0, 10)})`
150
+ );
151
+ return [
152
+ "## Possibly-relevant prior sessions (nlm-memory)",
153
+ ...lines,
154
+ "NLM tools: recall_sessions (search), get_session (full transcript), recall_facts (prior decisions), get_fact_history (how a decision evolved)."
155
+ ].join("\n");
156
+ }
157
+
158
+ // src/core/hook/select.ts
159
+ function selectHits(params) {
160
+ const { hits, surfaced, scoreThreshold, perFireCap, perConversationCap } = params;
161
+ const eligible = hits.filter(
162
+ (h) => h.matchScore >= scoreThreshold && !surfaced.has(h.id)
163
+ );
164
+ const budget = Math.max(0, perConversationCap - surfaced.size);
165
+ const limit = Math.min(perFireCap, budget);
166
+ return eligible.slice(0, limit);
167
+ }
168
+
169
+ // src/hook/prompt-recall-hook.ts
170
+ var SCORE_THRESHOLD = 0;
171
+ var PER_FIRE_CAP = 3;
172
+ var PER_CONVERSATION_CAP = 10;
173
+ var PROMPT_PREVIEW_CHARS = 200;
174
+ async function runHook(input, deps) {
175
+ const gate = classifyPrompt(input.prompt);
176
+ const preview = input.prompt.slice(0, PROMPT_PREVIEW_CHARS);
177
+ if (gate === "generative") {
178
+ appendHookLog({
179
+ ts: (/* @__PURE__ */ new Date()).toISOString(),
180
+ conversationId: input.conversationId,
181
+ promptPreview: preview,
182
+ gate,
183
+ hits: [],
184
+ wouldInject: [],
185
+ estTokens: 0,
186
+ mode: deps.mode
187
+ });
188
+ return "";
189
+ }
190
+ let hits = [];
191
+ try {
192
+ hits = await deps.recall(input.prompt);
193
+ } catch {
194
+ hits = [];
195
+ }
196
+ const surfaced = loadSurfaced(input.conversationId);
197
+ const selected = selectHits({
198
+ hits,
199
+ surfaced,
200
+ scoreThreshold: SCORE_THRESHOLD,
201
+ perFireCap: PER_FIRE_CAP,
202
+ perConversationCap: PER_CONVERSATION_CAP
203
+ });
204
+ const block = formatPointerBlock(selected);
205
+ const estTokens = Math.ceil(block.length / 4);
206
+ appendHookLog({
207
+ ts: (/* @__PURE__ */ new Date()).toISOString(),
208
+ conversationId: input.conversationId,
209
+ promptPreview: preview,
210
+ gate,
211
+ hits: hits.map((h) => ({ id: h.id, score: h.matchScore })),
212
+ wouldInject: selected.map((h) => h.id),
213
+ estTokens,
214
+ mode: deps.mode
215
+ });
216
+ if (deps.mode === "live" && selected.length > 0) {
217
+ recordSurfaced(input.conversationId, selected.map((h) => h.id));
218
+ return block;
219
+ }
220
+ return "";
221
+ }
222
+ function readStdin() {
223
+ return new Promise((resolve2) => {
224
+ let data = "";
225
+ process.stdin.setEncoding("utf8");
226
+ process.stdin.on("data", (chunk) => data += chunk);
227
+ process.stdin.on("end", () => resolve2(data));
228
+ process.stdin.on("error", () => resolve2(data));
229
+ });
230
+ }
231
+ async function main() {
232
+ try {
233
+ autoloadEnv();
234
+ const raw = await readStdin();
235
+ const payload = JSON.parse(raw);
236
+ const prompt = typeof payload.prompt === "string" ? payload.prompt : "";
237
+ const conversationId = typeof payload.session_id === "string" ? payload.session_id : "unknown";
238
+ if (!prompt) return;
239
+ const mode = process.env["NLM_HOOK_MODE"] === "live" ? "live" : "shadow";
240
+ const out = await runHook(
241
+ { prompt, conversationId },
242
+ { mode, recall: recallOverHttp }
243
+ );
244
+ if (out) process.stdout.write(out);
245
+ } catch {
246
+ }
247
+ }
248
+ if (process.argv[1] && import.meta.url === pathToFileURL(process.argv[1]).href) {
249
+ void main();
250
+ }
251
+
252
+ // src/hook/pi-extension.ts
253
+ var envLoaded = false;
254
+ function nlmExtension(pi) {
255
+ pi.on("input", async (event, ctx) => {
256
+ if (event.source === "extension") return { action: "continue" };
257
+ if (!event.text || !event.text.trim()) return { action: "continue" };
258
+ if (!envLoaded) {
259
+ autoloadEnv();
260
+ envLoaded = true;
261
+ }
262
+ try {
263
+ const mode = process.env["NLM_HOOK_MODE"] === "live" ? "live" : "shadow";
264
+ const conversationId = ctx.sessionManager.getSessionId() || "unknown";
265
+ const block = await runHook(
266
+ { prompt: event.text, conversationId },
267
+ { mode, recall: recallOverHttp }
268
+ );
269
+ if (!block) return { action: "continue" };
270
+ return { action: "transform", text: `${block}
271
+
272
+ ${event.text}` };
273
+ } catch {
274
+ return { action: "continue" };
275
+ }
276
+ });
277
+ }
278
+ export {
279
+ nlmExtension as default
280
+ };
@@ -0,0 +1,8 @@
1
+ {
2
+ "name": "nlm-memory-pi",
3
+ "version": "0.0.0",
4
+ "private": true,
5
+ "description": "pi.dev extension entry for nlm-memory prompt-recall hook.",
6
+ "type": "module",
7
+ "main": "index.js"
8
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "nlm-memory",
3
- "version": "0.5.18",
3
+ "version": "0.5.20",
4
4
  "description": "Local-first non-linear memory operating system for AI operators.",
5
5
  "type": "module",
6
6
  "license": "Apache-2.0",
@@ -29,6 +29,7 @@
29
29
  "files": [
30
30
  "dist",
31
31
  "plugin",
32
+ "nlm",
32
33
  "assets",
33
34
  "LICENSE",
34
35
  "README.md"
@@ -48,7 +49,10 @@
48
49
  "test:watch": "vitest",
49
50
  "test:unit": "vitest run tests/unit",
50
51
  "test:integration": "vitest run tests/integration",
51
- "typecheck": "tsc -p tsconfig.json --noEmit && tsc -p tsconfig.test.json"
52
+ "typecheck": "tsc -p tsconfig.json --noEmit && tsc -p tsconfig.test.json",
53
+ "bench:longmemeval": "tsx scripts/longmemeval/run-harness.ts",
54
+ "bench:classifier": "tsx scripts/longmemeval/run-harness.ts --classifier",
55
+ "bench:compare": "tsx scripts/longmemeval/compare-classifiers.ts"
52
56
  },
53
57
  "dependencies": {
54
58
  "@clack/prompts": "^1.4.0",
@@ -58,6 +62,8 @@
58
62
  "better-sqlite3": "^11.5.0",
59
63
  "commander": "^12.1.0",
60
64
  "hono": "^4.6.0",
65
+ "pg": "^8.21.0",
66
+ "pgvector": "^0.2.1",
61
67
  "sqlite-vec": "^0.1.6",
62
68
  "yaml": "^2.9.0",
63
69
  "zod": "^3.23.0"
@@ -65,6 +71,7 @@
65
71
  "devDependencies": {
66
72
  "@types/better-sqlite3": "^7.6.13",
67
73
  "@types/node": "^22.10.0",
74
+ "@types/pg": "^8.20.0",
68
75
  "@types/react": "^18.3.28",
69
76
  "@types/react-dom": "^18.3.7",
70
77
  "@vitejs/plugin-react": "^4.7.0",
@@ -137,12 +137,41 @@ function hookAuthHeaders(extra = {}) {
137
137
  return { ...extra, authorization: `Bearer ${token}` };
138
138
  }
139
139
 
140
+ // src/hook/recall-over-http.ts
141
+ var RECALL_LIMIT = 5;
142
+ var RECALL_TIMEOUT_MS = 2e3;
143
+ async function recallOverHttp(prompt) {
144
+ const portValue = process.env["NLM_PORT"] ?? "3940";
145
+ const url = `http://localhost:${portValue}/api/recall?q=${encodeURIComponent(prompt)}&mode=keyword&limit=${RECALL_LIMIT}`;
146
+ const controller = new AbortController();
147
+ const timer = setTimeout(() => controller.abort(), RECALL_TIMEOUT_MS);
148
+ try {
149
+ const res = await fetch(url, {
150
+ headers: hookAuthHeaders({ "x-recall-source": "hook" }),
151
+ signal: controller.signal
152
+ });
153
+ if (!res.ok) return [];
154
+ let body;
155
+ try {
156
+ body = await res.json();
157
+ } catch {
158
+ return [];
159
+ }
160
+ return (body.results ?? []).map((r) => ({
161
+ id: r.id,
162
+ label: r.label,
163
+ startedAt: r.startedAt,
164
+ matchScore: r.matchScore
165
+ }));
166
+ } finally {
167
+ clearTimeout(timer);
168
+ }
169
+ }
170
+
140
171
  // src/hook/prompt-recall-hook.ts
141
172
  var SCORE_THRESHOLD = 0;
142
173
  var PER_FIRE_CAP = 3;
143
174
  var PER_CONVERSATION_CAP = 10;
144
- var RECALL_LIMIT = 5;
145
- var RECALL_TIMEOUT_MS = 2e3;
146
175
  var PROMPT_PREVIEW_CHARS = 200;
147
176
  async function runHook(input, deps) {
148
177
  const gate = classifyPrompt(input.prompt);
@@ -201,33 +230,6 @@ function readStdin() {
201
230
  process.stdin.on("error", () => resolve2(data));
202
231
  });
203
232
  }
204
- async function recallOverHttp(prompt) {
205
- const portValue = process.env["NLM_PORT"] ?? "3940";
206
- const url = `http://localhost:${portValue}/api/recall?q=${encodeURIComponent(prompt)}&mode=keyword&limit=${RECALL_LIMIT}`;
207
- const controller = new AbortController();
208
- const timer = setTimeout(() => controller.abort(), RECALL_TIMEOUT_MS);
209
- try {
210
- const res = await fetch(url, {
211
- headers: hookAuthHeaders({ "x-recall-source": "hook" }),
212
- signal: controller.signal
213
- });
214
- if (!res.ok) return [];
215
- let body;
216
- try {
217
- body = await res.json();
218
- } catch {
219
- return [];
220
- }
221
- return (body.results ?? []).map((r) => ({
222
- id: r.id,
223
- label: r.label,
224
- startedAt: r.startedAt,
225
- matchScore: r.matchScore
226
- }));
227
- } finally {
228
- clearTimeout(timer);
229
- }
230
- }
231
233
  async function main() {
232
234
  try {
233
235
  autoloadEnv();