diff --git a/.mcp.json b/.claude-plugin/mcp.json similarity index 100% rename from .mcp.json rename to .claude-plugin/mcp.json diff --git a/.claude-plugin/plugin.json b/.claude-plugin/plugin.json index 3b929b182..3c755d535 100644 --- a/.claude-plugin/plugin.json +++ b/.claude-plugin/plugin.json @@ -5,6 +5,7 @@ "name": "PCIRCLE AI" }, "version": "4.8.3", + "mcpServers": "./.claude-plugin/mcp.json", "homepage": "https://github.com/PCIRCLE-AI/memesh", "repository": "https://github.com/PCIRCLE-AI/memesh", "license": "MIT", diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index 92b272d77..3e633a3ab 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -29,7 +29,7 @@ # Plugin manifest — wired up by Claude Code on install /.claude-plugin/plugin.json @PCIRCLE-AI/maintainers -/.mcp.json @PCIRCLE-AI/maintainers +/.claude-plugin/mcp.json @PCIRCLE-AI/maintainers # Manifest of shipped artefacts (skills, hooks) — generated at build # time, but if a PR touches it manually that's a tampering signal. diff --git a/.gitignore b/.gitignore index d7336e0f0..1a6e42853 100644 --- a/.gitignore +++ b/.gitignore @@ -6,7 +6,7 @@ pnpm-lock.yaml # === Build outputs === # dist/ IS tracked — the Claude Code plugin marketplace installs do NOT # run npm scripts (security model), so compiled JS must be in the repo -# for the plugin to run on clone. See .mcp.json which uses local dist/. +# for the plugin to run on clone. See .claude-plugin/mcp.json, which uses local dist/. # Build it with `npm run build` before committing. build/ out/ diff --git a/CHANGELOG.md b/CHANGELOG.md index 3509431f3..056a58d66 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -286,6 +286,43 @@ All notable changes to MeMesh are documented here. this state, and `scripts/audit/memory-invariants.mjs` gained `split-lesson-shell-carries-no-recall-history` to keep it caught. +- **The Claude plugin no longer ships an MCP config on the path Claude Code + auto-discovers as a project config.** `.mcp.json` at the repository root was + loaded twice: by the plugin runtime, where `${CLAUDE_PLUGIN_ROOT}` resolves + to the plugin directory, and as a project-scoped MCP config for anyone who + merely opened the repository, where it is undefined. In the second role the + server started as `node /dist/mcp/server.js`, exited 1 with + `Cannot find module`, and a live session reported + `memesh (CONNECTION_CLOSED)` — for three and a half months, since the + placeholder replaced a working `npx -y -p @pcircle/memesh memesh-mcp` form. + The manifest now lives at `.claude-plugin/mcp.json`, declared by + `.claude-plugin/plugin.json` as `"mcpServers": "./.claude-plugin/mcp.json"`, + and the root file is deleted — custom component paths supplement the + defaults rather than replacing them, so declaring a path while leaving the + root file in place would have loaded both. `${CLAUDE_PLUGIN_ROOT}` is kept, + because it is the documented and correct placeholder inside a plugin + manifest; what was wrong was the path, not the variable. Verified with + `claude mcp list` against a throwaway `CLAUDE_CONFIG_DIR`: before the change + it reported `[Warning] [memesh] mcpServers.memesh: Missing environment + variables: CLAUDE_PLUGIN_ROOT` from the project config, and after it the + plugin install registers `plugin:memesh:memesh` with the placeholder already + substituted. + +- **`memesh doctor`'s MCP-config check can now fail on the channels where it + could not.** It substituted `${CLAUDE_PLUGIN_ROOT}` with the package root + unconditionally, so on `source-checkout`, `npm-global` and `npm-local` the + substitution was self-fulfilling — it rebuilt a path that exists by + construction, and the check could not report a fault whatever the manifest + said. That green row is why the defect above survived three releases. Doctor + now substitutes only where something really does substitute + (`plugin-marketplace`, or an explicit `CLAUDE_PLUGIN_ROOT` in the + environment) and otherwise reports `mcp-config.placeholder-unresolved` — + a warn that states plainly that the target was NOT verified and gives the + command that would verify it, instead of the old "the script it starts + exists". It also reads the manifest path from `.claude-plugin/plugin.json` + rather than hardcoding one, so a future move cannot leave the check pointing + at a file nobody loads. + - **The Ollama host guard now rebuilds the request origin instead of forwarding the configured string.** `resolveOllamaHost` used to validate a persisted `llm.host` and then pass the same string to `fetch`, which left CodeQL alert diff --git a/dashboard/dist/index.html b/dashboard/dist/index.html index 09d3fdf12..9a64a05a5 100644 --- a/dashboard/dist/index.html +++ b/dashboard/dist/index.html @@ -10,7 +10,7 @@ Newsreader = memory content (italic carries the inferred-vs-verbatim distinction), Geist Mono = data. Offline, the stacks fall back. --> - +`)}`,G=`https://github.com/PCIRCLE-AI/memesh/issues/new?title=${encodeURIComponent("[Bug] memesh doctor reported issues")}&body=${encodeURIComponent(A)}&labels=${encodeURIComponent("feedback,from-dashboard,bug,doctor-warning")}`;ws(G)||(i(G),c(!1))}async function y(){if(a)try{await navigator.clipboard.writeText(a),c(!0)}catch{c(!1)}}const k=t.status==="FAIL",z=k?"var(--danger)":"var(--warning)",x=k?"var(--danger-soft)":"var(--warning-soft)";return e("div",{role:"alert",style:{position:"relative",margin:"12px auto 0",maxWidth:920,padding:"12px 16px",border:`1px solid ${z}`,borderRadius:"var(--radius)",background:x,color:"var(--text-1)"},children:[e("button",{type:"button",onClick:h,"aria-label":o("doctorBanner.dismiss"),style:{position:"absolute",top:6,right:8,background:"transparent",border:"none",color:"var(--text-3)",fontSize:18,lineHeight:1,cursor:"pointer",padding:4},children:"×"}),e("div",{style:{fontSize:13,fontWeight:600,color:z,marginBottom:6},children:o(k?"doctorBanner.failTitle":"doctorBanner.warnTitleSoft")}),e("ul",{style:{margin:"6px 0 10px",paddingLeft:18,fontSize:12,lineHeight:1.5,color:"var(--text-2)"},children:[u.slice(0,3).map(b=>{const A=ei(b);return e("li",{children:[e("strong",{children:[ti(b),":"]})," ",Za(b),A&&e(ue,{children:[" — ",e("em",{style:{color:"var(--text-3)"},children:A}),Ya(A).map(j=>e(Rt,{id:"doctor-fix-command",command:j},j))]})]},b.id)}),u.length>3&&e("li",{style:{color:"var(--text-3)"},children:o("doctorBanner.moreCount",{n:u.length-3})})]}),k&&e("div",{style:{display:"flex",gap:8,alignItems:"center",flexWrap:"wrap"},children:[e("button",{type:"button",class:"btn",onClick:m,style:{fontSize:12,padding:"4px 12px"},children:o("doctorBanner.getHelp")}),e(vs,{id:"doctor-help"}),e("span",{style:{fontSize:11,color:"var(--text-3)"},children:o("doctorBanner.helpHint")})]}),a&&e("div",{role:"alert",style:{marginTop:8,fontSize:12},children:[e("div",{children:o("feedback.popupBlocked")}),e("a",{href:a,target:"_blank",rel:"noopener noreferrer",children:o("feedback.retry")})," ",e("button",{type:"button",class:"btn btn-sm",onClick:()=>{y()},children:o(d?"feedback.linkCopied":"feedback.copyLink")})]})]})}const Vo="memesh.insightsBanner.dismissed";function ri({currentTab:t,onNavigateToInsights:n}){const[s,r]=p(0),[a,i]=p(()=>{try{return sessionStorage.getItem(Vo)==="true"}catch{return!1}});if(se(()=>{let u=!0;const l=()=>{$("GET","/v1/dream/proposals?status=pending").then(m=>{if(!u)return;const y=Array.isArray(m)?m:m?.data??[];r(y.length)}).catch(()=>{})};l();const h=()=>l();return window.addEventListener("memesh:data-changed",h),()=>{u=!1,window.removeEventListener("memesh:data-changed",h)}},[]),t==="Home"||a||s===0)return null;function d(u){u.stopPropagation(),i(!0);try{sessionStorage.setItem(Vo,"true")}catch{}}const c=o("banner.pendingInsights",{n:s,s:s===1?"":"s"});return e("div",{role:"button","aria-label":o("banner.viewAll"),onClick:n,onKeyDown:u=>{(u.key==="Enter"||u.key===" ")&&(u.preventDefault(),n())},tabIndex:0,style:{position:"relative",margin:"12px auto 0",maxWidth:920,padding:"10px 40px 10px 16px",border:"1px solid rgba(143, 242, 92, 0.32)",borderRadius:"var(--radius)",background:"var(--life-soft)",color:"var(--text-1)",cursor:"pointer",fontSize:13,lineHeight:1.5,display:"flex",alignItems:"center",justifyContent:"space-between",gap:8},children:[e("span",{style:{flex:1},children:[e("span",{style:{marginRight:6},"aria-hidden":"true",children:"💡"}),c]}),e("button",{type:"button",onClick:d,"aria-label":o("banner.dismiss"),style:{position:"absolute",top:6,right:8,background:"transparent",border:"none",color:"var(--text-3)",fontSize:18,lineHeight:1,cursor:"pointer",padding:4},children:"×"})]})}const Ms=["Home","Memories","Project","Graph","Settings"],ai={Home:"tab.home",Memories:"tab.memories",Project:"tab.project",Graph:"tab.graph",Settings:"tab.settings"},ii={Insights:"Home",Analytics:"Home",Search:"Memories",Browse:"Memories",Manage:"Memories",Lessons:"Memories"},Ss="memesh.tab";function li(){const t=n=>n?Ms.includes(n)?n:ii[n]??null:null;try{const n=new URLSearchParams(window.location.search),s=t(n.get("tab"));if(s)return s;const r=t(localStorage.getItem(Ss));if(r)return r}catch{}return"Home"}function ci(){const[t,n]=p(()=>Gs()),[s,r]=p(li),[a,i]=p(!1),d=Ee(f=>{s==="Settings"&&f!=="Settings"&&a&&!confirm(o("settings.unsavedConfirm"))||r(f)},[a,s]),[c,u]=p(()=>new Set);se(()=>{u(f=>f.has(s)?f:new Set(f).add(s))},[s]);const l=f=>c.has(f)||s===f;se(()=>{try{localStorage.setItem(Ss,s)}catch{}try{const f=new URL(window.location.href);f.searchParams.set("tab",s),history.replaceState(null,"",f)}catch{}},[s]);const[h,m]=p(null),[y,k]=p(0),z=Z(0),[x,E]=p(""),[b,A]=p(!1);se(()=>{const f=()=>A(!0);return window.addEventListener("memesh:auth-required",f),()=>window.removeEventListener("memesh:auth-required",f)},[]);const[j,G]=p(!1),F=Ee(()=>{const f=++z.current;$("GET","/v1/health").then(P=>{f===z.current&&(m(P),E(""),A(!1))}).catch(P=>{if(f===z.current){if(P instanceof Qn){G(Bn()!==null),A(!0),E("");return}E(P.message)}})},[]);se(()=>{F();const f=()=>{k(P=>P+1),F()};return window.addEventListener("memesh:data-changed",f),()=>window.removeEventListener("memesh:data-changed",f)},[F]);const g=Ms.map(f=>({key:f,label:o(ai[f])}));return b?e(Qa,{currentToken:Bn(),rejected:j,onSubmit:f=>{Qs(f),G(!1),A(!1),F()}}):e("div",{class:"shell",children:[e(Ys,{health:h,error:x}),h&&x&&e("div",{class:"error-box",role:"alert",style:{margin:"8px 16px 0"},children:[o("common.error"),": ",x]}),(h?.demo_entity_count??0)>0&&e(Go,{health:h}),e("div",{class:"notice-slot",children:[e(si,{}),(h?.demo_entity_count??0)===0&&e(Go,{health:h}),e(ri,{currentTab:s,onNavigateToInsights:()=>d("Home")})]}),e(Xs,{tabs:g,active:s,onSelect:f=>d(f)}),e("div",{class:"main",children:[e("div",{id:"panel-Home",role:"tabpanel","aria-labelledby":"tab-Home",class:`panel ${s==="Home"?"active":""}`,children:s==="Home"&&e(Br,{health:h,dataRevision:y,onNavigate:d})}),e("div",{id:"panel-Memories",role:"tabpanel","aria-labelledby":"tab-Memories",class:`panel ${s==="Memories"?"active":""}`,children:l("Memories")&&e(la,{health:h,dataRevision:y})}),e("div",{id:"panel-Project",role:"tabpanel","aria-labelledby":"tab-Project",class:`panel ${s==="Project"?"active":""}`,children:l("Project")&&e(Ea,{health:h,dataRevision:y})}),e("div",{id:"panel-Graph",role:"tabpanel","aria-labelledby":"tab-Graph",class:`panel ${s==="Graph"?"active":""}`,children:s==="Graph"&&e($a,{dataRevision:y})}),e("div",{id:"panel-Settings",role:"tabpanel","aria-labelledby":"tab-Settings",class:`panel ${s==="Settings"?"active":""}`,children:s==="Settings"&&e(Da,{locale:t,onLocaleChange:n,onDirtyChange:i})})]}),e(Ja,{health:h})]})}Hs(e(ci,{}),document.getElementById("app")); diff --git a/dashboard/src/components/DoctorBanner.tsx b/dashboard/src/components/DoctorBanner.tsx index 163918780..5a3332e60 100644 --- a/dashboard/src/components/DoctorBanner.tsx +++ b/dashboard/src/components/DoctorBanner.tsx @@ -72,6 +72,10 @@ export const QUIET_WARN_CODES = new Set([ 'shell-cli.not-on-path', // plugin-only installs work fully 'skills-manifest.missing-dev', // normal for source checkouts 'install-channel.unknown', // nothing is broken + 'mcp-config.placeholder-unresolved', // not a failure of this install — npm + // and source-checkout channels have no + // plugin root to resolve `${CLAUDE_PLUGIN_ROOT}` + // against, so there is nothing broken to act on 'http-probe.no-server', // you are LOOKING at the dashboard 'readme-parity.unreadable', // contributor-facing 'readme-parity.drift', // contributor-facing diff --git a/dashboard/src/lib/i18n.ts b/dashboard/src/lib/i18n.ts index bfd1c163d..a0a544921 100644 --- a/dashboard/src/lib/i18n.ts +++ b/dashboard/src/lib/i18n.ts @@ -387,14 +387,16 @@ const translations: Record> = { 'doctor.msg.readme-parity.drift.fix': 'Re-sync the listed READMEs with README.md.', 'doctor.msg.config.invalid-json.summary': 'The config file at {path} is not valid JSON, so it is being ignored.', 'doctor.msg.config.invalid-json.fix': 'Fix or delete {path}, then run `memesh config list` to confirm it loads.', - 'doctor.msg.mcp-config.missing.summary': 'The file that connects memesh to Claude Code (.mcp.json) is missing.', + 'doctor.msg.mcp-config.missing.summary': 'The file that connects memesh to Claude Code (.claude-plugin/mcp.json) is missing.', 'doctor.msg.mcp-config.missing.fix': 'Reinstall MeMesh to restore it.', - 'doctor.msg.mcp-config.invalid-json.summary': '.mcp.json is damaged (not valid JSON), so Claude Code cannot read it.', + 'doctor.msg.mcp-config.invalid-json.summary': '.claude-plugin/mcp.json is damaged (not valid JSON), so Claude Code cannot read it.', 'doctor.msg.mcp-config.invalid-json.fix': 'Fix {path} or reinstall MeMesh.', - 'doctor.msg.mcp-config.no-entry.summary': '.mcp.json no longer contains the memesh server entry.', + 'doctor.msg.mcp-config.no-entry.summary': '.claude-plugin/mcp.json no longer contains the memesh server entry.', 'doctor.msg.mcp-config.no-entry.fix': 'Reinstall MeMesh to restore it.', - 'doctor.msg.mcp-config.entry-missing.summary': '`.mcp.json` starts a file that is not in this install, so every memesh tool inside Claude Code fails to start.', - 'doctor.msg.mcp-config.entry-missing.fix': 'Reinstall MeMesh. If you edited `.mcp.json` by hand, point it back at `${CLAUDE_PLUGIN_ROOT}/dist/mcp/server.js`.', + 'doctor.msg.mcp-config.entry-missing.summary': '`.claude-plugin/mcp.json` starts a file that is not in this install, so every memesh tool inside Claude Code fails to start.', + 'doctor.msg.mcp-config.entry-missing.fix': 'Reinstall MeMesh. If you edited `.claude-plugin/mcp.json` by hand, point it back at `${CLAUDE_PLUGIN_ROOT}/dist/mcp/server.js`.', + 'doctor.msg.mcp-config.placeholder-unresolved.summary': 'NOT VERIFIED: `.claude-plugin/mcp.json` starts a path containing `${CLAUDE_PLUGIN_ROOT}`, which only the Claude Code plugin runtime fills in. This copy is not running as a plugin, so the file it names was not checked.', + 'doctor.msg.mcp-config.placeholder-unresolved.fix': 'Check it the way the plugin runtime would: run `CLAUDE_PLUGIN_ROOT= memesh doctor`.', 'doctor.msg.hooks-config.missing.summary': 'hooks/hooks.json is missing, so automatic memory capture cannot run.', 'doctor.msg.hooks-config.missing.fix': 'Reinstall MeMesh to restore it.', 'doctor.msg.hooks-config.invalid-json.summary': 'hooks/hooks.json is damaged (not valid JSON).', @@ -1180,14 +1182,16 @@ const translations: Record> = { 'doctor.msg.readme-parity.drift.fix': '把列出的 README 跟 README.md 重新對齊。', 'doctor.msg.config.invalid-json.summary': '{path} 的設定檔不是有效的 JSON,目前整份被忽略。', 'doctor.msg.config.invalid-json.fix': '修好或刪掉 {path},再執行 `memesh config list` 確認能載入。', - 'doctor.msg.mcp-config.missing.summary': '把 memesh 接上 Claude Code 的檔案(.mcp.json)不見了。', + 'doctor.msg.mcp-config.missing.summary': '把 memesh 接上 Claude Code 的檔案(.claude-plugin/mcp.json)不見了。', 'doctor.msg.mcp-config.missing.fix': '重新安裝 MeMesh 即可還原。', - 'doctor.msg.mcp-config.invalid-json.summary': '.mcp.json 壞掉了(不是有效的 JSON),Claude Code 讀不到它。', + 'doctor.msg.mcp-config.invalid-json.summary': '.claude-plugin/mcp.json 壞掉了(不是有效的 JSON),Claude Code 讀不到它。', 'doctor.msg.mcp-config.invalid-json.fix': '修好 {path},或重新安裝 MeMesh。', - 'doctor.msg.mcp-config.no-entry.summary': '.mcp.json 裡的 memesh 伺服器設定不見了。', + 'doctor.msg.mcp-config.no-entry.summary': '.claude-plugin/mcp.json 裡的 memesh 伺服器設定不見了。', 'doctor.msg.mcp-config.no-entry.fix': '重新安裝 MeMesh 即可還原。', - 'doctor.msg.mcp-config.entry-missing.summary': '`.mcp.json` 要啟動的檔案不在這份安裝裡,所以 Claude Code 裡的每個 memesh 工具都起不來。', - 'doctor.msg.mcp-config.entry-missing.fix': '重新安裝 MeMesh。如果你手動改過 `.mcp.json`,把它指回 `${CLAUDE_PLUGIN_ROOT}/dist/mcp/server.js`。', + 'doctor.msg.mcp-config.entry-missing.summary': '`.claude-plugin/mcp.json` 要啟動的檔案不在這份安裝裡,所以 Claude Code 裡的每個 memesh 工具都起不來。', + 'doctor.msg.mcp-config.entry-missing.fix': '重新安裝 MeMesh。如果你手動改過 `.claude-plugin/mcp.json`,把它指回 `${CLAUDE_PLUGIN_ROOT}/dist/mcp/server.js`。', + 'doctor.msg.mcp-config.placeholder-unresolved.summary': '尚未驗證:`.claude-plugin/mcp.json` 要啟動的路徑含有 `${CLAUDE_PLUGIN_ROOT}`,而這個變數只有 Claude Code 的外掛執行環境會代入。這份安裝不是以外掛方式在跑,所以它指向的檔案沒有被檢查。', + 'doctor.msg.mcp-config.placeholder-unresolved.fix': '用外掛執行環境的方式檢查:執行 `CLAUDE_PLUGIN_ROOT=<這份安裝的資料夾> memesh doctor`。', 'doctor.msg.hooks-config.missing.summary': 'hooks/hooks.json 不見了,自動記憶功能跑不起來。', 'doctor.msg.hooks-config.missing.fix': '重新安裝 MeMesh 即可還原。', 'doctor.msg.hooks-config.invalid-json.summary': 'hooks/hooks.json 壞掉了(不是有效的 JSON)。', @@ -1973,14 +1977,16 @@ const translations: Record> = { 'doctor.msg.readme-parity.drift.fix': '把列出的 README 与 README.md 重新对齐。', 'doctor.msg.config.invalid-json.summary': '{path} 的配置文件不是有效的 JSON,目前整份被忽略。', 'doctor.msg.config.invalid-json.fix': '修好或删掉 {path},再运行 `memesh config list` 确认能加载。', - 'doctor.msg.mcp-config.missing.summary': '把 memesh 接入 Claude Code 的文件(.mcp.json)不见了。', + 'doctor.msg.mcp-config.missing.summary': '把 memesh 接入 Claude Code 的文件(.claude-plugin/mcp.json)不见了。', 'doctor.msg.mcp-config.missing.fix': '重新安装 MeMesh 即可恢复。', - 'doctor.msg.mcp-config.invalid-json.summary': '.mcp.json 已损坏(不是有效的 JSON),Claude Code 读不到它。', + 'doctor.msg.mcp-config.invalid-json.summary': '.claude-plugin/mcp.json 已损坏(不是有效的 JSON),Claude Code 读不到它。', 'doctor.msg.mcp-config.invalid-json.fix': '修好 {path},或重新安装 MeMesh。', - 'doctor.msg.mcp-config.no-entry.summary': '.mcp.json 里的 memesh 服务器配置不见了。', + 'doctor.msg.mcp-config.no-entry.summary': '.claude-plugin/mcp.json 里的 memesh 服务器配置不见了。', 'doctor.msg.mcp-config.no-entry.fix': '重新安装 MeMesh 即可恢复。', - 'doctor.msg.mcp-config.entry-missing.summary': '`.mcp.json` 要启动的文件不在这份安装里,所以 Claude Code 里的每个 memesh 工具都起不来。', - 'doctor.msg.mcp-config.entry-missing.fix': '重新安装 MeMesh。如果你手动改过 `.mcp.json`,把它指回 `${CLAUDE_PLUGIN_ROOT}/dist/mcp/server.js`。', + 'doctor.msg.mcp-config.entry-missing.summary': '`.claude-plugin/mcp.json` 要启动的文件不在这份安装里,所以 Claude Code 里的每个 memesh 工具都起不来。', + 'doctor.msg.mcp-config.entry-missing.fix': '重新安装 MeMesh。如果你手动改过 `.claude-plugin/mcp.json`,把它指回 `${CLAUDE_PLUGIN_ROOT}/dist/mcp/server.js`。', + 'doctor.msg.mcp-config.placeholder-unresolved.summary': '尚未验证:`.claude-plugin/mcp.json` 要启动的路径含有 `${CLAUDE_PLUGIN_ROOT}`,而这个变量只有 Claude Code 的插件运行环境会替换。这份安装不是以插件方式运行的,所以它指向的文件没有被检查。', + 'doctor.msg.mcp-config.placeholder-unresolved.fix': '用插件运行环境的方式检查:运行 `CLAUDE_PLUGIN_ROOT=<这份安装的目录> memesh doctor`。', 'doctor.msg.hooks-config.missing.summary': 'hooks/hooks.json 不见了,自动记忆功能无法运行。', 'doctor.msg.hooks-config.missing.fix': '重新安装 MeMesh 即可恢复。', 'doctor.msg.hooks-config.invalid-json.summary': 'hooks/hooks.json 已损坏(不是有效的 JSON)。', @@ -2766,14 +2772,16 @@ const translations: Record> = { 'doctor.msg.readme-parity.drift.fix': '挙げられた README を README.md に合わせて更新してください。', 'doctor.msg.config.invalid-json.summary': '{path} の設定ファイルは有効な JSON ではないため、無視されています。', 'doctor.msg.config.invalid-json.fix': '{path} を修正するか削除し、`memesh config list` で読み込めるか確認してください。', - 'doctor.msg.mcp-config.missing.summary': 'memesh を Claude Code につなぐファイル(.mcp.json)が見つかりません。', + 'doctor.msg.mcp-config.missing.summary': 'memesh を Claude Code につなぐファイル(.claude-plugin/mcp.json)が見つかりません。', 'doctor.msg.mcp-config.missing.fix': 'MeMesh を再インストールすると復元されます。', - 'doctor.msg.mcp-config.invalid-json.summary': '.mcp.json が壊れています(有効な JSON ではありません)。Claude Code が読み取れません。', + 'doctor.msg.mcp-config.invalid-json.summary': '.claude-plugin/mcp.json が壊れています(有効な JSON ではありません)。Claude Code が読み取れません。', 'doctor.msg.mcp-config.invalid-json.fix': '{path} を修正するか、MeMesh を再インストールしてください。', - 'doctor.msg.mcp-config.no-entry.summary': '.mcp.json に memesh サーバーの設定がなくなっています。', + 'doctor.msg.mcp-config.no-entry.summary': '.claude-plugin/mcp.json に memesh サーバーの設定がなくなっています。', 'doctor.msg.mcp-config.no-entry.fix': 'MeMesh を再インストールすると復元されます。', - 'doctor.msg.mcp-config.entry-missing.summary': '`.mcp.json` が起動しようとしているファイルがこのインストールに存在しないため、Claude Code 内の memesh ツールがすべて起動しません。', - 'doctor.msg.mcp-config.entry-missing.fix': 'MeMesh を再インストールしてください。`.mcp.json` を手で編集した場合は `${CLAUDE_PLUGIN_ROOT}/dist/mcp/server.js` に戻してください。', + 'doctor.msg.mcp-config.entry-missing.summary': '`.claude-plugin/mcp.json` が起動しようとしているファイルがこのインストールに存在しないため、Claude Code 内の memesh ツールがすべて起動しません。', + 'doctor.msg.mcp-config.entry-missing.fix': 'MeMesh を再インストールしてください。`.claude-plugin/mcp.json` を手で編集した場合は `${CLAUDE_PLUGIN_ROOT}/dist/mcp/server.js` に戻してください。', + 'doctor.msg.mcp-config.placeholder-unresolved.summary': '未検証:`.claude-plugin/mcp.json` が起動するパスには `${CLAUDE_PLUGIN_ROOT}` が含まれており、この変数を展開するのは Claude Code のプラグイン実行環境だけです。このインストールはプラグインとして動いていないため、指定されたファイルは確認できていません。', + 'doctor.msg.mcp-config.placeholder-unresolved.fix': 'プラグイン実行環境と同じ条件で確認してください:`CLAUDE_PLUGIN_ROOT=<このインストールのフォルダ> memesh doctor` を実行します。', 'doctor.msg.hooks-config.missing.summary': 'hooks/hooks.json が見つからないため、自動の記憶保存が動きません。', 'doctor.msg.hooks-config.missing.fix': 'MeMesh を再インストールすると復元されます。', 'doctor.msg.hooks-config.invalid-json.summary': 'hooks/hooks.json が壊れています(有効な JSON ではありません)。', @@ -3559,14 +3567,16 @@ const translations: Record> = { 'doctor.msg.readme-parity.drift.fix': '나열된 README를 README.md에 맞춰 다시 정리하세요.', 'doctor.msg.config.invalid-json.summary': '{path}의 설정 파일이 올바른 JSON이 아니라서 무시되고 있습니다.', 'doctor.msg.config.invalid-json.fix': '{path}를 고치거나 삭제한 뒤 `memesh config list`로 불러와지는지 확인하세요.', - 'doctor.msg.mcp-config.missing.summary': 'memesh를 Claude Code에 연결하는 파일(.mcp.json)이 없습니다.', + 'doctor.msg.mcp-config.missing.summary': 'memesh를 Claude Code에 연결하는 파일(.claude-plugin/mcp.json)이 없습니다.', 'doctor.msg.mcp-config.missing.fix': 'MeMesh를 다시 설치하면 복원됩니다.', - 'doctor.msg.mcp-config.invalid-json.summary': '.mcp.json이 손상되어(올바른 JSON이 아님) Claude Code가 읽을 수 없습니다.', + 'doctor.msg.mcp-config.invalid-json.summary': '.claude-plugin/mcp.json이 손상되어(올바른 JSON이 아님) Claude Code가 읽을 수 없습니다.', 'doctor.msg.mcp-config.invalid-json.fix': '{path}를 고치거나 MeMesh를 다시 설치하세요.', - 'doctor.msg.mcp-config.no-entry.summary': '.mcp.json에 memesh 서버 항목이 더 이상 없습니다.', + 'doctor.msg.mcp-config.no-entry.summary': '.claude-plugin/mcp.json에 memesh 서버 항목이 더 이상 없습니다.', 'doctor.msg.mcp-config.no-entry.fix': 'MeMesh를 다시 설치하면 복원됩니다.', - 'doctor.msg.mcp-config.entry-missing.summary': '`.mcp.json`이 실행하려는 파일이 이 설치에 없어서 Claude Code 안의 모든 memesh 도구가 시작되지 않습니다.', - 'doctor.msg.mcp-config.entry-missing.fix': 'MeMesh를 다시 설치하세요. `.mcp.json`을 직접 고쳤다면 `${CLAUDE_PLUGIN_ROOT}/dist/mcp/server.js`로 되돌리세요.', + 'doctor.msg.mcp-config.entry-missing.summary': '`.claude-plugin/mcp.json`이 실행하려는 파일이 이 설치에 없어서 Claude Code 안의 모든 memesh 도구가 시작되지 않습니다.', + 'doctor.msg.mcp-config.entry-missing.fix': 'MeMesh를 다시 설치하세요. `.claude-plugin/mcp.json`을 직접 고쳤다면 `${CLAUDE_PLUGIN_ROOT}/dist/mcp/server.js`로 되돌리세요.', + 'doctor.msg.mcp-config.placeholder-unresolved.summary': '확인되지 않음: `.claude-plugin/mcp.json`이 실행하는 경로에 `${CLAUDE_PLUGIN_ROOT}`가 들어 있으며, 이 변수는 Claude Code 플러그인 실행 환경만 채워 넣습니다. 이 설치본은 플러그인으로 실행 중이 아니므로 그 파일은 검사하지 않았습니다.', + 'doctor.msg.mcp-config.placeholder-unresolved.fix': '플러그인 실행 환경과 같은 방식으로 확인하세요: `CLAUDE_PLUGIN_ROOT=<이 설치 폴더> memesh doctor`를 실행합니다.', 'doctor.msg.hooks-config.missing.summary': 'hooks/hooks.json이 없어서 자동 기억 저장이 동작하지 않습니다.', 'doctor.msg.hooks-config.missing.fix': 'MeMesh를 다시 설치하면 복원됩니다.', 'doctor.msg.hooks-config.invalid-json.summary': 'hooks/hooks.json이 손상되었습니다(올바른 JSON이 아님).', @@ -4352,14 +4362,16 @@ const translations: Record> = { 'doctor.msg.readme-parity.drift.fix': 'Realinhe os READMEs listados com o README.md.', 'doctor.msg.config.invalid-json.summary': 'O arquivo de configuração em {path} não é um JSON válido e está sendo ignorado.', 'doctor.msg.config.invalid-json.fix': 'Corrija ou apague {path} e depois execute `memesh config list` para confirmar que ele carrega.', - 'doctor.msg.mcp-config.missing.summary': 'O arquivo que conecta o memesh ao Claude Code (.mcp.json) está faltando.', + 'doctor.msg.mcp-config.missing.summary': 'O arquivo que conecta o memesh ao Claude Code (.claude-plugin/mcp.json) está faltando.', 'doctor.msg.mcp-config.missing.fix': 'Reinstale o MeMesh para restaurá-lo.', - 'doctor.msg.mcp-config.invalid-json.summary': 'O .mcp.json está danificado (não é um JSON válido) e o Claude Code não consegue lê-lo.', + 'doctor.msg.mcp-config.invalid-json.summary': 'O .claude-plugin/mcp.json está danificado (não é um JSON válido) e o Claude Code não consegue lê-lo.', 'doctor.msg.mcp-config.invalid-json.fix': 'Corrija {path} ou reinstale o MeMesh.', - 'doctor.msg.mcp-config.no-entry.summary': 'O .mcp.json não contém mais a entrada do servidor memesh.', + 'doctor.msg.mcp-config.no-entry.summary': 'O .claude-plugin/mcp.json não contém mais a entrada do servidor memesh.', 'doctor.msg.mcp-config.no-entry.fix': 'Reinstale o MeMesh para restaurá-la.', - 'doctor.msg.mcp-config.entry-missing.summary': 'O `.mcp.json` inicia um arquivo que não existe nesta instalação, então nenhuma ferramenta do memesh dentro do Claude Code consegue iniciar.', - 'doctor.msg.mcp-config.entry-missing.fix': 'Reinstale o MeMesh. Se você editou o `.mcp.json` à mão, aponte-o de volta para `${CLAUDE_PLUGIN_ROOT}/dist/mcp/server.js`.', + 'doctor.msg.mcp-config.entry-missing.summary': 'O `.claude-plugin/mcp.json` inicia um arquivo que não existe nesta instalação, então nenhuma ferramenta do memesh dentro do Claude Code consegue iniciar.', + 'doctor.msg.mcp-config.entry-missing.fix': 'Reinstale o MeMesh. Se você editou o `.claude-plugin/mcp.json` à mão, aponte-o de volta para `${CLAUDE_PLUGIN_ROOT}/dist/mcp/server.js`.', + 'doctor.msg.mcp-config.placeholder-unresolved.summary': 'NÃO VERIFICADO: o `.claude-plugin/mcp.json` inicia um caminho que contém `${CLAUDE_PLUGIN_ROOT}`, uma variável que só o runtime de plugins do Claude Code preenche. Esta cópia não está sendo executada como plugin, então o arquivo indicado não foi conferido.', + 'doctor.msg.mcp-config.placeholder-unresolved.fix': 'Confira do mesmo jeito que o runtime de plugins faria: execute `CLAUDE_PLUGIN_ROOT= memesh doctor`.', 'doctor.msg.hooks-config.missing.summary': 'O hooks/hooks.json está faltando, então a captura automática de memória não funciona.', 'doctor.msg.hooks-config.missing.fix': 'Reinstale o MeMesh para restaurá-lo.', 'doctor.msg.hooks-config.invalid-json.summary': 'O hooks/hooks.json está danificado (não é um JSON válido).', @@ -5145,14 +5157,16 @@ const translations: Record> = { 'doctor.msg.readme-parity.drift.fix': 'Resynchronisez les README listés avec README.md.', 'doctor.msg.config.invalid-json.summary': 'Le fichier de configuration {path} n\'est pas un JSON valide, il est donc ignoré.', 'doctor.msg.config.invalid-json.fix': 'Corrigez ou supprimez {path}, puis exécutez `memesh config list` pour vérifier qu\'il se charge.', - 'doctor.msg.mcp-config.missing.summary': 'Le fichier qui relie memesh à Claude Code (.mcp.json) est introuvable.', + 'doctor.msg.mcp-config.missing.summary': 'Le fichier qui relie memesh à Claude Code (.claude-plugin/mcp.json) est introuvable.', 'doctor.msg.mcp-config.missing.fix': 'Réinstallez MeMesh pour le restaurer.', - 'doctor.msg.mcp-config.invalid-json.summary': '.mcp.json est endommagé (JSON invalide), Claude Code ne peut donc pas le lire.', + 'doctor.msg.mcp-config.invalid-json.summary': '.claude-plugin/mcp.json est endommagé (JSON invalide), Claude Code ne peut donc pas le lire.', 'doctor.msg.mcp-config.invalid-json.fix': 'Corrigez {path} ou réinstallez MeMesh.', - 'doctor.msg.mcp-config.no-entry.summary': '.mcp.json ne contient plus l\'entrée du serveur memesh.', + 'doctor.msg.mcp-config.no-entry.summary': '.claude-plugin/mcp.json ne contient plus l\'entrée du serveur memesh.', 'doctor.msg.mcp-config.no-entry.fix': 'Réinstallez MeMesh pour la restaurer.', - 'doctor.msg.mcp-config.entry-missing.summary': '`.mcp.json` démarre un fichier absent de cette installation, donc aucun outil memesh dans Claude Code ne peut démarrer.', - 'doctor.msg.mcp-config.entry-missing.fix': 'Réinstallez MeMesh. Si vous avez modifié `.mcp.json` à la main, refaites-le pointer vers `${CLAUDE_PLUGIN_ROOT}/dist/mcp/server.js`.', + 'doctor.msg.mcp-config.entry-missing.summary': '`.claude-plugin/mcp.json` démarre un fichier absent de cette installation, donc aucun outil memesh dans Claude Code ne peut démarrer.', + 'doctor.msg.mcp-config.entry-missing.fix': 'Réinstallez MeMesh. Si vous avez modifié `.claude-plugin/mcp.json` à la main, refaites-le pointer vers `${CLAUDE_PLUGIN_ROOT}/dist/mcp/server.js`.', + 'doctor.msg.mcp-config.placeholder-unresolved.summary': 'NON VÉRIFIÉ : `.claude-plugin/mcp.json` démarre un chemin contenant `${CLAUDE_PLUGIN_ROOT}`, une variable que seul le runtime de plugins de Claude Code remplace. Cette copie ne tourne pas comme plugin, donc le fichier visé n\'a pas été contrôlé.', + 'doctor.msg.mcp-config.placeholder-unresolved.fix': 'Contrôlez-le comme le ferait le runtime de plugins : lancez `CLAUDE_PLUGIN_ROOT= memesh doctor`.', 'doctor.msg.hooks-config.missing.summary': 'hooks/hooks.json est introuvable, la capture automatique de mémoire ne peut donc pas fonctionner.', 'doctor.msg.hooks-config.missing.fix': 'Réinstallez MeMesh pour le restaurer.', 'doctor.msg.hooks-config.invalid-json.summary': 'hooks/hooks.json est endommagé (JSON invalide).', @@ -5938,14 +5952,16 @@ const translations: Record> = { 'doctor.msg.readme-parity.drift.fix': 'Gleichen Sie die aufgelisteten READMEs wieder mit README.md ab.', 'doctor.msg.config.invalid-json.summary': 'Die Konfigurationsdatei unter {path} ist kein gültiges JSON und wird deshalb ignoriert.', 'doctor.msg.config.invalid-json.fix': 'Reparieren oder löschen Sie {path} und prüfen Sie mit `memesh config list`, ob sie geladen wird.', - 'doctor.msg.mcp-config.missing.summary': 'Die Datei, die memesh mit Claude Code verbindet (.mcp.json), fehlt.', + 'doctor.msg.mcp-config.missing.summary': 'Die Datei, die memesh mit Claude Code verbindet (.claude-plugin/mcp.json), fehlt.', 'doctor.msg.mcp-config.missing.fix': 'Installieren Sie MeMesh neu, um sie wiederherzustellen.', - 'doctor.msg.mcp-config.invalid-json.summary': '.mcp.json ist beschädigt (kein gültiges JSON), Claude Code kann sie deshalb nicht lesen.', + 'doctor.msg.mcp-config.invalid-json.summary': '.claude-plugin/mcp.json ist beschädigt (kein gültiges JSON), Claude Code kann sie deshalb nicht lesen.', 'doctor.msg.mcp-config.invalid-json.fix': 'Reparieren Sie {path} oder installieren Sie MeMesh neu.', - 'doctor.msg.mcp-config.no-entry.summary': '.mcp.json enthält den memesh-Servereintrag nicht mehr.', + 'doctor.msg.mcp-config.no-entry.summary': '.claude-plugin/mcp.json enthält den memesh-Servereintrag nicht mehr.', 'doctor.msg.mcp-config.no-entry.fix': 'Installieren Sie MeMesh neu, um ihn wiederherzustellen.', - 'doctor.msg.mcp-config.entry-missing.summary': '`.mcp.json` startet eine Datei, die in dieser Installation fehlt — daher startet kein memesh-Werkzeug in Claude Code.', - 'doctor.msg.mcp-config.entry-missing.fix': 'Installieren Sie MeMesh neu. Wenn Sie `.mcp.json` von Hand geändert haben, richten Sie es wieder auf `${CLAUDE_PLUGIN_ROOT}/dist/mcp/server.js` aus.', + 'doctor.msg.mcp-config.entry-missing.summary': '`.claude-plugin/mcp.json` startet eine Datei, die in dieser Installation fehlt — daher startet kein memesh-Werkzeug in Claude Code.', + 'doctor.msg.mcp-config.entry-missing.fix': 'Installieren Sie MeMesh neu. Wenn Sie `.claude-plugin/mcp.json` von Hand geändert haben, richten Sie es wieder auf `${CLAUDE_PLUGIN_ROOT}/dist/mcp/server.js` aus.', + 'doctor.msg.mcp-config.placeholder-unresolved.summary': 'NICHT GEPRÜFT: `.claude-plugin/mcp.json` startet einen Pfad mit `${CLAUDE_PLUGIN_ROOT}` — diese Variable setzt nur die Plugin-Laufzeit von Claude Code ein. Diese Kopie läuft nicht als Plugin, daher wurde die genannte Datei nicht geprüft.', + 'doctor.msg.mcp-config.placeholder-unresolved.fix': 'Prüfen Sie es so, wie es die Plugin-Laufzeit täte: `CLAUDE_PLUGIN_ROOT= memesh doctor` ausführen.', 'doctor.msg.hooks-config.missing.summary': 'hooks/hooks.json fehlt, die automatische Erinnerungs-Erfassung kann deshalb nicht laufen.', 'doctor.msg.hooks-config.missing.fix': 'Installieren Sie MeMesh neu, um sie wiederherzustellen.', 'doctor.msg.hooks-config.invalid-json.summary': 'hooks/hooks.json ist beschädigt (kein gültiges JSON).', @@ -6731,14 +6747,16 @@ const translations: Record> = { 'doctor.msg.readme-parity.drift.fix': 'Đồng bộ lại các README được liệt kê với README.md.', 'doctor.msg.config.invalid-json.summary': 'Tệp cấu hình tại {path} không phải JSON hợp lệ nên đang bị bỏ qua.', 'doctor.msg.config.invalid-json.fix': 'Sửa hoặc xóa {path}, rồi chạy `memesh config list` để xác nhận nó tải được.', - 'doctor.msg.mcp-config.missing.summary': 'Tệp nối memesh với Claude Code (.mcp.json) đã biến mất.', + 'doctor.msg.mcp-config.missing.summary': 'Tệp nối memesh với Claude Code (.claude-plugin/mcp.json) đã biến mất.', 'doctor.msg.mcp-config.missing.fix': 'Cài lại MeMesh để khôi phục.', - 'doctor.msg.mcp-config.invalid-json.summary': '.mcp.json bị hỏng (không phải JSON hợp lệ) nên Claude Code không đọc được.', + 'doctor.msg.mcp-config.invalid-json.summary': '.claude-plugin/mcp.json bị hỏng (không phải JSON hợp lệ) nên Claude Code không đọc được.', 'doctor.msg.mcp-config.invalid-json.fix': 'Sửa {path} hoặc cài lại MeMesh.', - 'doctor.msg.mcp-config.no-entry.summary': '.mcp.json không còn mục máy chủ memesh nữa.', + 'doctor.msg.mcp-config.no-entry.summary': '.claude-plugin/mcp.json không còn mục máy chủ memesh nữa.', 'doctor.msg.mcp-config.no-entry.fix': 'Cài lại MeMesh để khôi phục.', - 'doctor.msg.mcp-config.entry-missing.summary': '`.mcp.json` khởi chạy một tệp không có trong bản cài này, nên mọi công cụ memesh trong Claude Code đều không khởi động được.', - 'doctor.msg.mcp-config.entry-missing.fix': 'Cài lại MeMesh. Nếu bạn tự sửa `.mcp.json`, hãy trỏ nó về `${CLAUDE_PLUGIN_ROOT}/dist/mcp/server.js`.', + 'doctor.msg.mcp-config.entry-missing.summary': '`.claude-plugin/mcp.json` khởi chạy một tệp không có trong bản cài này, nên mọi công cụ memesh trong Claude Code đều không khởi động được.', + 'doctor.msg.mcp-config.entry-missing.fix': 'Cài lại MeMesh. Nếu bạn tự sửa `.claude-plugin/mcp.json`, hãy trỏ nó về `${CLAUDE_PLUGIN_ROOT}/dist/mcp/server.js`.', + 'doctor.msg.mcp-config.placeholder-unresolved.summary': 'CHƯA KIỂM TRA: `.claude-plugin/mcp.json` khởi chạy một đường dẫn có chứa `${CLAUDE_PLUGIN_ROOT}`, biến mà chỉ môi trường chạy plugin của Claude Code mới thay thế. Bản cài này không chạy như một plugin, nên tệp mà nó trỏ tới chưa được kiểm tra.', + 'doctor.msg.mcp-config.placeholder-unresolved.fix': 'Hãy kiểm tra đúng cách môi trường plugin làm: chạy `CLAUDE_PLUGIN_ROOT= memesh doctor`.', 'doctor.msg.hooks-config.missing.summary': 'hooks/hooks.json đã biến mất nên tính năng ghi nhớ tự động không chạy được.', 'doctor.msg.hooks-config.missing.fix': 'Cài lại MeMesh để khôi phục.', 'doctor.msg.hooks-config.invalid-json.summary': 'hooks/hooks.json bị hỏng (không phải JSON hợp lệ).', @@ -7524,14 +7542,16 @@ const translations: Record> = { 'doctor.msg.readme-parity.drift.fix': 'Vuelve a sincronizar los README listados con README.md.', 'doctor.msg.config.invalid-json.summary': 'El archivo de configuración en {path} no es JSON válido, así que se está ignorando.', 'doctor.msg.config.invalid-json.fix': 'Arregla o borra {path}, y luego ejecuta `memesh config list` para confirmar que carga.', - 'doctor.msg.mcp-config.missing.summary': 'Falta el archivo que conecta memesh con Claude Code (.mcp.json).', + 'doctor.msg.mcp-config.missing.summary': 'Falta el archivo que conecta memesh con Claude Code (.claude-plugin/mcp.json).', 'doctor.msg.mcp-config.missing.fix': 'Reinstala MeMesh para restaurarlo.', - 'doctor.msg.mcp-config.invalid-json.summary': '.mcp.json está dañado (no es JSON válido), así que Claude Code no puede leerlo.', + 'doctor.msg.mcp-config.invalid-json.summary': '.claude-plugin/mcp.json está dañado (no es JSON válido), así que Claude Code no puede leerlo.', 'doctor.msg.mcp-config.invalid-json.fix': 'Arregla {path} o reinstala MeMesh.', - 'doctor.msg.mcp-config.no-entry.summary': '.mcp.json ya no contiene la entrada del servidor memesh.', + 'doctor.msg.mcp-config.no-entry.summary': '.claude-plugin/mcp.json ya no contiene la entrada del servidor memesh.', 'doctor.msg.mcp-config.no-entry.fix': 'Reinstala MeMesh para restaurarla.', - 'doctor.msg.mcp-config.entry-missing.summary': '`.mcp.json` arranca un archivo que no está en esta instalación, así que ninguna herramienta de memesh dentro de Claude Code puede iniciarse.', - 'doctor.msg.mcp-config.entry-missing.fix': 'Reinstala MeMesh. Si editaste `.mcp.json` a mano, vuelve a apuntarlo a `${CLAUDE_PLUGIN_ROOT}/dist/mcp/server.js`.', + 'doctor.msg.mcp-config.entry-missing.summary': '`.claude-plugin/mcp.json` arranca un archivo que no está en esta instalación, así que ninguna herramienta de memesh dentro de Claude Code puede iniciarse.', + 'doctor.msg.mcp-config.entry-missing.fix': 'Reinstala MeMesh. Si editaste `.claude-plugin/mcp.json` a mano, vuelve a apuntarlo a `${CLAUDE_PLUGIN_ROOT}/dist/mcp/server.js`.', + 'doctor.msg.mcp-config.placeholder-unresolved.summary': 'NO VERIFICADO: `.claude-plugin/mcp.json` arranca una ruta que contiene `${CLAUDE_PLUGIN_ROOT}`, una variable que solo rellena el runtime de plugins de Claude Code. Esta copia no se está ejecutando como plugin, así que no se comprobó el archivo al que apunta.', + 'doctor.msg.mcp-config.placeholder-unresolved.fix': 'Compruébalo igual que lo haría el runtime de plugins: ejecuta `CLAUDE_PLUGIN_ROOT= memesh doctor`.', 'doctor.msg.hooks-config.missing.summary': 'Falta hooks/hooks.json, así que la captura automática de memoria no puede funcionar.', 'doctor.msg.hooks-config.missing.fix': 'Reinstala MeMesh para restaurarlo.', 'doctor.msg.hooks-config.invalid-json.summary': 'hooks/hooks.json está dañado (no es JSON válido).', @@ -8317,14 +8337,16 @@ const translations: Record> = { 'doctor.msg.readme-parity.drift.fix': 'ปรับ README ที่ระบุให้ตรงกับ README.md อีกครั้ง', 'doctor.msg.config.invalid-json.summary': 'ไฟล์ตั้งค่าที่ {path} ไม่ใช่ JSON ที่ถูกต้อง จึงถูกข้ามไป', 'doctor.msg.config.invalid-json.fix': 'แก้หรือลบ {path} แล้วรัน `memesh config list` เพื่อยืนยันว่าโหลดได้', - 'doctor.msg.mcp-config.missing.summary': 'ไฟล์ที่เชื่อม memesh กับ Claude Code (.mcp.json) หายไป', + 'doctor.msg.mcp-config.missing.summary': 'ไฟล์ที่เชื่อม memesh กับ Claude Code (.claude-plugin/mcp.json) หายไป', 'doctor.msg.mcp-config.missing.fix': 'ติดตั้ง MeMesh ใหม่เพื่อกู้คืน', - 'doctor.msg.mcp-config.invalid-json.summary': '.mcp.json เสียหาย (ไม่ใช่ JSON ที่ถูกต้อง) Claude Code จึงอ่านไม่ได้', + 'doctor.msg.mcp-config.invalid-json.summary': '.claude-plugin/mcp.json เสียหาย (ไม่ใช่ JSON ที่ถูกต้อง) Claude Code จึงอ่านไม่ได้', 'doctor.msg.mcp-config.invalid-json.fix': 'แก้ {path} หรือติดตั้ง MeMesh ใหม่', - 'doctor.msg.mcp-config.no-entry.summary': '.mcp.json ไม่มีรายการเซิร์ฟเวอร์ memesh แล้ว', + 'doctor.msg.mcp-config.no-entry.summary': '.claude-plugin/mcp.json ไม่มีรายการเซิร์ฟเวอร์ memesh แล้ว', 'doctor.msg.mcp-config.no-entry.fix': 'ติดตั้ง MeMesh ใหม่เพื่อกู้คืน', - 'doctor.msg.mcp-config.entry-missing.summary': '`.mcp.json` สั่งเปิดไฟล์ที่ไม่มีอยู่ในการติดตั้งนี้ เครื่องมือ memesh ทุกตัวใน Claude Code จึงเริ่มทำงานไม่ได้', - 'doctor.msg.mcp-config.entry-missing.fix': 'ติดตั้ง MeMesh ใหม่ ถ้าคุณแก้ `.mcp.json` เอง ให้ชี้กลับไปที่ `${CLAUDE_PLUGIN_ROOT}/dist/mcp/server.js`', + 'doctor.msg.mcp-config.entry-missing.summary': '`.claude-plugin/mcp.json` สั่งเปิดไฟล์ที่ไม่มีอยู่ในการติดตั้งนี้ เครื่องมือ memesh ทุกตัวใน Claude Code จึงเริ่มทำงานไม่ได้', + 'doctor.msg.mcp-config.entry-missing.fix': 'ติดตั้ง MeMesh ใหม่ ถ้าคุณแก้ `.claude-plugin/mcp.json` เอง ให้ชี้กลับไปที่ `${CLAUDE_PLUGIN_ROOT}/dist/mcp/server.js`', + 'doctor.msg.mcp-config.placeholder-unresolved.summary': 'ยังไม่ได้ตรวจสอบ: `.claude-plugin/mcp.json` สั่งเปิดพาธที่มี `${CLAUDE_PLUGIN_ROOT}` ซึ่งมีเพียงระบบรันปลั๊กอินของ Claude Code เท่านั้นที่แทนค่าให้ การติดตั้งชุดนี้ไม่ได้ทำงานในฐานะปลั๊กอิน จึงยังไม่ได้ตรวจไฟล์ที่มันชี้ไป', + 'doctor.msg.mcp-config.placeholder-unresolved.fix': 'ตรวจแบบเดียวกับที่ระบบรันปลั๊กอินทำ: รัน `CLAUDE_PLUGIN_ROOT=<โฟลเดอร์ของการติดตั้งนี้> memesh doctor`', 'doctor.msg.hooks-config.missing.summary': 'hooks/hooks.json หายไป การบันทึกความจำอัตโนมัติจึงทำงานไม่ได้', 'doctor.msg.hooks-config.missing.fix': 'ติดตั้ง MeMesh ใหม่เพื่อกู้คืน', 'doctor.msg.hooks-config.invalid-json.summary': 'hooks/hooks.json เสียหาย (ไม่ใช่ JSON ที่ถูกต้อง)', diff --git a/dist/core/doctor.d.ts b/dist/core/doctor.d.ts index 9a49b5d38..291ccb979 100644 --- a/dist/core/doctor.d.ts +++ b/dist/core/doctor.d.ts @@ -44,6 +44,7 @@ interface DoctorOptions { existsSyncImpl?: typeof fs.existsSync; readFileSyncImpl?: typeof fs.readFileSync; statSyncImpl?: typeof fs.statSync; + envImpl?: NodeJS.ProcessEnv; fetchImpl?: typeof fetch; agentMessageStoragePolicy?: { storage_quota_bytes?: number; diff --git a/dist/core/doctor.d.ts.map b/dist/core/doctor.d.ts.map index 253a1a031..75f1e529d 100644 --- a/dist/core/doctor.d.ts.map +++ b/dist/core/doctor.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"doctor.d.ts","sourceRoot":"","sources":["../../src/core/doctor.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"doctor.d.ts","sourceRoot":"","sources":["../../src/core/doctor.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist/core/doctor.js b/dist/core/doctor.js index 2aa1ac96a..f25cbb7f0 100644 --- a/dist/core/doctor.js +++ b/dist/core/doctor.js @@ -217,28 +217,49 @@ function inspectConfigFile(existsSyncImpl, readFileSyncImpl, getConfigPathImpl, return createCheck('config', 'Config', 'fail', `${configPath} could not be read or parsed (${msg}). Every setting in it — LLM provider, fallbacks, embedder — is being silently ignored right now.`, `Fix the JSON or remove the file to fall back to defaults: mv ${configPath} ${configPath}.bak`, { code: 'config-parse.unreadable', params: { path: configPath, detail: msg } }); } } -function inspectMcpConfig(packageRoot, existsSyncImpl, readFileSyncImpl) { - const mcpPath = path.join(packageRoot, '.mcp.json'); +const MCP_PLACEHOLDER = '${CLAUDE_PLUGIN_ROOT}'; +function declaredMcpManifest(packageRoot, readFileSyncImpl) { + const parsed = parseJsonFile(path.join(packageRoot, '.claude-plugin', 'plugin.json'), readFileSyncImpl); + if (!parsed.ok) + return null; + const declared = parsed.value.mcpServers; + if (typeof declared !== 'string' || !declared.startsWith('./')) + return null; + return declared.slice(2); +} +function inspectMcpConfig(packageRoot, installChannel, existsSyncImpl, readFileSyncImpl, env) { + const relativeManifest = declaredMcpManifest(packageRoot, readFileSyncImpl); + if (relativeManifest === null) { + return createCheck('mcp-config', 'MCP config', 'fail', '.claude-plugin/plugin.json declares no `mcpServers` path, so Claude Code has no MeMesh MCP server to start.', 'Reinstall MeMesh so the plugin manifest and the MCP manifest it names are both restored.', { code: 'mcp-config.missing' }); + } + const label = relativeManifest; + const mcpPath = path.join(packageRoot, relativeManifest); if (!existsSyncImpl(mcpPath)) { - return createCheck('mcp-config', 'MCP config', 'fail', '.mcp.json is missing.', 'Restore `.mcp.json` from the package or reinstall MeMesh.', { code: 'mcp-config.missing' }); + return createCheck('mcp-config', 'MCP config', 'fail', `${label} is missing.`, 'Reinstall MeMesh so the plugin manifest and the MCP manifest it names are both restored.', { code: 'mcp-config.missing' }); } const parsed = parseJsonFile(mcpPath, readFileSyncImpl); if (!parsed.ok) { - return createCheck('mcp-config', 'MCP config', 'fail', '.mcp.json is not valid JSON.', `Fix ${mcpPath} so Claude Code can read the MCP server definition.`, { code: 'mcp-config.invalid-json', params: { path: mcpPath } }); + return createCheck('mcp-config', 'MCP config', 'fail', `${label} is not valid JSON.`, `Fix ${mcpPath} so Claude Code can read the MCP server definition.`, { code: 'mcp-config.invalid-json', params: { path: mcpPath } }); } const server = parsed.value.mcpServers?.memesh; if (!server || typeof server.command !== 'string') { - return createCheck('mcp-config', 'MCP config', 'fail', '.mcp.json does not define a usable `memesh` MCP server entry.', 'Reinstall MeMesh or restore the `mcpServers.memesh` entry in `.mcp.json`.', { code: 'mcp-config.no-entry' }); + return createCheck('mcp-config', 'MCP config', 'fail', `${label} does not define a usable \`memesh\` MCP server entry.`, `Reinstall MeMesh or restore the \`mcpServers.memesh\` entry in \`${label}\`.`, { code: 'mcp-config.no-entry' }); } const args = Array.isArray(server.args) ? server.args : []; const entry = typeof args[0] === 'string' ? args[0] : null; if (entry) { - const resolved = path.resolve(entry.replaceAll('${CLAUDE_PLUGIN_ROOT}', packageRoot)); + const pluginRoot = installChannel === 'plugin-marketplace' ? packageRoot : (env.CLAUDE_PLUGIN_ROOT || null); + if (entry.includes(MCP_PLACEHOLDER) && pluginRoot === null) { + return createCheck('mcp-config', 'MCP config', 'warn', `${label} starts \`${entry}\`. NOT VERIFIED: \`${MCP_PLACEHOLDER}\` is substituted by the Claude Code plugin runtime, and this is a ${installChannel} install with CLAUDE_PLUGIN_ROOT unset — so the file it names was not checked.`, `Verify it the way the plugin runtime would: CLAUDE_PLUGIN_ROOT=${packageRoot} memesh doctor`, { code: 'mcp-config.placeholder-unresolved', params: { entry, channel: installChannel } }); + } + const resolved = pluginRoot === null + ? path.resolve(packageRoot, entry) + : path.resolve(entry.replaceAll(MCP_PLACEHOLDER, pluginRoot)); if (!existsSyncImpl(resolved)) { - return createCheck('mcp-config', 'MCP config', 'fail', `.mcp.json starts \`${entry}\`, and that file is not in this install — so every memesh MCP tool fails to start.`, 'Reinstall MeMesh; if you edited `.mcp.json` by hand, point it back at `${CLAUDE_PLUGIN_ROOT}/dist/mcp/server.js`.', { code: 'mcp-config.entry-missing', params: { entry, resolved } }); + return createCheck('mcp-config', 'MCP config', 'fail', `${label} starts \`${entry}\`, and that file is not in this install — so every memesh MCP tool fails to start.`, `Reinstall MeMesh; if you edited \`${label}\` by hand, point it back at \`${MCP_PLACEHOLDER}/dist/mcp/server.js\`.`, { code: 'mcp-config.entry-missing', params: { entry, resolved } }); } } - return createCheck('mcp-config', 'MCP config', 'pass', '.mcp.json is present, defines the memesh MCP server, and the script it starts exists.'); + return createCheck('mcp-config', 'MCP config', 'pass', `${label} is present, defines the memesh MCP server, and the script it starts exists.`); } function extractHookScriptPaths(hooksConfig, packageRoot) { const hooks = hooksConfig.hooks; @@ -1308,7 +1329,7 @@ function summarizeOverallStatus(checks) { return 'PASS'; } export async function runDoctor(options) { - const { packageRoot, packageVersion, probeHttp = false, probeCapabilities = false, embedTextImpl = embedText, probeProviderImpl = probeProvider, httpBaseUrl = 'http://127.0.0.1:3737', platform = process.platform, openDatabaseImpl = openDatabase, closeDatabaseImpl = closeDatabase, isDatabaseOpenImpl = isDatabaseOpen, detectCapabilitiesImpl = detectCapabilities, getConfigPathImpl = getConfigPath, getUpdateCheckImpl = getUpdateCheck, getCurrentInstallChannelImpl = getCurrentInstallChannel, installedPluginsPathImpl, marketplaceHeadShaImpl = defaultMarketplaceHeadSha, pluginCacheDiscoveryImpl, getInstallChannelSupportImpl = getInstallChannelSupport, existsSyncImpl = fs.existsSync, readFileSyncImpl = fs.readFileSync, statSyncImpl = fs.statSync, fetchImpl = fetch, agentMessageStoragePolicy, nativeBindingProbeImpl, resolveShellMemeshImpl = defaultResolveShellMemesh, probeMessageCapability = process.env.MEMESH_DOCTOR_PROBE_MESSAGE_CAPABILITY === '1', messageCapabilityProbeImpl = probeInstalledMessageCapability, probeMessageRouterStatus = process.env.MEMESH_DOCTOR_PROBE_MESSAGE_ROUTER === '1', messageRouterStatusProbeImpl = defaultMessageRouterStatusProbe, } = options; + const { packageRoot, packageVersion, probeHttp = false, probeCapabilities = false, embedTextImpl = embedText, probeProviderImpl = probeProvider, httpBaseUrl = 'http://127.0.0.1:3737', platform = process.platform, envImpl = process.env, openDatabaseImpl = openDatabase, closeDatabaseImpl = closeDatabase, isDatabaseOpenImpl = isDatabaseOpen, detectCapabilitiesImpl = detectCapabilities, getConfigPathImpl = getConfigPath, getUpdateCheckImpl = getUpdateCheck, getCurrentInstallChannelImpl = getCurrentInstallChannel, installedPluginsPathImpl, marketplaceHeadShaImpl = defaultMarketplaceHeadSha, pluginCacheDiscoveryImpl, getInstallChannelSupportImpl = getInstallChannelSupport, existsSyncImpl = fs.existsSync, readFileSyncImpl = fs.readFileSync, statSyncImpl = fs.statSync, fetchImpl = fetch, agentMessageStoragePolicy, nativeBindingProbeImpl, resolveShellMemeshImpl = defaultResolveShellMemesh, probeMessageCapability = process.env.MEMESH_DOCTOR_PROBE_MESSAGE_CAPABILITY === '1', messageCapabilityProbeImpl = probeInstalledMessageCapability, probeMessageRouterStatus = process.env.MEMESH_DOCTOR_PROBE_MESSAGE_ROUTER === '1', messageRouterStatusProbeImpl = defaultMessageRouterStatusProbe, } = options; const wasDbOpenBeforeUs = isDatabaseOpenImpl(); const safeCloseDatabaseImpl = wasDbOpenBeforeUs ? () => undefined @@ -1521,7 +1542,7 @@ export async function runDoctor(options) { } } checks.push(inspectConfigFile(existsSyncImpl, readFileSyncImpl, getConfigPathImpl, detectCapabilitiesImpl().llm)); - checks.push(inspectMcpConfig(packageRoot, existsSyncImpl, readFileSyncImpl)); + checks.push(inspectMcpConfig(packageRoot, install, existsSyncImpl, readFileSyncImpl, envImpl)); checks.push(...inspectHooksConfig(packageRoot, platform, existsSyncImpl, readFileSyncImpl, statSyncImpl)); const pluginHost = detectPluginHost(packageRoot); let codexPluginCacheDetected = pluginHost === 'codex'; diff --git a/dist/core/doctor.js.map b/dist/core/doctor.js.map index 6d220bf16..2273c30c6 100644 --- a/dist/core/doctor.js.map +++ b/dist/core/doctor.js.map @@ -1 +1 @@ -{"version":3,"file":"doctor.js","sourceRoot":"","sources":["../../src/core/doctor.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"doctor.js","sourceRoot":"","sources":["../../src/core/doctor.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist/skills-manifest.json b/dist/skills-manifest.json index f17d49106..29e2b3423 100644 --- a/dist/skills-manifest.json +++ b/dist/skills-manifest.json @@ -1,10 +1,15 @@ { "schema": "memesh.skills-manifest/v1", "entries": [ + { + "path": ".claude-plugin/mcp.json", + "sha256": "b3f72e0ed3ca2d34267f25f5f478d6f9e087f4058fcbf2e72a89759a3e324aad", + "bytes": 132 + }, { "path": ".claude-plugin/plugin.json", - "sha256": "020f5b9ae58b24ed237093453889ad4795ff9d06fa33455b48b1aeda0aaf6e4a", - "bytes": 527 + "sha256": "fe68e32aaf8cd1ec56472bd058b1149f8451938524bf945ad27c4ba9cd362136", + "bytes": 572 }, { "path": ".codex-plugin/mcp.json", @@ -16,11 +21,6 @@ "sha256": "4a31bc9ce1ef62f7203ed9b3a9d4a9aa4b9a95a19f37f60cf4cfbdffa0ca95d8", "bytes": 154 }, - { - "path": ".mcp.json", - "sha256": "b3f72e0ed3ca2d34267f25f5f478d6f9e087f4058fcbf2e72a89759a3e324aad", - "bytes": 132 - }, { "path": "hooks/hooks.json", "sha256": "fbbaaeeafc11d799223bf0d8bb11f433354146787b38716af6bc31afb81d4755", diff --git a/docs/api/API_REFERENCE.md b/docs/api/API_REFERENCE.md index f7d873974..8ba1bcae5 100644 --- a/docs/api/API_REFERENCE.md +++ b/docs/api/API_REFERENCE.md @@ -1875,7 +1875,7 @@ Two behaviours worth stating because they differ from a filesystem: ## Connection -MeMesh runs as a stdio MCP server. Claude Code manages the connection automatically via the plugin's `.mcp.json` configuration. +MeMesh runs as a stdio MCP server. Claude Code manages the connection automatically via the MCP manifest the plugin declares in `.claude-plugin/plugin.json` (`mcpServers: "./.claude-plugin/mcp.json"`). ```json { diff --git a/docs/platforms/README.md b/docs/platforms/README.md index 8b6a7db91..ed1f61e2e 100644 --- a/docs/platforms/README.md +++ b/docs/platforms/README.md @@ -158,7 +158,7 @@ Use MCP mode when the client supports MCP. Use HTTP mode when you control a loca **MCP client not seeing tools**: - Verify the client is configured to run `memesh-mcp` -- Run `memesh doctor` to verify `.mcp.json`, hooks, dashboard assets, local database, and install method +- Run `memesh doctor` to verify the plugin MCP manifest (`.claude-plugin/mcp.json`), hooks, dashboard assets, local database, and install method - Run `memesh status` to confirm capabilities and update state - Check the client logs for MCP server startup errors diff --git a/package-lock.json b/package-lock.json index bd9bdae12..c635a696e 100644 --- a/package-lock.json +++ b/package-lock.json @@ -22,6 +22,7 @@ "memesh-host-acp": "dist/host-runtime/acp.js", "memesh-host-claude": "dist/host-runtime/claude.js", "memesh-host-codex": "dist/host-runtime/codex.js", + "memesh-host-codex-session": "dist/host-runtime/codex-session.js", "memesh-http": "dist/transports/http/server.js", "memesh-mcp": "dist/mcp/server.js", "memesh-router": "dist/host-runtime/router.js" diff --git a/package.json b/package.json index e30faf9d6..24a7d88fa 100644 --- a/package.json +++ b/package.json @@ -17,7 +17,6 @@ "files": [ "dist/", "dashboard/dist/", - ".mcp.json", "hooks/hooks.json", "scripts/hooks/", "scripts/upgrade-plugin.sh", diff --git a/scripts/audit/baseline.json b/scripts/audit/baseline.json index 1df52f941..46c93636f 100644 --- a/scripts/audit/baseline.json +++ b/scripts/audit/baseline.json @@ -690,6 +690,11 @@ "class": "NOT-A-GATE", "reason": "real-browser (real HTTP server + real Chromium) verification that the dashboard doctor banner renders correctly translated across all 11 locales, for evidence-gates output_readback/process_boundary/failure_path evidence -- invoked directly by `eg record`, not by any npm script or CI workflow. A human or eg re-runs it on demand when the dashboard i18n catalogue changes; it does not gate a commit or a release on its own.", "triaged": "2026-09-03" + }, + "C3 scripts/qa/verify-dashboard-mcp-config-banner-i18n.mjs": { + "class": "NOT-A-GATE", + "reason": "real-browser (real HTTP server + real Chromium) verification that the dashboard doctor banner renders the mcp-config.placeholder-unresolved (quiet) and mcp-config.missing (translated banner) states correctly across all 11 locales, for evidence-gates output_readback/process_boundary/failure_path evidence -- invoked directly by `eg record`, not by any npm script or CI workflow. Renamed from verify-dashboard-doctor-banner-i18n.mjs during a rebase over PR #293, which already claimed that filename for its own llm-telemetry.silent-failure banner script -- distinct doctor codes, distinct files. A human or eg re-runs it on demand when the dashboard i18n catalogue changes; it does not gate a commit or a release on its own.", + "triaged": "2026-09-04" } } } diff --git a/scripts/check-agent-message-sync.mjs b/scripts/check-agent-message-sync.mjs index 2a45c0b4b..0258501d5 100644 --- a/scripts/check-agent-message-sync.mjs +++ b/scripts/check-agent-message-sync.mjs @@ -31,6 +31,9 @@ const requireText = (relative, needles) => { if (!text.includes(needle)) missing.push(`${relative} (missing ${JSON.stringify(needle)})`); } }; +const requireAbsent = (relative, why) => { + if (fs.existsSync(path.join(root, relative))) missing.push(`${relative} (must NOT exist: ${why})`); +}; const requirePattern = (relative, pattern, description) => { const text = read(relative); if (!pattern.test(text)) missing.push(`${relative} (missing ${description})`); @@ -184,8 +187,15 @@ requireText('docs/platforms/agent-messaging.md', [ 'exact-session', 'principal target', 'Local', 'Cloud', 'Bounded storage and audit retention', ]); requireText('skills/memesh/SKILL.md', ['message', 'polling', 'active compatible managed host', 'stopped, missing, or replaced session', 'message storage report']); -requireText('.mcp.json', ['memesh', '${CLAUDE_PLUGIN_ROOT}/dist/mcp/server.js']); -requireText('.claude-plugin/plugin.json', ['"name": "memesh"', '"version"']); +requireText('.claude-plugin/mcp.json', ['memesh', '${CLAUDE_PLUGIN_ROOT}/dist/mcp/server.js']); +requireText('.claude-plugin/plugin.json', ['"name": "memesh"', '"version"', '"mcpServers": "./.claude-plugin/mcp.json"']); +requireAbsent( + '.mcp.json', + 'Claude Code auto-discovers a root .mcp.json as a PROJECT-scoped MCP config for anyone who ' + + 'opens this repository, and ${CLAUDE_PLUGIN_ROOT} is undefined there — the server dies with ' + + '-32000 Connection closed. Custom component paths supplement the defaults rather than ' + + 'replacing them, so .claude-plugin/plugin.json declaring a path is only half the fix.' +); requireText('.codex-plugin/plugin.json', ['"name": "memesh"', '"version"', '"mcpServers": "./.codex-plugin/mcp.json"']); requireText('.codex-plugin/mcp.json', ['"memesh"', '"command": "node"', '"./dist/mcp/server.js"', '"cwd": "."']); requireText('.claude-plugin/marketplace.json', ['"name": "pcircle-memesh"', '"version"']); diff --git a/scripts/generate-skills-manifest.mjs b/scripts/generate-skills-manifest.mjs index d8ab6f7e9..5255d791a 100644 --- a/scripts/generate-skills-manifest.mjs +++ b/scripts/generate-skills-manifest.mjs @@ -17,7 +17,8 @@ // - skills/**/SKILL.md (loaded as Claude system prompt) // - scripts/hooks/*.js (run in user's Claude Code process) // - hooks/hooks.json (declares which hooks are active) -// - .mcp.json, .claude-plugin/plugin.json, .codex-plugin/plugin.json +// - .claude-plugin/mcp.json, .claude-plugin/plugin.json, +// .codex-plugin/plugin.json, .codex-plugin/mcp.json // (host wiring) // // What's NOT covered (out of scope for this manifest): @@ -88,7 +89,7 @@ targets.push(...(await walk(join(repoRoot, 'scripts', 'hooks'), true)).filter(p // "Skills + hooks integrity PASS", and says nothing about the package having // shipped without its wiring — absence read as success, which is the defect // class this release exists to remove. -for (const f of ['hooks/hooks.json', '.mcp.json', '.claude-plugin/plugin.json', '.codex-plugin/plugin.json', '.codex-plugin/mcp.json']) { +for (const f of ['hooks/hooks.json', '.claude-plugin/mcp.json', '.claude-plugin/plugin.json', '.codex-plugin/plugin.json', '.codex-plugin/mcp.json']) { const full = join(repoRoot, f); try { statSync(full); diff --git a/scripts/lib/executable-targets.mjs b/scripts/lib/executable-targets.mjs index 2fa229677..88333c9ea 100644 --- a/scripts/lib/executable-targets.mjs +++ b/scripts/lib/executable-targets.mjs @@ -92,11 +92,62 @@ export function executableTargets(packageDir) { } /** - * The script `.mcp.json` starts, relative to the package root. + * The MCP manifest the Claude plugin declares, relative to the package root. + * + * Read from `.claude-plugin/plugin.json` rather than hardcoded, for the same + * anti-drift reason `mcpEntry` derives its path instead of naming one: a + * hand-written path that stopped matching the manifest is the exact defect + * class this pair exists to catch. + * + * The path MUST NOT be `.mcp.json` at the package root. Claude Code + * auto-discovers a root `.mcp.json` as a PROJECT-scoped MCP config for anyone + * who opens the directory, and in that context `${CLAUDE_PLUGIN_ROOT}` is + * undefined — `claude mcp list` reports "Missing environment variables: + * CLAUDE_PLUGIN_ROOT" and the server dies with `-32000 Connection closed`. + * The same file is correct inside the plugin loader, which is what made the + * breakage invisible for three and a half months: one file serving two roles, + * right in one and wrong in the other. + * + * @param {string} packageDir - package root to read .claude-plugin/plugin.json from + * @returns {string} relative path to the MCP manifest + */ +export function mcpManifestPath(packageDir) { + const pluginManifestPath = path.join(packageDir, '.claude-plugin', 'plugin.json'); + const plugin = JSON.parse(fs.readFileSync(pluginManifestPath, 'utf8')); + const declared = plugin.mcpServers; + + if (typeof declared !== 'string') { + throw new Error( + '.claude-plugin/plugin.json declares no `mcpServers` path — without it Claude Code ' + + 'falls back to auto-discovering a root `.mcp.json`, which is the project-scoped ' + + 'path where ${CLAUDE_PLUGIN_ROOT} is undefined' + ); + } + if (!declared.startsWith('./')) { + throw new Error( + `.claude-plugin/plugin.json \`mcpServers\` is ${JSON.stringify(declared)} — the plugin ` + + 'spec requires a path relative to the plugin root that starts with "./"' + ); + } + + const relative = declared.slice(2); + if (relative === '.mcp.json') { + throw new Error( + 'the MCP manifest is declared at the package root as `.mcp.json`, which Claude Code ' + + 'also auto-discovers as a project-scoped config; ${CLAUDE_PLUGIN_ROOT} is undefined ' + + 'there and every memesh MCP tool fails to start' + ); + } + + return relative; +} + +/** + * The script the MCP manifest starts, relative to the package root. * * Derived for the same reason as the two lists above, and after the same kind * of miss: the MCP entry point was renamed, `package.json` `bin` and `npm - * start` were both repointed, and `.mcp.json` — the only entry point a + * start` were both repointed, and the MCP manifest — the only entry point a * `/plugin install` user ever hits — kept naming the deleted file. Every MCP * tool failed with `-32000 failed to reconnect`, and nothing noticed, because * the packed-artifact gate checked a hand-written path list that no longer @@ -104,16 +155,17 @@ export function executableTargets(packageDir) { * * `command` is the interpreter (`node`), so the script is `args[0]`. * - * @param {string} packageDir - package root to read .mcp.json from + * @param {string} packageDir - package root to read the MCP manifest from * @returns {string} relative path */ export function mcpEntry(packageDir) { - const manifest = JSON.parse(fs.readFileSync(path.join(packageDir, '.mcp.json'), 'utf8')); + const relativeManifest = mcpManifestPath(packageDir); + const manifest = JSON.parse(fs.readFileSync(path.join(packageDir, relativeManifest), 'utf8')); const entry = manifest.mcpServers?.memesh?.args?.[0]; if (typeof entry !== 'string') { throw new Error( - '.mcp.json declares no `mcpServers.memesh.args[0]` — the derivation in ' + + `${relativeManifest} declares no \`mcpServers.memesh.args[0]\` — the derivation in ` + 'scripts/lib/executable-targets.mjs is broken, or the manifest lost its MCP entry point' ); } diff --git a/scripts/qa/verify-dashboard-doctor-banner-i18n.mjs b/scripts/qa/verify-dashboard-doctor-banner-i18n.mjs index e4e861456..0efe59c6f 100644 --- a/scripts/qa/verify-dashboard-doctor-banner-i18n.mjs +++ b/scripts/qa/verify-dashboard-doctor-banner-i18n.mjs @@ -1,22 +1,23 @@ -// Real-browser verification that the new llm-telemetry.silent-failure -// doctor warn is translated across every dashboard locale in a real -// bundle, in a real browser — not just that the strings exist in i18n.ts -// (tests/dashboard/doctor-banner-i18n.test.tsx already covers that). -// -// llm-telemetry.silent-failure is WARN tier, not in QUIET_WARN_CODES, and -// carries a real `fix` hint, so isBannerWorthy() says it banners — this -// confirms it actually does, translated, in every locale, not the raw -// i18n key and not a silent English fallback. +// Real-browser verification that the doctor banner behaves correctly across +// every dashboard locale — not just that the translation strings exist in +// i18n.ts (tests/dashboard/doctor-banner-i18n.test.tsx already covers that), +// but that a real bundle in a real browser renders the right thing per +// locale for the two states this PR's own doctor.ts/DoctorBanner.tsx changes +// affect: +// 1. mcp-config.placeholder-unresolved must NOT banner (QUIET_WARN_CODES) +// — a false banner here would alarm every npm/source install user for a +// state the code's own comment calls "not broken". +// 2. mcp-config.missing DOES banner, translated per locale — not the +// English fallback, not the raw i18n key. // // role="alert" is DoctorBanner's own marker (distinct from OnboardingBanner's // role="region"), so detection is language-agnostic — grepping for English -// banner text makes every non-English locale look broken when a real -// translation renders (measured directly: PR #287's first draft of this -// script had exactly that bug). +// banner text made every non-English locale look broken the first time this +// was written, when the real bug was in the check, not the dashboard. // // Starts the real HTTP server against an isolated, throwaway HOME (never // touches ~/.memesh) and intercepts GET /v1/doctor so the dashboard renders -// against a controlled payload. +// against controlled payloads. import { chromium } from 'playwright'; import { spawn } from 'node:child_process'; import fs from 'node:fs'; @@ -105,6 +106,7 @@ async function main() { await waitForServer(`http://127.0.0.1:${port}/dashboard`); const page = await browser.newPage(); + // --- Scenario 1: quiet code must not banner, in every locale --- await page.route('**/v1/doctor', (route) => route.fulfill({ status: 200, @@ -112,11 +114,41 @@ async function main() { body: envelopeOf({ status: 'PASS_WITH_CONCERNS', checks: [{ - id: 'llm_telemetry_health', + id: 'mcp-config', status: 'warn', - summary: 'guard_proposer (5 calls, 0 succeeded) has been silently doing nothing for a week.', - fix: 'Run `memesh telemetry` for the failing calls, and check the provider/model configuration for guard_proposer.', - code: 'llm-telemetry.silent-failure', + summary: 'placeholder unresolved', + fix: 'Verify it the way the plugin runtime would.', + code: 'mcp-config.placeholder-unresolved', + }], + }), + }), + ); + + for (const locale of LOCALES) { + await page.goto(`http://127.0.0.1:${port}/dashboard`); + await page.evaluate((l) => localStorage.setItem('memesh-locale', l), locale); + await page.reload(); + await page.waitForTimeout(400); + const alertPresent = await page.evaluate(() => document.querySelector('[role="alert"]') !== null); + if (alertPresent) { + failures.push(`[${locale}] quiet code mcp-config.placeholder-unresolved BANNERED — QUIET_WARN_CODES entry did not suppress it in the real browser`); + } + } + + // --- Scenario 2: a real user-facing code DOES banner, translated, per locale --- + await page.unroute('**/v1/doctor'); + await page.route('**/v1/doctor', (route) => + route.fulfill({ + status: 200, + contentType: 'application/json', + body: envelopeOf({ + status: 'FAIL', + checks: [{ + id: 'mcp-config', + status: 'fail', + summary: '.claude-plugin/mcp.json is missing.', + fix: 'Reinstall MeMesh so the plugin manifest and the MCP manifest it names are both restored.', + code: 'mcp-config.missing', }], }), }), @@ -129,10 +161,10 @@ async function main() { await page.waitForTimeout(400); const alertText = await page.evaluate(() => document.querySelector('[role="alert"]')?.innerText ?? null); if (alertText === null) { - failures.push(`[${locale}] no [role="alert"] element rendered — DoctorBanner did not mount for llm-telemetry.silent-failure`); + failures.push(`[${locale}] no [role="alert"] element rendered — DoctorBanner did not mount for the FAIL check`); continue; } - if (alertText.includes('doctor.msg.llm-telemetry.silent-failure') || alertText.includes('llm-telemetry.silent-failure')) { + if (alertText.includes('doctor.msg.mcp-config.missing') || alertText.includes('mcp-config.missing')) { failures.push(`[${locale}] rendered the RAW i18n key/code instead of a translated string: ${JSON.stringify(alertText)}`); } if (locale !== 'en') { @@ -164,7 +196,7 @@ async function main() { console.error(serverOutput.slice(-2000)); process.exit(1); } - console.log(`PASS: all ${LOCALES.length} locales verified in real Chromium — llm-telemetry.silent-failure translated and distinct per locale, no raw keys leaked.`); + console.log(`PASS: all ${LOCALES.length} locales verified in real Chromium — quiet code suppressed, user-facing code translated and distinct per locale, no raw keys leaked.`); process.exit(0); } diff --git a/scripts/qa/verify-dashboard-mcp-config-banner-i18n.mjs b/scripts/qa/verify-dashboard-mcp-config-banner-i18n.mjs new file mode 100644 index 000000000..0efe59c6f --- /dev/null +++ b/scripts/qa/verify-dashboard-mcp-config-banner-i18n.mjs @@ -0,0 +1,206 @@ +// Real-browser verification that the doctor banner behaves correctly across +// every dashboard locale — not just that the translation strings exist in +// i18n.ts (tests/dashboard/doctor-banner-i18n.test.tsx already covers that), +// but that a real bundle in a real browser renders the right thing per +// locale for the two states this PR's own doctor.ts/DoctorBanner.tsx changes +// affect: +// 1. mcp-config.placeholder-unresolved must NOT banner (QUIET_WARN_CODES) +// — a false banner here would alarm every npm/source install user for a +// state the code's own comment calls "not broken". +// 2. mcp-config.missing DOES banner, translated per locale — not the +// English fallback, not the raw i18n key. +// +// role="alert" is DoctorBanner's own marker (distinct from OnboardingBanner's +// role="region"), so detection is language-agnostic — grepping for English +// banner text made every non-English locale look broken the first time this +// was written, when the real bug was in the check, not the dashboard. +// +// Starts the real HTTP server against an isolated, throwaway HOME (never +// touches ~/.memesh) and intercepts GET /v1/doctor so the dashboard renders +// against controlled payloads. +import { chromium } from 'playwright'; +import { spawn } from 'node:child_process'; +import fs from 'node:fs'; +import os from 'node:os'; +import path from 'node:path'; +import net from 'node:net'; +import { fileURLToPath } from 'node:url'; + +const REPO_ROOT = path.resolve(path.dirname(fileURLToPath(import.meta.url)), '..', '..'); +const LOCALES = ['en', 'zh-TW', 'zh-CN', 'ja', 'ko', 'es', 'fr', 'de', 'pt', 'ru', 'hi']; + +export function getChromeExecutablePath() { + const envPath = process.env.CHROME_PATH; + if (envPath && fs.existsSync(envPath)) return envPath; + const candidates = process.platform === 'darwin' + ? [ + '/Applications/Google Chrome.app/Contents/MacOS/Google Chrome', + path.join(os.homedir(), 'Applications/Google Chrome.app/Contents/MacOS/Google Chrome'), + ] + : process.platform === 'win32' + ? [ + 'C:\\Program Files\\Google\\Chrome\\Application\\chrome.exe', + 'C:\\Program Files (x86)\\Google\\Chrome\\Application\\chrome.exe', + ] + : ['/usr/bin/google-chrome', '/usr/bin/google-chrome-stable', '/snap/bin/chromium']; + return candidates.find((candidate) => fs.existsSync(candidate)); +} + +export async function launchBrowser() { + const chromeExecutable = getChromeExecutablePath(); + if (chromeExecutable) return chromium.launch({ executablePath: chromeExecutable, headless: true }); + try { + return await chromium.launch({ headless: true }); + } catch (error) { + const reason = error instanceof Error ? error.message : String(error); + throw new Error( + `No browser available. Install Playwright Chromium ("npx playwright install --with-deps chromium") or set CHROME_PATH. Original error: ${reason}`, + { cause: error }, + ); + } +} + +function findFreePort() { + return new Promise((resolve, reject) => { + const srv = net.createServer(); + srv.listen(0, () => { + const port = srv.address().port; + srv.close(() => resolve(port)); + }); + srv.on('error', reject); + }); +} + +export async function waitForServer(url, timeoutMs = 15000) { + const start = Date.now(); + while (Date.now() - start < timeoutMs) { + try { + const res = await fetch(url); + if (res.status) return true; + } catch { /* not up yet */ } + await new Promise((r) => setTimeout(r, 200)); + } + throw new Error(`server did not come up at ${url} within ${timeoutMs}ms`); +} + +function envelopeOf(data) { + return JSON.stringify({ success: true, data }); +} + +async function main() { + const home = fs.mkdtempSync(path.join(os.tmpdir(), 'memesh-dashboard-verify-')); + const port = await findFreePort(); + const failures = []; + + const server = spawn('node', ['dist/transports/http/server.js'], { + cwd: REPO_ROOT, + env: { ...process.env, HOME: home, MEMESH_HTTP_PORT: String(port), MEMESH_AUTO_CAPTURE: 'false' }, + stdio: ['ignore', 'pipe', 'pipe'], + }); + let serverOutput = ''; + server.stdout.on('data', (d) => { serverOutput += d.toString(); }); + server.stderr.on('data', (d) => { serverOutput += d.toString(); }); + + const browser = await launchBrowser(); + try { + await waitForServer(`http://127.0.0.1:${port}/dashboard`); + const page = await browser.newPage(); + + // --- Scenario 1: quiet code must not banner, in every locale --- + await page.route('**/v1/doctor', (route) => + route.fulfill({ + status: 200, + contentType: 'application/json', + body: envelopeOf({ + status: 'PASS_WITH_CONCERNS', + checks: [{ + id: 'mcp-config', + status: 'warn', + summary: 'placeholder unresolved', + fix: 'Verify it the way the plugin runtime would.', + code: 'mcp-config.placeholder-unresolved', + }], + }), + }), + ); + + for (const locale of LOCALES) { + await page.goto(`http://127.0.0.1:${port}/dashboard`); + await page.evaluate((l) => localStorage.setItem('memesh-locale', l), locale); + await page.reload(); + await page.waitForTimeout(400); + const alertPresent = await page.evaluate(() => document.querySelector('[role="alert"]') !== null); + if (alertPresent) { + failures.push(`[${locale}] quiet code mcp-config.placeholder-unresolved BANNERED — QUIET_WARN_CODES entry did not suppress it in the real browser`); + } + } + + // --- Scenario 2: a real user-facing code DOES banner, translated, per locale --- + await page.unroute('**/v1/doctor'); + await page.route('**/v1/doctor', (route) => + route.fulfill({ + status: 200, + contentType: 'application/json', + body: envelopeOf({ + status: 'FAIL', + checks: [{ + id: 'mcp-config', + status: 'fail', + summary: '.claude-plugin/mcp.json is missing.', + fix: 'Reinstall MeMesh so the plugin manifest and the MCP manifest it names are both restored.', + code: 'mcp-config.missing', + }], + }), + }), + ); + + for (const locale of LOCALES) { + await page.goto(`http://127.0.0.1:${port}/dashboard`); + await page.evaluate((l) => localStorage.setItem('memesh-locale', l), locale); + await page.reload(); + await page.waitForTimeout(400); + const alertText = await page.evaluate(() => document.querySelector('[role="alert"]')?.innerText ?? null); + if (alertText === null) { + failures.push(`[${locale}] no [role="alert"] element rendered — DoctorBanner did not mount for the FAIL check`); + continue; + } + if (alertText.includes('doctor.msg.mcp-config.missing') || alertText.includes('mcp-config.missing')) { + failures.push(`[${locale}] rendered the RAW i18n key/code instead of a translated string: ${JSON.stringify(alertText)}`); + } + if (locale !== 'en') { + const enText = await (async () => { + await page.evaluate(() => localStorage.setItem('memesh-locale', 'en')); + await page.reload(); + await page.waitForTimeout(400); + const t = await page.evaluate(() => document.querySelector('[role="alert"]')?.innerText ?? null); + await page.evaluate((l) => localStorage.setItem('memesh-locale', l), locale); + await page.reload(); + await page.waitForTimeout(400); + return t; + })(); + if (alertText === enText) { + failures.push(`[${locale}] rendered text is byte-identical to English — likely silent fallback, not a real catalogue entry`); + } + } + } + } finally { + await browser.close(); + server.kill(); + fs.rmSync(home, { recursive: true, force: true }); + } + + if (failures.length > 0) { + console.error('FAIL: dashboard doctor-banner i18n real-browser verification'); + for (const f of failures) console.error(` - ${f}`); + console.error('--- server output ---'); + console.error(serverOutput.slice(-2000)); + process.exit(1); + } + console.log(`PASS: all ${LOCALES.length} locales verified in real Chromium — quiet code suppressed, user-facing code translated and distinct per locale, no raw keys leaked.`); + process.exit(0); +} + +main().catch((err) => { + console.error('FAIL: script error:', err); + process.exit(1); +}); diff --git a/scripts/smoke-packed-artifact.mjs b/scripts/smoke-packed-artifact.mjs index 68a690fc4..65b53ee20 100644 --- a/scripts/smoke-packed-artifact.mjs +++ b/scripts/smoke-packed-artifact.mjs @@ -4,7 +4,7 @@ import fs from 'node:fs'; import os from 'node:os'; import path from 'node:path'; import { pathToFileURL } from 'node:url'; -import { binTargets, hookCommands, mcpEntry } from './lib/executable-targets.mjs'; +import { binTargets, hookCommands, mcpEntry, mcpManifestPath } from './lib/executable-targets.mjs'; import { buildIsolatedRuntimeEnv } from './lib/isolated-env.mjs'; import { npmSync } from './lib/npm-bin.mjs'; @@ -73,7 +73,7 @@ const requiredFiles = [ '.claude-plugin/plugin.json', '.codex-plugin/plugin.json', '.codex-plugin/mcp.json', - '.mcp.json', + '.claude-plugin/mcp.json', 'hooks/hooks.json', // Dist — core engine 'dist/index.js', @@ -159,14 +159,36 @@ for (const { relativePath, kind } of declaredExecutables) { } } -// The script `.mcp.json` starts, derived from the manifest rather than from a -// hand-written path. A `/plugin install` user reaches memesh ONLY through this -// entry; when it named a file that had been renamed away, every MCP tool died -// with `-32000 failed to reconnect` and no gate said a word. +// The Claude plugin must declare its MCP manifest on a path Claude Code does +// NOT auto-discover as a project config. A root `.mcp.json` is loaded twice — +// once by the plugin loader (where ${CLAUDE_PLUGIN_ROOT} resolves) and once as +// a project-scoped config for anyone who opens the directory (where it does +// not, and the server dies with `-32000 Connection closed`). Custom component +// paths SUPPLEMENT the defaults rather than replacing them, so declaring a +// custom path is only half the fix: the root file has to be gone. +const claudePlugin = JSON.parse( + fs.readFileSync(path.join(packageDir, '.claude-plugin', 'plugin.json'), 'utf8') +); +assert.equal( + claudePlugin.mcpServers, + './.claude-plugin/mcp.json', + 'Claude plugin manifest must declare its MCP manifest on a non-auto-discovered path' +); +assert.ok( + !fs.existsSync(path.join(packageDir, '.mcp.json')), + 'the tarball ships a root .mcp.json — Claude Code auto-discovers it as a project-scoped ' + + 'MCP config, where ${CLAUDE_PLUGIN_ROOT} is undefined and every memesh MCP tool fails to start' +); + +// The script the MCP manifest starts, derived from the manifest rather than +// from a hand-written path. A `/plugin install` user reaches memesh ONLY +// through this entry; when it named a file that had been renamed away, every +// MCP tool died with `-32000 failed to reconnect` and no gate said a word. +const mcpManifest = mcpManifestPath(packageDir); const mcpTarget = mcpEntry(packageDir); assert.ok( fs.existsSync(path.join(packageDir, mcpTarget)), - `.mcp.json starts ${mcpTarget}, which is not in the tarball — every MCP tool would fail to start` + `${mcpManifest} starts ${mcpTarget}, which is not in the tarball — every MCP tool would fail to start` ); const packagedJson = JSON.parse( diff --git a/scripts/smoke-packed-upgrade.mjs b/scripts/smoke-packed-upgrade.mjs index 24c56963c..cd01ba550 100644 --- a/scripts/smoke-packed-upgrade.mjs +++ b/scripts/smoke-packed-upgrade.mjs @@ -287,7 +287,7 @@ function proveUpgradePath({ fromVersion, candidateVersion, candidateTarball, cac for (const requiredFile of [ 'package.json', - '.mcp.json', + '.claude-plugin/mcp.json', 'dist/transports/cli/cli.js', 'dist/mcp/server.js', 'dist/core/doctor.js', diff --git a/src/core/doctor.ts b/src/core/doctor.ts index 1131d875b..49c78a51d 100644 --- a/src/core/doctor.ts +++ b/src/core/doctor.ts @@ -151,6 +151,10 @@ interface DoctorOptions { existsSyncImpl?: typeof fs.existsSync; readFileSyncImpl?: typeof fs.readFileSync; statSyncImpl?: typeof fs.statSync; + /** Test override for the environment. A parameter for the same reason + * `detectPluginHost` takes one: describing a layout must not require + * mutating the process every other test in the file shares. */ + envImpl?: NodeJS.ProcessEnv; fetchImpl?: typeof fetch; /** * Optional owner-supplied message-storage policy. Doctor reports it but @@ -597,19 +601,65 @@ function inspectConfigFile( } } +const MCP_PLACEHOLDER = '${CLAUDE_PLUGIN_ROOT}'; + +/** + * Where the Claude plugin declares its MCP manifest, relative to the package + * root — read from `.claude-plugin/plugin.json`, never hardcoded. + * + * Hardcoding it would recreate the defect this function exists to catch: a + * hand-written path that stopped matching the manifest. `scripts/lib/ + * executable-targets.mjs` derives the same path for the packaged-artifact + * gate, and for the same reason. + * + * Returns null when the manifest declares no usable path. That is not a + * cosmetic omission: with no `mcpServers` field Claude Code falls back to + * auto-discovering `.mcp.json` at the plugin root — which is ALSO the + * project-scoped path it auto-discovers for anyone who merely opens the + * directory, and `${CLAUDE_PLUGIN_ROOT}` is undefined there. + */ +function declaredMcpManifest( + packageRoot: string, + readFileSyncImpl: typeof fs.readFileSync, +): string | null { + const parsed = parseJsonFile(path.join(packageRoot, '.claude-plugin', 'plugin.json'), readFileSyncImpl); + if (!parsed.ok) return null; + const declared = parsed.value.mcpServers; + if (typeof declared !== 'string' || !declared.startsWith('./')) return null; + return declared.slice(2); +} + function inspectMcpConfig( packageRoot: string, + installChannel: InstallChannel, existsSyncImpl: typeof fs.existsSync, readFileSyncImpl: typeof fs.readFileSync, + env: NodeJS.ProcessEnv, ): DoctorCheck { - const mcpPath = path.join(packageRoot, '.mcp.json'); + const relativeManifest = declaredMcpManifest(packageRoot, readFileSyncImpl); + if (relativeManifest === null) { + return createCheck( + 'mcp-config', + 'MCP config', + 'fail', + '.claude-plugin/plugin.json declares no `mcpServers` path, so Claude Code has no MeMesh MCP server to start.', + 'Reinstall MeMesh so the plugin manifest and the MCP manifest it names are both restored.', + { code: 'mcp-config.missing' }, + ); + } + // `label` is always this — the `?? fallback` this replaced could never + // fire: `mcpPath === null` only when `relativeManifest === null`, and that + // case returns above before `label` is ever read. + const label = relativeManifest; + const mcpPath = path.join(packageRoot, relativeManifest); + if (!existsSyncImpl(mcpPath)) { return createCheck( 'mcp-config', 'MCP config', 'fail', - '.mcp.json is missing.', - 'Restore `.mcp.json` from the package or reinstall MeMesh.', + `${label} is missing.`, + 'Reinstall MeMesh so the plugin manifest and the MCP manifest it names are both restored.', { code: 'mcp-config.missing' }, ); } @@ -620,7 +670,7 @@ function inspectMcpConfig( 'mcp-config', 'MCP config', 'fail', - '.mcp.json is not valid JSON.', + `${label} is not valid JSON.`, `Fix ${mcpPath} so Claude Code can read the MCP server definition.`, { code: 'mcp-config.invalid-json', params: { path: mcpPath } }, ); @@ -632,8 +682,8 @@ function inspectMcpConfig( 'mcp-config', 'MCP config', 'fail', - '.mcp.json does not define a usable `memesh` MCP server entry.', - 'Reinstall MeMesh or restore the `mcpServers.memesh` entry in `.mcp.json`.', + `${label} does not define a usable \`memesh\` MCP server entry.`, + `Reinstall MeMesh or restore the \`mcpServers.memesh\` entry in \`${label}\`.`, { code: 'mcp-config.no-entry' }, ); } @@ -642,23 +692,51 @@ function inspectMcpConfig( // // This check used to stop at "there is a string `command`", which made it // structurally unable to notice the one way this file actually breaks. When - // the MCP entry point was renamed, `.mcp.json` kept pointing at the old path + // the MCP entry point was renamed, the manifest kept pointing at the old path // and every MCP tool died with `-32000 failed to reconnect` — while doctor // reported PASS, because the entry was still well-formed. A config that names // a file that is not there is not a valid config. const args = Array.isArray(server.args) ? server.args : []; const entry = typeof args[0] === 'string' ? args[0] : null; if (entry) { - // Claude Code substitutes ${CLAUDE_PLUGIN_ROOT} with the installed plugin - // directory, which is this package root. - const resolved = path.resolve(entry.replaceAll('${CLAUDE_PLUGIN_ROOT}', packageRoot)); + // WHO substitutes ${CLAUDE_PLUGIN_ROOT}, and does it happen here? + // + // This used to substitute `packageRoot` unconditionally, with a comment + // asserting that "Claude Code substitutes that variable with this package + // root". That is true only on `plugin-marketplace`. On every other channel + // the substitution was self-fulfilling — it rebuilt a path that exists by + // construction — so the check could not fail, and a manifest whose + // placeholder nothing resolves sat behind a green row for three and a half + // months. Substitute only where something really does substitute. + const pluginRoot = + installChannel === 'plugin-marketplace' ? packageRoot : (env.CLAUDE_PLUGIN_ROOT || null); + + if (entry.includes(MCP_PLACEHOLDER) && pluginRoot === null) { + // Not a failure of this install: on a source checkout or an npm install + // the plugin manifest is not the wiring in use, so there is no plugin + // root to resolve against and nothing is broken. It IS a limit on what + // this row may claim — saying "the script it starts exists" here is the + // sentence that hid the original defect. + return createCheck( + 'mcp-config', + 'MCP config', + 'warn', + `${label} starts \`${entry}\`. NOT VERIFIED: \`${MCP_PLACEHOLDER}\` is substituted by the Claude Code plugin runtime, and this is a ${installChannel} install with CLAUDE_PLUGIN_ROOT unset — so the file it names was not checked.`, + `Verify it the way the plugin runtime would: CLAUDE_PLUGIN_ROOT=${packageRoot} memesh doctor`, + { code: 'mcp-config.placeholder-unresolved', params: { entry, channel: installChannel } }, + ); + } + + const resolved = pluginRoot === null + ? path.resolve(packageRoot, entry) + : path.resolve(entry.replaceAll(MCP_PLACEHOLDER, pluginRoot)); if (!existsSyncImpl(resolved)) { return createCheck( 'mcp-config', 'MCP config', 'fail', - `.mcp.json starts \`${entry}\`, and that file is not in this install — so every memesh MCP tool fails to start.`, - 'Reinstall MeMesh; if you edited `.mcp.json` by hand, point it back at `${CLAUDE_PLUGIN_ROOT}/dist/mcp/server.js`.', + `${label} starts \`${entry}\`, and that file is not in this install — so every memesh MCP tool fails to start.`, + `Reinstall MeMesh; if you edited \`${label}\` by hand, point it back at \`${MCP_PLACEHOLDER}/dist/mcp/server.js\`.`, { code: 'mcp-config.entry-missing', params: { entry, resolved } }, ); } @@ -668,7 +746,7 @@ function inspectMcpConfig( 'mcp-config', 'MCP config', 'pass', - '.mcp.json is present, defines the memesh MCP server, and the script it starts exists.', + `${label} is present, defines the memesh MCP server, and the script it starts exists.`, ); } @@ -3075,6 +3153,7 @@ export async function runDoctor(options: DoctorOptions): Promise { probeProviderImpl = probeProvider, httpBaseUrl = 'http://127.0.0.1:3737', platform = process.platform, + envImpl = process.env, openDatabaseImpl = openDatabase, closeDatabaseImpl = closeDatabase, isDatabaseOpenImpl = isDatabaseOpen, @@ -3564,7 +3643,7 @@ export async function runDoctor(options: DoctorOptions): Promise { } checks.push(inspectConfigFile(existsSyncImpl, readFileSyncImpl, getConfigPathImpl, detectCapabilitiesImpl().llm)); - checks.push(inspectMcpConfig(packageRoot, existsSyncImpl, readFileSyncImpl)); + checks.push(inspectMcpConfig(packageRoot, install, existsSyncImpl, readFileSyncImpl, envImpl)); checks.push(...inspectHooksConfig(packageRoot, platform, existsSyncImpl, readFileSyncImpl, statSyncImpl)); // Runtime wiring + activity (#25 — file existence isn't enough; // doctor used to PASS for users whose Claude Code never loaded diff --git a/tests/core/doctor.test.ts b/tests/core/doctor.test.ts index 33917305f..019000a0d 100644 --- a/tests/core/doctor.test.ts +++ b/tests/core/doctor.test.ts @@ -50,7 +50,7 @@ function writeJson(filePath: string, value: unknown): void { } function createPackageRoot(root = fs.mkdtempSync(path.join(os.tmpdir(), 'memesh-doctor-'))): string { - writeJson(path.join(root, '.mcp.json'), { + writeJson(path.join(root, '.claude-plugin', 'mcp.json'), { mcpServers: { memesh: { command: 'memesh-mcp', @@ -67,6 +67,10 @@ function createPackageRoot(root = fs.mkdtempSync(path.join(os.tmpdir(), 'memesh- writeJson(path.join(root, '.claude-plugin', 'plugin.json'), { name: 'memesh', version: '4.1.4', + // Doctor derives the MCP manifest path from here rather than hardcoding + // one, so a fixture without this field describes an install whose MCP + // wiring Claude Code would fall back to auto-discovering at the root. + mcpServers: './.claude-plugin/mcp.json', }); writeJson(path.join(root, 'hooks', 'hooks.json'), { @@ -110,7 +114,7 @@ function createPackageRoot(root = fs.mkdtempSync(path.join(os.tmpdir(), 'memesh- 'scripts/hooks/session-summary.js', 'scripts/hooks/pre-compact.js', 'hooks/hooks.json', - '.mcp.json', + '.claude-plugin/mcp.json', ]; const entries = tracked.map(rel => { const buf = fs.readFileSync(path.join(root, rel)); @@ -625,7 +629,7 @@ describe('doctor', () => { it('fails when the MCP config is invalid JSON', async () => { const packageRoot = createPackageRoot(); tempRoots.push(packageRoot); - fs.writeFileSync(path.join(packageRoot, '.mcp.json'), '{invalid'); + fs.writeFileSync(path.join(packageRoot, '.claude-plugin', 'mcp.json'), '{invalid'); const result = await runDoctor({ packageRoot, @@ -652,13 +656,18 @@ describe('doctor', () => { expect(result.status).toBe('FAIL'); expect(result.checks.find((check) => check.id === 'mcp-config')).toMatchObject({ status: 'fail', - fix: expect.stringContaining('.mcp.json'), + // `path.join`, not a literal: the fix line names the ABSOLUTE path of + // the file to edit, which is what a user needs, and on Windows that + // carries backslashes. A hardcoded '.claude-plugin/mcp.json' passed on + // macOS and Linux and failed on both Windows legs of CI — the assertion + // was platform-dependent, the code was not. + fix: expect.stringContaining(path.join('.claude-plugin', 'mcp.json')), }); }); - it('fails when .mcp.json starts a script that is not in the install', async () => { + it('fails when the MCP manifest starts a script that is not in the install', async () => { // The defect this was written for: the MCP entry point was renamed, - // `package.json` bin and `npm start` were repointed, and `.mcp.json` kept + // `package.json` bin and `npm start` were repointed, and the manifest kept // naming the deleted file. Every MCP tool died with // `-32000 failed to reconnect` — and doctor reported PASS, because it // stopped at "there is a string `command`" and never looked at what the @@ -666,7 +675,7 @@ describe('doctor', () => { // not a valid config. const packageRoot = createPackageRoot(); tempRoots.push(packageRoot); - writeJson(path.join(packageRoot, '.mcp.json'), { + writeJson(path.join(packageRoot, '.claude-plugin', 'mcp.json'), { mcpServers: { memesh: { command: 'node', @@ -697,15 +706,17 @@ describe('doctor', () => { expect(result.status).toBe('FAIL'); }); - it('passes when .mcp.json starts a script that IS present', async () => { + it('passes when the MCP manifest starts a script that IS present', async () => { // The guard must not become "always fail": a correct config still passes, // and the check really does resolve the path rather than rejecting any - // config that has args at all. + // config that has args at all. `plugin-marketplace` is the channel where + // Claude Code really does substitute ${CLAUDE_PLUGIN_ROOT}, so it is the + // only one on which resolving against `packageRoot` is honest. const packageRoot = createPackageRoot(); tempRoots.push(packageRoot); fs.mkdirSync(path.join(packageRoot, 'dist', 'mcp'), { recursive: true }); fs.writeFileSync(path.join(packageRoot, 'dist', 'mcp', 'server.js'), '// present\n'); - writeJson(path.join(packageRoot, '.mcp.json'), { + writeJson(path.join(packageRoot, '.claude-plugin', 'mcp.json'), { mcpServers: { memesh: { command: 'node', @@ -714,6 +725,84 @@ describe('doctor', () => { }, }); + const result = await runDoctor({ + packageRoot, + packageVersion: '4.2.5', + openDatabaseImpl: () => makeDatabase(1) as never, + closeDatabaseImpl: () => undefined, + detectCapabilitiesImpl: () => caps({ searchLevel: 1, embeddings: 'ollama' }), + getConfigPathImpl: () => path.join(packageRoot, 'config.json'), + getUpdateCheckImpl: async () => makeUpdateCheck(), + getCurrentInstallChannelImpl: () => 'plugin-marketplace', + getInstallChannelSupportImpl: () => ({ + channel: 'plugin-marketplace', label: 'Claude Code plugin marketplace', + canSelfUpdate: false, recommendedCommand: 'memesh upgrade-plugin', guidance: '', + }), + nativeBindingProbeImpl: () => ({ ok: true }), + }); + + expect(result.checks.find((c) => c.id === 'mcp-config')?.status).toBe('pass'); + }); + + it('does NOT claim the entry exists on a channel that never substitutes ${CLAUDE_PLUGIN_ROOT}', async () => { + // The reason Defect 1 survived three and a half months behind a green row. + // + // The check substituted `packageRoot` for ${CLAUDE_PLUGIN_ROOT} + // unconditionally, on the strength of a comment claiming Claude Code does + // that. Claude Code does — but only for a `plugin-marketplace` install. + // On `source-checkout` and `npm-global` the substitution was + // self-fulfilling: it rebuilt a path that exists by construction, so this + // branch could not fail, whatever the manifest said. Here the target does + // NOT exist and the placeholder cannot be resolved, and the row must say + // so rather than report a pass it did not earn. + const packageRoot = createPackageRoot(); + tempRoots.push(packageRoot); + writeJson(path.join(packageRoot, '.claude-plugin', 'mcp.json'), { + mcpServers: { + memesh: { command: 'node', args: ['${CLAUDE_PLUGIN_ROOT}/dist/mcp/server.js'] }, + }, + }); + + const result = await runDoctor({ + packageRoot, + packageVersion: '4.2.5', + openDatabaseImpl: () => makeDatabase(1) as never, + closeDatabaseImpl: () => undefined, + detectCapabilitiesImpl: () => caps({ searchLevel: 1, embeddings: 'ollama' }), + getConfigPathImpl: () => path.join(packageRoot, 'config.json'), + getUpdateCheckImpl: async () => makeUpdateCheck(), + getCurrentInstallChannelImpl: () => 'source-checkout', + getInstallChannelSupportImpl: () => ({ + channel: 'source-checkout', label: 'source checkout', canSelfUpdate: false, + recommendedCommand: 'git pull', guidance: '', + }), + envImpl: {}, + nativeBindingProbeImpl: () => ({ ok: true }), + }); + + const check = result.checks.find((c) => c.id === 'mcp-config'); + expect(check?.status).toBe('warn'); + expect(check?.code).toBe('mcp-config.placeholder-unresolved'); + expect(check?.summary).toContain('NOT VERIFIED'); + expect(check?.summary).not.toContain('the script it starts exists'); + }); + + it('resolves against CLAUDE_PLUGIN_ROOT when the environment actually provides one', async () => { + // The other half of the same rule: when something really does define the + // variable, the check must use THAT value and go back to being able to + // fail. `packageRoot` here carries the manifest; the plugin root is a + // different directory that does not carry the script. + const packageRoot = createPackageRoot(); + const pluginRoot = fs.mkdtempSync(path.join(os.tmpdir(), 'memesh-plugin-root-')); + tempRoots.push(packageRoot, pluginRoot); + fs.mkdirSync(path.join(packageRoot, 'dist', 'mcp'), { recursive: true }); + fs.writeFileSync(path.join(packageRoot, 'dist', 'mcp', 'server.js'), '// present\n'); + writeJson(path.join(packageRoot, '.claude-plugin', 'mcp.json'), { + mcpServers: { + memesh: { command: 'node', args: ['${CLAUDE_PLUGIN_ROOT}/dist/mcp/server.js'] }, + }, + }); + const result = await runDoctor({ packageRoot, packageVersion: '4.2.5', @@ -727,10 +816,82 @@ describe('doctor', () => { channel: 'npm-global', label: 'npm global', canSelfUpdate: true, recommendedCommand: 'memesh update', guidance: '', }), + envImpl: { CLAUDE_PLUGIN_ROOT: pluginRoot }, nativeBindingProbeImpl: () => ({ ok: true }), }); - expect(result.checks.find((c) => c.id === 'mcp-config')?.status).toBe('pass'); + const check = result.checks.find((c) => c.id === 'mcp-config'); + expect(check?.status).toBe('fail'); + expect(check?.code).toBe('mcp-config.entry-missing'); + }); + + it('fails when plugin.json declares an mcpServers path but that file does not exist', async () => { + // Distinct from the "declares no mcpServers path" case below: here the + // manifest DOES name a file, it just is not there — a different early + // return in inspectMcpConfig (existsSyncImpl(mcpPath) false, not + // relativeManifest === null), and the only test that touches + // 'mcp-config.missing' before this one exercises the other branch. + const packageRoot = createPackageRoot(); + tempRoots.push(packageRoot); + // createPackageRoot() already writes both plugin.json (with this same + // mcpServers declaration) and .claude-plugin/mcp.json — remove the + // latter to get the state this test actually needs: declared but gone. + fs.rmSync(path.join(packageRoot, '.claude-plugin', 'mcp.json')); + + const result = await runDoctor({ + packageRoot, + packageVersion: '4.2.5', + openDatabaseImpl: () => makeDatabase(1) as never, + closeDatabaseImpl: () => undefined, + detectCapabilitiesImpl: () => caps({ searchLevel: 1, embeddings: 'ollama' }), + getConfigPathImpl: () => path.join(packageRoot, 'config.json'), + getUpdateCheckImpl: async () => makeUpdateCheck(), + getCurrentInstallChannelImpl: () => 'plugin-marketplace', + getInstallChannelSupportImpl: () => ({ + channel: 'plugin-marketplace', label: 'Claude Code plugin marketplace', + canSelfUpdate: false, recommendedCommand: 'memesh upgrade-plugin', guidance: '', + }), + nativeBindingProbeImpl: () => ({ ok: true }), + }); + + const check = result.checks.find((c) => c.id === 'mcp-config'); + expect(check?.status).toBe('fail'); + expect(check?.code).toBe('mcp-config.missing'); + expect(check?.summary).toContain('.claude-plugin/mcp.json is missing'); + }); + + it('fails when .claude-plugin/plugin.json declares no mcpServers path', async () => { + // With no declared path Claude Code falls back to auto-discovering + // `.mcp.json` at the plugin root — the project-scoped path where + // ${CLAUDE_PLUGIN_ROOT} is undefined. Losing the declaration is losing the + // fix, so it is a failure, not a silent default. + const packageRoot = createPackageRoot(); + tempRoots.push(packageRoot); + writeJson(path.join(packageRoot, '.claude-plugin', 'plugin.json'), { + name: 'memesh', + version: '4.1.4', + }); + + const result = await runDoctor({ + packageRoot, + packageVersion: '4.2.5', + openDatabaseImpl: () => makeDatabase(1) as never, + closeDatabaseImpl: () => undefined, + detectCapabilitiesImpl: () => caps({ searchLevel: 1, embeddings: 'ollama' }), + getConfigPathImpl: () => path.join(packageRoot, 'config.json'), + getUpdateCheckImpl: async () => makeUpdateCheck(), + getCurrentInstallChannelImpl: () => 'plugin-marketplace', + getInstallChannelSupportImpl: () => ({ + channel: 'plugin-marketplace', label: 'Claude Code plugin marketplace', + canSelfUpdate: false, recommendedCommand: 'memesh upgrade-plugin', guidance: '', + }), + nativeBindingProbeImpl: () => ({ ok: true }), + }); + + const check = result.checks.find((c) => c.id === 'mcp-config'); + expect(check?.status).toBe('fail'); + expect(check?.code).toBe('mcp-config.missing'); + expect(check?.summary).toContain('mcpServers'); }); it('fails when hooks.json yields zero hook script commands', async () => { diff --git a/tests/installation.test.ts b/tests/installation.test.ts index 3e9b17446..15301c7b6 100644 --- a/tests/installation.test.ts +++ b/tests/installation.test.ts @@ -35,8 +35,27 @@ describe('Installation Verification', () => { expect(plugin.version).toBe(pkg.version); }); - it('should have .mcp.json', () => { - expect(fs.existsSync('.mcp.json')).toBe(true); + it('declares the Claude MCP manifest on a path Claude Code does NOT auto-discover as a project config', () => { + // The root `.mcp.json` this replaced was auto-discovered TWICE: by the + // plugin loader, where `${CLAUDE_PLUGIN_ROOT}` resolves, and as a + // project-scoped config for anyone who merely opened this repository, + // where it does not — `claude mcp list` reported "Missing environment + // variables: CLAUDE_PLUGIN_ROOT" and the server died with `-32000 + // Connection closed`. The old test here asserted `.mcp.json` EXISTS, + // so it held the defect in place for three and a half months. + // + // Custom component paths SUPPLEMENT the defaults rather than replacing + // them, so declaring a path is only half of it: the root file has to be + // gone, or both still load. + const plugin = JSON.parse(fs.readFileSync('.claude-plugin/plugin.json', 'utf8')); + expect(plugin.mcpServers).toBe('./.claude-plugin/mcp.json'); + expect(fs.existsSync('.mcp.json')).toBe(false); + + const mcp = JSON.parse(fs.readFileSync('.claude-plugin/mcp.json', 'utf8')); + expect(mcp.mcpServers.memesh).toEqual({ + command: 'node', + args: ['${CLAUDE_PLUGIN_ROOT}/dist/mcp/server.js'], + }); }); it('should have a native Codex plugin manifest for the packaged MCP server', () => { diff --git a/tests/plugin-mcp-manifest.test.ts b/tests/plugin-mcp-manifest.test.ts new file mode 100644 index 000000000..cacb6a2f4 --- /dev/null +++ b/tests/plugin-mcp-manifest.test.ts @@ -0,0 +1,175 @@ +import fs from 'fs'; +import os from 'os'; +import path from 'path'; +import { fileURLToPath } from 'url'; +import { describe, expect, it } from 'vitest'; +import { mcpEntry, mcpManifestPath } from '../scripts/lib/executable-targets.mjs'; + +const repoRoot = path.resolve(path.dirname(fileURLToPath(import.meta.url)), '..'); + +/** + * The paths Claude Code auto-discovers as a PROJECT-scoped MCP config when + * someone merely opens this directory. This is the environment the plugin + * manifest must never be loaded under. + */ +const PROJECT_SCOPED_MCP_PATHS = ['.mcp.json']; + +interface McpServer { + command?: unknown; + args?: unknown; +} + +/** + * What breaks when `config` is loaded as a PROJECT-scoped MCP config — i.e. + * with only the environment an ordinary session provides, and specifically + * without `CLAUDE_PLUGIN_ROOT`, which nothing but the plugin runtime defines. + * + * Returns one string per fault, empty when the config would really start. + */ +function projectScopedFaults(config: unknown, root: string): string[] { + const record = (config ?? {}) as Record; + const servers = (record.mcpServers ?? record) as Record; + const faults: string[] = []; + + for (const [name, server] of Object.entries(servers)) { + const parts = [server?.command, ...(Array.isArray(server?.args) ? server.args : [])] + .filter((part): part is string => typeof part === 'string'); + if (parts.length === 0) continue; + + // `${FOO}` references the config makes of the environment. A project-scoped + // load defines none of them, so each one is a path segment that resolves to + // nothing. + for (const variable of parts.flatMap((part) => [ + ...part.matchAll(/\$\{([A-Za-z_][A-Za-z0-9_]*)\}/g), + ])) { + faults.push(`${name}: ${variable[1]} is undefined in project scope`); + } + + // `node