@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.
Files changed (53) hide show
  1. package/README.md +5 -5
  2. package/dist/cli.js +0 -0
  3. package/dist/setup/index.js +1 -1
  4. package/dist/setup/install.js +2 -2
  5. package/dist/setup/install.js.map +1 -1
  6. package/dist/setup/uninstall.js +1 -1
  7. package/dist/setup/uninstall.js.map +1 -1
  8. package/dist/setup/update.d.ts.map +1 -1
  9. package/dist/setup/update.js +91 -21
  10. package/dist/setup/update.js.map +1 -1
  11. package/dist/tools/boot.d.ts.map +1 -1
  12. package/dist/tools/boot.js +6 -3
  13. package/dist/tools/boot.js.map +1 -1
  14. package/dist/tools/decide.d.ts.map +1 -1
  15. package/dist/tools/decide.js +21 -13
  16. package/dist/tools/decide.js.map +1 -1
  17. package/dist/tools/entity.d.ts.map +1 -1
  18. package/dist/tools/entity.js +23 -17
  19. package/dist/tools/entity.js.map +1 -1
  20. package/dist/tools/get.d.ts.map +1 -1
  21. package/dist/tools/get.js +5 -4
  22. package/dist/tools/get.js.map +1 -1
  23. package/dist/tools/list.d.ts.map +1 -1
  24. package/dist/tools/list.js +16 -14
  25. package/dist/tools/list.js.map +1 -1
  26. package/dist/tools/note.d.ts.map +1 -1
  27. package/dist/tools/note.js +36 -17
  28. package/dist/tools/note.js.map +1 -1
  29. package/dist/tools/projects.d.ts.map +1 -1
  30. package/dist/tools/projects.js +30 -28
  31. package/dist/tools/projects.js.map +1 -1
  32. package/dist/tools/recall.d.ts.map +1 -1
  33. package/dist/tools/recall.js +8 -7
  34. package/dist/tools/recall.js.map +1 -1
  35. package/dist/tools/set-status.d.ts.map +1 -1
  36. package/dist/tools/set-status.js +13 -11
  37. package/dist/tools/set-status.js.map +1 -1
  38. package/dist/tools/show.d.ts +1 -1
  39. package/dist/tools/show.d.ts.map +1 -1
  40. package/dist/tools/show.js +9 -7
  41. package/dist/tools/show.js.map +1 -1
  42. package/dist/tools/stats.d.ts.map +1 -1
  43. package/dist/tools/stats.js +4 -3
  44. package/dist/tools/stats.js.map +1 -1
  45. package/dist/tools/track-task.d.ts.map +1 -1
  46. package/dist/tools/track-task.js +20 -13
  47. package/dist/tools/track-task.js.map +1 -1
  48. package/dist/tools/update.d.ts.map +1 -1
  49. package/dist/tools/update.js +16 -13
  50. package/dist/tools/update.js.map +1 -1
  51. package/package.json +8 -8
  52. package/templates/hooks/session_start_boot.sh +33 -7
  53. package/templates/hooks/user_prompt_submit_reminder.sh +0 -0
@@ -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: 'Catch-all for secondary engram types: rule (convention/constraint), ' +
24
- 'profile (identity facet), event (immutable system event), reference ' +
25
- '(external pointer), log (narrative entry). For the more frequent types ' +
26
- 'use the typed tools: eml_decide, eml_set_status, eml_track_task.',
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 summary (1 per session, e.g. motti-session-end)? → log (else NEVER use log)\n' +
30
- '2. Timestamped one-time occurrence (deploy, test, incident, diagnostic probe)? → event (requires occurred_at + change_type)\n' +
31
- '3. Pointer to external system (ticket URL, dashboard, doc)? → reference\n' +
32
- '4. Identity facet (who an agent/user is)? profile\n' +
33
- '5. Behavior convention/constraint? → rule (requires enforcement: mandatory|recommended|advisory)'),
34
- content: zod_1.z.string(),
35
- scope: zod_1.z.string().describe('global | project.<id> | entity.<id> | agent.<id> | user.<id>'),
36
- subject: zod_1.z.string().optional(),
37
- status: zod_1.z.enum(STATUSES).optional(),
38
- significance: zod_1.z.enum(SIGNIFICANCE).optional(),
39
- properties: zod_1.z.record(zod_1.z.string(), zod_1.z.unknown()).optional().describe('Type-specific properties. Required: event needs occurred_at + change_type; ' +
40
- 'rule needs enforcement (mandatory|recommended|advisory).'),
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,
@@ -1 +1 @@
1
- {"version":3,"file":"note.js","sourceRoot":"","sources":["../../src/tools/note.ts"],"names":[],"mappings":";;AAoBA,4CAwCC;AA5DD,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,sEAAsE;YACtE,sEAAsE;YACtE,yEAAyE;YACzE,kEAAkE;QACpE,WAAW,EAAE;YACX,IAAI,EAAE,OAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,QAAQ,CAC/B,kBAAkB;gBAClB,0FAA0F;gBAC1F,+HAA+H;gBAC/H,2EAA2E;gBAC3E,uDAAuD;gBACvD,kGAAkG,CACnG;YACD,OAAO,EAAE,OAAC,CAAC,MAAM,EAAE;YACnB,KAAK,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,8DAA8D,CAAC;YAC1F,OAAO,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;YAC9B,MAAM,EAAE,OAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,QAAQ,EAAE;YACnC,YAAY,EAAE,OAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,QAAQ,EAAE;YAC7C,UAAU,EAAE,OAAC,CAAC,MAAM,CAAC,OAAC,CAAC,MAAM,EAAE,EAAE,OAAC,CAAC,OAAO,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAC/D,6EAA6E;gBAC7E,0DAA0D,CAC3D;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
+ {"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,CAc9E;AAED,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,UAAU,GAAG,IAAI,CAwBnF;AAED,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,UAAU,GAAG,IAAI,CA2BnF"}
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"}
@@ -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 all projects in the brain. Optionally filtered by status. ' +
16
- 'For "which projects do I have?" or "which active projects am I working on?".',
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. Required BEFORE the first engram with ' +
26
- 'scope=project.<id> — otherwise the scope-existence check fails. ' +
27
- 'Trigger: "starting new project X", "set up Y".',
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" or "argus".'),
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 ID or agent ID.'),
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: 'Patch project fields. Project must exist firstuse eml_project_create ' +
46
- 'to register a new one. Trigger: status change, goal refinement, ' +
47
- 'ownership transfer.',
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":"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"}
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,CAkB5E"}
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"}
@@ -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: 'Fuzzy topic search "what do I know about X?". Searches live engrams ' +
10
- '(active + planned), ranked by text relevance (bm25); significance breaks ' +
11
- 'near-ties. Returns compact previews — use eml_get <id> for the full body. ' +
12
- 'For filtered enumeration by type/scope/status (incl. superseded/historical) ' +
13
- 'use eml_list; for a whole-scope dashboard use eml_show.',
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('Search query (plaintext, FTS5-tokenised).'),
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
  }
@@ -1 +1 @@
1
- {"version":3,"file":"recall.js","sourceRoot":"","sources":["../../src/tools/recall.ts"],"names":[],"mappings":";;AAKA,gDAkBC;AAvBD,6BAAuB;AAGvB,yCAAqC;AAErC,SAAgB,kBAAkB,CAAC,MAAiB,EAAE,IAAgB;IACpE,MAAM,CAAC,YAAY,CACjB,YAAY,EACZ;QACE,KAAK,EAAE,kBAAkB;QACzB,WAAW,EACT,wEAAwE;YACxE,2EAA2E;YAC3E,4EAA4E;YAC5E,8EAA8E;YAC9E,yDAAyD;QAC3D,WAAW,EAAE;YACX,KAAK,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,2CAA2C,CAAC;YACvE,KAAK,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,aAAa,CAAC;SAC9E;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
+ {"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,CAkC/E"}
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"}
@@ -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 status for a scope. Trigger: "current state is X", ' +
20
- '"blocked right now", "running". Auto-supersede marks old active ' +
21
- 'status engrams in the same scope as superseded the new status is ' +
22
- 'always the canonical snapshot.',
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 description of the status (1-3 sentences).'),
25
- scope: zod_1.z.string().describe('global | project.<id> | entity.<id> | agent.<id> | user.<id>'),
26
- state: zod_1.z.string().describe('Short phrase: "running" / "blocked" / "shipped" / "v0.9 deployed".'),
27
- subject: zod_1.z.string().optional(),
28
- next_step: zod_1.z.string().optional().describe('What is planned next.'),
29
- blockers: zod_1.z.array(zod_1.z.string()).optional().describe('What is blocking progress.'),
30
- significance: zod_1.z.enum(SIGNIFICANCE).optional(),
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,sDAkCC;AAlDD,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,sEAAsE;YACtE,kEAAkE;YAClE,qEAAqE;YACrE,gCAAgC;QAClC,WAAW,EAAE;YACX,OAAO,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,sDAAsD,CAAC;YACpF,KAAK,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,8DAA8D,CAAC;YAC1F,KAAK,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,oEAAoE,CAAC;YAChG,OAAO,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;YAC9B,SAAS,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,uBAAuB,CAAC;YAClE,QAAQ,EAAE,OAAC,CAAC,KAAK,CAAC,OAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,4BAA4B,CAAC;YAC/E,YAAY,EAAE,OAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,QAAQ,EAAE;SAC9C;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"}
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"}
@@ -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, relations.
8
+ * recent_logs, rules.
9
9
  */
10
10
  export declare function registerShowTool(server: McpServer, http: HttpClient): void;
11
11
  //# sourceMappingURL=show.d.ts.map
@@ -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,CAiB1E"}
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"}
@@ -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, relations.
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 dashboard for one scope: active status, open tasks, recent ' +
17
- 'decisions/logs, relations "where do we stand on project X?" / "what do ' +
18
- 'I know about entity Y?". Works for any scope (global / project.<id> / ' +
19
- 'entity.<id> / agent.<id> / user.<id>). Drill into a listed engram with ' +
20
- 'eml_get; for fuzzy cross-scope search use eml_recall.',
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
  }
@@ -1 +1 @@
1
- {"version":3,"file":"show.js","sourceRoot":"","sources":["../../src/tools/show.ts"],"names":[],"mappings":";;AAYA,4CAiBC;AA7BD,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,qEAAqE;YACrE,2EAA2E;YAC3E,wEAAwE;YACxE,yEAAyE;YACzE,uDAAuD;QACzD,WAAW,EAAE;YACX,KAAK,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,8DAA8D,CAAC;SAC3F;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
+ {"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,CAa3E"}
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"}
@@ -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, counts per ' +
16
- 'scope, plus agent/project/user counts. No filter, just a snapshot. ' +
17
- 'Useful for audits, migration verification, onboarding sanity checks.',
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
  }
@@ -1 +1 @@
1
- {"version":3,"file":"stats.js","sourceRoot":"","sources":["../../src/tools/stats.ts"],"names":[],"mappings":";;AAWA,8CAaC;AAtBD,yCAAqC;AAErC;;;;;;GAMG;AACH,SAAgB,iBAAiB,CAAC,MAAiB,EAAE,IAAgB;IACnE,MAAM,CAAC,YAAY,CACjB,WAAW,EACX;QACE,KAAK,EAAE,aAAa;QACpB,WAAW,EACT,mEAAmE;YACnE,qEAAqE;YACrE,sEAAsE;QACxE,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
+ {"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,CAwC/E"}
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"}
@@ -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/tracks a task. Trigger: "TODO", "we need to do X", explicit ' +
19
- 'action items. Lifecycle via status (planned/active/resolved). ' +
20
- 'Boot output shows open_tasks (planned + active).',
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
- scope: zod_1.z.string().describe('global | project.<id> | entity.<id> | agent.<id> | user.<id>'),
24
- subject: zod_1.z.string().optional().describe('Slug for the task.'),
25
- status: zod_1.z.enum(TASK_STATUSES).optional().describe('Default "planned".'),
26
- priority: zod_1.z.enum(TASK_PRIORITY).optional(),
27
- due_date: zod_1.z.string().optional().describe('ISO date.'),
28
- assignee_id: zod_1.z.string().optional().describe('Agent ID; omit for unassigned.'),
29
- context: zod_1.z.string().optional().describe('Short note on why / how.'),
30
- blockers: zod_1.z.array(zod_1.z.string()).optional(),
31
- significance: zod_1.z.enum(SIGNIFICANCE).optional(),
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":"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"}
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,CAyB5E"}
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"}
@@ -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: 'Patch an engram (status, significance, properties, content). Typical: ' +
10
- 'status="resolved" when a task is done, or status="superseded" to retire ' +
11
- 'a stale decision when a new one replaces it. ' +
12
- 'Properties merge shallowly (incoming keys win, others preserved); ' +
13
- 'pass a property value of null to delete that key.',
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
- significance: zod_1.z.enum(['critical', 'high', 'normal', 'low', 'trivial']).optional(),
20
- subject: zod_1.z.string().optional(),
21
- scope: zod_1.z.string().optional(),
22
- properties: zod_1.z.record(zod_1.z.string(), zod_1.z.unknown()).optional(),
23
- }).describe('Only the fields to be modified.'),
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
  }
@@ -1 +1 @@
1
- {"version":3,"file":"update.js","sourceRoot":"","sources":["../../src/tools/update.ts"],"names":[],"mappings":";;AAKA,gDAyBC;AA9BD,6BAAuB;AAGvB,yCAAqC;AAErC,SAAgB,kBAAkB,CAAC,MAAiB,EAAE,IAAgB;IACpE,MAAM,CAAC,YAAY,CACjB,YAAY,EACZ;QACE,KAAK,EAAE,eAAe;QACtB,WAAW,EACT,wEAAwE;YACxE,0EAA0E;YAC1E,+CAA+C;YAC/C,oEAAoE;YACpE,mDAAmD;QACrD,WAAW,EAAE;YACX,EAAE,EAAE,OAAC,CAAC,MAAM,EAAE;YACd,KAAK,EAAE,OAAC,CAAC,MAAM,CAAC;gBACd,OAAO,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;gBAC9B,MAAM,EAAE,OAAC,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,QAAQ,EAAE,YAAY,EAAE,aAAa,EAAE,SAAS,EAAE,UAAU,CAAC,CAAC,CAAC,QAAQ,EAAE;gBACpG,YAAY,EAAE,OAAC,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,SAAS,CAAC,CAAC,CAAC,QAAQ,EAAE;gBACjF,OAAO,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;gBAC9B,KAAK,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;gBAC5B,UAAU,EAAE,OAAC,CAAC,MAAM,CAAC,OAAC,CAAC,MAAM,EAAE,EAAE,OAAC,CAAC,OAAO,EAAE,CAAC,CAAC,QAAQ,EAAE;aACzD,CAAC,CAAC,QAAQ,CAAC,iCAAiC,CAAC;SAC/C;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
+ {"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.5",
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": "0.0.0"
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
- . "$CONFIG"
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
- RESPONSE=$(curl -fsS -m 8 \
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
- echo "⚠️ EML Boot failed — server unreachable or auth error. See $LOG_FILE"
46
- echo "[$TS] FAIL curl non-zero" >> "$LOG_FILE"
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