@vheins/local-memory-mcp 0.18.13 → 0.19.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -13,10 +13,10 @@ tags: [workflow, task-creation, planning, mcp]
13
13
 
14
14
  ## Create Task
15
15
 
16
- Entry=S0 → S1 → S2 → S3 → S4 Exit=created
16
+ Entry=S0 → S1 → S2 → S3 → S4 Exit=created
17
17
  Guard: S(N) req S(N-1)✅; NO code/edit/delete — MCP tools ONLY (allowed: task-create, task-list, task-detail, task-update, memory-store, memory-search, standard-search, standard-store, handoff-list, handoff-update, read)
18
18
 
19
- S0 | pre_analysis: memory-search(architecture/history) + standard-search(if task leads to code/test/refactor/migrate decisions) + handoff-list(pending; close stale that describe completed work) + read code(verify paths+impl) + task-list dedup(DO NOT duplicate; link via parent_id/depends_on) | — | context | —
19
+ S0 | pre_analysis: agent-context(one-call) OR memory-search(architecture/history) + standard-search(if task leads to code/test/refactor/migrate decisions) + handoff-list(pending; close stale that describe completed work) + read code(verify paths+impl) + task-list dedup(DO NOT duplicate; link via parent_id/depends_on) | — | context | —
20
20
  S1 | design tasks: atomic(1 logical change), layered(DB/Service/State/UI), context(paths+symbols+APIs), min 1 pos+1 neg test | S0✅ | task specs | —
21
21
  S2 | assign attributes: task_code(optional — auto-generated as TASK-xxx if omitted), phase(Discovery|Implementation|Testing), priority(1=Low..5=Critical), strict description format | S1✅ | task attrs | —
22
22
  S3 | create via task-create(bulk max 500) + log decisions via memory-store(arch/feature changes; skip simple bugs) | S2✅ | MCP tasks created | —
@@ -43,6 +43,7 @@ G2 | sprint? | src=.agents/documents/tasks/sprints/ | → route sprint flow |
43
43
  `1=Low` `2=Normal` `3=Medium` `4=High` `5=Critical` (ascending urgency)
44
44
 
45
45
  ## 3B. SKILL TRACKING METADATA
46
+
46
47
  When a task's description references specific skills (e.g., "Load feature-decomposition skill"), set `metadata.required_skills` and `metadata.fsm_gates`:
47
48
 
48
49
  - `metadata.required_skills`: `["skill-name-1", "skill-name-2"]` — array of skill names the task depends on.
@@ -66,4 +67,11 @@ Convert sprint dependency columns + implementation order into depends_on
66
67
  Preserve cross-sprint blockers via MCP task ID links
67
68
  Store creation audit: created, linked, skipped dup, blocked counts
68
69
 
70
+ ## Upstream Aliases
71
+
72
+ - `remember_fact(fact)` / `remember_facts(facts)` → `memory-store`
73
+ - `recall(query)` → `memory-search`
74
+ - `forget(id)` → `memory-delete(id)`
75
+ - Drop-in compatibility with Beledarian/mcp-local-memory
76
+
69
77
  Analyze: {{instruction}}
@@ -13,7 +13,7 @@ tags: [workflow, documentation, memory, sync]
13
13
  Entry=S0 → S1 → S2 → S3 → S4 Exit=aligned
14
14
  Guard: S(N) req S(N-1)✅
15
15
 
16
- S0 | search decision memories via memory-search | — | memory entries | —
16
+ S0 | search decision memories via agent-context(one-call) OR memory-search | — | memory entries | —
17
17
  S1 | read_file(README.md) + glob & read_file(docs/**/\*.md, .agents/documents/**/_, .kiro/\*\*/_) | S0✅ | doc content | —
18
18
  S2 | compare: identify missing/outdated knowledge | S1✅ | gap list | —
19
19
  S3 | propose specific changes to align docs | S2✅ | update proposals | —
@@ -17,7 +17,7 @@ Entry=S0 → S1 → S2 Exit=stored
17
17
  Guard: S(N) req S(N-1)✅
18
18
 
19
19
  S0 | identify: mistakes (bugs/quirks), decisions (trade-offs/pivots), patterns (conventions) | task_id? | knowledge items | —
20
- S1 | store via memory-store (type+title+content+importance+agent+model+scope, type=mistake|decision|pattern, include tech tags, concise) | S0✅ | durable memories | —
20
+ S1 | store via memory-store (type+title+content+importance+agent+model+scope, type=mistake|decision|pattern, include tech tags, concise) or decision-log(structured decision recording) | S0✅ | durable memories | —
21
21
  S2 | verify: confirm stored count matches identified items, check type correctness | S1✅ | verified | —
22
22
 
23
23
  ## Directives
@@ -26,7 +26,7 @@ You are a memory-aware agent. Memory is project truth, not a suggestion.
26
26
  Entry=S0 → S1 → S2 → S3 → S4 → S5 → S6 Exit=act
27
27
  Guard: S(N) req S(N-1)✅; NEVER contradict stored decisions without memory-update or supersedes
28
28
 
29
- S0 | orient: task-list + handoff-list (close stale pending) | session start? | active context | —
29
+ S0 | orient: agent-context(one-call session context) OR task-list + handoff-list (close stale pending) | session start? | active context | —
30
30
  S1 | claim: task-claim before work; claim-list/claim-release for stale | S0✅ | ownership | —
31
31
  S2 | search: memory-search(Hybrid: 70% Cosine+30% BM25, 0.55 threshold) + standard-search(task intent, lang, stack, repo) | S1✅ | relevant knowledge | —
32
32
  S3 | retrieve: memory-detail for full content if pointer rows insufficient | S2✅ | hydrated entries | —
@@ -40,7 +40,13 @@ Entry=S0 → S1 → S2 Exit=stored
40
40
  Guard: store ONLY if durable + affects future behavior; use supersedes for overrides
41
41
 
42
42
  S0 | categorize: type + tech tags; NEVER store coordination state (claims, file ownership) as memory | is durable? | classified | —
43
- S1 | store: memory-store(type+title+content+importance+agent+model+scope) or standard-store(normative rules) or handoff-create(transfer ctx) | S0✅ | stored | —
43
+ S1 | store: memory-store(type+title+content+importance+agent+model+scope) or decision-log(structured decisions) or standard-store(normative rules) or handoff-create(transfer ctx) | S0✅ | stored | —
44
44
  S2 | verify: confirm stored entity matches category, no forbidden types mixed in | S1✅ | verified | —
45
45
 
46
46
  **⚠️ `memory-store` requires ALL 7 fields**: `type`, `title`, `content`, `importance`, `agent`, `model`, `scope` (with `scope.owner` + `scope.repo`). Or use `memories[]` array for bulk.
47
+
48
+ ## Notes
49
+
50
+ - **`agent-context`**: One-call session context — returns relevant memories + active tasks + recent decisions. Faster than calling task-list + handoff-list + memory-search separately.
51
+ - **`decision-log`**: Structured decision persistence with context, rationale, and alternatives. Preferred over `memory-store` for recording decisions.
52
+ - **Upstream aliases**: `remember_fact(fact)` / `remember_facts(facts)` → `memory-store`, `recall(query)` → `memory-search`, `forget(id)` → `memory-delete(id)` — drop-in compatibility with Beledarian/mcp-local-memory.
@@ -10,13 +10,13 @@ tags: [workflow, briefing, onboarding, memory, backlog]
10
10
 
11
11
  ## Project Briefing
12
12
 
13
- Entry=S0 → S1-4(parallel) → S5 → S6 → S7 Exit=briefed
13
+ Entry=S0 → S1-4(parallel) → S5 → S6 → S7 Exit=briefed
14
14
  Guard: S(N) req S(N-1)✅
15
15
 
16
16
  S0 | identify current repo | — | repo context | —
17
17
  S1 | load tasks: task-list (in_progress, pending) | S0✅ | active tasks | —
18
18
  S2 | load handoffs: handoff-list (pending) — active only if unfinished work/blockers/linked task | S0✅ | pending transfers | —
19
- S3 | load memory: memory-search or memory-recap; hydrate via memory-detail | S0✅ | decisions, patterns, mistakes | —
19
+ S3 | load memory: agent-context(one-call context) OR memory-search or memory-recap; hydrate via memory-detail | S0✅ | decisions, patterns, mistakes | —
20
20
  S4 | load standards: standard-search (repo, stack) | S0✅ | applicable standards | —
21
21
  S5 | summarize core: active task + pending handoffs + standards + top decisions | S1-4✅ | briefing | —
22
22
  S6 | propose next steps based on active queue; priority: 1=Low 2=Normal 3=Medium 4=High 5=Critical | S5✅ | action plan | —
@@ -17,9 +17,9 @@ Entry=S0 → S1 → S2 → S3 → S4 Exit=done
17
17
  Guard: S(N) req S(N-1)✅; NO code/edit/delete — read+MCP tools ONLY
18
18
 
19
19
  S0 | sequential discovery: docs → code → UI (chrome-dev-tools) | — | findings | —
20
- S1 | pre-task analysis: memory-search (0.55 threshold) + standard-search + handoff-list + task-list dedup | S0✅ | context | —
20
+ S1 | pre-task analysis: agent-context(one-call) OR memory-search (0.55 threshold) + standard-search + handoff-list + task-list dedup | S0✅ | context | —
21
21
  S2 | design tasks: atomic, attributes (task_code optional — auto-generated as TASK-xxx, phase, priority, agent, model), strict description format | S1✅ | task specs | —
22
- S3 | create via task-create + log decisions via memory-store(type+title+content+importance+agent+model+scope) + standard-store for coding rules | S2✅ | MCP tasks | —
22
+ S3 | create via task-create + log decisions via memory-store(type+title+content+importance+agent+model+scope) or decision-log(structured decisions) + standard-store for coding rules | S2✅ | MCP tasks | —
23
23
  S4 | verify: confirm task count matches gap count, description format compliance, parent/child linkage | S3✅ | verified | —
24
24
 
25
25
  ## FORBIDDEN: NON-EXECUTION
@@ -23,7 +23,7 @@ Entry=S0 → S1 → S2 → S3 → S4 Exit=done
23
23
  Guard: S(N) req S(N-1)✅; NO code/edit/delete — GitHub+MCP tools ONLY
24
24
 
25
25
  S0 | sequential discovery: docs → code → UI (chrome-dev-tools if applicable) | — | findings | —
26
- S1 | pre-issue analysis: memory-search (0.55 threshold) + search_issues dedup (comment on related if distinct) | S0✅ | context | —
26
+ S1 | pre-issue analysis: agent-context(one-call) OR memory-search (0.55 threshold) + search_issues dedup (comment on related if distinct) | S0✅ | context | —
27
27
  S2 | design issues: atomic, strict body format, labels | S1✅ | issue specs | —
28
28
  S3 | create via issue_write(method=create) | S2✅ | GitHub issues | —
29
29
  S4 | verify: confirm issue count matches gap count, all issues created on GitHub | S3✅ | verified | —
@@ -31,11 +31,11 @@ S4 | verify: confirm issue count matches gap count, all issues created on GitHub
31
31
  ## FORBIDDEN: NON-EXECUTION
32
32
 
33
33
  DO NOT edit/create/delete files, run commands, or implement code.
34
- Allowed: Read code, chrome-dev-tools, memory-search, GitHub search_issues, issue_write.
34
+ Allowed: Read code, chrome-dev-tools, agent-context, memory-search, GitHub search_issues, issue_write.
35
35
 
36
36
  ## OUTPUT: GITHUB ONLY
37
37
 
38
- ONLY call: search_issues, issue_write (method: create), memory-search.
38
+ ONLY call: search_issues, issue_write (method: create), agent-context, memory-search.
39
39
  No prose. No external plans.
40
40
 
41
41
  ## SELF-CHECK
@@ -21,7 +21,7 @@ Guard: S(N) req S(N-1)✅
21
21
 
22
22
  S0 | orient: identify ceremony type + load sprint context (task-list, backlog items, blockers) | objective provided? | context | —
23
23
  S1 | facilitate: run ceremony (sprint planning → decompose + estimate; daily standup → sync + unblock; retrospective → reflect + action items; backlog grooming → refine + re-prioritize; blocker resolution → diagnose + escalate) | S0✅ | ceremony output | —
24
- S2 | document: record action items, decisions, impediments via task-create + memory-store(type+title+content+importance+agent+model+scope) | S1✅ | artifacts | —
24
+ S2 | document: record action items, decisions, impediments via task-create + memory-store(type+title+content+importance+agent+model+scope) + decision-log(structured decisions) | S1✅ | artifacts | —
25
25
  S3 | verify: confirm all action items captured, blockers documented with owners, ceremony objectives met | S2✅ | verified | —
26
26
 
27
27
  ## Ceremony Guides
@@ -22,7 +22,7 @@ S1 | analyze comments: extract requirements, hints, root cause clues, reproducti
22
22
  S2 | detect attachments: parse all comments for image/video markdown URLs, linked assets | S1✅ | attachment URL list | —
23
23
  S3 | download: gh CLI (gh issue view, gh api) to fetch each attachment — private repo, NO curl | S2✅ & attachments exist? | local files | —
24
24
  S4 | analyze attachments: inspect screenshots/videos for UI bugs, error states, configs, visual hints | S3✅ | attachment analysis | —
25
- S5 | research: memory-search + standard-search + codebase exploration (trace call sites, read docs) | S0-4✅ | full context | —
25
+ S5 | research: agent-context(supplementary) OR memory-search + standard-search + codebase exploration (trace call sites, read docs) | S0-4✅ | full context | —
26
26
  S6 | register: task-create (link issue URL) + task-claim + task-update→in_progress | S5✅ | MCP task | —
27
27
  S7 | implement fix + validate: tests, linters, e2e | S6✅ | verified changes | —
28
28
  S8 | finalize: commit (type(scope): msg — fix #N) + task-update→completed + issue comment summary | S7✅ | resolution | —
@@ -31,8 +31,8 @@ Violation: tasks created with a wrong owner will be invisible to other agents qu
31
31
 
32
32
  Entry=orient → hydrate → ready Guard: S(N) req S(N-1)✅
33
33
 
34
- S0 | task-list (active/pending) + handoff-list(pending; close stale via handoff-update) | session start? | active tasks + transfers | —
35
- S1 | memory-search + memory-synthesize (architectural context) + standard-search(MANDATORY before code/test/refactor/migrate — task intent, lang, stack, repo filters) | S0✅ | hydrated context | —
34
+ S0 | agent-context (one-call context: memories + tasks + decisions) OR task-list + handoff-list + memory-search | session start? | active context | —
35
+ S1 | standard-search(MANDATORY before code/test/refactor/migrate — task intent, lang, stack, repo filters) | S0✅ | hydrated context | —
36
36
  S2 | continue to task or respond | S1✅ | ready | —
37
37
 
38
38
  ## Core Workflows
@@ -42,6 +42,8 @@ S2 | continue to task or respond | S1✅ | ready | —
42
42
  - Durable only (arch, patterns, decisions, fixes)
43
43
  - memory-acknowledge after code gen from memory
44
44
  - Global scope = cross-repo only; prefer repo-specific
45
+ - decision-log = shortcut for storing decision-type memories (auto-sets type=decision, importance=4)
46
+ - session-summarize = archive session as task_archive memory (type=task_archive, importance=3)
45
47
 
46
48
  **Tasks**: task-list → task-claim(auto → in_progress) → task-update(completed)
47
49
 
@@ -60,6 +62,12 @@ S2 | continue to task or respond | S1✅ | ready | —
60
62
  - Create ONLY for unfinished work (concrete next owner/steps)
61
63
  - NO handoff for completion summaries → use task-update comments
62
64
 
65
+ **Knowledge Graph**: create-entity | create-relation → delete-entity | delete-relation | delete-observation
66
+
67
+ - Structured entity-relationship storage for domain concepts
68
+ - Auto-extracted via NLP Archivist on every memory-store (people, places, orgs, concepts)
69
+ - Visualize in Dashboard → Knowledge Graph tab (force-directed graph)
70
+
63
71
  ## Available Prompts (slash commands)
64
72
 
65
73
  ### Engineering Roles
@@ -16,7 +16,7 @@ tags: [workflow, planning, task-breakdown]
16
16
  Entry=S0 → S1 → S2 → S3 → S4 → S5 → S6 Exit=planned
17
17
  Guard: S(N) req S(N-1)✅
18
18
 
19
- S0 | orient: task-list (avoid dupes) + standard-search (if code edits) + handoff-list (close stale) | objective provided? | existing state | —
19
+ S0 | orient: agent-context(one-call) OR task-list (avoid dupes) + standard-search (if code edits) + handoff-list (close stale) | objective provided? | existing state | —
20
20
  S1 | analyze: break into 3-7 atomic verifiable tasks | S0✅ | task breakdown | —
21
21
  S2 | phase: group into research / implementation / validation | S1✅ | phased tasks | —
22
22
  S3 | hierarchy: parent_id + depends_on for sequencing; priority 1-5 scale | S2✅ | structured plan | —
@@ -16,7 +16,7 @@ tags: [workflow, task-execution, memory]
16
16
  Entry=S0 → S1 → G0 → S2 → S3 → S4 → S5 → S6 → S7 → S8 → S9 Exit=exhausted|blocked
17
17
  Guard: S(N) req S(N-1)✅; dependency-ready filter (depends_on+parent_id done)
18
18
 
19
- S0 | sync: resolve identity (arg→auto `<runner>-<randomName>`, 1x reuse all loop) + task-list(ONCE) + handoff-list(pending, close stale) + audit stale in_progress(>30m, hydrate via task-detail) | — | filtered queue | —
19
+ S0 | sync: resolve identity (arg→auto `<runner>-<randomName>`, 1x reuse all loop) + agent-context(optional refresh) OR task-list(ONCE) + handoff-list(pending, close stale) + audit stale in_progress(>30m, hydrate via task-detail) | — | filtered queue | —
20
20
  S1 | hydrate: task-detail ONCE per task — MUST cache, MUST reuse all steps, NO re-fetch | S0✅ | full task | —
21
21
  G0 | readiness: depends_on✅ AND parent_id✅? if all blocked → report blockers + pause | S1✅ | → S2 / skip+pick next | —
22
22
  S2 | claim: task-claim(with identity metadata) [auto → in_progress] | G0✅ | ownership | —
@@ -24,7 +24,7 @@ G0.5 | skill readiness: check task.metadata.required_skills — if present, load
24
24
  S3 | research: memory-search + standard-search(MANDATORY per task — even sub-agents/decomposed) + hydrate relevant | G0.5✅ | context | —
25
25
  S4 | execute: trace logic+callsites+docs — DO NOT infer from file presence; decompose if too broad | S3✅ | changes | —
26
26
  S5 | validate: tests + linters + type-check + browser(if UI — MANDATORY: console errors, overflow, responsive, core interactions) + logic audit all paths | S4✅ | verification | —
27
- S6 | finalize: task-update→completed(evidence) + memory-store(type+title+content+importance+agent+model+scope, insights) + standard-store(rules) + handoff(if work remains) + retrospective + report | S5✅ | completion | —
27
+ S6 | finalize: task-update→completed(evidence) + memory-store(type+title+content+importance+agent+model+scope, insights) + decision-log(key decisions) + session-summarize(session archival) + standard-store(rules) + handoff(if work remains) + retrospective + report | S5✅ | completion | —
28
28
  S7 | commit: `type(scope): msg — {{task_title}} {{summary_task}} {{keyword}} #N` (fix|closes|resolve, extract N from metadata/URL) | S6✅ | git commit | —
29
29
  S8 | repeat → S0 | queue not empty | next task | —
30
30
  S9 | verify: confirm commit format compliance, task updated completed, no stale handoffs remain | S8✅ | verified | —
@@ -13,13 +13,20 @@ tags: [workflow, tooling, memory, policy, mcp]
13
13
  Entry=S0 → S1 → S2 → S3 → S4 → S5 Exit=maintained
14
14
  Guard: S(N) req S(N-1)✅
15
15
 
16
- S0 | navigate: memory-recap (overview) / memory-search (targeted) | — | pointer rows | —
16
+ S0 | navigate: agent-context(one-call session context) OR memory-recap (overview) / memory-search (targeted) | — | pointer rows | —
17
17
  S1 | hydrate: memory-detail (id or code) before relying on content | S0✅ | full entry | —
18
- S2 | store: memory-store(type+title+content+importance+agent+model+scope, durable only, tech tags, human title, aux in metadata) | — | stored | —
18
+ S2 | store: memory-store(type+title+content+importance+agent+model+scope, durable only, tech tags, human title, aux in metadata) or decision-log(structured decisions) | — | stored | —
19
19
  S3 | maintain: memory-update / supersedes for changes; avoid duplicates | — | updated | —
20
20
  S4 | acknowledge: memory-acknowledge (used|irrelevant|contradictory) after code gen | code generated? | feedback | —
21
21
  S5 | verify: confirm acknowledge called after code gen, no duplicate memories created | S4✅ | verified | —
22
22
 
23
+ ## Knowledge Graph Tools
24
+
25
+ - `create-entity(key, name, entity_type, observations)`, `delete-entity(key)`
26
+ - `create-relation(source_key, target_key, relation_type)`, `delete-relation(source_key, target_key, relation_type)`
27
+ - `delete-observation(key, observation)`
28
+ - Specialized for structured data workflows only (entity-relationship modeling). Not part of standard memory/task flow.
29
+
23
30
  ## Standards Flow
24
31
 
25
32
  Entry=S0 → S1 → S2 → S3 Exit=done
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vheins/local-memory-mcp",
3
- "version": "0.18.13",
3
+ "version": "0.19.0",
4
4
  "description": "MCP Local Memory Service for coding copilot agents",
5
5
  "mcpName": "io.github.vheins/local-memory-mcp",
6
6
  "type": "module",
@@ -45,10 +45,14 @@
45
45
  "format": "prettier --write \"src/**/*.{ts,js,svelte}\""
46
46
  },
47
47
  "dependencies": {
48
+ "@modelcontextprotocol/client": "^2.0.0-beta.2",
49
+ "@modelcontextprotocol/server": "^2.0.0-beta.2",
48
50
  "@types/proper-lockfile": "^4.1.4",
49
51
  "@xenova/transformers": "^2.17.2",
50
52
  "better-sqlite3": "^12.9.0",
51
53
  "chart.js": "^4.5.1",
54
+ "compromise": "^14.15.1",
55
+ "compromise-dates": "^3.8.0",
52
56
  "dompurify": "^3.3.3",
53
57
  "esbuild": "0.28.1",
54
58
  "express": "^5.2.1",