@engramprotocol/mcp-server 0.10.4 → 0.10.6

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 (43) hide show
  1. package/README.md +1 -1
  2. package/dist/tools/boot.d.ts.map +1 -1
  3. package/dist/tools/boot.js +6 -3
  4. package/dist/tools/boot.js.map +1 -1
  5. package/dist/tools/decide.d.ts.map +1 -1
  6. package/dist/tools/decide.js +21 -13
  7. package/dist/tools/decide.js.map +1 -1
  8. package/dist/tools/entity.d.ts.map +1 -1
  9. package/dist/tools/entity.js +23 -17
  10. package/dist/tools/entity.js.map +1 -1
  11. package/dist/tools/get.d.ts.map +1 -1
  12. package/dist/tools/get.js +5 -3
  13. package/dist/tools/get.js.map +1 -1
  14. package/dist/tools/list.d.ts.map +1 -1
  15. package/dist/tools/list.js +16 -13
  16. package/dist/tools/list.js.map +1 -1
  17. package/dist/tools/note.d.ts.map +1 -1
  18. package/dist/tools/note.js +36 -17
  19. package/dist/tools/note.js.map +1 -1
  20. package/dist/tools/projects.d.ts.map +1 -1
  21. package/dist/tools/projects.js +30 -28
  22. package/dist/tools/projects.js.map +1 -1
  23. package/dist/tools/recall.d.ts.map +1 -1
  24. package/dist/tools/recall.js +8 -5
  25. package/dist/tools/recall.js.map +1 -1
  26. package/dist/tools/set-status.d.ts.map +1 -1
  27. package/dist/tools/set-status.js +13 -11
  28. package/dist/tools/set-status.js.map +1 -1
  29. package/dist/tools/show.d.ts +1 -1
  30. package/dist/tools/show.d.ts.map +1 -1
  31. package/dist/tools/show.js +9 -6
  32. package/dist/tools/show.js.map +1 -1
  33. package/dist/tools/stats.d.ts.map +1 -1
  34. package/dist/tools/stats.js +4 -3
  35. package/dist/tools/stats.js.map +1 -1
  36. package/dist/tools/track-task.d.ts.map +1 -1
  37. package/dist/tools/track-task.js +20 -13
  38. package/dist/tools/track-task.js.map +1 -1
  39. package/dist/tools/update.d.ts.map +1 -1
  40. package/dist/tools/update.js +16 -13
  41. package/dist/tools/update.js.map +1 -1
  42. package/package.json +1 -1
  43. package/templates/hooks/user_prompt_submit_reminder.sh +26 -3
package/README.md CHANGED
@@ -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.4)
60
+ ## Tools (v0.10.6)
61
61
 
62
62
  All tools have an `eml_` prefix. Total: **17 tools**.
63
63
 
@@ -1 +1 @@
1
- {"version":3,"file":"boot.d.ts","sourceRoot":"","sources":["../../src/tools/boot.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAA;AACxE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAA;AAGhD,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,UAAU,GAAG,IAAI,CAgB1E"}
1
+ {"version":3,"file":"boot.d.ts","sourceRoot":"","sources":["../../src/tools/boot.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAA;AACxE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAA;AAGhD,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,UAAU,GAAG,IAAI,CAmB1E"}
@@ -6,10 +6,13 @@ const _helpers_1 = require("./_helpers");
6
6
  function registerBootTool(server, http) {
7
7
  server.registerTool('eml_boot', {
8
8
  title: 'Boot Brain',
9
- description: 'Manual brain-reload — returns the same markdown the SessionStart-Hook ' +
10
- 'delivers automatically. Use mid-session to refresh brain state.',
9
+ description: 'Manual brain-reload — returns the same identity + rules markdown the ' +
10
+ 'SessionStart-Hook already delivers at session start. Rarely needed (the hook ' +
11
+ 'fires automatically); use only after a major mid-session brain mutation, a ' +
12
+ 'suspected incomplete boot, or to inspect a different agent. For "refresh my ' +
13
+ 'memory" use eml_recall / eml_show — boot is identity, not topic lookup.',
11
14
  inputSchema: {
12
- agent: zod_1.z.string().optional().describe('Agent ID (e.g. "motti", "default"). If omitted, the server uses the brain name as default.'),
15
+ agent: zod_1.z.string().optional().describe('Agent ID. Omit for the brain default; set only to inspect a different agent.'),
13
16
  },
14
17
  }, async (args) => (0, _helpers_1.callTool)(() => http.post('/boot', { agent: args.agent })));
15
18
  }
@@ -1 +1 @@
1
- {"version":3,"file":"boot.js","sourceRoot":"","sources":["../../src/tools/boot.ts"],"names":[],"mappings":";;AAKA,4CAgBC;AArBD,6BAAuB;AAGvB,yCAAqC;AAErC,SAAgB,gBAAgB,CAAC,MAAiB,EAAE,IAAgB;IAClE,MAAM,CAAC,YAAY,CACjB,UAAU,EACV;QACE,KAAK,EAAE,YAAY;QACnB,WAAW,EACT,wEAAwE;YACxE,iEAAiE;QACnE,WAAW,EAAE;YACX,KAAK,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CACnC,4FAA4F,CAC7F;SACF;KACF,EACD,KAAK,EAAE,IAAI,EAAE,EAAE,CAAC,IAAA,mBAAQ,EAAC,GAAG,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAC1E,CAAA;AACH,CAAC"}
1
+ {"version":3,"file":"boot.js","sourceRoot":"","sources":["../../src/tools/boot.ts"],"names":[],"mappings":";;AAKA,4CAmBC;AAxBD,6BAAuB;AAGvB,yCAAqC;AAErC,SAAgB,gBAAgB,CAAC,MAAiB,EAAE,IAAgB;IAClE,MAAM,CAAC,YAAY,CACjB,UAAU,EACV;QACE,KAAK,EAAE,YAAY;QACnB,WAAW,EACT,uEAAuE;YACvE,+EAA+E;YAC/E,6EAA6E;YAC7E,8EAA8E;YAC9E,yEAAyE;QAC3E,WAAW,EAAE;YACX,KAAK,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CACnC,8EAA8E,CAC/E;SACF;KACF,EACD,KAAK,EAAE,IAAI,EAAE,EAAE,CAAC,IAAA,mBAAQ,EAAC,GAAG,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAC1E,CAAA;AACH,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"decide.d.ts","sourceRoot":"","sources":["../../src/tools/decide.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAA;AACxE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAA;AAOhD;;;;;;;;GAQG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,UAAU,GAAG,IAAI,CAwC5E"}
1
+ {"version":3,"file":"decide.d.ts","sourceRoot":"","sources":["../../src/tools/decide.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAA;AACxE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAA;AAOhD;;;;;;;;GAQG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,UAAU,GAAG,IAAI,CAkE5E"}
@@ -18,20 +18,28 @@ const STATUSES = ['planned', 'active', 'superseded', 'invalidated', 'expired', '
18
18
  function registerDecideTool(server, http) {
19
19
  server.registerTool('eml_decide', {
20
20
  title: 'Record Decision',
21
- description: 'Records a deliberate, documented decision. Trigger: explicit ' +
22
- '"we decide X", "Decision: Y" NOT for speculation or open ' +
23
- 'questions. Decisions are the backbone of brain memory.',
21
+ description: 'Records a deliberate choice with rationale ("we chose X because Y, rejected Z") ' +
22
+ 'strategic, architectural, or convention-level decisions worth keeping past this ' +
23
+ 'session, not tactical micro-choices.\n\n' +
24
+ 'NOT a decision: current state ("v0.10 deployed") → eml_set_status · a convention ' +
25
+ 'to follow ("always do X") → eml_note(kind=rule) · an open action → eml_track_task · ' +
26
+ 'speculation → skip. If an active decision on the topic exists, supersede it via ' +
27
+ 'eml_update instead of duplicating.',
24
28
  inputSchema: {
25
- content: zod_1.z.string().describe('The decision itself (1-3 sentences, what was decided).'),
26
- scope: zod_1.z.string().describe('global | project.<id> | entity.<id> | agent.<id> | user.<id>'),
27
- subject: zod_1.z.string().optional().describe('Slug for the decision (for later recall).'),
28
- decision_type: zod_1.z.enum(DECISION_TYPES).optional(),
29
- rationale: zod_1.z.string().optional().describe('Why this was decided.'),
30
- alternatives: zod_1.z.array(zod_1.z.string()).optional().describe('Rejected alternatives.'),
31
- expires_at: zod_1.z.string().optional().describe('ISO date: hard lifecycle, obsolete from then on.'),
32
- review_due_at: zod_1.z.string().optional().describe('ISO date: next review (server default 60d).'),
33
- significance: zod_1.z.enum(SIGNIFICANCE).optional(),
34
- status: zod_1.z.enum(STATUSES).optional().describe('Default "active".'),
29
+ content: zod_1.z.string().describe('The decision (1-3 sentences) lead with the choice.'),
30
+ scope: zod_1.z.string().describe('Narrowest true scope: project.<id> (usual) | entity.<id> | agent.<id> | ' +
31
+ 'user.<id> | global.'),
32
+ subject: zod_1.z.string().optional().describe('Kebab-case recall anchor; reuse across superseding decisions for one lineage.'),
33
+ decision_type: zod_1.z.enum(DECISION_TYPES).optional().describe('strategic = market/positioning · architectural = system-shape · ' +
34
+ 'operational = workflow · roadmap = sequencing.'),
35
+ rationale: zod_1.z.string().optional().describe('Why strongly encouraged; without it a decision degrades to a status snapshot.'),
36
+ alternatives: zod_1.z.array(zod_1.z.string()).optional().describe('Rejected alternatives, each a short phrase.'),
37
+ expires_at: zod_1.z.string().optional().describe('ISO date — hard expiry, obsolete from then. Only for known-expiry decisions.'),
38
+ review_due_at: zod_1.z.string().optional().describe('ISO date — soft review reminder (boot flags overdue). Default 60d.'),
39
+ significance: zod_1.z.enum(SIGNIFICANCE).optional().describe('critical = irreversible/safety · high = load-bearing · normal = default · ' +
40
+ 'low/trivial = rare.'),
41
+ status: zod_1.z.enum(STATUSES).optional().describe('Default active. planned = not yet in effect · superseded = replaced (via ' +
42
+ 'eml_update) · invalidated = void · resolved = closed.'),
35
43
  },
36
44
  }, async (args) => (0, _helpers_1.callTool)(() => {
37
45
  const properties = {};
@@ -1 +1 @@
1
- {"version":3,"file":"decide.js","sourceRoot":"","sources":["../../src/tools/decide.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"decide.js","sourceRoot":"","sources":["../../src/tools/decide.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"entity.d.ts","sourceRoot":"","sources":["../../src/tools/entity.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAA;AACxE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAA;AAKhD;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,UAAU,GAAG,IAAI,CAe9E;AAED,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,UAAU,GAAG,IAAI,CAmBlF;AAED,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,UAAU,GAAG,IAAI,CAmBlF"}
1
+ {"version":3,"file":"entity.d.ts","sourceRoot":"","sources":["../../src/tools/entity.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAA;AACxE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAA;AAKhD;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,UAAU,GAAG,IAAI,CAmB9E;AAED,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,UAAU,GAAG,IAAI,CA2BlF;AAED,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,UAAU,GAAG,IAAI,CAqBlF"}
@@ -14,38 +14,44 @@ const ENTITY_KINDS = ['person', 'org', 'asset', 'subject'];
14
14
  function registerEntitiesTool(server, http) {
15
15
  server.registerTool('eml_entities', {
16
16
  title: 'List Entities',
17
- description: 'Lists all entities in the brain (external persons / organisations / ' +
18
- 'assets / subjects), optionally filtered by kind. For "which external ' +
19
- 'persons / orgs are in the brain?".',
17
+ description: 'Lists registered entities (external persons / orgs / assets / subjects), ' +
18
+ 'optionally filtered by kind. Use to check an entity exists before creating an ' +
19
+ 'entity-scoped engram. For one entity\'s state use eml_show(entity.<id>); for ' +
20
+ 'fuzzy search use eml_recall.',
20
21
  inputSchema: {
21
- kind: zod_1.z.enum(ENTITY_KINDS).optional().describe('Default: all.'),
22
+ kind: zod_1.z.enum(ENTITY_KINDS).optional().describe('person = individual · org = company/institution · asset = system/repo/domain · ' +
23
+ 'subject = topic/concept (rare). Default: all.'),
22
24
  },
23
25
  }, async (args) => (0, _helpers_1.callTool)(() => http.get('/entities', args.kind ? { kind: args.kind } : undefined)));
24
26
  }
25
27
  function registerEntityCreateTool(server, http) {
26
28
  server.registerTool('eml_entity_create', {
27
29
  title: 'Create Entity',
28
- description: 'Registers an entity (external person / organisation / asset / subject). ' +
29
- 'Required BEFORE the first engram with scope=entity.<id> — otherwise ' +
30
- 'the scope-existence check fails. Trigger: "new client/contact", ' +
31
- '"registering external organization X".',
30
+ description: 'Registers an external entity (person / org / asset / subject). Prerequisite ' +
31
+ 'for any engram with scope=entity.<id> — the scope-existence check rejects ' +
32
+ 'writes against unknown entities. For external parties, NOT internal projects ' +
33
+ '(→ eml_project_create). Check eml_entities first to avoid duplicates.',
32
34
  inputSchema: {
33
- id: zod_1.z.string().describe('Slug-style ID, e.g. "lasse" or "anthropic".'),
34
- name: zod_1.z.string(),
35
- kind: zod_1.z.enum(ENTITY_KINDS),
36
- description: zod_1.z.string().optional(),
35
+ id: zod_1.z.string().describe('Slug-style ID, kebab-case (e.g. "anthropic", "stripe"). Used as entity.<id> ' +
36
+ 'in scopes — pick something stable.'),
37
+ name: zod_1.z.string().describe('Human-readable display name.'),
38
+ kind: zod_1.z.enum(ENTITY_KINDS).describe('person = individual · org = company/institution · asset = system/repo/domain · ' +
39
+ 'subject = topic/concept (rare).'),
40
+ description: zod_1.z.string().optional().describe('1-2 sentences: what this entity is, why it matters.'),
37
41
  },
38
42
  }, async (args) => (0, _helpers_1.callTool)(() => http.post('/entity', args)));
39
43
  }
40
44
  function registerEntityUpdateTool(server, http) {
41
45
  server.registerTool('eml_entity_update', {
42
46
  title: 'Update Entity',
43
- description: 'Patch entity fields. Trigger: name change, description refinement.',
47
+ description: 'Patches the entity REGISTRATION (name / kind / description) — not knowledge ' +
48
+ 'about it. To record facts, write engrams with scope=entity.<id> (eml_decide, ' +
49
+ 'eml_note, etc.).',
44
50
  inputSchema: {
45
- id: zod_1.z.string(),
46
- name: zod_1.z.string().optional(),
47
- kind: zod_1.z.enum(ENTITY_KINDS).optional(),
48
- description: zod_1.z.string().optional(),
51
+ id: zod_1.z.string().describe('Existing entity slug.'),
52
+ name: zod_1.z.string().optional().describe('New display name.'),
53
+ kind: zod_1.z.enum(ENTITY_KINDS).optional().describe('Re-categorize (rare).'),
54
+ description: zod_1.z.string().optional().describe('Refined 1-2 sentence orientation.'),
49
55
  },
50
56
  }, async (args) => (0, _helpers_1.callTool)(() => {
51
57
  const { id, ...patch } = args;
@@ -1 +1 @@
1
- {"version":3,"file":"entity.js","sourceRoot":"","sources":["../../src/tools/entity.ts"],"names":[],"mappings":";;AAYA,oDAeC;AAED,4DAmBC;AAED,4DAmBC;AArED,6BAAuB;AAGvB,yCAAqC;AAErC,MAAM,YAAY,GAAG,CAAC,QAAQ,EAAE,KAAK,EAAE,OAAO,EAAE,SAAS,CAAU,CAAA;AAEnE;;;;GAIG;AACH,SAAgB,oBAAoB,CAAC,MAAiB,EAAE,IAAgB;IACtE,MAAM,CAAC,YAAY,CACjB,cAAc,EACd;QACE,KAAK,EAAE,eAAe;QACtB,WAAW,EACT,sEAAsE;YACtE,uEAAuE;YACvE,oCAAoC;QACtC,WAAW,EAAE;YACX,IAAI,EAAE,OAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,eAAe,CAAC;SAChE;KACF,EACD,KAAK,EAAE,IAAI,EAAE,EAAE,CAAC,IAAA,mBAAQ,EAAC,GAAG,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CACnG,CAAA;AACH,CAAC;AAED,SAAgB,wBAAwB,CAAC,MAAiB,EAAE,IAAgB;IAC1E,MAAM,CAAC,YAAY,CACjB,mBAAmB,EACnB;QACE,KAAK,EAAE,eAAe;QACtB,WAAW,EACT,0EAA0E;YAC1E,sEAAsE;YACtE,kEAAkE;YAClE,wCAAwC;QAC1C,WAAW,EAAE;YACX,EAAE,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,6CAA6C,CAAC;YACtE,IAAI,EAAE,OAAC,CAAC,MAAM,EAAE;YAChB,IAAI,EAAE,OAAC,CAAC,IAAI,CAAC,YAAY,CAAC;YAC1B,WAAW,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;SACnC;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;AAED,SAAgB,wBAAwB,CAAC,MAAiB,EAAE,IAAgB;IAC1E,MAAM,CAAC,YAAY,CACjB,mBAAmB,EACnB;QACE,KAAK,EAAE,eAAe;QACtB,WAAW,EACT,oEAAoE;QACtE,WAAW,EAAE;YACX,EAAE,EAAE,OAAC,CAAC,MAAM,EAAE;YACd,IAAI,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;YAC3B,IAAI,EAAE,OAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,QAAQ,EAAE;YACrC,WAAW,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;SACnC;KACF,EACD,KAAK,EAAE,IAAI,EAAE,EAAE,CAAC,IAAA,mBAAQ,EAAC,GAAG,EAAE;QAC5B,MAAM,EAAE,EAAE,EAAE,GAAG,KAAK,EAAE,GAAG,IAAI,CAAA;QAC7B,OAAO,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,EAAE,EAAE,KAAK,CAAC,CAAA;IACzC,CAAC,CAAC,CACH,CAAA;AACH,CAAC"}
1
+ {"version":3,"file":"entity.js","sourceRoot":"","sources":["../../src/tools/entity.ts"],"names":[],"mappings":";;AAYA,oDAmBC;AAED,4DA2BC;AAED,4DAqBC;AAnFD,6BAAuB;AAGvB,yCAAqC;AAErC,MAAM,YAAY,GAAG,CAAC,QAAQ,EAAE,KAAK,EAAE,OAAO,EAAE,SAAS,CAAU,CAAA;AAEnE;;;;GAIG;AACH,SAAgB,oBAAoB,CAAC,MAAiB,EAAE,IAAgB;IACtE,MAAM,CAAC,YAAY,CACjB,cAAc,EACd;QACE,KAAK,EAAE,eAAe;QACtB,WAAW,EACT,2EAA2E;YAC3E,gFAAgF;YAChF,+EAA+E;YAC/E,8BAA8B;QAChC,WAAW,EAAE;YACX,IAAI,EAAE,OAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAC5C,iFAAiF;gBACjF,+CAA+C,CAChD;SACF;KACF,EACD,KAAK,EAAE,IAAI,EAAE,EAAE,CAAC,IAAA,mBAAQ,EAAC,GAAG,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CACnG,CAAA;AACH,CAAC;AAED,SAAgB,wBAAwB,CAAC,MAAiB,EAAE,IAAgB;IAC1E,MAAM,CAAC,YAAY,CACjB,mBAAmB,EACnB;QACE,KAAK,EAAE,eAAe;QACtB,WAAW,EACT,8EAA8E;YAC9E,4EAA4E;YAC5E,+EAA+E;YAC/E,uEAAuE;QACzE,WAAW,EAAE;YACX,EAAE,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CACrB,8EAA8E;gBAC9E,oCAAoC,CACrC;YACD,IAAI,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,8BAA8B,CAAC;YACzD,IAAI,EAAE,OAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,QAAQ,CACjC,iFAAiF;gBACjF,iCAAiC,CAClC;YACD,WAAW,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CACzC,qDAAqD,CACtD;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;AAED,SAAgB,wBAAwB,CAAC,MAAiB,EAAE,IAAgB;IAC1E,MAAM,CAAC,YAAY,CACjB,mBAAmB,EACnB;QACE,KAAK,EAAE,eAAe;QACtB,WAAW,EACT,8EAA8E;YAC9E,+EAA+E;YAC/E,kBAAkB;QACpB,WAAW,EAAE;YACX,EAAE,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,uBAAuB,CAAC;YAChD,IAAI,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,mBAAmB,CAAC;YACzD,IAAI,EAAE,OAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,uBAAuB,CAAC;YACvE,WAAW,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,mCAAmC,CAAC;SACjF;KACF,EACD,KAAK,EAAE,IAAI,EAAE,EAAE,CAAC,IAAA,mBAAQ,EAAC,GAAG,EAAE;QAC5B,MAAM,EAAE,EAAE,EAAE,GAAG,KAAK,EAAE,GAAG,IAAI,CAAA;QAC7B,OAAO,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,EAAE,EAAE,KAAK,CAAC,CAAA;IACzC,CAAC,CAAC,CACH,CAAA;AACH,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"get.d.ts","sourceRoot":"","sources":["../../src/tools/get.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAA;AACxE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAA;AAGhD,wBAAgB,eAAe,CAAC,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,UAAU,GAAG,IAAI,CAiBzE"}
1
+ {"version":3,"file":"get.d.ts","sourceRoot":"","sources":["../../src/tools/get.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAA;AACxE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAA;AAGhD,wBAAgB,eAAe,CAAC,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,UAAU,GAAG,IAAI,CAsBzE"}
package/dist/tools/get.js CHANGED
@@ -6,10 +6,12 @@ const _helpers_1 = require("./_helpers");
6
6
  function registerGetTool(server, http) {
7
7
  server.registerTool('eml_get', {
8
8
  title: 'Get Engram',
9
- description: 'Fetch one engram by ID, optionally with its relations.',
9
+ description: 'Fetches one engram by ID with full content + properties — the drill-down after ' +
10
+ 'an ID surfaces in eml_recall / eml_list / eml_show. Not a search: if you don\'t ' +
11
+ 'have the ID, use eml_recall.',
10
12
  inputSchema: {
11
- id: zod_1.z.string().describe('Engram ID (UUID).'),
12
- with_relations: zod_1.z.boolean().optional().describe('Default true.'),
13
+ id: zod_1.z.string().describe('Engram UUID, from a recall / list / show result.'),
14
+ with_relations: zod_1.z.boolean().optional().describe('Default false — pass true to include the engram\'s relations (graph edges).'),
13
15
  },
14
16
  }, async (args) => (0, _helpers_1.callTool)(() => {
15
17
  const params = {};
@@ -1 +1 @@
1
- {"version":3,"file":"get.js","sourceRoot":"","sources":["../../src/tools/get.ts"],"names":[],"mappings":";;AAKA,0CAiBC;AAtBD,6BAAuB;AAGvB,yCAAqC;AAErC,SAAgB,eAAe,CAAC,MAAiB,EAAE,IAAgB;IACjE,MAAM,CAAC,YAAY,CACjB,SAAS,EACT;QACE,KAAK,EAAE,YAAY;QACnB,WAAW,EAAE,wDAAwD;QACrE,WAAW,EAAE;YACX,EAAE,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,mBAAmB,CAAC;YAC5C,cAAc,EAAE,OAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,eAAe,CAAC;SACjE;KACF,EACD,KAAK,EAAE,IAAI,EAAE,EAAE,CAAC,IAAA,mBAAQ,EAAC,GAAG,EAAE;QAC5B,MAAM,MAAM,GAAgD,EAAE,CAAA;QAC9D,IAAI,IAAI,CAAC,cAAc,KAAK,SAAS;YAAE,MAAM,CAAC,cAAc,GAAG,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,CAAA;QAC1F,OAAO,IAAI,CAAC,GAAG,CAAC,WAAW,IAAI,CAAC,EAAE,EAAE,EAAE,MAAM,CAAC,CAAA;IAC/C,CAAC,CAAC,CACH,CAAA;AACH,CAAC"}
1
+ {"version":3,"file":"get.js","sourceRoot":"","sources":["../../src/tools/get.ts"],"names":[],"mappings":";;AAKA,0CAsBC;AA3BD,6BAAuB;AAGvB,yCAAqC;AAErC,SAAgB,eAAe,CAAC,MAAiB,EAAE,IAAgB;IACjE,MAAM,CAAC,YAAY,CACjB,SAAS,EACT;QACE,KAAK,EAAE,YAAY;QACnB,WAAW,EACT,iFAAiF;YACjF,kFAAkF;YAClF,8BAA8B;QAChC,WAAW,EAAE;YACX,EAAE,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,kDAAkD,CAAC;YAC3E,cAAc,EAAE,OAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAC7C,6EAA6E,CAC9E;SACF;KACF,EACD,KAAK,EAAE,IAAI,EAAE,EAAE,CAAC,IAAA,mBAAQ,EAAC,GAAG,EAAE;QAC5B,MAAM,MAAM,GAAgD,EAAE,CAAA;QAC9D,IAAI,IAAI,CAAC,cAAc,KAAK,SAAS;YAAE,MAAM,CAAC,cAAc,GAAG,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,CAAA;QAC1F,OAAO,IAAI,CAAC,GAAG,CAAC,WAAW,IAAI,CAAC,EAAE,EAAE,EAAE,MAAM,CAAC,CAAA;IAC/C,CAAC,CAAC,CACH,CAAA;AACH,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"list.d.ts","sourceRoot":"","sources":["../../src/tools/list.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAA;AACxE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAA;AAQhD,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,UAAU,GAAG,IAAI,CA+B1E"}
1
+ {"version":3,"file":"list.d.ts","sourceRoot":"","sources":["../../src/tools/list.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAA;AACxE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAA;AAQhD,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,UAAU,GAAG,IAAI,CAoD1E"}
@@ -10,20 +10,23 @@ const ENGRAM_TYPES = [
10
10
  function registerListTool(server, http) {
11
11
  server.registerTool('eml_list', {
12
12
  title: 'List Engrams',
13
- description: 'List engrams with structured filters (type/scope/status/etc.). ' +
14
- 'Trigger: "show me all active tasks for project X". For fuzzy topic ' +
15
- 'search use eml_recall.',
13
+ description: 'Lists engrams by structured filters (type / scope / status / significance), with ' +
14
+ 'optional FTS5 `search` to narrow further. The way to reach non-active engrams ' +
15
+ '(superseded / resolved / expired) and to run audit queries. For fuzzy topic ' +
16
+ 'search use eml_recall; for a one-scope dashboard use eml_show; for counts use ' +
17
+ 'eml_stats.',
16
18
  inputSchema: {
17
- type: zod_1.z.enum(ENGRAM_TYPES).optional(),
18
- scope: zod_1.z.string().optional(),
19
- subject: zod_1.z.string().optional(),
20
- status: zod_1.z.enum(['planned', 'active', 'superseded', 'invalidated', 'expired', 'resolved']).optional(),
21
- significance: zod_1.z.enum(['critical', 'high', 'normal', 'low', 'trivial']).optional(),
22
- search: zod_1.z.string().optional().describe('FTS5 search over content/subject.'),
23
- order_by: zod_1.z.enum(['created_at', 'updated_at', 'significance', 'score']).optional(),
24
- limit: zod_1.z.number().int().positive().max(200).optional(),
25
- offset: zod_1.z.number().int().nonnegative().optional(),
26
- has_relations: zod_1.z.boolean().optional(),
19
+ type: zod_1.z.enum(ENGRAM_TYPES).optional().describe('Engram type filter (task, decision, status, rule, event, …). Omit for all.'),
20
+ scope: zod_1.z.string().optional().describe('global | project.<id> | entity.<id> | agent.<id> | user.<id>. Omit for all.'),
21
+ subject: zod_1.z.string().optional().describe('Exact subject slug — traces one anchor across status changes.'),
22
+ status: zod_1.z.enum(['planned', 'active', 'superseded', 'invalidated', 'expired', 'resolved']).optional().describe('active (the usual) · superseded/invalidated/expired for audits.'),
23
+ significance: zod_1.z.enum(['critical', 'high', 'normal', 'low', 'trivial']).optional().describe('Filter by importance tier.'),
24
+ search: zod_1.z.string().optional().describe('FTS5 over content/subject (2-4 plain words); combine with filters.'),
25
+ order_by: zod_1.z.enum(['created_at', 'updated_at', 'significance', 'score']).optional().describe('created_at (newest) · updated_at (last changed) · significance · ' +
26
+ 'score (relevance, only with search).'),
27
+ limit: zod_1.z.number().int().positive().max(200).optional().describe('Page size, default ~20, max 200.'),
28
+ offset: zod_1.z.number().int().nonnegative().optional().describe('Pagination offset.'),
29
+ has_relations: zod_1.z.boolean().optional().describe('true = only engrams with ≥1 relation (find hub-engrams).'),
27
30
  },
28
31
  }, async (args) => (0, _helpers_1.callTool)(() => {
29
32
  const params = {};
@@ -1 +1 @@
1
- {"version":3,"file":"list.js","sourceRoot":"","sources":["../../src/tools/list.ts"],"names":[],"mappings":";;AAUA,4CA+BC;AAzCD,6BAAuB;AAGvB,yCAAqC;AAErC,MAAM,YAAY,GAAG;IACnB,aAAa,EAAE,YAAY,EAAE,YAAY,EAAE,YAAY,EAAE,SAAS;IAClE,UAAU,EAAE,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,WAAW;CACpE,CAAA;AAEV,SAAgB,gBAAgB,CAAC,MAAiB,EAAE,IAAgB;IAClE,MAAM,CAAC,YAAY,CACjB,UAAU,EACV;QACE,KAAK,EAAE,cAAc;QACrB,WAAW,EACT,iEAAiE;YACjE,qEAAqE;YACrE,wBAAwB;QAC1B,WAAW,EAAE;YACX,IAAI,EAAE,OAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,QAAQ,EAAE;YACrC,KAAK,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;YAC5B,OAAO,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;YAC9B,MAAM,EAAE,OAAC,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,QAAQ,EAAE,YAAY,EAAE,aAAa,EAAE,SAAS,EAAE,UAAU,CAAC,CAAC,CAAC,QAAQ,EAAE;YACpG,YAAY,EAAE,OAAC,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,SAAS,CAAC,CAAC,CAAC,QAAQ,EAAE;YACjF,MAAM,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,mCAAmC,CAAC;YAC3E,QAAQ,EAAE,OAAC,CAAC,IAAI,CAAC,CAAC,YAAY,EAAE,YAAY,EAAE,cAAc,EAAE,OAAO,CAAC,CAAC,CAAC,QAAQ,EAAE;YAClF,KAAK,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE;YACtD,MAAM,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,WAAW,EAAE,CAAC,QAAQ,EAAE;YACjD,aAAa,EAAE,OAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;SACtC;KACF,EACD,KAAK,EAAE,IAAI,EAAE,EAAE,CAAC,IAAA,mBAAQ,EAAC,GAAG,EAAE;QAC5B,MAAM,MAAM,GAAgD,EAAE,CAAA;QAC9D,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;YAC1C,IAAI,CAAC,KAAK,SAAS;gBAAE,SAAQ;YAC7B,MAAM,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,KAAK,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAoB,CAAA;QACvE,CAAC;QACD,OAAO,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,MAAM,CAAC,CAAA;IAClC,CAAC,CAAC,CACH,CAAA;AACH,CAAC"}
1
+ {"version":3,"file":"list.js","sourceRoot":"","sources":["../../src/tools/list.ts"],"names":[],"mappings":";;AAUA,4CAoDC;AA9DD,6BAAuB;AAGvB,yCAAqC;AAErC,MAAM,YAAY,GAAG;IACnB,aAAa,EAAE,YAAY,EAAE,YAAY,EAAE,YAAY,EAAE,SAAS;IAClE,UAAU,EAAE,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,WAAW;CACpE,CAAA;AAEV,SAAgB,gBAAgB,CAAC,MAAiB,EAAE,IAAgB;IAClE,MAAM,CAAC,YAAY,CACjB,UAAU,EACV;QACE,KAAK,EAAE,cAAc;QACrB,WAAW,EACT,mFAAmF;YACnF,gFAAgF;YAChF,8EAA8E;YAC9E,gFAAgF;YAChF,YAAY;QACd,WAAW,EAAE;YACX,IAAI,EAAE,OAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAC5C,4EAA4E,CAC7E;YACD,KAAK,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CACnC,6EAA6E,CAC9E;YACD,OAAO,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CACrC,+DAA+D,CAChE;YACD,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,iEAAiE,CAClE;YACD,YAAY,EAAE,OAAC,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,SAAS,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CACxF,4BAA4B,CAC7B;YACD,MAAM,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CACpC,oEAAoE,CACrE;YACD,QAAQ,EAAE,OAAC,CAAC,IAAI,CAAC,CAAC,YAAY,EAAE,YAAY,EAAE,cAAc,EAAE,OAAO,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CACzF,mEAAmE;gBACnE,sCAAsC,CACvC;YACD,KAAK,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAC7D,kCAAkC,CACnC;YACD,MAAM,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,WAAW,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,oBAAoB,CAAC;YAChF,aAAa,EAAE,OAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAC5C,0DAA0D,CAC3D;SACF;KACF,EACD,KAAK,EAAE,IAAI,EAAE,EAAE,CAAC,IAAA,mBAAQ,EAAC,GAAG,EAAE;QAC5B,MAAM,MAAM,GAAgD,EAAE,CAAA;QAC9D,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;YAC1C,IAAI,CAAC,KAAK,SAAS;gBAAE,SAAQ;YAC7B,MAAM,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,KAAK,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAoB,CAAA;QACvE,CAAC;QACD,OAAO,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,MAAM,CAAC,CAAA;IAClC,CAAC,CAAC,CACH,CAAA;AACH,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"note.d.ts","sourceRoot":"","sources":["../../src/tools/note.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAA;AACxE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAA;AAOhD;;;;;;;;;;GAUG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,UAAU,GAAG,IAAI,CAwC1E"}
1
+ {"version":3,"file":"note.d.ts","sourceRoot":"","sources":["../../src/tools/note.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAA;AACxE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAA;AAOhD;;;;;;;;;;GAUG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,UAAU,GAAG,IAAI,CAqE1E"}
@@ -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,CAgB5E"}
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,12 +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: 'Topic search across active engrams, ordered by relevance + recency. ' +
10
- 'Trigger: "what do I know about X?". Better than eml_list for fuzzy ' +
11
- 'lookups; eml_list better for filtered enumeration.',
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.',
12
15
  inputSchema: {
13
- query: zod_1.z.string().describe('Search query (plaintext, FTS5-tokenised).'),
14
- 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.'),
15
18
  },
16
19
  }, async (args) => (0, _helpers_1.callTool)(() => http.post('/recall', args)));
17
20
  }
@@ -1 +1 @@
1
- {"version":3,"file":"recall.js","sourceRoot":"","sources":["../../src/tools/recall.ts"],"names":[],"mappings":";;AAKA,gDAgBC;AArBD,6BAAuB;AAGvB,yCAAqC;AAErC,SAAgB,kBAAkB,CAAC,MAAiB,EAAE,IAAgB;IACpE,MAAM,CAAC,YAAY,CACjB,YAAY,EACZ;QACE,KAAK,EAAE,kBAAkB;QACzB,WAAW,EACT,sEAAsE;YACtE,qEAAqE;YACrE,oDAAoD;QACtD,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,CAgB1E"}
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,17 +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 snapshot for a scope: active status, open tasks, recent ' +
17
- 'decisions/logs, relations. For "where do we stand on project X?" or ' +
18
- '"what do I know about entity Y?". Works for any scope pattern ' +
19
- '(global / project.<id> / entity.<id> / agent.<id> / user.<id>).',
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).',
20
23
  inputSchema: {
21
- 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>.'),
22
25
  },
23
26
  }, async (args) => (0, _helpers_1.callTool)(() => http.get('/brain-state', { scope: args.scope })));
24
27
  }
@@ -1 +1 @@
1
- {"version":3,"file":"show.js","sourceRoot":"","sources":["../../src/tools/show.ts"],"names":[],"mappings":";;AAYA,4CAgBC;AA5BD,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,kEAAkE;YAClE,sEAAsE;YACtE,gEAAgE;YAChE,iEAAiE;QACnE,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.4",
3
+ "version": "0.10.6",
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",
@@ -17,6 +17,15 @@
17
17
  #
18
18
  # Local-only, no HTTP. Reminder content lives inline as heredoc — single source of
19
19
  # truth, evolves with the npm-package via `setup update`.
20
+ #
21
+ # v0.10.5 option-5a TEST (brain decision 5c3246a0): on remind-turns the hook also
22
+ # emits a cwd-aware scope nudge — it derives the likely active project from the
23
+ # session cwd (naming-convention: basename(cwd)==project.id) and points the model
24
+ # at `eml_show project.<id>` so it loads that project's rules/status/tasks before
25
+ # acting. Still local-only (a nudge, NOT an HTTP content-inject). Probes whether
26
+ # naming the active scope changes behavior before committing to the cwd-aware boot
27
+ # rebuild (task bd617414). cwd is logged every turn to verify it is in the stdin
28
+ # envelope (high-confidence but unverified at build time).
20
29
 
21
30
  set -eu
22
31
 
@@ -27,9 +36,13 @@ mkdir -p "$LOG_DIR" "$TURNS_DIR"
27
36
  LOG_FILE="$LOG_DIR/user-prompt-submit-$(date -u +%Y-%m-%d).log"
28
37
  TS=$(date -u +%Y-%m-%dT%H:%M:%SZ)
29
38
 
30
- # --- 1. Parse stdin for session_id -----------------------------------------
39
+ # --- 1. Parse stdin for session_id + cwd -----------------------------------
31
40
  STDIN=$(cat || true)
32
41
  SESSION_ID=$(echo "$STDIN" | jq -r '.session_id // empty' 2>/dev/null || true)
42
+ # cwd: option-5a scope signal. stdin envelope first, $PWD fallback.
43
+ CWD=$(echo "$STDIN" | jq -r '.cwd // empty' 2>/dev/null || true)
44
+ [ -z "$CWD" ] && CWD="$PWD"
45
+ PROJECT_ID=$(basename "$CWD" 2>/dev/null || true)
33
46
 
34
47
  if [ -z "$SESSION_ID" ]; then
35
48
  echo "[$TS] no session_id in stdin, silent" >> "$LOG_FILE"
@@ -61,7 +74,7 @@ if [ "$((TURN % 5))" -eq 0 ]; then SHOULD_REMIND=1; fi
61
74
  if [ "$RESUMED_AFTER_PAUSE" -eq 1 ]; then SHOULD_REMIND=1; fi
62
75
 
63
76
  if [ "$SHOULD_REMIND" -eq 0 ]; then
64
- echo "[$TS] silent turn=$TURN sid=$SESSION_ID" >> "$LOG_FILE"
77
+ echo "[$TS] silent turn=$TURN sid=$SESSION_ID cwd=$CWD" >> "$LOG_FILE"
65
78
  exit 0
66
79
  fi
67
80
 
@@ -75,4 +88,14 @@ cat <<'EOF'
75
88
  - EML brain is the canonical knowledge base — check it before falling back to conversation memory.
76
89
  EOF
77
90
 
78
- echo "[$TS] OK turn=$TURN sid=$SESSION_ID reminded (pause=$RESUMED_AFTER_PAUSE)" >> "$LOG_FILE"
91
+ # --- 4b. cwd-aware scope nudge (option-5a test, brain decision 5c3246a0) ----
92
+ # Names the likely active project from cwd so the model loads its scope before
93
+ # acting on it. Local-only: a nudge to call eml_show, NOT an HTTP content inject.
94
+ # Skip when cwd is empty or the home dir (basename would be meaningless there).
95
+ if [ -n "$CWD" ] && [ "$CWD" != "$HOME" ] && [ -n "$PROJECT_ID" ]; then
96
+ cat <<EOF
97
+ - Active working dir: $CWD — if \`project.$PROJECT_ID\` is a tracked project, call \`eml_show project.$PROJECT_ID\` FIRST to load its status, open tasks and project-specific rules before editing code or making decisions in it.
98
+ EOF
99
+ fi
100
+
101
+ echo "[$TS] OK turn=$TURN sid=$SESSION_ID cwd=$CWD proj=$PROJECT_ID reminded (pause=$RESUMED_AFTER_PAUSE)" >> "$LOG_FILE"