Skip to content

Commit 9e59c36

Browse files
committed
fix: add error logging to all bare catch blocks — silent failures now visible
1 parent 3e4099d commit 9e59c36

14 files changed

Lines changed: 115 additions & 14 deletions

src/server/changelog-draft-tool.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -159,6 +159,10 @@ export function registerChangelogDraftTool(server: FastMCP): void {
159159

160160
return lines.join("\n");
161161
} catch (err) {
162+
console.error(
163+
`[changelog_draft] Failed to generate changelog for ${owner}/${repo}:`,
164+
err instanceof Error ? err.message : String(err),
165+
);
162166
return errorRespond(classifyError(err));
163167
}
164168
},

src/server/ci-diagnosis-tool.ts

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -136,8 +136,12 @@ export function registerCiDiagnosisTool(server: FastMCP): void {
136136
.join("\n");
137137
}
138138
logText = tailTruncate(raw, args.maxLogLines);
139-
} catch {
139+
} catch (err) {
140140
// logs expired or unavailable
141+
console.error(
142+
`[ci_diagnosis] Failed to download logs for job ${job.id}:`,
143+
err instanceof Error ? err.message : String(err),
144+
);
141145
}
142146
failedJobs.push({
143147
name: job.name,
@@ -186,6 +190,10 @@ export function registerCiDiagnosisTool(server: FastMCP): void {
186190

187191
return lines.join("\n");
188192
} catch (err) {
193+
console.error(
194+
`[ci_diagnosis] Failed to diagnose CI for ${owner}/${repo}:`,
195+
err instanceof Error ? err.message : String(err),
196+
);
189197
return errorRespond(classifyError(err));
190198
}
191199
},

src/server/compare-refs.ts

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -79,7 +79,11 @@ export async function resolveRef(
7979
const obj = data.repository.object;
8080
if (!obj) return null;
8181
return { oid: obj.oid, committedDate: obj.committedDate };
82-
} catch {
82+
} catch (err) {
83+
console.error(
84+
`[resolveRef] Failed to resolve ref '${ref}' in ${owner}/${repo}:`,
85+
err instanceof Error ? err.message : String(err),
86+
);
8387
return null;
8488
}
8589
}

src/server/ecosystem-activity-tool.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -108,6 +108,10 @@ async function fetchRepoCommits(
108108
}
109109
}
110110
} catch (err) {
111+
console.error(
112+
`[fetchRepoCommits] Failed to fetch commits for ${owner}/${repo}:`,
113+
err instanceof Error ? err.message : String(err),
114+
);
111115
return { owner, repo, commitCount: 0, error: classifyError(err), commits: [] };
112116
}
113117

src/server/github-auth.ts

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,8 +42,12 @@ export function gateAuth(): AuthResult {
4242
cached = { ok: true, token };
4343
return cached;
4444
}
45-
} catch {
45+
} catch (err) {
4646
// gh not installed or not authenticated — fall through
47+
console.error(
48+
"[gateAuth] Failed to get token via 'gh auth token':",
49+
err instanceof Error ? err.message : String(err),
50+
);
4751
}
4852

4953
cached = {

src/server/github-client.ts

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -164,8 +164,12 @@ export function resolveLocalRepoRemote(
164164
stdio: ["ignore", "pipe", "ignore"],
165165
}).trim();
166166
return parseGitHubRemoteUrl(url);
167-
} catch {
167+
} catch (err) {
168168
// Not a git repo or no origin
169+
console.error(
170+
`[resolveLocalRepoRemote] Failed to resolve remote for ${localPath}:`,
171+
err instanceof Error ? err.message : String(err),
172+
);
169173
}
170174
return undefined;
171175
}
@@ -219,6 +223,7 @@ export async function fetchPRMetadata(
219223
const classified = classifyError(err);
220224
console.error(
221225
`[fetchPRMetadata] Error fetching PR metadata for ${owner}/${repo} (PRs: ${batch.join(", ")}): ${classified.code}${classified.message}`,
226+
err instanceof Error ? err.message : String(err),
222227
);
223228
}
224229
return map;

src/server/json.ts

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,11 @@ export function readPackageVersion(): string {
1313
try {
1414
const j = JSON.parse(readFileSync(pkgPath, "utf8")) as { version?: string };
1515
_cachedVersion = j.version ?? "0.0.0";
16-
} catch {
16+
} catch (err) {
17+
console.error(
18+
`[readPackageVersion] Failed to read ${pkgPath}:`,
19+
err instanceof Error ? err.message : String(err),
20+
);
1721
_cachedVersion = "0.0.0";
1822
}
1923
return _cachedVersion;

src/server/module-pin-hint-tool.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -175,6 +175,10 @@ export function registerModulePinHintTool(server: FastMCP): void {
175175

176176
return formatModulePinHintMarkdown(result);
177177
} catch (err) {
178+
console.error(
179+
`[module_pin_hint] Failed to resolve pseudo-version for ${owner}/${repo}:`,
180+
err instanceof Error ? err.message : String(err),
181+
);
178182
return errorRespond(classifyError(err));
179183
}
180184
},

src/server/my-work-tool.ts

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,10 @@ export function registerMyWorkTool(server: FastMCP): void {
6565
);
6666
username = viewer.viewer.login;
6767
} catch (err) {
68+
console.error(
69+
"[my_work_tool] Failed to fetch viewer login:",
70+
err instanceof Error ? err.message : String(err),
71+
);
6872
return errorRespond(classifyError(err));
6973
}
7074
}
@@ -196,6 +200,10 @@ export function registerMyWorkTool(server: FastMCP): void {
196200

197201
return lines.join("\n");
198202
} catch (err) {
203+
console.error(
204+
`[my_work_tool] Failed to fetch work items for @${username}:`,
205+
err instanceof Error ? err.message : String(err),
206+
);
199207
return errorRespond(classifyError(err));
200208
}
201209
},

src/server/org-pulse-tool.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -172,6 +172,10 @@ export function registerOrgPulseTool(server: FastMCP): void {
172172
first: args.maxRepos,
173173
});
174174
} catch (err) {
175+
console.error(
176+
`[org_pulse] Failed to fetch org pulse for ${args.org}:`,
177+
err instanceof Error ? err.message : String(err),
178+
);
175179
return errorRespond(classifyError(err));
176180
}
177181

0 commit comments

Comments
 (0)