@engramprotocol/mcp-server 0.9.1 → 0.10.0
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/README.md +48 -37
- package/dist/cli.js +42 -1
- package/dist/cli.js.map +1 -1
- package/dist/setup/_helpers.d.ts +71 -0
- package/dist/setup/_helpers.d.ts.map +1 -0
- package/dist/setup/_helpers.js +275 -0
- package/dist/setup/_helpers.js.map +1 -0
- package/dist/setup/index.d.ts +2 -0
- package/dist/setup/index.d.ts.map +1 -0
- package/dist/setup/index.js +83 -0
- package/dist/setup/index.js.map +1 -0
- package/dist/setup/install.d.ts +2 -0
- package/dist/setup/install.d.ts.map +1 -0
- package/dist/setup/install.js +241 -0
- package/dist/setup/install.js.map +1 -0
- package/dist/setup/uninstall.d.ts +2 -0
- package/dist/setup/uninstall.d.ts.map +1 -0
- package/dist/setup/uninstall.js +120 -0
- package/dist/setup/uninstall.js.map +1 -0
- package/dist/setup/update.d.ts +2 -0
- package/dist/setup/update.d.ts.map +1 -0
- package/dist/setup/update.js +130 -0
- package/dist/setup/update.js.map +1 -0
- package/dist/tools/boot.d.ts.map +1 -1
- package/dist/tools/boot.js +2 -4
- package/dist/tools/boot.js.map +1 -1
- package/dist/tools/entity.d.ts.map +1 -1
- package/dist/tools/entity.js +3 -2
- package/dist/tools/entity.js.map +1 -1
- package/dist/tools/get.d.ts.map +1 -1
- package/dist/tools/get.js +2 -5
- package/dist/tools/get.js.map +1 -1
- package/dist/tools/list.d.ts.map +1 -1
- package/dist/tools/list.js +5 -8
- package/dist/tools/list.js.map +1 -1
- package/dist/tools/note.d.ts.map +1 -1
- package/dist/tools/note.js +4 -1
- package/dist/tools/note.js.map +1 -1
- package/dist/tools/projects.d.ts.map +1 -1
- package/dist/tools/projects.js +3 -1
- package/dist/tools/projects.js.map +1 -1
- package/dist/tools/recall.d.ts.map +1 -1
- package/dist/tools/recall.js +3 -4
- package/dist/tools/recall.js.map +1 -1
- package/dist/tools/update.js +3 -3
- package/dist/tools/update.js.map +1 -1
- package/package.json +5 -3
- package/templates/hooks/session_start_boot.sh +63 -0
- package/templates/hooks/user_prompt_submit_reminder.sh +78 -0
package/README.md
CHANGED
|
@@ -2,51 +2,62 @@
|
|
|
2
2
|
|
|
3
3
|
MCP wrapper around the EML HTTP API. Exposes the Engram Protocol as MCP tools for Claude Code (and other MCP clients) — stdio transport, Bearer token auth against `api.engramprotocol.io`.
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
Request an API token: **parsley_22bonds@icloud.com**
|
|
6
|
+
|
|
7
|
+
## Install
|
|
6
8
|
|
|
7
9
|
```bash
|
|
8
|
-
|
|
10
|
+
EML_API_TOKEN=eml_<prefix><secret> \
|
|
11
|
+
npx @engramprotocol/mcp-server setup install
|
|
9
12
|
```
|
|
10
13
|
|
|
11
|
-
|
|
14
|
+
The installer:
|
|
15
|
+
- Verifies the token against `/stats` before storing
|
|
16
|
+
- Writes `~/.eml/config` (chmod 600) with URL + token + client-version
|
|
17
|
+
- Registers the `engramprotocol` MCP server via `claude mcp add` (user scope, stdio transport, semver-range-pinned to `@~0.10`)
|
|
18
|
+
- Adds two hooks to `~/.claude/settings.json` (see [Hooks](#hooks) below):
|
|
19
|
+
- **SessionStart** → loads your brain at session start (identity, rules, decisions, status, tasks, protocol conventions)
|
|
20
|
+
- **UserPromptSubmit** → light mid-session reminder on turn 1, every 5 turns, or after >1h pause
|
|
21
|
+
- Adds two permissions: `mcp__engramprotocol__*` (skip per-call prompt for EML tools) and `Bash(npx @engramprotocol/mcp-server setup *)` (let the agent auto-execute `setup update` when prompted)
|
|
22
|
+
- Performs a final `/stats` round-trip as smoke test
|
|
23
|
+
|
|
24
|
+
A backup of `~/.claude/settings.json` is created first (pattern `.pre-eml-install-YYYY-MM-DD-HH-MM-SS.bak`).
|
|
25
|
+
|
|
26
|
+
### Update
|
|
12
27
|
|
|
13
28
|
```bash
|
|
14
|
-
|
|
15
|
-
EML_API_TOKEN=eml_<prefix><secret> \
|
|
16
|
-
npx @engramprotocol/mcp-server
|
|
29
|
+
npx @engramprotocol/mcp-server@latest setup update
|
|
17
30
|
```
|
|
18
31
|
|
|
19
|
-
|
|
32
|
+
Refreshes hook templates (marker-aware — preserves files you customised), bumps `EML_CLIENT_VERSION` in `~/.eml/config`. Idempotent. The `@latest` suffix busts the npx cache so you actually get the new version.
|
|
20
33
|
|
|
21
|
-
|
|
34
|
+
### Uninstall
|
|
22
35
|
|
|
23
36
|
```bash
|
|
24
|
-
|
|
25
|
-
--env EML_API_URL=https://api.engramprotocol.io \
|
|
26
|
-
--env EML_API_TOKEN=eml_<prefix><secret> \
|
|
27
|
-
-- npx -y @engramprotocol/mcp-server
|
|
37
|
+
npx @engramprotocol/mcp-server setup uninstall
|
|
28
38
|
```
|
|
29
39
|
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
40
|
+
Removes the MCP registration, the two managed hook entries, the two managed permission entries, and `~/.eml/hooks/`. Your own hooks and permissions are untouched. `~/.eml/config` is kept by default (asks for confirmation before delete — it contains your token).
|
|
41
|
+
|
|
42
|
+
## Hooks
|
|
43
|
+
|
|
44
|
+
Two bash hooks land in `~/.eml/hooks/`:
|
|
45
|
+
|
|
46
|
+
### `session_start_boot.sh` (SessionStart event)
|
|
47
|
+
- Sources `~/.eml/config`, POSTs to `/boot`, prints the returned markdown to stdout
|
|
48
|
+
- Claude Code injects that stdout into model context — **invisible in chat** but reaches the model (verified empirically; behavior decided 2026-05-15)
|
|
49
|
+
- Performs an update-banner check: if `EML_CLIENT_VERSION` from config differs from `/boot.version`, emits a banner pointing to `setup update`
|
|
50
|
+
- Fail-soft: missing config, missing vars, or unreachable server emits a warning and exits 0 — session continues without brain
|
|
51
|
+
|
|
52
|
+
### `user_prompt_submit_reminder.sh` (UserPromptSubmit event)
|
|
53
|
+
- Local only, no HTTP
|
|
54
|
+
- Triggers a 5-bullet reminder on turn 1, every 5 turns, or after >1h pause
|
|
55
|
+
- Per-session turn counter at `/tmp/eml-turns/<session_id>`
|
|
56
|
+
- Reminder content is a heredoc inside the script — refreshed via `setup update`
|
|
46
57
|
|
|
47
|
-
|
|
58
|
+
Both hooks log to `~/.eml/logs/<event>-YYYY-MM-DD.log` (self-rotating per day) and carry a `# managed-by: engramprotocol-setup` marker line that lets `setup update` / `setup uninstall` identify which files they own.
|
|
48
59
|
|
|
49
|
-
## Tools (v0.
|
|
60
|
+
## Tools (v0.10.0)
|
|
50
61
|
|
|
51
62
|
All tools have an `eml_` prefix. Total: **17 tools**.
|
|
52
63
|
|
|
@@ -54,7 +65,7 @@ All tools have an `eml_` prefix. Total: **17 tools**.
|
|
|
54
65
|
|
|
55
66
|
| Tool | HTTP endpoint | Use case |
|
|
56
67
|
|---|---|---|
|
|
57
|
-
| `eml_boot` | `POST /boot` |
|
|
68
|
+
| `eml_boot` | `POST /boot` | Manual brain-reload (SessionStart-Hook does this automatically at session start) |
|
|
58
69
|
| `eml_recall` | `POST /recall` | Topic search (FTS5 + recency) |
|
|
59
70
|
|
|
60
71
|
### Write (typed)
|
|
@@ -64,14 +75,14 @@ All tools have an `eml_` prefix. Total: **17 tools**.
|
|
|
64
75
|
| `eml_decide` | `POST /context` (type=decision) | Record a deliberate, documented decision |
|
|
65
76
|
| `eml_set_status` | `POST /context` (type=status) | Set current status for a scope (auto-supersedes old active status) |
|
|
66
77
|
| `eml_track_task` | `POST /context` (type=task) | Plan/track a task with priority + due date |
|
|
67
|
-
| `eml_note` | `POST /context` (kind-discriminated) |
|
|
78
|
+
| `eml_note` | `POST /context` (kind-discriminated) | Catch-all for rule/profile/event/reference/log |
|
|
68
79
|
|
|
69
80
|
### Read / Find
|
|
70
81
|
|
|
71
82
|
| Tool | HTTP endpoint | Use case |
|
|
72
83
|
|---|---|---|
|
|
73
84
|
| `eml_show` | `GET /brain-state?scope=` | Curated snapshot for any scope |
|
|
74
|
-
| `eml_list` | `GET /list
|
|
85
|
+
| `eml_list` | `GET /list` | Filter-based engram list |
|
|
75
86
|
| `eml_get` | `GET /engram/:id` | Single engram + relations |
|
|
76
87
|
| `eml_projects` | `GET /projects` | List projects (filter: status) |
|
|
77
88
|
| `eml_entities` | `GET /entities` | List entities (filter: kind) |
|
|
@@ -92,12 +103,12 @@ All tools have an `eml_` prefix. Total: **17 tools**.
|
|
|
92
103
|
| `eml_entity_create` | `POST /entity` | Register an entity (required before `scope=entity.<id>`) |
|
|
93
104
|
| `eml_entity_update` | `PUT /entity/:id` | Patch entity fields |
|
|
94
105
|
|
|
95
|
-
### Intentionally not exposed (v0.
|
|
106
|
+
### Intentionally not exposed (v0.10.0)
|
|
96
107
|
|
|
97
108
|
- `eml_relate` — available via HTTP API directly
|
|
98
|
-
- `eml_confirm_review` — deferred to brain-hygiene cluster
|
|
99
|
-
- Epistemic-mode write tools (observation/hypothesis/assessment/prediction/pattern) — available via HTTP API
|
|
100
|
-
-
|
|
109
|
+
- `eml_confirm_review` — deferred to brain-hygiene cluster
|
|
110
|
+
- Epistemic-mode write tools (observation/hypothesis/assessment/prediction/pattern) — Alpha-state, available via HTTP API
|
|
111
|
+
- Session-Awareness tools — deferred to its own future version
|
|
101
112
|
- `eml_*_delete` — by design not in the agent action space; cleanup is operator-only
|
|
102
113
|
|
|
103
114
|
## Error handling
|
package/dist/cli.js
CHANGED
|
@@ -1,5 +1,38 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
"use strict";
|
|
3
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
4
|
+
if (k2 === undefined) k2 = k;
|
|
5
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
6
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
7
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
8
|
+
}
|
|
9
|
+
Object.defineProperty(o, k2, desc);
|
|
10
|
+
}) : (function(o, m, k, k2) {
|
|
11
|
+
if (k2 === undefined) k2 = k;
|
|
12
|
+
o[k2] = m[k];
|
|
13
|
+
}));
|
|
14
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
15
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
16
|
+
}) : function(o, v) {
|
|
17
|
+
o["default"] = v;
|
|
18
|
+
});
|
|
19
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
20
|
+
var ownKeys = function(o) {
|
|
21
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
22
|
+
var ar = [];
|
|
23
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
24
|
+
return ar;
|
|
25
|
+
};
|
|
26
|
+
return ownKeys(o);
|
|
27
|
+
};
|
|
28
|
+
return function (mod) {
|
|
29
|
+
if (mod && mod.__esModule) return mod;
|
|
30
|
+
var result = {};
|
|
31
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
32
|
+
__setModuleDefault(result, mod);
|
|
33
|
+
return result;
|
|
34
|
+
};
|
|
35
|
+
})();
|
|
3
36
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
37
|
const server_1 = require("./server");
|
|
5
38
|
function parseArgs(argv) {
|
|
@@ -55,7 +88,15 @@ Example — Claude Code MCP config:
|
|
|
55
88
|
process.exit(code);
|
|
56
89
|
}
|
|
57
90
|
async function main() {
|
|
58
|
-
const
|
|
91
|
+
const argv = process.argv.slice(2);
|
|
92
|
+
// Dispatch: setup-mode vs server-mode
|
|
93
|
+
if (argv[0] === 'setup') {
|
|
94
|
+
const { runSetup } = await Promise.resolve().then(() => __importStar(require('./setup/index.js')));
|
|
95
|
+
await runSetup(argv.slice(1));
|
|
96
|
+
return;
|
|
97
|
+
}
|
|
98
|
+
// Server-mode (default)
|
|
99
|
+
const args = parseArgs(argv);
|
|
59
100
|
if (args.help)
|
|
60
101
|
printHelpAndExit(0);
|
|
61
102
|
const url = args.url ?? process.env.EML_API_URL;
|
package/dist/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
export declare const HOME_DIR: string;
|
|
2
|
+
export declare const EML_DIR: string;
|
|
3
|
+
export declare const EML_CONFIG: string;
|
|
4
|
+
export declare const EML_HOOKS_DIR: string;
|
|
5
|
+
export declare const CLAUDE_DIR: string;
|
|
6
|
+
export declare const CLAUDE_JSON: string;
|
|
7
|
+
export declare const CLAUDE_SETTINGS: string;
|
|
8
|
+
export declare const MANAGED_BY_MARKER = "engramprotocol-setup";
|
|
9
|
+
export declare const MCP_SERVER_NAME = "engramprotocol";
|
|
10
|
+
/** Resolve the package's own root (where templates/ lives). Works from dist/. */
|
|
11
|
+
export declare function pkgRoot(): string;
|
|
12
|
+
export declare function pkgVersion(): string;
|
|
13
|
+
export declare function templatesDir(): string;
|
|
14
|
+
export declare function promptText(question: string): Promise<string>;
|
|
15
|
+
export declare function promptConfirm(question: string, defaultYes?: boolean): Promise<boolean>;
|
|
16
|
+
export interface EmlConfig {
|
|
17
|
+
EML_URL?: string;
|
|
18
|
+
EML_API_TOKEN?: string;
|
|
19
|
+
EML_CLIENT_VERSION?: string;
|
|
20
|
+
}
|
|
21
|
+
export declare function readConfig(): EmlConfig | null;
|
|
22
|
+
export declare function writeConfig(cfg: EmlConfig): void;
|
|
23
|
+
export type SettingsJson = Record<string, any>;
|
|
24
|
+
export declare function readSettings(): SettingsJson;
|
|
25
|
+
export declare function backupSettings(): string;
|
|
26
|
+
export declare function writeSettings(settings: SettingsJson): void;
|
|
27
|
+
/** Add a permission entry to settings.permissions.allow if not already present. */
|
|
28
|
+
export declare function mergePermission(settings: SettingsJson, entry: string): boolean;
|
|
29
|
+
/** Remove permission entries matching the predicate. Returns count removed. */
|
|
30
|
+
export declare function removePermissions(settings: SettingsJson, predicate: (entry: string) => boolean): number;
|
|
31
|
+
export interface HookEntry {
|
|
32
|
+
hooks: Array<{
|
|
33
|
+
type: string;
|
|
34
|
+
command: string;
|
|
35
|
+
}>;
|
|
36
|
+
matcher?: string;
|
|
37
|
+
}
|
|
38
|
+
/** Add a command-hook to settings.hooks.<event>[] if no existing entry references the same command. */
|
|
39
|
+
export declare function mergeHookCommand(settings: SettingsJson, event: string, command: string): boolean;
|
|
40
|
+
/** Remove hook entries whose command starts with the given prefix (e.g. `$HOME/.eml/hooks/`). Returns count removed. */
|
|
41
|
+
export declare function removeHooksByCommandPrefix(settings: SettingsJson, prefix: string): number;
|
|
42
|
+
export declare function claudeCli(args: string[]): {
|
|
43
|
+
stdout: string;
|
|
44
|
+
stderr: string;
|
|
45
|
+
status: number;
|
|
46
|
+
};
|
|
47
|
+
export declare function claudeCliExists(): boolean;
|
|
48
|
+
/** Unauthenticated reachability check — "is the server alive?". */
|
|
49
|
+
export declare function verifyHealth(url: string): Promise<{
|
|
50
|
+
ok: boolean;
|
|
51
|
+
status?: number;
|
|
52
|
+
error?: string;
|
|
53
|
+
}>;
|
|
54
|
+
/** Authenticated round-trip — "does this token work?". Uses GET /stats (lightweight, auth-required). */
|
|
55
|
+
export declare function verifyToken(url: string, token: string): Promise<{
|
|
56
|
+
ok: boolean;
|
|
57
|
+
status?: number;
|
|
58
|
+
error?: string;
|
|
59
|
+
}>;
|
|
60
|
+
export interface HookTemplate {
|
|
61
|
+
filename: string;
|
|
62
|
+
event: string;
|
|
63
|
+
}
|
|
64
|
+
export declare const HOOK_TEMPLATES: HookTemplate[];
|
|
65
|
+
export declare function readTemplate(filename: string): string;
|
|
66
|
+
export declare function hasMarker(content: string): boolean;
|
|
67
|
+
export declare function installTemplate(filename: string): {
|
|
68
|
+
installedPath: string;
|
|
69
|
+
alreadyExisted: boolean;
|
|
70
|
+
};
|
|
71
|
+
//# sourceMappingURL=_helpers.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"_helpers.d.ts","sourceRoot":"","sources":["../../src/setup/_helpers.ts"],"names":[],"mappings":"AAUA,eAAO,MAAM,QAAQ,QAAoD,CAAA;AACzE,eAAO,MAAM,OAAO,QAA8B,CAAA;AAClD,eAAO,MAAM,UAAU,QAA+B,CAAA;AACtD,eAAO,MAAM,aAAa,QAA8B,CAAA;AACxD,eAAO,MAAM,UAAU,QAAiC,CAAA;AACxD,eAAO,MAAM,WAAW,QAAsC,CAAA;AAC9D,eAAO,MAAM,eAAe,QAAyC,CAAA;AAErE,eAAO,MAAM,iBAAiB,yBAAyB,CAAA;AAGvD,eAAO,MAAM,eAAe,mBAAmB,CAAA;AAI/C,iFAAiF;AACjF,wBAAgB,OAAO,IAAI,MAAM,CAIhC;AAED,wBAAgB,UAAU,IAAI,MAAM,CAInC;AAED,wBAAgB,YAAY,IAAI,MAAM,CAErC;AAID,wBAAsB,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAQlE;AAED,wBAAsB,aAAa,CAAC,QAAQ,EAAE,MAAM,EAAE,UAAU,UAAQ,GAAG,OAAO,CAAC,OAAO,CAAC,CAK1F;AAID,MAAM,WAAW,SAAS;IACxB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,kBAAkB,CAAC,EAAE,MAAM,CAAA;CAC5B;AAED,wBAAgB,UAAU,IAAI,SAAS,GAAG,IAAI,CAgB7C;AAED,wBAAgB,WAAW,CAAC,GAAG,EAAE,SAAS,GAAG,IAAI,CAUhD;AAID,MAAM,MAAM,YAAY,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;AAE9C,wBAAgB,YAAY,IAAI,YAAY,CAS3C;AAED,wBAAgB,cAAc,IAAI,MAAM,CAMvC;AAED,wBAAgB,aAAa,CAAC,QAAQ,EAAE,YAAY,GAAG,IAAI,CAK1D;AAID,mFAAmF;AACnF,wBAAgB,eAAe,CAAC,QAAQ,EAAE,YAAY,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAO9E;AAED,+EAA+E;AAC/E,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,YAAY,EAAE,SAAS,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,GAAG,MAAM,CAKvG;AAID,MAAM,WAAW,SAAS;IACxB,KAAK,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;IAC/C,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB;AAED,uGAAuG;AACvG,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,YAAY,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAUhG;AAED,wHAAwH;AACxH,wBAAgB,0BAA0B,CAAC,QAAQ,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAezF;AAID,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAO5F;AAED,wBAAgB,eAAe,IAAI,OAAO,CAGzC;AAID,mEAAmE;AACnE,wBAAsB,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;IAAE,EAAE,EAAE,OAAO,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAQzG;AAED,wGAAwG;AACxG,wBAAsB,WAAW,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC;IAAE,EAAE,EAAE,OAAO,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAUvH;AAID,MAAM,WAAW,YAAY;IAC3B,QAAQ,EAAE,MAAM,CAAA;IAChB,KAAK,EAAE,MAAM,CAAA;CACd;AAED,eAAO,MAAM,cAAc,EAAE,YAAY,EAGxC,CAAA;AAED,wBAAgB,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAErD;AAED,wBAAgB,SAAS,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAElD;AAED,wBAAgB,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG;IAAE,aAAa,EAAE,MAAM,CAAC;IAAC,cAAc,EAAE,OAAO,CAAA;CAAE,CAOpG"}
|
|
@@ -0,0 +1,275 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// Setup-mode helpers: TTY prompts, config IO, settings.json merging, claude CLI wrapper,
|
|
3
|
+
// template resolution. Used by install/update/uninstall flows.
|
|
4
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
5
|
+
if (k2 === undefined) k2 = k;
|
|
6
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
7
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
8
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
9
|
+
}
|
|
10
|
+
Object.defineProperty(o, k2, desc);
|
|
11
|
+
}) : (function(o, m, k, k2) {
|
|
12
|
+
if (k2 === undefined) k2 = k;
|
|
13
|
+
o[k2] = m[k];
|
|
14
|
+
}));
|
|
15
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
16
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
17
|
+
}) : function(o, v) {
|
|
18
|
+
o["default"] = v;
|
|
19
|
+
});
|
|
20
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
21
|
+
var ownKeys = function(o) {
|
|
22
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
23
|
+
var ar = [];
|
|
24
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
25
|
+
return ar;
|
|
26
|
+
};
|
|
27
|
+
return ownKeys(o);
|
|
28
|
+
};
|
|
29
|
+
return function (mod) {
|
|
30
|
+
if (mod && mod.__esModule) return mod;
|
|
31
|
+
var result = {};
|
|
32
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
33
|
+
__setModuleDefault(result, mod);
|
|
34
|
+
return result;
|
|
35
|
+
};
|
|
36
|
+
})();
|
|
37
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
38
|
+
exports.HOOK_TEMPLATES = exports.MCP_SERVER_NAME = exports.MANAGED_BY_MARKER = exports.CLAUDE_SETTINGS = exports.CLAUDE_JSON = exports.CLAUDE_DIR = exports.EML_HOOKS_DIR = exports.EML_CONFIG = exports.EML_DIR = exports.HOME_DIR = void 0;
|
|
39
|
+
exports.pkgRoot = pkgRoot;
|
|
40
|
+
exports.pkgVersion = pkgVersion;
|
|
41
|
+
exports.templatesDir = templatesDir;
|
|
42
|
+
exports.promptText = promptText;
|
|
43
|
+
exports.promptConfirm = promptConfirm;
|
|
44
|
+
exports.readConfig = readConfig;
|
|
45
|
+
exports.writeConfig = writeConfig;
|
|
46
|
+
exports.readSettings = readSettings;
|
|
47
|
+
exports.backupSettings = backupSettings;
|
|
48
|
+
exports.writeSettings = writeSettings;
|
|
49
|
+
exports.mergePermission = mergePermission;
|
|
50
|
+
exports.removePermissions = removePermissions;
|
|
51
|
+
exports.mergeHookCommand = mergeHookCommand;
|
|
52
|
+
exports.removeHooksByCommandPrefix = removeHooksByCommandPrefix;
|
|
53
|
+
exports.claudeCli = claudeCli;
|
|
54
|
+
exports.claudeCliExists = claudeCliExists;
|
|
55
|
+
exports.verifyHealth = verifyHealth;
|
|
56
|
+
exports.verifyToken = verifyToken;
|
|
57
|
+
exports.readTemplate = readTemplate;
|
|
58
|
+
exports.hasMarker = hasMarker;
|
|
59
|
+
exports.installTemplate = installTemplate;
|
|
60
|
+
const fs = __importStar(require("fs"));
|
|
61
|
+
const path = __importStar(require("path"));
|
|
62
|
+
const readline = __importStar(require("readline"));
|
|
63
|
+
const child_process_1 = require("child_process");
|
|
64
|
+
// --- Paths ----------------------------------------------------------------
|
|
65
|
+
exports.HOME_DIR = process.env.HOME || process.env.USERPROFILE || '';
|
|
66
|
+
exports.EML_DIR = path.join(exports.HOME_DIR, '.eml');
|
|
67
|
+
exports.EML_CONFIG = path.join(exports.EML_DIR, 'config');
|
|
68
|
+
exports.EML_HOOKS_DIR = path.join(exports.EML_DIR, 'hooks');
|
|
69
|
+
exports.CLAUDE_DIR = path.join(exports.HOME_DIR, '.claude');
|
|
70
|
+
exports.CLAUDE_JSON = path.join(exports.HOME_DIR, '.claude.json');
|
|
71
|
+
exports.CLAUDE_SETTINGS = path.join(exports.CLAUDE_DIR, 'settings.json');
|
|
72
|
+
exports.MANAGED_BY_MARKER = 'engramprotocol-setup';
|
|
73
|
+
// MCP-server-name registered with Claude Code. Hardcoded per v0.10.0-PROPOSAL B.1.
|
|
74
|
+
exports.MCP_SERVER_NAME = 'engramprotocol';
|
|
75
|
+
// --- Package introspection ------------------------------------------------
|
|
76
|
+
/** Resolve the package's own root (where templates/ lives). Works from dist/. */
|
|
77
|
+
function pkgRoot() {
|
|
78
|
+
// CommonJS: __dirname → .../packages/mcp-server/dist/setup
|
|
79
|
+
// pkg root is two levels up
|
|
80
|
+
return path.resolve(__dirname, '..', '..');
|
|
81
|
+
}
|
|
82
|
+
function pkgVersion() {
|
|
83
|
+
const pkgPath = path.join(pkgRoot(), 'package.json');
|
|
84
|
+
const raw = JSON.parse(fs.readFileSync(pkgPath, 'utf-8'));
|
|
85
|
+
return raw.version || '0.0.0';
|
|
86
|
+
}
|
|
87
|
+
function templatesDir() {
|
|
88
|
+
return path.join(pkgRoot(), 'templates');
|
|
89
|
+
}
|
|
90
|
+
// --- TTY prompts ----------------------------------------------------------
|
|
91
|
+
async function promptText(question) {
|
|
92
|
+
const rl = readline.createInterface({ input: process.stdin, output: process.stderr });
|
|
93
|
+
return new Promise((resolve) => {
|
|
94
|
+
rl.question(question, (answer) => {
|
|
95
|
+
rl.close();
|
|
96
|
+
resolve(answer.trim());
|
|
97
|
+
});
|
|
98
|
+
});
|
|
99
|
+
}
|
|
100
|
+
async function promptConfirm(question, defaultYes = false) {
|
|
101
|
+
const suffix = defaultYes ? '[Y/n]' : '[y/N]';
|
|
102
|
+
const answer = await promptText(`${question} ${suffix} `);
|
|
103
|
+
if (!answer)
|
|
104
|
+
return defaultYes;
|
|
105
|
+
return /^y(es)?$/i.test(answer);
|
|
106
|
+
}
|
|
107
|
+
function readConfig() {
|
|
108
|
+
if (!fs.existsSync(exports.EML_CONFIG))
|
|
109
|
+
return null;
|
|
110
|
+
const raw = fs.readFileSync(exports.EML_CONFIG, 'utf-8');
|
|
111
|
+
const out = {};
|
|
112
|
+
for (const line of raw.split('\n')) {
|
|
113
|
+
const trimmed = line.trim();
|
|
114
|
+
if (!trimmed || trimmed.startsWith('#'))
|
|
115
|
+
continue;
|
|
116
|
+
const eq = trimmed.indexOf('=');
|
|
117
|
+
if (eq < 0)
|
|
118
|
+
continue;
|
|
119
|
+
const key = trimmed.slice(0, eq).trim();
|
|
120
|
+
const value = trimmed.slice(eq + 1).trim();
|
|
121
|
+
if (key === 'EML_URL' || key === 'EML_API_TOKEN' || key === 'EML_CLIENT_VERSION') {
|
|
122
|
+
out[key] = value;
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
return out;
|
|
126
|
+
}
|
|
127
|
+
function writeConfig(cfg) {
|
|
128
|
+
fs.mkdirSync(exports.EML_DIR, { recursive: true });
|
|
129
|
+
const lines = [
|
|
130
|
+
'# EML config — managed by engramprotocol-setup. Edit with care.',
|
|
131
|
+
`EML_URL=${cfg.EML_URL || ''}`,
|
|
132
|
+
`EML_API_TOKEN=${cfg.EML_API_TOKEN || ''}`,
|
|
133
|
+
`EML_CLIENT_VERSION=${cfg.EML_CLIENT_VERSION || ''}`,
|
|
134
|
+
'',
|
|
135
|
+
];
|
|
136
|
+
fs.writeFileSync(exports.EML_CONFIG, lines.join('\n'), { mode: 0o600 });
|
|
137
|
+
}
|
|
138
|
+
function readSettings() {
|
|
139
|
+
if (!fs.existsSync(exports.CLAUDE_SETTINGS))
|
|
140
|
+
return {};
|
|
141
|
+
const raw = fs.readFileSync(exports.CLAUDE_SETTINGS, 'utf-8');
|
|
142
|
+
try {
|
|
143
|
+
return JSON.parse(raw);
|
|
144
|
+
}
|
|
145
|
+
catch (err) {
|
|
146
|
+
const e = err;
|
|
147
|
+
throw new Error(`Invalid JSON in ${exports.CLAUDE_SETTINGS}: ${e.message}`);
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
function backupSettings() {
|
|
151
|
+
if (!fs.existsSync(exports.CLAUDE_SETTINGS))
|
|
152
|
+
return '';
|
|
153
|
+
const ts = new Date().toISOString().replace(/[:.]/g, '-').replace('T', '-').slice(0, 19);
|
|
154
|
+
const backupPath = `${exports.CLAUDE_SETTINGS}.pre-eml-install-${ts}.bak`;
|
|
155
|
+
fs.copyFileSync(exports.CLAUDE_SETTINGS, backupPath);
|
|
156
|
+
return backupPath;
|
|
157
|
+
}
|
|
158
|
+
function writeSettings(settings) {
|
|
159
|
+
fs.mkdirSync(exports.CLAUDE_DIR, { recursive: true });
|
|
160
|
+
const tmp = `${exports.CLAUDE_SETTINGS}.tmp-${process.pid}`;
|
|
161
|
+
fs.writeFileSync(tmp, JSON.stringify(settings, null, 2) + '\n');
|
|
162
|
+
fs.renameSync(tmp, exports.CLAUDE_SETTINGS);
|
|
163
|
+
}
|
|
164
|
+
// --- Permissions merge ----------------------------------------------------
|
|
165
|
+
/** Add a permission entry to settings.permissions.allow if not already present. */
|
|
166
|
+
function mergePermission(settings, entry) {
|
|
167
|
+
if (!settings.permissions)
|
|
168
|
+
settings.permissions = {};
|
|
169
|
+
if (!Array.isArray(settings.permissions.allow))
|
|
170
|
+
settings.permissions.allow = [];
|
|
171
|
+
const allow = settings.permissions.allow;
|
|
172
|
+
if (allow.includes(entry))
|
|
173
|
+
return false;
|
|
174
|
+
allow.push(entry);
|
|
175
|
+
return true;
|
|
176
|
+
}
|
|
177
|
+
/** Remove permission entries matching the predicate. Returns count removed. */
|
|
178
|
+
function removePermissions(settings, predicate) {
|
|
179
|
+
if (!settings.permissions || !Array.isArray(settings.permissions.allow))
|
|
180
|
+
return 0;
|
|
181
|
+
const before = settings.permissions.allow.length;
|
|
182
|
+
settings.permissions.allow = settings.permissions.allow.filter((e) => !predicate(e));
|
|
183
|
+
return before - settings.permissions.allow.length;
|
|
184
|
+
}
|
|
185
|
+
/** Add a command-hook to settings.hooks.<event>[] if no existing entry references the same command. */
|
|
186
|
+
function mergeHookCommand(settings, event, command) {
|
|
187
|
+
if (!settings.hooks)
|
|
188
|
+
settings.hooks = {};
|
|
189
|
+
if (!Array.isArray(settings.hooks[event]))
|
|
190
|
+
settings.hooks[event] = [];
|
|
191
|
+
const events = settings.hooks[event];
|
|
192
|
+
const already = events.some((e) => Array.isArray(e.hooks) && e.hooks.some((h) => h.command === command));
|
|
193
|
+
if (already)
|
|
194
|
+
return false;
|
|
195
|
+
events.push({ hooks: [{ type: 'command', command }] });
|
|
196
|
+
return true;
|
|
197
|
+
}
|
|
198
|
+
/** Remove hook entries whose command starts with the given prefix (e.g. `$HOME/.eml/hooks/`). Returns count removed. */
|
|
199
|
+
function removeHooksByCommandPrefix(settings, prefix) {
|
|
200
|
+
if (!settings.hooks)
|
|
201
|
+
return 0;
|
|
202
|
+
let removed = 0;
|
|
203
|
+
for (const event of Object.keys(settings.hooks)) {
|
|
204
|
+
const entries = settings.hooks[event];
|
|
205
|
+
if (!Array.isArray(entries))
|
|
206
|
+
continue;
|
|
207
|
+
const kept = entries.filter((entry) => {
|
|
208
|
+
const matches = Array.isArray(entry.hooks) && entry.hooks.some((h) => h.command.includes(prefix));
|
|
209
|
+
if (matches)
|
|
210
|
+
removed += 1;
|
|
211
|
+
return !matches;
|
|
212
|
+
});
|
|
213
|
+
settings.hooks[event] = kept;
|
|
214
|
+
if (kept.length === 0)
|
|
215
|
+
delete settings.hooks[event];
|
|
216
|
+
}
|
|
217
|
+
return removed;
|
|
218
|
+
}
|
|
219
|
+
// --- claude CLI wrapper ---------------------------------------------------
|
|
220
|
+
function claudeCli(args) {
|
|
221
|
+
const result = (0, child_process_1.spawnSync)('claude', args, { encoding: 'utf-8' });
|
|
222
|
+
return {
|
|
223
|
+
stdout: result.stdout || '',
|
|
224
|
+
stderr: result.stderr || '',
|
|
225
|
+
status: typeof result.status === 'number' ? result.status : 1,
|
|
226
|
+
};
|
|
227
|
+
}
|
|
228
|
+
function claudeCliExists() {
|
|
229
|
+
const result = (0, child_process_1.spawnSync)('claude', ['--version'], { encoding: 'utf-8' });
|
|
230
|
+
return typeof result.status === 'number' && result.status === 0;
|
|
231
|
+
}
|
|
232
|
+
// --- HTTP checks ----------------------------------------------------------
|
|
233
|
+
/** Unauthenticated reachability check — "is the server alive?". */
|
|
234
|
+
async function verifyHealth(url) {
|
|
235
|
+
try {
|
|
236
|
+
const res = await fetch(`${url.replace(/\/$/, '')}/health`);
|
|
237
|
+
return { ok: res.ok, status: res.status };
|
|
238
|
+
}
|
|
239
|
+
catch (err) {
|
|
240
|
+
const e = err;
|
|
241
|
+
return { ok: false, error: e.message };
|
|
242
|
+
}
|
|
243
|
+
}
|
|
244
|
+
/** Authenticated round-trip — "does this token work?". Uses GET /stats (lightweight, auth-required). */
|
|
245
|
+
async function verifyToken(url, token) {
|
|
246
|
+
try {
|
|
247
|
+
const res = await fetch(`${url.replace(/\/$/, '')}/stats`, {
|
|
248
|
+
headers: { Authorization: `Bearer ${token}` },
|
|
249
|
+
});
|
|
250
|
+
return { ok: res.ok, status: res.status };
|
|
251
|
+
}
|
|
252
|
+
catch (err) {
|
|
253
|
+
const e = err;
|
|
254
|
+
return { ok: false, error: e.message };
|
|
255
|
+
}
|
|
256
|
+
}
|
|
257
|
+
exports.HOOK_TEMPLATES = [
|
|
258
|
+
{ filename: 'session_start_boot.sh', event: 'SessionStart' },
|
|
259
|
+
{ filename: 'user_prompt_submit_reminder.sh', event: 'UserPromptSubmit' },
|
|
260
|
+
];
|
|
261
|
+
function readTemplate(filename) {
|
|
262
|
+
return fs.readFileSync(path.join(templatesDir(), 'hooks', filename), 'utf-8');
|
|
263
|
+
}
|
|
264
|
+
function hasMarker(content) {
|
|
265
|
+
return content.includes(exports.MANAGED_BY_MARKER);
|
|
266
|
+
}
|
|
267
|
+
function installTemplate(filename) {
|
|
268
|
+
fs.mkdirSync(exports.EML_HOOKS_DIR, { recursive: true });
|
|
269
|
+
const installedPath = path.join(exports.EML_HOOKS_DIR, filename);
|
|
270
|
+
const alreadyExisted = fs.existsSync(installedPath);
|
|
271
|
+
const content = readTemplate(filename);
|
|
272
|
+
fs.writeFileSync(installedPath, content, { mode: 0o755 });
|
|
273
|
+
return { installedPath, alreadyExisted };
|
|
274
|
+
}
|
|
275
|
+
//# sourceMappingURL=_helpers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"_helpers.js","sourceRoot":"","sources":["../../src/setup/_helpers.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/setup/index.ts"],"names":[],"mappings":"AAqBA,wBAAsB,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CA4B5D"}
|