@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.
- package/.claude-plugin/marketplace.json +1 -1
- package/.claude-plugin/plugin.json +1 -1
- package/.codex-plugin/plugin.json +1 -1
- package/AGENTS.md +44 -13
- package/README.de.md +3 -3
- package/README.md +3 -3
- package/README.zh-TW.md +3 -3
- package/dashboard/dist/index.html +1 -1
- package/dist/core/agent-message-inbox.d.ts +6 -0
- package/dist/core/agent-message-inbox.d.ts.map +1 -1
- package/dist/core/agent-message-inbox.js +28 -1
- package/dist/core/agent-message-inbox.js.map +1 -1
- package/dist/core/briefing-level.d.ts +22 -0
- package/dist/core/briefing-level.d.ts.map +1 -0
- package/dist/core/briefing-level.js +75 -0
- package/dist/core/briefing-level.js.map +1 -0
- package/dist/core/briefing.d.ts +3 -0
- package/dist/core/briefing.d.ts.map +1 -1
- package/dist/core/briefing.js +33 -11
- package/dist/core/briefing.js.map +1 -1
- package/dist/core/capture-liveness.d.ts +1 -0
- package/dist/core/capture-liveness.d.ts.map +1 -1
- package/dist/core/capture-liveness.js +1 -0
- package/dist/core/capture-liveness.js.map +1 -1
- package/dist/core/config.d.ts +1 -0
- package/dist/core/config.d.ts.map +1 -1
- package/dist/core/config.js +3 -1
- package/dist/core/config.js.map +1 -1
- package/dist/core/paths.d.ts +1 -0
- package/dist/core/paths.d.ts.map +1 -1
- package/dist/core/paths.js +4 -0
- package/dist/core/paths.js.map +1 -1
- package/dist/core/schema-export.d.ts.map +1 -1
- package/dist/core/schema-export.js +5 -1
- package/dist/core/schema-export.js.map +1 -1
- package/dist/core/serializer.d.ts +2 -0
- package/dist/core/serializer.d.ts.map +1 -1
- package/dist/core/serializer.js +119 -6
- package/dist/core/serializer.js.map +1 -1
- package/dist/core/task-state.d.ts +5 -0
- package/dist/core/task-state.d.ts.map +1 -1
- package/dist/core/task-state.js +70 -0
- package/dist/core/task-state.js.map +1 -1
- package/dist/core/types.d.ts +2 -0
- package/dist/core/types.d.ts.map +1 -1
- package/dist/core/work-topology.d.ts +1 -0
- package/dist/core/work-topology.d.ts.map +1 -1
- package/dist/core/work-topology.js +3 -0
- package/dist/core/work-topology.js.map +1 -1
- package/dist/mcp/THIRD_PARTY_NOTICES.txt +2 -2
- package/dist/mcp/server.js +448 -121
- package/dist/mcp/server.js.map +3 -3
- package/dist/skills-manifest.json +29 -24
- package/dist/storage/fts-index.d.ts +1 -0
- package/dist/storage/fts-index.d.ts.map +1 -1
- package/dist/storage/fts-index.js +5 -0
- package/dist/storage/fts-index.js.map +1 -1
- package/dist/transports/cli/cli.d.ts.map +1 -1
- package/dist/transports/cli/cli.js +348 -53
- package/dist/transports/cli/cli.js.map +3 -3
- package/dist/transports/http/server.d.ts.map +1 -1
- package/dist/transports/http/server.js +10 -1
- package/dist/transports/http/server.js.map +1 -1
- package/dist/transports/mcp/handlers.d.ts +7 -3
- package/dist/transports/mcp/handlers.d.ts.map +1 -1
- package/dist/transports/mcp/handlers.js +7 -3
- package/dist/transports/mcp/handlers.js.map +1 -1
- package/dist/transports/schemas.d.ts +1 -0
- package/dist/transports/schemas.d.ts.map +1 -1
- package/dist/transports/schemas.js +1 -0
- package/dist/transports/schemas.js.map +1 -1
- package/docs/platforms/agent-messaging.md +17 -3
- package/package.json +4 -9
- package/scripts/hooks/_generated/agent-message-inbox.js +28 -1
- package/scripts/hooks/_generated/briefing-level.js +82 -0
- package/scripts/hooks/_generated/capture-liveness.js +1 -0
- package/scripts/hooks/_generated/core-paths.js +4 -0
- package/scripts/hooks/_generated/fts-index.js +5 -0
- package/scripts/hooks/_generated/task-state.js +70 -0
- package/scripts/hooks/_generated/work-topology.js +3 -0
- package/scripts/hooks/_shared.js +623 -15
- package/scripts/hooks/pre-edit-recall.js +386 -65
- package/scripts/hooks/session-start.js +261 -77
- package/scripts/hooks/user-prompt-intent.js +38 -6
- package/scripts/upgrade-plugin.sh +3 -4
- 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.
|
|
11
|
+
"version": "4.10.2",
|
|
12
12
|
"author": {
|
|
13
13
|
"name": "PCIRCLE AI"
|
|
14
14
|
},
|
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:
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
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 "…"`).
|
|
25
|
-
is injected at the start of the next session
|
|
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`
|
|
53
|
-
|
|
54
|
-
`
|
|
55
|
-
|
|
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
|
|
122
|
-
returns
|
|
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ß
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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 |
|