@decibelsystems/tools 2.1.4 → 2.2.0-beta.0

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.
Files changed (55) hide show
  1. package/README.md +1 -1
  2. package/dist/daemonConfig.d.ts +6 -0
  3. package/dist/daemonConfig.d.ts.map +1 -1
  4. package/dist/daemonConfig.js +15 -2
  5. package/dist/daemonConfig.js.map +1 -1
  6. package/dist/facades/definitions.d.ts.map +1 -1
  7. package/dist/facades/definitions.js +15 -0
  8. package/dist/facades/definitions.js.map +1 -1
  9. package/dist/httpServer.d.ts.map +1 -1
  10. package/dist/httpServer.js +76 -2
  11. package/dist/httpServer.js.map +1 -1
  12. package/dist/kernel.d.ts +9 -0
  13. package/dist/kernel.d.ts.map +1 -1
  14. package/dist/kernel.js +56 -6
  15. package/dist/kernel.js.map +1 -1
  16. package/dist/license.js +3 -3
  17. package/dist/license.js.map +1 -1
  18. package/dist/projectRegistry.d.ts +65 -3
  19. package/dist/projectRegistry.d.ts.map +1 -1
  20. package/dist/projectRegistry.js +222 -33
  21. package/dist/projectRegistry.js.map +1 -1
  22. package/dist/sentinelIssues.d.ts.map +1 -1
  23. package/dist/sentinelIssues.js +40 -14
  24. package/dist/sentinelIssues.js.map +1 -1
  25. package/dist/server.js +6 -0
  26. package/dist/server.js.map +1 -1
  27. package/dist/setup.d.ts +83 -0
  28. package/dist/setup.d.ts.map +1 -0
  29. package/dist/setup.js +445 -0
  30. package/dist/setup.js.map +1 -0
  31. package/dist/store/markdown.d.ts +14 -1
  32. package/dist/store/markdown.d.ts.map +1 -1
  33. package/dist/store/markdown.js +36 -3
  34. package/dist/store/markdown.js.map +1 -1
  35. package/dist/tools/conductor/index.d.ts +9 -0
  36. package/dist/tools/conductor/index.d.ts.map +1 -0
  37. package/dist/tools/conductor/index.js +242 -0
  38. package/dist/tools/conductor/index.js.map +1 -0
  39. package/dist/tools/dojoPolicy.js +1 -1
  40. package/dist/tools/dojoPolicy.js.map +1 -1
  41. package/dist/tools/guardian.d.ts +29 -7
  42. package/dist/tools/guardian.d.ts.map +1 -1
  43. package/dist/tools/guardian.js +84 -73
  44. package/dist/tools/guardian.js.map +1 -1
  45. package/dist/tools/index.d.ts.map +1 -1
  46. package/dist/tools/index.js +2 -0
  47. package/dist/tools/index.js.map +1 -1
  48. package/dist/tools/registry/index.d.ts.map +1 -1
  49. package/dist/tools/registry/index.js +41 -12
  50. package/dist/tools/registry/index.js.map +1 -1
  51. package/dist/tools/sentinel.d.ts +15 -0
  52. package/dist/tools/sentinel.d.ts.map +1 -1
  53. package/dist/tools/sentinel.js +280 -74
  54. package/dist/tools/sentinel.js.map +1 -1
  55. package/package.json +1 -1
@@ -9,11 +9,47 @@ export interface ProjectEntry {
9
9
  aliases?: string[];
10
10
  /** If true, this is the default project when none specified */
11
11
  default?: boolean;
12
+ /**
13
+ * Per-device path overrides, keyed by device ID (see getDeviceId).
14
+ * The same registry file can serve multiple machines: `path` stays the
15
+ * canonical location (external drives mount at the same /Volumes/... path on
16
+ * any Mac, so they live here), while machine-local checkouts go in
17
+ * devicePaths. Resolution prefers this device's override, then the canonical
18
+ * path, then any other device's copy that happens to exist here.
19
+ */
20
+ devicePaths?: Record<string, string>;
21
+ /** Display-only (set on entries returned by listProjects): the canonical registered path. */
22
+ canonicalPath?: string;
23
+ /** Display-only: whether the effective path exists with a .decibel folder on this device. */
24
+ available?: boolean;
25
+ /** Display-only: which candidate won — 'device' | 'canonical' | 'other_device'. */
26
+ pathSource?: EffectivePathSource;
27
+ }
28
+ export type EffectivePathSource = 'device' | 'canonical' | 'other_device';
29
+ export interface EffectivePath {
30
+ path: string;
31
+ source: EffectivePathSource;
32
+ available: boolean;
12
33
  }
13
34
  export interface ProjectRegistry {
14
35
  version: 1;
15
36
  projects: ProjectEntry[];
16
37
  }
38
+ export declare function getDeviceId(): string;
39
+ /**
40
+ * All paths an entry might live at, most-specific first:
41
+ * this device's override → canonical path → other devices' copies.
42
+ */
43
+ export declare function listCandidatePaths(entry: ProjectEntry): string[];
44
+ /**
45
+ * Pick the path this entry actually lives at ON THIS DEVICE: the first
46
+ * candidate whose .decibel/ folder exists. External drives resolve via the
47
+ * canonical path whenever mounted; machine-local checkouts via devicePaths.
48
+ * If nothing exists (drive unplugged, no local copy), returns the
49
+ * most-specific candidate with available=false so error messages can point
50
+ * at the right location.
51
+ */
52
+ export declare function getEffectivePath(entry: ProjectEntry): EffectivePath;
17
53
  /**
18
54
  * Resolve a project ID or alias to its filesystem path.
19
55
  *
@@ -30,13 +66,39 @@ export interface ProjectRegistry {
30
66
  */
31
67
  export declare function resolveProject(projectId: string): ProjectEntry;
32
68
  /**
33
- * List all registered projects
69
+ * List all registered projects. Entries carry the device-effective `path`
70
+ * (so every consumer reads the right location for this machine), plus
71
+ * display fields: canonicalPath, available, pathSource.
34
72
  */
35
73
  export declare function listProjects(): ProjectEntry[];
74
+ export interface RegisterResult {
75
+ action: 'added' | 'updated_canonical' | 'device_linked' | 'kept_existing_device_link';
76
+ id: string;
77
+ /** The path now effective for this device. */
78
+ path: string;
79
+ /** For kept_existing_device_link: the path that was NOT recorded. */
80
+ skippedPath?: string;
81
+ }
36
82
  /**
37
- * Register a new project or update an existing one
83
+ * Register a new project or update an existing one — device-aware.
84
+ *
85
+ * New IDs register their path as canonical. For an existing ID with a
86
+ * DIFFERENT path, the new path is recorded as this device's override
87
+ * (devicePaths[deviceId]) so machines don't clobber each other's locations —
88
+ * the scenario that broke the laptop when the registry held desktop-only
89
+ * /Volumes/Ashitaka paths. Pass opts.canonical=true to deliberately rewrite
90
+ * the canonical path (e.g. the project genuinely moved).
91
+ *
92
+ * If this device is ALREADY linked to a valid copy, a differing path is NOT
93
+ * recorded unless opts.repoint=true — otherwise a second copy of the same
94
+ * project (e.g. a backup on an external drive) discovered later in a scan
95
+ * would silently steal the link from the working copy. registry_add passes
96
+ * repoint (explicit user intent); registry_scan apply does not.
38
97
  */
39
- export declare function registerProject(entry: ProjectEntry): void;
98
+ export declare function registerProject(entry: ProjectEntry, opts?: {
99
+ canonical?: boolean;
100
+ repoint?: boolean;
101
+ }): RegisterResult;
40
102
  /**
41
103
  * Remove a project from the registry
42
104
  */
@@ -1 +1 @@
1
- {"version":3,"file":"projectRegistry.d.ts","sourceRoot":"","sources":["../src/projectRegistry.ts"],"names":[],"mappings":"AAyBA,MAAM,WAAW,YAAY;IAC3B,0CAA0C;IAC1C,EAAE,EAAE,MAAM,CAAC;IACX,0BAA0B;IAC1B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,yDAAyD;IACzD,IAAI,EAAE,MAAM,CAAC;IACb,kEAAkE;IAClE,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,+DAA+D;IAC/D,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,CAAC,CAAC;IACX,QAAQ,EAAE,YAAY,EAAE,CAAC;CAC1B;AA2ID;;;;;;;;;;;;;GAaG;AACH,wBAAgB,cAAc,CAAC,SAAS,EAAE,MAAM,GAAG,YAAY,CA8E9D;AAED;;GAEG;AACH,wBAAgB,YAAY,IAAI,YAAY,EAAE,CAG7C;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,YAAY,GAAG,IAAI,CA8BzD;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAa5D;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CActE;AAED;;GAEG;AACH,wBAAgB,mBAAmB,IAAI,MAAM,CAE5C;AAMD,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,OAAO,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,UAAU;IACzB,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,KAAK,EAAE,WAAW,EAAE,CAAC;IACrB,YAAY,EAAE,WAAW,EAAE,CAAC;IAC5B,OAAO,EAAE,KAAK,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CAC9D;AAgCD,wBAAgB,YAAY,CAAC,QAAQ,CAAC,EAAE,MAAM,EAAE,GAAG,MAAM,GAAG,MAAM,EAAE,CAuBnE;AAED;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,aAAa,CAAC,EAAE,MAAM,EAAE,GAAG,MAAM,GAAG,UAAU,CA6C7E;AAED;;;;;;;;;GASG;AACH,wBAAgB,iBAAiB,IAAI,YAAY,GAAG,SAAS,CA8C5D;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAiBzD;AAMD;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,GAAG,SAAS,CAErF;AAMD,MAAM,WAAW,oBAAoB;IACnC,iBAAiB;IACjB,EAAE,EAAE,MAAM,CAAC;IACX,oCAAoC;IACpC,WAAW,EAAE,MAAM,CAAC;IACpB,uCAAuC;IACvC,WAAW,EAAE,MAAM,CAAC;IACpB,kDAAkD;IAClD,OAAO,EAAE,CAAC,GAAG,QAAQ,EAAE,MAAM,EAAE,KAAK,MAAM,CAAC;CAC5C;AAED;;;;;;;GAOG;AACH,wBAAgB,mBAAmB,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,oBAAoB,CA6B5E;AAED;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,oBAAoB,GAAG,IAAI,CA4C1F"}
1
+ {"version":3,"file":"projectRegistry.d.ts","sourceRoot":"","sources":["../src/projectRegistry.ts"],"names":[],"mappings":"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"}
@@ -17,6 +17,107 @@ import { log } from './config.js';
17
17
  const __filename = fileURLToPath(import.meta.url);
18
18
  const __dirname = dirname(__filename);
19
19
  // ============================================================================
20
+ // Device Identity
21
+ // ============================================================================
22
+ // A stable per-machine ID so one registry file can hold paths for several
23
+ // devices (desktop vs laptop) without them clobbering each other.
24
+ // Precedence: DECIBEL_DEVICE_ID env → ~/.decibel/device.json → generated from
25
+ // hostname and persisted. Hostnames drift (.local suffixes, network renames),
26
+ // so the generated ID is written once and read thereafter.
27
+ let cachedDeviceId;
28
+ function sanitizeDeviceId(raw) {
29
+ const id = raw
30
+ .trim()
31
+ .toLowerCase()
32
+ .replace(/\.local$/, '')
33
+ .replace(/[^a-z0-9-]+/g, '-')
34
+ .replace(/^-+|-+$/g, '');
35
+ return id || 'unknown-device';
36
+ }
37
+ export function getDeviceId() {
38
+ if (process.env.DECIBEL_DEVICE_ID) {
39
+ return sanitizeDeviceId(process.env.DECIBEL_DEVICE_ID);
40
+ }
41
+ if (cachedDeviceId)
42
+ return cachedDeviceId;
43
+ const deviceFile = path.join(os.homedir(), '.decibel', 'device.json');
44
+ try {
45
+ const data = JSON.parse(fs.readFileSync(deviceFile, 'utf-8'));
46
+ if (typeof data.id === 'string' && data.id) {
47
+ cachedDeviceId = sanitizeDeviceId(data.id);
48
+ return cachedDeviceId;
49
+ }
50
+ }
51
+ catch {
52
+ // No device file yet — generate one below.
53
+ }
54
+ const id = sanitizeDeviceId(os.hostname());
55
+ try {
56
+ fs.mkdirSync(path.dirname(deviceFile), { recursive: true });
57
+ fs.writeFileSync(deviceFile, JSON.stringify({ id, hostname: os.hostname(), created_at: new Date().toISOString() }, null, 2));
58
+ log(`ProjectRegistry: Generated device ID "${id}" → ${deviceFile}`);
59
+ }
60
+ catch (err) {
61
+ log(`ProjectRegistry: Could not persist device ID (${err}) — using "${id}" for this process`);
62
+ }
63
+ cachedDeviceId = id;
64
+ return id;
65
+ }
66
+ // ============================================================================
67
+ // Effective Path Resolution (device-aware)
68
+ // ============================================================================
69
+ /**
70
+ * All paths an entry might live at, most-specific first:
71
+ * this device's override → canonical path → other devices' copies.
72
+ */
73
+ export function listCandidatePaths(entry) {
74
+ const deviceId = getDeviceId();
75
+ const candidates = [];
76
+ const devicePath = entry.devicePaths?.[deviceId];
77
+ if (devicePath)
78
+ candidates.push(devicePath);
79
+ candidates.push(entry.path);
80
+ for (const [device, p] of Object.entries(entry.devicePaths ?? {})) {
81
+ if (device !== deviceId && !candidates.includes(p))
82
+ candidates.push(p);
83
+ }
84
+ return candidates;
85
+ }
86
+ /**
87
+ * Pick the path this entry actually lives at ON THIS DEVICE: the first
88
+ * candidate whose .decibel/ folder exists. External drives resolve via the
89
+ * canonical path whenever mounted; machine-local checkouts via devicePaths.
90
+ * If nothing exists (drive unplugged, no local copy), returns the
91
+ * most-specific candidate with available=false so error messages can point
92
+ * at the right location.
93
+ */
94
+ export function getEffectivePath(entry) {
95
+ const deviceId = getDeviceId();
96
+ const devicePath = entry.devicePaths?.[deviceId];
97
+ const sourceOf = (p) => p === devicePath ? 'device' : p === entry.path ? 'canonical' : 'other_device';
98
+ const candidates = listCandidatePaths(entry);
99
+ for (const candidate of candidates) {
100
+ if (hasDecibelFolder(candidate)) {
101
+ return { path: candidate, source: sourceOf(candidate), available: true };
102
+ }
103
+ }
104
+ const preferred = candidates[0];
105
+ return { path: preferred, source: sourceOf(preferred), available: false };
106
+ }
107
+ /** Copy of the entry with `path` replaced by the device-effective path. */
108
+ function withEffectivePath(entry) {
109
+ const eff = getEffectivePath(entry);
110
+ return { ...entry, path: eff.path };
111
+ }
112
+ /** Error text for a registered-but-absent project, with device context. */
113
+ function unavailableMessage(entry, requestedAs) {
114
+ const candidates = listCandidatePaths(entry);
115
+ return (`Project "${requestedAs}" is registered but not available on this device (${getDeviceId()}). ` +
116
+ `Tried: ${candidates.join(', ')}. ` +
117
+ `If it lives on an external drive, mount it. If this machine has its own copy, ` +
118
+ `link it with registry_add (same id, this machine's path) or registry_scan with apply=true.`);
119
+ }
120
+ // ============================================================================
20
121
  // Registry Loading
21
122
  // ============================================================================
22
123
  /**
@@ -161,22 +262,22 @@ export function resolveProject(projectId) {
161
262
  // Strategy 1: Exact ID match in registry
162
263
  const exactMatch = registry.projects.find((p) => p.id === projectId);
163
264
  if (exactMatch) {
164
- if (!hasDecibelFolder(exactMatch.path)) {
165
- throw new Error(`Project "${projectId}" registered at ${exactMatch.path} but .decibel folder not found. ` +
166
- `Update the registry or run 'decibel init' in that directory.`);
265
+ const eff = getEffectivePath(exactMatch);
266
+ if (!eff.available) {
267
+ throw new Error(unavailableMessage(exactMatch, projectId));
167
268
  }
168
- log(`ProjectRegistry: Resolved "${projectId}" via exact ID match`);
169
- return exactMatch;
269
+ log(`ProjectRegistry: Resolved "${projectId}" via exact ID match (${eff.source} path)`);
270
+ return { ...exactMatch, path: eff.path };
170
271
  }
171
272
  // Strategy 2: Alias match in registry
172
273
  const aliasMatch = registry.projects.find((p) => p.aliases?.includes(projectId));
173
274
  if (aliasMatch) {
174
- if (!hasDecibelFolder(aliasMatch.path)) {
175
- throw new Error(`Project "${projectId}" (alias for "${aliasMatch.id}") registered at ${aliasMatch.path} ` +
176
- `but .decibel folder not found.`);
275
+ const eff = getEffectivePath(aliasMatch);
276
+ if (!eff.available) {
277
+ throw new Error(unavailableMessage(aliasMatch, `${projectId}" (alias for "${aliasMatch.id}`));
177
278
  }
178
- log(`ProjectRegistry: Resolved "${projectId}" via alias -> "${aliasMatch.id}"`);
179
- return aliasMatch;
279
+ log(`ProjectRegistry: Resolved "${projectId}" via alias -> "${aliasMatch.id}" (${eff.source} path)`);
280
+ return { ...aliasMatch, path: eff.path };
180
281
  }
181
282
  // Strategy 3: DECIBEL_PROJECT_ROOT env var
182
283
  const envRoot = process.env.DECIBEL_PROJECT_ROOT;
@@ -222,16 +323,40 @@ export function resolveProject(projectId) {
222
323
  throw new Error(errorMsg);
223
324
  }
224
325
  /**
225
- * List all registered projects
326
+ * List all registered projects. Entries carry the device-effective `path`
327
+ * (so every consumer reads the right location for this machine), plus
328
+ * display fields: canonicalPath, available, pathSource.
226
329
  */
227
330
  export function listProjects() {
228
331
  const registry = loadRegistry();
229
- return registry.projects;
332
+ return registry.projects.map((p) => {
333
+ const eff = getEffectivePath(p);
334
+ return {
335
+ ...p,
336
+ path: eff.path,
337
+ canonicalPath: p.path,
338
+ available: eff.available,
339
+ pathSource: eff.source,
340
+ };
341
+ });
230
342
  }
231
343
  /**
232
- * Register a new project or update an existing one
344
+ * Register a new project or update an existing one — device-aware.
345
+ *
346
+ * New IDs register their path as canonical. For an existing ID with a
347
+ * DIFFERENT path, the new path is recorded as this device's override
348
+ * (devicePaths[deviceId]) so machines don't clobber each other's locations —
349
+ * the scenario that broke the laptop when the registry held desktop-only
350
+ * /Volumes/Ashitaka paths. Pass opts.canonical=true to deliberately rewrite
351
+ * the canonical path (e.g. the project genuinely moved).
352
+ *
353
+ * If this device is ALREADY linked to a valid copy, a differing path is NOT
354
+ * recorded unless opts.repoint=true — otherwise a second copy of the same
355
+ * project (e.g. a backup on an external drive) discovered later in a scan
356
+ * would silently steal the link from the working copy. registry_add passes
357
+ * repoint (explicit user intent); registry_scan apply does not.
233
358
  */
234
- export function registerProject(entry) {
359
+ export function registerProject(entry, opts) {
235
360
  const registry = loadRegistry();
236
361
  // Validate path exists and has .decibel
237
362
  if (!fs.existsSync(entry.path)) {
@@ -241,21 +366,62 @@ export function registerProject(entry) {
241
366
  throw new Error(`No .decibel folder found at ${entry.path}. ` +
242
367
  `Initialize with 'decibel init' first.`);
243
368
  }
244
- // Normalize path
369
+ // Normalize path; strip display-only fields so they never persist to disk
370
+ // (callers sometimes round-trip entries that came from listProjects).
245
371
  entry.path = path.resolve(entry.path);
246
- // Check for duplicate ID
372
+ delete entry.canonicalPath;
373
+ delete entry.available;
374
+ delete entry.pathSource;
375
+ const deviceId = getDeviceId();
376
+ let result;
247
377
  const existingIdx = registry.projects.findIndex((p) => p.id === entry.id);
248
378
  if (existingIdx >= 0) {
249
- // Update existing
250
- registry.projects[existingIdx] = entry;
251
- log(`ProjectRegistry: Updated project "${entry.id}"`);
379
+ const existing = registry.projects[existingIdx];
380
+ if (opts?.canonical || existing.path === entry.path) {
381
+ // Same path (metadata refresh) or explicit canonical rewrite.
382
+ const updated = {
383
+ ...existing,
384
+ ...entry,
385
+ devicePaths: entry.devicePaths ?? existing.devicePaths,
386
+ };
387
+ // A device override equal to the new canonical path is redundant — drop it.
388
+ if (updated.devicePaths?.[deviceId] === updated.path) {
389
+ delete updated.devicePaths[deviceId];
390
+ if (Object.keys(updated.devicePaths).length === 0)
391
+ delete updated.devicePaths;
392
+ }
393
+ registry.projects[existingIdx] = updated;
394
+ log(`ProjectRegistry: Updated project "${entry.id}" (canonical: ${updated.path})`);
395
+ result = { action: 'updated_canonical', id: entry.id, path: updated.path };
396
+ }
397
+ else {
398
+ // Different path for a known project: this machine's copy, not a move.
399
+ const currentLink = existing.devicePaths?.[deviceId];
400
+ if (currentLink && currentLink !== entry.path && hasDecibelFolder(currentLink) && !opts?.repoint) {
401
+ // Device already linked to a valid copy — don't let a second copy
402
+ // (backup drive, stale clone) steal the link.
403
+ log(`ProjectRegistry: Kept existing device link for "${entry.id}" on ${deviceId} ` +
404
+ `(${currentLink}); not repointing to ${entry.path}`);
405
+ return { action: 'kept_existing_device_link', id: entry.id, path: currentLink, skippedPath: entry.path };
406
+ }
407
+ existing.devicePaths = { ...(existing.devicePaths ?? {}), [deviceId]: entry.path };
408
+ if (entry.name && !existing.name)
409
+ existing.name = entry.name;
410
+ if (entry.aliases?.length) {
411
+ existing.aliases = Array.from(new Set([...(existing.aliases ?? []), ...entry.aliases]));
412
+ }
413
+ log(`ProjectRegistry: Linked device path for "${entry.id}" on ${deviceId}: ${entry.path}`);
414
+ result = { action: 'device_linked', id: entry.id, path: entry.path };
415
+ }
252
416
  }
253
417
  else {
254
418
  // Add new
255
419
  registry.projects.push(entry);
256
420
  log(`ProjectRegistry: Added project "${entry.id}"`);
421
+ result = { action: 'added', id: entry.id, path: entry.path };
257
422
  }
258
423
  saveRegistry(registry);
424
+ return result;
259
425
  }
260
426
  /**
261
427
  * Remove a project from the registry
@@ -341,7 +507,7 @@ export function getScanRoots(explicit) {
341
507
  }
342
508
  const registry = loadRegistry();
343
509
  const parents = registry.projects
344
- .map((p) => p.path)
510
+ .flatMap((p) => listCandidatePaths(p))
345
511
  .filter((p) => p && fs.existsSync(p))
346
512
  .map((p) => path.dirname(path.resolve(p)));
347
513
  return Array.from(new Set(parents));
@@ -355,7 +521,15 @@ export function getScanRoots(explicit) {
355
521
  export function scanForProjects(explicitRoots) {
356
522
  const roots = getScanRoots(explicitRoots);
357
523
  const registry = loadRegistry();
358
- const registeredByPath = new Map(registry.projects.map((p) => [path.resolve(p.path), p]));
524
+ // Match discovered directories against EVERY path an entry is known by
525
+ // (canonical + all device overrides), so a copy already linked for some
526
+ // device isn't re-reported as unregistered.
527
+ const registeredByPath = new Map();
528
+ for (const p of registry.projects) {
529
+ for (const candidate of listCandidatePaths(p)) {
530
+ registeredByPath.set(path.resolve(candidate), p);
531
+ }
532
+ }
359
533
  const found = [];
360
534
  const seenPaths = new Set();
361
535
  for (const root of roots) {
@@ -385,14 +559,27 @@ export function scanForProjects(explicitRoots) {
385
559
  }
386
560
  }
387
561
  const unregistered = found.filter((f) => !f.registered);
562
+ // Orphans = no candidate path (canonical or any device override) is usable
563
+ // on this device. An unmounted external volume gets its own reason so it
564
+ // reads as "plug the drive in", not "the project is gone".
388
565
  const orphans = [];
389
566
  for (const project of registry.projects) {
390
- if (!fs.existsSync(project.path)) {
391
- orphans.push({ id: project.id, path: project.path, reason: 'path_missing' });
567
+ const eff = getEffectivePath(project);
568
+ if (eff.available)
569
+ continue;
570
+ const candidates = listCandidatePaths(project);
571
+ let reason = 'path_missing';
572
+ if (candidates.some((p) => fs.existsSync(p))) {
573
+ reason = 'no_decibel_dir';
392
574
  }
393
- else if (!hasDecibelFolder(project.path)) {
394
- orphans.push({ id: project.id, path: project.path, reason: 'no_decibel_dir' });
575
+ else {
576
+ const unmounted = candidates
577
+ .map((p) => /^\/Volumes\/[^/]+/.exec(p)?.[0])
578
+ .find((vol) => vol && !fs.existsSync(vol));
579
+ if (unmounted)
580
+ reason = `volume_unmounted:${path.basename(unmounted)}`;
395
581
  }
582
+ orphans.push({ id: project.id, path: eff.path, reason });
396
583
  }
397
584
  return { roots, found, unregistered, orphans };
398
585
  }
@@ -410,34 +597,36 @@ export function getDefaultProject() {
410
597
  const registry = loadRegistry();
411
598
  // Strategy 1: Explicitly marked default
412
599
  const explicitDefault = registry.projects.find((p) => p.default === true);
413
- if (explicitDefault && hasDecibelFolder(explicitDefault.path)) {
600
+ if (explicitDefault && getEffectivePath(explicitDefault).available) {
414
601
  log(`ProjectRegistry: Using explicit default project "${explicitDefault.id}"`);
415
- return explicitDefault;
602
+ return withEffectivePath(explicitDefault);
416
603
  }
417
604
  // Strategy 2: DECIBEL_DEFAULT_PROJECT env var
418
605
  const envDefault = process.env.DECIBEL_DEFAULT_PROJECT;
419
606
  if (envDefault) {
420
607
  const envMatch = registry.projects.find((p) => p.id === envDefault || p.aliases?.includes(envDefault));
421
- if (envMatch && hasDecibelFolder(envMatch.path)) {
608
+ if (envMatch && getEffectivePath(envMatch).available) {
422
609
  log(`ProjectRegistry: Using DECIBEL_DEFAULT_PROJECT "${envMatch.id}"`);
423
- return envMatch;
610
+ return withEffectivePath(envMatch);
424
611
  }
425
612
  }
426
613
  // Strategy 3: If only one project, use it
427
- const validProjects = registry.projects.filter((p) => hasDecibelFolder(p.path));
614
+ const validProjects = registry.projects.filter((p) => getEffectivePath(p).available);
428
615
  if (validProjects.length === 1) {
429
616
  log(`ProjectRegistry: Using only registered project "${validProjects[0].id}" as default`);
430
- return validProjects[0];
617
+ return withEffectivePath(validProjects[0]);
431
618
  }
432
619
  // Strategy 4: Discover from cwd
433
620
  const discoveredRoot = findDecibelDir(process.cwd());
434
621
  if (discoveredRoot) {
435
622
  const discoveredId = path.basename(discoveredRoot);
436
- // Check if it matches a registered project
623
+ // Check if it matches a registered project. The cwd-discovered root is
624
+ // certainly valid on this device, so prefer it over a registered path
625
+ // that may point at another machine's location.
437
626
  const registeredMatch = registry.projects.find((p) => p.id === discoveredId);
438
627
  if (registeredMatch) {
439
628
  log(`ProjectRegistry: Using cwd-discovered project "${registeredMatch.id}" as default`);
440
- return registeredMatch;
629
+ return { ...registeredMatch, path: discoveredRoot };
441
630
  }
442
631
  // Return an ad-hoc entry for the discovered project
443
632
  log(`ProjectRegistry: Using cwd-discovered unregistered project "${discoveredId}" as default`);
@@ -1 +1 @@
1
- {"version":3,"file":"projectRegistry.js","sourceRoot":"","sources":["../src/projectRegistry.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"projectRegistry.js","sourceRoot":"","sources":["../src/projectRegistry.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"sentinelIssues.d.ts","sourceRoot":"","sources":["../src/sentinelIssues.ts"],"names":[],"mappings":"AAUA,MAAM,MAAM,WAAW,GAAG,MAAM,GAAG,aAAa,GAAG,MAAM,GAAG,SAAS,CAAC;AACtE,MAAM,MAAM,aAAa,GAAG,KAAK,GAAG,QAAQ,GAAG,MAAM,CAAC;AAEtD,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,WAAW,CAAC;IACpB,QAAQ,CAAC,EAAE,aAAa,CAAC;IACzB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED,MAAM,WAAW,gBAAgB;IAC/B,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,aAAa,CAAC;IACzB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;CACjB;AAED,MAAM,WAAW,iBAAkB,SAAQ,aAAa;IACtD,QAAQ,EAAE,MAAM,CAAC;CAClB;AAiDD;;;GAGG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAyBtE;AAMD;;;GAGG;AACH,wBAAsB,oBAAoB,CACxC,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,aAAa,EAAE,CAAC,CAgE1B;AAED;;GAEG;AACH,wBAAsB,WAAW,CAC/B,KAAK,EAAE,gBAAgB,GACtB,OAAO,CAAC,iBAAiB,CAAC,CA4E5B;AAED;;GAEG;AACH,wBAAsB,YAAY,CAChC,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC,CAI/B;AAMD,MAAM,WAAW,gBAAgB;IAC/B,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,QAAQ,CAAC,EAAE,aAAa,CAAC;IACzB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,iBAAkB,SAAQ,aAAa;IACtD,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,EAAE,CAAC;CACnB;AAED;;;GAGG;AACH,wBAAsB,WAAW,CAC/B,KAAK,EAAE,gBAAgB,GACtB,OAAO,CAAC,iBAAiB,CAAC,CAqF5B;AAED;;GAEG;AACH,wBAAgB,cAAc,CAC5B,MAAM,EAAE,aAAa,EAAE,EACvB,MAAM,EAAE,WAAW,GAClB,aAAa,EAAE,CAEjB;AAED;;GAEG;AACH,wBAAgB,cAAc,CAC5B,MAAM,EAAE,aAAa,EAAE,EACvB,MAAM,EAAE,MAAM,GACb,aAAa,EAAE,CAEjB"}
1
+ {"version":3,"file":"sentinelIssues.d.ts","sourceRoot":"","sources":["../src/sentinelIssues.ts"],"names":[],"mappings":"AAUA,MAAM,MAAM,WAAW,GAAG,MAAM,GAAG,aAAa,GAAG,MAAM,GAAG,SAAS,CAAC;AACtE,MAAM,MAAM,aAAa,GAAG,KAAK,GAAG,QAAQ,GAAG,MAAM,CAAC;AAEtD,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,WAAW,CAAC;IACpB,QAAQ,CAAC,EAAE,aAAa,CAAC;IACzB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED,MAAM,WAAW,gBAAgB;IAC/B,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,aAAa,CAAC;IACzB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;CACjB;AAED,MAAM,WAAW,iBAAkB,SAAQ,aAAa;IACtD,QAAQ,EAAE,MAAM,CAAC;CAClB;AAiDD;;;GAGG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAyBtE;AAMD;;;GAGG;AACH,wBAAsB,oBAAoB,CACxC,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,aAAa,EAAE,CAAC,CA2E1B;AAED;;GAEG;AACH,wBAAsB,WAAW,CAC/B,KAAK,EAAE,gBAAgB,GACtB,OAAO,CAAC,iBAAiB,CAAC,CA4E5B;AAED;;GAEG;AACH,wBAAsB,YAAY,CAChC,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC,CAa/B;AAMD,MAAM,WAAW,gBAAgB;IAC/B,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,QAAQ,CAAC,EAAE,aAAa,CAAC;IACzB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,iBAAkB,SAAQ,aAAa;IACtD,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,EAAE,CAAC;CACnB;AAED;;;GAGG;AACH,wBAAsB,WAAW,CAC/B,KAAK,EAAE,gBAAgB,GACtB,OAAO,CAAC,iBAAiB,CAAC,CAiG5B;AAED;;GAEG;AACH,wBAAgB,cAAc,CAC5B,MAAM,EAAE,aAAa,EAAE,EACvB,MAAM,EAAE,WAAW,GAClB,aAAa,EAAE,CAEjB;AAED;;GAEG;AACH,wBAAgB,cAAc,CAC5B,MAAM,EAAE,aAAa,EAAE,EACvB,MAAM,EAAE,MAAM,GACb,aAAa,EAAE,CAEjB"}