@engramprotocol/mcp-server 0.10.6 → 0.10.7
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 +5 -5
- package/dist/setup/index.js +1 -1
- package/dist/setup/install.js +2 -2
- package/dist/setup/install.js.map +1 -1
- package/dist/setup/uninstall.js +1 -1
- package/dist/setup/uninstall.js.map +1 -1
- package/dist/setup/update.d.ts.map +1 -1
- package/dist/setup/update.js +91 -21
- package/dist/setup/update.js.map +1 -1
- package/package.json +1 -1
- package/templates/hooks/session_start_boot.sh +33 -7
package/README.md
CHANGED
|
@@ -8,7 +8,7 @@ Request an API token: **parsley_22bonds@icloud.com**
|
|
|
8
8
|
|
|
9
9
|
```bash
|
|
10
10
|
EML_API_TOKEN=eml_<prefix><secret> \
|
|
11
|
-
npx @engramprotocol/mcp-server setup install
|
|
11
|
+
npx --prefer-online @engramprotocol/mcp-server@latest setup install
|
|
12
12
|
```
|
|
13
13
|
|
|
14
14
|
The installer:
|
|
@@ -18,7 +18,7 @@ The installer:
|
|
|
18
18
|
- Adds two hooks to `~/.claude/settings.json` (see [Hooks](#hooks) below):
|
|
19
19
|
- **SessionStart** → loads your brain at session start (identity, rules, decisions, status, tasks, protocol conventions)
|
|
20
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)
|
|
21
|
+
- Adds two permissions: `mcp__engramprotocol__*` (skip per-call prompt for EML tools) and `Bash(npx --prefer-online @engramprotocol/mcp-server@latest setup *)` (let the agent auto-execute `setup update` when prompted)
|
|
22
22
|
- Performs a final `/stats` round-trip as smoke test
|
|
23
23
|
|
|
24
24
|
A backup of `~/.claude/settings.json` is created first (pattern `.pre-eml-install-YYYY-MM-DD-HH-MM-SS.bak`).
|
|
@@ -26,7 +26,7 @@ A backup of `~/.claude/settings.json` is created first (pattern `.pre-eml-instal
|
|
|
26
26
|
### Update
|
|
27
27
|
|
|
28
28
|
```bash
|
|
29
|
-
npx @engramprotocol/mcp-server@latest setup update
|
|
29
|
+
npx --prefer-online @engramprotocol/mcp-server@latest setup update
|
|
30
30
|
```
|
|
31
31
|
|
|
32
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.
|
|
@@ -34,7 +34,7 @@ Refreshes hook templates (marker-aware — preserves files you customised), bump
|
|
|
34
34
|
### Uninstall
|
|
35
35
|
|
|
36
36
|
```bash
|
|
37
|
-
npx @engramprotocol/mcp-server setup uninstall
|
|
37
|
+
npx --prefer-online @engramprotocol/mcp-server@latest setup uninstall
|
|
38
38
|
```
|
|
39
39
|
|
|
40
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).
|
|
@@ -57,7 +57,7 @@ Two bash hooks land in `~/.eml/hooks/`:
|
|
|
57
57
|
|
|
58
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.
|
|
59
59
|
|
|
60
|
-
## Tools (v0.10.
|
|
60
|
+
## Tools (v0.10.7)
|
|
61
61
|
|
|
62
62
|
All tools have an `eml_` prefix. Total: **17 tools**.
|
|
63
63
|
|
package/dist/setup/index.js
CHANGED
|
@@ -41,7 +41,7 @@ var __importStar = (this && this.__importStar) || (function () {
|
|
|
41
41
|
})();
|
|
42
42
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
43
43
|
exports.runSetup = runSetup;
|
|
44
|
-
const HELP = `npx @engramprotocol/mcp-server setup [install|update|uninstall]
|
|
44
|
+
const HELP = `npx --prefer-online @engramprotocol/mcp-server@latest setup [install|update|uninstall]
|
|
45
45
|
|
|
46
46
|
Sub-commands:
|
|
47
47
|
install Initial setup: token prompt, config write, MCP registration, permissions, hooks. (default)
|
package/dist/setup/install.js
CHANGED
|
@@ -38,7 +38,7 @@ exports.runInstall = runInstall;
|
|
|
38
38
|
const fs = __importStar(require("fs"));
|
|
39
39
|
const _helpers_1 = require("./_helpers");
|
|
40
40
|
const API_URL = 'https://api.engramprotocol.io';
|
|
41
|
-
const BASH_PERMISSION = `Bash(npx @engramprotocol/${_helpers_1.MCP_SERVER_NAME === 'engramprotocol' ? 'mcp-server' : _helpers_1.MCP_SERVER_NAME} setup *)`;
|
|
41
|
+
const BASH_PERMISSION = `Bash(npx --prefer-online @engramprotocol/${_helpers_1.MCP_SERVER_NAME === 'engramprotocol' ? 'mcp-server' : _helpers_1.MCP_SERVER_NAME}@latest setup *)`;
|
|
42
42
|
const MCP_PERMISSION = `mcp__${_helpers_1.MCP_SERVER_NAME}__*`;
|
|
43
43
|
function log(msg) {
|
|
44
44
|
process.stderr.write(msg + '\n');
|
|
@@ -235,7 +235,7 @@ Hooks installed in: ${_helpers_1.EML_HOOKS_DIR}
|
|
|
235
235
|
Config: ${_helpers_1.EML_CONFIG}
|
|
236
236
|
Marker: # ${_helpers_1.MANAGED_BY_MARKER} (line 2 of each hook script + on managed entries)
|
|
237
237
|
|
|
238
|
-
To reverse: \`npx @engramprotocol/mcp-server setup uninstall\`
|
|
238
|
+
To reverse: \`npx --prefer-online @engramprotocol/mcp-server@latest setup uninstall\`
|
|
239
239
|
`);
|
|
240
240
|
}
|
|
241
241
|
//# sourceMappingURL=install.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"install.js","sourceRoot":"","sources":["../../src/setup/install.ts"],"names":[],"mappings":";AAAA,mEAAmE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAyMnE,gCAyCC;AAhPD,uCAAwB;AACxB,yCAqBmB;AAEnB,MAAM,OAAO,GAAG,+BAA+B,CAAA;AAC/C,MAAM,eAAe,GAAG,
|
|
1
|
+
{"version":3,"file":"install.js","sourceRoot":"","sources":["../../src/setup/install.ts"],"names":[],"mappings":"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"}
|
package/dist/setup/uninstall.js
CHANGED
|
@@ -45,7 +45,7 @@ function log(msg) {
|
|
|
45
45
|
process.stderr.write(msg + '\n');
|
|
46
46
|
}
|
|
47
47
|
const MCP_PERMISSION = `mcp__${_helpers_1.MCP_SERVER_NAME}__*`;
|
|
48
|
-
const BASH_PERMISSION = `Bash(npx @engramprotocol/mcp-server setup *)`;
|
|
48
|
+
const BASH_PERMISSION = `Bash(npx --prefer-online @engramprotocol/mcp-server@latest setup *)`;
|
|
49
49
|
async function runUninstall(_argv) {
|
|
50
50
|
log('Engram Protocol — Setup (uninstall)\n');
|
|
51
51
|
log('Will remove:');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"uninstall.js","sourceRoot":"","sources":["../../src/setup/uninstall.ts"],"names":[],"mappings":";AAAA,8EAA8E;AAC9E,EAAE;AACF,iFAAiF;AACjF,sFAAsF;AACtF,0EAA0E;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAyB1E,oCAiFC;AAxGD,uCAAwB;AACxB,yCAamB;AAEnB,SAAS,GAAG,CAAC,GAAW;IACtB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,GAAG,IAAI,CAAC,CAAA;AAClC,CAAC;AAED,MAAM,cAAc,GAAG,QAAQ,0BAAe,KAAK,CAAA;AACnD,MAAM,eAAe,GAAG,
|
|
1
|
+
{"version":3,"file":"uninstall.js","sourceRoot":"","sources":["../../src/setup/uninstall.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"update.d.ts","sourceRoot":"","sources":["../../src/setup/update.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"update.d.ts","sourceRoot":"","sources":["../../src/setup/update.ts"],"names":[],"mappings":"AAwFA,wBAAsB,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAuJ9D"}
|
package/dist/setup/update.js
CHANGED
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
//
|
|
11
11
|
// What this does NOT do:
|
|
12
12
|
// - Refresh the npm package itself. That's the user's responsibility (typically via
|
|
13
|
-
// `npx @engramprotocol/mcp-server@latest setup update` to bust npx cache).
|
|
13
|
+
// `npx --prefer-online @engramprotocol/mcp-server@latest setup update` to bust npx cache).
|
|
14
14
|
// If the package version hasn't changed when `setup update` runs, it's a no-op
|
|
15
15
|
// except for config-bump and template-overwrite (idempotent).
|
|
16
16
|
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
@@ -57,6 +57,38 @@ function fail(msg, code = 1) {
|
|
|
57
57
|
log(`\n❌ ${msg}`);
|
|
58
58
|
process.exit(code);
|
|
59
59
|
}
|
|
60
|
+
function readLiveRegistration() {
|
|
61
|
+
const res = (0, _helpers_1.claudeCli)(['mcp', 'get', _helpers_1.MCP_SERVER_NAME]);
|
|
62
|
+
if (res.status !== 0)
|
|
63
|
+
return null;
|
|
64
|
+
const out = res.stdout;
|
|
65
|
+
const token = /EML_API_TOKEN=(\S+)/.exec(out)?.[1];
|
|
66
|
+
const url = /--url\s+(\S+)/.exec(out)?.[1];
|
|
67
|
+
const command = /Command:\s*(\S+)/.exec(out)?.[1];
|
|
68
|
+
const argsLine = /Args:\s*(.+)/.exec(out)?.[1];
|
|
69
|
+
const scope = /Scope:\s*(\w+)/i.exec(out)?.[1]?.toLowerCase() ?? 'user';
|
|
70
|
+
return {
|
|
71
|
+
token,
|
|
72
|
+
url,
|
|
73
|
+
command,
|
|
74
|
+
args: argsLine ? argsLine.trim().split(/\s+/) : undefined,
|
|
75
|
+
scope,
|
|
76
|
+
};
|
|
77
|
+
}
|
|
78
|
+
// Reconstruct the `claude mcp add` invocation that restores a prior registration —
|
|
79
|
+
// used to roll back if the new `add` fails after we have already removed the old one.
|
|
80
|
+
function rollbackAddArgs(live, token) {
|
|
81
|
+
const command = live.command || 'npx';
|
|
82
|
+
const args = live.args || ['--prefer-online', '@engramprotocol/mcp-server@latest', '--url', live.url || ''];
|
|
83
|
+
return [
|
|
84
|
+
'mcp', 'add', _helpers_1.MCP_SERVER_NAME,
|
|
85
|
+
'--scope', live.scope || 'user',
|
|
86
|
+
'--transport', 'stdio',
|
|
87
|
+
'--env', `EML_API_TOKEN=${token}`,
|
|
88
|
+
'--',
|
|
89
|
+
command, ...args,
|
|
90
|
+
];
|
|
91
|
+
}
|
|
60
92
|
async function runUpdate(_argv) {
|
|
61
93
|
log('Engram Protocol — Setup (update)');
|
|
62
94
|
// --- 1. Read existing config ---------------------------------------------
|
|
@@ -92,34 +124,72 @@ async function runUpdate(_argv) {
|
|
|
92
124
|
(0, _helpers_1.installTemplate)(tpl.filename);
|
|
93
125
|
log(` ✓ ${installedPath}`);
|
|
94
126
|
}
|
|
95
|
-
// --- 4. Re-register claude mcp (
|
|
127
|
+
// --- 4. Re-register claude mcp (safe: verify-before-touch + rollback) -----
|
|
128
|
+
// `claude mcp` has no edit command, so changing the registration means
|
|
129
|
+
// remove + add. The danger (which broke a user on 2026-06-02) is doing that
|
|
130
|
+
// unconditionally with a token taken blindly from config: a stale config token
|
|
131
|
+
// silently clobbers a working registration. So: read the live token, verify it
|
|
132
|
+
// BEFORE touching anything, and roll back / fail loudly if anything goes wrong.
|
|
96
133
|
log('\nMCP server re-registration:');
|
|
97
|
-
if ((0, _helpers_1.claudeCliExists)()) {
|
|
98
|
-
(
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
134
|
+
if (!(0, _helpers_1.claudeCliExists)()) {
|
|
135
|
+
log(' ⚠ claude CLI not found — skipped re-registration');
|
|
136
|
+
}
|
|
137
|
+
else {
|
|
138
|
+
const live = readLiveRegistration();
|
|
139
|
+
// Source of truth for the token is the live registration (what works), with
|
|
140
|
+
// ~/.eml/config as fallback only when there is no live registration to read.
|
|
141
|
+
const token = live?.token ?? cfg.EML_API_TOKEN;
|
|
142
|
+
const url = live?.url ?? cfg.EML_URL;
|
|
143
|
+
if (live?.token && cfg.EML_API_TOKEN && live.token !== cfg.EML_API_TOKEN) {
|
|
144
|
+
log(' ⚠ Live registration token differs from ~/.eml/config — keeping the live (working) token and syncing config to it.');
|
|
145
|
+
}
|
|
146
|
+
// Verify BEFORE we remove anything. Never tear down a working setup to
|
|
147
|
+
// re-install a token we have not confirmed.
|
|
148
|
+
const pre = await (0, _helpers_1.verifyToken)(url, token);
|
|
149
|
+
if (!pre.ok && pre.status === 401) {
|
|
150
|
+
fail(`Current token is rejected by ${url} (401). Your registration was left untouched.\n Run \`npx --prefer-online @engramprotocol/mcp-server@latest setup install\` to re-authenticate with a valid token.`);
|
|
151
|
+
}
|
|
152
|
+
else if (!pre.ok) {
|
|
153
|
+
// Transient/network failure — do NOT risk clobbering a working registration.
|
|
154
|
+
log(` ⚠ Could not verify token (${pre.error ?? `HTTP ${pre.status}`}). Skipping re-registration to avoid breaking a working setup — re-run \`npx --prefer-online @engramprotocol/mcp-server@latest setup update\` once the server is reachable.`);
|
|
111
155
|
}
|
|
112
156
|
else {
|
|
113
|
-
|
|
157
|
+
// Token confirmed good. Sync config to the live token so the two stop drifting.
|
|
158
|
+
if (live?.token && live.token !== cfg.EML_API_TOKEN) {
|
|
159
|
+
(0, _helpers_1.writeConfig)({ ...cfg, EML_API_TOKEN: live.token, EML_CLIENT_VERSION: newVersion });
|
|
160
|
+
}
|
|
161
|
+
(0, _helpers_1.claudeCli)(['mcp', 'remove', _helpers_1.MCP_SERVER_NAME]);
|
|
162
|
+
const added = (0, _helpers_1.claudeCli)([
|
|
163
|
+
'mcp', 'add', _helpers_1.MCP_SERVER_NAME,
|
|
164
|
+
'--scope', 'user',
|
|
165
|
+
'--transport', 'stdio',
|
|
166
|
+
'--env', `EML_API_TOKEN=${token}`,
|
|
167
|
+
'--',
|
|
168
|
+
'npx', '--prefer-online', '@engramprotocol/mcp-server@latest',
|
|
169
|
+
'--url', url,
|
|
170
|
+
]);
|
|
171
|
+
if (added.status !== 0) {
|
|
172
|
+
// We already removed the old entry — try to restore it so we don't leave
|
|
173
|
+
// the user with no registration at all.
|
|
174
|
+
let restored = false;
|
|
175
|
+
if (live) {
|
|
176
|
+
restored = (0, _helpers_1.claudeCli)(rollbackAddArgs(live, token)).status === 0;
|
|
177
|
+
}
|
|
178
|
+
fail(`Re-registration failed (exit ${added.status}): ${added.stderr || added.stdout}\n ${restored ? 'Previous registration was restored.' : 'Could not auto-restore — run `npx --prefer-online @engramprotocol/mcp-server@latest setup install` to repair.'}`);
|
|
179
|
+
}
|
|
180
|
+
// Smoke-test AFTER add, exactly as install does — catch a broken re-register
|
|
181
|
+
// loudly instead of printing success over a dead registration.
|
|
182
|
+
const post = await (0, _helpers_1.verifyToken)(url, token);
|
|
183
|
+
if (!post.ok) {
|
|
184
|
+
fail(`Re-registered, but verification failed (${post.error ?? `HTTP ${post.status}`}). Run \`npx --prefer-online @engramprotocol/mcp-server@latest setup install\` to repair.`);
|
|
185
|
+
}
|
|
186
|
+
log(' ✓ Re-registered with --prefer-online @latest, token verified');
|
|
114
187
|
}
|
|
115
188
|
}
|
|
116
|
-
else {
|
|
117
|
-
log(' ⚠ claude CLI not found — skipped re-registration');
|
|
118
|
-
}
|
|
119
189
|
// --- 5. Settings.json sanity check ---------------------------------------
|
|
120
190
|
log('\nSettings.json sanity check:');
|
|
121
191
|
if (!fs.existsSync(_helpers_1.CLAUDE_SETTINGS)) {
|
|
122
|
-
log(` ⚠ ${_helpers_1.CLAUDE_SETTINGS} missing — was the install completed? Run \`setup install\` again.`);
|
|
192
|
+
log(` ⚠ ${_helpers_1.CLAUDE_SETTINGS} missing — was the install completed? Run \`npx --prefer-online @engramprotocol/mcp-server@latest setup install\` again.`);
|
|
123
193
|
}
|
|
124
194
|
else {
|
|
125
195
|
const settings = (0, _helpers_1.readSettings)();
|
package/dist/setup/update.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"update.js","sourceRoot":"","sources":["../../src/setup/update.ts"],"names":[],"mappings":";AAAA,wEAAwE;AACxE,EAAE;AACF,kBAAkB;AAClB,qFAAqF;AACrF,0EAA0E;AAC1E,uFAAuF;AACvF,mFAAmF;AACnF,0EAA0E;AAC1E,EAAE;AACF,yBAAyB;AACzB,sFAAsF;AACtF,+
|
|
1
|
+
{"version":3,"file":"update.js","sourceRoot":"","sources":["../../src/setup/update.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@engramprotocol/mcp-server",
|
|
3
|
-
"version": "0.10.
|
|
3
|
+
"version": "0.10.7",
|
|
4
4
|
"description": "MCP wrapper for the EML HTTP API — exposes the Engram Protocol as MCP tools for Claude Code and other MCP clients. Includes setup-mode for one-shot install/update/uninstall.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"main": "dist/server.js",
|
|
@@ -23,11 +23,22 @@ echo "[$TS] fired (pid=$$) stdin=$STDIN" >> "$LOG_FILE"
|
|
|
23
23
|
|
|
24
24
|
# --- 3. Config check + source ----------------------------------------------
|
|
25
25
|
if [ ! -f "$CONFIG" ]; then
|
|
26
|
-
echo "⚠️ EML config missing at $CONFIG — run 'npx @engramprotocol/mcp-server setup'"
|
|
26
|
+
echo "⚠️ EML config missing at $CONFIG — run 'npx --prefer-online @engramprotocol/mcp-server@latest setup install'"
|
|
27
27
|
echo "[$TS] FAIL config missing" >> "$LOG_FILE"
|
|
28
28
|
exit 0
|
|
29
29
|
fi
|
|
30
|
-
.
|
|
30
|
+
# Parse config as DATA — never `source`/`.` it. Sourcing executes the file as a
|
|
31
|
+
# shell script, so any unexpected content (corruption, tampering, a stray shell
|
|
32
|
+
# metachar in a value) would run as code at every session start. Read key=value
|
|
33
|
+
# lines and assign only the known keys instead.
|
|
34
|
+
EML_URL='' ; EML_API_TOKEN='' ; EML_CLIENT_VERSION=''
|
|
35
|
+
while IFS='=' read -r _k _v; do
|
|
36
|
+
case "$_k" in
|
|
37
|
+
EML_URL) EML_URL="$_v" ;;
|
|
38
|
+
EML_API_TOKEN) EML_API_TOKEN="$_v" ;;
|
|
39
|
+
EML_CLIENT_VERSION) EML_CLIENT_VERSION="$_v" ;;
|
|
40
|
+
esac
|
|
41
|
+
done < "$CONFIG"
|
|
31
42
|
|
|
32
43
|
# --- 4. Sanity: required vars ----------------------------------------------
|
|
33
44
|
if [ -z "${EML_URL:-}" ] || [ -z "${EML_API_TOKEN:-}" ]; then
|
|
@@ -37,15 +48,30 @@ if [ -z "${EML_URL:-}" ] || [ -z "${EML_API_TOKEN:-}" ]; then
|
|
|
37
48
|
fi
|
|
38
49
|
|
|
39
50
|
# --- 5. Call /boot ---------------------------------------------------------
|
|
40
|
-
|
|
51
|
+
# Capture body + HTTP status separately so we can tell an invalid token (401/403)
|
|
52
|
+
# apart from the server being unreachable. A silent "brain not loaded" with no
|
|
53
|
+
# reason cost an hour of debugging on 2026-06-02 — never again.
|
|
54
|
+
BODY_FILE=$(mktemp)
|
|
55
|
+
HTTP_CODE=$(curl -sS -m 8 -o "$BODY_FILE" -w '%{http_code}' \
|
|
41
56
|
-H "Authorization: Bearer $EML_API_TOKEN" \
|
|
42
57
|
-H "Content-Type: application/json" \
|
|
43
58
|
-X POST -d '{}' \
|
|
44
|
-
"$EML_URL/boot" 2>>"$LOG_FILE") ||
|
|
45
|
-
|
|
46
|
-
|
|
59
|
+
"$EML_URL/boot" 2>>"$LOG_FILE") || HTTP_CODE="000"
|
|
60
|
+
RESPONSE=$(cat "$BODY_FILE")
|
|
61
|
+
rm -f "$BODY_FILE"
|
|
62
|
+
|
|
63
|
+
if [ "$HTTP_CODE" = "401" ] || [ "$HTTP_CODE" = "403" ]; then
|
|
64
|
+
echo "⚠️ EML brain NOT loaded — your token was rejected (HTTP $HTTP_CODE)."
|
|
65
|
+
echo " Your EML_API_TOKEN is invalid or revoked. Reconnect with one command:"
|
|
66
|
+
echo " npx --prefer-online @engramprotocol/mcp-server@latest setup install"
|
|
67
|
+
echo "[$TS] FAIL auth $HTTP_CODE" >> "$LOG_FILE"
|
|
68
|
+
exit 0
|
|
69
|
+
fi
|
|
70
|
+
if [ "$HTTP_CODE" != "200" ]; then
|
|
71
|
+
echo "⚠️ EML Boot failed — server unreachable or error (HTTP $HTTP_CODE). See $LOG_FILE"
|
|
72
|
+
echo "[$TS] FAIL http $HTTP_CODE" >> "$LOG_FILE"
|
|
47
73
|
exit 0
|
|
48
|
-
|
|
74
|
+
fi
|
|
49
75
|
|
|
50
76
|
# --- 6. Update-banner check ------------------------------------------------
|
|
51
77
|
SERVER_VER=$(echo "$RESPONSE" | jq -r '.version // empty')
|