@cliangdev/conductor 0.2.3 → 0.4.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 (47) hide show
  1. package/assets/claude/commands/conductor/implement.md +44 -27
  2. package/assets/claude/commands/conductor/prd.md +101 -24
  3. package/assets/claude/commands/conductor/workflow.md +208 -0
  4. package/dist/commands/init.d.ts +1 -1
  5. package/dist/commands/init.d.ts.map +1 -1
  6. package/dist/commands/init.js +9 -3
  7. package/dist/commands/init.js.map +1 -1
  8. package/dist/commands/lint.d.ts.map +1 -1
  9. package/dist/commands/lint.js +49 -2
  10. package/dist/commands/lint.js.map +1 -1
  11. package/dist/commands/login.d.ts +26 -0
  12. package/dist/commands/login.d.ts.map +1 -1
  13. package/dist/commands/login.js +73 -9
  14. package/dist/commands/login.js.map +1 -1
  15. package/dist/daemon/runner.js +1 -1
  16. package/dist/daemon/runner.js.map +1 -1
  17. package/dist/daemon/watcher.d.ts +36 -2
  18. package/dist/daemon/watcher.d.ts.map +1 -1
  19. package/dist/daemon/watcher.js +124 -18
  20. package/dist/daemon/watcher.js.map +1 -1
  21. package/dist/lib/config.d.ts.map +1 -1
  22. package/dist/lib/config.js +6 -2
  23. package/dist/lib/config.js.map +1 -1
  24. package/dist/lib/mermaid-lint.d.ts +21 -0
  25. package/dist/lib/mermaid-lint.d.ts.map +1 -0
  26. package/dist/lib/mermaid-lint.js +102 -0
  27. package/dist/lib/mermaid-lint.js.map +1 -0
  28. package/dist/mcp/config.d.ts +27 -0
  29. package/dist/mcp/config.d.ts.map +1 -1
  30. package/dist/mcp/config.js +56 -7
  31. package/dist/mcp/config.js.map +1 -1
  32. package/dist/mcp/index.d.ts.map +1 -1
  33. package/dist/mcp/index.js +242 -5
  34. package/dist/mcp/index.js.map +1 -1
  35. package/dist/mcp/tools/integrations.d.ts +10 -0
  36. package/dist/mcp/tools/integrations.d.ts.map +1 -0
  37. package/dist/mcp/tools/integrations.js +12 -0
  38. package/dist/mcp/tools/integrations.js.map +1 -0
  39. package/dist/mcp/tools/issues.d.ts +1 -0
  40. package/dist/mcp/tools/issues.d.ts.map +1 -1
  41. package/dist/mcp/tools/issues.js +9 -2
  42. package/dist/mcp/tools/issues.js.map +1 -1
  43. package/dist/mcp/tools/workflows.d.ts +67 -0
  44. package/dist/mcp/tools/workflows.d.ts.map +1 -0
  45. package/dist/mcp/tools/workflows.js +99 -0
  46. package/dist/mcp/tools/workflows.js.map +1 -0
  47. package/package.json +3 -3
@@ -23,6 +23,13 @@ export function rotateDaemonLogIfNeeded() {
23
23
  // Log file may not exist yet — nothing to rotate
24
24
  }
25
25
  }
26
+ /**
27
+ * After this many failed replays an entry is dropped from the queue. Without
28
+ * this cap, entries targeting resources that can never succeed (e.g. documents
29
+ * under a local-only issue that was never created server-side) would be
30
+ * retried forever and the queue would never reach zero.
31
+ */
32
+ export const MAX_REPLAY_ATTEMPTS = 5;
26
33
  export const debounceTimers = new Map();
27
34
  export function debounce(key, fn, ms = 500) {
28
35
  const existing = debounceTimers.get(key);
@@ -65,8 +72,26 @@ export function writeQueue(entries) {
65
72
  }
66
73
  export function queueChange(entry) {
67
74
  const entries = readQueue();
68
- entries.push({ ...entry, timestamp: new Date().toISOString() });
69
- writeQueue(entries);
75
+ // Collapse to one entry per path: a newer failure supersedes any earlier
76
+ // queued snapshot for the same resource. Without this the queue grows
77
+ // unbounded (one entry per failed save) and old snapshots can clobber newer
78
+ // content on replay.
79
+ const deduped = entries.filter((e) => e.path !== entry.path);
80
+ deduped.push({ ...entry, timestamp: new Date().toISOString(), attempts: 0 });
81
+ writeQueue(deduped);
82
+ }
83
+ /**
84
+ * Drop any pending queue entries for a path once it has synced successfully via
85
+ * the live watcher. This is what keeps already-synced files from lingering in
86
+ * the queue: a save that failed (queued) and then succeeded on a later edit
87
+ * must not leave its stale snapshot behind to be replayed.
88
+ */
89
+ export function dequeueChange(apiPath) {
90
+ const entries = readQueue();
91
+ const remaining = entries.filter((e) => e.path !== apiPath);
92
+ if (remaining.length !== entries.length) {
93
+ writeQueue(remaining);
94
+ }
70
95
  }
71
96
  export function getAllWatchPaths(config) {
72
97
  const paths = new Set();
@@ -80,6 +105,12 @@ export function getAllWatchPaths(config) {
80
105
  }
81
106
  return Array.from(paths);
82
107
  }
108
+ /**
109
+ * Resolve which project a watched file belongs to from its path. Returns null
110
+ * when the file is under no known project root — callers must skip rather than
111
+ * fall back to the active projectId, which would mis-stamp the write to the
112
+ * wrong project (e.g. queuing a Rexcipe file under Conductor's id).
113
+ */
83
114
  export function resolveProjectIdForFile(filePath, config) {
84
115
  const normalized = filePath.replace(/\\/g, '/');
85
116
  if (config.projects) {
@@ -89,7 +120,14 @@ export function resolveProjectIdForFile(filePath, config) {
89
120
  return projectId;
90
121
  }
91
122
  }
92
- return config.projectId;
123
+ // Legacy single-project layout: only attribute to the active project when the
124
+ // file actually lives under its local path.
125
+ if (config.localPath) {
126
+ const prefix = config.localPath.replace(/\\/g, '/') + '/.conductor/issues/';
127
+ if (normalized.startsWith(prefix))
128
+ return config.projectId;
129
+ }
130
+ return null;
93
131
  }
94
132
  async function callApi(method, apiPath, body, getConfig) {
95
133
  const config = getConfig();
@@ -124,10 +162,15 @@ export async function syncFile(filePath, getConfig) {
124
162
  }
125
163
  const config = getConfig();
126
164
  const projectId = resolveProjectIdForFile(filePath, config);
165
+ if (projectId === null) {
166
+ console.warn(`Skipping ${filePath}: not under any known project — run conductor init here.`);
167
+ return;
168
+ }
127
169
  const apiPath = `/api/v1/projects/${projectId}/issues/${parsed.issueId}/documents/${encodeURIComponent(parsed.filename)}`;
128
170
  const body = { content, contentType: 'text/markdown' };
129
171
  try {
130
172
  await callApi('PUT', apiPath, body, getConfig);
173
+ dequeueChange(apiPath);
131
174
  console.log(`Synced: ${filePath}`);
132
175
  }
133
176
  catch (err) {
@@ -143,9 +186,14 @@ export async function deleteFile(filePath, getConfig) {
143
186
  return;
144
187
  const config = getConfig();
145
188
  const projectId = resolveProjectIdForFile(filePath, config);
189
+ if (projectId === null) {
190
+ console.warn(`Skipping delete of ${filePath}: not under any known project.`);
191
+ return;
192
+ }
146
193
  const apiPath = `/api/v1/projects/${projectId}/issues/${parsed.issueId}/documents/${encodeURIComponent(parsed.filename)}`;
147
194
  try {
148
195
  await callApi('DELETE', apiPath, undefined, getConfig);
196
+ dequeueChange(apiPath);
149
197
  console.log(`Deleted: ${filePath}`);
150
198
  }
151
199
  catch (err) {
@@ -187,9 +235,14 @@ export async function syncIssueMd(filePath, getConfig) {
187
235
  return;
188
236
  const config = getConfig();
189
237
  const projectId = resolveProjectIdForFile(filePath, config);
238
+ if (projectId === null) {
239
+ console.warn(`Skipping issue.md ${filePath}: not under any known project — run conductor init here.`);
240
+ return;
241
+ }
190
242
  const apiPath = `/api/v1/projects/${projectId}/issues/${parsed.issueId}`;
191
243
  try {
192
244
  await callApi('PATCH', apiPath, patchBody, getConfig);
245
+ dequeueChange(apiPath);
193
246
  console.log(`Synced issue.md: ${filePath}`);
194
247
  }
195
248
  catch (err) {
@@ -212,9 +265,14 @@ export async function syncTasksJson(filePath, getConfig) {
212
265
  const tasks = JSON.parse(content);
213
266
  const config = getConfig();
214
267
  const projectId = resolveProjectIdForFile(filePath, config);
268
+ if (projectId === null) {
269
+ console.warn(`Skipping tasks.json ${filePath}: not under any known project — run conductor init here.`);
270
+ return;
271
+ }
215
272
  const apiPath = `/api/v1/projects/${projectId}/issues/${parsed.issueId}/tasks`;
216
273
  try {
217
274
  await callApi('PUT', apiPath, tasks, getConfig);
275
+ dequeueChange(apiPath);
218
276
  console.log(`Synced tasks.json: ${filePath}`);
219
277
  }
220
278
  catch (err) {
@@ -243,28 +301,70 @@ export async function syncExistingTasksFiles(getConfig) {
243
301
  }
244
302
  }
245
303
  }
304
+ let replayInFlight = false;
305
+ function entryKey(e) {
306
+ return `${e.method} ${e.path} ${e.timestamp}`;
307
+ }
308
+ /**
309
+ * Drain the offline sync queue. Safe to call repeatedly (idle/active poll
310
+ * cadence) — a re-entrancy guard prevents overlapping drains.
311
+ *
312
+ * Each entry is attempted in turn. On permanent-looking failure the attempt
313
+ * counter is bumped and the entry is abandoned once it exceeds
314
+ * MAX_REPLAY_ATTEMPTS, so unsyncable entries can't pin the queue open forever.
315
+ *
316
+ * The final write merges decisions against a FRESH read of the queue rather
317
+ * than overwriting with a stale snapshot, so entries the watcher appended while
318
+ * a drain was in progress are preserved instead of clobbered.
319
+ */
246
320
  export async function replayQueue(getConfig) {
321
+ if (replayInFlight)
322
+ return;
247
323
  const entries = readQueue();
248
324
  if (entries.length === 0)
249
325
  return;
250
- console.log(`Replaying ${entries.length} queued item(s)...`);
251
- const remaining = [];
252
- for (const entry of entries) {
253
- try {
254
- await callApi(entry.method, entry.path, entry.body, getConfig);
255
- console.log(`Replayed: ${entry.method} ${entry.path}`);
326
+ replayInFlight = true;
327
+ try {
328
+ console.log(`Replaying ${entries.length} queued item(s)...`);
329
+ // path -> updated entry to keep (with bumped attempts), or 'drop' to remove.
330
+ const decisions = new Map();
331
+ for (const entry of entries) {
332
+ try {
333
+ await callApi(entry.method, entry.path, entry.body, getConfig);
334
+ decisions.set(entryKey(entry), 'drop');
335
+ console.log(`Replayed: ${entry.method} ${entry.path}`);
336
+ }
337
+ catch (err) {
338
+ const attempts = (entry.attempts ?? 0) + 1;
339
+ if (attempts >= MAX_REPLAY_ATTEMPTS) {
340
+ decisions.set(entryKey(entry), 'drop');
341
+ console.error(`Abandoning ${entry.method} ${entry.path} after ${attempts} failed attempts: ${err.message}`);
342
+ }
343
+ else {
344
+ decisions.set(entryKey(entry), { ...entry, attempts });
345
+ console.error(`Replay failed for ${entry.method} ${entry.path} (attempt ${attempts}/${MAX_REPLAY_ATTEMPTS}): ${err.message}`);
346
+ }
347
+ }
256
348
  }
257
- catch (err) {
258
- console.error(`Replay failed for ${entry.method} ${entry.path}: ${err.message}`);
259
- remaining.push(entry);
349
+ // Merge against the current queue so concurrent appends survive.
350
+ const current = readQueue();
351
+ const merged = [];
352
+ for (const e of current) {
353
+ const decision = decisions.get(entryKey(e));
354
+ if (decision === 'drop')
355
+ continue;
356
+ merged.push(decision ?? e); // decision carries bumped attempts; else untouched (newly appended)
357
+ }
358
+ writeQueue(merged);
359
+ if (merged.length === 0) {
360
+ console.log('All queued items replayed successfully.');
361
+ }
362
+ else {
363
+ console.log(`${merged.length} item(s) still pending.`);
260
364
  }
261
365
  }
262
- writeQueue(remaining);
263
- if (remaining.length === 0) {
264
- console.log('All queued items replayed successfully.');
265
- }
266
- else {
267
- console.log(`${remaining.length} item(s) still pending.`);
366
+ finally {
367
+ replayInFlight = false;
268
368
  }
269
369
  }
270
370
  export function startWatcher(getConfig) {
@@ -347,6 +447,12 @@ if (process.argv[1] === __filename) {
347
447
  replayQueue(getConfig).catch(console.error);
348
448
  syncExistingTasksFiles(getConfig).catch(console.error);
349
449
  startWatcher(getConfig);
450
+ // Drain the offline queue on a cadence, not just at startup. Without this a
451
+ // transient failure keeps an item queued until the next daemon restart.
452
+ const REPLAY_INTERVAL_MS = 60000;
453
+ setInterval(() => {
454
+ replayQueue(getConfig).catch(console.error);
455
+ }, REPLAY_INTERVAL_MS);
350
456
  const runQueue = new RunQueue(getConfig().maxConcurrentRuns ?? 1);
351
457
  startPoller(getConfig, async (events) => {
352
458
  for (const event of events) {
@@ -1 +1 @@
1
- {"version":3,"file":"watcher.js","sourceRoot":"","sources":["../../src/daemon/watcher.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,MAAM,UAAU,CAAA;AAC/B,OAAO,KAAK,EAAE,MAAM,IAAI,CAAA;AACxB,OAAO,KAAK,IAAI,MAAM,MAAM,CAAA;AAC5B,OAAO,KAAK,EAAE,MAAM,IAAI,CAAA;AACxB,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAA;AACnC,OAAO,EAAE,UAAU,EAAU,MAAM,kBAAkB,CAAA;AACrD,OAAO,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAA;AAChE,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAA;AACzC,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AAGzC,MAAM,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,YAAY,CAAC,CAAA;AAC3D,MAAM,CAAC,MAAM,eAAe,GAAG,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,iBAAiB,CAAC,CAAA;AAC1E,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,YAAY,CAAC,CAAA;AACvD,MAAM,gBAAgB,GAAG,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,cAAc,CAAC,CAAA;AACjE,MAAM,kBAAkB,GAAG,CAAC,GAAG,IAAI,GAAG,IAAI,CAAA;AAE1C,MAAM,UAAU,uBAAuB;IACrC,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAA;QAClC,IAAI,IAAI,CAAC,IAAI,IAAI,kBAAkB,EAAE,CAAC;YACpC,EAAE,CAAC,UAAU,CAAC,QAAQ,EAAE,gBAAgB,CAAC,CAAA;QAC3C,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,iDAAiD;IACnD,CAAC;AACH,CAAC;AASD,MAAM,CAAC,MAAM,cAAc,GAAG,IAAI,GAAG,EAAyC,CAAA;AAE9E,MAAM,UAAU,QAAQ,CAAC,GAAW,EAAE,EAAc,EAAE,EAAE,GAAG,GAAG;IAC5D,MAAM,QAAQ,GAAG,cAAc,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;IACxC,IAAI,QAAQ;QAAE,YAAY,CAAC,QAAQ,CAAC,CAAA;IACpC,cAAc,CAAC,GAAG,CAAC,GAAG,EAAE,UAAU,CAAC,GAAG,EAAE;QACtC,cAAc,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;QAC1B,EAAE,EAAE,CAAA;IACN,CAAC,EAAE,EAAE,CAAC,CAAC,CAAA;AACT,CAAC;AAED,MAAM,UAAU,aAAa,CAC3B,QAAgB;IAEhB,+DAA+D;IAC/D,MAAM,UAAU,GAAG,QAAQ,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAA;IAC/C,MAAM,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC,wCAAwC,CAAC,CAAA;IACxE,IAAI,CAAC,KAAK;QAAE,OAAO,IAAI,CAAA;IACvB,OAAO,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,CAAA;AAClD,CAAC;AAED,MAAM,UAAU,SAAS;IACvB,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,EAAE,CAAC,YAAY,CAAC,eAAe,EAAE,MAAM,CAAC,CAAA;QACpD,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAiB,CAAA;IACxC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAA;IACX,CAAC;AACH,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,OAAqB;IAC9C,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACzB,IAAI,CAAC;YACH,EAAE,CAAC,UAAU,CAAC,eAAe,CAAC,CAAA;QAChC,CAAC;QAAC,MAAM,CAAC;YACP,6BAA6B;QAC/B,CAAC;QACD,OAAM;IACR,CAAC;IACD,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;IAChE,EAAE,CAAC,aAAa,CAAC,eAAe,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,MAAM,CAAC,CAAA;AAC7E,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,KAAoC;IAC9D,MAAM,OAAO,GAAG,SAAS,EAAE,CAAA;IAC3B,OAAO,CAAC,IAAI,CAAC,EAAE,GAAG,KAAK,EAAE,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,EAAE,CAAC,CAAA;IAC/D,UAAU,CAAC,OAAO,CAAC,CAAA;AACrB,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,MAAc;IAC7C,MAAM,KAAK,GAAG,IAAI,GAAG,EAAU,CAAA;IAC/B,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;QACpB,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC;YAClD,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,YAAY,EAAE,QAAQ,CAAC,CAAC,CAAA;QAC9D,CAAC;IACH,CAAC;IACD,IAAI,MAAM,CAAC,SAAS,EAAE,CAAC;QACrB,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,YAAY,EAAE,QAAQ,CAAC,CAAC,CAAA;IAChE,CAAC;IACD,OAAO,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;AAC1B,CAAC;AAED,MAAM,UAAU,uBAAuB,CAAC,QAAgB,EAAE,MAAc;IACtE,MAAM,UAAU,GAAG,QAAQ,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAA;IAC/C,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;QACpB,KAAK,MAAM,CAAC,SAAS,EAAE,IAAI,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC;YAChE,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,GAAG,qBAAqB,CAAA;YACzE,IAAI,UAAU,CAAC,UAAU,CAAC,MAAM,CAAC;gBAAE,OAAO,SAAS,CAAA;QACrD,CAAC;IACH,CAAC;IACD,OAAO,MAAM,CAAC,SAAS,CAAA;AACzB,CAAC;AAED,KAAK,UAAU,OAAO,CACpB,MAAc,EACd,OAAe,EACf,IAAyC,EACzC,SAAuB;IAEvB,MAAM,MAAM,GAAG,SAAS,EAAE,CAAA;IAC1B,MAAM,GAAG,GAAG,GAAG,MAAM,CAAC,MAAM,GAAG,OAAO,EAAE,CAAA;IACxC,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE;QAChC,MAAM;QACN,OAAO,EAAE;YACP,aAAa,EAAE,UAAU,MAAM,CAAC,MAAM,EAAE;YACxC,cAAc,EAAE,kBAAkB;SACnC;QACD,IAAI,EAAE,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS;KAC5D,CAAC,CAAA;IACF,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;QACjB,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAA;QACnE,MAAM,IAAI,KAAK,CAAC,GAAG,MAAM,IAAI,OAAO,uBAAuB,QAAQ,CAAC,MAAM,KAAK,IAAI,EAAE,CAAC,CAAA;IACxF,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,QAAQ,CAAC,QAAgB,EAAE,SAAuB;IACtE,MAAM,MAAM,GAAG,aAAa,CAAC,QAAQ,CAAC,CAAA;IACtC,IAAI,CAAC,MAAM;QAAE,OAAM;IAEnB,qCAAqC;IACrC,IAAI,MAAM,CAAC,QAAQ,KAAK,UAAU;QAAE,OAAM;IAE1C,IAAI,OAAe,CAAA;IACnB,IAAI,CAAC;QACH,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAA;IAC7C,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,CAAC,KAAK,CAAC,wBAAwB,QAAQ,EAAE,CAAC,CAAA;QACjD,OAAM;IACR,CAAC;IAED,MAAM,MAAM,GAAG,SAAS,EAAE,CAAA;IAC1B,MAAM,SAAS,GAAG,uBAAuB,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAA;IAC3D,MAAM,OAAO,GAAG,oBAAoB,SAAS,WAAW,MAAM,CAAC,OAAO,cAAc,kBAAkB,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAA;IACzH,MAAM,IAAI,GAAG,EAAE,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,CAAA;IAEtD,IAAI,CAAC;QACH,MAAM,OAAO,CAAC,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,CAAC,CAAA;QAC9C,OAAO,CAAC,GAAG,CAAC,WAAW,QAAQ,EAAE,CAAC,CAAA;IACpC,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,CAAC,KAAK,CAAC,yBAAyB,QAAQ,MAAO,GAAa,CAAC,OAAO,EAAE,CAAC,CAAA;QAC9E,WAAW,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAA;IACrD,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,QAAgB,EAAE,SAAuB;IACxE,MAAM,MAAM,GAAG,aAAa,CAAC,QAAQ,CAAC,CAAA;IACtC,IAAI,CAAC,MAAM;QAAE,OAAM;IAEnB,IAAI,MAAM,CAAC,QAAQ,KAAK,UAAU;QAAE,OAAM;IAE1C,MAAM,MAAM,GAAG,SAAS,EAAE,CAAA;IAC1B,MAAM,SAAS,GAAG,uBAAuB,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAA;IAC3D,MAAM,OAAO,GAAG,oBAAoB,SAAS,WAAW,MAAM,CAAC,OAAO,cAAc,kBAAkB,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAA;IAEzH,IAAI,CAAC;QACH,MAAM,OAAO,CAAC,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE,SAAS,CAAC,CAAA;QACtD,OAAO,CAAC,GAAG,CAAC,YAAY,QAAQ,EAAE,CAAC,CAAA;IACrC,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,CAAC,KAAK,CAAC,2BAA2B,QAAQ,MAAO,GAAa,CAAC,OAAO,EAAE,CAAC,CAAA;QAChF,WAAW,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAA;IAClD,CAAC;AACH,CAAC;AAED,SAAS,gBAAgB,CAAC,OAAe;IACvC,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,oCAAoC,CAAC,CAAA;IACjE,IAAI,CAAC,KAAK;QAAE,OAAO,EAAE,CAAA;IACrB,MAAM,cAAc,GAAG,KAAK,CAAC,CAAC,CAAC,CAAA;IAC/B,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAA;IAE5B,MAAM,KAAK,GAAG,cAAc,CAAC,KAAK,CAAC,kBAAkB,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAA;IACnE,MAAM,MAAM,GAAG,cAAc,CAAC,KAAK,CAAC,mBAAmB,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAA;IACrE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,CAAA;AAChC,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,QAAgB,EAAE,SAAuB;IACzE,MAAM,MAAM,GAAG,aAAa,CAAC,QAAQ,CAAC,CAAA;IACtC,IAAI,CAAC,MAAM;QAAE,OAAM;IAEnB,IAAI,OAAe,CAAA;IACnB,IAAI,CAAC;QACH,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAA;IAC7C,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,CAAC,KAAK,CAAC,wBAAwB,QAAQ,EAAE,CAAC,CAAA;QACjD,OAAM;IACR,CAAC;IAED,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,gBAAgB,CAAC,OAAO,CAAC,CAAA;IACzD,MAAM,SAAS,GAA2B,EAAE,CAAA;IAC5C,IAAI,KAAK,KAAK,SAAS;QAAE,SAAS,CAAC,OAAO,CAAC,GAAG,KAAK,CAAA;IACnD,IAAI,MAAM,KAAK,SAAS;QAAE,SAAS,CAAC,QAAQ,CAAC,GAAG,MAAM,CAAA;IACtD,IAAI,IAAI,KAAK,SAAS;QAAE,SAAS,CAAC,aAAa,CAAC,GAAG,IAAI,CAAA;IAEvD,IAAI,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,MAAM,KAAK,CAAC;QAAE,OAAM;IAE/C,MAAM,MAAM,GAAG,SAAS,EAAE,CAAA;IAC1B,MAAM,SAAS,GAAG,uBAAuB,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAA;IAC3D,MAAM,OAAO,GAAG,oBAAoB,SAAS,WAAW,MAAM,CAAC,OAAO,EAAE,CAAA;IAExE,IAAI,CAAC;QACH,MAAM,OAAO,CAAC,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,SAAS,CAAC,CAAA;QACrD,OAAO,CAAC,GAAG,CAAC,oBAAoB,QAAQ,EAAE,CAAC,CAAA;IAC7C,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,CAAC,KAAK,CAAC,+BAA+B,QAAQ,MAAO,GAAa,CAAC,OAAO,EAAE,CAAC,CAAA;QACpF,WAAW,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAAA;IAChE,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,QAAgB,EAAE,SAAuB;IAC3E,MAAM,MAAM,GAAG,aAAa,CAAC,QAAQ,CAAC,CAAA;IACtC,IAAI,CAAC,MAAM;QAAE,OAAM;IAEnB,IAAI,OAAe,CAAA;IACnB,IAAI,CAAC;QACH,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAA;IAC7C,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,CAAC,KAAK,CAAC,wBAAwB,QAAQ,EAAE,CAAC,CAAA;QACjD,OAAM;IACR,CAAC;IAED,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;IACjC,MAAM,MAAM,GAAG,SAAS,EAAE,CAAA;IAC1B,MAAM,SAAS,GAAG,uBAAuB,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAA;IAC3D,MAAM,OAAO,GAAG,oBAAoB,SAAS,WAAW,MAAM,CAAC,OAAO,QAAQ,CAAA;IAE9E,IAAI,CAAC;QACH,MAAM,OAAO,CAAC,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,SAAS,CAAC,CAAA;QAC/C,OAAO,CAAC,GAAG,CAAC,sBAAsB,QAAQ,EAAE,CAAC,CAAA;IAC/C,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,CAAC,KAAK,CAAC,+BAA+B,QAAQ,MAAO,GAAa,CAAC,OAAO,EAAE,CAAC,CAAA;QACpF,WAAW,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAA;IAC5D,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAAC,SAAuB;IAClE,MAAM,MAAM,GAAG,SAAS,EAAE,CAAA;IAC1B,MAAM,UAAU,GAAG,gBAAgB,CAAC,MAAM,CAAC,CAAA;IAC3C,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;QACnC,IAAI,SAAmB,CAAA;QACvB,IAAI,CAAC;YACH,SAAS,GAAG,EAAE,CAAC,WAAW,CAAC,SAAS,CAAC,CAAA;QACvC,CAAC;QAAC,MAAM,CAAC;YACP,SAAQ;QACV,CAAC;QACD,KAAK,MAAM,OAAO,IAAI,SAAS,EAAE,CAAC;YAChC,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,OAAO,EAAE,YAAY,CAAC,CAAA;YAC7D,IAAI,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;gBAC7B,MAAM,aAAa,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;oBACtD,OAAO,CAAC,KAAK,CAAC,2BAA2B,SAAS,KAAM,GAAa,CAAC,OAAO,EAAE,CAAC,CAAA;gBAClF,CAAC,CAAC,CAAA;YACJ,CAAC;QACH,CAAC;IACH,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,SAAuB;IACvD,MAAM,OAAO,GAAG,SAAS,EAAE,CAAA;IAC3B,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;QAAE,OAAM;IAEhC,OAAO,CAAC,GAAG,CAAC,aAAa,OAAO,CAAC,MAAM,oBAAoB,CAAC,CAAA;IAC5D,MAAM,SAAS,GAAiB,EAAE,CAAA;IAElC,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;QAC5B,IAAI,CAAC;YACH,MAAM,OAAO,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,SAAS,CAAC,CAAA;YAC9D,OAAO,CAAC,GAAG,CAAC,aAAa,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC,CAAA;QACxD,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,CAAC,KAAK,CAAC,qBAAqB,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,IAAI,KAAM,GAAa,CAAC,OAAO,EAAE,CAAC,CAAA;YAC3F,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;QACvB,CAAC;IACH,CAAC;IAED,UAAU,CAAC,SAAS,CAAC,CAAA;IACrB,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC3B,OAAO,CAAC,GAAG,CAAC,yCAAyC,CAAC,CAAA;IACxD,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC,MAAM,yBAAyB,CAAC,CAAA;IAC3D,CAAC;AACH,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,SAAuB;IAClD,MAAM,MAAM,GAAG,SAAS,EAAE,CAAA;IAC1B,MAAM,UAAU,GAAG,gBAAgB,CAAC,MAAM,CAAC,CAAA;IAC3C,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC5B,OAAO,CAAC,KAAK,CAAC,wDAAwD,CAAC,CAAA;QACvE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACjB,CAAC;IAED,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;QACnC,OAAO,CAAC,GAAG,CAAC,aAAa,SAAS,EAAE,CAAC,CAAA;IACvC,CAAC;IAED,MAAM,OAAO,GAAG,QAAQ,CAAC,KAAK,CAAC,UAAU,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAA;IAE/F,OAAO;SACJ,EAAE,CAAC,KAAK,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,QAAQ,EAAE,GAAG,EAAE;QAC/C,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,KAAK,UAAU,EAAE,CAAC;YAC3C,WAAW,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;QACvD,CAAC;aAAM,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,KAAK,YAAY,EAAE,CAAC;YACpD,aAAa,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;QACzD,CAAC;aAAM,CAAC;YACN,QAAQ,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;QACpD,CAAC;IACH,CAAC,CAAC,CAAC;SACF,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,QAAQ,EAAE,GAAG,EAAE;QAClD,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,KAAK,UAAU,EAAE,CAAC;YAC3C,WAAW,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;QACvD,CAAC;aAAM,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,KAAK,YAAY,EAAE,CAAC;YACpD,aAAa,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;QACzD,CAAC;aAAM,CAAC;YACN,QAAQ,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;QACpD,CAAC;IACH,CAAC,CAAC,CAAC;SACF,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,QAAQ,EAAE,GAAG,EAAE;QAClD,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAA;QACxC,IAAI,QAAQ,KAAK,UAAU,IAAI,QAAQ,KAAK,YAAY,EAAE,CAAC;YACzD,UAAU,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;QACtD,CAAC;QACD,8CAA8C;IAChD,CAAC,CAAC,CAAC,CAAA;IAEL,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,GAAG,EAAE;QACzB,OAAO,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE;YACxB,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAA;YAC9B,iBAAiB,EAAE,CAAA;YACnB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QACjB,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE;YACZ,iBAAiB,EAAE,CAAA;YACnB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QACjB,CAAC,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;AACJ,CAAC;AAED,oEAAoE;AACpE,MAAM,UAAU,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;AACjD,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,UAAU,EAAE,CAAC;IACnC,MAAM,SAAS,GAAG,GAAW,EAAE;QAC7B,MAAM,GAAG,GAAG,UAAU,EAAE,CAAA;QACxB,IAAI,CAAC,GAAG,EAAE,CAAC;YACT,OAAO,CAAC,KAAK,CAAC,yCAAyC,CAAC,CAAA;YACxD,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;QAClB,CAAC;QACD,OAAO,GAAG,CAAA;IACZ,CAAC,CAAA;IAED,wCAAwC;IACxC,uBAAuB,EAAE,CAAA;IAEzB,wCAAwC;IACxC,SAAS,EAAE,CAAA;IAEX,gBAAgB,CAAC;QACf,GAAG,EAAE,OAAO,CAAC,GAAG;QAChB,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;QACnC,QAAQ,EAAE,MAAM;QAChB,UAAU,EAAE,IAAI;QAChB,iBAAiB,EAAE,CAAC;QACpB,iBAAiB,EAAE,CAAC;QACpB,UAAU,EAAE,EAAE;QACd,aAAa,EAAE,CAAC;KACjB,CAAC,CAAA;IAEF,WAAW,CAAC,SAAS,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;IAC3C,sBAAsB,CAAC,SAAS,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;IACtD,YAAY,CAAC,SAAS,CAAC,CAAA;IAEvB,MAAM,QAAQ,GAAG,IAAI,QAAQ,CAAC,SAAS,EAAE,CAAC,iBAAiB,IAAI,CAAC,CAAC,CAAA;IAEjE,WAAW,CAAC,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE;QACtC,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;YAC3B,IAAI,KAAK,CAAC,IAAI,KAAK,kBAAkB,EAAE,CAAC;gBACtC,QAAQ,CAAC,OAAO,CAAC,KAAwC,EAAE,SAAS,CAAC,CAAA;YACvE,CAAC;QACH,CAAC;IACH,CAAC,CAAC,CAAA;AACJ,CAAC"}
1
+ {"version":3,"file":"watcher.js","sourceRoot":"","sources":["../../src/daemon/watcher.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/lib/config.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,YAAY;IAC3B,SAAS,EAAE,MAAM,CAAA;IACjB,WAAW,EAAE,MAAM,CAAA;CACpB;AAED,MAAM,WAAW,MAAM;IACrB,MAAM,EAAE,MAAM,CAAA;IACd,SAAS,EAAE,MAAM,CAAA;IACjB,WAAW,EAAE,MAAM,CAAA;IACnB,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,EAAE,MAAM,CAAA;IACd,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAC1B,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAAA;CACxC;AAED,eAAO,MAAM,WAAW,QAAuD,CAAA;AAE/E,wBAAgB,UAAU,IAAI,MAAM,GAAG,IAAI,CAe1C;AAED,wBAAgB,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAIhD;AAED,wBAAgB,WAAW,IAAI,IAAI,CAMlC;AAED,wBAAgB,gBAAgB,IAAI,MAAM,CAOzC"}
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/lib/config.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,YAAY;IAC3B,SAAS,EAAE,MAAM,CAAA;IACjB,WAAW,EAAE,MAAM,CAAA;CACpB;AAED,MAAM,WAAW,MAAM;IACrB,MAAM,EAAE,MAAM,CAAA;IACd,SAAS,EAAE,MAAM,CAAA;IACjB,WAAW,EAAE,MAAM,CAAA;IACnB,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,EAAE,MAAM,CAAA;IACd,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAC1B,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAAA;CACxC;AAED,eAAO,MAAM,WAAW,QAAuD,CAAA;AAE/E,wBAAgB,UAAU,IAAI,MAAM,GAAG,IAAI,CAqB1C;AAED,wBAAgB,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAIhD;AAED,wBAAgB,WAAW,IAAI,IAAI,CAMlC;AAED,wBAAgB,gBAAgB,IAAI,MAAM,CAOzC"}
@@ -8,8 +8,12 @@ export function readConfig() {
8
8
  const parsed = JSON.parse(raw);
9
9
  if (!isConfig(parsed))
10
10
  return null;
11
- // Synthesize projects map from legacy single-project fields for backward compat
12
- if (!parsed.projects && parsed.projectId && parsed.localPath) {
11
+ // Synthesize projects map from legacy single-project fields for backward compat.
12
+ // Treat an empty map the same as a missing one — otherwise file→project
13
+ // resolution falls back to the mutable active projectId and mis-stamps writes.
14
+ if ((!parsed.projects || Object.keys(parsed.projects).length === 0) &&
15
+ parsed.projectId &&
16
+ parsed.localPath) {
13
17
  parsed.projects = {
14
18
  [parsed.projectId]: { localPath: parsed.localPath, projectName: parsed.projectName },
15
19
  };
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/lib/config.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,IAAI,CAAA;AACxB,OAAO,KAAK,IAAI,MAAM,MAAM,CAAA;AAC5B,OAAO,KAAK,EAAE,MAAM,IAAI,CAAA;AAmBxB,MAAM,CAAC,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,YAAY,EAAE,aAAa,CAAC,CAAA;AAE/E,MAAM,UAAU,UAAU;IACxB,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,EAAE,CAAC,YAAY,CAAC,WAAW,EAAE,MAAM,CAAC,CAAA;QAChD,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAY,CAAA;QACzC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC;YAAE,OAAO,IAAI,CAAA;QAClC,gFAAgF;QAChF,IAAI,CAAC,MAAM,CAAC,QAAQ,IAAI,MAAM,CAAC,SAAS,IAAI,MAAM,CAAC,SAAS,EAAE,CAAC;YAC7D,MAAM,CAAC,QAAQ,GAAG;gBAChB,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,EAAE,SAAS,EAAE,MAAM,CAAC,SAAS,EAAE,WAAW,EAAE,MAAM,CAAC,WAAW,EAAE;aACrF,CAAA;QACH,CAAC;QACD,OAAO,MAAM,CAAA;IACf,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAA;IACb,CAAC;AACH,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,MAAc;IACxC,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,CAAA;IACrC,EAAE,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;IACtC,EAAE,CAAC,aAAa,CAAC,WAAW,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,MAAM,CAAC,CAAA;AACxE,CAAC;AAED,MAAM,UAAU,WAAW;IACzB,IAAI,CAAC;QACH,EAAE,CAAC,UAAU,CAAC,WAAW,CAAC,CAAA;IAC5B,CAAC;IAAC,MAAM,CAAC;QACP,kCAAkC;IACpC,CAAC;AACH,CAAC;AAED,MAAM,UAAU,gBAAgB;IAC9B,MAAM,MAAM,GAAG,UAAU,EAAE,CAAA;IAC3B,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,OAAO,CAAC,KAAK,CAAC,6CAA6C,CAAC,CAAA;QAC5D,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;IAClB,CAAC;IACD,OAAO,MAAM,CAAA;AACf,CAAC;AAED,SAAS,QAAQ,CAAC,KAAc;IAC9B,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI;QAAE,OAAO,KAAK,CAAA;IAC7D,MAAM,GAAG,GAAG,KAAgC,CAAA;IAC5C,OAAO,CACL,OAAO,GAAG,CAAC,QAAQ,CAAC,KAAK,QAAQ;QACjC,OAAO,GAAG,CAAC,WAAW,CAAC,KAAK,QAAQ;QACpC,OAAO,GAAG,CAAC,aAAa,CAAC,KAAK,QAAQ;QACtC,OAAO,GAAG,CAAC,OAAO,CAAC,KAAK,QAAQ;QAChC,OAAO,GAAG,CAAC,QAAQ,CAAC,KAAK,QAAQ,CAClC,CAAA;AACH,CAAC"}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/lib/config.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,IAAI,CAAA;AACxB,OAAO,KAAK,IAAI,MAAM,MAAM,CAAA;AAC5B,OAAO,KAAK,EAAE,MAAM,IAAI,CAAA;AAmBxB,MAAM,CAAC,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,YAAY,EAAE,aAAa,CAAC,CAAA;AAE/E,MAAM,UAAU,UAAU;IACxB,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,EAAE,CAAC,YAAY,CAAC,WAAW,EAAE,MAAM,CAAC,CAAA;QAChD,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAY,CAAA;QACzC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC;YAAE,OAAO,IAAI,CAAA;QAClC,iFAAiF;QACjF,wEAAwE;QACxE,+EAA+E;QAC/E,IACE,CAAC,CAAC,MAAM,CAAC,QAAQ,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC;YAC/D,MAAM,CAAC,SAAS;YAChB,MAAM,CAAC,SAAS,EAChB,CAAC;YACD,MAAM,CAAC,QAAQ,GAAG;gBAChB,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,EAAE,SAAS,EAAE,MAAM,CAAC,SAAS,EAAE,WAAW,EAAE,MAAM,CAAC,WAAW,EAAE;aACrF,CAAA;QACH,CAAC;QACD,OAAO,MAAM,CAAA;IACf,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAA;IACb,CAAC;AACH,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,MAAc;IACxC,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,CAAA;IACrC,EAAE,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;IACtC,EAAE,CAAC,aAAa,CAAC,WAAW,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,MAAM,CAAC,CAAA;AACxE,CAAC;AAED,MAAM,UAAU,WAAW;IACzB,IAAI,CAAC;QACH,EAAE,CAAC,UAAU,CAAC,WAAW,CAAC,CAAA;IAC5B,CAAC;IAAC,MAAM,CAAC;QACP,kCAAkC;IACpC,CAAC;AACH,CAAC;AAED,MAAM,UAAU,gBAAgB;IAC9B,MAAM,MAAM,GAAG,UAAU,EAAE,CAAA;IAC3B,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,OAAO,CAAC,KAAK,CAAC,6CAA6C,CAAC,CAAA;QAC5D,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;IAClB,CAAC;IACD,OAAO,MAAM,CAAA;AACf,CAAC;AAED,SAAS,QAAQ,CAAC,KAAc;IAC9B,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI;QAAE,OAAO,KAAK,CAAA;IAC7D,MAAM,GAAG,GAAG,KAAgC,CAAA;IAC5C,OAAO,CACL,OAAO,GAAG,CAAC,QAAQ,CAAC,KAAK,QAAQ;QACjC,OAAO,GAAG,CAAC,WAAW,CAAC,KAAK,QAAQ;QACpC,OAAO,GAAG,CAAC,aAAa,CAAC,KAAK,QAAQ;QACtC,OAAO,GAAG,CAAC,OAAO,CAAC,KAAK,QAAQ;QAChC,OAAO,GAAG,CAAC,QAAQ,CAAC,KAAK,QAAQ,CAClC,CAAA;AACH,CAAC"}
@@ -0,0 +1,21 @@
1
+ export interface MermaidLintIssue {
2
+ level: 'error' | 'warning';
3
+ /** 1-based line number within the source file. */
4
+ line: number;
5
+ rule: string;
6
+ message: string;
7
+ }
8
+ interface MermaidBlock {
9
+ /** Lowercased first token of the diagram, e.g. 'sequencediagram', 'flowchart'. */
10
+ diagramType: string;
11
+ lines: {
12
+ text: string;
13
+ line: number;
14
+ }[];
15
+ }
16
+ /** Split fenced ```mermaid blocks out of markdown, tracking file line numbers. */
17
+ export declare function extractMermaidBlocks(content: string): MermaidBlock[];
18
+ /** Flag known Mermaid parse/render landmines in every ```mermaid block. */
19
+ export declare function lintMermaid(content: string): MermaidLintIssue[];
20
+ export {};
21
+ //# sourceMappingURL=mermaid-lint.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mermaid-lint.d.ts","sourceRoot":"","sources":["../../src/lib/mermaid-lint.ts"],"names":[],"mappings":"AASA,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,OAAO,GAAG,SAAS,CAAA;IAC1B,kDAAkD;IAClD,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,EAAE,MAAM,CAAA;CAChB;AAED,UAAU,YAAY;IACpB,kFAAkF;IAClF,WAAW,EAAE,MAAM,CAAA;IACnB,KAAK,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,EAAE,CAAA;CACxC;AAMD,kFAAkF;AAClF,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,MAAM,GAAG,YAAY,EAAE,CAqBpE;AAED,2EAA2E;AAC3E,wBAAgB,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,gBAAgB,EAAE,CAiE/D"}
@@ -0,0 +1,102 @@
1
+ // Heuristic linter for Mermaid code blocks embedded in Conductor markdown docs.
2
+ //
3
+ // It deliberately does NOT run the full Mermaid parser: Mermaid needs a browser
4
+ // DOM and pulls in a large dependency tree, which is the wrong thing to ship in
5
+ // a CLI. Instead this flags the specific, recurring grammar landmines that have
6
+ // actually broken rendering in practice — caught at authoring/lint time, before
7
+ // the content is ever stored. Same "fail loud early" philosophy as project
8
+ // resolution. It is a high-precision heuristic, not an exhaustive validator.
9
+ // A sequence message: `A->>B: label` / `A-->>B: label` (also -x, -) terminators).
10
+ const SEQUENCE_MESSAGE = /^\s*[A-Za-z0-9_]+\s*(?:-{1,2}>{1,2}|-{1,2}[x)])\s*[A-Za-z0-9_]+\s*:\s*(.*)$/;
11
+ const PARTICIPANT_DECL = /^\s*(?:participant|actor)\s+(.+?)\s*$/;
12
+ /** Split fenced ```mermaid blocks out of markdown, tracking file line numbers. */
13
+ export function extractMermaidBlocks(content) {
14
+ const fileLines = content.split(/\r?\n/);
15
+ const blocks = [];
16
+ let i = 0;
17
+ while (i < fileLines.length) {
18
+ if (fileLines[i].trim().toLowerCase().startsWith('```mermaid')) {
19
+ const inner = [];
20
+ let j = i + 1;
21
+ while (j < fileLines.length && fileLines[j].trim() !== '```') {
22
+ inner.push({ text: fileLines[j], line: j + 1 });
23
+ j++;
24
+ }
25
+ const firstNonEmpty = inner.find(l => l.text.trim() !== '');
26
+ const diagramType = firstNonEmpty ? firstNonEmpty.text.trim().split(/\s+/)[0].toLowerCase() : '';
27
+ blocks.push({ diagramType, lines: inner });
28
+ i = j + 1;
29
+ }
30
+ else {
31
+ i++;
32
+ }
33
+ }
34
+ return blocks;
35
+ }
36
+ /** Flag known Mermaid parse/render landmines in every ```mermaid block. */
37
+ export function lintMermaid(content) {
38
+ const issues = [];
39
+ for (const block of extractMermaidBlocks(content)) {
40
+ for (const { text, line } of block.lines) {
41
+ // Literal "\n" renders verbatim in every diagram type — authors mean <br/>.
42
+ if (text.includes('\\n')) {
43
+ issues.push({
44
+ level: 'warning',
45
+ line,
46
+ rule: 'literal-newline',
47
+ message: 'Mermaid renders literal "\\n"; use "<br/>" for line breaks.',
48
+ });
49
+ }
50
+ if (block.diagramType !== 'sequencediagram')
51
+ continue;
52
+ const participant = text.match(PARTICIPANT_DECL);
53
+ if (participant) {
54
+ const decl = participant[1];
55
+ const asSplit = decl.split(/\s+as\s+/);
56
+ if (asSplit.length > 1) {
57
+ const alias = asSplit.slice(1).join(' as ');
58
+ if (/[():]/.test(alias)) {
59
+ issues.push({
60
+ level: 'error',
61
+ line,
62
+ rule: 'participant-alias-chars',
63
+ message: `Mermaid participant alias "${alias}" contains "(", ")" or ":" which break the parser — use plain text.`,
64
+ });
65
+ }
66
+ }
67
+ else if (/[\s():]/.test(decl)) {
68
+ // No "as": the id must be a single bare token.
69
+ issues.push({
70
+ level: 'error',
71
+ line,
72
+ rule: 'participant-id-chars',
73
+ message: `Mermaid participant "${decl}" has spaces or special characters — use 'participant ID as Label'.`,
74
+ });
75
+ }
76
+ continue;
77
+ }
78
+ const message = text.match(SEQUENCE_MESSAGE);
79
+ if (message) {
80
+ const label = message[1];
81
+ if (label.includes(';')) {
82
+ issues.push({
83
+ level: 'error',
84
+ line,
85
+ rule: 'message-semicolon',
86
+ message: '";" is a statement separator in Mermaid and splits this message — replace it with a comma.',
87
+ });
88
+ }
89
+ if (label.includes('#')) {
90
+ issues.push({
91
+ level: 'warning',
92
+ line,
93
+ rule: 'message-hash',
94
+ message: '"#" may be parsed as an HTML entity in Mermaid — consider removing (e.g. "Gate #1" → "Gate 1").',
95
+ });
96
+ }
97
+ }
98
+ }
99
+ }
100
+ return issues;
101
+ }
102
+ //# sourceMappingURL=mermaid-lint.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mermaid-lint.js","sourceRoot":"","sources":["../../src/lib/mermaid-lint.ts"],"names":[],"mappings":"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"}
@@ -12,6 +12,33 @@ export interface Config {
12
12
  projects?: Record<string, ProjectEntry>;
13
13
  }
14
14
  export declare const CONFIG_PATH: string;
15
+ /** How a project id was resolved for the current request. */
16
+ export type ProjectResolutionSource = 'env' | 'cwd' | 'fallback';
17
+ export interface ProjectResolution {
18
+ projectId: string;
19
+ source: ProjectResolutionSource;
20
+ /**
21
+ * True when we fell back to the mutable active `projectId` while the cwd is
22
+ * inside a git work-tree that matches no configured project. Writing in this
23
+ * state silently targets whatever project happens to be "active" — the class
24
+ * of bug that mis-stamped issues into the wrong project. Callers must refuse
25
+ * to act when this is set.
26
+ */
27
+ mismatch: boolean;
28
+ }
29
+ /**
30
+ * Resolve which project a request targets, in priority order:
31
+ * 1. `CONDUCTOR_PROJECT_ID` env — the durable per-repo binding written into
32
+ * `.mcp.json` by `conductor init`. Survives global-config rewrites.
33
+ * 2. cwd → `projects` map match (longest path wins).
34
+ * 3. fallback to the active `projectId`. Flagged as a `mismatch` when the cwd
35
+ * is inside a git repo that matches no project, so callers can fail closed
36
+ * instead of silently writing to the wrong project.
37
+ *
38
+ * `insideGitRepo` is injectable for testing.
39
+ */
40
+ export declare function resolveProject(config: Config, cwd?: string, insideGitRepo?: (dir: string) => boolean): ProjectResolution;
41
+ /** Back-compat string wrapper around {@link resolveProject}. */
15
42
  export declare function resolveProjectIdByCwd(config: Config, cwd?: string): string;
16
43
  export declare function getConfig(): Config;
17
44
  //# sourceMappingURL=config.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/mcp/config.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,YAAY;IAC3B,SAAS,EAAE,MAAM,CAAA;IACjB,WAAW,EAAE,MAAM,CAAA;CACpB;AAED,MAAM,WAAW,MAAM;IACrB,MAAM,EAAE,MAAM,CAAA;IACd,SAAS,EAAE,MAAM,CAAA;IACjB,WAAW,EAAE,MAAM,CAAA;IACnB,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,EAAE,MAAM,CAAA;IACd,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAAA;CACxC;AAED,eAAO,MAAM,WAAW,QAAuD,CAAA;AAc/E,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,GAAE,MAAsB,GAAG,MAAM,CAazF;AAED,wBAAgB,SAAS,IAAI,MAAM,CAoBlC"}
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/mcp/config.ts"],"names":[],"mappings":"AAKA,MAAM,WAAW,YAAY;IAC3B,SAAS,EAAE,MAAM,CAAA;IACjB,WAAW,EAAE,MAAM,CAAA;CACpB;AAED,MAAM,WAAW,MAAM;IACrB,MAAM,EAAE,MAAM,CAAA;IACd,SAAS,EAAE,MAAM,CAAA;IACjB,WAAW,EAAE,MAAM,CAAA;IACnB,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,EAAE,MAAM,CAAA;IACd,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAAA;CACxC;AAED,eAAO,MAAM,WAAW,QAAuD,CAAA;AAc/E,6DAA6D;AAC7D,MAAM,MAAM,uBAAuB,GAAG,KAAK,GAAG,KAAK,GAAG,UAAU,CAAA;AAEhE,MAAM,WAAW,iBAAiB;IAChC,SAAS,EAAE,MAAM,CAAA;IACjB,MAAM,EAAE,uBAAuB,CAAA;IAC/B;;;;;;OAMG;IACH,QAAQ,EAAE,OAAO,CAAA;CAClB;AA+BD;;;;;;;;;;GAUG;AACH,wBAAgB,cAAc,CAC5B,MAAM,EAAE,MAAM,EACd,GAAG,GAAE,MAAsB,EAC3B,aAAa,GAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAA6B,GAC5D,iBAAiB,CAenB;AAED,gEAAgE;AAChE,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,GAAE,MAAsB,GAAG,MAAM,CAEzF;AAED,wBAAgB,SAAS,IAAI,MAAM,CA0BlC"}
@@ -1,6 +1,7 @@
1
1
  import * as fs from 'fs';
2
2
  import * as path from 'path';
3
3
  import * as os from 'os';
4
+ import { execSync } from 'child_process';
4
5
  export const CONFIG_PATH = path.join(os.homedir(), '.conductor', 'config.json');
5
6
  function isConfig(value) {
6
7
  if (typeof value !== 'object' || value === null)
@@ -12,12 +13,11 @@ function isConfig(value) {
12
13
  typeof obj['email'] === 'string' &&
13
14
  typeof obj['apiUrl'] === 'string');
14
15
  }
15
- export function resolveProjectIdByCwd(config, cwd = process.cwd()) {
16
- if (!config.projects)
17
- return config.projectId;
16
+ /** Returns the best cwd→project match, or null if nothing matches. */
17
+ function matchProjectByCwd(projects, cwd) {
18
18
  const normalizedCwd = cwd.replace(/\\/g, '/');
19
19
  let bestMatch = null;
20
- for (const [projectId, proj] of Object.entries(config.projects)) {
20
+ for (const [projectId, proj] of Object.entries(projects)) {
21
21
  const normalizedPath = proj.localPath.replace(/\\/g, '/');
22
22
  if (normalizedCwd === normalizedPath || normalizedCwd.startsWith(normalizedPath + '/')) {
23
23
  if (!bestMatch || normalizedPath.length > bestMatch.pathLen) {
@@ -25,7 +25,52 @@ export function resolveProjectIdByCwd(config, cwd = process.cwd()) {
25
25
  }
26
26
  }
27
27
  }
28
- return bestMatch?.projectId ?? config.projectId;
28
+ return bestMatch?.projectId ?? null;
29
+ }
30
+ /** True if `dir` is inside a git work-tree. Used to decide when to fail closed. */
31
+ function isInsideGitWorkTree(dir) {
32
+ try {
33
+ const out = execSync('git rev-parse --is-inside-work-tree', {
34
+ cwd: dir,
35
+ encoding: 'utf8',
36
+ stdio: ['pipe', 'pipe', 'pipe'],
37
+ }).trim();
38
+ return out === 'true';
39
+ }
40
+ catch {
41
+ return false;
42
+ }
43
+ }
44
+ /**
45
+ * Resolve which project a request targets, in priority order:
46
+ * 1. `CONDUCTOR_PROJECT_ID` env — the durable per-repo binding written into
47
+ * `.mcp.json` by `conductor init`. Survives global-config rewrites.
48
+ * 2. cwd → `projects` map match (longest path wins).
49
+ * 3. fallback to the active `projectId`. Flagged as a `mismatch` when the cwd
50
+ * is inside a git repo that matches no project, so callers can fail closed
51
+ * instead of silently writing to the wrong project.
52
+ *
53
+ * `insideGitRepo` is injectable for testing.
54
+ */
55
+ export function resolveProject(config, cwd = process.cwd(), insideGitRepo = isInsideGitWorkTree) {
56
+ const envId = process.env['CONDUCTOR_PROJECT_ID'];
57
+ if (envId)
58
+ return { projectId: envId, source: 'env', mismatch: false };
59
+ const hasMap = config.projects && Object.keys(config.projects).length > 0;
60
+ if (hasMap) {
61
+ const matched = matchProjectByCwd(config.projects, cwd);
62
+ if (matched)
63
+ return { projectId: matched, source: 'cwd', mismatch: false };
64
+ // A real map exists but cwd matches nothing: only safe to fall back when we
65
+ // are NOT inside a git repo (e.g. server launched from $HOME). Inside a repo
66
+ // this means the repo isn't linked — refuse rather than guess.
67
+ return { projectId: config.projectId, source: 'fallback', mismatch: insideGitRepo(cwd) };
68
+ }
69
+ return { projectId: config.projectId, source: 'fallback', mismatch: false };
70
+ }
71
+ /** Back-compat string wrapper around {@link resolveProject}. */
72
+ export function resolveProjectIdByCwd(config, cwd = process.cwd()) {
73
+ return resolveProject(config, cwd).projectId;
29
74
  }
30
75
  export function getConfig() {
31
76
  try {
@@ -34,8 +79,12 @@ export function getConfig() {
34
79
  if (!isConfig(parsed)) {
35
80
  throw new Error('Invalid config: missing required fields');
36
81
  }
37
- // Synthesize projects map from legacy single-project fields for backward compat
38
- if (!parsed.projects && parsed.projectId && parsed.localPath) {
82
+ // Synthesize projects map from legacy single-project fields for backward compat.
83
+ // Treat an empty map the same as a missing one — kept in sync with the CLI
84
+ // reader (`lib/config.ts`) so a fix to one path can't be missed on the other.
85
+ if ((!parsed.projects || Object.keys(parsed.projects).length === 0) &&
86
+ parsed.projectId &&
87
+ parsed.localPath) {
39
88
  parsed.projects = {
40
89
  [parsed.projectId]: { localPath: parsed.localPath, projectName: parsed.projectName },
41
90
  };
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/mcp/config.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/mcp/config.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/mcp/index.ts"],"names":[],"mappings":";AAkJA,wBAAsB,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC,CAmHlD"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/mcp/index.ts"],"names":[],"mappings":";AAmTA,wBAAsB,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC,CAuPlD"}