Skip to content

Commit 22b0ceb

Browse files
committed
improve error capture
1 parent 932e6f7 commit 22b0ceb

File tree

2 files changed

+18
-7
lines changed

2 files changed

+18
-7
lines changed

packages/app/src/server/mcp-server.ts

Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -157,7 +157,7 @@ export const createServerFactory = (_webServerInstance: WebServer, sharedApiClie
157157
options?: QueryLoggerOptions
158158
) => void;
159159

160-
type BaseQueryLoggerOptions = Omit<QueryLoggerOptions, 'durationMs' | 'success' | 'error'>;
160+
type BaseQueryLoggerOptions = Omit<QueryLoggerOptions, 'durationMs' | 'error'>;
161161

162162
interface QueryLoggingConfig<T> {
163163
methodName: string;
@@ -175,17 +175,24 @@ export const createServerFactory = (_webServerInstance: WebServer, sharedApiClie
175175
const start = performance.now();
176176
try {
177177
const result = await work();
178-
const durationMs = performance.now() - start;
178+
const durationMs = Math.round(performance.now() - start);
179179
const successOptions = config.successOptions?.(result) ?? {};
180+
const { success: successOverride, ...restSuccessOptions } = successOptions;
181+
const resultHasError =
182+
typeof result === 'object' &&
183+
result !== null &&
184+
'isError' in result &&
185+
Boolean((result as { isError?: boolean }).isError);
186+
const successFlag = successOverride ?? !resultHasError;
180187
logFn(config.methodName, config.query, config.parameters, {
181188
...config.baseOptions,
182-
...successOptions,
189+
...restSuccessOptions,
183190
durationMs,
184-
success: true,
191+
success: successFlag,
185192
});
186193
return result;
187194
} catch (error) {
188-
const durationMs = performance.now() - start;
195+
const durationMs = Math.round(performance.now() - start);
189196
logFn(config.methodName, config.query, config.parameters, {
190197
...config.baseOptions,
191198
durationMs,

packages/app/src/server/utils/query-logger.ts

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -208,6 +208,8 @@ export function logSearchQuery(
208208
): void {
209209
// Use a stable mcpServerSessionId per process/transport instance
210210
const mcpServerSessionId = getMcpServerSessionId();
211+
const normalizedDurationMs =
212+
options?.durationMs !== undefined ? Math.round(options.durationMs) : undefined;
211213
const serializedParameters = JSON.stringify(data);
212214
const requestPayload = {
213215
methodName,
@@ -230,7 +232,7 @@ export function logSearchQuery(
230232
totalResults: options?.totalResults,
231233
resultsShared: options?.resultsShared,
232234
responseCharCount: options?.responseCharCount,
233-
durationMs: options?.durationMs,
235+
durationMs: normalizedDurationMs,
234236
success: options?.success ?? true,
235237
errorMessage: normalizedError,
236238
});
@@ -247,6 +249,8 @@ export function logPromptQuery(
247249
): void {
248250
// Use a stable mcpServerSessionId per process/transport instance
249251
const mcpServerSessionId = getMcpServerSessionId();
252+
const normalizedDurationMs =
253+
options?.durationMs !== undefined ? Math.round(options.durationMs) : undefined;
250254
const serializedParameters = JSON.stringify(data);
251255
const requestPayload = {
252256
methodName,
@@ -269,7 +273,7 @@ export function logPromptQuery(
269273
totalResults: options?.totalResults,
270274
resultsShared: options?.resultsShared,
271275
responseCharCount: options?.responseCharCount,
272-
durationMs: options?.durationMs,
276+
durationMs: normalizedDurationMs,
273277
success: options?.success ?? true,
274278
errorMessage: normalizedError,
275279
});

0 commit comments

Comments
 (0)