@pcircle/memesh 4.7.1 → 4.7.3
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 +2 -2
- package/.claude-plugin/plugin.json +2 -2
- package/AGENTS.md +9 -2
- package/README.de.md +59 -7
- package/README.zh-TW.md +59 -7
- package/dist/core/briefing.d.ts.map +1 -1
- package/dist/core/briefing.js +1 -0
- package/dist/core/briefing.js.map +1 -1
- package/dist/core/demo.d.ts.map +1 -1
- package/dist/core/demo.js +21 -2
- package/dist/core/demo.js.map +1 -1
- package/dist/core/doctor.d.ts.map +1 -1
- package/dist/core/doctor.js +31 -7
- package/dist/core/doctor.js.map +1 -1
- package/dist/core/install-channel.d.ts +5 -1
- package/dist/core/install-channel.d.ts.map +1 -1
- package/dist/core/install-channel.js +33 -4
- package/dist/core/install-channel.js.map +1 -1
- package/dist/core/serializer.d.ts.map +1 -1
- package/dist/core/serializer.js +7 -2
- package/dist/core/serializer.js.map +1 -1
- package/dist/core/types.d.ts +1 -0
- package/dist/core/types.d.ts.map +1 -1
- package/dist/core/why.d.ts +1 -1
- package/dist/core/why.d.ts.map +1 -1
- package/dist/core/why.js +5 -0
- package/dist/core/why.js.map +1 -1
- package/dist/db.d.ts.map +1 -1
- package/dist/db.js +19 -26
- package/dist/db.js.map +1 -1
- package/dist/skills-manifest.json +14 -14
- package/dist/storage/fts-index.d.ts.map +1 -1
- package/dist/storage/fts-index.js.map +1 -1
- package/dist/transports/cli/cli.js +26 -4
- package/dist/transports/cli/cli.js.map +1 -1
- package/dist/transports/http/server.d.ts.map +1 -1
- package/dist/transports/http/server.js +2 -2
- package/dist/transports/http/server.js.map +1 -1
- package/dist/transports/mcp/handlers.d.ts +3 -1
- package/dist/transports/mcp/handlers.d.ts.map +1 -1
- package/dist/transports/mcp/handlers.js +12 -3
- package/dist/transports/mcp/handlers.js.map +1 -1
- package/dist/transports/schemas.d.ts.map +1 -1
- package/dist/transports/schemas.js +2 -1
- package/dist/transports/schemas.js.map +1 -1
- package/package.json +2 -2
- package/scripts/hooks/_shared.js +4 -2
- package/scripts/hooks/guard-check.js +5 -0
- package/scripts/hooks/post-commit.js +13 -1
- package/scripts/hooks/pre-edit-recall.js +22 -0
- package/scripts/hooks/session-start.js +45 -1
- package/scripts/hooks/session-summary.js +13 -2
|
@@ -7,8 +7,8 @@
|
|
|
7
7
|
{
|
|
8
8
|
"name": "memesh",
|
|
9
9
|
"source": "./",
|
|
10
|
-
"description": "MeMesh
|
|
11
|
-
"version": "4.7.
|
|
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.7.3",
|
|
12
12
|
"author": {
|
|
13
13
|
"name": "PCIRCLE AI"
|
|
14
14
|
},
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "memesh",
|
|
3
|
-
"description": "MeMesh
|
|
3
|
+
"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.",
|
|
4
4
|
"author": {
|
|
5
5
|
"name": "PCIRCLE AI"
|
|
6
6
|
},
|
|
7
|
-
"version": "4.7.
|
|
7
|
+
"version": "4.7.3",
|
|
8
8
|
"homepage": "https://github.com/PCIRCLE-AI/memesh",
|
|
9
9
|
"repository": "https://github.com/PCIRCLE-AI/memesh",
|
|
10
10
|
"license": "MIT",
|
package/AGENTS.md
CHANGED
|
@@ -91,8 +91,15 @@ injected), and do not `remember` commits or session summaries by hand. Manual
|
|
|
91
91
|
calls are for what hooks cannot see — decisions and their rationale, lessons
|
|
92
92
|
worth keeping, and user-stated task state.
|
|
93
93
|
|
|
94
|
-
|
|
95
|
-
|
|
94
|
+
On a host with no hooks (Gemini CLI, Cursor, an MCP-only setup, …) the loop is
|
|
95
|
+
fully manual, and it is worth running.
|
|
96
|
+
|
|
97
|
+
Codex CLI can be either. Wired as an MCP server it has no hooks, like the
|
|
98
|
+
above. Installed as a plugin (`codex plugin add memesh@pcircle-memesh`) it
|
|
99
|
+
reads the same `hooks/hooks.json` manifest Claude Code does and runs the same
|
|
100
|
+
hook scripts, so the topology is injected for you there too. If you are unsure
|
|
101
|
+
which one you are in, `memesh doctor` names it: the "Hooks wired into Claude
|
|
102
|
+
Code" row says which plugin runtime it found.
|
|
96
103
|
|
|
97
104
|
## Working on this repository (contributing agents)
|
|
98
105
|
|
package/README.de.md
CHANGED
|
@@ -16,11 +16,13 @@
|
|
|
16
16
|
|
|
17
17
|
---
|
|
18
18
|
|
|
19
|
-
**MeMesh**
|
|
19
|
+
**MeMesh** ist eine **Open-Source-Speicherschicht** für KI-Coding-Agenten — für Claude Code, Codex, Gemini, Cursor und andere MCP-Clients.
|
|
20
|
+
|
|
21
|
+
Sie erfasst Memories aus dem, was der Agent wirklich tut, und gibt das Passende genau dann zurück, wenn er handelt. Widersprechen sich zwei Memories, sagt sie es. Alles liegt in einer SQLite-Datei, ohne Cloud.
|
|
20
22
|
|
|
21
23
|
## Installation
|
|
22
24
|
|
|
23
|
-
**In Claude Code** — diese zwei Zeilen im Chat eingeben (Hooks, Memory-Tools und der `/memesh`-Skill werden automatisch
|
|
25
|
+
**In Claude Code** — diese zwei Zeilen im Chat eingeben (Hooks, Memory-Tools und der `/memesh`-Skill werden automatisch eingerichtet):
|
|
24
26
|
|
|
25
27
|
```
|
|
26
28
|
/plugin marketplace add PCIRCLE-AI/memesh
|
|
@@ -36,15 +38,26 @@ npm install -g @pcircle/memesh
|
|
|
36
38
|
memesh doctor # prüft diese Installation Ende-zu-Ende
|
|
37
39
|
```
|
|
38
40
|
|
|
39
|
-
Die meisten Claude-Code-Nutzer
|
|
41
|
+
Die meisten Claude-Code-Nutzer installieren am Ende **beides**. Beide nutzen dieselbe Datenbank und kommen sich nicht in die Quere. Details, weitere Agenten und Upgrades stehen unten unter „In 60 Sekunden starten".
|
|
40
42
|
|
|
41
43
|
## Das Problem
|
|
42
44
|
|
|
43
|
-
Ihr Coding-Agent vergisst nicht nur Fakten
|
|
45
|
+
Ihr Coding-Agent vergisst zwischen zwei Sessions nicht nur Fakten. Schlimmer: er **macht dieselbe Arbeit noch einmal**.
|
|
46
|
+
|
|
47
|
+
- Er schlägt wieder den Ansatz vor, den Sie letzten Monat abgelehnt haben
|
|
48
|
+
- Er stolpert erneut über denselben fehlschlagenden Test
|
|
49
|
+
- Er „entdeckt" die Einschränkung wieder, die im März die Produktion lahmgelegt hat
|
|
50
|
+
- Er bittet Sie, ihm die Architektur zu erklären, die er selbst mitentworfen hat
|
|
51
|
+
|
|
52
|
+
Das ist kein Problem des Chatverlaufs. Was zwischen Sessions überleben muss, ist nicht das Gespräch, sondern die *Arbeit*: welche Entscheidungen gefallen sind, warum, was fehlgeschlagen ist, wie es behoben wurde — und wie das alles zusammenhängt.
|
|
44
53
|
|
|
45
|
-
|
|
54
|
+
**Genau diese Lücke füllt MeMesh.** Es tut drei Dinge:
|
|
46
55
|
|
|
47
|
-
**
|
|
56
|
+
- **Automatisch festhalten**: Hooks erfassen, was der Agent wirklich tut — Sessions, Commits, Fehlschläge. Keine handgeschriebenen Notizen
|
|
57
|
+
- **Zurückgeben, wenn es zählt**: beim Session-Start und vor jeder Dateibearbeitung landen die passenden Memories vor dem Agenten
|
|
58
|
+
- **Nicht verrotten lassen**: neue Entscheidungen lösen alte ab, und widersprechen sich zwei Memories, beurteilt ein LLM den Konflikt und markiert ihn
|
|
59
|
+
|
|
60
|
+
Installation über npm, gespeichert wird in `~/.memesh/knowledge-graph.db`, angebunden an Claude Code oder jeden MCP-fähigen Client.
|
|
48
61
|
|
|
49
62
|
> [!IMPORTANT]
|
|
50
63
|
> **Aktiv entwickeltes Projekt** — Funktionen entwickeln sich kontinuierlich weiter und können sich zwischen Releases ändern. Bei Bugs oder Feature-Wünschen bitte [ein Issue eröffnen](https://github.com/PCIRCLE-AI/memesh/issues).
|
|
@@ -413,7 +426,7 @@ Wenn npm eine installierte Version als veraltet kennzeichnet (typischerweise ein
|
|
|
413
426
|
|
|
414
427
|
**🔄 Wissensentwicklung** — Entscheidungen ändern sich. `forget` archiviert alte Memories (löscht nie). `supersedes`-Relationen verbinden alt → neu. Ihr KI sieht immer die aktuelle Version.
|
|
415
428
|
|
|
416
|
-
**⚠️ Konflikterkennung** —
|
|
429
|
+
**⚠️ Konflikterkennung** — `memesh dream conflicts` lässt das LLM Ihre semantisch nächstliegenden Memory-Paare auf Widerspruch, Supersession oder Duplikat prüfen und legt die Treffer als Vorschläge ab. Nichts wird von selbst übernommen: Sie prüfen mit `dream list` / `dream show`, und erst ein akzeptierter Vorschlag erstellt die Relation — danach trägt jedes `recall`, das eine der beiden Memories betrifft, die Warnung. Kausalität wird nie aus Zeitstempeln abgeleitet; die Urteile beruhen darauf, was die Memories tatsächlich aussagen.
|
|
417
430
|
|
|
418
431
|
**🕸️ Wissensgraph-Konnektivität** — `memesh kg backfill-relations --all-rules` verknüpft verwaiste Entitäten über Tag-Kookurrenz, Projekt-Clustering, Sitzungskontext und Namensähnlichkeit — ohne LLM.
|
|
419
432
|
|
|
@@ -435,6 +448,45 @@ Importierte Bundles bleiben durchsuchbar, aber MeMesh injiziert importierte Memo
|
|
|
435
448
|
|
|
436
449
|
---
|
|
437
450
|
|
|
451
|
+
## Rezepte
|
|
452
|
+
|
|
453
|
+
### Einen Widerspruch erkennen, bevor er zum Problem wird
|
|
454
|
+
|
|
455
|
+
Zwei Entscheidungen, Wochen auseinander getroffen, die nicht beide wahr sein können — genau das Fehlerbild, das eine Memory-Schicht abfangen soll:
|
|
456
|
+
|
|
457
|
+
```bash
|
|
458
|
+
memesh remember --name retry-policy --type decision \
|
|
459
|
+
--obs "Alle HTTP-Clients wiederholen fehlgeschlagene Requests bis zu 5-mal mit exponentiellem Backoff."
|
|
460
|
+
# ...Wochen später entscheidet jemand das Gegenteil...
|
|
461
|
+
memesh remember --name retry-policy-v2 --type decision \
|
|
462
|
+
--obs "HTTP-Clients dürfen niemals automatisch wiederholen — sofort fehlschlagen und den Fehler melden."
|
|
463
|
+
|
|
464
|
+
memesh dream conflicts # markiert das Paar, mit Begründung
|
|
465
|
+
memesh dream show 1 # Urteil, Auszüge und Folgen der Annahme lesen
|
|
466
|
+
memesh dream accept 1 # SIE entscheiden — nichts wird je automatisch verknüpft
|
|
467
|
+
memesh recall "retry policy" # → Warnung: Konflikte erkannt
|
|
468
|
+
```
|
|
469
|
+
|
|
470
|
+
Ab dann wird jedem Assistenten, der eine der beiden Entscheidungen abruft, gesagt, dass sie im Widerspruch stehen — statt selbstbewusst die zuerst gefundene zu zitieren.
|
|
471
|
+
|
|
472
|
+
### Eine Erinnerung, drei Assistenten
|
|
473
|
+
|
|
474
|
+
MeMesh ist ein MCP-Server, daher bedient dieselbe SQLite-Datei jeden MCP-Client auf der Maschine. Einmal pro Tool registrieren (die genauen Befehle stehen oben unter „In 60 Sekunden starten") — und eine in Claude Code gespeicherte Entscheidung wird mitten in der Session von Codex oder Gemini CLI abgerufen: kein erneutes Erklären, kein Kontext zwischen Anbietern hin- und herkopieren.
|
|
475
|
+
|
|
476
|
+
### Entscheidungen so festhalten, dass sie auffindbar bleiben
|
|
477
|
+
|
|
478
|
+
Auto-Capture hält die Session-Historie fest, aber die Erinnerungen, die sich wirklich auszahlen, sind die bewusst gespeicherten:
|
|
479
|
+
|
|
480
|
+
```bash
|
|
481
|
+
memesh remember --name auth-approach --type decision \
|
|
482
|
+
--obs "JWT mit RS256; PKCE statt Implicit Flow, weil der Client öffentlich ist." \
|
|
483
|
+
--tags "project:myapp" "topic:auth"
|
|
484
|
+
```
|
|
485
|
+
|
|
486
|
+
Verknüpfen Sie dann Folgen mit ihren Ursachen, sobald sie eintreten — von jedem MCP-Client aus, in normalen Worten: „diesen Vorfall als Lektion speichern, beeinflusst von auth-approach". Das `remember`-Tool nimmt frei formulierte Relationen entgegen, und `caused` / `influenced` sind das dokumentierte Kausal-Vokabular (Ursache → Wirkung, explizit angegeben — MeMesh leitet Kausalität nie aus Zeitstempeln ab). Wochen später liefert `memesh recall "warum haben wir uns für PKCE entschieden"` die Entscheidung samt der aufgezeichneten Folgen — nachvollziehbare Begründung, nicht nur zufällig passender Text.
|
|
487
|
+
|
|
488
|
+
---
|
|
489
|
+
|
|
438
490
|
## Smart Mode freischalten (optional)
|
|
439
491
|
|
|
440
492
|
MeMesh funktioniert standardmäßig offline — Recall bleibt strikt LLM-frei (95,60 % R@5 auf LongMemEval-S, ohne LLM). Fügen Sie einen LLM API-Schlüssel nur hinzu, wenn Sie LLM-augmentierte Analyseflüsse zusätzlich nutzen möchten: intelligentere Session-Extraktion, Auto-Tagging neuer Memories, Lektionen aus Fehlern und `dream` Kompression:
|
package/README.zh-TW.md
CHANGED
|
@@ -16,7 +16,9 @@
|
|
|
16
16
|
|
|
17
17
|
---
|
|
18
18
|
|
|
19
|
-
**MeMesh**
|
|
19
|
+
**MeMesh** 是給 AI 程式開發代理用的**開源記憶層**,支援 Claude Code、Codex、Gemini、Cursor 和其他 MCP 用戶端。
|
|
20
|
+
|
|
21
|
+
它從代理實際做的事情裡擷取記憶,在代理要動手的那一刻把相關的部分送回去。記憶彼此矛盾時,它會說出來。全部存在一個 SQLite 檔案裡,不需要雲端。
|
|
20
22
|
|
|
21
23
|
## 安裝
|
|
22
24
|
|
|
@@ -36,15 +38,26 @@ npm install -g @pcircle/memesh
|
|
|
36
38
|
memesh doctor # 端到端驗證這份安裝
|
|
37
39
|
```
|
|
38
40
|
|
|
39
|
-
|
|
41
|
+
多數 Claude Code 使用者兩種都會裝。它們共用同一個資料庫,不會互相干擾。想知道細節、其他代理怎麼接、怎麼升級,看下面的「60 秒快速開始」。
|
|
40
42
|
|
|
41
43
|
## 問題所在
|
|
42
44
|
|
|
43
|
-
|
|
45
|
+
你的代理換一次對話就忘光,這還不是最糟的。最糟的是它會**把做過的事再做一次**:
|
|
46
|
+
|
|
47
|
+
- 重新提議你上個月否決掉的做法
|
|
48
|
+
- 再一次被同一個測試絆倒
|
|
49
|
+
- 重新「發現」三月那條弄壞 production 的限制
|
|
50
|
+
- 要你重講一遍當初它也有份設計的架構
|
|
51
|
+
|
|
52
|
+
這不是「聊天記錄沒存好」的問題。要留下來的不是對話,是*工作本身*——做過什麼決定、為什麼那樣決定、哪裡失敗過、後來怎麼修的,以及這些事情之間的關係。
|
|
44
53
|
|
|
45
|
-
|
|
54
|
+
**MeMesh 補的就是這一塊。** 它做三件事:
|
|
46
55
|
|
|
47
|
-
|
|
56
|
+
- **自動記下來**:hooks 從代理真正做過的事情擷取——session、commit、失敗,不用你手動寫筆記
|
|
57
|
+
- **在需要的時候送回去**:session 開始時、要改檔案之前,把相關記憶放進代理眼前
|
|
58
|
+
- **不讓記憶爛掉**:新的決定會取代舊的,兩筆記憶互相矛盾時由 LLM 判斷並標記出來
|
|
59
|
+
|
|
60
|
+
用 npm 裝,記憶放在 `~/.memesh/knowledge-graph.db`,接上 Claude Code 或任何支援 MCP 的用戶端就能用。
|
|
48
61
|
|
|
49
62
|
> [!IMPORTANT]
|
|
50
63
|
> **持續開發中的專案** — 功能會持續更新,版本之間可能會有變動。遇到問題或想要新功能,請[開 issue](https://github.com/PCIRCLE-AI/memesh/issues)。
|
|
@@ -421,7 +434,7 @@ MeMesh 的檢索引擎**只用 FTS5**(熱路徑上不使用 LLM、不使用嵌
|
|
|
421
434
|
|
|
422
435
|
**🔄 知識演進** — 決策會改變。`forget` 歸檔舊記憶(永不刪除)。`supersedes` 關係連結舊 → 新。你的 AI 總是看到最新版本。
|
|
423
436
|
|
|
424
|
-
**⚠️ 衝突偵測** —
|
|
437
|
+
**⚠️ 衝突偵測** — `memesh dream conflicts` 會讓 LLM 判定語意上最接近的記憶配對,找出矛盾、汰換或重複,並把結果暫存成提案。沒有東西會自動套用:你用 `dream list` / `dream show` 檢視,只有被接受的提案才會建立關係 —— 之後每次 `recall` 碰到其中任一筆記憶都會帶上警告。因果關係從不從時間戳推論;判決依據的是記憶內容本身怎麼說。
|
|
425
438
|
|
|
426
439
|
**🕸️ 知識圖連通性** — `memesh kg backfill-relations --all-rules` 使用標籤共現、專案叢集、會話上下文和名稱相似度連結孤立實體 — 無需 LLM。
|
|
427
440
|
|
|
@@ -443,6 +456,45 @@ MeMesh 的檢索引擎**只用 FTS5**(熱路徑上不使用 LLM、不使用嵌
|
|
|
443
456
|
|
|
444
457
|
---
|
|
445
458
|
|
|
459
|
+
## 食譜
|
|
460
|
+
|
|
461
|
+
### 在矛盾咬你之前先抓到它
|
|
462
|
+
|
|
463
|
+
兩個決策,隔了好幾週做的,卻不可能同時為真 — 這正是記憶層存在的目的,就是要抓到這種失敗模式:
|
|
464
|
+
|
|
465
|
+
```bash
|
|
466
|
+
memesh remember --name retry-policy --type decision \
|
|
467
|
+
--obs "所有 HTTP client 在請求失敗時都用指數退避重試,最多 5 次。"
|
|
468
|
+
# ...幾週後,有人做了完全相反的決定...
|
|
469
|
+
memesh remember --name retry-policy-v2 --type decision \
|
|
470
|
+
--obs "HTTP client 絕對不能自動重試 — 立刻失敗並把錯誤丟出來。"
|
|
471
|
+
|
|
472
|
+
memesh dream conflicts # 判定器標出這一對,附上判斷理由
|
|
473
|
+
memesh dream show 1 # 看完整的判決、引用的段落,接受後會建立什麼
|
|
474
|
+
memesh dream accept 1 # 由你決定 — 沒有東西會自動連起來
|
|
475
|
+
memesh recall "retry policy" # → 警告:偵測到衝突
|
|
476
|
+
```
|
|
477
|
+
|
|
478
|
+
從此之後,任何回憶到這兩個決策之一的代理都會被告知它們互相矛盾 — 而不是自信地引用剛好先找到的那一個。
|
|
479
|
+
|
|
480
|
+
### 一份記憶,三個代理
|
|
481
|
+
|
|
482
|
+
MeMesh 是一個 MCP server,所以同一個 SQLite 檔案能服務機器上的每一個 MCP 用戶端。每個工具只要註冊一次(確切指令見上方「60 秒快速開始」),在 Claude Code 記錄的決策,session 進行到一半時就能被 Codex 或 Gemini CLI 回憶起來 — 不用重新解釋,不用在不同廠商之間複製貼上 context。
|
|
483
|
+
|
|
484
|
+
### 記錄決策讓它們保持可被找到
|
|
485
|
+
|
|
486
|
+
自動擷取會保留 session 歷史,但真正划算的是那些刻意記下的記憶:
|
|
487
|
+
|
|
488
|
+
```bash
|
|
489
|
+
memesh remember --name auth-approach --type decision \
|
|
490
|
+
--obs "JWT 搭配 RS256;選 PKCE 而不是 implicit flow,因為 client 是公開的。" \
|
|
491
|
+
--tags "project:myapp" "topic:auth"
|
|
492
|
+
```
|
|
493
|
+
|
|
494
|
+
事情發生時,用平常講話的方式把結果連回原因 — 從任何 MCP 用戶端都行,像是:「把這次事故記成一個教訓,受 auth-approach 影響」。`remember` 工具接受自由格式的關係,`caused`/`influenced` 是文件裡定義的因果詞彙(因 → 果,要明確說出來 — MeMesh 從不從時間戳推論因果關係)。幾週後,`memesh recall "為什麼選 PKCE"` 會回傳那個決策,連同它記錄下來的後續影響一起 — 是可以追溯的推理,不只是剛好比對到的文字。
|
|
495
|
+
|
|
496
|
+
---
|
|
497
|
+
|
|
446
498
|
## 解鎖智慧模式(可選)
|
|
447
499
|
|
|
448
500
|
MeMesh 預設離線運作 — 回憶嚴格保持 LLM-free(開箱即用就有 LongMemEval-S 上 95.60% R@5)。只有當你想要在上層加入 LLM 增強的分析流程時,才需要加入 LLM API 金鑰:更聰明的 session 擷取、新記憶的自動標籤、從失敗產生教訓,以及 `dream` 壓縮:
|
|
@@ -557,7 +609,7 @@ Session 開始時,有新版本可下載時會跳一行 banner(每版本每 2
|
|
|
557
609
|
```bash
|
|
558
610
|
git clone https://github.com/PCIRCLE-AI/memesh
|
|
559
611
|
cd memesh && npm install && npm run build
|
|
560
|
-
npm test
|
|
612
|
+
npm test
|
|
561
613
|
npm run test:e2e-dashboard
|
|
562
614
|
```
|
|
563
615
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"briefing.d.ts","sourceRoot":"","sources":["../../src/core/briefing.ts"],"names":[],"mappings":"AA4CA,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,MAAM,CAAC;IAEhB,IAAI,EAAE,MAAM,CAAC;IAEb,WAAW,EAAE,MAAM,CAAC;IAEpB,YAAY,EAAE,OAAO,CAAC;CACvB;AAuFD,wBAAgB,gBAAgB,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,cAAc,
|
|
1
|
+
{"version":3,"file":"briefing.d.ts","sourceRoot":"","sources":["../../src/core/briefing.ts"],"names":[],"mappings":"AA4CA,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,MAAM,CAAC;IAEhB,IAAI,EAAE,MAAM,CAAC;IAEb,WAAW,EAAE,MAAM,CAAC;IAEpB,YAAY,EAAE,OAAO,CAAC;CACvB;AAuFD,wBAAgB,gBAAgB,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,cAAc,CAmEjE"}
|
package/dist/core/briefing.js
CHANGED
|
@@ -54,6 +54,7 @@ export function assembleBriefing(project) {
|
|
|
54
54
|
const projectRows = db.prepare(`SELECT DISTINCT ${CANDIDATE_COLUMNS}
|
|
55
55
|
FROM entities e JOIN tags t ON t.entity_id = e.id
|
|
56
56
|
WHERE t.tag = ? AND e.status = 'active'
|
|
57
|
+
ORDER BY e.id DESC
|
|
57
58
|
LIMIT ?`).all(`project:${projectName}`, TOPOLOGY_CANDIDATE_CAP);
|
|
58
59
|
const projectPool = selectPool(projectRows, PROJECT_LIMIT);
|
|
59
60
|
const recentRows = db.prepare(`SELECT ${CANDIDATE_COLUMNS}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"briefing.js","sourceRoot":"","sources":["../../src/core/briefing.ts"],"names":[],"mappings":"AA2BA,OAAO,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AACvC,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAC5C,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAC5C,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACrD,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,EACL,mBAAmB,EACnB,sBAAsB,EACtB,qBAAqB,EACrB,qBAAqB,EACrB,gBAAgB,GAEjB,MAAM,oBAAoB,CAAC;AAE5B,MAAM,aAAa,GAAG,EAAE,CAAC;AACzB,MAAM,YAAY,GAAG,CAAC,CAAC;AAyBvB,MAAM,iBAAiB,GACrB,6HAA6H,CAAC;AAEhI,SAAS,aAAa,CAAC,GAAkB;IACvC,IAAI,CAAC,GAAG;QAAE,OAAO,IAAI,CAAC;IACtB,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAC/B,OAAO,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC;IAC9D,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAqBD,SAAS,UAAU,CAAC,IAAoB,EAAE,GAAW;IACnD,MAAM,QAAQ,GAAc,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;QAC7C,EAAE,EAAE,GAAG,CAAC,EAAE;QACV,IAAI,EAAE,GAAG,CAAC,IAAI;QACd,IAAI,EAAE,GAAG,CAAC,IAAI;QACd,KAAK,EAAE,GAAG,CAAC,KAAK;QAChB,IAAI,EAAE,aAAa,CAAC,GAAG,CAAC,QAAQ,CAAC;QAGjC,YAAY,EAAE,GAAG,CAAC,YAAY,IAAI,SAAS;QAC3C,gBAAgB,EAAE,GAAG,CAAC,gBAAgB,IAAI,SAAS;QACnD,UAAU,EAAE,GAAG,CAAC,UAAU,IAAI,SAAS;QACvC,WAAW,EAAE,GAAG,CAAC,WAAW,IAAI,SAAS;QACzC,aAAa,EAAE,GAAG,CAAC,aAAa,IAAI,SAAS;KAC9C,CAAC,CAAC,CAAC;IACJ,OAAO,YAAY,CAAC,QAAQ,EAAE,IAAI,GAAG,EAAE,CAAC;SACrC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;SAC3C,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;AACnB,CAAC;AAED,SAAS,gBAAgB,CAAC,GAAY,EAAE,OAAsB;IAC5D,MAAM,MAAM,GAAG,GAAG,CAAC,IAAI,EAAE,YAAY,CAAC;IACtC,OAAO;QACL,IAAI,EAAE,GAAG,CAAC,IAAI;QACd,IAAI,EAAE,GAAG,CAAC,IAAI,IAAI,QAAQ;QAI1B,EAAE,EAAE,GAAG,CAAC,EAAE;QACV,KAAK,EAAE,GAAG,CAAC,KAAK;QAChB,OAAO;QACP,WAAW,EAAE,OAAO,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI;KACxD,CAAC;AACJ,CAAC;AAOD,MAAM,UAAU,gBAAgB,CAAC,OAAgB;IAC/C,MAAM,WAAW,GAAG,OAAO,IAAI,cAAc,EAAE,CAAC;IAChD,MAAM,EAAE,GAAG,WAAW,EAAE,CAAC;IAIzB,MAAM,EAAE,KAAK,EAAE,GAAG,YAAY,CAAC,WAAW,CAAC,CAAC;IAC5C,MAAM,UAAU,GAAG,cAAc,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC;IAEtD,MAAM,WAAW,GAAG,EAAE,CAAC,OAAO,CAC5B,mBAAmB,iBAAiB
|
|
1
|
+
{"version":3,"file":"briefing.js","sourceRoot":"","sources":["../../src/core/briefing.ts"],"names":[],"mappings":"AA2BA,OAAO,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AACvC,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAC5C,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAC5C,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACrD,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,EACL,mBAAmB,EACnB,sBAAsB,EACtB,qBAAqB,EACrB,qBAAqB,EACrB,gBAAgB,GAEjB,MAAM,oBAAoB,CAAC;AAE5B,MAAM,aAAa,GAAG,EAAE,CAAC;AACzB,MAAM,YAAY,GAAG,CAAC,CAAC;AAyBvB,MAAM,iBAAiB,GACrB,6HAA6H,CAAC;AAEhI,SAAS,aAAa,CAAC,GAAkB;IACvC,IAAI,CAAC,GAAG;QAAE,OAAO,IAAI,CAAC;IACtB,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAC/B,OAAO,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC;IAC9D,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAqBD,SAAS,UAAU,CAAC,IAAoB,EAAE,GAAW;IACnD,MAAM,QAAQ,GAAc,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;QAC7C,EAAE,EAAE,GAAG,CAAC,EAAE;QACV,IAAI,EAAE,GAAG,CAAC,IAAI;QACd,IAAI,EAAE,GAAG,CAAC,IAAI;QACd,KAAK,EAAE,GAAG,CAAC,KAAK;QAChB,IAAI,EAAE,aAAa,CAAC,GAAG,CAAC,QAAQ,CAAC;QAGjC,YAAY,EAAE,GAAG,CAAC,YAAY,IAAI,SAAS;QAC3C,gBAAgB,EAAE,GAAG,CAAC,gBAAgB,IAAI,SAAS;QACnD,UAAU,EAAE,GAAG,CAAC,UAAU,IAAI,SAAS;QACvC,WAAW,EAAE,GAAG,CAAC,WAAW,IAAI,SAAS;QACzC,aAAa,EAAE,GAAG,CAAC,aAAa,IAAI,SAAS;KAC9C,CAAC,CAAC,CAAC;IACJ,OAAO,YAAY,CAAC,QAAQ,EAAE,IAAI,GAAG,EAAE,CAAC;SACrC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;SAC3C,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;AACnB,CAAC;AAED,SAAS,gBAAgB,CAAC,GAAY,EAAE,OAAsB;IAC5D,MAAM,MAAM,GAAG,GAAG,CAAC,IAAI,EAAE,YAAY,CAAC;IACtC,OAAO;QACL,IAAI,EAAE,GAAG,CAAC,IAAI;QACd,IAAI,EAAE,GAAG,CAAC,IAAI,IAAI,QAAQ;QAI1B,EAAE,EAAE,GAAG,CAAC,EAAE;QACV,KAAK,EAAE,GAAG,CAAC,KAAK;QAChB,OAAO;QACP,WAAW,EAAE,OAAO,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI;KACxD,CAAC;AACJ,CAAC;AAOD,MAAM,UAAU,gBAAgB,CAAC,OAAgB;IAC/C,MAAM,WAAW,GAAG,OAAO,IAAI,cAAc,EAAE,CAAC;IAChD,MAAM,EAAE,GAAG,WAAW,EAAE,CAAC;IAIzB,MAAM,EAAE,KAAK,EAAE,GAAG,YAAY,CAAC,WAAW,CAAC,CAAC;IAC5C,MAAM,UAAU,GAAG,cAAc,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC;IAEtD,MAAM,WAAW,GAAG,EAAE,CAAC,OAAO,CAC5B,mBAAmB,iBAAiB;;;;aAI3B,CACV,CAAC,GAAG,CAAC,WAAW,WAAW,EAAE,EAAE,sBAAsB,CAA8B,CAAC;IACrF,MAAM,WAAW,GAAG,UAAU,CAAC,WAAW,EAAE,aAAa,CAAC,CAAC;IAK3D,MAAM,UAAU,GAAG,EAAE,CAAC,OAAO,CAC3B,UAAU,iBAAiB;;;;aAIlB,CACV,CAAC,GAAG,CAAC,sBAAsB,CAA8B,CAAC;IAC3D,MAAM,UAAU,GAAG,UAAU,CAAC,UAAU,EAAE,YAAY,CAAC,CAAC;IAKxD,MAAM,WAAW,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,WAAW,EAAE,GAAG,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IACvF,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAkB,CAAC;IAC3C,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC3B,MAAM,YAAY,GAAG,WAAW,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAC1D,MAAM,OAAO,GAAG,EAAE,CAAC,OAAO,CACxB,wCAAwC,mBAAmB;+CAClB,YAAY;uBACpC,CAClB,CAAC,GAAG,CAAC,GAAG,WAAW,CAAyD,CAAC;QAC9E,KAAK,MAAM,GAAG,IAAI,OAAO,EAAE,CAAC;YAC1B,IAAI,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,SAAS,CAAC;gBAAE,SAAS;YAC1C,MAAM,IAAI,GAAG,MAAM,CAAC,GAAG,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;YAC9C,IAAI,IAAI;gBAAE,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;QAC9C,CAAC;IACH,CAAC;IAED,MAAM,UAAU,GAAG,CAAC,IAAe,EAAE,EAAE,CACrC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,gBAAgB,CAAC,GAAG,EAAE,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC;IAEzE,MAAM,KAAK,GAAG,qBAAqB,CACjC,UAAU,EACV;QACE,EAAE,QAAQ,EAAE,UAAU,CAAC,WAAW,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE;QACrD,EAAE,QAAQ,EAAE,UAAU,CAAC,UAAU,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE;KACpD,EACD,WAAW,CACZ,CAAC;IAEF,OAAO;QACL,OAAO,EAAE,WAAW;QACpB,IAAI,EAAE,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,qBAAqB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE;QAC1D,WAAW,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM;QAC5D,YAAY,EAAE,UAAU,CAAC,MAAM,GAAG,CAAC;KACpC,CAAC;AACJ,CAAC"}
|
package/dist/core/demo.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"demo.d.ts","sourceRoot":"","sources":["../../src/core/demo.ts"],"names":[],"mappings":"AAkBA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAG3D,MAAM,WAAW,UAAU;IACzB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;CACjB;
|
|
1
|
+
{"version":3,"file":"demo.d.ts","sourceRoot":"","sources":["../../src/core/demo.ts"],"names":[],"mappings":"AAkBA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAG3D,MAAM,WAAW,UAAU;IACzB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;CACjB;AA0HD,eAAO,MAAM,cAAc,EAAE,KAAK,CAAC,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,CAAC,CAsB1E,CAAC;AAEF,wBAAgB,QAAQ,CACtB,EAAE,EAAE,cAAc,EAClB,IAAI,GAAE;IAAE,KAAK,CAAC,EAAE,OAAO,CAAA;CAAO,GAC7B,UAAU,CAoFZ"}
|
package/dist/core/demo.js
CHANGED
|
@@ -39,6 +39,17 @@ function demoMetadata() {
|
|
|
39
39
|
trust: 'trusted',
|
|
40
40
|
};
|
|
41
41
|
}
|
|
42
|
+
function isDemoMetadata(raw) {
|
|
43
|
+
if (!raw)
|
|
44
|
+
return false;
|
|
45
|
+
try {
|
|
46
|
+
const parsed = JSON.parse(raw);
|
|
47
|
+
return Boolean(parsed && typeof parsed === 'object' && parsed.demo === true);
|
|
48
|
+
}
|
|
49
|
+
catch {
|
|
50
|
+
return false;
|
|
51
|
+
}
|
|
52
|
+
}
|
|
42
53
|
function isoForDaysAgo(days) {
|
|
43
54
|
return new Date(Date.now() - days * 86400000).toISOString().replace('T', ' ').slice(0, 19);
|
|
44
55
|
}
|
|
@@ -78,10 +89,15 @@ export function seedDemo(db, opts = {}) {
|
|
|
78
89
|
const kg = new KnowledgeGraph(db);
|
|
79
90
|
let inserted = 0;
|
|
80
91
|
const stampStmt = db.prepare('UPDATE entities SET created_at = ?, metadata = ? WHERE name = ?');
|
|
92
|
+
const demoNames = new Set();
|
|
81
93
|
for (const entry of DEMO_DATA) {
|
|
82
|
-
const
|
|
83
|
-
|
|
94
|
+
const existing = db.prepare('SELECT metadata FROM entities WHERE name = ?')
|
|
95
|
+
.get(entry.name);
|
|
96
|
+
if (existing) {
|
|
97
|
+
if (isDemoMetadata(existing.metadata))
|
|
98
|
+
demoNames.add(entry.name);
|
|
84
99
|
continue;
|
|
100
|
+
}
|
|
85
101
|
const tags = [DEMO_TAG, ...(entry.tags ?? [])];
|
|
86
102
|
kg.createEntity(entry.name, entry.type, {
|
|
87
103
|
observations: entry.observations,
|
|
@@ -90,10 +106,13 @@ export function seedDemo(db, opts = {}) {
|
|
|
90
106
|
});
|
|
91
107
|
stampStmt.run(isoForDaysAgo(entry.daysAgo), JSON.stringify(demoMetadata()), entry.name);
|
|
92
108
|
inserted++;
|
|
109
|
+
demoNames.add(entry.name);
|
|
93
110
|
}
|
|
94
111
|
if (inserted > 0) {
|
|
95
112
|
db.transaction(() => {
|
|
96
113
|
for (const [from, type, to] of DEMO_RELATIONS) {
|
|
114
|
+
if (!demoNames.has(from) || !demoNames.has(to))
|
|
115
|
+
continue;
|
|
97
116
|
kg.createRelation(from, to, type);
|
|
98
117
|
}
|
|
99
118
|
})();
|
package/dist/core/demo.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"demo.js","sourceRoot":"","sources":["../../src/core/demo.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"demo.js","sourceRoot":"","sources":["../../src/core/demo.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"doctor.d.ts","sourceRoot":"","sources":["../../src/core/doctor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,CAAC;AAKpB,OAAO,EAAE,kBAAkB,EAAE,aAAa,EAA4D,MAAM,aAAa,CAAC;AAE1H,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EACL,YAAY,EAAE,aAAa,EAAyB,cAAc,EAEnE,MAAM,UAAU,CAAC;AAClB,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAEpD,OAAO,EAAE,wBAAwB,EAAE,wBAAwB,
|
|
1
|
+
{"version":3,"file":"doctor.d.ts","sourceRoot":"","sources":["../../src/core/doctor.ts"],"names":[],"mappings":"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"}
|
package/dist/core/doctor.js
CHANGED
|
@@ -9,7 +9,7 @@ import { probeProvider } from './llm-validator.js';
|
|
|
9
9
|
import { openDatabase, closeDatabase, getPendingReindexInfo, isDatabaseOpen, readVectorGeneration, generationRowIds, } from '../db.js';
|
|
10
10
|
import { getUpdateCheck } from './version-check.js';
|
|
11
11
|
import { classifyBump } from './updater.js';
|
|
12
|
-
import { getCurrentInstallChannel, getInstallChannelSupport } from './install-channel.js';
|
|
12
|
+
import { getCurrentInstallChannel, getInstallChannelSupport, detectPluginHost } from './install-channel.js';
|
|
13
13
|
import { getInstallRecord } from './install-id.js';
|
|
14
14
|
import { citationRulePath, citationRuleState } from './citation-rule.js';
|
|
15
15
|
import { getDbPath, homeDir, memeshDir, getProjectName } from './paths.js';
|
|
@@ -60,12 +60,14 @@ function inspectLocaleReadmeParity(packageRoot, existsSyncImpl, readFileSyncImpl
|
|
|
60
60
|
}
|
|
61
61
|
const missing = [];
|
|
62
62
|
const drift = [];
|
|
63
|
+
let anyLocalePresent = false;
|
|
63
64
|
for (const filename of LOCALE_README_FILES) {
|
|
64
65
|
const localePath = path.join(packageRoot, filename);
|
|
65
66
|
if (!existsSyncImpl(localePath)) {
|
|
66
67
|
missing.push(filename);
|
|
67
68
|
continue;
|
|
68
69
|
}
|
|
70
|
+
anyLocalePresent = true;
|
|
69
71
|
try {
|
|
70
72
|
const count = countH2Headings(readFileSyncImpl(localePath, 'utf8'));
|
|
71
73
|
if (Math.abs(count - englishCount) > LOCALE_H2_TOLERANCE) {
|
|
@@ -76,6 +78,9 @@ function inspectLocaleReadmeParity(packageRoot, existsSyncImpl, readFileSyncImpl
|
|
|
76
78
|
drift.push({ name: filename, count: -1 });
|
|
77
79
|
}
|
|
78
80
|
}
|
|
81
|
+
if (!anyLocalePresent) {
|
|
82
|
+
return createCheck('readme_locale_parity', 'README locale parity', 'pass', 'Locale READMEs not present in this install (packaged installs ship README.md only); locale-parity check skipped.');
|
|
83
|
+
}
|
|
79
84
|
if (missing.length === 0 && drift.length === 0) {
|
|
80
85
|
return createCheck('readme_locale_parity', 'README locale parity', 'pass', `All ${LOCALE_README_FILES.length} locale READMEs match English H2 count (${englishCount}).`);
|
|
81
86
|
}
|
|
@@ -227,11 +232,12 @@ function inspectHooksConfig(packageRoot, platform, existsSyncImpl, readFileSyncI
|
|
|
227
232
|
createCheck('hook-scripts', 'Hook scripts', 'pass', `All ${scriptPaths.length} hook scripts are present${platform === 'win32' ? '' : ' and executable'}.`),
|
|
228
233
|
];
|
|
229
234
|
}
|
|
230
|
-
function inspectHookWiring(existsSyncImpl, readFileSyncImpl, memeshDir, installChannel, installedPluginsPath) {
|
|
235
|
+
function inspectHookWiring(existsSyncImpl, readFileSyncImpl, memeshDir, installChannel, installedPluginsPath, pluginHost) {
|
|
231
236
|
const markerPath = path.join(memeshDir, 'install-hooks.json');
|
|
232
237
|
if (!existsSyncImpl(markerPath)) {
|
|
233
238
|
if (installChannel === 'plugin-marketplace') {
|
|
234
|
-
|
|
239
|
+
const runtime = pluginHost === 'codex' ? 'Codex CLI' : 'Claude Code';
|
|
240
|
+
return createCheck('hook-wiring', 'Hooks wired into Claude Code', 'pass', `Wired via the ${runtime} plugin runtime (this is a plugin-marketplace install). The install-hooks marker is not used on this install path.`);
|
|
235
241
|
}
|
|
236
242
|
if (detectPluginRuntime(installedPluginsPath)) {
|
|
237
243
|
return createCheck('hook-wiring', 'Hooks wired into Claude Code', 'pass', 'Wired via the Claude Code plugin runtime (found in installed_plugins.json). This copy is not the one doing the capturing — the plugin manages the hooks.');
|
|
@@ -546,8 +552,9 @@ function inspectShellCli(installChannel, packageRoot, resolveShellMemeshImpl) {
|
|
|
546
552
|
return createCheck('shell-cli', 'Shell CLI on PATH', 'pass', `\`memesh\` resolves to ${shellPath} (separate from this install at ${packageRoot}). Both paths coexist and share the same DB.`);
|
|
547
553
|
}
|
|
548
554
|
if (installChannel === 'plugin-marketplace') {
|
|
555
|
+
const host = detectPluginHost(packageRoot) === 'codex' ? 'Codex CLI' : 'Claude Code';
|
|
549
556
|
return createCheck('shell-cli', 'Shell CLI on PATH', 'warn', 'Plugin is installed but `memesh` is not on the shell PATH. Typing `memesh` in a regular terminal will report `command not found`. '
|
|
550
|
-
+
|
|
557
|
+
+ `${host} MCP / hooks / \`/memesh\` skill still work — this only affects standalone shell usage and other MCP clients (Cursor, Cline, etc.).`, 'Run `npm install -g @pcircle/memesh` to add the shell CLI. Both paths coexist; they share the same `~/.memesh/knowledge-graph.db`.', { code: 'shell-cli.not-on-path' });
|
|
551
558
|
}
|
|
552
559
|
return createCheck('shell-cli', 'Shell CLI on PATH', 'pass', shellPath
|
|
553
560
|
? `\`memesh\` resolves to ${shellPath}.`
|
|
@@ -560,9 +567,23 @@ function inspectDashboardArtifact(packageRoot, existsSyncImpl) {
|
|
|
560
567
|
}
|
|
561
568
|
return createCheck('dashboard', 'Dashboard artifact', 'pass', 'dashboard/dist/index.html is present.');
|
|
562
569
|
}
|
|
570
|
+
function isFreshInstall() {
|
|
571
|
+
try {
|
|
572
|
+
const createdAt = new Date(getInstallRecord().created_at).getTime();
|
|
573
|
+
if (!Number.isFinite(createdAt))
|
|
574
|
+
return false;
|
|
575
|
+
return (Date.now() - createdAt) / (60 * 60 * 1000) < 24;
|
|
576
|
+
}
|
|
577
|
+
catch {
|
|
578
|
+
return false;
|
|
579
|
+
}
|
|
580
|
+
}
|
|
563
581
|
async function inspectUpdateStatus(packageVersion, getUpdateCheckImpl, installSupport) {
|
|
564
582
|
const update = await getUpdateCheckImpl(packageVersion, { preferFresh: false });
|
|
565
583
|
if (!update) {
|
|
584
|
+
if (isFreshInstall()) {
|
|
585
|
+
return createCheck('update-status', 'Update status', 'pass', 'Installed recently — memesh has not had a chance to check for updates yet. This resolves itself on the first successful check.');
|
|
586
|
+
}
|
|
566
587
|
return createCheck('update-status', 'Update status', 'warn', 'memesh has not been able to check for newer versions yet, so it cannot tell you whether an update exists.', 'Run `memesh status` once while connected to the internet — that stores the answer and this notice goes away.', { code: 'update-status.no-cache' });
|
|
567
588
|
}
|
|
568
589
|
if (update.currentVersionDeprecated && update.deprecationMessage) {
|
|
@@ -588,6 +609,9 @@ async function inspectUpdateStatus(packageVersion, getUpdateCheckImpl, installSu
|
|
|
588
609
|
return createCheck('update-status', 'Update status', 'fail', `Installed version ${packageVersion} is DEPRECATED by maintainers: ${update.deprecationMessage}`, fix, { code: 'update-status.deprecated', params: { version: packageVersion, detail: update.deprecationMessage ?? '' } });
|
|
589
610
|
}
|
|
590
611
|
if (update.freshness === 'unavailable') {
|
|
612
|
+
if (isFreshInstall()) {
|
|
613
|
+
return createCheck('update-status', 'Update status', 'pass', 'Installed recently — memesh has not had a chance to check for updates yet. This resolves itself on the first successful check.');
|
|
614
|
+
}
|
|
591
615
|
return createCheck('update-status', 'Update status', 'warn', 'memesh has not been able to check for newer versions yet, so it cannot tell you whether an update exists.', 'Run `memesh status` once while connected to the internet — that stores the answer and this notice goes away.', { code: 'update-status.no-cache' });
|
|
592
616
|
}
|
|
593
617
|
if (update.checkSucceeded && update.lastError) {
|
|
@@ -752,7 +776,7 @@ export async function runDoctor(options) {
|
|
|
752
776
|
: closeDatabaseImpl;
|
|
753
777
|
const checks = [];
|
|
754
778
|
const install = getCurrentInstallChannelImpl({ packageRoot });
|
|
755
|
-
const installSupport = getInstallChannelSupportImpl(install);
|
|
779
|
+
const installSupport = getInstallChannelSupportImpl(install, packageRoot);
|
|
756
780
|
checks.push(createCheck('install-channel', 'Install method', install === 'unknown' ? 'warn' : 'pass', `Install method detected: ${installSupport.label}.`, install === 'unknown'
|
|
757
781
|
? 'If this is a source checkout, run MeMesh from the repo root. If this is a packaged install, reinstall with `npm install -g @pcircle/memesh`.'
|
|
758
782
|
: undefined, install === 'unknown' ? { code: 'install-channel.unknown' } : undefined));
|
|
@@ -944,7 +968,7 @@ export async function runDoctor(options) {
|
|
|
944
968
|
checks.push(inspectConfigFile(existsSyncImpl, readFileSyncImpl, getConfigPathImpl, detectCapabilitiesImpl().llm));
|
|
945
969
|
checks.push(inspectMcpConfig(packageRoot, existsSyncImpl, readFileSyncImpl));
|
|
946
970
|
checks.push(...inspectHooksConfig(packageRoot, platform, existsSyncImpl, readFileSyncImpl, statSyncImpl));
|
|
947
|
-
const wiring = inspectHookWiring(existsSyncImpl, readFileSyncImpl, memeshDir(), install, installedPluginsPathImpl);
|
|
971
|
+
const wiring = inspectHookWiring(existsSyncImpl, readFileSyncImpl, memeshDir(), install, installedPluginsPathImpl, detectPluginHost(packageRoot));
|
|
948
972
|
checks.push(wiring);
|
|
949
973
|
const captureWired = wiring.status === 'pass'
|
|
950
974
|
&& (wiring.params === undefined || wiring.params.captureWired === 1);
|
|
@@ -971,7 +995,7 @@ export async function runDoctor(options) {
|
|
|
971
995
|
checks.push(await inspectUpdateStatus(packageVersion, getUpdateCheckImpl, installSupport));
|
|
972
996
|
try {
|
|
973
997
|
const record = getInstallRecord();
|
|
974
|
-
checks.push(createInfo('install_id', 'Install ID', `Anonymous install ID: ${record.install_id} (created ${record.created_at}). Stored locally at
|
|
998
|
+
checks.push(createInfo('install_id', 'Install ID', `Anonymous install ID: ${record.install_id} (created ${record.created_at}). Stored locally at ${path.join(memeshDir(), 'install.json')}. Never transmitted automatically; included only in feedback issues you submit with the "Include system info" checkbox on.`));
|
|
975
999
|
}
|
|
976
1000
|
catch {
|
|
977
1001
|
}
|