@phren/cli 0.0.45 → 0.0.47

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.
@@ -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({