Skip to content

Commit ee23bed

Browse files
committed
update
1 parent 39a7def commit ee23bed

File tree

2 files changed

+27
-8
lines changed

2 files changed

+27
-8
lines changed

src/tools/mongodb/mongodbTool.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,7 @@ export abstract class MongoDBToolBase extends ToolBase {
7676
}
7777

7878
protected resolveToolMetadata(
79-
args: { [x: string]: any },
79+
args: ToolArgs<typeof this.argsShape>,
8080
extra: RequestHandlerExtra<ServerRequest, ServerNotification>
8181
): ToolMetadata {
8282
const metadata = super.resolveToolMetadata(args, extra);

src/tools/tool.ts

Lines changed: 26 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -142,18 +142,37 @@ export abstract class ToolBase {
142142
protected resolveToolMetadata(...args: Parameters<ToolCallback<typeof this.argsShape>>): ToolMetadata {
143143
const toolMetadata: ToolMetadata = {};
144144
try {
145-
// Parse the arguments to extract project_id and org_id
145+
if (!args[0] || typeof args[0] !== "object") {
146+
return toolMetadata;
147+
}
148+
149+
// Create a typed parser for the exact shape we expect
146150
const argsShape = z.object(this.argsShape);
147-
const parsedArgs = argsShape.safeParse(args[0]);
148-
if (parsedArgs.success && parsedArgs.data?.projectId) {
149-
toolMetadata.projectId = parsedArgs.data?.projectId;
151+
const parsedResult = argsShape.safeParse(args[0]);
152+
153+
if (!parsedResult.success) {
154+
logger.debug(
155+
LogId.telmetryMetadataError,
156+
"tool",
157+
`Error parsing tool arguments: ${parsedResult.error.message}`
158+
);
159+
return toolMetadata;
160+
}
161+
162+
const data = parsedResult.data;
163+
164+
// Extract projectId using type guard
165+
if ("projectId" in data && typeof data.projectId === "string" && data.projectId.trim() !== "") {
166+
toolMetadata.projectId = data.projectId;
150167
}
151168

152-
if (parsedArgs.success && parsedArgs.data?.orgId) {
153-
toolMetadata.orgId = parsedArgs.data?.orgId;
169+
// Extract orgId using type guard
170+
if ("orgId" in data && typeof data.orgId === "string" && data.orgId.trim() !== "") {
171+
toolMetadata.orgId = data.orgId;
154172
}
155173
} catch (error) {
156-
logger.info(LogId.telmetryMetadataError, "tool", `Error resolving tool metadata: ${error as string}`);
174+
const errorMessage = error instanceof Error ? error.message : String(error);
175+
logger.debug(LogId.telmetryMetadataError, "tool", `Error resolving tool metadata: ${errorMessage}`);
157176
}
158177
return toolMetadata;
159178
}

0 commit comments

Comments
 (0)