Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions src/index.ts
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
#!/usr/bin/env node

import Logger from "./logger.js";
import DefaultLogger, { type Logger } from "./logger.js";
import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
import YepCodeMcpServer from "./server.js";
import { getVersion } from "./utils.js";

const logger = new Logger("StdioServer", { logsToStderr: true });
const logger: Logger = new DefaultLogger("StdioServer", { logsToStderr: true });

const main = async (): Promise<void> => {
let tools: string[] | undefined;
Expand Down
13 changes: 11 additions & 2 deletions src/logger.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,14 @@
import { isObject } from "./utils.js";

class Logger {
interface Logger {
error(message: string, error?: Error | undefined): void;

warn(message: string): void;

info(message: string): void;
}

class DefaultLogger implements Logger {
private name: string | undefined;
private logsToStderr: boolean;

Expand Down Expand Up @@ -53,4 +61,5 @@ class Logger {
}
}

export default Logger;
export default DefaultLogger;
export type { Logger };
36 changes: 23 additions & 13 deletions src/server.ts
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ import dotenv from "dotenv";
import { ToolCallRequest, ToolHandler } from "./types.js";
import { z } from "zod";
import { getVersion, isEmpty } from "./utils.js";
import Logger from "./logger.js";
import DefaultLogger, { type Logger } from "./logger.js";
import {
GetStorageObjectsSchema,
UploadStorageObjectSchema,
Expand Down Expand Up @@ -154,12 +154,14 @@ class YepCodeMcpServer extends Server {
tools = DEFAULT_TOOL_TAGS,
runCodeCleanup = false,
skipCodingRules = false,
externalLogger = undefined,
}: {
logsToStderr?: boolean;
tools?: string[];
runCodeCleanup?: boolean;
skipCodingRules?: boolean;
} = {}
externalLogger?: Logger;
} = {},
) {
super(
{
Expand All @@ -184,12 +186,16 @@ class YepCodeMcpServer extends Server {
this.yepCodeRun = new YepCodeRun(config);
this.yepCodeEnv = new YepCodeEnv(config);
this.yepCodeApi = new YepCodeApi(config);
this.logger = new Logger(this.yepCodeApi.getTeamId(), {
logsToStderr,
});
if (externalLogger) {
this.logger = externalLogger;
} else {
this.logger = new DefaultLogger(this.yepCodeApi.getTeamId(), {
logsToStderr,
});
}
this.logger.info("YepCode initialized successfully");
} catch (error) {
this.logger = new Logger("YepCodeMcpServer", {
this.logger = new DefaultLogger("YepCodeMcpServer", {
logsToStderr,
});
this.logger.error("Exception while initializing YepCode", error as Error);
Expand Down Expand Up @@ -437,10 +443,12 @@ class YepCodeMcpServer extends Server {
let executionError: string | undefined;
let returnValue: unknown;

this.logger.info("Running code with YepCode", {
codeLength: code.length,
options,
});
this.logger.info(
`Running code with YepCode ${JSON.stringify({
codeLength: code.length,
options,
})}`,
);

const execution = await this.yepCodeRun.run(code, {
removeOnDone: this.runCodeCleanup,
Expand All @@ -455,9 +463,11 @@ class YepCodeMcpServer extends Server {
},
onFinish: (value) => {
returnValue = value;
this.logger.info("YepCode execution finished", {
hasReturnValue: value !== undefined,
});
this.logger.info(
`YepCode execution finished ${JSON.stringify({
hasReturnValue: value !== undefined,
})}`,
);
},
});

Expand Down