@engram-cli/engram 0.1.0 → 0.1.1

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 (39) hide show
  1. package/README.md +52 -18
  2. package/bundled-backend/app.js +41 -0
  3. package/bundled-backend/capsule-assembler.js +238 -0
  4. package/bundled-backend/capsule-store.js +108 -0
  5. package/bundled-backend/config.js +31 -0
  6. package/bundled-backend/env-files.js +96 -0
  7. package/bundled-backend/index.js +22 -0
  8. package/bundled-backend/intent-filter.js +21 -0
  9. package/bundled-backend/package.json +7 -0
  10. package/bundled-backend/project-index.js +74 -0
  11. package/bundled-backend/project-slug.js +18 -0
  12. package/bundled-backend/routes/capsule.js +77 -0
  13. package/bundled-backend/routes/context.js +23 -0
  14. package/bundled-backend/routes/event.js +70 -0
  15. package/bundled-backend/routes/global-settings.js +125 -0
  16. package/bundled-backend/routes/health.js +24 -0
  17. package/bundled-backend/routes/projects.js +100 -0
  18. package/bundled-backend/routes/search.js +69 -0
  19. package/bundled-backend/routes/settings.js +82 -0
  20. package/bundled-backend/routes/shares.js +92 -0
  21. package/bundled-backend/supabase.js +47 -0
  22. package/bundled-backend/supermemory.js +46 -0
  23. package/dist/cli.js +25 -0
  24. package/dist/cli.js.map +1 -1
  25. package/dist/client.d.ts +54 -0
  26. package/dist/client.d.ts.map +1 -1
  27. package/dist/client.js +25 -0
  28. package/dist/client.js.map +1 -1
  29. package/dist/mcp.d.ts.map +1 -1
  30. package/dist/mcp.js +143 -31
  31. package/dist/mcp.js.map +1 -1
  32. package/dist/share.d.ts +14 -0
  33. package/dist/share.d.ts.map +1 -0
  34. package/dist/share.js +90 -0
  35. package/dist/share.js.map +1 -0
  36. package/dist/start.d.ts.map +1 -1
  37. package/dist/start.js +116 -36
  38. package/dist/start.js.map +1 -1
  39. package/package.json +10 -4
@@ -0,0 +1,14 @@
1
+ import type { Capsule, ShareRecord } from "@engram-cli/contracts";
2
+ export declare function getShareAccessToken(): string | null;
3
+ export declare function setShareAccessToken(token: string): void;
4
+ export declare function shareCommand(opts: {
5
+ project?: string;
6
+ ide?: string;
7
+ token?: string;
8
+ }): Promise<ShareRecord>;
9
+ export declare function importShareCommand(opts: {
10
+ url: string;
11
+ project?: string;
12
+ overwrite?: boolean;
13
+ }): Promise<Capsule>;
14
+ //# sourceMappingURL=share.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"share.d.ts","sourceRoot":"","sources":["../src/share.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAgBlE,wBAAgB,mBAAmB,IAAI,MAAM,GAAG,IAAI,CAQnD;AAED,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAIvD;AAED,wBAAsB,YAAY,CAAC,IAAI,EAAE;IACvC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,GAAG,OAAO,CAAC,WAAW,CAAC,CAsCvB;AAED,wBAAsB,kBAAkB,CAAC,IAAI,EAAE;IAC7C,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB,GAAG,OAAO,CAAC,OAAO,CAAC,CAiCnB"}
package/dist/share.js ADDED
@@ -0,0 +1,90 @@
1
+ import { EngramClient } from "./client.js";
2
+ import { getBackendUrl } from "./config.js";
3
+ import { resolveProjectSlug } from "./project.js";
4
+ import { readFileSync, writeFileSync, mkdirSync } from "node:fs";
5
+ import { homedir } from "node:os";
6
+ import path from "node:path";
7
+ function shareBaseUrl() {
8
+ return process.env.ENGRAM_SHARE_BASE_URL ?? "http://localhost:3000";
9
+ }
10
+ function authPath() {
11
+ return path.join(homedir(), ".engram", "share-auth.json");
12
+ }
13
+ export function getShareAccessToken() {
14
+ try {
15
+ const raw = readFileSync(authPath(), "utf8");
16
+ const parsed = JSON.parse(raw);
17
+ return parsed.access_token ?? null;
18
+ }
19
+ catch {
20
+ return null;
21
+ }
22
+ }
23
+ export function setShareAccessToken(token) {
24
+ const dir = path.dirname(authPath());
25
+ mkdirSync(dir, { recursive: true });
26
+ writeFileSync(authPath(), JSON.stringify({ access_token: token }, null, 2), "utf8");
27
+ }
28
+ export async function shareCommand(opts) {
29
+ const client = new EngramClient(getBackendUrl());
30
+ const project = resolveProjectSlug(opts.project, process.cwd());
31
+ const preview = await client.previewShare({ project, ide: opts.ide });
32
+ if (preview.blocked) {
33
+ throw new Error(`Share blocked: ${preview.block_reason ?? "sanitization failed"}`);
34
+ }
35
+ const accessToken = opts.token ?? process.env.ENGRAM_SHARE_TOKEN ?? getShareAccessToken();
36
+ if (!accessToken) {
37
+ throw new Error("No share auth token. Sign in at the landing site and save token to ~/.engram/share-auth.json or pass --token.");
38
+ }
39
+ const base = shareBaseUrl().replace(/\/$/, "");
40
+ const res = await fetch(`${base}/api/shares`, {
41
+ method: "POST",
42
+ headers: {
43
+ "content-type": "application/json",
44
+ authorization: `Bearer ${accessToken}`,
45
+ },
46
+ body: JSON.stringify({
47
+ project_slug: project,
48
+ capsule_snapshot: preview.capsule,
49
+ source_ide: opts.ide,
50
+ redaction_summary: {
51
+ finding_count: preview.findings.length,
52
+ kinds: [...new Set(preview.findings.map((f) => f.kind))],
53
+ },
54
+ }),
55
+ });
56
+ const body = (await res.json());
57
+ if (!res.ok) {
58
+ throw new Error(body.error ?? body.message ?? res.statusText);
59
+ }
60
+ return body;
61
+ }
62
+ export async function importShareCommand(opts) {
63
+ const client = new EngramClient(getBackendUrl());
64
+ const project = resolveProjectSlug(opts.project, process.cwd());
65
+ const base = shareBaseUrl().replace(/\/$/, "");
66
+ let apiPath = opts.url.trim();
67
+ try {
68
+ const u = new URL(opts.url);
69
+ const token = u.pathname.split("/").filter(Boolean).pop() ?? opts.url.trim();
70
+ apiPath = `/api/shares/${token}`;
71
+ }
72
+ catch {
73
+ apiPath = `/api/shares/${opts.url.trim()}`;
74
+ }
75
+ const res = await fetch(`${base}${apiPath}`);
76
+ const body = (await res.json());
77
+ if (!res.ok) {
78
+ throw new Error(body.error ?? body.message ?? res.statusText);
79
+ }
80
+ if (body.status && body.status !== "active") {
81
+ throw new Error(`Share is ${body.status}`);
82
+ }
83
+ return client.importCapsule({
84
+ project,
85
+ capsule: body.capsule_snapshot,
86
+ overwrite: opts.overwrite ?? true,
87
+ project_root: process.cwd(),
88
+ });
89
+ }
90
+ //# sourceMappingURL=share.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"share.js","sourceRoot":"","sources":["../src/share.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"start.d.ts","sourceRoot":"","sources":["../src/start.ts"],"names":[],"mappings":"AAgLA,wBAAsB,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC,CAmElD"}
1
+ {"version":3,"file":"start.d.ts","sourceRoot":"","sources":["../src/start.ts"],"names":[],"mappings":"AAiQA,wBAAsB,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC,CA+ElD"}
package/dist/start.js CHANGED
@@ -3,28 +3,60 @@ import fs from "node:fs";
3
3
  import os from "node:os";
4
4
  import path from "node:path";
5
5
  import { fileURLToPath } from "node:url";
6
+ import { execSync } from "node:child_process";
6
7
  import { getBackendUrl, getSupermemoryUrl } from "./config.js";
7
8
  const __filename = fileURLToPath(import.meta.url);
8
9
  const __dirname = path.dirname(__filename);
9
10
  const SM_DATA_DIR = path.join(os.homedir(), ".supermemory");
10
11
  const SM_API_KEY_FILE = path.join(SM_DATA_DIR, "api-key");
11
- const REPO_ENV = path.resolve(__dirname, "..", "..", ".env");
12
+ function findGitRoot(start) {
13
+ try {
14
+ return execSync("git rev-parse --show-toplevel", {
15
+ cwd: start,
16
+ encoding: "utf8",
17
+ stdio: ["ignore", "pipe", "ignore"],
18
+ }).trim();
19
+ }
20
+ catch {
21
+ return undefined;
22
+ }
23
+ }
12
24
  function findMonorepoRoot() {
13
25
  let dir = __dirname;
14
- for (let i = 0; i < 4; i++) {
26
+ for (let i = 0; i < 6; i++) {
15
27
  dir = path.dirname(dir);
16
- if (fs.existsSync(path.join(dir, "backend")) && fs.existsSync(path.join(dir, "packages"))) {
28
+ if (fs.existsSync(path.join(dir, "backend")) &&
29
+ fs.existsSync(path.join(dir, "packages"))) {
17
30
  return dir;
18
31
  }
19
32
  }
20
33
  return undefined;
21
34
  }
22
- function findBackendDir() {
23
- const root = findMonorepoRoot();
24
- if (!root)
25
- return undefined;
26
- const backend = path.join(root, "backend");
27
- return fs.existsSync(backend) ? backend : undefined;
35
+ function findEnvPath() {
36
+ if (process.env.ENGRAM_PROJECT_ROOT) {
37
+ return path.join(path.resolve(process.env.ENGRAM_PROJECT_ROOT), ".env");
38
+ }
39
+ const git = findGitRoot(process.cwd());
40
+ if (git)
41
+ return path.join(git, ".env");
42
+ const mono = findMonorepoRoot();
43
+ if (mono)
44
+ return path.join(mono, ".env");
45
+ return path.join(process.cwd(), ".env");
46
+ }
47
+ function findBackendEntry() {
48
+ const mono = findMonorepoRoot();
49
+ if (mono) {
50
+ const backend = path.join(mono, "backend");
51
+ if (fs.existsSync(backend))
52
+ return { mode: "monorepo", dir: backend };
53
+ }
54
+ // Published package: cli/dist/start.js → cli/bundled-backend/index.js
55
+ const bundled = path.resolve(__dirname, "..", "bundled-backend", "index.js");
56
+ if (fs.existsSync(bundled))
57
+ return { mode: "bundled", entry: bundled };
58
+ throw new Error("Could not locate Engram backend. Reinstall with: npx @engram-cli/engram@latest, " +
59
+ "or run from the Engram monorepo.");
28
60
  }
29
61
  function findSupermemoryBinary() {
30
62
  const root = findMonorepoRoot();
@@ -54,22 +86,42 @@ function readApiKeyFile() {
54
86
  return undefined;
55
87
  }
56
88
  }
57
- function readEnvFile(key) {
89
+ function readEnvFile(envPath, key) {
58
90
  try {
59
- const text = fs.readFileSync(REPO_ENV, "utf8");
60
- const match = text.match(new RegExp(`^${key}=([^\r\n]+)`, "m"));
91
+ const text = fs.readFileSync(envPath, "utf8");
92
+ const match = text.match(new RegExp(`^${key}=([^\\r\\n]+)`, "m"));
61
93
  return match?.[1]?.trim();
62
94
  }
63
95
  catch {
64
96
  return undefined;
65
97
  }
66
98
  }
67
- function warnIfApiKeyMismatch() {
99
+ function loadEnvIntoProcess(envPath) {
100
+ try {
101
+ const text = fs.readFileSync(envPath, "utf8");
102
+ for (const line of text.split("\n")) {
103
+ const trimmed = line.trim();
104
+ if (!trimmed || trimmed.startsWith("#"))
105
+ continue;
106
+ const eq = trimmed.indexOf("=");
107
+ if (eq < 1)
108
+ continue;
109
+ const key = trimmed.slice(0, eq).trim();
110
+ const value = trimmed.slice(eq + 1).trim();
111
+ if (!(key in process.env))
112
+ process.env[key] = value;
113
+ }
114
+ }
115
+ catch {
116
+ // no .env yet — user can configure via /settings/global
117
+ }
118
+ }
119
+ function warnIfApiKeyMismatch(envPath) {
68
120
  const fileKey = readApiKeyFile();
69
- const envKey = readEnvFile("SUPERMEMORY_API_KEY");
121
+ const envKey = readEnvFile(envPath, "SUPERMEMORY_API_KEY");
70
122
  if (fileKey && envKey && fileKey !== envKey) {
71
- console.warn("[engram] warning: ~/.supermemory/api-key differs from repo .env SUPERMEMORY_API_KEY. " +
72
- "Copy the new key into .env and restart.");
123
+ console.warn("[engram] warning: ~/.supermemory/api-key differs from .env SUPERMEMORY_API_KEY. " +
124
+ "Update keys via the Engram Setup checklist or PUT /settings/global.");
73
125
  }
74
126
  }
75
127
  function sleep(ms) {
@@ -79,8 +131,7 @@ async function waitForReachable(url, label, opts = {}, timeoutMs = 30000) {
79
131
  const deadline = Date.now() + timeoutMs;
80
132
  const headers = {};
81
133
  if (opts.withAuth) {
82
- const apiKey = readEnvFile("SUPERMEMORY_API_KEY") ?? "";
83
- headers.Authorization = `Bearer ${apiKey}`;
134
+ headers.Authorization = `Bearer ${opts.apiKey ?? ""}`;
84
135
  }
85
136
  const probePath = opts.path ?? "/";
86
137
  while (Date.now() < deadline) {
@@ -157,15 +208,36 @@ function waitForChildren(children, timeoutMs) {
157
208
  check();
158
209
  });
159
210
  }
211
+ function spawnBackend(backend, envPath, env) {
212
+ if (backend.mode === "monorepo") {
213
+ return spawn("npm", ["run", "start"], {
214
+ cwd: backend.dir,
215
+ env,
216
+ stdio: ["ignore", "pipe", "pipe"],
217
+ detached: false,
218
+ });
219
+ }
220
+ // Bundled: run compiled index.js; load .env via dotenv-style injection already in process.env
221
+ const dataDir = process.env.ENGRAM_DATA_DIR ??
222
+ path.join(os.homedir(), ".engram", "data");
223
+ return spawn(process.execPath, [backend.entry], {
224
+ cwd: path.dirname(backend.entry),
225
+ env: {
226
+ ...env,
227
+ ENGRAM_DATA_DIR: dataDir,
228
+ ENGRAM_PROJECT_ROOT: path.dirname(envPath),
229
+ },
230
+ stdio: ["ignore", "pipe", "pipe"],
231
+ detached: false,
232
+ });
233
+ }
160
234
  export async function startCommand() {
161
235
  const backendUrl = getBackendUrl();
162
236
  const supermemoryUrl = getSupermemoryUrl();
163
- const backendDir = findBackendDir();
237
+ const envPath = findEnvPath();
238
+ loadEnvIntoProcess(envPath);
239
+ const backend = findBackendEntry();
164
240
  const smBin = findSupermemoryBinary();
165
- if (!backendDir) {
166
- throw new Error("Could not locate the Engram backend directory. " +
167
- "Make sure engram is installed next to the backend folder, or run from the monorepo.");
168
- }
169
241
  const children = [];
170
242
  let shuttingDown = false;
171
243
  const shutdown = () => {
@@ -192,22 +264,30 @@ export async function startCommand() {
192
264
  prefixStream(sm.stdout, "[supermemory]", process.stdout);
193
265
  prefixStream(sm.stderr, "[supermemory]", process.stderr);
194
266
  console.log(`[engram] starting Supermemory Local (${supermemoryUrl})...`);
195
- await waitForReachable(supermemoryUrl, "Supermemory", { withAuth: true });
196
- warnIfApiKeyMismatch();
197
- console.log(`[engram] starting Engram backend (${backendUrl})...`);
198
- const backend = spawn("npm", ["run", "start"], {
199
- cwd: backendDir,
200
- env: process.env,
201
- stdio: ["ignore", "pipe", "pipe"],
202
- detached: false,
267
+ const apiKey = readEnvFile(envPath, "SUPERMEMORY_API_KEY") ??
268
+ process.env.SUPERMEMORY_API_KEY ??
269
+ "";
270
+ await waitForReachable(supermemoryUrl, "Supermemory", {
271
+ withAuth: true,
272
+ apiKey,
273
+ });
274
+ warnIfApiKeyMismatch(envPath);
275
+ if (!apiKey) {
276
+ console.warn("[engram] warning: SUPERMEMORY_API_KEY not set. " +
277
+ "Configure keys in the extension Setup checklist or dashboard /settings.");
278
+ }
279
+ console.log(`[engram] starting Engram backend (${backendUrl}) via ${backend.mode}...`);
280
+ const backendProc = spawnBackend(backend, envPath, process.env);
281
+ children.push({ name: "[engram]", process: backendProc });
282
+ prefixStream(backendProc.stdout, "[engram]", process.stdout);
283
+ prefixStream(backendProc.stderr, "[engram]", process.stderr);
284
+ await waitForReachable(backendUrl, "Engram backend", {
285
+ path: "/health",
286
+ requireOk: true,
203
287
  });
204
- children.push({ name: "[engram]", process: backend });
205
- prefixStream(backend.stdout, "[engram]", process.stdout);
206
- prefixStream(backend.stderr, "[engram]", process.stderr);
207
- await waitForReachable(backendUrl, "Engram backend", { path: "/health", requireOk: true });
208
288
  console.log(`[engram] ready — backend ${backendUrl} · supermemory ${supermemoryUrl}`);
289
+ console.log(`[engram] env: ${envPath}`);
209
290
  console.log("[engram] press Ctrl+C to stop both services");
210
- // Keep process alive until children exit (or force exit after shutdown timeout)
211
291
  await waitForChildren(children, Number.POSITIVE_INFINITY);
212
292
  }
213
293
  catch (err) {
package/dist/start.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"start.js","sourceRoot":"","sources":["../src/start.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"start.js","sourceRoot":"","sources":["../src/start.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,23 +1,28 @@
1
1
  {
2
2
  "name": "@engram-cli/engram",
3
- "version": "0.1.0",
3
+ "version": "0.1.1",
4
4
  "description": "CLI + MCP entry for Engram — local-first developer context hub",
5
5
  "type": "module",
6
6
  "main": "./dist/cli.js",
7
7
  "bin": {
8
- "engram": "./dist/cli.js"
8
+ "engram": "dist/cli.js"
9
9
  },
10
10
  "scripts": {
11
- "build": "tsc -p tsconfig.json",
11
+ "bundle-backend": "bash scripts/bundle-backend.sh",
12
+ "build": "npm run bundle-backend && tsc -p tsconfig.json && chmod +x dist/cli.js",
12
13
  "dev": "tsx --env-file=../.env src/cli.ts",
13
14
  "typecheck": "tsc -p tsconfig.json --noEmit",
14
15
  "smoke": "bash scripts/smoke.sh",
15
16
  "prepublishOnly": "npm run build"
16
17
  },
17
18
  "dependencies": {
18
- "@engram-cli/contracts": "^0.1.0",
19
+ "@engram-cli/contracts": "^0.1.1",
20
+ "@hono/node-server": "^1.14.4",
19
21
  "@modelcontextprotocol/sdk": "^1.0.4",
20
22
  "commander": "^13.0.0",
23
+ "hono": "^4.8.3",
24
+ "pg": "^8.16.3",
25
+ "supermemory": "^4.24.12",
21
26
  "zod": "^3.25.76"
22
27
  },
23
28
  "devDependencies": {
@@ -27,6 +32,7 @@
27
32
  },
28
33
  "files": [
29
34
  "dist",
35
+ "bundled-backend",
30
36
  "templates",
31
37
  "README.md"
32
38
  ],