@engramprotocol/mcp-server 0.10.5 → 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/cli.js +0 -0
- 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/dist/tools/boot.d.ts.map +1 -1
- package/dist/tools/boot.js +6 -3
- package/dist/tools/boot.js.map +1 -1
- package/dist/tools/decide.d.ts.map +1 -1
- package/dist/tools/decide.js +21 -13
- package/dist/tools/decide.js.map +1 -1
- package/dist/tools/entity.d.ts.map +1 -1
- package/dist/tools/entity.js +23 -17
- package/dist/tools/entity.js.map +1 -1
- package/dist/tools/get.d.ts.map +1 -1
- package/dist/tools/get.js +5 -4
- package/dist/tools/get.js.map +1 -1
- package/dist/tools/list.d.ts.map +1 -1
- package/dist/tools/list.js +16 -14
- package/dist/tools/list.js.map +1 -1
- package/dist/tools/note.d.ts.map +1 -1
- package/dist/tools/note.js +36 -17
- package/dist/tools/note.js.map +1 -1
- package/dist/tools/projects.d.ts.map +1 -1
- package/dist/tools/projects.js +30 -28
- package/dist/tools/projects.js.map +1 -1
- package/dist/tools/recall.d.ts.map +1 -1
- package/dist/tools/recall.js +8 -7
- package/dist/tools/recall.js.map +1 -1
- package/dist/tools/set-status.d.ts.map +1 -1
- package/dist/tools/set-status.js +13 -11
- package/dist/tools/set-status.js.map +1 -1
- package/dist/tools/show.d.ts +1 -1
- package/dist/tools/show.d.ts.map +1 -1
- package/dist/tools/show.js +9 -7
- package/dist/tools/show.js.map +1 -1
- package/dist/tools/stats.d.ts.map +1 -1
- package/dist/tools/stats.js +4 -3
- package/dist/tools/stats.js.map +1 -1
- package/dist/tools/track-task.d.ts.map +1 -1
- package/dist/tools/track-task.js +20 -13
- package/dist/tools/track-task.js.map +1 -1
- package/dist/tools/update.d.ts.map +1 -1
- package/dist/tools/update.js +16 -13
- package/dist/tools/update.js.map +1 -1
- package/package.json +8 -8
- package/templates/hooks/session_start_boot.sh +33 -7
- package/templates/hooks/user_prompt_submit_reminder.sh +0 -0
package/dist/tools/note.js
CHANGED
|
@@ -20,24 +20,43 @@ const STATUSES = ['planned', 'active', 'superseded', 'invalidated', 'expired', '
|
|
|
20
20
|
function registerNoteTool(server, http) {
|
|
21
21
|
server.registerTool('eml_note', {
|
|
22
22
|
title: 'Write Note',
|
|
23
|
-
description: '
|
|
24
|
-
'
|
|
25
|
-
'
|
|
26
|
-
'
|
|
23
|
+
description: 'Writes one of five secondary engram kinds (rule / profile / event / reference / ' +
|
|
24
|
+
'log). Use ONLY after ruling out decision (eml_decide), status (eml_set_status), ' +
|
|
25
|
+
'and task (eml_track_task) — see the `kind` picker.\n\n' +
|
|
26
|
+
'Common confusion — rule vs decision: a rule is something to FOLLOW ("always do ' +
|
|
27
|
+
'X"); a decision is a CHOICE made ("we chose X because Y").\n\n' +
|
|
28
|
+
'WHEN A MATCHING ACTIVE ENGRAM EXISTS:\n' +
|
|
29
|
+
'- Same thing, improved → refine it via eml_update (patch content).\n' +
|
|
30
|
+
'- Now wrong or replaced as the canonical version → supersede via ' +
|
|
31
|
+
'eml_update(status=superseded).\n' +
|
|
32
|
+
'- A distinct but still-valid related artifact (e.g. a later research update) → write ' +
|
|
33
|
+
'a NEW engram, keep the old one active, and reuse its subject to thread the series ' +
|
|
34
|
+
'(eml_list by subject retrieves the whole thread).\n' +
|
|
35
|
+
'Events are immutable — never superseded.',
|
|
27
36
|
inputSchema: {
|
|
28
|
-
kind: zod_1.z.enum(NOTE_KINDS).describe('Pick in order:\n' +
|
|
29
|
-
'1. Session
|
|
30
|
-
'2. Timestamped one-time occurrence (deploy, test, incident
|
|
31
|
-
'
|
|
32
|
-
'
|
|
33
|
-
'
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
'
|
|
37
|
+
kind: zod_1.z.enum(NOTE_KINDS).describe('Pick in order, first match wins:\n' +
|
|
38
|
+
'1. Session recap (max 1/session)? → log. Else never log.\n' +
|
|
39
|
+
'2. Timestamped one-time occurrence (deploy, test, incident)? → event ' +
|
|
40
|
+
'(REQUIRES occurred_at + change_type).\n' +
|
|
41
|
+
'3. A pointer to an external resource (URL, dashboard, doc) OR a standing knowledge ' +
|
|
42
|
+
'artifact — research note/synthesis, living tracker, working thesis/brief? → reference. ' +
|
|
43
|
+
'(reference = material to consult or a position to validate; a locked choice with ' +
|
|
44
|
+
'rationale is a decision.)\n' +
|
|
45
|
+
'4. Identity facet of an agent/user/entity? → profile (sparingly).\n' +
|
|
46
|
+
'5. Behavior convention you derived (user corrected/validated you, or a recurring ' +
|
|
47
|
+
'pattern)? → rule (REQUIRES enforcement: mandatory|recommended|advisory).'),
|
|
48
|
+
content: zod_1.z.string().describe('Per kind — rule: the rule then why · profile: short fact · event: what happened · ' +
|
|
49
|
+
'reference: title + purpose · log: session recap.'),
|
|
50
|
+
scope: zod_1.z.string().describe('Narrowest true scope: agent.<id> (self-rules/profile) · user.<id> · project.<id> · ' +
|
|
51
|
+
'entity.<id> · global (cross-cutting only).'),
|
|
52
|
+
subject: zod_1.z.string().optional().describe('Kebab-case recall anchor (rule: name the trigger; profile: the facet). ' +
|
|
53
|
+
'Reuse the same subject to thread a series (e.g. successive research updates).'),
|
|
54
|
+
status: zod_1.z.enum(STATUSES).optional().describe('Default active. Supersede rules via eml_update when refining.'),
|
|
55
|
+
significance: zod_1.z.enum(SIGNIFICANCE).optional().describe('critical = safety · high = load-bearing · normal = default · ' +
|
|
56
|
+
'low/trivial = reconsider storing.'),
|
|
57
|
+
properties: zod_1.z.record(zod_1.z.string(), zod_1.z.unknown()).optional().describe('event REQUIRES occurred_at (ISO) + change_type (deployed|started|completed|failed|' +
|
|
58
|
+
'paused|resumed|created|deleted) · rule REQUIRES enforcement ' +
|
|
59
|
+
'(mandatory|recommended|advisory) · reference: optional url · profile/log: free-form.'),
|
|
41
60
|
},
|
|
42
61
|
}, async (args) => (0, _helpers_1.callTool)(() => http.post('/context', {
|
|
43
62
|
content: args.content,
|
package/dist/tools/note.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"note.js","sourceRoot":"","sources":["../../src/tools/note.ts"],"names":[],"mappings":";;AAoBA,
|
|
1
|
+
{"version":3,"file":"note.js","sourceRoot":"","sources":["../../src/tools/note.ts"],"names":[],"mappings":";;AAoBA,4CAqEC;AAzFD,6BAAuB;AAGvB,yCAAqC;AAErC,MAAM,UAAU,GAAG,CAAC,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,WAAW,EAAE,KAAK,CAAU,CAAA;AAC5E,MAAM,YAAY,GAAG,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,SAAS,CAAU,CAAA;AAC9E,MAAM,QAAQ,GAAG,CAAC,SAAS,EAAE,QAAQ,EAAE,YAAY,EAAE,aAAa,EAAE,SAAS,EAAE,UAAU,CAAU,CAAA;AAEnG;;;;;;;;;;GAUG;AACH,SAAgB,gBAAgB,CAAC,MAAiB,EAAE,IAAgB;IAClE,MAAM,CAAC,YAAY,CACjB,UAAU,EACV;QACE,KAAK,EAAE,YAAY;QACnB,WAAW,EACT,kFAAkF;YAClF,kFAAkF;YAClF,wDAAwD;YACxD,iFAAiF;YACjF,gEAAgE;YAChE,yCAAyC;YACzC,sEAAsE;YACtE,mEAAmE;YACnE,kCAAkC;YAClC,uFAAuF;YACvF,oFAAoF;YACpF,qDAAqD;YACrD,0CAA0C;QAC5C,WAAW,EAAE;YACX,IAAI,EAAE,OAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,QAAQ,CAC/B,oCAAoC;gBACpC,4DAA4D;gBAC5D,uEAAuE;gBACvE,yCAAyC;gBACzC,qFAAqF;gBACrF,yFAAyF;gBACzF,mFAAmF;gBACnF,6BAA6B;gBAC7B,qEAAqE;gBACrE,mFAAmF;gBACnF,0EAA0E,CAC3E;YACD,OAAO,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAC1B,oFAAoF;gBACpF,kDAAkD,CACnD;YACD,KAAK,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CACxB,qFAAqF;gBACrF,4CAA4C,CAC7C;YACD,OAAO,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CACrC,yEAAyE;gBACzE,+EAA+E,CAChF;YACD,MAAM,EAAE,OAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAC1C,+DAA+D,CAChE;YACD,YAAY,EAAE,OAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CACpD,+DAA+D;gBAC/D,mCAAmC,CACpC;YACD,UAAU,EAAE,OAAC,CAAC,MAAM,CAAC,OAAC,CAAC,MAAM,EAAE,EAAE,OAAC,CAAC,OAAO,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAC/D,oFAAoF;gBACpF,8DAA8D;gBAC9D,sFAAsF,CACvF;SACF;KACF,EACD,KAAK,EAAE,IAAI,EAAE,EAAE,CAAC,IAAA,mBAAQ,EAAC,GAAG,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;QACnD,OAAO,EAAE,IAAI,CAAC,OAAO;QACrB,IAAI,EAAE,IAAI,CAAC,IAAI;QACf,KAAK,EAAE,IAAI,CAAC,KAAK;QACjB,OAAO,EAAE,IAAI,CAAC,OAAO;QACrB,MAAM,EAAE,IAAI,CAAC,MAAM;QACnB,YAAY,EAAE,IAAI,CAAC,YAAY;QAC/B,UAAU,EAAE,IAAI,CAAC,UAAU;KAC5B,CAAC,CAAC,CACJ,CAAA;AACH,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"projects.d.ts","sourceRoot":"","sources":["../../src/tools/projects.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAA;AACxE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAA;AAKhD;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,UAAU,GAAG,IAAI,
|
|
1
|
+
{"version":3,"file":"projects.d.ts","sourceRoot":"","sources":["../../src/tools/projects.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAA;AACxE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAA;AAKhD;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,UAAU,GAAG,IAAI,CAiB9E;AAED,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,UAAU,GAAG,IAAI,CA6BnF;AAED,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,UAAU,GAAG,IAAI,CA6BnF"}
|
package/dist/tools/projects.js
CHANGED
|
@@ -12,50 +12,52 @@ const PROJECT_STATUS = ['active', 'paused', 'archived'];
|
|
|
12
12
|
function registerProjectsTool(server, http) {
|
|
13
13
|
server.registerTool('eml_projects', {
|
|
14
14
|
title: 'List Projects',
|
|
15
|
-
description: 'Lists
|
|
16
|
-
'
|
|
15
|
+
description: 'Lists registered projects, optionally filtered by status. Use to check a project ' +
|
|
16
|
+
'exists before creating a project-scoped engram. For one project\'s state use ' +
|
|
17
|
+
'eml_show(project.<id>); for all its engrams use eml_list(scope=project.<id>).',
|
|
17
18
|
inputSchema: {
|
|
18
|
-
status: zod_1.z.enum(PROJECT_STATUS).optional().describe('Default: all.'),
|
|
19
|
+
status: zod_1.z.enum(PROJECT_STATUS).optional().describe('active = being worked on · paused = on hold · archived = done/dropped. Default: all.'),
|
|
19
20
|
},
|
|
20
21
|
}, async (args) => (0, _helpers_1.callTool)(() => http.get('/projects', args.status ? { status: args.status } : undefined)));
|
|
21
22
|
}
|
|
22
23
|
function registerProjectCreateTool(server, http) {
|
|
23
24
|
server.registerTool('eml_project_create', {
|
|
24
25
|
title: 'Create Project',
|
|
25
|
-
description: 'Registers a new project.
|
|
26
|
-
'
|
|
27
|
-
'
|
|
26
|
+
description: 'Registers a new project. Prerequisite for any engram with scope=project.<id> — ' +
|
|
27
|
+
'the scope-existence check rejects writes against unknown projects. For internal ' +
|
|
28
|
+
'work/codebases, NOT external parties (→ eml_entity_create). Check eml_projects ' +
|
|
29
|
+
'first to avoid duplicates.',
|
|
28
30
|
inputSchema: {
|
|
29
|
-
id: zod_1.z.string().describe('Slug-style ID, e.g. "eml"
|
|
30
|
-
name: zod_1.z.string(),
|
|
31
|
+
id: zod_1.z.string().describe('Slug-style ID, kebab-case (e.g. "eml", "customer-emails"). Used as project.<id> in scopes.'),
|
|
32
|
+
name: zod_1.z.string().describe('Human-readable display name.'),
|
|
31
33
|
status: zod_1.z.enum(PROJECT_STATUS).optional().describe('Default "active".'),
|
|
32
|
-
goal: zod_1.z.string().optional(),
|
|
33
|
-
description: zod_1.z.string().optional(),
|
|
34
|
-
owner: zod_1.z.string().optional().describe('User
|
|
35
|
-
parent_project: zod_1.z.string().optional().describe('Parent project ID.'),
|
|
36
|
-
tags: zod_1.z.array(zod_1.z.string()).optional(),
|
|
37
|
-
started_at: zod_1.z.string().optional().describe('ISO date.'),
|
|
38
|
-
ended_at: zod_1.z.string().optional().describe('ISO date.'),
|
|
34
|
+
goal: zod_1.z.string().optional().describe('1-line "what does done look like" — anchors future decisions.'),
|
|
35
|
+
description: zod_1.z.string().optional().describe('1-2 sentences of context.'),
|
|
36
|
+
owner: zod_1.z.string().optional().describe('User or agent ID driving it.'),
|
|
37
|
+
parent_project: zod_1.z.string().optional().describe('Parent project ID for sub-projects.'),
|
|
38
|
+
tags: zod_1.z.array(zod_1.z.string()).optional().describe('Free-form categorization tags.'),
|
|
39
|
+
started_at: zod_1.z.string().optional().describe('ISO date, kickoff.'),
|
|
40
|
+
ended_at: zod_1.z.string().optional().describe('ISO date, set when archiving.'),
|
|
39
41
|
},
|
|
40
42
|
}, async (args) => (0, _helpers_1.callTool)(() => http.post('/project', args)));
|
|
41
43
|
}
|
|
42
44
|
function registerProjectUpdateTool(server, http) {
|
|
43
45
|
server.registerTool('eml_project_update', {
|
|
44
46
|
title: 'Update Project',
|
|
45
|
-
description: '
|
|
46
|
-
'
|
|
47
|
-
'
|
|
47
|
+
description: 'Patches the project REGISTRATION (status / goal / owner / etc.) — the container, ' +
|
|
48
|
+
'not its content. When status changes, also write an eml_set_status on ' +
|
|
49
|
+
'scope=project.<id> to capture WHY.',
|
|
48
50
|
inputSchema: {
|
|
49
|
-
id: zod_1.z.string(),
|
|
50
|
-
name: zod_1.z.string().optional(),
|
|
51
|
-
status: zod_1.z.enum(PROJECT_STATUS).optional(),
|
|
52
|
-
goal: zod_1.z.string().optional(),
|
|
53
|
-
description: zod_1.z.string().optional(),
|
|
54
|
-
owner: zod_1.z.string().optional(),
|
|
55
|
-
parent_project: zod_1.z.string().nullable().optional(),
|
|
56
|
-
tags: zod_1.z.array(zod_1.z.string()).optional(),
|
|
57
|
-
started_at: zod_1.z.string().optional(),
|
|
58
|
-
ended_at: zod_1.z.string().optional(),
|
|
51
|
+
id: zod_1.z.string().describe('Existing project slug.'),
|
|
52
|
+
name: zod_1.z.string().optional().describe('New display name.'),
|
|
53
|
+
status: zod_1.z.enum(PROJECT_STATUS).optional().describe('active | paused | archived.'),
|
|
54
|
+
goal: zod_1.z.string().optional().describe('Refined goal statement.'),
|
|
55
|
+
description: zod_1.z.string().optional().describe('Updated context.'),
|
|
56
|
+
owner: zod_1.z.string().optional().describe('New owner.'),
|
|
57
|
+
parent_project: zod_1.z.string().nullable().optional().describe('null to detach, ID to re-parent.'),
|
|
58
|
+
tags: zod_1.z.array(zod_1.z.string()).optional().describe('Replaces tag list (no merge).'),
|
|
59
|
+
started_at: zod_1.z.string().optional().describe('ISO date.'),
|
|
60
|
+
ended_at: zod_1.z.string().optional().describe('ISO date, set when archiving.'),
|
|
59
61
|
},
|
|
60
62
|
}, async (args) => (0, _helpers_1.callTool)(() => {
|
|
61
63
|
const { id, ...patch } = args;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"projects.js","sourceRoot":"","sources":["../../src/tools/projects.ts"],"names":[],"mappings":";;AAUA,
|
|
1
|
+
{"version":3,"file":"projects.js","sourceRoot":"","sources":["../../src/tools/projects.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"recall.d.ts","sourceRoot":"","sources":["../../src/tools/recall.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAA;AACxE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAA;AAGhD,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,UAAU,GAAG,IAAI,
|
|
1
|
+
{"version":3,"file":"recall.d.ts","sourceRoot":"","sources":["../../src/tools/recall.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAA;AACxE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAA;AAGhD,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,UAAU,GAAG,IAAI,CAuB5E"}
|
package/dist/tools/recall.js
CHANGED
|
@@ -6,14 +6,15 @@ const _helpers_1 = require("./_helpers");
|
|
|
6
6
|
function registerRecallTool(server, http) {
|
|
7
7
|
server.registerTool('eml_recall', {
|
|
8
8
|
title: 'Recall Knowledge',
|
|
9
|
-
description: '
|
|
10
|
-
'
|
|
11
|
-
'near-ties. Returns compact previews —
|
|
12
|
-
'
|
|
13
|
-
'
|
|
9
|
+
description: 'Keyword/relevance search across active + planned engrams (FTS5 full-text, not ' +
|
|
10
|
+
'embeddings) — "what do I know about X?". Ranked by text relevance (bm25); ' +
|
|
11
|
+
'significance breaks near-ties. Returns compact previews — drill into a hit via ' +
|
|
12
|
+
'eml_get <id> for the full body.\n\n' +
|
|
13
|
+
'For filtered enumeration by type/scope/status (incl. superseded/historical) use ' +
|
|
14
|
+
'eml_list; for a whole-scope dashboard use eml_show; for a known ID use eml_get.',
|
|
14
15
|
inputSchema: {
|
|
15
|
-
query: zod_1.z.string().describe('
|
|
16
|
-
limit: zod_1.z.number().int().positive().max(50).optional().describe('Default 10.'),
|
|
16
|
+
query: zod_1.z.string().describe('Plaintext, FTS5-tokenised. Domain words (2-4) beat full sentences.'),
|
|
17
|
+
limit: zod_1.z.number().int().positive().max(50).optional().describe('Default 10; raise to 20-30 only for a broad sweep.'),
|
|
17
18
|
},
|
|
18
19
|
}, async (args) => (0, _helpers_1.callTool)(() => http.post('/recall', args)));
|
|
19
20
|
}
|
package/dist/tools/recall.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"recall.js","sourceRoot":"","sources":["../../src/tools/recall.ts"],"names":[],"mappings":";;AAKA,
|
|
1
|
+
{"version":3,"file":"recall.js","sourceRoot":"","sources":["../../src/tools/recall.ts"],"names":[],"mappings":";;AAKA,gDAuBC;AA5BD,6BAAuB;AAGvB,yCAAqC;AAErC,SAAgB,kBAAkB,CAAC,MAAiB,EAAE,IAAgB;IACpE,MAAM,CAAC,YAAY,CACjB,YAAY,EACZ;QACE,KAAK,EAAE,kBAAkB;QACzB,WAAW,EACT,gFAAgF;YAChF,4EAA4E;YAC5E,iFAAiF;YACjF,qCAAqC;YACrC,kFAAkF;YAClF,iFAAiF;QACnF,WAAW,EAAE;YACX,KAAK,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CACxB,oEAAoE,CACrE;YACD,KAAK,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAC5D,oDAAoD,CACrD;SACF;KACF,EACD,KAAK,EAAE,IAAI,EAAE,EAAE,CAAC,IAAA,mBAAQ,EAAC,GAAG,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC,CAC3D,CAAA;AACH,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"set-status.d.ts","sourceRoot":"","sources":["../../src/tools/set-status.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAA;AACxE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAA;AAKhD;;;;;;;;GAQG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,UAAU,GAAG,IAAI,
|
|
1
|
+
{"version":3,"file":"set-status.d.ts","sourceRoot":"","sources":["../../src/tools/set-status.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAA;AACxE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAA;AAKhD;;;;;;;;GAQG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,UAAU,GAAG,IAAI,CAgD/E"}
|
package/dist/tools/set-status.js
CHANGED
|
@@ -16,18 +16,20 @@ const SIGNIFICANCE = ['critical', 'high', 'normal', 'low', 'trivial'];
|
|
|
16
16
|
function registerSetStatusTool(server, http) {
|
|
17
17
|
server.registerTool('eml_set_status', {
|
|
18
18
|
title: 'Set Status',
|
|
19
|
-
description: 'Sets the current
|
|
20
|
-
'
|
|
21
|
-
'
|
|
22
|
-
'
|
|
19
|
+
description: 'Sets the current state of a scope. AUTO-SUPERSEDES the prior active status in the ' +
|
|
20
|
+
'same scope — exactly one active status per scope, no manual cleanup.\n\n' +
|
|
21
|
+
'NOT a status: open action → eml_track_task · deliberate choice with rationale → ' +
|
|
22
|
+
'eml_decide · one-off event/incident (deploy, outage) → eml_note(kind=event) · ' +
|
|
23
|
+
'convention → eml_note(kind=rule).',
|
|
23
24
|
inputSchema: {
|
|
24
|
-
content: zod_1.z.string().describe('Narrative
|
|
25
|
-
scope: zod_1.z.string().describe('
|
|
26
|
-
state: zod_1.z.string().describe('Short phrase
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
25
|
+
content: zod_1.z.string().describe('Narrative (1-3 sentences): what the state means concretely, what changed.'),
|
|
26
|
+
scope: zod_1.z.string().describe('Narrowest true scope; project.<id> is the usual for project state.'),
|
|
27
|
+
state: zod_1.z.string().describe('Short canonical phrase, NOT a sentence ("running", "v0.10.4 deployed", ' +
|
|
28
|
+
'"blocked on TLS cert"). The headline eml_show displays.'),
|
|
29
|
+
subject: zod_1.z.string().optional().describe('Reuse the same subject across successive statuses to trace one scope\'s state-history.'),
|
|
30
|
+
next_step: zod_1.z.string().optional().describe('What\'s planned next, one phrase.'),
|
|
31
|
+
blockers: zod_1.z.array(zod_1.z.string()).optional().describe('Each blocker one phrase; empty = unblocked.'),
|
|
32
|
+
significance: zod_1.z.enum(SIGNIFICANCE).optional().describe('critical = production-impacting · high = milestone · normal = routine.'),
|
|
31
33
|
},
|
|
32
34
|
}, async (args) => (0, _helpers_1.callTool)(() => {
|
|
33
35
|
const properties = { state: args.state };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"set-status.js","sourceRoot":"","sources":["../../src/tools/set-status.ts"],"names":[],"mappings":";;AAgBA,
|
|
1
|
+
{"version":3,"file":"set-status.js","sourceRoot":"","sources":["../../src/tools/set-status.ts"],"names":[],"mappings":";;AAgBA,sDAgDC;AAhED,6BAAuB;AAGvB,yCAAqC;AAErC,MAAM,YAAY,GAAG,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,SAAS,CAAU,CAAA;AAE9E;;;;;;;;GAQG;AACH,SAAgB,qBAAqB,CAAC,MAAiB,EAAE,IAAgB;IACvE,MAAM,CAAC,YAAY,CACjB,gBAAgB,EAChB;QACE,KAAK,EAAE,YAAY;QACnB,WAAW,EACT,oFAAoF;YACpF,0EAA0E;YAC1E,kFAAkF;YAClF,gFAAgF;YAChF,mCAAmC;QACrC,WAAW,EAAE;YACX,OAAO,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAC1B,2EAA2E,CAC5E;YACD,KAAK,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CACxB,oEAAoE,CACrE;YACD,KAAK,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CACxB,yEAAyE;gBACzE,yDAAyD,CAC1D;YACD,OAAO,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CACrC,wFAAwF,CACzF;YACD,SAAS,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,mCAAmC,CAAC;YAC9E,QAAQ,EAAE,OAAC,CAAC,KAAK,CAAC,OAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAC/C,6CAA6C,CAC9C;YACD,YAAY,EAAE,OAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CACpD,wEAAwE,CACzE;SACF;KACF,EACD,KAAK,EAAE,IAAI,EAAE,EAAE,CAAC,IAAA,mBAAQ,EAAC,GAAG,EAAE;QAC5B,MAAM,UAAU,GAA4B,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAA;QACjE,IAAI,IAAI,CAAC,SAAS,KAAK,SAAS;YAAE,UAAU,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAA;QACvE,IAAI,IAAI,CAAC,QAAQ,KAAK,SAAS;YAAE,UAAU,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAA;QACpE,OAAO,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;YAC3B,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,IAAI,EAAE,QAAQ;YACd,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,YAAY,EAAE,IAAI,CAAC,YAAY;YAC/B,UAAU;SACX,CAAC,CAAA;IACJ,CAAC,CAAC,CACH,CAAA;AACH,CAAC"}
|
package/dist/tools/show.d.ts
CHANGED
|
@@ -5,7 +5,7 @@ import type { HttpClient } from '../http-client';
|
|
|
5
5
|
*
|
|
6
6
|
* Works for `global`, `project.X`, `entity.X`, `agent.X`, `user.X`.
|
|
7
7
|
* Returns a curated snapshot: current_status, open_tasks, recent_decisions,
|
|
8
|
-
* recent_logs,
|
|
8
|
+
* recent_logs, rules.
|
|
9
9
|
*/
|
|
10
10
|
export declare function registerShowTool(server: McpServer, http: HttpClient): void;
|
|
11
11
|
//# sourceMappingURL=show.d.ts.map
|
package/dist/tools/show.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"show.d.ts","sourceRoot":"","sources":["../../src/tools/show.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAA;AACxE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAA;AAGhD;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,UAAU,GAAG,IAAI,
|
|
1
|
+
{"version":3,"file":"show.d.ts","sourceRoot":"","sources":["../../src/tools/show.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAA;AACxE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAA;AAGhD;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,UAAU,GAAG,IAAI,CAqB1E"}
|
package/dist/tools/show.js
CHANGED
|
@@ -8,18 +8,20 @@ const _helpers_1 = require("./_helpers");
|
|
|
8
8
|
*
|
|
9
9
|
* Works for `global`, `project.X`, `entity.X`, `agent.X`, `user.X`.
|
|
10
10
|
* Returns a curated snapshot: current_status, open_tasks, recent_decisions,
|
|
11
|
-
* recent_logs,
|
|
11
|
+
* recent_logs, rules.
|
|
12
12
|
*/
|
|
13
13
|
function registerShowTool(server, http) {
|
|
14
14
|
server.registerTool('eml_show', {
|
|
15
15
|
title: 'Show BrainState for Scope',
|
|
16
|
-
description: 'Curated
|
|
17
|
-
'decisions/logs
|
|
18
|
-
'
|
|
19
|
-
'
|
|
20
|
-
'
|
|
16
|
+
description: 'Curated snapshot for one scope: active status + open tasks + recent ' +
|
|
17
|
+
'decisions/logs + active rules. The "where do we stand?" tool when you know the ' +
|
|
18
|
+
'exact scope. For fuzzy/cross-scope search use eml_recall; for filtered ' +
|
|
19
|
+
'enumeration use eml_list; for one engram use eml_get.\n\n' +
|
|
20
|
+
'Returns 5 sections: current_status, open_tasks (planned+active), recent_decisions, ' +
|
|
21
|
+
'recent_logs, rules (name-only). Relations are not included — fetch via ' +
|
|
22
|
+
'eml_get(with_relations).',
|
|
21
23
|
inputSchema: {
|
|
22
|
-
scope: zod_1.z.string().describe('global | project.<id> | entity.<id> | agent.<id> | user.<id
|
|
24
|
+
scope: zod_1.z.string().describe('global | project.<id> | entity.<id> | agent.<id> | user.<id>.'),
|
|
23
25
|
},
|
|
24
26
|
}, async (args) => (0, _helpers_1.callTool)(() => http.get('/brain-state', { scope: args.scope })));
|
|
25
27
|
}
|
package/dist/tools/show.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"show.js","sourceRoot":"","sources":["../../src/tools/show.ts"],"names":[],"mappings":";;AAYA,
|
|
1
|
+
{"version":3,"file":"show.js","sourceRoot":"","sources":["../../src/tools/show.ts"],"names":[],"mappings":";;AAYA,4CAqBC;AAjCD,6BAAuB;AAGvB,yCAAqC;AAErC;;;;;;GAMG;AACH,SAAgB,gBAAgB,CAAC,MAAiB,EAAE,IAAgB;IAClE,MAAM,CAAC,YAAY,CACjB,UAAU,EACV;QACE,KAAK,EAAE,2BAA2B;QAClC,WAAW,EACT,sEAAsE;YACtE,iFAAiF;YACjF,yEAAyE;YACzE,2DAA2D;YAC3D,qFAAqF;YACrF,yEAAyE;YACzE,0BAA0B;QAC5B,WAAW,EAAE;YACX,KAAK,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CACxB,+DAA+D,CAChE;SACF;KACF,EACD,KAAK,EAAE,IAAI,EAAE,EAAE,CAAC,IAAA,mBAAQ,EAAC,GAAG,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,cAAc,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAChF,CAAA;AACH,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stats.d.ts","sourceRoot":"","sources":["../../src/tools/stats.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAA;AACxE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAA;AAGhD;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,UAAU,GAAG,IAAI,
|
|
1
|
+
{"version":3,"file":"stats.d.ts","sourceRoot":"","sources":["../../src/tools/stats.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAA;AACxE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAA;AAGhD;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,UAAU,GAAG,IAAI,CAc3E"}
|
package/dist/tools/stats.js
CHANGED
|
@@ -12,9 +12,10 @@ const _helpers_1 = require("./_helpers");
|
|
|
12
12
|
function registerStatsTool(server, http) {
|
|
13
13
|
server.registerTool('eml_stats', {
|
|
14
14
|
title: 'Brain Stats',
|
|
15
|
-
description: 'Brain self-awareness: total engrams, counts per type
|
|
16
|
-
'
|
|
17
|
-
'
|
|
15
|
+
description: 'Brain self-awareness: total engrams, counts per type and per scope, plus ' +
|
|
16
|
+
'agent/project/user inventory. No filter — whole-brain snapshot, for audits, ' +
|
|
17
|
+
'migration verification, and spotting type-imbalance (e.g. log spam). For actual ' +
|
|
18
|
+
'engrams use eml_list; for one scope\'s state use eml_show.',
|
|
18
19
|
inputSchema: {},
|
|
19
20
|
}, async () => (0, _helpers_1.callTool)(() => http.get('/stats')));
|
|
20
21
|
}
|
package/dist/tools/stats.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stats.js","sourceRoot":"","sources":["../../src/tools/stats.ts"],"names":[],"mappings":";;AAWA,
|
|
1
|
+
{"version":3,"file":"stats.js","sourceRoot":"","sources":["../../src/tools/stats.ts"],"names":[],"mappings":";;AAWA,8CAcC;AAvBD,yCAAqC;AAErC;;;;;;GAMG;AACH,SAAgB,iBAAiB,CAAC,MAAiB,EAAE,IAAgB;IACnE,MAAM,CAAC,YAAY,CACjB,WAAW,EACX;QACE,KAAK,EAAE,aAAa;QACpB,WAAW,EACT,2EAA2E;YAC3E,8EAA8E;YAC9E,kFAAkF;YAClF,4DAA4D;QAC9D,WAAW,EAAE,EAAE;KAChB,EACD,KAAK,IAAI,EAAE,CAAC,IAAA,mBAAQ,EAAC,GAAG,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAC/C,CAAA;AACH,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"track-task.d.ts","sourceRoot":"","sources":["../../src/tools/track-task.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAA;AACxE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAA;AAOhD;;;;;GAKG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,UAAU,GAAG,IAAI,
|
|
1
|
+
{"version":3,"file":"track-task.d.ts","sourceRoot":"","sources":["../../src/tools/track-task.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAA;AACxE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAA;AAOhD;;;;;GAKG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,UAAU,GAAG,IAAI,CAmE/E"}
|
package/dist/tools/track-task.js
CHANGED
|
@@ -15,20 +15,27 @@ const TASK_STATUSES = ['planned', 'active', 'superseded', 'invalidated', 'expire
|
|
|
15
15
|
function registerTrackTaskTool(server, http) {
|
|
16
16
|
server.registerTool('eml_track_task', {
|
|
17
17
|
title: 'Track Task',
|
|
18
|
-
description: 'Plans
|
|
19
|
-
'
|
|
20
|
-
'
|
|
18
|
+
description: 'Plans or tracks an open action item with a lifecycle. Boot surfaces open_tasks ' +
|
|
19
|
+
'(planned + active), so the brain is the durable inbox.\n\n' +
|
|
20
|
+
'NOT a task: finished work → not a task (don\'t write it) · convention ("always do ' +
|
|
21
|
+
'X") → eml_note(kind=rule) · state snapshot → eml_set_status · speculation → wait ' +
|
|
22
|
+
'for commitment.\n\n' +
|
|
23
|
+
'Close the loop: when done → eml_update(status=resolved); abandoned → ' +
|
|
24
|
+
'eml_update(status=invalidated). Don\'t let ghost-active tasks pile up.',
|
|
21
25
|
inputSchema: {
|
|
22
|
-
content: zod_1.z.string().describe('What needs doing (1-3 sentences)
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
26
|
+
content: zod_1.z.string().describe('What needs doing (1-3 sentences), action verb first; specific enough that ' +
|
|
27
|
+
'"done" is clear.'),
|
|
28
|
+
scope: zod_1.z.string().describe('Narrowest true scope: project.<id> for project work, entity.<id> for ' +
|
|
29
|
+
'person/customer follow-ups. global is rare.'),
|
|
30
|
+
subject: zod_1.z.string().optional().describe('Kebab-case anchor; group related tasks under one subject.'),
|
|
31
|
+
status: zod_1.z.enum(TASK_STATUSES).optional().describe('Default planned · active = in progress · resolved = done · invalidated = abandoned.'),
|
|
32
|
+
priority: zod_1.z.enum(TASK_PRIORITY).optional().describe('Execution urgency (≠ significance): urgent = blocks others · high = soon · ' +
|
|
33
|
+
'normal = default · low = nice-to-have.'),
|
|
34
|
+
due_date: zod_1.z.string().optional().describe('ISO date — only for a real external deadline.'),
|
|
35
|
+
assignee_id: zod_1.z.string().optional().describe('Agent ID; omit for unassigned (humans stay unassigned).'),
|
|
36
|
+
context: zod_1.z.string().optional().describe('Short why/how — helps when picking it up cold later.'),
|
|
37
|
+
blockers: zod_1.z.array(zod_1.z.string()).optional().describe('Each blocker one phrase; empty = unblocked.'),
|
|
38
|
+
significance: zod_1.z.enum(SIGNIFICANCE).optional().describe('Importance (≠ urgency): critical = breaks things if undone · normal = default.'),
|
|
32
39
|
},
|
|
33
40
|
}, async (args) => (0, _helpers_1.callTool)(() => {
|
|
34
41
|
const properties = {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"track-task.js","sourceRoot":"","sources":["../../src/tools/track-task.ts"],"names":[],"mappings":";;AAeA,
|
|
1
|
+
{"version":3,"file":"track-task.js","sourceRoot":"","sources":["../../src/tools/track-task.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"update.d.ts","sourceRoot":"","sources":["../../src/tools/update.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAA;AACxE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAA;AAGhD,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,UAAU,GAAG,IAAI,
|
|
1
|
+
{"version":3,"file":"update.d.ts","sourceRoot":"","sources":["../../src/tools/update.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAA;AACxE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAA;AAGhD,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,UAAU,GAAG,IAAI,CAsC5E"}
|
package/dist/tools/update.js
CHANGED
|
@@ -6,21 +6,24 @@ const _helpers_1 = require("./_helpers");
|
|
|
6
6
|
function registerUpdateTool(server, http) {
|
|
7
7
|
server.registerTool('eml_update', {
|
|
8
8
|
title: 'Update Engram',
|
|
9
|
-
description: '
|
|
10
|
-
'
|
|
11
|
-
'
|
|
12
|
-
'
|
|
13
|
-
'
|
|
9
|
+
description: 'Patches an existing engram (status / significance / content / subject / scope / ' +
|
|
10
|
+
'properties) — the cleanup + supersession tool. Common: task done → ' +
|
|
11
|
+
'{status: resolved}; decision/reference replaced → {status: superseded} on the ' +
|
|
12
|
+
'old one, then write the new; rule/profile refined → patch content.\n\n' +
|
|
13
|
+
'Properties merge SHALLOWLY (incoming keys overwrite, others preserved); pass null ' +
|
|
14
|
+
'to delete a key. patch.content REPLACES content wholesale — no partial merge. ' +
|
|
15
|
+
'If unsure of the current state, eml_get(id) first.',
|
|
14
16
|
inputSchema: {
|
|
15
|
-
id: zod_1.z.string(),
|
|
17
|
+
id: zod_1.z.string().describe('Engram UUID, from a recall / list / show / get result.'),
|
|
16
18
|
patch: zod_1.z.object({
|
|
17
|
-
content: zod_1.z.string().optional(),
|
|
18
|
-
status: zod_1.z.enum(['planned', 'active', 'superseded', 'invalidated', 'expired', 'resolved']).optional()
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
19
|
+
content: zod_1.z.string().optional().describe('Wholesale replacement (no partial merge).'),
|
|
20
|
+
status: zod_1.z.enum(['planned', 'active', 'superseded', 'invalidated', 'expired', 'resolved']).optional().describe('resolved = task done · superseded = replaced by a newer engram · ' +
|
|
21
|
+
'invalidated = no longer applicable (no replacement) · expired = past expires_at.'),
|
|
22
|
+
significance: zod_1.z.enum(['critical', 'high', 'normal', 'low', 'trivial']).optional().describe('Re-rank on new evidence.'),
|
|
23
|
+
subject: zod_1.z.string().optional().describe('Rename the recall-anchor (sparingly — breaks subject threads).'),
|
|
24
|
+
scope: zod_1.z.string().optional().describe('Reassign scope (e.g. saved global but really project-bound).'),
|
|
25
|
+
properties: zod_1.z.record(zod_1.z.string(), zod_1.z.unknown()).optional().describe('Shallow merge; null deletes a key.'),
|
|
26
|
+
}).describe('Only the fields to modify.'),
|
|
24
27
|
},
|
|
25
28
|
}, async (args) => (0, _helpers_1.callTool)(() => http.post('/update', args)));
|
|
26
29
|
}
|
package/dist/tools/update.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"update.js","sourceRoot":"","sources":["../../src/tools/update.ts"],"names":[],"mappings":";;AAKA,
|
|
1
|
+
{"version":3,"file":"update.js","sourceRoot":"","sources":["../../src/tools/update.ts"],"names":[],"mappings":";;AAKA,gDAsCC;AA3CD,6BAAuB;AAGvB,yCAAqC;AAErC,SAAgB,kBAAkB,CAAC,MAAiB,EAAE,IAAgB;IACpE,MAAM,CAAC,YAAY,CACjB,YAAY,EACZ;QACE,KAAK,EAAE,eAAe;QACtB,WAAW,EACT,kFAAkF;YAClF,qEAAqE;YACrE,gFAAgF;YAChF,wEAAwE;YACxE,oFAAoF;YACpF,gFAAgF;YAChF,oDAAoD;QACtD,WAAW,EAAE;YACX,EAAE,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,wDAAwD,CAAC;YACjF,KAAK,EAAE,OAAC,CAAC,MAAM,CAAC;gBACd,OAAO,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,2CAA2C,CAAC;gBACpF,MAAM,EAAE,OAAC,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,QAAQ,EAAE,YAAY,EAAE,aAAa,EAAE,SAAS,EAAE,UAAU,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAC3G,mEAAmE;oBACnE,kFAAkF,CACnF;gBACD,YAAY,EAAE,OAAC,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,SAAS,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CACxF,0BAA0B,CAC3B;gBACD,OAAO,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CACrC,gEAAgE,CACjE;gBACD,KAAK,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CACnC,8DAA8D,CAC/D;gBACD,UAAU,EAAE,OAAC,CAAC,MAAM,CAAC,OAAC,CAAC,MAAM,EAAE,EAAE,OAAC,CAAC,OAAO,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAC/D,oCAAoC,CACrC;aACF,CAAC,CAAC,QAAQ,CAAC,4BAA4B,CAAC;SAC1C;KACF,EACD,KAAK,EAAE,IAAI,EAAE,EAAE,CAAC,IAAA,mBAAQ,EAAC,GAAG,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC,CAC3D,CAAA;AACH,CAAC"}
|
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",
|
|
@@ -18,6 +18,11 @@
|
|
|
18
18
|
"publishConfig": {
|
|
19
19
|
"access": "public"
|
|
20
20
|
},
|
|
21
|
+
"scripts": {
|
|
22
|
+
"build": "tsc -b",
|
|
23
|
+
"test": "vitest run --passWithNoTests",
|
|
24
|
+
"test:watch": "vitest"
|
|
25
|
+
},
|
|
21
26
|
"dependencies": {
|
|
22
27
|
"@modelcontextprotocol/sdk": "^1.29.0",
|
|
23
28
|
"zod": "^4.4.3"
|
|
@@ -26,11 +31,6 @@
|
|
|
26
31
|
"node": ">=20"
|
|
27
32
|
},
|
|
28
33
|
"devDependencies": {
|
|
29
|
-
"@engramprotocol/core": "
|
|
30
|
-
},
|
|
31
|
-
"scripts": {
|
|
32
|
-
"build": "tsc -b",
|
|
33
|
-
"test": "vitest run --passWithNoTests",
|
|
34
|
-
"test:watch": "vitest"
|
|
34
|
+
"@engramprotocol/core": "workspace:*"
|
|
35
35
|
}
|
|
36
|
-
}
|
|
36
|
+
}
|
|
@@ -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')
|
|
File without changes
|