@pcircle/memesh 4.10.1 → 4.10.2

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 (86) hide show
  1. package/.claude-plugin/marketplace.json +1 -1
  2. package/.claude-plugin/plugin.json +1 -1
  3. package/.codex-plugin/plugin.json +1 -1
  4. package/AGENTS.md +44 -13
  5. package/README.de.md +3 -3
  6. package/README.md +3 -3
  7. package/README.zh-TW.md +3 -3
  8. package/dashboard/dist/index.html +1 -1
  9. package/dist/core/agent-message-inbox.d.ts +6 -0
  10. package/dist/core/agent-message-inbox.d.ts.map +1 -1
  11. package/dist/core/agent-message-inbox.js +28 -1
  12. package/dist/core/agent-message-inbox.js.map +1 -1
  13. package/dist/core/briefing-level.d.ts +22 -0
  14. package/dist/core/briefing-level.d.ts.map +1 -0
  15. package/dist/core/briefing-level.js +75 -0
  16. package/dist/core/briefing-level.js.map +1 -0
  17. package/dist/core/briefing.d.ts +3 -0
  18. package/dist/core/briefing.d.ts.map +1 -1
  19. package/dist/core/briefing.js +33 -11
  20. package/dist/core/briefing.js.map +1 -1
  21. package/dist/core/capture-liveness.d.ts +1 -0
  22. package/dist/core/capture-liveness.d.ts.map +1 -1
  23. package/dist/core/capture-liveness.js +1 -0
  24. package/dist/core/capture-liveness.js.map +1 -1
  25. package/dist/core/config.d.ts +1 -0
  26. package/dist/core/config.d.ts.map +1 -1
  27. package/dist/core/config.js +3 -1
  28. package/dist/core/config.js.map +1 -1
  29. package/dist/core/paths.d.ts +1 -0
  30. package/dist/core/paths.d.ts.map +1 -1
  31. package/dist/core/paths.js +4 -0
  32. package/dist/core/paths.js.map +1 -1
  33. package/dist/core/schema-export.d.ts.map +1 -1
  34. package/dist/core/schema-export.js +5 -1
  35. package/dist/core/schema-export.js.map +1 -1
  36. package/dist/core/serializer.d.ts +2 -0
  37. package/dist/core/serializer.d.ts.map +1 -1
  38. package/dist/core/serializer.js +119 -6
  39. package/dist/core/serializer.js.map +1 -1
  40. package/dist/core/task-state.d.ts +5 -0
  41. package/dist/core/task-state.d.ts.map +1 -1
  42. package/dist/core/task-state.js +70 -0
  43. package/dist/core/task-state.js.map +1 -1
  44. package/dist/core/types.d.ts +2 -0
  45. package/dist/core/types.d.ts.map +1 -1
  46. package/dist/core/work-topology.d.ts +1 -0
  47. package/dist/core/work-topology.d.ts.map +1 -1
  48. package/dist/core/work-topology.js +3 -0
  49. package/dist/core/work-topology.js.map +1 -1
  50. package/dist/mcp/THIRD_PARTY_NOTICES.txt +2 -2
  51. package/dist/mcp/server.js +448 -121
  52. package/dist/mcp/server.js.map +3 -3
  53. package/dist/skills-manifest.json +29 -24
  54. package/dist/storage/fts-index.d.ts +1 -0
  55. package/dist/storage/fts-index.d.ts.map +1 -1
  56. package/dist/storage/fts-index.js +5 -0
  57. package/dist/storage/fts-index.js.map +1 -1
  58. package/dist/transports/cli/cli.d.ts.map +1 -1
  59. package/dist/transports/cli/cli.js +348 -53
  60. package/dist/transports/cli/cli.js.map +3 -3
  61. package/dist/transports/http/server.d.ts.map +1 -1
  62. package/dist/transports/http/server.js +10 -1
  63. package/dist/transports/http/server.js.map +1 -1
  64. package/dist/transports/mcp/handlers.d.ts +7 -3
  65. package/dist/transports/mcp/handlers.d.ts.map +1 -1
  66. package/dist/transports/mcp/handlers.js +7 -3
  67. package/dist/transports/mcp/handlers.js.map +1 -1
  68. package/dist/transports/schemas.d.ts +1 -0
  69. package/dist/transports/schemas.d.ts.map +1 -1
  70. package/dist/transports/schemas.js +1 -0
  71. package/dist/transports/schemas.js.map +1 -1
  72. package/docs/platforms/agent-messaging.md +17 -3
  73. package/package.json +4 -9
  74. package/scripts/hooks/_generated/agent-message-inbox.js +28 -1
  75. package/scripts/hooks/_generated/briefing-level.js +82 -0
  76. package/scripts/hooks/_generated/capture-liveness.js +1 -0
  77. package/scripts/hooks/_generated/core-paths.js +4 -0
  78. package/scripts/hooks/_generated/fts-index.js +5 -0
  79. package/scripts/hooks/_generated/task-state.js +70 -0
  80. package/scripts/hooks/_generated/work-topology.js +3 -0
  81. package/scripts/hooks/_shared.js +623 -15
  82. package/scripts/hooks/pre-edit-recall.js +386 -65
  83. package/scripts/hooks/session-start.js +261 -77
  84. package/scripts/hooks/user-prompt-intent.js +38 -6
  85. package/scripts/upgrade-plugin.sh +3 -4
  86. package/skills/memesh/SKILL.md +26 -16
@@ -8,7 +8,7 @@
8
8
  "name": "memesh",
9
9
  "source": "./",
10
10
  "description": "MeMesh \u2014 agentic memory for coding agents. Captured from the agent's real work via hooks, recalled when it acts. One SQLite file, zero cloud required.",
11
- "version": "4.10.1",
11
+ "version": "4.10.2",
12
12
  "author": {
13
13
  "name": "PCIRCLE AI"
14
14
  },
@@ -4,7 +4,7 @@
4
4
  "author": {
5
5
  "name": "PCIRCLE AI"
6
6
  },
7
- "version": "4.10.1",
7
+ "version": "4.10.2",
8
8
  "mcpServers": "./.claude-plugin/mcp.json",
9
9
  "homepage": "https://github.com/PCIRCLE-AI/memesh",
10
10
  "repository": "https://github.com/PCIRCLE-AI/memesh",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "memesh",
3
3
  "description": "MeMesh — agentic memory for coding agents.",
4
- "version": "4.10.1",
4
+ "version": "4.10.2",
5
5
  "mcpServers": "./.codex-plugin/mcp.json"
6
6
  }
package/AGENTS.md CHANGED
@@ -9,10 +9,32 @@ host is recallable from all of them. Not installed yet? Follow
9
9
 
10
10
  1. **Session start — load, don't re-explore.** Call the `briefing` tool once
11
11
  (CLI: `memesh briefing`). It returns the assembled work topology for the
12
- current project: goal / next / blocked / done, decisions, lessons,
13
- knowledge, recent activity, and closing the block a capped index of
14
- recent durable memories, one line each with its `[mem:id]` handle
15
- (`memesh briefing --index` prints just that). The index is a recent
12
+ current project: decisions, lessons, knowledge and recent activity are
13
+ always included; the stated goal / next / blocked / done and the capped
14
+ durable-memory index (`memesh briefing --index` prints just that, one
15
+ line each with its `[mem:id]` handle) are added at `standard` (the
16
+ default) and up. How much is assembled depends on the `briefing` setting
17
+ — `minimal` (this project only: decisions, lessons, knowledge, recent
18
+ activity, with the repository state in front whenever anything else is
19
+ injected — nothing else), `standard` (+ the task state
20
+ when fresh, + the durable-memory index — **default**), `full` (+ global
21
+ memory + other projects' recent activity, the pre-#360 memory-block
22
+ behaviour — except when the task state itself is stale or of unknown
23
+ age, where the one-line replacement below applies at `full` too) — set
24
+ with `memesh config set briefing <level>`. The SessionStart hook
25
+ additionally appends a work-package notice at `full` (see below); that
26
+ notice is a host-agent instruction, not memory, and this tool never
27
+ includes it, at any level. A
28
+ goal/next/blocked/done stated more than 72 hours ago, or whose timestamp
29
+ is missing/unreadable/implausibly future-dated, is not injected as
30
+ current at any level — only one line saying so and how to see it
31
+ (`memesh task`). Only `minimal` can be fully silent: when the project has
32
+ no ranked memories, no stale-state flag and no unread message (a fresh
33
+ task state may exist — `minimal` does not show it — and there is no
34
+ index to fall back to), nothing is injected at all, the repository state
35
+ included — no empty framing; `standard`/`full` still show the index's
36
+ own "no durable memories yet" line even then, because that line is
37
+ itself informative. The index is a recent
16
38
  window, not everything: it holds at most 40 lines / 3072 bytes, memories
17
39
  untouched for 180 days collapse into a single count line with no
18
40
  `[mem:id]`, and whatever else is cut past those caps becomes an
@@ -21,8 +43,12 @@ host is recallable from all of them. Not installed yet? Follow
21
43
  more, call `recall` rather than assuming the index already covers it.
22
44
  Read the index instead of re-reading the repo to reconstruct context.
23
45
  2. **When the user states a goal, a next step, or a blocker — record it.**
24
- Call the `task_state` tool (CLI: `memesh task --goal "…" --next "…"`). It
25
- is injected at the start of the next session and acted on as fact.
46
+ Call the `task_state` tool (CLI: `memesh task --goal "…" --next "…"`).
47
+ Fresh state is injected at the start of the next session at
48
+ `standard`/`full` (the default and above) and acted on as fact;
49
+ `minimal` never shows a fresh state, but a stale or unknown-age one
50
+ still gets a one-line flag at every level — `memesh task` always shows
51
+ the complete stored state.
26
52
  - An empty string **clears** a field: pass `blocked: ""` (CLI:
27
53
  `memesh task --blocked ""`) once a blocker is resolved.
28
54
  - **Record only what the user actually said.** Never infer goal / next /
@@ -49,10 +75,13 @@ host is recallable from all of them. Not installed yet? Follow
49
75
  declarations remain unknown. Then send a `message`. The host's own push tool (Claude
50
76
  Code's `SendMessage`, a Codex queue) delivers a wakeup; it is not the
51
77
  record, and it cannot reach an agent on a different host or one that is
52
- not running. Generic `briefing` and SessionStart context has no recipient
53
- identity and stays quiet. Check an inbox with the exact `project` and
54
- `recipient`; poll first, then fetch each returned `message_id`. Fetching
55
- does not acknowledge.
78
+ not running. Generic `briefing` has no recipient identity and stays quiet;
79
+ so do the SessionStart and prompt hooks, unless the session declared who it
80
+ is by starting with `MEMESH_RECIPIENT=<id>`, in which case they say how many
81
+ messages wait for that recipient and in which project. Check an inbox with
82
+ the exact `project` and `recipient`; poll first, then fetch each returned
83
+ `message_id`, then record `intake` for it: fetching alone does not
84
+ acknowledge and does not end the reminder.
56
85
 
57
86
  ## All 12 MCP tools
58
87
 
@@ -66,7 +95,7 @@ host is recallable from all of them. Not installed yet? Follow
66
95
  | `import` | Import a JSON export; `merge_strategy` (required): skip / append / overwrite |
67
96
  | `learn` | Record a structured lesson: error, root cause, fix, prevention |
68
97
  | `task_state` | Read or update where the work stands: goal / next / blocked / done |
69
- | `briefing` | The assembled work topology, closing with a capped index of the project's durable memories; exact `project` + `recipient` can surface only that recipient's unfetched deliveries |
98
+ | `briefing` | The assembled work topology, closing, by default, with a capped index of the project's durable memories (the `briefing` setting — `minimal` / `standard` / `full` — controls how much is assembled); exact `project` + `recipient` can surface only that recipient's unfetched deliveries |
70
99
  | `user_patterns` | Analyze work schedule, tool preferences, and focus areas from memory |
71
100
  | `improvement` | Propose an evidence-linked product improvement or read its status; only a human may accept/reject it |
72
101
  | `message` | Discover live agents, then exchange exact-recipient untrusted messages: durable JSON payload max 64 KiB; complete native envelope max 16 KiB with distinct `native_message_too_large` and `recipient_unavailable` errors; delivery reads/acceptance never imply ACK or disposition |
@@ -118,8 +147,10 @@ host is recallable from all of them. Not installed yet? Follow
118
147
 
119
148
  Under Claude Code with the MeMesh plugin, hooks capture automatically:
120
149
 
121
- - **SessionStart** injects the work topology (the same block `briefing`
122
- returns) at the top of the session.
150
+ - **SessionStart** injects the work topology (the same memory block
151
+ `briefing` returns, plus a work-package notice at `full` that `briefing`
152
+ never includes) at the top of the session, whenever the configured level
153
+ has something to show; an empty project at `minimal` injects nothing.
123
154
  - **PreToolUse (Edit|Write)** surfaces memories related to the file being
124
155
  edited.
125
156
  - **PostToolUse (Bash)** records git commits with diff stats.
package/README.de.md CHANGED
@@ -119,11 +119,11 @@ memesh remember "Login verwendet OAuth 2.0 mit PKCE"
119
119
  memesh recall "Login"
120
120
  # -> findet die PKCE-Entscheidung
121
121
 
122
- memesh briefing # was der Agent über dieses Projekt weiß und wo du aufgehört hast
122
+ memesh briefing # was der Agent über dieses Projekt weiß
123
123
  memesh serve # startet den lokalen Server und gibt die Dashboard-URL aus
124
124
  ```
125
125
 
126
- Lass `memesh serve` laufen und öffne die ausgegebene URL. Für die Memory-Tools brauchst du in Claude Code nicht einmal das Terminal: Sag im Chat „remember this“, und das Briefing kommt bei jedem Sitzungsstart von selbst.
126
+ Lass `memesh serve` laufen und öffne die ausgegebene URL. Für die Memory-Tools brauchst du in Claude Code nicht einmal das Terminal: Sag im Chat „remember this“, und sobald es etwas zu zeigen gibt, kommt das Briefing beim Sitzungsstart von selbst.
127
127
 
128
128
  Zwei Dinge, die du kennen solltest, sobald Erinnerungen da sind:
129
129
 
@@ -146,7 +146,7 @@ Alle Befehle und Tools: [docs/api/API_REFERENCE.md](docs/api/API_REFERENCE.md).
146
146
  | `import` | Memories mit Merge-Strategien importieren (Skip / Overwrite / Append) |
147
147
  | `learn` | Strukturierte Lektionen aus Fehlern erfassen (Fehler, Grundursache, Behebung, Prävention) |
148
148
  | `task_state` | Arbeitsstand lesen oder festhalten — Ziel, nächster Schritt, Blocker, gerade Erledigtes |
149
- | `briefing` | Die Arbeitstopologie für jeden MCP-Client, abgeschlossen durch einen begrenzten Index der dauerhaften Memories des Projekts; allgemeiner Kontext bleibt still, während exakte Angaben für `project` + `recipient` nur dessen noch nicht abgerufene Zustellungen anzeigen |
149
+ | `briefing` | Die Arbeitstopologie für jeden MCP-Client wird standardmäßig mit einem begrenzten Index der dauerhaften Memories des Projekts abgeschlossen; wie viel Inhalt zusammengestellt wird, steuert die Einstellung `briefing` (`minimal` / `standard` / `full`); allgemeiner Kontext bleibt still, während exakte Angaben für `project` + `recipient` nur dessen noch nicht abgerufene Zustellungen anzeigen |
150
150
  | `user_patterns` | Arbeitsmuster analysieren — Zeitplan, Tools, Stärken, Lernbereiche |
151
151
  | `improvement` | Evidenzverknüpfte Produktverbesserung zur menschlichen Prüfung vorschlagen oder ihren Status lesen; Agenten können sie nicht selbst annehmen oder ablehnen |
152
152
  | `message` | Aktive Agenten finden und nicht vertrauenswürdige Nachrichten mit exaktem Empfänger austauschen. Dauerhafter JSON-Payload: max. 64 KiB; vollständiger nativer Envelope: max. 16 KiB mit getrennten Fehlern `native_message_too_large` und `recipient_unavailable`. Native Annahme, Discovery, Poll und Fetch bedeuten weder Bestätigung noch Workflow-Status |
package/README.md CHANGED
@@ -119,11 +119,11 @@ memesh remember "Login uses OAuth 2.0 with PKCE"
119
119
  memesh recall "login"
120
120
  # -> finds the PKCE decision
121
121
 
122
- memesh briefing # what the agent knows about this project, where you left off
122
+ memesh briefing # what the agent knows about this project
123
123
  memesh serve # starts the local server and prints the dashboard URL
124
124
  ```
125
125
 
126
- Keep `memesh serve` running and open the printed URL. In Claude Code you do not even need the terminal for memory tools: say "remember this" in chat, and the briefing arrives on its own at every session start.
126
+ Keep `memesh serve` running and open the printed URL. In Claude Code you do not even need the terminal for memory tools: say "remember this" in chat, and once there is something to show, the briefing arrives on its own at session start.
127
127
 
128
128
  Two things worth knowing once you have memories:
129
129
 
@@ -146,7 +146,7 @@ Full command and tool reference: [docs/api/API_REFERENCE.md](docs/api/API_REFERE
146
146
  | `import` | Import memories with merge strategies (skip / overwrite / append) |
147
147
  | `learn` | Record structured lessons from mistakes (error, root cause, fix, prevention) |
148
148
  | `task_state` | Read or record where the work stands — goal, next step, blocker, what was just finished |
149
- | `briefing` | The assembled work topology for any MCP client, closing with a capped index of the project's durable memories; generic context stays quiet, while exact `project` + `recipient` can surface only that recipient's unfetched deliveries |
149
+ | `briefing` | The assembled work topology for any MCP client, closing, by default, with a capped index of the project's durable memories (the `briefing` setting — `minimal` / `standard` / `full` — controls how much is assembled); generic context stays quiet, while exact `project` + `recipient` can surface only that recipient's unfetched deliveries |
150
150
  | `user_patterns` | Analyze your work patterns — schedule, tools, strengths, learning areas |
151
151
  | `improvement` | Stage an evidence-linked product improvement for human review, or read its status; agents cannot accept or reject it |
152
152
  | `message` | Discover live agents, then exchange exact-recipient untrusted messages. Durable JSON payload max: 64 KiB; complete native envelope max: 16 KiB with distinct `native_message_too_large` and `recipient_unavailable` failures. Native acceptance, discovery, poll, and fetch never imply acknowledgement or disposition |
package/README.zh-TW.md CHANGED
@@ -121,11 +121,11 @@ memesh remember "登入功能用 OAuth 2.0 加 PKCE"
121
121
  memesh recall "登入"
122
122
  # -> 找到那筆 PKCE 的決定
123
123
 
124
- memesh briefing # agent 對這個專案知道多少、上次做到哪
124
+ memesh briefing # agent 對這個專案知道多少
125
125
  memesh serve # 啟動本機 server 並印出儀表板網址
126
126
  ```
127
127
 
128
- 讓 `memesh serve` 保持執行,再開啟它印出的網址。在 Claude Code 裡使用記憶工具時連終端機都不用開:在對話裡說「記下來」就好,每次開新對話也會自動先收到摘要。
128
+ 讓 `memesh serve` 保持執行,再開啟它印出的網址。在 Claude Code 裡使用記憶工具時連終端機都不用開:在對話裡說「記下來」就好;有內容可看之後,開新對話時也會自動先收到摘要。
129
129
 
130
130
  有了記憶之後,兩件值得知道的事:
131
131
 
@@ -148,7 +148,7 @@ memesh serve # 啟動本機 server 並印出儀表板網址
148
148
  | `import` | 匯入記憶,包含合併策略(跳過 / 覆寫 / 追加) |
149
149
  | `learn` | 記錄來自錯誤的結構化教訓(錯誤、根本原因、修復、預防) |
150
150
  | `task_state` | 讀取或記下工作進度——目標、下一步、卡住的地方、剛完成的事 |
151
- | `briefing` | 提供給任何 MCP client 的工作拓撲,最後附上這個專案長期記憶的索引(有數量上限);一般情境不顯示未讀訊息,確切的 `project` + `recipient` 才會顯示該收件者尚未擷取的訊息 |
151
+ | `briefing` | 提供給任何 MCP client 的工作拓撲,預設情況下最後會附上這個專案長期記憶的索引(有數量上限)——實際組裝多少內容由 `briefing` 設定(`minimal` / `standard` / `full`)決定;一般情境不顯示未讀訊息,確切的 `project` + `recipient` 才會顯示該收件者尚未擷取的訊息 |
152
152
  | `user_patterns` | 分析你的工作模式——時間表、工具、優勢、學習領域 |
153
153
  | `improvement` | 將有證據來源的產品改善送交人類審核,或讀取其狀態;agent 不能自行接受或拒絕 |
154
154
  | `message` | 先找出活動 agent,再交換確切收件者的不受信任訊息。Durable JSON payload 上限 64 KiB;完整 native envelope 上限 16 KiB,並區分 `native_message_too_large` 與 `recipient_unavailable`。原生接受、探索、輪詢與擷取都不代表 ACK 或 workflow disposition |