@phren/cli 0.0.44 → 0.0.46
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +19 -0
- package/mcp/dist/cli-hooks-stop.js +2 -2
- package/mcp/dist/entrypoint.js +4 -1
- package/mcp/dist/generated/memory-ui-graph.browser.js +1 -1
- package/mcp/dist/link/doctor.js +43 -0
- package/mcp/dist/memory-ui-graph.runtime.js +1 -1
- package/mcp/dist/shared/index.js +52 -7
- package/mcp/dist/status.js +27 -0
- package/mcp/dist/ui/data.js +80 -54
- package/mcp/dist/ui/server.js +24 -4
- package/package.json +8 -8
package/mcp/dist/link/doctor.js
CHANGED
|
@@ -261,6 +261,49 @@ export async function runDoctor(phrenPath, fix = false, checkData = false) {
|
|
|
261
261
|
}
|
|
262
262
|
pushSkillMirrorChecks(checks, project, buildSkillManifest(phrenPath, profile || "", project, path.join(target, ".claude", "skills")), path.join(target, ".claude", "skills"));
|
|
263
263
|
}
|
|
264
|
+
// Store registry health
|
|
265
|
+
try {
|
|
266
|
+
const { resolveAllStores, storesFilePath } = await import("../store-registry.js");
|
|
267
|
+
const storesFile = storesFilePath(phrenPath);
|
|
268
|
+
if (fs.existsSync(storesFile)) {
|
|
269
|
+
const stores = resolveAllStores(phrenPath);
|
|
270
|
+
checks.push({
|
|
271
|
+
name: "store-registry",
|
|
272
|
+
ok: stores.length > 0,
|
|
273
|
+
detail: stores.length > 0
|
|
274
|
+
? `${stores.length} stores configured`
|
|
275
|
+
: "stores.yaml exists but no stores parsed",
|
|
276
|
+
});
|
|
277
|
+
for (const store of stores) {
|
|
278
|
+
const pathExists = fs.existsSync(store.path);
|
|
279
|
+
const gitExists = pathExists && fs.existsSync(path.join(store.path, ".git"));
|
|
280
|
+
if (!pathExists) {
|
|
281
|
+
checks.push({
|
|
282
|
+
name: `store:${store.name}`,
|
|
283
|
+
ok: false,
|
|
284
|
+
detail: `store '${store.name}' path missing: ${store.path}`,
|
|
285
|
+
});
|
|
286
|
+
}
|
|
287
|
+
else if (!gitExists) {
|
|
288
|
+
checks.push({
|
|
289
|
+
name: `store:${store.name}`,
|
|
290
|
+
ok: false,
|
|
291
|
+
detail: `store '${store.name}' path exists but .git directory missing`,
|
|
292
|
+
});
|
|
293
|
+
}
|
|
294
|
+
else {
|
|
295
|
+
checks.push({
|
|
296
|
+
name: `store:${store.name}`,
|
|
297
|
+
ok: true,
|
|
298
|
+
detail: `${store.role} store, sync=${store.sync}${store.remote ? `, remote=${store.remote}` : ""}`,
|
|
299
|
+
});
|
|
300
|
+
}
|
|
301
|
+
}
|
|
302
|
+
}
|
|
303
|
+
}
|
|
304
|
+
catch (err) {
|
|
305
|
+
debugLog(`doctor: store registry check failed: ${errorMessage(err)}`);
|
|
306
|
+
}
|
|
264
307
|
const settingsPath = hookConfigPath("claude");
|
|
265
308
|
const configWritable = nearestWritableTarget(settingsPath);
|
|
266
309
|
checks.push({
|